11cmake_minimum_required (VERSION 3.13)
22project (yosys LANGUAGES CXX C)
33set (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)
6263endif ()
6364
6465set (CMAKE_CXX_STANDARD ${CXXSTD} )
@@ -73,13 +74,18 @@ find_package(FLEX 2.6 REQUIRED)
7374find_package (BISON 3.0 REQUIRED)
7475find_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_)
8081include_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
8287add_compile_definitions (_YOSYS_)
88+ target_compile_definitions (yosys PUBLIC _YOSYS_)
8389
8490if (ENABLE_READLINE AND ENABLE_EDITLINE)
8591 message (FATAL_ERROR "Not possible to enable both ENABLE_READLINE and ENABLE_EDITLINE" )
@@ -88,26 +94,26 @@ endif()
8894if (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} )
9298endif ()
9399
94100if (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} )
98104endif ()
99105
100106if (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} )
105111endif ()
106112
107113if (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)
111117endif ()
112118
113119if (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 ()
146152endif ()
@@ -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} )
153159endif ()
154160
155161if (DISABLE_SPAWN)
@@ -284,6 +290,19 @@ endif()
284290
285291set_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
289308get_filename_component (_CXX_BASENAME "${CMAKE_CXX_COMPILER} " NAME )
@@ -371,14 +390,14 @@ set(LIBS "${YOSYS_CFG_LIBS}")
371390set (BINDIR "${YOSYS_CFG_BINDIR} " )
372391set (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
380399add_custom_target (yosys-config-copy ALL
381- DEPENDS ${CMAKE_BINARY_DIR } /yosys-config)
400+ DEPENDS ${yosys_BINARY_DIR } /yosys-config)
382401
383402#### INSTALL ####
384403install (TARGETS yosys
@@ -390,7 +409,7 @@ if (ENABLE_ABC)
390409 RENAME yosys-abc)
391410endif ()
392411
393- install (PROGRAMS ${CMAKE_BINARY_DIR } /yosys-config DESTINATION .)
412+ install (PROGRAMS ${yosys_BINARY_DIR } /yosys-config DESTINATION .)
394413
395414#### TESTING ####
396415include (cmake/TestFiles.cmake)
0 commit comments