mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-15 13:28:59 +00:00
CMake: initial work
This commit is contained in:
parent
df3c62a4ed
commit
f51a2d793a
43
CMakeLists.txt
Normal file
43
CMakeLists.txt
Normal file
|
@ -0,0 +1,43 @@
|
|||
cmake_minimum_required(VERSION 3.13)
|
||||
project(yosys LANGUAGES CXX C)
|
||||
set(YOSYS_VER "0.50+1")
|
||||
|
||||
include(CheckCXXCompilerFlag)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
set(CMAKE_C_STANDARD 99)
|
||||
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_C_EXTENSIONS OFF)
|
||||
|
||||
find_package(FLEX 2.6 REQUIRED)
|
||||
find_package(BISON 3.0 REQUIRED)
|
||||
find_package(Python3 3.5 REQUIRED COMPONENTS Interpreter)
|
||||
|
||||
add_executable(yosys)
|
||||
#target_include_directories(yosys PRIVATE ${CMAKE_CURRENT_BINARY_DIR})
|
||||
#target_include_directories(yosys PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
#target_compile_definitions(yosys PRIVATE _YOSYS_)
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
add_compile_definitions(_YOSYS_)
|
||||
|
||||
add_subdirectory(kernel)
|
||||
add_subdirectory(libs)
|
||||
add_subdirectory(frontends/aiger)
|
||||
add_subdirectory(frontends/aiger2)
|
||||
add_subdirectory(frontends/ast)
|
||||
add_subdirectory(frontends/blif)
|
||||
add_subdirectory(frontends/json)
|
||||
add_subdirectory(frontends/liberty)
|
||||
add_subdirectory(frontends/rpc)
|
||||
add_subdirectory(frontends/rtlil)
|
||||
add_subdirectory(frontends/verilog)
|
||||
add_subdirectory(backends/rtlil)
|
||||
add_subdirectory(backends/edif)
|
||||
add_subdirectory(passes/cmds)
|
||||
add_subdirectory(passes/techmap)
|
||||
add_subdirectory(techlibs/common)
|
||||
|
||||
target_link_libraries(yosys PRIVATE z)
|
7
backends/edif/CMakeLists.txt
Normal file
7
backends/edif/CMakeLists.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
add_library(yosys_backends_edif INTERFACE)
|
||||
|
||||
target_sources(yosys_backends_edif INTERFACE
|
||||
edif.cc
|
||||
)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_backends_edif)
|
8
backends/rtlil/CMakeLists.txt
Normal file
8
backends/rtlil/CMakeLists.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
add_library(yosys_backends_rtlil INTERFACE)
|
||||
|
||||
target_sources(yosys_backends_rtlil INTERFACE
|
||||
rtlil_backend.cc
|
||||
rtlil_backend.h
|
||||
)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_backends_rtlil)
|
8
frontends/aiger/CMakeLists.txt
Normal file
8
frontends/aiger/CMakeLists.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
add_library(yosys_frontends_aiger INTERFACE)
|
||||
|
||||
target_sources(yosys_frontends_aiger INTERFACE
|
||||
aigerparse.cc
|
||||
aigerparse.h
|
||||
)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_frontends_aiger)
|
7
frontends/aiger2/CMakeLists.txt
Normal file
7
frontends/aiger2/CMakeLists.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
add_library(yosys_frontends_aiger2 INTERFACE)
|
||||
|
||||
target_sources(yosys_frontends_aiger2 INTERFACE
|
||||
xaiger.cc
|
||||
)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_frontends_aiger2)
|
13
frontends/ast/CMakeLists.txt
Normal file
13
frontends/ast/CMakeLists.txt
Normal file
|
@ -0,0 +1,13 @@
|
|||
add_library(yosys_frontends_ast INTERFACE)
|
||||
|
||||
target_sources(yosys_frontends_ast INTERFACE
|
||||
ast_binding.cc
|
||||
ast_binding.h
|
||||
ast.cc
|
||||
ast.h
|
||||
dpicall.cc
|
||||
genrtlil.cc
|
||||
simplify.cc
|
||||
)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_frontends_ast)
|
8
frontends/blif/CMakeLists.txt
Normal file
8
frontends/blif/CMakeLists.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
add_library(yosys_frontends_blif INTERFACE)
|
||||
|
||||
target_sources(yosys_frontends_blif INTERFACE
|
||||
blifparse.cc
|
||||
blifparse.h
|
||||
)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_frontends_blif)
|
7
frontends/json/CMakeLists.txt
Normal file
7
frontends/json/CMakeLists.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
add_library(yosys_frontends_json INTERFACE)
|
||||
|
||||
target_sources(yosys_frontends_json INTERFACE
|
||||
jsonparse.cc
|
||||
)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_frontends_json)
|
7
frontends/liberty/CMakeLists.txt
Normal file
7
frontends/liberty/CMakeLists.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
add_library(yosys_frontends_liberty INTERFACE)
|
||||
|
||||
target_sources(yosys_frontends_liberty INTERFACE
|
||||
liberty.cc
|
||||
)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_frontends_liberty)
|
7
frontends/rpc/CMakeLists.txt
Normal file
7
frontends/rpc/CMakeLists.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
add_library(yosys_frontends_rpc INTERFACE)
|
||||
|
||||
target_sources(yosys_frontends_rpc INTERFACE
|
||||
rpc_frontend.cc
|
||||
)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_frontends_rpc)
|
16
frontends/rtlil/CMakeLists.txt
Normal file
16
frontends/rtlil/CMakeLists.txt
Normal file
|
@ -0,0 +1,16 @@
|
|||
flex_target(RTLIL_LEXER "rtlil_lexer.l" "${CMAKE_CURRENT_BINARY_DIR}/rtlil_lexer.cc")
|
||||
bison_target(RTLIL_PARSER "rtlil_parser.y" "${CMAKE_CURRENT_BINARY_DIR}/rtlil_parser.tab.cc" DEFINES_FILE "${CMAKE_CURRENT_BINARY_DIR}/rtlil_parser.tab.hh" COMPILE_FLAGS "-d -r all")
|
||||
|
||||
add_library(yosys_frontends_rtlil INTERFACE)
|
||||
target_sources(yosys_frontends_rtlil INTERFACE
|
||||
rtlil_frontend.cc
|
||||
)
|
||||
|
||||
add_library(yosys_frontends_rtlil_gen OBJECT
|
||||
#${CMAKE_CURRENT_BINARY_DIR}/rtlil_lexer.cc
|
||||
#${CMAKE_CURRENT_BINARY_DIR}/rtlil_parser.tab.cc
|
||||
#${CMAKE_CURRENT_BINARY_DIR}/rtlil_parser.tab.hh
|
||||
${FLEX_RTLIL_LEXER_OUTPUTS}
|
||||
${BISON_RTLIL_PARSER_OUTPUTS}
|
||||
)
|
||||
target_link_libraries(yosys PRIVATE yosys_frontends_rtlil yosys_frontends_rtlil_gen)
|
8
frontends/verific/CMakeLists.txt
Normal file
8
frontends/verific/CMakeLists.txt
Normal file
|
@ -0,0 +1,8 @@
|
|||
add_library(yosys_frontends_aiger INTERFACE)
|
||||
|
||||
target_sources(yosys_frontends_aiger INTERFACE
|
||||
aigerparse.cc
|
||||
aigerparse.h
|
||||
)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_frontends_aiger)
|
46
frontends/verilog/CMakeLists.txt
Normal file
46
frontends/verilog/CMakeLists.txt
Normal file
|
@ -0,0 +1,46 @@
|
|||
#add_custom_command(
|
||||
# COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}
|
||||
# OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/verilog_parser.tab.cc ${CMAKE_CURRENT_BINARY_DIR}/verilog_parser.tab.hh
|
||||
# COMMAND ${BISON_EXECUTABLE}
|
||||
# -Wall -Werror
|
||||
# -o verilog_parser.tab.cc
|
||||
# -d -r all
|
||||
# ${CMAKE_CURRENT_SOURCE_DIR}/verilog_parser.y
|
||||
# DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/verilog_parser.y
|
||||
# COMMENT "Generating frontends/verilog/verilog_parser.tab.cc"
|
||||
# VERBATIM
|
||||
# COMMAND_EXPAND_LISTS
|
||||
#)
|
||||
#
|
||||
#add_custom_command(
|
||||
# COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}
|
||||
# OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/verilog_lexer.cc
|
||||
# COMMAND ${FLEX_EXECUTABLE}
|
||||
# --outfile=verilog_lexer.cc
|
||||
# ${CMAKE_CURRENT_SOURCE_DIR}/verilog_lexer.l
|
||||
# DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/verilog_lexer.l
|
||||
# COMMENT "Generating frontends/verilog/verilog_lexer.cc"
|
||||
# VERBATIM
|
||||
# COMMAND_EXPAND_LISTS
|
||||
#)
|
||||
|
||||
flex_target(VERILOG_LEXER "verilog_lexer.l" "${CMAKE_CURRENT_BINARY_DIR}/verilog_lexer.cc")
|
||||
bison_target(VERILOG_PARSER "verilog_parser.y" "${CMAKE_CURRENT_BINARY_DIR}/verilog_parser.tab.cc" DEFINES_FILE "${CMAKE_CURRENT_BINARY_DIR}/verilog_parser.tab.hh" COMPILE_FLAGS "-Wall -Werror -d -r all")
|
||||
|
||||
add_library(yosys_frontends_verilog INTERFACE)
|
||||
target_sources(yosys_frontends_verilog INTERFACE
|
||||
const2ast.cc
|
||||
preproc.cc
|
||||
preproc.h
|
||||
verilog_frontend.cc
|
||||
verilog_frontend.h
|
||||
)
|
||||
|
||||
add_library(yosys_frontends_verilog_gen OBJECT
|
||||
${FLEX_VERILOG_LEXER_OUTPUTS}
|
||||
${BISON_VERILOG_PARSER_OUTPUTS}
|
||||
#${CMAKE_CURRENT_BINARY_DIR}/verilog_lexer.cc
|
||||
#${CMAKE_CURRENT_BINARY_DIR}/verilog_parser.tab.cc
|
||||
#${CMAKE_CURRENT_BINARY_DIR}/verilog_parser.tab.hh
|
||||
)
|
||||
target_link_libraries(yosys PRIVATE yosys_frontends_verilog yosys_frontends_verilog_gen)
|
85
kernel/CMakeLists.txt
Normal file
85
kernel/CMakeLists.txt
Normal file
|
@ -0,0 +1,85 @@
|
|||
add_library(yosys_kernel INTERFACE)
|
||||
|
||||
#if(CMAKE_PROJECT_VERSION_PATCH GREATER 0)
|
||||
# set(YOSYS_VERSION "${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}+${CMAKE_PROJECT_VERSION_PATCH}")
|
||||
#else()
|
||||
# set(YOSYS_VERSION "${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}")
|
||||
#endif()
|
||||
|
||||
find_package(Git)
|
||||
if(Git_FOUND)
|
||||
execute_process(
|
||||
COMMAND ${GIT_EXECUTABLE} rev-parse --short=9 HEAD
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE CURRENT_GIT_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
set(YOSYS_GIT_VERSION "git sha1 ${CURRENT_GIT_VERSION}, ")
|
||||
endif()
|
||||
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.cc.in ${CMAKE_CURRENT_BINARY_DIR}/version.cc)
|
||||
|
||||
target_sources(yosys_kernel INTERFACE
|
||||
binding.cc
|
||||
binding.h
|
||||
bitpattern.h
|
||||
calc.cc
|
||||
cellaigs.cc
|
||||
cellaigs.h
|
||||
celledges.cc
|
||||
celledges.h
|
||||
celltypes.h
|
||||
compute_graph.h
|
||||
consteval.h
|
||||
constids.inc
|
||||
cost.cc
|
||||
cost.h
|
||||
driver.cc
|
||||
drivertools.cc
|
||||
drivertools.h
|
||||
ff.cc
|
||||
ff.h
|
||||
ffinit.h
|
||||
ffmerge.cc
|
||||
ffmerge.h
|
||||
fmt.cc
|
||||
fmt.h
|
||||
fstdata.cc
|
||||
fstdata.h
|
||||
functional.cc
|
||||
functional.h
|
||||
hashlib.h
|
||||
json.cc
|
||||
json.h
|
||||
log.cc
|
||||
log.h
|
||||
macc.h
|
||||
mem.cc
|
||||
mem.h
|
||||
modtools.h
|
||||
qcsat.cc
|
||||
qcsat.h
|
||||
register.cc
|
||||
register.h
|
||||
rtlil.cc
|
||||
rtlil.h
|
||||
satgen.cc
|
||||
satgen.h
|
||||
scopeinfo.cc
|
||||
scopeinfo.h
|
||||
sexpr.cc
|
||||
sexpr.h
|
||||
sigtools.h
|
||||
tclapi.cc
|
||||
timinginfo.h
|
||||
topo_scc.h
|
||||
utils.h
|
||||
${CMAKE_CURRENT_BINARY_DIR}/version.cc
|
||||
yosys.cc
|
||||
yosys_common.h
|
||||
yosys.h
|
||||
yw.cc
|
||||
yw.h
|
||||
)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_kernel)
|
1
kernel/version.cc.in
Normal file
1
kernel/version.cc.in
Normal file
|
@ -0,0 +1 @@
|
|||
namespace Yosys { extern const char *yosys_version_str; const char *yosys_version_str="Yosys @YOSYS_VER@ (@YOSYS_GIT_VERSION@@CMAKE_CXX_COMPILER_ID@ @CMAKE_CXX_COMPILER_VERSION@)"; }
|
66
libs/CMakeLists.txt
Normal file
66
libs/CMakeLists.txt
Normal file
|
@ -0,0 +1,66 @@
|
|||
add_library(yosys_libs INTERFACE)
|
||||
|
||||
target_sources(yosys_libs INTERFACE
|
||||
bigint/BigInteger.cc
|
||||
bigint/BigInteger.hh
|
||||
bigint/BigIntegerAlgorithms.cc
|
||||
bigint/BigIntegerAlgorithms.hh
|
||||
bigint/BigIntegerLibrary.hh
|
||||
bigint/BigIntegerUtils.cc
|
||||
bigint/BigIntegerUtils.hh
|
||||
bigint/BigUnsigned.cc
|
||||
bigint/BigUnsigned.hh
|
||||
bigint/BigUnsignedInABase.cc
|
||||
bigint/BigUnsignedInABase.hh
|
||||
bigint/NumberlikeArray.hh
|
||||
|
||||
sha1/sha1.cpp
|
||||
sha1/sha1.h
|
||||
|
||||
json11/json11.cpp
|
||||
json11/json11.hpp
|
||||
|
||||
ezsat/ezsat.cc
|
||||
ezsat/ezsat.h
|
||||
ezsat/ezminisat.cc
|
||||
ezsat/ezminisat.h
|
||||
|
||||
minisat/Alg.h
|
||||
minisat/Alloc.h
|
||||
minisat/Dimacs.h
|
||||
minisat/Heap.h
|
||||
minisat/IntMap.h
|
||||
minisat/IntTypes.h
|
||||
minisat/Map.h
|
||||
minisat/Options.cc
|
||||
minisat/Options.h
|
||||
minisat/ParseUtils.h
|
||||
minisat/Queue.h
|
||||
minisat/Rnd.h
|
||||
minisat/SimpSolver.cc
|
||||
minisat/SimpSolver.h
|
||||
minisat/Solver.cc
|
||||
minisat/Solver.h
|
||||
minisat/SolverTypes.h
|
||||
minisat/Sort.h
|
||||
minisat/System.cc
|
||||
minisat/System.h
|
||||
minisat/Vec.h
|
||||
minisat/XAlloc.h
|
||||
|
||||
fst/config.h
|
||||
fst/fastlz.cc
|
||||
fst/fastlz.h
|
||||
fst/fstapi.cc
|
||||
fst/fstapi.h
|
||||
fst/fst_win_unistd.h
|
||||
fst/lz4.cc
|
||||
fst/lz4.h
|
||||
|
||||
subcircuit/subcircuit.cc
|
||||
subcircuit/subcircuit.h
|
||||
|
||||
cxxopts/include/cxxopts.hpp
|
||||
)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_libs)
|
56
passes/cmds/CMakeLists.txt
Normal file
56
passes/cmds/CMakeLists.txt
Normal file
|
@ -0,0 +1,56 @@
|
|||
add_library(yosys_passes_cmds INTERFACE)
|
||||
|
||||
target_sources(yosys_passes_cmds INTERFACE
|
||||
add.cc
|
||||
autoname.cc
|
||||
blackbox.cc
|
||||
box_derive.cc
|
||||
bugpoint.cc
|
||||
check.cc
|
||||
chformal.cc
|
||||
chtype.cc
|
||||
clean_zerowidth.cc
|
||||
connect.cc
|
||||
connwrappers.cc
|
||||
copy.cc
|
||||
cover.cc
|
||||
delete.cc
|
||||
design.cc
|
||||
dft_tag.cc
|
||||
edgetypes.cc
|
||||
example_dt.cc
|
||||
exec.cc
|
||||
future.cc
|
||||
glift.cc
|
||||
internal_stats.cc
|
||||
logcmd.cc
|
||||
logger.cc
|
||||
ltp.cc
|
||||
plugin.cc
|
||||
portarcs.cc
|
||||
portlist.cc
|
||||
printattrs.cc
|
||||
rename.cc
|
||||
scatter.cc
|
||||
scc.cc
|
||||
scratchpad.cc
|
||||
select.cc
|
||||
setattr.cc
|
||||
setenv.cc
|
||||
setundef.cc
|
||||
show.cc
|
||||
splice.cc
|
||||
splitcells.cc
|
||||
splitnets.cc
|
||||
sta.cc
|
||||
stat.cc
|
||||
tee.cc
|
||||
torder.cc
|
||||
trace.cc
|
||||
viz.cc
|
||||
wrapcell.cc
|
||||
write_file.cc
|
||||
xprop.cc
|
||||
)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_passes_cmds)
|
7
passes/techmap/CMakeLists.txt
Normal file
7
passes/techmap/CMakeLists.txt
Normal file
|
@ -0,0 +1,7 @@
|
|||
add_library(yosys_passes_techmap INTERFACE)
|
||||
|
||||
target_sources(yosys_passes_techmap INTERFACE
|
||||
libparse.cc
|
||||
)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_passes_techmap)
|
30
techlibs/common/CMakeLists.txt
Normal file
30
techlibs/common/CMakeLists.txt
Normal file
|
@ -0,0 +1,30 @@
|
|||
add_library(yosys_techlib_common INTERFACE)
|
||||
|
||||
add_custom_command(
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/techlibs/common
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cellhelp.py ${CMAKE_CURRENT_SOURCE_DIR}/simlib.v > ${CMAKE_CURRENT_BINARY_DIR}/simlib_help.inc
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/cellhelp.py ${CMAKE_CURRENT_SOURCE_DIR}/simlib.v
|
||||
OUTPUT simlib_help.inc
|
||||
COMMENT "Generating techlibs/common/simlib_help.inc..."
|
||||
)
|
||||
add_custom_command(
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/techlibs/common
|
||||
COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/cellhelp.py ${CMAKE_CURRENT_SOURCE_DIR}/simcells.v > ${CMAKE_CURRENT_BINARY_DIR}/simcells_help.inc
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/cellhelp.py ${CMAKE_CURRENT_SOURCE_DIR}/simcells.v
|
||||
OUTPUT simcells_help.inc
|
||||
COMMENT "Generating techlibs/common/simcells_help.inc..."
|
||||
)
|
||||
|
||||
add_custom_target(yosys_techlib_common_gen DEPENDS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/simlib_help.inc
|
||||
${CMAKE_CURRENT_BINARY_DIR}/simcells_help.inc
|
||||
)
|
||||
|
||||
target_sources(yosys_techlib_common INTERFACE
|
||||
synth.cc
|
||||
prep.cc
|
||||
)
|
||||
|
||||
add_dependencies(yosys_techlib_common yosys_techlib_common_gen)
|
||||
|
||||
target_link_libraries(yosys PRIVATE yosys_techlib_common)
|
Loading…
Reference in a new issue