Skip to content

Commit 79f7cfa

Browse files
committed
CMake: Get static Lib Working to link libyosys / executable
1 parent b6e5bf1 commit 79f7cfa

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+153
-124
lines changed

CMakeLists.txt

Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
cmake_minimum_required(VERSION 3.13)
22
project(yosys LANGUAGES CXX C)
33
set(YOSYS_VER "0.50+1")
4+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
45

56
# features (the more the better)
67

@@ -53,12 +54,12 @@ if (ENABLE_ABC)
5354
add_subdirectory(abc EXCLUDE_FROM_ALL)
5455

5556
add_custom_command(
56-
OUTPUT ${CMAKE_BINARY_DIR}/yosys-abc
57+
OUTPUT ${yosys_BINARY_DIR}/yosys-abc
5758
DEPENDS abc # Depend on the target, not the generator expression
58-
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:abc> ${CMAKE_BINARY_DIR}/yosys-abc
59+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:abc> ${yosys_BINARY_DIR}/yosys-abc
5960
)
6061

61-
add_custom_target(yosys-abc-copy ALL DEPENDS ${CMAKE_BINARY_DIR}/yosys-abc)
62+
add_custom_target(yosys-abc-copy ALL DEPENDS ${yosys_BINARY_DIR}/yosys-abc)
6263
endif()
6364

6465
set(CMAKE_CXX_STANDARD ${CXXSTD})
@@ -73,13 +74,18 @@ find_package(FLEX 2.6 REQUIRED)
7374
find_package(BISON 3.0 REQUIRED)
7475
find_package(Python3 3.5 REQUIRED COMPONENTS Interpreter)
7576

76-
add_executable(yosys)
77-
#target_include_directories(yosys PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
78-
#target_include_directories(yosys PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
79-
#target_compile_definitions(yosys PRIVATE _YOSYS_)
77+
add_library(yosys STATIC)
78+
#target_include_directories(yosys PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
79+
#target_include_directories(yosys PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
80+
#target_compile_definitions(yosys PUBLIC _YOSYS_)
8081
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
82+
target_include_directories(yosys PUBLIC
83+
${CMAKE_CURRENT_BINARY_DIR}
84+
${CMAKE_CURRENT_SOURCE_DIR}
85+
)
8186

8287
add_compile_definitions(_YOSYS_)
88+
target_compile_definitions(yosys PUBLIC _YOSYS_)
8389

8490
if (ENABLE_READLINE AND ENABLE_EDITLINE)
8591
message(FATAL_ERROR "Not possible to enable both ENABLE_READLINE and ENABLE_EDITLINE")
@@ -88,26 +94,26 @@ endif()
8894
if (ENABLE_READLINE)
8995
find_package(Readline REQUIRED)
9096
add_compile_definitions(YOSYS_ENABLE_READLINE)
91-
target_link_libraries(yosys PRIVATE ${READLINE_LIBRARY})
97+
target_link_libraries(yosys PUBLIC ${READLINE_LIBRARY})
9298
endif()
9399

94100
if (ENABLE_EDITLINE)
95101
find_package(Editline REQUIRED)
96102
add_compile_definitions(YOSYS_ENABLE_EDITLINE)
97-
target_link_libraries(yosys PRIVATE ${EDITLINE_LIBRARY})
103+
target_link_libraries(yosys PUBLIC ${EDITLINE_LIBRARY})
98104
endif()
99105

100106
if (ENABLE_TCL)
101107
find_package(TCL 8.6 REQUIRED)
102108
add_compile_definitions(YOSYS_ENABLE_TCL)
103-
target_include_directories(yosys PRIVATE ${TCL_INCLUDE_PATH})
104-
target_link_libraries(yosys PRIVATE ${TCL_LIBRARY})
109+
target_include_directories(yosys PUBLIC ${TCL_INCLUDE_PATH})
110+
target_link_libraries(yosys PUBLIC ${TCL_LIBRARY})
105111
endif()
106112

107113
if (ENABLE_ZLIB)
108114
find_package(ZLIB REQUIRED)
109115
add_compile_definitions(YOSYS_ENABLE_ZLIB)
110-
target_link_libraries(yosys PRIVATE ZLIB::ZLIB)
116+
target_link_libraries(yosys PUBLIC ZLIB::ZLIB)
111117
endif()
112118

113119
if (ENABLE_COVER)
@@ -140,7 +146,7 @@ if (ENABLE_ABC)
140146
add_compile_definitions(YOSYS_ENABLE_ABC)
141147
if (LINK_ABC)
142148
add_compile_definitions(YOSYS_LINK_ABC)
143-
target_link_libraries(yosys PRIVATE $<TARGET_FILE:libabc>)
149+
target_link_libraries(yosys PUBLIC $<TARGET_FILE:libabc>)
144150
add_dependencies(yosys libabc)
145151
endif()
146152
endif()
@@ -149,7 +155,7 @@ if (ENABLE_PLUGINS)
149155
find_package(LibFFI REQUIRED)
150156
add_compile_definitions(YOSYS_ENABLE_PLUGINS)
151157
include_directories(${LIBFFI_INCLUDE_DIR})
152-
target_link_libraries(yosys PRIVATE ${LIBFFI_LIBRARY})
158+
target_link_libraries(yosys PUBLIC ${LIBFFI_LIBRARY})
153159
endif()
154160

155161
if (DISABLE_SPAWN)
@@ -284,6 +290,19 @@ endif()
284290

