Skip to content

Commit 5dd402f

Browse files
committed
CMake: Fixed libyosys and renamed source dir so project can be imported as a subdirectory
1 parent b6e5bf1 commit 5dd402f

File tree

5 files changed

+73
-58
lines changed

5 files changed

+73
-58
lines changed

CMakeLists.txt

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,12 @@ if (ENABLE_ABC)
5353
add_subdirectory(abc EXCLUDE_FROM_ALL)
5454

5555
add_custom_command(
56-
OUTPUT ${CMAKE_BINARY_DIR}/yosys-abc
56+
OUTPUT ${yosys_BINARY_DIR}/yosys-abc
5757
DEPENDS abc # Depend on the target, not the generator expression
58-
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:abc> ${CMAKE_BINARY_DIR}/yosys-abc
58+
COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:abc> ${yosys_BINARY_DIR}/yosys-abc
5959
)
6060

61-
add_custom_target(yosys-abc-copy ALL DEPENDS ${CMAKE_BINARY_DIR}/yosys-abc)
61+
add_custom_target(yosys-abc-copy ALL DEPENDS ${yosys_BINARY_DIR}/yosys-abc)
6262
endif()
6363

6464
set(CMAKE_CXX_STANDARD ${CXXSTD})
@@ -73,10 +73,10 @@ find_package(FLEX 2.6 REQUIRED)
7373
find_package(BISON 3.0 REQUIRED)
7474
find_package(Python3 3.5 REQUIRED COMPONENTS Interpreter)
7575

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_)
76+
add_library(yosys STATIC)
77+
#target_include_directories(yosys PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
78+
#target_include_directories(yosys PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
79+
#target_compile_definitions(yosys PUBLIC _YOSYS_)
8080
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
8181

8282
add_compile_definitions(_YOSYS_)
@@ -88,26 +88,26 @@ endif()
8888
if (ENABLE_READLINE)
8989
find_package(Readline REQUIRED)
9090
add_compile_definitions(YOSYS_ENABLE_READLINE)
91-
target_link_libraries(yosys PRIVATE ${READLINE_LIBRARY})
91+
target_link_libraries(yosys PUBLIC ${READLINE_LIBRARY})
9292
endif()
9393

9494
if (ENABLE_EDITLINE)
9595
find_package(Editline REQUIRED)
9696
add_compile_definitions(YOSYS_ENABLE_EDITLINE)
97-
target_link_libraries(yosys PRIVATE ${EDITLINE_LIBRARY})
97+
target_link_libraries(yosys PUBLIC ${EDITLINE_LIBRARY})
9898
endif()
9999

100100
if (ENABLE_TCL)
101101
find_package(TCL 8.6 REQUIRED)
102102
add_compile_definitions(YOSYS_ENABLE_TCL)
103-
target_include_directories(yosys PRIVATE ${TCL_INCLUDE_PATH})
104-
target_link_libraries(yosys PRIVATE ${TCL_LIBRARY})
103+
target_include_directories(yosys PUBLIC ${TCL_INCLUDE_PATH})
104+
target_link_libraries(yosys PUBLIC ${TCL_LIBRARY})
105105
endif()
106106

107107
if (ENABLE_ZLIB)
108108
find_package(ZLIB REQUIRED)
109109
add_compile_definitions(YOSYS_ENABLE_ZLIB)
110-
target_link_libraries(yosys PRIVATE ZLIB::ZLIB)
110+
target_link_libraries(yosys PUBLIC ZLIB::ZLIB)
111111
endif()
112112

113113
if (ENABLE_COVER)
@@ -140,7 +140,7 @@ if (ENABLE_ABC)
140140
add_compile_definitions(YOSYS_ENABLE_ABC)
141141
if (LINK_ABC)
142142
add_compile_definitions(YOSYS_LINK_ABC)
143-
target_link_libraries(yosys PRIVATE $<TARGET_FILE:libabc>)
143+
target_link_libraries(yosys PUBLIC $<TARGET_FILE:libabc>)
144144
add_dependencies(yosys libabc)
145145
endif()
146146
endif()
@@ -149,7 +149,7 @@ if (ENABLE_PLUGINS)
149149
find_package(LibFFI REQUIRED)
150150
add_compile_definitions(YOSYS_ENABLE_PLUGINS)
151151
include_directories(${LIBFFI_INCLUDE_DIR})
152-
target_link_libraries(yosys PRIVATE ${LIBFFI_LIBRARY})
152+
target_link_libraries(yosys PUBLIC ${LIBFFI_LIBRARY})
153153
endif()
154154

