3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2026-05-25 11:26:22 +00:00

Migrate build system to CMake

See #5895 for details.

This commit does not include CI or documentation changes.
This commit is contained in:
Catherine 2026-05-12 05:33:04 +00:00
parent 9d0cdb8551
commit 9b087b4aa7
207 changed files with 5202 additions and 2294 deletions

10
frontends/CMakeLists.txt Normal file
View file

@ -0,0 +1,10 @@
add_subdirectory(aiger)
add_subdirectory(aiger2)
add_subdirectory(ast)
add_subdirectory(blif)
add_subdirectory(json)
add_subdirectory(liberty)
add_subdirectory(rpc)
add_subdirectory(rtlil)
add_subdirectory(verific)
add_subdirectory(verilog)

View file

@ -0,0 +1,6 @@
yosys_frontend(aigerparse
aigerparse.cc
aigerparse.h
REQUIRES
opt_clean
)

View file

@ -1,3 +0,0 @@
OBJS += frontends/aiger/aigerparse.o

View file

@ -0,0 +1,3 @@
yosys_frontend(xaiger2
xaiger.cc
)

View file

@ -1,2 +0,0 @@
OBJS += frontends/aiger2/xaiger.o

View file

@ -0,0 +1,13 @@
yosys_core(ast
ast_binding.cc
ast_binding.h
ast.cc
ast.h
dpicall.cc
genrtlil.cc
simplify.cc
LIBRARIES
$<${YOSYS_ENABLE_LIBFFI}:${Dlfcn_LIBRARIES};PkgConfig::libffi>
REQUIRES
sha1
)

View file

@ -1,7 +0,0 @@
OBJS += frontends/ast/ast.o
OBJS += frontends/ast/simplify.o
OBJS += frontends/ast/genrtlil.o
OBJS += frontends/ast/dpicall.o
OBJS += frontends/ast/ast_binding.o

View file