285291
set_property(SOURCE kernel/log.cc APPEND PROPERTY COMPILE_DEFINITIONS YOSYS_SRC="${PROJECT_SOURCE_DIR}")
286292

293+
if (ENABLE_LIBYOSYS)
294+
add_library(yosys_shared SHARED)
295+
target_link_libraries(yosys_shared PUBLIC yosys)
296+
set_target_properties(yosys_shared PROPERTIES OUTPUT_NAME yosys)
297+
install(TARGETS yosys_shared
298+
LIBRARY DESTINATION .)
299+
endif()
300+
301+
add_executable(yosys_exe
302+
kernel/driver.cc)
303+
target_link_libraries(yosys_exe PUBLIC yosys)
304+
set_target_properties(yosys_exe PROPERTIES OUTPUT_NAME yosys)
305+
287306
#### yosys-config setup ####
288307
# compiler
289308
get_filename_component(_CXX_BASENAME "${CMAKE_CXX_COMPILER}" NAME)
@@ -371,14 +390,14 @@ set(LIBS "${YOSYS_CFG_LIBS}")
371390
set(BINDIR "${YOSYS_CFG_BINDIR}")
372391
set(DATDIR "${YOSYS_CFG_DATDIR}")
373392

374-
configure_file(misc/yosys-config.in ${CMAKE_BINARY_DIR}/yosys-config @ONLY)
375-
file(CHMOD ${CMAKE_BINARY_DIR}/yosys-config
393+
configure_file(misc/yosys-config.in ${yosys_BINARY_DIR}/yosys-config @ONLY)
394+
file(CHMOD ${yosys_BINARY_DIR}/yosys-config
376395
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
377396
GROUP_READ GROUP_EXECUTE
378397
WORLD_READ WORLD_EXECUTE)
379398

380399
add_custom_target(yosys-config-copy ALL
381-
DEPENDS ${CMAKE_BINARY_DIR}/yosys-config)
400+
DEPENDS ${yosys_BINARY_DIR}/yosys-config)
382401

383402
#### INSTALL ####
384403
install(TARGETS yosys
@@ -390,7 +409,7 @@ if (ENABLE_ABC)
390409
RENAME yosys-abc)
391410
endif()
392411

393-
install(PROGRAMS ${CMAKE_BINARY_DIR}/yosys-config DESTINATION .)
412+
install(PROGRAMS ${yosys_BINARY_DIR}/yosys-config DESTINATION .)
394413

395414
#### TESTING ####
396415
include(cmake/TestFiles.cmake)

backends/aiger/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ target_sources(yosys_backends_aiger INTERFACE
55
xaiger.cc
66
)
77

8-
target_link_libraries(yosys PRIVATE yosys_backends_aiger)
8+
target_link_libraries(yosys PUBLIC yosys_backends_aiger)

backends/aiger2/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ target_sources(yosys_backends_aiger2 INTERFACE
44
aiger.cc
55
)
66

7-
target_link_libraries(yosys PRIVATE yosys_backends_aiger2)
7+
target_link_libraries(yosys PUBLIC yosys_backends_aiger2)

backends/blif/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ target_sources(yosys_backends_blif INTERFACE
44
blif.cc
55
)
66

7-
target_link_libraries(yosys PRIVATE yosys_backends_blif)
7+
target_link_libraries(yosys PUBLIC yosys_backends_blif)

backends/btor/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ target_sources(yosys_backends_btor INTERFACE
44
btor.cc
55
)
66

7-
target_link_libraries(yosys PRIVATE yosys_backends_btor)
7+
target_link_libraries(yosys PUBLIC yosys_backends_btor)

backends/cxxrtl/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ target_sources(yosys_backends_cxxrtl INTERFACE
44
cxxrtl_backend.cc
55
)
66

7-
target_link_libraries(yosys PRIVATE yosys_backends_cxxrtl)
7+
target_link_libraries(yosys PUBLIC yosys_backends_cxxrtl)
88

99
add_include_file("backends/cxxrtl/runtime/cxxrtl" "runtime/cxxrtl/cxxrtl.h")
1010
add_include_file("backends/cxxrtl/runtime/cxxrtl" "runtime/cxxrtl/cxxrtl_vcd.h")

backends/edif/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ target_sources(yosys_backends_edif INTERFACE
44
edif.cc
55
)
66

7-
target_link_libraries(yosys PRIVATE yosys_backends_edif)
7+
target_link_libraries(yosys PUBLIC yosys_backends_edif)

backends/firrtl/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ target_sources(yosys_backends_firrtl INTERFACE
44
firrtl.cc
55
)
66

7-
target_link_libraries(yosys PRIVATE yosys_backends_firrtl)
7+
target_link_libraries(yosys PUBLIC yosys_backends_firrtl)

backends/functional/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ target_sources(yosys_backends_functional INTERFACE
77
test_generic.cc
88
)
99

10-
target_link_libraries(yosys PRIVATE yosys_backends_functional)
10+
target_link_libraries(yosys PUBLIC yosys_backends_functional)

backends/intersynth/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ target_sources(yosys_backends_intersynth INTERFACE
44
intersynth.cc
55
)
66

7-
target_link_libraries(yosys PRIVATE yosys_backends_intersynth)
7+
target_link_libraries(yosys PUBLIC yosys_backends_intersynth)

0 commit comments

Comments
 (0)