155155
if (DISABLE_SPAWN)
@@ -284,6 +284,21 @@ endif()
284284

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

287+
if (ENABLE_LIBYOSYS)
288+
add_library(yosys_shared SHARED)
289+
target_link_libraries(yosys_shared PUBLIC yosys)
290+
set_target_properties(yosys_shared PROPERTIES OUTPUT_NAME yosys)
291+
install(TARGETS yosys_shared
292+
LIBRARY DESTINATION .)
293+
endif()
294+
295+
add_executable(yosys_exe
296+
kernel/driver.cc)
297+
target_link_libraries(yosys_exe PUBLIC yosys)
298+
set_target_properties(yosys_exe PROPERTIES OUTPUT_NAME yosys)
299+
install(TARGETS yosys_exe
300+
LIBRARY DESTINATION .)
301+
287302
#### yosys-config setup ####
288303
# compiler
289304
get_filename_component(_CXX_BASENAME "${CMAKE_CXX_COMPILER}" NAME)
@@ -371,14 +386,14 @@ set(LIBS "${YOSYS_CFG_LIBS}")
371386
set(BINDIR "${YOSYS_CFG_BINDIR}")
372387
set(DATDIR "${YOSYS_CFG_DATDIR}")
373388

374-
configure_file(misc/yosys-config.in ${CMAKE_BINARY_DIR}/yosys-config @ONLY)
375-
file(CHMOD ${CMAKE_BINARY_DIR}/yosys-config
389+
configure_file(misc/yosys-config.in ${yosys_BINARY_DIR}/yosys-config @ONLY)
390+
file(CHMOD ${yosys_BINARY_DIR}/yosys-config
376391
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
377392
GROUP_READ GROUP_EXECUTE
378393
WORLD_READ WORLD_EXECUTE)
379394

380395
add_custom_target(yosys-config-copy ALL
381-
DEPENDS ${CMAKE_BINARY_DIR}/yosys-config)
396+
DEPENDS ${yosys_BINARY_DIR}/yosys-config)
382397

383398
#### INSTALL ####
384399
install(TARGETS yosys
@@ -390,7 +405,7 @@ if (ENABLE_ABC)
390405
RENAME yosys-abc)
391406
endif()
392407

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

395410
#### TESTING ####
396411
include(cmake/TestFiles.cmake)