@ -19,7 +19,7 @@
#include "ast.h"
#ifdef YOSYS_ENABLE_PLUGINS
#ifdef YOSYS_ENABLE_LIBFFI
#include <dlfcn.h>
#include <ffi.h>
@ -149,7 +149,7 @@ std::unique_ptr<AST::AstNode> AST::dpi_call(AstSrcLocType loc, const std::string
YOSYS_NAMESPACE_END
#else /* YOSYS_ENABLE_PLUGINS */
#else /* YOSYS_ENABLE_LIBFFI */
YOSYS_NAMESPACE_BEGIN
@ -160,5 +160,5 @@ std::unique_ptr<AST::AstNode> AST::dpi_call(AstSrcLocType, const std::string&, c
YOSYS_NAMESPACE_END
#endif /* YOSYS_ENABLE_PLUGINS */
#endif /* YOSYS_ENABLE_LIBFFI */

View file

@ -0,0 +1,8 @@
yosys_frontend(blif
blifparse.cc
blifparse.h
DATA_DIR
include/frontends/blif
DATA_FILES
blifparse.h
)

View file

@ -1,3 +0,0 @@
OBJS += frontends/blif/blifparse.o

View file

@ -0,0 +1,3 @@
yosys_frontend(json
jsonparse.cc
)

View file

@ -1,3 +0,0 @@
OBJS += frontends/json/jsonparse.o

View file

@ -0,0 +1,5 @@
yosys_frontend(liberty
liberty.cc
REQUIRES
libparse
)

View file

@ -1,3 +0,0 @@
OBJS += frontends/liberty/liberty.o

View file

@ -0,0 +1,8 @@
yosys_frontend(rpc
rpc_frontend.cc
REQUIRES
json11
sha1
ENABLE_IF
YOSYS_ENABLE_SPAWN
)

View file

@ -1,3 +0,0 @@
ifeq ($(DISABLE_SPAWN),0)
OBJS += frontends/rpc/rpc_frontend.o
endif

View file

@ -0,0 +1,3 @@
yosys_frontend(rtlil
rtlil_frontend.cc
)

View file

@ -1 +0,0 @@
OBJS += frontends/rtlil/rtlil_frontend.o

View file

@ -0,0 +1,70 @@
if (NOT YOSYS_ENABLE_VERIFIC)
# Stub interface library.
add_library(verific INTERFACE)
set(verific_data_files)
else()
if (NOT YOSYS_VERIFIC_COMPONENTS)
get_verific_components(YOSYS_VERIFIC_COMPONENTS)
endif()
if (NOT YOSYS_VERIFIC_FEATURES)
foreach (component ${YOSYS_VERIFIC_COMPONENTS})
if (component MATCHES "^(hier_tree|vhdl|edif|extensions)$")
list(APPEND YOSYS_VERIFIC_FEATURES ${component})
elseif (component STREQUAL "verilog")
list(APPEND YOSYS_VERIFIC_FEATURES systemverilog)
elseif (component STREQUAL "synlib")
list(APPEND YOSYS_VERIFIC_FEATURES liberty)
endif()
endforeach()
endif()
message(STATUS "Verific library components: ${YOSYS_VERIFIC_COMPONENTS}")
message(STATUS "Verific frontend features: ${YOSYS_VERIFIC_FEATURES}")
get_verific_options(verific_include_dirs verific_libraries ${YOSYS_VERIFIC_COMPONENTS})
add_library(verific INTERFACE)
target_include_directories(verific INTERFACE
${verific_include_dirs}
)
target_link_libraries(verific INTERFACE
$<LINK_LIBRARY:WHOLE_ARCHIVE,${verific_libraries}>
PkgConfig::zlib
)
set(verific_data_files)
if ("vhdl" IN_LIST YOSYS_VERIFIC_FEATURES)
foreach (vdb_std 1987 1993 2008 2019)
set(vdb_std_root ${YOSYS_VERIFIC_DIR}/vhdl_packages/vdbs_${vdb_std})
file(GLOB_RECURSE vdb_files RELATIVE ${vdb_std_root} ${vdb_std_root}/*)
foreach (vdb_file ${vdb_files})
list(APPEND verific_data_files
verific/vhdl_vdbs_${vdb_std}/${vdb_file}
${YOSYS_VERIFIC_DIR}/vhdl_packages/vdbs_${vdb_std}/${vdb_file}
)
endforeach()
endforeach()
endif()
endif()
yosys_frontend(verific
verific.cc
verific.h
$<${YOSYS_ENABLE_VERIFIC}:verificsva.cc>
DEFINITIONS
$<$<IN_LIST:hier_tree,${YOSYS_VERIFIC_FEATURES}>:VERIFIC_HIER_TREE_SUPPORT>
$<$<IN_LIST:systemverilog,${YOSYS_VERIFIC_FEATURES}>:VERIFIC_SYSTEMVERILOG_SUPPORT>
$<$<IN_LIST:vhdl,${YOSYS_VERIFIC_FEATURES}>:VERIFIC_VHDL_SUPPORT>
$<$<IN_LIST:edif,${YOSYS_VERIFIC_FEATURES}>:VERIFIC_EDIF_SUPPORT>
$<$<IN_LIST:liberty,${YOSYS_VERIFIC_FEATURES}>:VERIFIC_LIBERTY_SUPPORT>
$<$<IN_LIST:extensions,${YOSYS_VERIFIC_FEATURES}>:YOSYSHQ_VERIFIC_EXTENSIONS>
LIBRARIES
verific
REQUIRES
sha1
read_verilog
PROVIDES
read
DATA_EXPLICIT
${verific_data_files}
)

View file

@ -1,23 +0,0 @@
OBJS += frontends/verific/verific.o
ifeq ($(ENABLE_VERIFIC),1)
OBJS += frontends/verific/verificsva.o
EXTRA_TARGETS += share/verific
share/verific:
$(P) rm -rf share/verific.new
$(Q) mkdir -p share/verific.new
ifeq ($(ENABLE_VERIFIC_VHDL),1)
$(Q) cp -r $(VERIFIC_DIR)/vhdl_packages/vdbs_1987/. share/verific.new/vhdl_vdbs_1987
$(Q) cp -r $(VERIFIC_DIR)/vhdl_packages/vdbs_1993/. share/verific.new/vhdl_vdbs_1993
$(Q) cp -r $(VERIFIC_DIR)/vhdl_packages/vdbs_2008/. share/verific.new/vhdl_vdbs_2008
$(Q) cp -r $(VERIFIC_DIR)/vhdl_packages/vdbs_2019/. share/verific.new/vhdl_vdbs_2019
endif
$(Q) chmod -R a+rX share/verific.new
$(Q) mv share/verific.new share/verific
endif

View file

@ -0,0 +1,43 @@
if (NOT FLEX_INCLUDE_DIRS)
set(FLEX_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/libs/flex)
endif()
flex_target(verilog_lexer
verilog_lexer.l
verilog_lexer.cc
)
bison_target(verilog_parser
verilog_parser.y
verilog_parser.tab.cc
# (requires CMake 4.0)
# OPTIONS
# -Wall -Werror
)
yosys_frontend(verilog
const2ast.cc
preproc.cc
preproc.h
verilog_error.cc
verilog_error.h
verilog_frontend.cc
verilog_frontend.h
verilog_lexer.h
verilog_location.h
${FLEX_verilog_lexer_OUTPUTS}
${BISON_verilog_parser_OUTPUTS}
INCLUDE_DIRS
${FLEX_INCLUDE_DIRS}
REQUIRES
sha1
ast
PROVIDES
verilog_defaults
verilog_defines
read_verilog_file_list
ESSENTIAL
)
set_source_files_properties(
${BISON_verilog_parser_OUTPUT_SOURCE}
PROPERTIES
COMPILE_DEFINITIONS -DYYMAXDEPTH=10000000
)

View file

@ -1,29 +0,0 @@
GENFILES += frontends/verilog/verilog_parser.tab.cc
GENFILES += frontends/verilog/verilog_parser.tab.hh
GENFILES += frontends/verilog/verilog_parser.output
GENFILES += frontends/verilog/verilog_lexer.cc
frontends/verilog/verilog_parser.tab.cc: frontends/verilog/verilog_parser.y
$(Q) mkdir -p $(dir $@)
$(P) $(BISON) -Wall -Werror -o $@ -d -r all -b frontends/verilog/verilog_parser $<
frontends/verilog/verilog_parser.tab.hh: frontends/verilog/verilog_parser.tab.cc
frontends/verilog/verilog_frontend.o: frontends/verilog/verilog_parser.tab.hh
frontends/verilog/preproc.o: frontends/verilog/verilog_parser.tab.hh
frontends/verilog/verilog_lexer.h: frontends/verilog/verilog_parser.tab.hh
frontends/verilog/verilog_lexer.cc: frontends/verilog/verilog_lexer.l frontends/verilog/verilog_parser.tab.cc
$(Q) mkdir -p $(dir $@)
$(P) flex -o frontends/verilog/verilog_lexer.cc $<
frontends/verilog/verilog_parser.tab.o: CXXFLAGS += -DYYMAXDEPTH=10000000
OBJS += frontends/verilog/verilog_parser.tab.o
OBJS += frontends/verilog/verilog_lexer.o
OBJS += frontends/verilog/preproc.o
OBJS += frontends/verilog/verilog_frontend.o
OBJS += frontends/verilog/verilog_error.o
OBJS += frontends/verilog/const2ast.o