From 3900eadde0a99aac21b2c5d7edb88ee3f5ed5865 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Thu, 13 Feb 2025 12:53:26 +0100 Subject: [PATCH] CMake: handle some conditional compiling --- CMakeLists.txt | 10 ++++++++++ frontends/rpc/CMakeLists.txt | 12 +++++++----- kernel/CMakeLists.txt | 9 +++++++-- libs/CMakeLists.txt | 14 +++++++++----- passes/cmds/CMakeLists.txt | 9 +++++++-- passes/sat/CMakeLists.txt | 14 ++++++++++++-- passes/techmap/CMakeLists.txt | 21 ++++++++++++++------- 7 files changed, 66 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 51987a361..90da4acc3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -36,6 +36,11 @@ option(ENABLE_CCACHE "Enable building with CCACHE" OFF) option(ENABLE_SCCACHE "Enable building with SCCACHE" OFF) option(ENABLE_FUNCTIONAL_TESTS "Enable functional tests" OFF) +# Needed for environments that can't run executables (i.e. emscripten, wasm) +option(DISABLE_SPAWN "Disable executable spawn" OFF) +# Needed for environments that don't have proper thread support (i.e. emscripten, wasm--for now) +option(DISABLE_ABC_THREADS "Disable ABC threading support" OFF) + set(CXXSTD 17 CACHE STRING "C++ standard to use for the build") @@ -101,6 +106,7 @@ endif() if (ENABLE_ZLIB) find_package(ZLIB REQUIRED) + add_compile_definitions(YOSYS_ENABLE_ZLIB) target_link_libraries(yosys PRIVATE ZLIB::ZLIB) endif() @@ -146,6 +152,10 @@ if (ENABLE_PLUGINS) target_link_libraries(yosys PRIVATE ${LIBFFI_LIBRARY}) endif() +if (DISABLE_SPAWN) + add_compile_definitions(YOSYS_DISABLE_SPAWN) +endif() + add_subdirectory(kernel) add_subdirectory(libs) diff --git a/frontends/rpc/CMakeLists.txt b/frontends/rpc/CMakeLists.txt index a8c566df6..c0a352a0b 100644 --- a/frontends/rpc/CMakeLists.txt +++ b/frontends/rpc/CMakeLists.txt @@ -1,7 +1,9 @@ -add_library(yosys_frontends_rpc INTERFACE) +if (NOT DISABLE_SPAWN) + add_library(yosys_frontends_rpc INTERFACE) -target_sources(yosys_frontends_rpc INTERFACE - rpc_frontend.cc -) + target_sources(yosys_frontends_rpc INTERFACE + rpc_frontend.cc + ) -target_link_libraries(yosys PRIVATE yosys_frontends_rpc) + target_link_libraries(yosys PRIVATE yosys_frontends_rpc) +endif() diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 9e2cc835a..df08b0b23 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -44,8 +44,6 @@ target_sources(yosys_kernel INTERFACE ffmerge.h fmt.cc fmt.h - fstdata.cc - fstdata.h functional.cc functional.h hashlib.h @@ -82,4 +80,11 @@ target_sources(yosys_kernel INTERFACE yw.h ) +if (ENABLE_ZLIB) +target_sources(yosys_kernel INTERFACE + fstdata.cc + fstdata.h +) +endif() + target_link_libraries(yosys PRIVATE yosys_kernel) diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt index f1d80af87..7a0739392 100644 --- a/libs/CMakeLists.txt +++ b/libs/CMakeLists.txt @@ -48,6 +48,14 @@ target_sources(yosys_libs INTERFACE minisat/Vec.h minisat/XAlloc.h + subcircuit/subcircuit.cc + subcircuit/subcircuit.h + + cxxopts/include/cxxopts.hpp +) + +if (ENABLE_ZLIB) +target_sources(yosys_libs INTERFACE fst/config.h fst/fastlz.cc fst/fastlz.h @@ -56,11 +64,7 @@ target_sources(yosys_libs INTERFACE fst/fst_win_unistd.h fst/lz4.cc fst/lz4.h - - subcircuit/subcircuit.cc - subcircuit/subcircuit.h - - cxxopts/include/cxxopts.hpp ) +endif() target_link_libraries(yosys PRIVATE yosys_libs) diff --git a/passes/cmds/CMakeLists.txt b/passes/cmds/CMakeLists.txt index 4bb31879f..11db66d4b 100644 --- a/passes/cmds/CMakeLists.txt +++ b/passes/cmds/CMakeLists.txt @@ -1,7 +1,6 @@ add_library(yosys_passes_cmds INTERFACE) target_sources(yosys_passes_cmds INTERFACE - exec.cc add.cc delete.cc design.cc @@ -37,7 +36,6 @@ target_sources(yosys_passes_cmds INTERFACE chtype.cc blackbox.cc ltp.cc - bugpoint.cc scratchpad.cc logger.cc printattrs.cc @@ -53,4 +51,11 @@ target_sources(yosys_passes_cmds INTERFACE setenv.cc ) +if (NOT DISABLE_SPAWN) +target_sources(yosys_passes_cmds INTERFACE + exec.cc + bugpoint.cc +) +endif() + target_link_libraries(yosys PRIVATE yosys_passes_cmds) diff --git a/passes/sat/CMakeLists.txt b/passes/sat/CMakeLists.txt index 2d3db1508..fff9fe045 100644 --- a/passes/sat/CMakeLists.txt +++ b/passes/sat/CMakeLists.txt @@ -4,7 +4,6 @@ target_sources(yosys_passes_sat INTERFACE sat.cc freduce.cc eval.cc - sim.cc miter.cc expose.cc assertpmux.cc @@ -17,9 +16,20 @@ target_sources(yosys_passes_sat INTERFACE cutpoint.cc fminit.cc recover_names.cc - qbfsat.cc synthprop.cc ) +if (ENABLE_ZLIB) +target_sources(yosys_passes_sat INTERFACE + sim.cc +) +endif() + +if (NOT DISABLE_SPAWN) +target_sources(yosys_passes_sat INTERFACE + qbfsat.cc +) +endif() + target_link_libraries(yosys PRIVATE yosys_passes_sat) diff --git a/passes/techmap/CMakeLists.txt b/passes/techmap/CMakeLists.txt index 1f8a1bdc0..810f96cdc 100644 --- a/passes/techmap/CMakeLists.txt +++ b/passes/techmap/CMakeLists.txt @@ -8,11 +8,6 @@ target_sources(yosys_passes_techmap INTERFACE maccmap.cc booth.cc libparse.cc - abc.cc - abc9.cc - abc9_exe.cc - abc9_ops.cc - abc_new.cc iopadmap.cc clkbufmap.cc hilomap.cc @@ -46,7 +41,19 @@ target_sources(yosys_passes_techmap INTERFACE clockgate.cc ) +if (ENABLE_ABC) + target_sources(yosys_passes_techmap INTERFACE + abc.cc + abc9.cc + abc9_exe.cc + abc9_ops.cc + abc_new.cc + ) +endif() + target_link_libraries(yosys PRIVATE yosys_passes_techmap) -set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}) -add_executable(yosys-filterlib filterlib.cc) +if (NOT DISABLE_SPAWN) + set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}) + add_executable(yosys-filterlib filterlib.cc) +endif()