3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-04-15 13:28:59 +00:00

CMake: initial work

This commit is contained in:
Miodrag Milanovic 2025-02-12 14:18:02 +01:00
parent df3c62a4ed
commit f51a2d793a
19 changed files with 430 additions and 0 deletions

43
CMakeLists.txt Normal file
View 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)

View 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)

View 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)

View 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)

View 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)

View 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)

View 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)

View 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)

View 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)

View 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)

View 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)

View 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)

View 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
View 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
View 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
View 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)

View 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)

View 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)

View 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)