kernel/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ find_package(Git)
1010
if(Git_FOUND)
1111
execute_process(
1212
COMMAND ${GIT_EXECUTABLE} rev-parse --short=9 HEAD
13-
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
13+
WORKING_DIRECTORY ${yosys_SOURCE_DIR}
1414
OUTPUT_VARIABLE CURRENT_GIT_VERSION
1515
OUTPUT_STRIP_TRAILING_WHITESPACE
1616
)
@@ -34,7 +34,7 @@ target_sources(yosys_kernel INTERFACE
3434
constids.inc
3535
cost.cc
3636
cost.h
37-
driver.cc
37+
# driver.cc
3838
drivertools.cc
3939
drivertools.h
4040
ff.cc

passes/pmgen/CMakeLists.txt

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ add_library(yosys_passes_pmgen INTERFACE)
22

33
function(pmgen_command _name _path)
44
add_custom_command(
5-
OUTPUT ${CMAKE_BINARY_DIR}/${_path}/${_name}_pm.h
6-
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py -o ${CMAKE_BINARY_DIR}/${_path}/${_name}_pm.h -p ${_name} ${CMAKE_SOURCE_DIR}/${_path}/${_name}.pmg
7-
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py ${CMAKE_SOURCE_DIR}/${_path}/${_name}.pmg
5+
OUTPUT ${yosys_BINARY_DIR}/${_path}/${_name}_pm.h
6+
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py -o ${yosys_BINARY_DIR}/${_path}/${_name}_pm.h -p ${_name} ${yosys_SOURCE_DIR}/${_path}/${_name}.pmg
7+
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py ${yosys_SOURCE_DIR}/${_path}/${_name}.pmg
88
COMMENT "Generating ${_path}/${_name}_pm.h..."
99
)
1010
endfunction()
@@ -22,50 +22,50 @@ pmgen_command(microchip_dsp_cascade techlibs/microchip)
2222
pmgen_command(xilinx_srl techlibs/xilinx)
2323

2424
add_custom_command(
25-
OUTPUT ${CMAKE_BINARY_DIR}/passes/opt/peepopt_pm.h
26-
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py -o ${CMAKE_BINARY_DIR}/passes/opt/peepopt_pm.h -p peepopt
27-
${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftmul_right.pmg
28-
${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftmul_left.pmg
29-
${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftadd.pmg
30-
${CMAKE_SOURCE_DIR}/passes/opt/peepopt_muldiv.pmg
31-
${CMAKE_SOURCE_DIR}/passes/opt/peepopt_muldiv_c.pmg
32-
${CMAKE_SOURCE_DIR}/passes/opt/peepopt_formal_clockgateff.pmg
25+
OUTPUT ${yosys_BINARY_DIR}/passes/opt/peepopt_pm.h
26+
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py -o ${yosys_BINARY_DIR}/passes/opt/peepopt_pm.h -p peepopt
27+
${yosys_SOURCE_DIR}/passes/opt/peepopt_shiftmul_right.pmg
28+
${yosys_SOURCE_DIR}/passes/opt/peepopt_shiftmul_left.pmg
29+
${yosys_SOURCE_DIR}/passes/opt/peepopt_shiftadd.pmg
30+
${yosys_SOURCE_DIR}/passes/opt/peepopt_muldiv.pmg
31+
${yosys_SOURCE_DIR}/passes/opt/peepopt_muldiv_c.pmg
32+
${yosys_SOURCE_DIR}/passes/opt/peepopt_formal_clockgateff.pmg
3333
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py
34-
${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftmul_right.pmg
35-
${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftmul_left.pmg
36-
${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftadd.pmg
37-
${CMAKE_SOURCE_DIR}/passes/opt/peepopt_muldiv.pmg
38-
${CMAKE_SOURCE_DIR}/passes/opt/peepopt_muldiv_c.pmg
39-
${CMAKE_SOURCE_DIR}/passes/opt/peepopt_formal_clockgateff.pmg
34+
${yosys_SOURCE_DIR}/passes/opt/peepopt_shiftmul_right.pmg
35+
${yosys_SOURCE_DIR}/passes/opt/peepopt_shiftmul_left.pmg
36+
${yosys_SOURCE_DIR}/passes/opt/peepopt_shiftadd.pmg
37+
${yosys_SOURCE_DIR}/passes/opt/peepopt_muldiv.pmg
38+
${yosys_SOURCE_DIR}/passes/opt/peepopt_muldiv_c.pmg
39+
${yosys_SOURCE_DIR}/passes/opt/peepopt_formal_clockgateff.pmg
4040
COMMENT "Generating passes/pmgen/peepopt_pm.h..."
4141
)
4242

4343
target_sources(yosys_passes_pmgen INTERFACE
4444
test_pmgen.cc
45-
${CMAKE_SOURCE_DIR}/techlibs/ice40/ice40_dsp.cc
46-
${CMAKE_SOURCE_DIR}/techlibs/ice40/ice40_wrapcarry.cc
47-
${CMAKE_SOURCE_DIR}/techlibs/xilinx/xilinx_dsp.cc
48-
${CMAKE_SOURCE_DIR}/techlibs/microchip/microchip_dsp.cc
49-
${CMAKE_SOURCE_DIR}/passes/opt/peepopt.cc
50-
${CMAKE_SOURCE_DIR}/techlibs/xilinx/xilinx_srl.cc
45+
${yosys_SOURCE_DIR}/techlibs/ice40/ice40_dsp.cc
46+
${yosys_SOURCE_DIR}/techlibs/ice40/ice40_wrapcarry.cc
47+
${yosys_SOURCE_DIR}/techlibs/xilinx/xilinx_dsp.cc
48+
${yosys_SOURCE_DIR}/techlibs/microchip/microchip_dsp.cc
49+
${yosys_SOURCE_DIR}/passes/opt/peepopt.cc
50+
${yosys_SOURCE_DIR}/techlibs/xilinx/xilinx_srl.cc
5151
)
5252

53-
target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/passes/pmgen/test_pmgen_pm.h)
53+
target_sources(yosys_passes_pmgen PRIVATE ${yosys_BINARY_DIR}/passes/pmgen/test_pmgen_pm.h)
5454

55-
target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/ice40/ice40_dsp_pm.h)
56-
target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/ice40/ice40_wrapcarry_pm.h)
55+
target_sources(yosys_passes_pmgen PRIVATE ${yosys_BINARY_DIR}/techlibs/ice40/ice40_dsp_pm.h)
56+
target_sources(yosys_passes_pmgen PRIVATE ${yosys_BINARY_DIR}/techlibs/ice40/ice40_wrapcarry_pm.h)
5757

58-
target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_pm.h)
59-
target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_dsp48a_pm.h)
60-
target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_CREG_pm.h)
61-
target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_cascade_pm.h)
58+
target_sources(yosys_passes_pmgen PRIVATE ${yosys_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_pm.h)
59+
target_sources(yosys_passes_pmgen PRIVATE ${yosys_BINARY_DIR}/techlibs/xilinx/xilinx_dsp48a_pm.h)
60+
target_sources(yosys_passes_pmgen PRIVATE ${yosys_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_CREG_pm.h)
61+
target_sources(yosys_passes_pmgen PRIVATE ${yosys_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_cascade_pm.h)
6262

63-
target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/microchip/microchip_dsp_pm.h)
64-
target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/microchip/microchip_dsp_CREG_pm.h)
65-
target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/microchip/microchip_dsp_cascade_pm.h)
63+
target_sources(yosys_passes_pmgen PRIVATE ${yosys_BINARY_DIR}/techlibs/microchip/microchip_dsp_pm.h)
64+
target_sources(yosys_passes_pmgen PRIVATE ${yosys_BINARY_DIR}/techlibs/microchip/microchip_dsp_CREG_pm.h)
65+
target_sources(yosys_passes_pmgen PRIVATE ${yosys_BINARY_DIR}/techlibs/microchip/microchip_dsp_cascade_pm.h)
6666

67-
target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/passes/opt/peepopt_pm.h)
67+
target_sources(yosys_passes_pmgen PRIVATE ${yosys_BINARY_DIR}/passes/opt/peepopt_pm.h)
6868

69-
target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_srl_pm.h)
69+
target_sources(yosys_passes_pmgen PRIVATE ${yosys_BINARY_DIR}/techlibs/xilinx/xilinx_srl_pm.h)
7070

7171
target_link_libraries(yosys PRIVATE yosys_passes_pmgen)

techlibs/gatemate/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ add_custom_command(
1010
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/make_lut_tree_lib.py
1111
OUTPUT lut_tree_cells.genlib lut_tree_map.v
1212
COMMENT "Generating techlibs/gatemate/lut_tree_map.v..."
13-
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
13+
WORKING_DIRECTORY ${yosys_BINARY_DIR}
1414
)
1515

1616
target_sources(yosys_techlibs_gatemate PRIVATE

techlibs/quicklogic/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ add_library(yosys_techlibs_quicklogic INTERFACE)
33
function(pmgen_command _name)
44
add_custom_command(
55
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_name}_pm.h
6-
COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/passes/pmgen/pmgen.py -o ${CMAKE_CURRENT_BINARY_DIR}/${_name}_pm.h -p ${_name} ${CMAKE_CURRENT_SOURCE_DIR}/${_name}.pmg
7-
DEPENDS ${CMAKE_SOURCE_DIR}/passes/pmgen/pmgen.py ${CMAKE_CURRENT_SOURCE_DIR}/${_name}.pmg
6+
COMMAND ${Python3_EXECUTABLE} ${yosys_SOURCE_DIR}/passes/pmgen/pmgen.py -o ${CMAKE_CURRENT_BINARY_DIR}/${_name}_pm.h -p ${_name} ${CMAKE_CURRENT_SOURCE_DIR}/${_name}.pmg
7+
DEPENDS ${yosys_SOURCE_DIR}/passes/pmgen/pmgen.py ${CMAKE_CURRENT_SOURCE_DIR}/${_name}.pmg
88
COMMENT "Generating passes/pmgen/${_name}_pm.h..."
99
)
1010
endfunction()

0 commit comments

Comments
 (0)