From b6e5bf13245241fb129f27226f909c41ac479196 Mon Sep 17 00:00:00 2001 From: Nick Allison <99363282+nickrallison@users.noreply.github.com> Date: Mon, 30 Jun 2025 15:13:44 -0600 Subject: [PATCH 1/6] CMake: Rebase From Main & Tests Working --- CMakeLists.txt | 155 +++++++++++++++++++++++++++++ build.sh | 20 ++++ cmake/TestFiles.cmake | 61 ++++++++++++ flake.nix | 4 +- kernel/CMakeLists.txt | 3 + passes/cmds/CMakeLists.txt | 2 + passes/pmgen/CMakeLists.txt | 94 ++++++++--------- passes/techmap/CMakeLists.txt | 2 + techlibs/quicklogic/CMakeLists.txt | 1 + 9 files changed, 294 insertions(+), 48 deletions(-) create mode 100644 build.sh create mode 100644 cmake/TestFiles.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ed16dc7d8f..2f76cd1fb1e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -283,3 +283,158 @@ if (ENABLE_ZLIB) endif() set_property(SOURCE kernel/log.cc APPEND PROPERTY COMPILE_DEFINITIONS YOSYS_SRC="${PROJECT_SOURCE_DIR}") + +#### yosys-config setup #### +# compiler +get_filename_component(_CXX_BASENAME "${CMAKE_CXX_COMPILER}" NAME) +set(YOSYS_CFG_CXX "${_CXX_BASENAME}" + CACHE STRING "C++ compiler that appears in yosys-config") + +# compile flags +set(_CFG_CXXFLAGS + -Wall -Wextra -ggdb + "-I\"${CMAKE_INSTALL_PREFIX}/share/yosys/include\"" + -MD -MP -D_YOSYS_ -fPIC + -I${CMAKE_INSTALL_PREFIX}/include + -std=c++${CXXSTD} -O3) + +if (ENABLE_READLINE) + list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_READLINE) +endif() +if (ENABLE_PLUGINS) + list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_PLUGINS) +endif() +if (ENABLE_GLOB) + list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_GLOB) +endif() +if (ENABLE_ZLIB) + list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_ZLIB) +endif() +if (ENABLE_TCL) + list(APPEND _CFG_CXXFLAGS -I${TCL_INCLUDE_PATH} -DYOSYS_ENABLE_TCL) +endif() +if (ENABLE_ABC) + list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_ABC) +endif() +if (ENABLE_COVER) + list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_COVER) +endif() + +string (REPLACE ";" " " YOSYS_CFG_CXXFLAGS "${_CFG_CXXFLAGS}") + +# link flags +set(YOSYS_CFG_LINKFLAGS "-rdynamic" CACHE STRING "link flags for yosys-config") + +# libraries +set(_CFG_LIBS -lstdc++ -lm) +if (NOT (${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")) + list(APPEND _CFG_LIBS -lrt) +endif() +if (ENABLE_READLINE) + list(APPEND _CFG_LIBS -lreadline) +endif() +if (ENABLE_PLUGINS) + list(APPEND _CFG_LIBS -lffi) + if (NOT APPLE) + list(APPEND _CFG_LIBS -ldl) + endif() +endif() +if (ENABLE_ZLIB) + list(APPEND _CFG_LIBS -lz) +endif() +if (ENABLE_TCL) + get_filename_component(_TCL "${TCL_LIBRARY}" NAME_WE) + string(REGEX REPLACE "^lib" "" _TCL "${_TCL}") + list(APPEND _CFG_LIBS "-l${_TCL}") +endif() +string (REPLACE ";" " " YOSYS_CFG_LIBS "${_CFG_LIBS}") + +# bindir / datadir (installation paths) +set(YOSYS_CFG_PREFIX "/usr/local" + CACHE STRING "prefix that yosys-config reports") + +set(YOSYS_CFG_BINDIR "${YOSYS_CFG_PREFIX}/bin") +set(YOSYS_CFG_DATDIR "${YOSYS_CFG_PREFIX}/share/yosys") + +# abort if something is missing +foreach(var YOSYS_CFG_CXX YOSYS_CFG_CXXFLAGS YOSYS_CFG_LINKFLAGS + YOSYS_CFG_LIBS YOSYS_CFG_BINDIR YOSYS_CFG_DATDIR) + if("${${var}}" STREQUAL "") + message(FATAL_ERROR "${var} is empty – cannot create yosys-config") + endif() +endforeach() + +set(CXX "${YOSYS_CFG_CXX}") +set(CXXFLAGS "${YOSYS_CFG_CXXFLAGS}") +set(LINKFLAGS "${YOSYS_CFG_LINKFLAGS}") +set(LIBS "${YOSYS_CFG_LIBS}") +set(BINDIR "${YOSYS_CFG_BINDIR}") +set(DATDIR "${YOSYS_CFG_DATDIR}") + +configure_file(misc/yosys-config.in ${CMAKE_BINARY_DIR}/yosys-config @ONLY) +file(CHMOD ${CMAKE_BINARY_DIR}/yosys-config + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE) + +add_custom_target(yosys-config-copy ALL + DEPENDS ${CMAKE_BINARY_DIR}/yosys-config) + +#### INSTALL #### +install(TARGETS yosys + RUNTIME DESTINATION .) + +if (ENABLE_ABC) + install(PROGRAMS $ + DESTINATION . + RENAME yosys-abc) +endif() + +install(PROGRAMS ${CMAKE_BINARY_DIR}/yosys-config DESTINATION .) + +#### TESTING #### +include(cmake/TestFiles.cmake) +enable_testing() + +set(_YOSYS_TEST_ENV + "PATH=${PROJECT_SOURCE_DIR}:$ENV{PATH};") + +foreach(dir IN LISTS SH_TEST_DIRS) + string(REPLACE "/" "_" name "${dir}") + add_test( + NAME seed-tests.${name} + COMMAND bash -c + "cd \"${PROJECT_SOURCE_DIR}/${dir}\" && bash run-test.sh ${SEEDOPT}" + ) + set_tests_properties(seed-tests.${name} PROPERTIES + ENVIRONMENT "${_YOSYS_TEST_ENV}" + DEPENDS yosys) +endforeach() + +foreach(dir IN LISTS SH_ABC_TEST_DIRS) + string(REPLACE "/" "_" name "${dir}") + add_test( + NAME abcopt-tests.${name} + COMMAND bash -c + "cd \"${PROJECT_SOURCE_DIR}/${dir}\" && bash run-test.sh ${ABCOPT} ${SEEDOPT}" + ) + set_tests_properties(abcopt-tests.${name} PROPERTIES + ENVIRONMENT "${_YOSYS_TEST_ENV}" + DEPENDS yosys) +endforeach() + +foreach(dir IN LISTS MK_TEST_DIRS) + string(REPLACE "/" "_" name "${dir}") + add_test( + NAME makefile-tests.${name} + COMMAND bash -c + " + cd \"${PROJECT_SOURCE_DIR}/${dir}\" && + bash run-test.sh && + ${CMAKE_MAKE_PROGRAM} -f run-test.mk + " + ) + set_tests_properties(makefile-tests.${name} PROPERTIES + ENVIRONMENT "${_YOSYS_TEST_ENV}" + DEPENDS yosys) +endforeach() diff --git a/build.sh b/build.sh new file mode 100644 index 00000000000..269263ba8e4 --- /dev/null +++ b/build.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +# This script builds the project using CMake in a way that is compatible with +# the existing Makefile build system. + +# 1. Initialize the submodules +git submodule update --init --recursive + +# 2. Build the project +mkdir -p build +cmake -B build +cmake --build build --parallel $(nproc) + +# 3. Install the project into test install dir +cmake --install build --prefix . + +# 4. Test the project +# ctest -j$(nproc) --test-dir build --output-on-failure +# Or Rerun Failed Tests +# ctest -j$(nproc) --test-dir build --rerun-failed --output-on-failure diff --git a/cmake/TestFiles.cmake b/cmake/TestFiles.cmake new file mode 100644 index 00000000000..476d937408b --- /dev/null +++ b/cmake/TestFiles.cmake @@ -0,0 +1,61 @@ +set(MK_TEST_DIRS + tests/arch/anlogic + tests/arch/ecp5 + tests/arch/efinix + tests/arch/gatemate + tests/arch/gowin + tests/arch/ice40 + tests/arch/intel_alm + tests/arch/machxo2 + tests/arch/microchip + tests/arch/nanoxplore + tests/arch/nexus + tests/arch/quicklogic/pp3 + tests/arch/quicklogic/qlf_k6n10f + tests/arch/xilinx + tests/opt + tests/sat + tests/sim + tests/svtypes + tests/techmap + tests/various +) +if(ENABLE_VERIFIC AND NOT YOSYS_NOVERIFIC) + list(APPEND MK_TEST_DIRS tests/verific) +endif() +list(APPEND MK_TEST_DIRS tests/verilog) + + +set(SH_TEST_DIRS + tests/simple + tests/simple_abc9 + tests/hana + tests/asicworld + tests/share + tests/opt_share + tests/fsm + tests/memlib + tests/bram + tests/svinterfaces + tests/xprop + tests/select + tests/peepopt + tests/proc + tests/blif + tests/arch + tests/rpc + tests/memfile + tests/fmt + tests/cxxrtl + tests/liberty +) +if(ENABLE_FUNCTIONAL_TESTS) + list(APPEND SH_TEST_DIRS tests/functional) +endif() + + +set(SH_ABC_TEST_DIRS + tests/memories + tests/aiger + tests/alumacc +) \ No newline at end of file diff --git a/flake.nix b/flake.nix index 19ba59f17c4..f0c25561cae 100644 --- a/flake.nix +++ b/flake.nix @@ -18,7 +18,7 @@ yosys = pkgs.clangStdenv.mkDerivation { name = "yosys"; src = ./. ; - buildInputs = with pkgs; [ clang bison flex libffi tcl readline python3 zlib git pkg-configUpstream llvmPackages.bintools ]; + buildInputs = with pkgs; [ clang bison flex libffi tcl tk readline python3 zlib git pkg-configUpstream llvmPackages.bintools ]; checkInputs = with pkgs; [ gtest ]; propagatedBuildInputs = [ abc-verifier ]; preConfigure = "make config-clang"; @@ -41,7 +41,7 @@ packages.default = yosys; defaultPackage = yosys; devShell = pkgs.mkShell { - buildInputs = with pkgs; [ clang llvmPackages.bintools gcc bison flex libffi tcl readline python3 zlib git gtest abc-verifier verilog boost python3Packages.boost ]; + buildInputs = with pkgs; [ gtkwave cmake clang llvmPackages.bintools gcc bison flex libffi tcl tk readline python3 zlib git gtest abc-verifier verilog boost python3Packages.boost ]; }; } ); diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index df08b0b2386..17fbcb24076 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -46,7 +46,10 @@ target_sources(yosys_kernel INTERFACE fmt.h functional.cc functional.h + gzip.cc + gzip.h hashlib.h + io.cc json.cc json.h log.cc diff --git a/passes/cmds/CMakeLists.txt b/passes/cmds/CMakeLists.txt index 11db66d4b09..b1de7073170 100644 --- a/passes/cmds/CMakeLists.txt +++ b/passes/cmds/CMakeLists.txt @@ -49,6 +49,8 @@ target_sources(yosys_passes_cmds INTERFACE portarcs.cc wrapcell.cc setenv.cc + test_select.cc + abstract.cc ) if (NOT DISABLE_SPAWN) diff --git a/passes/pmgen/CMakeLists.txt b/passes/pmgen/CMakeLists.txt index 71251d017dd..f435f6b5835 100644 --- a/passes/pmgen/CMakeLists.txt +++ b/passes/pmgen/CMakeLists.txt @@ -1,69 +1,71 @@ add_library(yosys_passes_pmgen INTERFACE) -function(pmgen_command _name) +function(pmgen_command _name _path) add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_name}_pm.h - COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py -o ${CMAKE_CURRENT_BINARY_DIR}/${_name}_pm.h -p ${_name} ${CMAKE_CURRENT_SOURCE_DIR}/${_name}.pmg - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py ${CMAKE_CURRENT_SOURCE_DIR}/${_name}.pmg - COMMENT "Generating passes/pmgen/${_name}_pm.h..." + OUTPUT ${CMAKE_BINARY_DIR}/${_path}/${_name}_pm.h + 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 + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py ${CMAKE_SOURCE_DIR}/${_path}/${_name}.pmg + COMMENT "Generating ${_path}/${_name}_pm.h..." ) endfunction() -pmgen_command(test_pmgen) -pmgen_command(ice40_dsp) -pmgen_command(ice40_wrapcarry) -pmgen_command(xilinx_dsp) -pmgen_command(xilinx_dsp48a) -pmgen_command(xilinx_dsp_CREG) -pmgen_command(xilinx_dsp_cascade) -pmgen_command(microchip_dsp) -pmgen_command(microchip_dsp_CREG) -pmgen_command(microchip_dsp_cascade) -pmgen_command(xilinx_srl) +pmgen_command(test_pmgen passes/pmgen) +pmgen_command(ice40_dsp techlibs/ice40) +pmgen_command(ice40_wrapcarry techlibs/ice40) +pmgen_command(xilinx_dsp techlibs/xilinx) +pmgen_command(xilinx_dsp48a techlibs/xilinx) +pmgen_command(xilinx_dsp_CREG techlibs/xilinx) +pmgen_command(xilinx_dsp_cascade techlibs/xilinx) +pmgen_command(microchip_dsp techlibs/microchip) +pmgen_command(microchip_dsp_CREG techlibs/microchip) +pmgen_command(microchip_dsp_cascade techlibs/microchip) +pmgen_command(xilinx_srl techlibs/xilinx) add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/peepopt_pm.h - COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py -o ${CMAKE_CURRENT_BINARY_DIR}/peepopt_pm.h -p peepopt - ${CMAKE_CURRENT_SOURCE_DIR}/peepopt_shiftmul_right.pmg - ${CMAKE_CURRENT_SOURCE_DIR}/peepopt_shiftmul_left.pmg - ${CMAKE_CURRENT_SOURCE_DIR}/peepopt_shiftadd.pmg - ${CMAKE_CURRENT_SOURCE_DIR}/peepopt_muldiv.pmg - ${CMAKE_CURRENT_SOURCE_DIR}/peepopt_formal_clockgateff.pmg + OUTPUT ${CMAKE_BINARY_DIR}/passes/opt/peepopt_pm.h + COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py -o ${CMAKE_BINARY_DIR}/passes/opt/peepopt_pm.h -p peepopt + ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftmul_right.pmg + ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftmul_left.pmg + ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftadd.pmg + ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_muldiv.pmg + ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_muldiv_c.pmg + ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_formal_clockgateff.pmg DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py - ${CMAKE_CURRENT_SOURCE_DIR}/peepopt_shiftmul_right.pmg - ${CMAKE_CURRENT_SOURCE_DIR}/peepopt_shiftmul_left.pmg - ${CMAKE_CURRENT_SOURCE_DIR}/peepopt_shiftadd.pmg - ${CMAKE_CURRENT_SOURCE_DIR}/peepopt_muldiv.pmg - ${CMAKE_CURRENT_SOURCE_DIR}/peepopt_formal_clockgateff.pmg + ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftmul_right.pmg + ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftmul_left.pmg + ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftadd.pmg + ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_muldiv.pmg + ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_muldiv_c.pmg + ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_formal_clockgateff.pmg COMMENT "Generating passes/pmgen/peepopt_pm.h..." ) target_sources(yosys_passes_pmgen INTERFACE test_pmgen.cc - ice40_dsp.cc - ice40_wrapcarry.cc - xilinx_dsp.cc - microchip_dsp.cc - peepopt.cc - xilinx_srl.cc + ${CMAKE_SOURCE_DIR}/techlibs/ice40/ice40_dsp.cc + ${CMAKE_SOURCE_DIR}/techlibs/ice40/ice40_wrapcarry.cc + ${CMAKE_SOURCE_DIR}/techlibs/xilinx/xilinx_dsp.cc + ${CMAKE_SOURCE_DIR}/techlibs/microchip/microchip_dsp.cc + ${CMAKE_SOURCE_DIR}/passes/opt/peepopt.cc + ${CMAKE_SOURCE_DIR}/techlibs/xilinx/xilinx_srl.cc ) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/test_pmgen_pm.h) +target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/passes/pmgen/test_pmgen_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/ice40_dsp_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/ice40_wrapcarry_pm.h) +target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/ice40/ice40_dsp_pm.h) +target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/ice40/ice40_wrapcarry_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/xilinx_dsp_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/xilinx_dsp48a_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/xilinx_dsp_CREG_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/xilinx_dsp_cascade_pm.h) +target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_pm.h) +target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_dsp48a_pm.h) +target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_CREG_pm.h) +target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_cascade_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/microchip_dsp_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/microchip_dsp_CREG_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/microchip_dsp_cascade_pm.h) +target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/microchip/microchip_dsp_pm.h) +target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/microchip/microchip_dsp_CREG_pm.h) +target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/microchip/microchip_dsp_cascade_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/peepopt_pm.h) +target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/passes/opt/peepopt_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/xilinx_srl_pm.h) +target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_srl_pm.h) target_link_libraries(yosys PRIVATE yosys_passes_pmgen) diff --git a/passes/techmap/CMakeLists.txt b/passes/techmap/CMakeLists.txt index 810f96cdc71..89ab938c2cd 100644 --- a/passes/techmap/CMakeLists.txt +++ b/passes/techmap/CMakeLists.txt @@ -7,6 +7,7 @@ target_sources(yosys_passes_techmap INTERFACE dfflibmap.cc maccmap.cc booth.cc + libcache.cc libparse.cc iopadmap.cc clkbufmap.cc @@ -39,6 +40,7 @@ target_sources(yosys_passes_techmap INTERFACE extractinv.cc cellmatch.cc clockgate.cc + constmap.cc ) if (ENABLE_ABC) diff --git a/techlibs/quicklogic/CMakeLists.txt b/techlibs/quicklogic/CMakeLists.txt index 971a335062c..50d73965348 100644 --- a/techlibs/quicklogic/CMakeLists.txt +++ b/techlibs/quicklogic/CMakeLists.txt @@ -18,6 +18,7 @@ target_sources(yosys_techlibs_quicklogic INTERFACE ql_dsp_simd.cc ql_dsp_io_regs.cc ql_dsp_macc.cc + ql_ioff.cc ) add_custom_command( From 79f7cfa85ac736167b248897d5e57bbc295bbae1 Mon Sep 17 00:00:00 2001 From: Nick Allison <99363282+nickrallison@users.noreply.github.com> Date: Thu, 3 Jul 2025 18:57:18 -0600 Subject: [PATCH 2/6] CMake: Get static Lib Working to link libyosys / executable --- CMakeLists.txt | 55 +++++++++++++------- backends/aiger/CMakeLists.txt | 2 +- backends/aiger2/CMakeLists.txt | 2 +- backends/blif/CMakeLists.txt | 2 +- backends/btor/CMakeLists.txt | 2 +- backends/cxxrtl/CMakeLists.txt | 2 +- backends/edif/CMakeLists.txt | 2 +- backends/firrtl/CMakeLists.txt | 2 +- backends/functional/CMakeLists.txt | 2 +- backends/intersynth/CMakeLists.txt | 2 +- backends/jny/CMakeLists.txt | 2 +- backends/json/CMakeLists.txt | 2 +- backends/rtlil/CMakeLists.txt | 2 +- backends/simplec/CMakeLists.txt | 2 +- backends/smt2/CMakeLists.txt | 2 +- backends/smv/CMakeLists.txt | 2 +- backends/spice/CMakeLists.txt | 2 +- backends/table/CMakeLists.txt | 2 +- backends/verilog/CMakeLists.txt | 2 +- frontends/aiger/CMakeLists.txt | 2 +- frontends/aiger2/CMakeLists.txt | 2 +- frontends/ast/CMakeLists.txt | 2 +- frontends/blif/CMakeLists.txt | 2 +- frontends/json/CMakeLists.txt | 2 +- frontends/liberty/CMakeLists.txt | 2 +- frontends/rpc/CMakeLists.txt | 2 +- frontends/rtlil/CMakeLists.txt | 2 +- frontends/verific/CMakeLists.txt | 2 +- frontends/verilog/CMakeLists.txt | 2 +- kernel/CMakeLists.txt | 6 +-- libs/CMakeLists.txt | 2 +- passes/cmds/CMakeLists.txt | 2 +- passes/equiv/CMakeLists.txt | 2 +- passes/fsm/CMakeLists.txt | 2 +- passes/hierarchy/CMakeLists.txt | 2 +- passes/memory/CMakeLists.txt | 2 +- passes/opt/CMakeLists.txt | 2 +- passes/pmgen/CMakeLists.txt | 78 ++++++++++++++++------------- passes/proc/CMakeLists.txt | 2 +- passes/sat/CMakeLists.txt | 2 +- passes/techmap/CMakeLists.txt | 2 +- passes/tests/CMakeLists.txt | 2 +- techlibs/achronix/CMakeLists.txt | 2 +- techlibs/anlogic/CMakeLists.txt | 2 +- techlibs/common/CMakeLists.txt | 2 +- techlibs/coolrunner2/CMakeLists.txt | 2 +- techlibs/easic/CMakeLists.txt | 2 +- techlibs/ecp5/CMakeLists.txt | 2 +- techlibs/efinix/CMakeLists.txt | 2 +- techlibs/fabulous/CMakeLists.txt | 2 +- techlibs/gatemate/CMakeLists.txt | 4 +- techlibs/gowin/CMakeLists.txt | 2 +- techlibs/greenpak4/CMakeLists.txt | 2 +- techlibs/ice40/CMakeLists.txt | 2 +- techlibs/intel/CMakeLists.txt | 2 +- techlibs/intel_alm/CMakeLists.txt | 2 +- techlibs/lattice/CMakeLists.txt | 2 +- techlibs/microchip/CMakeLists.txt | 2 +- techlibs/nanoxplore/CMakeLists.txt | 2 +- techlibs/nexus/CMakeLists.txt | 2 +- techlibs/quicklogic/CMakeLists.txt | 18 ++++--- techlibs/sf2/CMakeLists.txt | 2 +- techlibs/xilinx/CMakeLists.txt | 2 +- 63 files changed, 153 insertions(+), 124 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f76cd1fb1e..4de55eb07c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,7 @@ cmake_minimum_required(VERSION 3.13) project(yosys LANGUAGES CXX C) set(YOSYS_VER "0.50+1") +set(CMAKE_POSITION_INDEPENDENT_CODE ON) # features (the more the better) @@ -53,12 +54,12 @@ if (ENABLE_ABC) add_subdirectory(abc EXCLUDE_FROM_ALL) add_custom_command( - OUTPUT ${CMAKE_BINARY_DIR}/yosys-abc + OUTPUT ${yosys_BINARY_DIR}/yosys-abc DEPENDS abc # Depend on the target, not the generator expression - COMMAND ${CMAKE_COMMAND} -E copy $ ${CMAKE_BINARY_DIR}/yosys-abc + COMMAND ${CMAKE_COMMAND} -E copy $ ${yosys_BINARY_DIR}/yosys-abc ) - add_custom_target(yosys-abc-copy ALL DEPENDS ${CMAKE_BINARY_DIR}/yosys-abc) + add_custom_target(yosys-abc-copy ALL DEPENDS ${yosys_BINARY_DIR}/yosys-abc) endif() set(CMAKE_CXX_STANDARD ${CXXSTD}) @@ -73,13 +74,18 @@ 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_) +add_library(yosys STATIC) +#target_include_directories(yosys PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) +#target_include_directories(yosys PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) +#target_compile_definitions(yosys PUBLIC _YOSYS_) include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) +target_include_directories(yosys PUBLIC + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} +) add_compile_definitions(_YOSYS_) +target_compile_definitions(yosys PUBLIC _YOSYS_) if (ENABLE_READLINE AND ENABLE_EDITLINE) message(FATAL_ERROR "Not possible to enable both ENABLE_READLINE and ENABLE_EDITLINE") @@ -88,26 +94,26 @@ endif() if (ENABLE_READLINE) find_package(Readline REQUIRED) add_compile_definitions(YOSYS_ENABLE_READLINE) - target_link_libraries(yosys PRIVATE ${READLINE_LIBRARY}) + target_link_libraries(yosys PUBLIC ${READLINE_LIBRARY}) endif() if (ENABLE_EDITLINE) find_package(Editline REQUIRED) add_compile_definitions(YOSYS_ENABLE_EDITLINE) - target_link_libraries(yosys PRIVATE ${EDITLINE_LIBRARY}) + target_link_libraries(yosys PUBLIC ${EDITLINE_LIBRARY}) endif() if (ENABLE_TCL) find_package(TCL 8.6 REQUIRED) add_compile_definitions(YOSYS_ENABLE_TCL) - target_include_directories(yosys PRIVATE ${TCL_INCLUDE_PATH}) - target_link_libraries(yosys PRIVATE ${TCL_LIBRARY}) + target_include_directories(yosys PUBLIC ${TCL_INCLUDE_PATH}) + target_link_libraries(yosys PUBLIC ${TCL_LIBRARY}) endif() if (ENABLE_ZLIB) find_package(ZLIB REQUIRED) add_compile_definitions(YOSYS_ENABLE_ZLIB) - target_link_libraries(yosys PRIVATE ZLIB::ZLIB) + target_link_libraries(yosys PUBLIC ZLIB::ZLIB) endif() if (ENABLE_COVER) @@ -140,7 +146,7 @@ if (ENABLE_ABC) add_compile_definitions(YOSYS_ENABLE_ABC) if (LINK_ABC) add_compile_definitions(YOSYS_LINK_ABC) - target_link_libraries(yosys PRIVATE $) + target_link_libraries(yosys PUBLIC $) add_dependencies(yosys libabc) endif() endif() @@ -149,7 +155,7 @@ if (ENABLE_PLUGINS) find_package(LibFFI REQUIRED) add_compile_definitions(YOSYS_ENABLE_PLUGINS) include_directories(${LIBFFI_INCLUDE_DIR}) - target_link_libraries(yosys PRIVATE ${LIBFFI_LIBRARY}) + target_link_libraries(yosys PUBLIC ${LIBFFI_LIBRARY}) endif() if (DISABLE_SPAWN) @@ -284,6 +290,19 @@ endif() set_property(SOURCE kernel/log.cc APPEND PROPERTY COMPILE_DEFINITIONS YOSYS_SRC="${PROJECT_SOURCE_DIR}") +if (ENABLE_LIBYOSYS) + add_library(yosys_shared SHARED) + target_link_libraries(yosys_shared PUBLIC yosys) + set_target_properties(yosys_shared PROPERTIES OUTPUT_NAME yosys) + install(TARGETS yosys_shared + LIBRARY DESTINATION .) +endif() + +add_executable(yosys_exe + kernel/driver.cc) +target_link_libraries(yosys_exe PUBLIC yosys) +set_target_properties(yosys_exe PROPERTIES OUTPUT_NAME yosys) + #### yosys-config setup #### # compiler get_filename_component(_CXX_BASENAME "${CMAKE_CXX_COMPILER}" NAME) @@ -371,14 +390,14 @@ set(LIBS "${YOSYS_CFG_LIBS}") set(BINDIR "${YOSYS_CFG_BINDIR}") set(DATDIR "${YOSYS_CFG_DATDIR}") -configure_file(misc/yosys-config.in ${CMAKE_BINARY_DIR}/yosys-config @ONLY) -file(CHMOD ${CMAKE_BINARY_DIR}/yosys-config +configure_file(misc/yosys-config.in ${yosys_BINARY_DIR}/yosys-config @ONLY) +file(CHMOD ${yosys_BINARY_DIR}/yosys-config PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE) add_custom_target(yosys-config-copy ALL - DEPENDS ${CMAKE_BINARY_DIR}/yosys-config) + DEPENDS ${yosys_BINARY_DIR}/yosys-config) #### INSTALL #### install(TARGETS yosys @@ -390,7 +409,7 @@ if (ENABLE_ABC) RENAME yosys-abc) endif() -install(PROGRAMS ${CMAKE_BINARY_DIR}/yosys-config DESTINATION .) +install(PROGRAMS ${yosys_BINARY_DIR}/yosys-config DESTINATION .) #### TESTING #### include(cmake/TestFiles.cmake) diff --git a/backends/aiger/CMakeLists.txt b/backends/aiger/CMakeLists.txt index 98ba99e0f5f..fe588ca74b5 100644 --- a/backends/aiger/CMakeLists.txt +++ b/backends/aiger/CMakeLists.txt @@ -5,4 +5,4 @@ target_sources(yosys_backends_aiger INTERFACE xaiger.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_aiger) +target_link_libraries(yosys PUBLIC yosys_backends_aiger) diff --git a/backends/aiger2/CMakeLists.txt b/backends/aiger2/CMakeLists.txt index b207278d27d..c9eb8c68c77 100644 --- a/backends/aiger2/CMakeLists.txt +++ b/backends/aiger2/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_backends_aiger2 INTERFACE aiger.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_aiger2) +target_link_libraries(yosys PUBLIC yosys_backends_aiger2) diff --git a/backends/blif/CMakeLists.txt b/backends/blif/CMakeLists.txt index e662b3ba3f0..a98108a9b2c 100644 --- a/backends/blif/CMakeLists.txt +++ b/backends/blif/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_backends_blif INTERFACE blif.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_blif) +target_link_libraries(yosys PUBLIC yosys_backends_blif) diff --git a/backends/btor/CMakeLists.txt b/backends/btor/CMakeLists.txt index 269db2a8909..8c13600551d 100644 --- a/backends/btor/CMakeLists.txt +++ b/backends/btor/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_backends_btor INTERFACE btor.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_btor) +target_link_libraries(yosys PUBLIC yosys_backends_btor) diff --git a/backends/cxxrtl/CMakeLists.txt b/backends/cxxrtl/CMakeLists.txt index 1ad64817049..8c08ff4ecb3 100644 --- a/backends/cxxrtl/CMakeLists.txt +++ b/backends/cxxrtl/CMakeLists.txt @@ -4,7 +4,7 @@ target_sources(yosys_backends_cxxrtl INTERFACE cxxrtl_backend.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_cxxrtl) +target_link_libraries(yosys PUBLIC yosys_backends_cxxrtl) add_include_file("backends/cxxrtl/runtime/cxxrtl" "runtime/cxxrtl/cxxrtl.h") add_include_file("backends/cxxrtl/runtime/cxxrtl" "runtime/cxxrtl/cxxrtl_vcd.h") diff --git a/backends/edif/CMakeLists.txt b/backends/edif/CMakeLists.txt index 1a45ad0607c..9b86ac801b7 100644 --- a/backends/edif/CMakeLists.txt +++ b/backends/edif/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_backends_edif INTERFACE edif.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_edif) +target_link_libraries(yosys PUBLIC yosys_backends_edif) diff --git a/backends/firrtl/CMakeLists.txt b/backends/firrtl/CMakeLists.txt index 50d3bdfa233..45c56184da1 100644 --- a/backends/firrtl/CMakeLists.txt +++ b/backends/firrtl/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_backends_firrtl INTERFACE firrtl.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_firrtl) +target_link_libraries(yosys PUBLIC yosys_backends_firrtl) diff --git a/backends/functional/CMakeLists.txt b/backends/functional/CMakeLists.txt index cee0974eb64..4c87e488464 100644 --- a/backends/functional/CMakeLists.txt +++ b/backends/functional/CMakeLists.txt @@ -7,4 +7,4 @@ target_sources(yosys_backends_functional INTERFACE test_generic.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_functional) +target_link_libraries(yosys PUBLIC yosys_backends_functional) diff --git a/backends/intersynth/CMakeLists.txt b/backends/intersynth/CMakeLists.txt index 0ea63a68ae8..666d399e0c7 100644 --- a/backends/intersynth/CMakeLists.txt +++ b/backends/intersynth/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_backends_intersynth INTERFACE intersynth.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_intersynth) +target_link_libraries(yosys PUBLIC yosys_backends_intersynth) diff --git a/backends/jny/CMakeLists.txt b/backends/jny/CMakeLists.txt index 2dda235884e..66065c45749 100644 --- a/backends/jny/CMakeLists.txt +++ b/backends/jny/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_backends_jny INTERFACE jny.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_jny) +target_link_libraries(yosys PUBLIC yosys_backends_jny) diff --git a/backends/json/CMakeLists.txt b/backends/json/CMakeLists.txt index c0d7f1f5fb0..ce14ae3407c 100644 --- a/backends/json/CMakeLists.txt +++ b/backends/json/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_backends_json INTERFACE json.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_json) +target_link_libraries(yosys PUBLIC yosys_backends_json) diff --git a/backends/rtlil/CMakeLists.txt b/backends/rtlil/CMakeLists.txt index 8f352e0f42f..a431e0e6081 100644 --- a/backends/rtlil/CMakeLists.txt +++ b/backends/rtlil/CMakeLists.txt @@ -5,4 +5,4 @@ target_sources(yosys_backends_rtlil INTERFACE rtlil_backend.h ) -target_link_libraries(yosys PRIVATE yosys_backends_rtlil) +target_link_libraries(yosys PUBLIC yosys_backends_rtlil) diff --git a/backends/simplec/CMakeLists.txt b/backends/simplec/CMakeLists.txt index 212fd08bb99..4967fa45077 100644 --- a/backends/simplec/CMakeLists.txt +++ b/backends/simplec/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_backends_simplec INTERFACE simplec.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_simplec) +target_link_libraries(yosys PUBLIC yosys_backends_simplec) diff --git a/backends/smt2/CMakeLists.txt b/backends/smt2/CMakeLists.txt index 061479290b4..0af6dd787f7 100644 --- a/backends/smt2/CMakeLists.txt +++ b/backends/smt2/CMakeLists.txt @@ -4,7 +4,7 @@ target_sources(yosys_backends_smt2 INTERFACE smt2.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_smt2) +target_link_libraries(yosys PUBLIC yosys_backends_smt2) add_share_file("share/python3" "smtio.py") add_share_file("share/python3" "ywio.py") diff --git a/backends/smv/CMakeLists.txt b/backends/smv/CMakeLists.txt index 8521e9a50d9..2f32bc87b52 100644 --- a/backends/smv/CMakeLists.txt +++ b/backends/smv/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_backends_smv INTERFACE smv.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_smv) +target_link_libraries(yosys PUBLIC yosys_backends_smv) diff --git a/backends/spice/CMakeLists.txt b/backends/spice/CMakeLists.txt index 524a75689eb..e4bc3b9dbe1 100644 --- a/backends/spice/CMakeLists.txt +++ b/backends/spice/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_backends_spice INTERFACE spice.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_spice) +target_link_libraries(yosys PUBLIC yosys_backends_spice) diff --git a/backends/table/CMakeLists.txt b/backends/table/CMakeLists.txt index 5603dee0b19..d706172ec40 100644 --- a/backends/table/CMakeLists.txt +++ b/backends/table/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_backends_table INTERFACE table.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_table) +target_link_libraries(yosys PUBLIC yosys_backends_table) diff --git a/backends/verilog/CMakeLists.txt b/backends/verilog/CMakeLists.txt index 4701fbed8ba..2fa3adb381d 100644 --- a/backends/verilog/CMakeLists.txt +++ b/backends/verilog/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_backends_verilog INTERFACE verilog_backend.cc ) -target_link_libraries(yosys PRIVATE yosys_backends_verilog) +target_link_libraries(yosys PUBLIC yosys_backends_verilog) diff --git a/frontends/aiger/CMakeLists.txt b/frontends/aiger/CMakeLists.txt index 1198dac9126..0d4bb51c297 100644 --- a/frontends/aiger/CMakeLists.txt +++ b/frontends/aiger/CMakeLists.txt @@ -5,4 +5,4 @@ target_sources(yosys_frontends_aiger INTERFACE aigerparse.h ) -target_link_libraries(yosys PRIVATE yosys_frontends_aiger) +target_link_libraries(yosys PUBLIC yosys_frontends_aiger) diff --git a/frontends/aiger2/CMakeLists.txt b/frontends/aiger2/CMakeLists.txt index ddc09a0c28d..a18605cbbd7 100644 --- a/frontends/aiger2/CMakeLists.txt +++ b/frontends/aiger2/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_frontends_aiger2 INTERFACE xaiger.cc ) -target_link_libraries(yosys PRIVATE yosys_frontends_aiger2) +target_link_libraries(yosys PUBLIC yosys_frontends_aiger2) diff --git a/frontends/ast/CMakeLists.txt b/frontends/ast/CMakeLists.txt index 4d5993bd005..21270a50ff2 100644 --- a/frontends/ast/CMakeLists.txt +++ b/frontends/ast/CMakeLists.txt @@ -10,4 +10,4 @@ target_sources(yosys_frontends_ast INTERFACE simplify.cc ) -target_link_libraries(yosys PRIVATE yosys_frontends_ast) +target_link_libraries(yosys PUBLIC yosys_frontends_ast) diff --git a/frontends/blif/CMakeLists.txt b/frontends/blif/CMakeLists.txt index 2af85e3401b..b0fcbce42d1 100644 --- a/frontends/blif/CMakeLists.txt +++ b/frontends/blif/CMakeLists.txt @@ -5,4 +5,4 @@ target_sources(yosys_frontends_blif INTERFACE blifparse.h ) -target_link_libraries(yosys PRIVATE yosys_frontends_blif) +target_link_libraries(yosys PUBLIC yosys_frontends_blif) diff --git a/frontends/json/CMakeLists.txt b/frontends/json/CMakeLists.txt index c74bc56118c..09d09b216cc 100644 --- a/frontends/json/CMakeLists.txt +++ b/frontends/json/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_frontends_json INTERFACE jsonparse.cc ) -target_link_libraries(yosys PRIVATE yosys_frontends_json) +target_link_libraries(yosys PUBLIC yosys_frontends_json) diff --git a/frontends/liberty/CMakeLists.txt b/frontends/liberty/CMakeLists.txt index 15bbf617967..ab0ae139d18 100644 --- a/frontends/liberty/CMakeLists.txt +++ b/frontends/liberty/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_frontends_liberty INTERFACE liberty.cc ) -target_link_libraries(yosys PRIVATE yosys_frontends_liberty) +target_link_libraries(yosys PUBLIC yosys_frontends_liberty) diff --git a/frontends/rpc/CMakeLists.txt b/frontends/rpc/CMakeLists.txt index c0a352a0bab..f7f48f75b8a 100644 --- a/frontends/rpc/CMakeLists.txt +++ b/frontends/rpc/CMakeLists.txt @@ -5,5 +5,5 @@ if (NOT DISABLE_SPAWN) rpc_frontend.cc ) - target_link_libraries(yosys PRIVATE yosys_frontends_rpc) + target_link_libraries(yosys PUBLIC yosys_frontends_rpc) endif() diff --git a/frontends/rtlil/CMakeLists.txt b/frontends/rtlil/CMakeLists.txt index 612a56ccd9d..b162b41d8d5 100644 --- a/frontends/rtlil/CMakeLists.txt +++ b/frontends/rtlil/CMakeLists.txt @@ -13,4 +13,4 @@ add_library(yosys_frontends_rtlil_gen OBJECT ${FLEX_RTLIL_LEXER_OUTPUTS} ${BISON_RTLIL_PARSER_OUTPUTS} ) -target_link_libraries(yosys PRIVATE yosys_frontends_rtlil yosys_frontends_rtlil_gen) +target_link_libraries(yosys PUBLIC yosys_frontends_rtlil yosys_frontends_rtlil_gen) diff --git a/frontends/verific/CMakeLists.txt b/frontends/verific/CMakeLists.txt index 2a71702fdc5..a51aba1a22e 100644 --- a/frontends/verific/CMakeLists.txt +++ b/frontends/verific/CMakeLists.txt @@ -5,4 +5,4 @@ target_sources(yosys_frontends_verific INTERFACE #verificsva.cc ) -target_link_libraries(yosys PRIVATE yosys_frontends_verific) +target_link_libraries(yosys PUBLIC yosys_frontends_verific) diff --git a/frontends/verilog/CMakeLists.txt b/frontends/verilog/CMakeLists.txt index b4126c51a26..6d47548c94e 100644 --- a/frontends/verilog/CMakeLists.txt +++ b/frontends/verilog/CMakeLists.txt @@ -43,4 +43,4 @@ add_library(yosys_frontends_verilog_gen OBJECT #${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) +target_link_libraries(yosys PUBLIC yosys_frontends_verilog yosys_frontends_verilog_gen) diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 17fbcb24076..04323f8be34 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -10,7 +10,7 @@ find_package(Git) if(Git_FOUND) execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse --short=9 HEAD - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + WORKING_DIRECTORY ${yosys_SOURCE_DIR} OUTPUT_VARIABLE CURRENT_GIT_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE ) @@ -34,7 +34,7 @@ target_sources(yosys_kernel INTERFACE constids.inc cost.cc cost.h - driver.cc + # driver.cc drivertools.cc drivertools.h ff.cc @@ -90,4 +90,4 @@ target_sources(yosys_kernel INTERFACE ) endif() -target_link_libraries(yosys PRIVATE yosys_kernel) +target_link_libraries(yosys PUBLIC yosys_kernel) diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt index 7a073939294..b49bd2719dd 100644 --- a/libs/CMakeLists.txt +++ b/libs/CMakeLists.txt @@ -67,4 +67,4 @@ target_sources(yosys_libs INTERFACE ) endif() -target_link_libraries(yosys PRIVATE yosys_libs) +target_link_libraries(yosys PUBLIC yosys_libs) diff --git a/passes/cmds/CMakeLists.txt b/passes/cmds/CMakeLists.txt index b1de7073170..6e7ba023aa9 100644 --- a/passes/cmds/CMakeLists.txt +++ b/passes/cmds/CMakeLists.txt @@ -60,4 +60,4 @@ target_sources(yosys_passes_cmds INTERFACE ) endif() -target_link_libraries(yosys PRIVATE yosys_passes_cmds) +target_link_libraries(yosys PUBLIC yosys_passes_cmds) diff --git a/passes/equiv/CMakeLists.txt b/passes/equiv/CMakeLists.txt index 016306c7308..bb04dc08710 100644 --- a/passes/equiv/CMakeLists.txt +++ b/passes/equiv/CMakeLists.txt @@ -14,4 +14,4 @@ target_sources(yosys_passes_equiv INTERFACE equiv_opt.cc ) -target_link_libraries(yosys PRIVATE yosys_passes_equiv) +target_link_libraries(yosys PUBLIC yosys_passes_equiv) diff --git a/passes/fsm/CMakeLists.txt b/passes/fsm/CMakeLists.txt index b57718560ec..e0a7e0f8f16 100644 --- a/passes/fsm/CMakeLists.txt +++ b/passes/fsm/CMakeLists.txt @@ -13,4 +13,4 @@ target_sources(yosys_passes_fsm INTERFACE fsmdata.h ) -target_link_libraries(yosys PRIVATE yosys_passes_fsm) +target_link_libraries(yosys PUBLIC yosys_passes_fsm) diff --git a/passes/hierarchy/CMakeLists.txt b/passes/hierarchy/CMakeLists.txt index d8125bd35fa..3ad74eb382d 100644 --- a/passes/hierarchy/CMakeLists.txt +++ b/passes/hierarchy/CMakeLists.txt @@ -7,4 +7,4 @@ target_sources(yosys_passes_hierarchy INTERFACE keep_hierarchy.cc ) -target_link_libraries(yosys PRIVATE yosys_passes_hierarchy) +target_link_libraries(yosys PUBLIC yosys_passes_hierarchy) diff --git a/passes/memory/CMakeLists.txt b/passes/memory/CMakeLists.txt index d292b700c50..f310baa0e18 100644 --- a/passes/memory/CMakeLists.txt +++ b/passes/memory/CMakeLists.txt @@ -17,4 +17,4 @@ target_sources(yosys_passes_memory INTERFACE memlib.h ) -target_link_libraries(yosys PRIVATE yosys_passes_memory) +target_link_libraries(yosys PUBLIC yosys_passes_memory) diff --git a/passes/opt/CMakeLists.txt b/passes/opt/CMakeLists.txt index af97a0e883c..4b3f45a75c2 100644 --- a/passes/opt/CMakeLists.txt +++ b/passes/opt/CMakeLists.txt @@ -24,4 +24,4 @@ target_sources(yosys_passes_opt INTERFACE muxpack.cc ) -target_link_libraries(yosys PRIVATE yosys_passes_opt) +target_link_libraries(yosys PUBLIC yosys_passes_opt) diff --git a/passes/pmgen/CMakeLists.txt b/passes/pmgen/CMakeLists.txt index f435f6b5835..082a17cc020 100644 --- a/passes/pmgen/CMakeLists.txt +++ b/passes/pmgen/CMakeLists.txt @@ -1,12 +1,16 @@ add_library(yosys_passes_pmgen INTERFACE) function(pmgen_command _name _path) + set(CUSTOM_TARGET_NAME ${_name}_pm_gen) + set(GENERATED_HEADER ${yosys_BINARY_DIR}/${_path}/${_name}_pm.h) add_custom_command( - OUTPUT ${CMAKE_BINARY_DIR}/${_path}/${_name}_pm.h - 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 - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py ${CMAKE_SOURCE_DIR}/${_path}/${_name}.pmg + OUTPUT ${GENERATED_HEADER} + COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py -o ${GENERATED_HEADER} -p ${_name} ${yosys_SOURCE_DIR}/${_path}/${_name}.pmg + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py ${yosys_SOURCE_DIR}/${_path}/${_name}.pmg COMMENT "Generating ${_path}/${_name}_pm.h..." ) + add_custom_target(${CUSTOM_TARGET_NAME} DEPENDS ${GENERATED_HEADER}) + add_dependencies(yosys_passes_pmgen ${CUSTOM_TARGET_NAME}) endfunction() pmgen_command(test_pmgen passes/pmgen) @@ -22,50 +26,52 @@ pmgen_command(microchip_dsp_cascade techlibs/microchip) pmgen_command(xilinx_srl techlibs/xilinx) add_custom_command( - OUTPUT ${CMAKE_BINARY_DIR}/passes/opt/peepopt_pm.h - COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py -o ${CMAKE_BINARY_DIR}/passes/opt/peepopt_pm.h -p peepopt - ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftmul_right.pmg - ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftmul_left.pmg - ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftadd.pmg - ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_muldiv.pmg - ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_muldiv_c.pmg - ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_formal_clockgateff.pmg + OUTPUT ${yosys_BINARY_DIR}/passes/opt/peepopt_pm.h + COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py -o ${yosys_BINARY_DIR}/passes/opt/peepopt_pm.h -p peepopt + ${yosys_SOURCE_DIR}/passes/opt/peepopt_shiftmul_right.pmg + ${yosys_SOURCE_DIR}/passes/opt/peepopt_shiftmul_left.pmg + ${yosys_SOURCE_DIR}/passes/opt/peepopt_shiftadd.pmg + ${yosys_SOURCE_DIR}/passes/opt/peepopt_muldiv.pmg + ${yosys_SOURCE_DIR}/passes/opt/peepopt_muldiv_c.pmg + ${yosys_SOURCE_DIR}/passes/opt/peepopt_formal_clockgateff.pmg DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/pmgen.py - ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftmul_right.pmg - ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftmul_left.pmg - ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_shiftadd.pmg - ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_muldiv.pmg - ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_muldiv_c.pmg - ${CMAKE_SOURCE_DIR}/passes/opt/peepopt_formal_clockgateff.pmg + ${yosys_SOURCE_DIR}/passes/opt/peepopt_shiftmul_right.pmg + ${yosys_SOURCE_DIR}/passes/opt/peepopt_shiftmul_left.pmg + ${yosys_SOURCE_DIR}/passes/opt/peepopt_shiftadd.pmg + ${yosys_SOURCE_DIR}/passes/opt/peepopt_muldiv.pmg + ${yosys_SOURCE_DIR}/passes/opt/peepopt_muldiv_c.pmg + ${yosys_SOURCE_DIR}/passes/opt/peepopt_formal_clockgateff.pmg COMMENT "Generating passes/pmgen/peepopt_pm.h..." ) +add_custom_target(peepopt_pm DEPENDS ${yosys_BINARY_DIR}/passes/opt/peepopt_pm.h) +add_dependencies(yosys_passes_pmgen peepopt_pm) target_sources(yosys_passes_pmgen INTERFACE test_pmgen.cc - ${CMAKE_SOURCE_DIR}/techlibs/ice40/ice40_dsp.cc - ${CMAKE_SOURCE_DIR}/techlibs/ice40/ice40_wrapcarry.cc - ${CMAKE_SOURCE_DIR}/techlibs/xilinx/xilinx_dsp.cc - ${CMAKE_SOURCE_DIR}/techlibs/microchip/microchip_dsp.cc - ${CMAKE_SOURCE_DIR}/passes/opt/peepopt.cc - ${CMAKE_SOURCE_DIR}/techlibs/xilinx/xilinx_srl.cc + ${yosys_SOURCE_DIR}/techlibs/ice40/ice40_dsp.cc + ${yosys_SOURCE_DIR}/techlibs/ice40/ice40_wrapcarry.cc + ${yosys_SOURCE_DIR}/techlibs/xilinx/xilinx_dsp.cc + ${yosys_SOURCE_DIR}/techlibs/microchip/microchip_dsp.cc + ${yosys_SOURCE_DIR}/passes/opt/peepopt.cc + ${yosys_SOURCE_DIR}/techlibs/xilinx/xilinx_srl.cc ) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/passes/pmgen/test_pmgen_pm.h) +# target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/passes/pmgen/test_pmgen_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/ice40/ice40_dsp_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/ice40/ice40_wrapcarry_pm.h) +# target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/techlibs/ice40/ice40_dsp_pm.h) +# target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/techlibs/ice40/ice40_wrapcarry_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_dsp48a_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_CREG_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_cascade_pm.h) +# target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_pm.h) +# target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/techlibs/xilinx/xilinx_dsp48a_pm.h) +# target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_CREG_pm.h) +# target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/techlibs/xilinx/xilinx_dsp_cascade_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/microchip/microchip_dsp_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/microchip/microchip_dsp_CREG_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/microchip/microchip_dsp_cascade_pm.h) +# target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/techlibs/microchip/microchip_dsp_pm.h) +# target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/techlibs/microchip/microchip_dsp_CREG_pm.h) +# target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/techlibs/microchip/microchip_dsp_cascade_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/passes/opt/peepopt_pm.h) +# target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/passes/opt/peepopt_pm.h) -target_sources(yosys_passes_pmgen PRIVATE ${CMAKE_BINARY_DIR}/techlibs/xilinx/xilinx_srl_pm.h) +# target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/techlibs/xilinx/xilinx_srl_pm.h) -target_link_libraries(yosys PRIVATE yosys_passes_pmgen) +target_link_libraries(yosys PUBLIC yosys_passes_pmgen) diff --git a/passes/proc/CMakeLists.txt b/passes/proc/CMakeLists.txt index a60d62b9988..a9e44d61d53 100644 --- a/passes/proc/CMakeLists.txt +++ b/passes/proc/CMakeLists.txt @@ -14,4 +14,4 @@ target_sources(yosys_passes_proc INTERFACE proc_memwr.cc ) -target_link_libraries(yosys PRIVATE yosys_passes_proc) +target_link_libraries(yosys PUBLIC yosys_passes_proc) diff --git a/passes/sat/CMakeLists.txt b/passes/sat/CMakeLists.txt index fff9fe045ed..84aecab9711 100644 --- a/passes/sat/CMakeLists.txt +++ b/passes/sat/CMakeLists.txt @@ -32,4 +32,4 @@ target_sources(yosys_passes_sat INTERFACE ) endif() -target_link_libraries(yosys PRIVATE yosys_passes_sat) +target_link_libraries(yosys PUBLIC yosys_passes_sat) diff --git a/passes/techmap/CMakeLists.txt b/passes/techmap/CMakeLists.txt index 89ab938c2cd..249dd6e244b 100644 --- a/passes/techmap/CMakeLists.txt +++ b/passes/techmap/CMakeLists.txt @@ -53,7 +53,7 @@ if (ENABLE_ABC) ) endif() -target_link_libraries(yosys PRIVATE yosys_passes_techmap) +target_link_libraries(yosys PUBLIC yosys_passes_techmap) if (NOT DISABLE_SPAWN) set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}) diff --git a/passes/tests/CMakeLists.txt b/passes/tests/CMakeLists.txt index b74ca2039cb..1e07c3fcea3 100644 --- a/passes/tests/CMakeLists.txt +++ b/passes/tests/CMakeLists.txt @@ -6,4 +6,4 @@ target_sources(yosys_passes_tests INTERFACE test_abcloop.cc ) -target_link_libraries(yosys PRIVATE yosys_passes_tests) +target_link_libraries(yosys PUBLIC yosys_passes_tests) diff --git a/techlibs/achronix/CMakeLists.txt b/techlibs/achronix/CMakeLists.txt index 6229b93bacd..a3421c3f428 100644 --- a/techlibs/achronix/CMakeLists.txt +++ b/techlibs/achronix/CMakeLists.txt @@ -4,7 +4,7 @@ target_sources(yosys_techlibs_achronix INTERFACE synth_achronix.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_achronix) +target_link_libraries(yosys PUBLIC yosys_techlibs_achronix) add_share_file("share/achronix/speedster22i" "speedster22i/cells_sim.v") add_share_file("share/achronix/speedster22i" "speedster22i/cells_map.v") diff --git a/techlibs/anlogic/CMakeLists.txt b/techlibs/anlogic/CMakeLists.txt index 7b934acc232..ce20cb53a72 100644 --- a/techlibs/anlogic/CMakeLists.txt +++ b/techlibs/anlogic/CMakeLists.txt @@ -6,7 +6,7 @@ target_sources(yosys_techlibs_anlogic INTERFACE anlogic_fixcarry.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_anlogic) +target_link_libraries(yosys PUBLIC yosys_techlibs_anlogic) add_share_file("share/anlogic" "cells_map.v") add_share_file("share/anlogic" "arith_map.v") diff --git a/techlibs/common/CMakeLists.txt b/techlibs/common/CMakeLists.txt index 718f20fac4b..95f12148c36 100644 --- a/techlibs/common/CMakeLists.txt +++ b/techlibs/common/CMakeLists.txt @@ -27,7 +27,7 @@ target_sources(yosys_techlib_common INTERFACE add_dependencies(yosys_techlib_common yosys_techlib_common_gen) -target_link_libraries(yosys PRIVATE yosys_techlib_common) +target_link_libraries(yosys PUBLIC yosys_techlib_common) add_share_file("share" "simlib.v") add_share_file("share" "simcells.v") diff --git a/techlibs/coolrunner2/CMakeLists.txt b/techlibs/coolrunner2/CMakeLists.txt index 179416577dd..a70332029ef 100644 --- a/techlibs/coolrunner2/CMakeLists.txt +++ b/techlibs/coolrunner2/CMakeLists.txt @@ -6,7 +6,7 @@ target_sources(yosys_techlibs_coolrunner2 INTERFACE coolrunner2_fixup.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_coolrunner2) +target_link_libraries(yosys PUBLIC yosys_techlibs_coolrunner2) add_share_file("share/coolrunner2" "cells_latch.v") add_share_file("share/coolrunner2" "cells_sim.v") diff --git a/techlibs/easic/CMakeLists.txt b/techlibs/easic/CMakeLists.txt index 646d65de3d8..f434e2333f8 100644 --- a/techlibs/easic/CMakeLists.txt +++ b/techlibs/easic/CMakeLists.txt @@ -4,4 +4,4 @@ target_sources(yosys_techlibs_easic INTERFACE synth_easic.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_easic) +target_link_libraries(yosys PUBLIC yosys_techlibs_easic) diff --git a/techlibs/ecp5/CMakeLists.txt b/techlibs/ecp5/CMakeLists.txt index e6b617be245..645e0fa72c5 100644 --- a/techlibs/ecp5/CMakeLists.txt +++ b/techlibs/ecp5/CMakeLists.txt @@ -4,7 +4,7 @@ target_sources(yosys_techlibs_ecp5 INTERFACE synth_ecp5.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_ecp5) +target_link_libraries(yosys PUBLIC yosys_techlibs_ecp5) add_share_file("share/ecp5" "cells_ff.vh") add_share_file("share/ecp5" "cells_io.vh") diff --git a/techlibs/efinix/CMakeLists.txt b/techlibs/efinix/CMakeLists.txt index e32ffe33871..be08a6378a1 100644 --- a/techlibs/efinix/CMakeLists.txt +++ b/techlibs/efinix/CMakeLists.txt @@ -5,7 +5,7 @@ target_sources(yosys_techlibs_efinix INTERFACE efinix_fixcarry.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_efinix) +target_link_libraries(yosys PUBLIC yosys_techlibs_efinix) add_share_file("share/efinix" "cells_map.v") add_share_file("share/efinix" "arith_map.v") diff --git a/techlibs/fabulous/CMakeLists.txt b/techlibs/fabulous/CMakeLists.txt index 6b28617865e..364ed003eda 100644 --- a/techlibs/fabulous/CMakeLists.txt +++ b/techlibs/fabulous/CMakeLists.txt @@ -4,7 +4,7 @@ target_sources(yosys_techlibs_fabulous INTERFACE synth_fabulous.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_fabulous) +target_link_libraries(yosys PUBLIC yosys_techlibs_fabulous) add_share_file("share/fabulous" "cells_map.v") add_share_file("share/fabulous" "prims.v") diff --git a/techlibs/gatemate/CMakeLists.txt b/techlibs/gatemate/CMakeLists.txt index 627dd13c207..c277029daf3 100644 --- a/techlibs/gatemate/CMakeLists.txt +++ b/techlibs/gatemate/CMakeLists.txt @@ -10,7 +10,7 @@ add_custom_command( DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/make_lut_tree_lib.py OUTPUT lut_tree_cells.genlib lut_tree_map.v COMMENT "Generating techlibs/gatemate/lut_tree_map.v..." - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + WORKING_DIRECTORY ${yosys_BINARY_DIR} ) target_sources(yosys_techlibs_gatemate PRIVATE @@ -18,7 +18,7 @@ target_sources(yosys_techlibs_gatemate PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/lut_tree_map.v ) -target_link_libraries(yosys PRIVATE yosys_techlibs_gatemate) +target_link_libraries(yosys PUBLIC yosys_techlibs_gatemate) add_share_file("share/gatemate" "reg_map.v") add_share_file("share/gatemate" "mux_map.v") diff --git a/techlibs/gowin/CMakeLists.txt b/techlibs/gowin/CMakeLists.txt index ecb03d6cc56..aa51b6d96f0 100644 --- a/techlibs/gowin/CMakeLists.txt +++ b/techlibs/gowin/CMakeLists.txt @@ -4,7 +4,7 @@ target_sources(yosys_techlibs_gowin INTERFACE synth_gowin.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_gowin) +target_link_libraries(yosys PUBLIC yosys_techlibs_gowin) add_share_file("share/gowin" "cells_map.v") add_share_file("share/gowin" "cells_sim.v") diff --git a/techlibs/greenpak4/CMakeLists.txt b/techlibs/greenpak4/CMakeLists.txt index 415171f4c6f..938635790ba 100644 --- a/techlibs/greenpak4/CMakeLists.txt +++ b/techlibs/greenpak4/CMakeLists.txt @@ -5,7 +5,7 @@ target_sources(yosys_techlibs_greenpak4 INTERFACE greenpak4_dffinv.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_greenpak4) +target_link_libraries(yosys PUBLIC yosys_techlibs_greenpak4) add_share_file("share/greenpak4" "cells_blackbox.v") add_share_file("share/greenpak4" "cells_latch.v") diff --git a/techlibs/ice40/CMakeLists.txt b/techlibs/ice40/CMakeLists.txt index 0e33514bed7..3de964af0c9 100644 --- a/techlibs/ice40/CMakeLists.txt +++ b/techlibs/ice40/CMakeLists.txt @@ -6,7 +6,7 @@ target_sources(yosys_techlibs_ice40 INTERFACE ice40_opt.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_ice40) +target_link_libraries(yosys PUBLIC yosys_techlibs_ice40) add_share_file("share/ice40" "arith_map.v") add_share_file("share/ice40" "cells_map.v") diff --git a/techlibs/intel/CMakeLists.txt b/techlibs/intel/CMakeLists.txt index f79c2345ed6..5c35ff88ca5 100644 --- a/techlibs/intel/CMakeLists.txt +++ b/techlibs/intel/CMakeLists.txt @@ -4,7 +4,7 @@ target_sources(yosys_techlibs_intel INTERFACE synth_intel.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_intel) +target_link_libraries(yosys PUBLIC yosys_techlibs_intel) add_share_file("share/intel/common" "common/m9k_bb.v") add_share_file("share/intel/common" "common/altpll_bb.v") diff --git a/techlibs/intel_alm/CMakeLists.txt b/techlibs/intel_alm/CMakeLists.txt index e1179f1b1d5..53ac435e306 100644 --- a/techlibs/intel_alm/CMakeLists.txt +++ b/techlibs/intel_alm/CMakeLists.txt @@ -4,7 +4,7 @@ target_sources(yosys_techlibs_intel_alm INTERFACE synth_intel_alm.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_intel_alm) +target_link_libraries(yosys PUBLIC yosys_techlibs_intel_alm) # Techmap add_share_file("share/intel_alm/common" "common/abc9_map.v") diff --git a/techlibs/lattice/CMakeLists.txt b/techlibs/lattice/CMakeLists.txt index e9955cff624..78aabd23cf6 100644 --- a/techlibs/lattice/CMakeLists.txt +++ b/techlibs/lattice/CMakeLists.txt @@ -5,7 +5,7 @@ target_sources(yosys_techlibs_lattice INTERFACE lattice_gsr.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_lattice) +target_link_libraries(yosys PUBLIC yosys_techlibs_lattice) add_share_file("share/lattice" "cells_ff.vh") add_share_file("share/lattice" "cells_io.vh") diff --git a/techlibs/microchip/CMakeLists.txt b/techlibs/microchip/CMakeLists.txt index 889858537de..71e6e2a9a33 100644 --- a/techlibs/microchip/CMakeLists.txt +++ b/techlibs/microchip/CMakeLists.txt @@ -5,7 +5,7 @@ target_sources(yosys_techlibs_microchip INTERFACE microchip_dffopt.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_microchip) +target_link_libraries(yosys PUBLIC yosys_techlibs_microchip) add_share_file("share/microchip" "arith_map.v") add_share_file("share/microchip" "cells_map.v") diff --git a/techlibs/nanoxplore/CMakeLists.txt b/techlibs/nanoxplore/CMakeLists.txt index cfbc31982d7..196307d5437 100644 --- a/techlibs/nanoxplore/CMakeLists.txt +++ b/techlibs/nanoxplore/CMakeLists.txt @@ -5,7 +5,7 @@ target_sources(yosys_techlibs_nanoxplore INTERFACE nx_carry.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_nanoxplore) +target_link_libraries(yosys PUBLIC yosys_techlibs_nanoxplore) # Techmap add_share_file("share/nanoxplore" "arith_map.v") diff --git a/techlibs/nexus/CMakeLists.txt b/techlibs/nexus/CMakeLists.txt index a285e3407b9..caf9652418b 100644 --- a/techlibs/nexus/CMakeLists.txt +++ b/techlibs/nexus/CMakeLists.txt @@ -4,7 +4,7 @@ target_sources(yosys_techlibs_nexus INTERFACE synth_nexus.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_nexus) +target_link_libraries(yosys PUBLIC yosys_techlibs_nexus) add_share_file("share/nexus" "cells_map.v") add_share_file("share/nexus" "cells_sim.v") diff --git a/techlibs/quicklogic/CMakeLists.txt b/techlibs/quicklogic/CMakeLists.txt index 50d73965348..27e486c95ea 100644 --- a/techlibs/quicklogic/CMakeLists.txt +++ b/techlibs/quicklogic/CMakeLists.txt @@ -1,12 +1,16 @@ add_library(yosys_techlibs_quicklogic INTERFACE) function(pmgen_command _name) + set(CUSTOM_TARGET_NAME ${_name}_pm_gen) + set(GENERATED_HEADER ${CMAKE_CURRENT_BINARY_DIR}/${_name}_pm.h) add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${_name}_pm.h - 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 - DEPENDS ${CMAKE_SOURCE_DIR}/passes/pmgen/pmgen.py ${CMAKE_CURRENT_SOURCE_DIR}/${_name}.pmg + OUTPUT ${GENERATED_HEADER} + COMMAND ${Python3_EXECUTABLE} ${yosys_SOURCE_DIR}/passes/pmgen/pmgen.py -o ${GENERATED_HEADER} -p ${_name} ${CMAKE_CURRENT_SOURCE_DIR}/${_name}.pmg + DEPENDS ${yosys_SOURCE_DIR}/passes/pmgen/pmgen.py ${CMAKE_CURRENT_SOURCE_DIR}/${_name}.pmg COMMENT "Generating passes/pmgen/${_name}_pm.h..." ) + add_custom_target(${CUSTOM_TARGET_NAME} DEPENDS ${GENERATED_HEADER}) + add_dependencies(yosys_techlibs_quicklogic ${CUSTOM_TARGET_NAME}) endfunction() pmgen_command(ql_dsp_macc) @@ -29,12 +33,12 @@ add_custom_command( COMMENT "Generating techlibs/quicklogic/qlf_k6n10f/bram_types_sim.v..." ) -target_sources(yosys_techlibs_quicklogic PRIVATE - ${CMAKE_CURRENT_BINARY_DIR}/ql_dsp_macc_pm.h - ${CMAKE_CURRENT_BINARY_DIR}/qlf_k6n10f/bram_types_sim.v +target_sources(yosys_techlibs_quicklogic PUBLIC + # ${CMAKE_CURRENT_BINARY_DIR}/ql_dsp_macc_pm.h + # ${CMAKE_CURRENT_BINARY_DIR}/qlf_k6n10f/bram_types_sim.v ) -target_link_libraries(yosys PRIVATE yosys_techlibs_quicklogic) +target_link_libraries(yosys PUBLIC yosys_techlibs_quicklogic) add_share_file("share/quicklogic/common" "common/cells_sim.v") add_share_file("share/quicklogic/pp3" "pp3/ffs_map.v") diff --git a/techlibs/sf2/CMakeLists.txt b/techlibs/sf2/CMakeLists.txt index 76c7ae5b9d6..62b90ddede2 100644 --- a/techlibs/sf2/CMakeLists.txt +++ b/techlibs/sf2/CMakeLists.txt @@ -4,7 +4,7 @@ target_sources(yosys_techlibs_sf2 INTERFACE synth_sf2.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_sf2) +target_link_libraries(yosys PUBLIC yosys_techlibs_sf2) add_share_file("share/sf2" "arith_map.v") add_share_file("share/sf2" "cells_map.v") diff --git a/techlibs/xilinx/CMakeLists.txt b/techlibs/xilinx/CMakeLists.txt index 147303f37c3..dcf139ac386 100644 --- a/techlibs/xilinx/CMakeLists.txt +++ b/techlibs/xilinx/CMakeLists.txt @@ -5,7 +5,7 @@ target_sources(yosys_techlibs_xilinx INTERFACE xilinx_dffopt.cc ) -target_link_libraries(yosys PRIVATE yosys_techlibs_xilinx) +target_link_libraries(yosys PUBLIC yosys_techlibs_xilinx) add_share_file("share/xilinx" "cells_map.v") add_share_file("share/xilinx" "cells_sim.v") From 615a646a7ef91defd29f5a2bd2080aef63db7d1c Mon Sep 17 00:00:00 2001 From: nickrallison Date: Sun, 13 Jul 2025 18:30:27 -0600 Subject: [PATCH 3/6] CMake: Got Almost Working as Object Library --- CMakeLists.txt | 17 +++++++++------- backends/aiger/CMakeLists.txt | 5 +++-- backends/aiger2/CMakeLists.txt | 5 +++-- backends/blif/CMakeLists.txt | 5 +++-- backends/btor/CMakeLists.txt | 5 +++-- backends/cxxrtl/CMakeLists.txt | 5 +++-- backends/edif/CMakeLists.txt | 5 +++-- backends/firrtl/CMakeLists.txt | 5 +++-- backends/functional/CMakeLists.txt | 5 +++-- backends/intersynth/CMakeLists.txt | 5 +++-- backends/jny/CMakeLists.txt | 5 +++-- backends/json/CMakeLists.txt | 5 +++-- backends/rtlil/CMakeLists.txt | 5 +++-- backends/simplec/CMakeLists.txt | 5 +++-- backends/smt2/CMakeLists.txt | 5 +++-- backends/smv/CMakeLists.txt | 5 +++-- backends/spice/CMakeLists.txt | 5 +++-- backends/table/CMakeLists.txt | 5 +++-- backends/verilog/CMakeLists.txt | 5 +++-- flake.nix | 2 +- frontends/aiger/CMakeLists.txt | 5 +++-- frontends/aiger2/CMakeLists.txt | 5 +++-- frontends/ast/CMakeLists.txt | 5 +++-- frontends/blif/CMakeLists.txt | 5 +++-- frontends/json/CMakeLists.txt | 5 +++-- frontends/liberty/CMakeLists.txt | 5 +++-- frontends/rpc/CMakeLists.txt | 5 +++-- frontends/rtlil/CMakeLists.txt | 6 ++++-- frontends/verific/CMakeLists.txt | 5 +++-- frontends/verilog/CMakeLists.txt | 6 ++++-- kernel/CMakeLists.txt | 10 +++++++--- libs/CMakeLists.txt | 7 ++++--- passes/cmds/CMakeLists.txt | 7 ++++--- passes/equiv/CMakeLists.txt | 5 +++-- passes/fsm/CMakeLists.txt | 5 +++-- passes/hierarchy/CMakeLists.txt | 5 +++-- passes/memory/CMakeLists.txt | 5 +++-- passes/opt/CMakeLists.txt | 5 +++-- passes/pmgen/CMakeLists.txt | 21 ++++++++++---------- passes/proc/CMakeLists.txt | 5 +++-- passes/sat/CMakeLists.txt | 9 +++++---- passes/techmap/CMakeLists.txt | 9 ++++++--- passes/tests/CMakeLists.txt | 5 +++-- build.sh => scripts/debug_build.sh | 2 +- techlibs/achronix/CMakeLists.txt | 5 +++-- techlibs/anlogic/CMakeLists.txt | 5 +++-- techlibs/common/CMakeLists.txt | 5 +++-- techlibs/coolrunner2/CMakeLists.txt | 5 +++-- techlibs/easic/CMakeLists.txt | 5 +++-- techlibs/ecp5/CMakeLists.txt | 5 +++-- techlibs/efinix/CMakeLists.txt | 5 +++-- techlibs/fabulous/CMakeLists.txt | 5 +++-- techlibs/gatemate/CMakeLists.txt | 5 +++-- techlibs/gowin/CMakeLists.txt | 5 +++-- techlibs/greenpak4/CMakeLists.txt | 5 +++-- techlibs/ice40/CMakeLists.txt | 5 +++-- techlibs/intel/CMakeLists.txt | 5 +++-- techlibs/intel_alm/CMakeLists.txt | 5 +++-- techlibs/lattice/CMakeLists.txt | 5 +++-- techlibs/microchip/CMakeLists.txt | 5 +++-- techlibs/nanoxplore/CMakeLists.txt | 5 +++-- techlibs/nexus/CMakeLists.txt | 5 +++-- techlibs/quicklogic/CMakeLists.txt | 30 +++++++++++++++++++---------- techlibs/sf2/CMakeLists.txt | 5 +++-- techlibs/xilinx/CMakeLists.txt | 5 +++-- 65 files changed, 236 insertions(+), 155 deletions(-) rename build.sh => scripts/debug_build.sh (83%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4de55eb07c5..3adb3bc84cd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,10 +74,7 @@ find_package(FLEX 2.6 REQUIRED) find_package(BISON 3.0 REQUIRED) find_package(Python3 3.5 REQUIRED COMPONENTS Interpreter) -add_library(yosys STATIC) -#target_include_directories(yosys PUBLIC ${CMAKE_CURRENT_BINARY_DIR}) -#target_include_directories(yosys PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) -#target_compile_definitions(yosys PUBLIC _YOSYS_) +add_library(yosys OBJECT) include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) target_include_directories(yosys PUBLIC ${CMAKE_CURRENT_BINARY_DIR} @@ -291,7 +288,9 @@ endif() set_property(SOURCE kernel/log.cc APPEND PROPERTY COMPILE_DEFINITIONS YOSYS_SRC="${PROJECT_SOURCE_DIR}") if (ENABLE_LIBYOSYS) - add_library(yosys_shared SHARED) + add_library(yosys_shared SHARED + $ + ) target_link_libraries(yosys_shared PUBLIC yosys) set_target_properties(yosys_shared PROPERTIES OUTPUT_NAME yosys) install(TARGETS yosys_shared @@ -299,9 +298,13 @@ if (ENABLE_LIBYOSYS) endif() add_executable(yosys_exe - kernel/driver.cc) + kernel/driver.cc + $ +) target_link_libraries(yosys_exe PUBLIC yosys) set_target_properties(yosys_exe PROPERTIES OUTPUT_NAME yosys) +install(TARGETS yosys_exe + RUNTIME DESTINATION .) #### yosys-config setup #### # compiler @@ -314,7 +317,7 @@ set(_CFG_CXXFLAGS -Wall -Wextra -ggdb "-I\"${CMAKE_INSTALL_PREFIX}/share/yosys/include\"" -MD -MP -D_YOSYS_ -fPIC - -I${CMAKE_INSTALL_PREFIX}/include + -DYOSYS_VERSION="${YOSYS_VER}" -std=c++${CXXSTD} -O3) if (ENABLE_READLINE) diff --git a/backends/aiger/CMakeLists.txt b/backends/aiger/CMakeLists.txt index fe588ca74b5..9deb6b4ef57 100644 --- a/backends/aiger/CMakeLists.txt +++ b/backends/aiger/CMakeLists.txt @@ -1,8 +1,9 @@ -add_library(yosys_backends_aiger INTERFACE) -target_sources(yosys_backends_aiger INTERFACE + +add_library(yosys_backends_aiger OBJECT aiger.cc xaiger.cc ) target_link_libraries(yosys PUBLIC yosys_backends_aiger) +target_sources(yosys PUBLIC $) \ No newline at end of file diff --git a/backends/aiger2/CMakeLists.txt b/backends/aiger2/CMakeLists.txt index c9eb8c68c77..8fd7ffc6184 100644 --- a/backends/aiger2/CMakeLists.txt +++ b/backends/aiger2/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_backends_aiger2 INTERFACE) -target_sources(yosys_backends_aiger2 INTERFACE + +add_library(yosys_backends_aiger2 OBJECT aiger.cc ) target_link_libraries(yosys PUBLIC yosys_backends_aiger2) +target_sources(yosys PUBLIC $) diff --git a/backends/blif/CMakeLists.txt b/backends/blif/CMakeLists.txt index a98108a9b2c..047e99b112a 100644 --- a/backends/blif/CMakeLists.txt +++ b/backends/blif/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_backends_blif INTERFACE) -target_sources(yosys_backends_blif INTERFACE + +add_library(yosys_backends_blif OBJECT blif.cc ) target_link_libraries(yosys PUBLIC yosys_backends_blif) +target_sources(yosys PUBLIC $) diff --git a/backends/btor/CMakeLists.txt b/backends/btor/CMakeLists.txt index 8c13600551d..3f5fe2e972e 100644 --- a/backends/btor/CMakeLists.txt +++ b/backends/btor/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_backends_btor INTERFACE) -target_sources(yosys_backends_btor INTERFACE + +add_library(yosys_backends_btor OBJECT btor.cc ) target_link_libraries(yosys PUBLIC yosys_backends_btor) +target_sources(yosys PUBLIC $) diff --git a/backends/cxxrtl/CMakeLists.txt b/backends/cxxrtl/CMakeLists.txt index 8c08ff4ecb3..5cc9b01b1db 100644 --- a/backends/cxxrtl/CMakeLists.txt +++ b/backends/cxxrtl/CMakeLists.txt @@ -1,10 +1,11 @@ -add_library(yosys_backends_cxxrtl INTERFACE) -target_sources(yosys_backends_cxxrtl INTERFACE + +add_library(yosys_backends_cxxrtl OBJECT cxxrtl_backend.cc ) target_link_libraries(yosys PUBLIC yosys_backends_cxxrtl) +target_sources(yosys PUBLIC $) add_include_file("backends/cxxrtl/runtime/cxxrtl" "runtime/cxxrtl/cxxrtl.h") add_include_file("backends/cxxrtl/runtime/cxxrtl" "runtime/cxxrtl/cxxrtl_vcd.h") diff --git a/backends/edif/CMakeLists.txt b/backends/edif/CMakeLists.txt index 9b86ac801b7..cebd79b8d88 100644 --- a/backends/edif/CMakeLists.txt +++ b/backends/edif/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_backends_edif INTERFACE) -target_sources(yosys_backends_edif INTERFACE + +add_library(yosys_backends_edif OBJECT edif.cc ) target_link_libraries(yosys PUBLIC yosys_backends_edif) +target_sources(yosys PUBLIC $) diff --git a/backends/firrtl/CMakeLists.txt b/backends/firrtl/CMakeLists.txt index 45c56184da1..975c31c8391 100644 --- a/backends/firrtl/CMakeLists.txt +++ b/backends/firrtl/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_backends_firrtl INTERFACE) -target_sources(yosys_backends_firrtl INTERFACE + +add_library(yosys_backends_firrtl OBJECT firrtl.cc ) target_link_libraries(yosys PUBLIC yosys_backends_firrtl) +target_sources(yosys PUBLIC $) diff --git a/backends/functional/CMakeLists.txt b/backends/functional/CMakeLists.txt index 4c87e488464..a18f9435261 100644 --- a/backends/functional/CMakeLists.txt +++ b/backends/functional/CMakeLists.txt @@ -1,6 +1,6 @@ -add_library(yosys_backends_functional INTERFACE) -target_sources(yosys_backends_functional INTERFACE + +add_library(yosys_backends_functional OBJECT cxx.cc smtlib.cc smtlib_rosette.cc @@ -8,3 +8,4 @@ target_sources(yosys_backends_functional INTERFACE ) target_link_libraries(yosys PUBLIC yosys_backends_functional) +target_sources(yosys PUBLIC $) diff --git a/backends/intersynth/CMakeLists.txt b/backends/intersynth/CMakeLists.txt index 666d399e0c7..7fe12a221f9 100644 --- a/backends/intersynth/CMakeLists.txt +++ b/backends/intersynth/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_backends_intersynth INTERFACE) -target_sources(yosys_backends_intersynth INTERFACE + +add_library(yosys_backends_intersynth OBJECT intersynth.cc ) target_link_libraries(yosys PUBLIC yosys_backends_intersynth) +target_sources(yosys PUBLIC $) diff --git a/backends/jny/CMakeLists.txt b/backends/jny/CMakeLists.txt index 66065c45749..8985d85163a 100644 --- a/backends/jny/CMakeLists.txt +++ b/backends/jny/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_backends_jny INTERFACE) -target_sources(yosys_backends_jny INTERFACE + +add_library(yosys_backends_jny OBJECT jny.cc ) target_link_libraries(yosys PUBLIC yosys_backends_jny) +target_sources(yosys PUBLIC $) diff --git a/backends/json/CMakeLists.txt b/backends/json/CMakeLists.txt index ce14ae3407c..4ed5b684662 100644 --- a/backends/json/CMakeLists.txt +++ b/backends/json/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_backends_json INTERFACE) -target_sources(yosys_backends_json INTERFACE + +add_library(yosys_backends_json OBJECT json.cc ) target_link_libraries(yosys PUBLIC yosys_backends_json) +target_sources(yosys PUBLIC $) diff --git a/backends/rtlil/CMakeLists.txt b/backends/rtlil/CMakeLists.txt index a431e0e6081..c9154e8eedc 100644 --- a/backends/rtlil/CMakeLists.txt +++ b/backends/rtlil/CMakeLists.txt @@ -1,8 +1,9 @@ -add_library(yosys_backends_rtlil INTERFACE) -target_sources(yosys_backends_rtlil INTERFACE + +add_library(yosys_backends_rtlil OBJECT rtlil_backend.cc rtlil_backend.h ) target_link_libraries(yosys PUBLIC yosys_backends_rtlil) +target_sources(yosys PUBLIC $) diff --git a/backends/simplec/CMakeLists.txt b/backends/simplec/CMakeLists.txt index 4967fa45077..75d4e8550ba 100644 --- a/backends/simplec/CMakeLists.txt +++ b/backends/simplec/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_backends_simplec INTERFACE) -target_sources(yosys_backends_simplec INTERFACE + +add_library(yosys_backends_simplec OBJECT simplec.cc ) target_link_libraries(yosys PUBLIC yosys_backends_simplec) +target_sources(yosys PUBLIC $) diff --git a/backends/smt2/CMakeLists.txt b/backends/smt2/CMakeLists.txt index 0af6dd787f7..cb1510e582e 100644 --- a/backends/smt2/CMakeLists.txt +++ b/backends/smt2/CMakeLists.txt @@ -1,10 +1,11 @@ -add_library(yosys_backends_smt2 INTERFACE) -target_sources(yosys_backends_smt2 INTERFACE + +add_library(yosys_backends_smt2 OBJECT smt2.cc ) target_link_libraries(yosys PUBLIC yosys_backends_smt2) +target_sources(yosys PUBLIC $) add_share_file("share/python3" "smtio.py") add_share_file("share/python3" "ywio.py") diff --git a/backends/smv/CMakeLists.txt b/backends/smv/CMakeLists.txt index 2f32bc87b52..664467954eb 100644 --- a/backends/smv/CMakeLists.txt +++ b/backends/smv/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_backends_smv INTERFACE) -target_sources(yosys_backends_smv INTERFACE + +add_library(yosys_backends_smv OBJECT smv.cc ) target_link_libraries(yosys PUBLIC yosys_backends_smv) +target_sources(yosys PUBLIC $) diff --git a/backends/spice/CMakeLists.txt b/backends/spice/CMakeLists.txt index e4bc3b9dbe1..f3a138a2380 100644 --- a/backends/spice/CMakeLists.txt +++ b/backends/spice/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_backends_spice INTERFACE) -target_sources(yosys_backends_spice INTERFACE + +add_library(yosys_backends_spice OBJECT spice.cc ) target_link_libraries(yosys PUBLIC yosys_backends_spice) +target_sources(yosys PUBLIC $) diff --git a/backends/table/CMakeLists.txt b/backends/table/CMakeLists.txt index d706172ec40..4dbdeb375a9 100644 --- a/backends/table/CMakeLists.txt +++ b/backends/table/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_backends_table INTERFACE) -target_sources(yosys_backends_table INTERFACE + +add_library(yosys_backends_table OBJECT table.cc ) target_link_libraries(yosys PUBLIC yosys_backends_table) +target_sources(yosys PUBLIC $) diff --git a/backends/verilog/CMakeLists.txt b/backends/verilog/CMakeLists.txt index 2fa3adb381d..de360e252ee 100644 --- a/backends/verilog/CMakeLists.txt +++ b/backends/verilog/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_backends_verilog INTERFACE) -target_sources(yosys_backends_verilog INTERFACE + +add_library(yosys_backends_verilog OBJECT verilog_backend.cc ) target_link_libraries(yosys PUBLIC yosys_backends_verilog) +target_sources(yosys PUBLIC $) diff --git a/flake.nix b/flake.nix index f0c25561cae..0d938b8a595 100644 --- a/flake.nix +++ b/flake.nix @@ -41,7 +41,7 @@ packages.default = yosys; defaultPackage = yosys; devShell = pkgs.mkShell { - buildInputs = with pkgs; [ gtkwave cmake clang llvmPackages.bintools gcc bison flex libffi tcl tk readline python3 zlib git gtest abc-verifier verilog boost python3Packages.boost ]; + buildInputs = with pkgs; [ gtkwave cmake clang ccache llvmPackages.bintools ninja gcc bison flex libffi tcl tk readline python3 zlib git gtest abc-verifier verilog boost python3Packages.boost ]; }; } ); diff --git a/frontends/aiger/CMakeLists.txt b/frontends/aiger/CMakeLists.txt index 0d4bb51c297..429ef96551d 100644 --- a/frontends/aiger/CMakeLists.txt +++ b/frontends/aiger/CMakeLists.txt @@ -1,8 +1,9 @@ -add_library(yosys_frontends_aiger INTERFACE) -target_sources(yosys_frontends_aiger INTERFACE + +add_library(yosys_frontends_aiger OBJECT aigerparse.cc aigerparse.h ) target_link_libraries(yosys PUBLIC yosys_frontends_aiger) +target_sources(yosys PUBLIC $) diff --git a/frontends/aiger2/CMakeLists.txt b/frontends/aiger2/CMakeLists.txt index a18605cbbd7..a650135d622 100644 --- a/frontends/aiger2/CMakeLists.txt +++ b/frontends/aiger2/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_frontends_aiger2 INTERFACE) -target_sources(yosys_frontends_aiger2 INTERFACE + +add_library(yosys_frontends_aiger2 OBJECT xaiger.cc ) target_link_libraries(yosys PUBLIC yosys_frontends_aiger2) +target_sources(yosys PUBLIC $) diff --git a/frontends/ast/CMakeLists.txt b/frontends/ast/CMakeLists.txt index 21270a50ff2..75b65043464 100644 --- a/frontends/ast/CMakeLists.txt +++ b/frontends/ast/CMakeLists.txt @@ -1,6 +1,6 @@ -add_library(yosys_frontends_ast INTERFACE) -target_sources(yosys_frontends_ast INTERFACE + +add_library(yosys_frontends_ast OBJECT ast_binding.cc ast_binding.h ast.cc @@ -11,3 +11,4 @@ target_sources(yosys_frontends_ast INTERFACE ) target_link_libraries(yosys PUBLIC yosys_frontends_ast) +target_sources(yosys PUBLIC $) diff --git a/frontends/blif/CMakeLists.txt b/frontends/blif/CMakeLists.txt index b0fcbce42d1..348372b0263 100644 --- a/frontends/blif/CMakeLists.txt +++ b/frontends/blif/CMakeLists.txt @@ -1,8 +1,9 @@ -add_library(yosys_frontends_blif INTERFACE) -target_sources(yosys_frontends_blif INTERFACE + +add_library(yosys_frontends_blif OBJECT blifparse.cc blifparse.h ) target_link_libraries(yosys PUBLIC yosys_frontends_blif) +target_sources(yosys PUBLIC $) diff --git a/frontends/json/CMakeLists.txt b/frontends/json/CMakeLists.txt index 09d09b216cc..c2a658ef2d8 100644 --- a/frontends/json/CMakeLists.txt +++ b/frontends/json/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_frontends_json INTERFACE) -target_sources(yosys_frontends_json INTERFACE + +add_library(yosys_frontends_json OBJECT jsonparse.cc ) target_link_libraries(yosys PUBLIC yosys_frontends_json) +target_sources(yosys PUBLIC $) diff --git a/frontends/liberty/CMakeLists.txt b/frontends/liberty/CMakeLists.txt index ab0ae139d18..9de37e8a78f 100644 --- a/frontends/liberty/CMakeLists.txt +++ b/frontends/liberty/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_frontends_liberty INTERFACE) -target_sources(yosys_frontends_liberty INTERFACE + +add_library(yosys_frontends_liberty OBJECT liberty.cc ) target_link_libraries(yosys PUBLIC yosys_frontends_liberty) +target_sources(yosys PUBLIC $) diff --git a/frontends/rpc/CMakeLists.txt b/frontends/rpc/CMakeLists.txt index f7f48f75b8a..6261c15f70d 100644 --- a/frontends/rpc/CMakeLists.txt +++ b/frontends/rpc/CMakeLists.txt @@ -1,9 +1,10 @@ if (NOT DISABLE_SPAWN) - add_library(yosys_frontends_rpc INTERFACE) + - target_sources(yosys_frontends_rpc INTERFACE + add_library(yosys_frontends_rpc OBJECT rpc_frontend.cc ) target_link_libraries(yosys PUBLIC yosys_frontends_rpc) + target_sources(yosys PUBLIC $) endif() diff --git a/frontends/rtlil/CMakeLists.txt b/frontends/rtlil/CMakeLists.txt index b162b41d8d5..a69eda37052 100644 --- a/frontends/rtlil/CMakeLists.txt +++ b/frontends/rtlil/CMakeLists.txt @@ -1,8 +1,8 @@ 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 + +add_library(yosys_frontends_rtlil OBJECT rtlil_frontend.cc ) @@ -14,3 +14,5 @@ add_library(yosys_frontends_rtlil_gen OBJECT ${BISON_RTLIL_PARSER_OUTPUTS} ) target_link_libraries(yosys PUBLIC yosys_frontends_rtlil yosys_frontends_rtlil_gen) +target_sources(yosys PUBLIC $) +target_sources(yosys PUBLIC $) diff --git a/frontends/verific/CMakeLists.txt b/frontends/verific/CMakeLists.txt index a51aba1a22e..f98056c20c9 100644 --- a/frontends/verific/CMakeLists.txt +++ b/frontends/verific/CMakeLists.txt @@ -1,8 +1,9 @@ -add_library(yosys_frontends_verific INTERFACE) -target_sources(yosys_frontends_verific INTERFACE + +add_library(yosys_frontends_verific OBJECT verific.cc #verificsva.cc ) target_link_libraries(yosys PUBLIC yosys_frontends_verific) +target_sources(yosys PUBLIC $) diff --git a/frontends/verilog/CMakeLists.txt b/frontends/verilog/CMakeLists.txt index 6d47548c94e..30cdfc3f100 100644 --- a/frontends/verilog/CMakeLists.txt +++ b/frontends/verilog/CMakeLists.txt @@ -27,8 +27,8 @@ 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 + +add_library(yosys_frontends_verilog OBJECT const2ast.cc preproc.cc preproc.h @@ -44,3 +44,5 @@ add_library(yosys_frontends_verilog_gen OBJECT #${CMAKE_CURRENT_BINARY_DIR}/verilog_parser.tab.hh ) target_link_libraries(yosys PUBLIC yosys_frontends_verilog yosys_frontends_verilog_gen) +target_sources(yosys PUBLIC $) +target_sources(yosys PUBLIC $) diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 04323f8be34..581035fdb9a 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -1,4 +1,4 @@ -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}") @@ -18,8 +18,9 @@ if(Git_FOUND) endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/version.cc.in ${CMAKE_CURRENT_BINARY_DIR}/version.cc) +set_property(SOURCE log.cc APPEND PROPERTY COMPILE_DEFINITIONS YOSYS_SRC="${PROJECT_SOURCE_DIR}") -target_sources(yosys_kernel INTERFACE +add_library(yosys_kernel OBJECT binding.cc binding.h bitpattern.h @@ -84,10 +85,13 @@ target_sources(yosys_kernel INTERFACE ) if (ENABLE_ZLIB) -target_sources(yosys_kernel INTERFACE +target_sources(yosys_kernel PRIVATE fstdata.cc fstdata.h ) endif() +add_dependencies(yosys_kernel yosys_techlib_common) + target_link_libraries(yosys PUBLIC yosys_kernel) +target_sources(yosys PUBLIC $) diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt index b49bd2719dd..13e6d648ab7 100644 --- a/libs/CMakeLists.txt +++ b/libs/CMakeLists.txt @@ -1,6 +1,6 @@ -add_library(yosys_libs INTERFACE) -target_sources(yosys_libs INTERFACE + +add_library(yosys_libs OBJECT bigint/BigInteger.cc bigint/BigInteger.hh bigint/BigIntegerAlgorithms.cc @@ -55,7 +55,7 @@ target_sources(yosys_libs INTERFACE ) if (ENABLE_ZLIB) -target_sources(yosys_libs INTERFACE +target_sources(yosys_libs PRIVATE fst/config.h fst/fastlz.cc fst/fastlz.h @@ -68,3 +68,4 @@ target_sources(yosys_libs INTERFACE endif() target_link_libraries(yosys PUBLIC yosys_libs) +target_sources(yosys PUBLIC $) diff --git a/passes/cmds/CMakeLists.txt b/passes/cmds/CMakeLists.txt index 6e7ba023aa9..738b3a29641 100644 --- a/passes/cmds/CMakeLists.txt +++ b/passes/cmds/CMakeLists.txt @@ -1,6 +1,6 @@ -add_library(yosys_passes_cmds INTERFACE) -target_sources(yosys_passes_cmds INTERFACE + +add_library(yosys_passes_cmds OBJECT add.cc delete.cc design.cc @@ -54,10 +54,11 @@ target_sources(yosys_passes_cmds INTERFACE ) if (NOT DISABLE_SPAWN) -target_sources(yosys_passes_cmds INTERFACE +target_sources(yosys_passes_cmds PRIVATE exec.cc bugpoint.cc ) endif() target_link_libraries(yosys PUBLIC yosys_passes_cmds) +target_sources(yosys PUBLIC $) diff --git a/passes/equiv/CMakeLists.txt b/passes/equiv/CMakeLists.txt index bb04dc08710..541107e13c3 100644 --- a/passes/equiv/CMakeLists.txt +++ b/passes/equiv/CMakeLists.txt @@ -1,6 +1,6 @@ -add_library(yosys_passes_equiv INTERFACE) -target_sources(yosys_passes_equiv INTERFACE + +add_library(yosys_passes_equiv OBJECT equiv_make.cc equiv_miter.cc equiv_simple.cc @@ -15,3 +15,4 @@ target_sources(yosys_passes_equiv INTERFACE ) target_link_libraries(yosys PUBLIC yosys_passes_equiv) +target_sources(yosys PUBLIC $) diff --git a/passes/fsm/CMakeLists.txt b/passes/fsm/CMakeLists.txt index e0a7e0f8f16..2439192ae19 100644 --- a/passes/fsm/CMakeLists.txt +++ b/passes/fsm/CMakeLists.txt @@ -1,6 +1,6 @@ -add_library(yosys_passes_fsm INTERFACE) -target_sources(yosys_passes_fsm INTERFACE + +add_library(yosys_passes_fsm OBJECT fsm.cc fsm_detect.cc fsm_extract.cc @@ -14,3 +14,4 @@ target_sources(yosys_passes_fsm INTERFACE ) target_link_libraries(yosys PUBLIC yosys_passes_fsm) +target_sources(yosys PUBLIC $) diff --git a/passes/hierarchy/CMakeLists.txt b/passes/hierarchy/CMakeLists.txt index 3ad74eb382d..074b7492e4c 100644 --- a/passes/hierarchy/CMakeLists.txt +++ b/passes/hierarchy/CMakeLists.txt @@ -1,6 +1,6 @@ -add_library(yosys_passes_hierarchy INTERFACE) -target_sources(yosys_passes_hierarchy INTERFACE + +add_library(yosys_passes_hierarchy OBJECT hierarchy.cc uniquify.cc submod.cc @@ -8,3 +8,4 @@ target_sources(yosys_passes_hierarchy INTERFACE ) target_link_libraries(yosys PUBLIC yosys_passes_hierarchy) +target_sources(yosys PUBLIC $) diff --git a/passes/memory/CMakeLists.txt b/passes/memory/CMakeLists.txt index f310baa0e18..158eea861cb 100644 --- a/passes/memory/CMakeLists.txt +++ b/passes/memory/CMakeLists.txt @@ -1,6 +1,6 @@ -add_library(yosys_passes_memory INTERFACE) -target_sources(yosys_passes_memory INTERFACE + +add_library(yosys_passes_memory OBJECT memory.cc memory_dff.cc memory_share.cc @@ -18,3 +18,4 @@ target_sources(yosys_passes_memory INTERFACE ) target_link_libraries(yosys PUBLIC yosys_passes_memory) +target_sources(yosys PUBLIC $) diff --git a/passes/opt/CMakeLists.txt b/passes/opt/CMakeLists.txt index 4b3f45a75c2..18e68e03e1c 100644 --- a/passes/opt/CMakeLists.txt +++ b/passes/opt/CMakeLists.txt @@ -1,6 +1,6 @@ -add_library(yosys_passes_opt INTERFACE) -target_sources(yosys_passes_opt INTERFACE + +add_library(yosys_passes_opt OBJECT opt.cc opt_merge.cc opt_mem.cc @@ -25,3 +25,4 @@ target_sources(yosys_passes_opt INTERFACE ) target_link_libraries(yosys PUBLIC yosys_passes_opt) +target_sources(yosys PUBLIC $) diff --git a/passes/pmgen/CMakeLists.txt b/passes/pmgen/CMakeLists.txt index 082a17cc020..58a3ad220ec 100644 --- a/passes/pmgen/CMakeLists.txt +++ b/passes/pmgen/CMakeLists.txt @@ -1,4 +1,12 @@ -add_library(yosys_passes_pmgen INTERFACE) +add_library(yosys_passes_pmgen OBJECT + test_pmgen.cc + ${yosys_SOURCE_DIR}/techlibs/ice40/ice40_dsp.cc + ${yosys_SOURCE_DIR}/techlibs/ice40/ice40_wrapcarry.cc + ${yosys_SOURCE_DIR}/techlibs/xilinx/xilinx_dsp.cc + ${yosys_SOURCE_DIR}/techlibs/microchip/microchip_dsp.cc + ${yosys_SOURCE_DIR}/passes/opt/peepopt.cc + ${yosys_SOURCE_DIR}/techlibs/xilinx/xilinx_srl.cc +) function(pmgen_command _name _path) set(CUSTOM_TARGET_NAME ${_name}_pm_gen) @@ -46,15 +54,7 @@ add_custom_command( add_custom_target(peepopt_pm DEPENDS ${yosys_BINARY_DIR}/passes/opt/peepopt_pm.h) add_dependencies(yosys_passes_pmgen peepopt_pm) -target_sources(yosys_passes_pmgen INTERFACE - test_pmgen.cc - ${yosys_SOURCE_DIR}/techlibs/ice40/ice40_dsp.cc - ${yosys_SOURCE_DIR}/techlibs/ice40/ice40_wrapcarry.cc - ${yosys_SOURCE_DIR}/techlibs/xilinx/xilinx_dsp.cc - ${yosys_SOURCE_DIR}/techlibs/microchip/microchip_dsp.cc - ${yosys_SOURCE_DIR}/passes/opt/peepopt.cc - ${yosys_SOURCE_DIR}/techlibs/xilinx/xilinx_srl.cc -) + # target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/passes/pmgen/test_pmgen_pm.h) @@ -75,3 +75,4 @@ target_sources(yosys_passes_pmgen INTERFACE # target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/techlibs/xilinx/xilinx_srl_pm.h) target_link_libraries(yosys PUBLIC yosys_passes_pmgen) +target_sources(yosys PUBLIC $) diff --git a/passes/proc/CMakeLists.txt b/passes/proc/CMakeLists.txt index a9e44d61d53..8e56e5eea97 100644 --- a/passes/proc/CMakeLists.txt +++ b/passes/proc/CMakeLists.txt @@ -1,6 +1,6 @@ -add_library(yosys_passes_proc INTERFACE) -target_sources(yosys_passes_proc INTERFACE + +add_library(yosys_passes_proc OBJECT proc.cc proc_prune.cc proc_clean.cc @@ -15,3 +15,4 @@ target_sources(yosys_passes_proc INTERFACE ) target_link_libraries(yosys PUBLIC yosys_passes_proc) +target_sources(yosys PUBLIC $) diff --git a/passes/sat/CMakeLists.txt b/passes/sat/CMakeLists.txt index 84aecab9711..8cd19ac6808 100644 --- a/passes/sat/CMakeLists.txt +++ b/passes/sat/CMakeLists.txt @@ -1,6 +1,6 @@ -add_library(yosys_passes_sat INTERFACE) -target_sources(yosys_passes_sat INTERFACE + +add_library(yosys_passes_sat OBJECT sat.cc freduce.cc eval.cc @@ -21,15 +21,16 @@ target_sources(yosys_passes_sat INTERFACE ) if (ENABLE_ZLIB) -target_sources(yosys_passes_sat INTERFACE +target_sources(yosys_passes_sat PRIVATE sim.cc ) endif() if (NOT DISABLE_SPAWN) -target_sources(yosys_passes_sat INTERFACE +target_sources(yosys_passes_sat PRIVATE qbfsat.cc ) endif() target_link_libraries(yosys PUBLIC yosys_passes_sat) +target_sources(yosys PUBLIC $) diff --git a/passes/techmap/CMakeLists.txt b/passes/techmap/CMakeLists.txt index 249dd6e244b..1e077f591c7 100644 --- a/passes/techmap/CMakeLists.txt +++ b/passes/techmap/CMakeLists.txt @@ -1,6 +1,6 @@ -add_library(yosys_passes_techmap INTERFACE) -target_sources(yosys_passes_techmap INTERFACE + +add_library(yosys_passes_techmap OBJECT flatten.cc techmap.cc simplemap.cc @@ -44,7 +44,7 @@ target_sources(yosys_passes_techmap INTERFACE ) if (ENABLE_ABC) - target_sources(yosys_passes_techmap INTERFACE + target_sources(yosys_passes_techmap PRIVATE abc.cc abc9.cc abc9_exe.cc @@ -54,8 +54,11 @@ if (ENABLE_ABC) endif() target_link_libraries(yosys PUBLIC yosys_passes_techmap) +target_sources(yosys PUBLIC $) if (NOT DISABLE_SPAWN) set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}) add_executable(yosys-filterlib filterlib.cc) + install(TARGETS yosys-filterlib + RUNTIME DESTINATION .) endif() diff --git a/passes/tests/CMakeLists.txt b/passes/tests/CMakeLists.txt index 1e07c3fcea3..e08d4fb6a23 100644 --- a/passes/tests/CMakeLists.txt +++ b/passes/tests/CMakeLists.txt @@ -1,9 +1,10 @@ -add_library(yosys_passes_tests INTERFACE) -target_sources(yosys_passes_tests INTERFACE + +add_library(yosys_passes_tests OBJECT test_autotb.cc test_cell.cc test_abcloop.cc ) target_link_libraries(yosys PUBLIC yosys_passes_tests) +target_sources(yosys PUBLIC $) diff --git a/build.sh b/scripts/debug_build.sh similarity index 83% rename from build.sh rename to scripts/debug_build.sh index 269263ba8e4..7909d18dcad 100644 --- a/build.sh +++ b/scripts/debug_build.sh @@ -8,7 +8,7 @@ git submodule update --init --recursive # 2. Build the project mkdir -p build -cmake -B build +cmake -B build -DCMAKE_BUILD_TYPE=Debug -D ENABLE_CCACHE:BOOL=ON -D CMAKE_INSTALL_PREFIX:PATH=/usr/local cmake --build build --parallel $(nproc) # 3. Install the project into test install dir diff --git a/techlibs/achronix/CMakeLists.txt b/techlibs/achronix/CMakeLists.txt index a3421c3f428..71cf692d643 100644 --- a/techlibs/achronix/CMakeLists.txt +++ b/techlibs/achronix/CMakeLists.txt @@ -1,10 +1,11 @@ -add_library(yosys_techlibs_achronix INTERFACE) -target_sources(yosys_techlibs_achronix INTERFACE + +add_library(yosys_techlibs_achronix OBJECT synth_achronix.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_achronix) +target_sources(yosys PUBLIC $) add_share_file("share/achronix/speedster22i" "speedster22i/cells_sim.v") add_share_file("share/achronix/speedster22i" "speedster22i/cells_map.v") diff --git a/techlibs/anlogic/CMakeLists.txt b/techlibs/anlogic/CMakeLists.txt index ce20cb53a72..79b39727bc0 100644 --- a/techlibs/anlogic/CMakeLists.txt +++ b/techlibs/anlogic/CMakeLists.txt @@ -1,12 +1,13 @@ -add_library(yosys_techlibs_anlogic INTERFACE) -target_sources(yosys_techlibs_anlogic INTERFACE + +add_library(yosys_techlibs_anlogic OBJECT synth_anlogic.cc anlogic_eqn.cc anlogic_fixcarry.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_anlogic) +target_sources(yosys PUBLIC $) add_share_file("share/anlogic" "cells_map.v") add_share_file("share/anlogic" "arith_map.v") diff --git a/techlibs/common/CMakeLists.txt b/techlibs/common/CMakeLists.txt index 95f12148c36..2729d5c5816 100644 --- a/techlibs/common/CMakeLists.txt +++ b/techlibs/common/CMakeLists.txt @@ -1,4 +1,4 @@ -add_library(yosys_techlib_common INTERFACE) + add_custom_command( COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/techlibs/common @@ -20,7 +20,7 @@ add_custom_target(yosys_techlib_common_gen DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/simcells_help.inc ) -target_sources(yosys_techlib_common INTERFACE +add_library(yosys_techlib_common OBJECT synth.cc prep.cc ) @@ -28,6 +28,7 @@ target_sources(yosys_techlib_common INTERFACE add_dependencies(yosys_techlib_common yosys_techlib_common_gen) target_link_libraries(yosys PUBLIC yosys_techlib_common) +target_sources(yosys PUBLIC $) add_share_file("share" "simlib.v") add_share_file("share" "simcells.v") diff --git a/techlibs/coolrunner2/CMakeLists.txt b/techlibs/coolrunner2/CMakeLists.txt index a70332029ef..79941738e54 100644 --- a/techlibs/coolrunner2/CMakeLists.txt +++ b/techlibs/coolrunner2/CMakeLists.txt @@ -1,12 +1,13 @@ -add_library(yosys_techlibs_coolrunner2 INTERFACE) -target_sources(yosys_techlibs_coolrunner2 INTERFACE + +add_library(yosys_techlibs_coolrunner2 OBJECT synth_coolrunner2.cc coolrunner2_sop.cc coolrunner2_fixup.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_coolrunner2) +target_sources(yosys PUBLIC $) add_share_file("share/coolrunner2" "cells_latch.v") add_share_file("share/coolrunner2" "cells_sim.v") diff --git a/techlibs/easic/CMakeLists.txt b/techlibs/easic/CMakeLists.txt index f434e2333f8..a45b8a6e28d 100644 --- a/techlibs/easic/CMakeLists.txt +++ b/techlibs/easic/CMakeLists.txt @@ -1,7 +1,8 @@ -add_library(yosys_techlibs_easic INTERFACE) -target_sources(yosys_techlibs_easic INTERFACE + +add_library(yosys_techlibs_easic OBJECT synth_easic.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_easic) +target_sources(yosys PUBLIC $) diff --git a/techlibs/ecp5/CMakeLists.txt b/techlibs/ecp5/CMakeLists.txt index 645e0fa72c5..c0085cb5890 100644 --- a/techlibs/ecp5/CMakeLists.txt +++ b/techlibs/ecp5/CMakeLists.txt @@ -1,10 +1,11 @@ -add_library(yosys_techlibs_ecp5 INTERFACE) -target_sources(yosys_techlibs_ecp5 INTERFACE + +add_library(yosys_techlibs_ecp5 OBJECT synth_ecp5.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_ecp5) +target_sources(yosys PUBLIC $) add_share_file("share/ecp5" "cells_ff.vh") add_share_file("share/ecp5" "cells_io.vh") diff --git a/techlibs/efinix/CMakeLists.txt b/techlibs/efinix/CMakeLists.txt index be08a6378a1..f137ea974b6 100644 --- a/techlibs/efinix/CMakeLists.txt +++ b/techlibs/efinix/CMakeLists.txt @@ -1,11 +1,12 @@ -add_library(yosys_techlibs_efinix INTERFACE) -target_sources(yosys_techlibs_efinix INTERFACE + +add_library(yosys_techlibs_efinix OBJECT synth_efinix.cc efinix_fixcarry.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_efinix) +target_sources(yosys PUBLIC $) add_share_file("share/efinix" "cells_map.v") add_share_file("share/efinix" "arith_map.v") diff --git a/techlibs/fabulous/CMakeLists.txt b/techlibs/fabulous/CMakeLists.txt index 364ed003eda..cfe327c20bb 100644 --- a/techlibs/fabulous/CMakeLists.txt +++ b/techlibs/fabulous/CMakeLists.txt @@ -1,10 +1,11 @@ -add_library(yosys_techlibs_fabulous INTERFACE) -target_sources(yosys_techlibs_fabulous INTERFACE + +add_library(yosys_techlibs_fabulous OBJECT synth_fabulous.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_fabulous) +target_sources(yosys PUBLIC $) add_share_file("share/fabulous" "cells_map.v") add_share_file("share/fabulous" "prims.v") diff --git a/techlibs/gatemate/CMakeLists.txt b/techlibs/gatemate/CMakeLists.txt index c277029daf3..dc7fe059262 100644 --- a/techlibs/gatemate/CMakeLists.txt +++ b/techlibs/gatemate/CMakeLists.txt @@ -1,6 +1,6 @@ -add_library(yosys_techlibs_gatemate INTERFACE) -target_sources(yosys_techlibs_gatemate INTERFACE + +add_library(yosys_techlibs_gatemate OBJECT synth_gatemate.cc gatemate_foldinv.cc ) @@ -19,6 +19,7 @@ target_sources(yosys_techlibs_gatemate PRIVATE ) target_link_libraries(yosys PUBLIC yosys_techlibs_gatemate) +target_sources(yosys PUBLIC $) add_share_file("share/gatemate" "reg_map.v") add_share_file("share/gatemate" "mux_map.v") diff --git a/techlibs/gowin/CMakeLists.txt b/techlibs/gowin/CMakeLists.txt index aa51b6d96f0..0eb13d04396 100644 --- a/techlibs/gowin/CMakeLists.txt +++ b/techlibs/gowin/CMakeLists.txt @@ -1,10 +1,11 @@ -add_library(yosys_techlibs_gowin INTERFACE) -target_sources(yosys_techlibs_gowin INTERFACE + +add_library(yosys_techlibs_gowin OBJECT synth_gowin.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_gowin) +target_sources(yosys PUBLIC $) add_share_file("share/gowin" "cells_map.v") add_share_file("share/gowin" "cells_sim.v") diff --git a/techlibs/greenpak4/CMakeLists.txt b/techlibs/greenpak4/CMakeLists.txt index 938635790ba..b4e32057c2f 100644 --- a/techlibs/greenpak4/CMakeLists.txt +++ b/techlibs/greenpak4/CMakeLists.txt @@ -1,11 +1,12 @@ -add_library(yosys_techlibs_greenpak4 INTERFACE) -target_sources(yosys_techlibs_greenpak4 INTERFACE + +add_library(yosys_techlibs_greenpak4 OBJECT synth_greenpak4.cc greenpak4_dffinv.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_greenpak4) +target_sources(yosys PUBLIC $) add_share_file("share/greenpak4" "cells_blackbox.v") add_share_file("share/greenpak4" "cells_latch.v") diff --git a/techlibs/ice40/CMakeLists.txt b/techlibs/ice40/CMakeLists.txt index 3de964af0c9..88f9c726037 100644 --- a/techlibs/ice40/CMakeLists.txt +++ b/techlibs/ice40/CMakeLists.txt @@ -1,12 +1,13 @@ -add_library(yosys_techlibs_ice40 INTERFACE) -target_sources(yosys_techlibs_ice40 INTERFACE + +add_library(yosys_techlibs_ice40 OBJECT synth_ice40.cc ice40_braminit.cc ice40_opt.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_ice40) +target_sources(yosys PUBLIC $) add_share_file("share/ice40" "arith_map.v") add_share_file("share/ice40" "cells_map.v") diff --git a/techlibs/intel/CMakeLists.txt b/techlibs/intel/CMakeLists.txt index 5c35ff88ca5..f62bea4bb6c 100644 --- a/techlibs/intel/CMakeLists.txt +++ b/techlibs/intel/CMakeLists.txt @@ -1,10 +1,11 @@ -add_library(yosys_techlibs_intel INTERFACE) -target_sources(yosys_techlibs_intel INTERFACE + +add_library(yosys_techlibs_intel OBJECT synth_intel.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_intel) +target_sources(yosys PUBLIC $) add_share_file("share/intel/common" "common/m9k_bb.v") add_share_file("share/intel/common" "common/altpll_bb.v") diff --git a/techlibs/intel_alm/CMakeLists.txt b/techlibs/intel_alm/CMakeLists.txt index 53ac435e306..5887901b4d5 100644 --- a/techlibs/intel_alm/CMakeLists.txt +++ b/techlibs/intel_alm/CMakeLists.txt @@ -1,10 +1,11 @@ -add_library(yosys_techlibs_intel_alm INTERFACE) -target_sources(yosys_techlibs_intel_alm INTERFACE + +add_library(yosys_techlibs_intel_alm OBJECT synth_intel_alm.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_intel_alm) +target_sources(yosys PUBLIC $) # Techmap add_share_file("share/intel_alm/common" "common/abc9_map.v") diff --git a/techlibs/lattice/CMakeLists.txt b/techlibs/lattice/CMakeLists.txt index 78aabd23cf6..029230dd14d 100644 --- a/techlibs/lattice/CMakeLists.txt +++ b/techlibs/lattice/CMakeLists.txt @@ -1,11 +1,12 @@ -add_library(yosys_techlibs_lattice INTERFACE) -target_sources(yosys_techlibs_lattice INTERFACE + +add_library(yosys_techlibs_lattice OBJECT synth_lattice.cc lattice_gsr.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_lattice) +target_sources(yosys PUBLIC $) add_share_file("share/lattice" "cells_ff.vh") add_share_file("share/lattice" "cells_io.vh") diff --git a/techlibs/microchip/CMakeLists.txt b/techlibs/microchip/CMakeLists.txt index 71e6e2a9a33..c3157f7d30f 100644 --- a/techlibs/microchip/CMakeLists.txt +++ b/techlibs/microchip/CMakeLists.txt @@ -1,11 +1,12 @@ -add_library(yosys_techlibs_microchip INTERFACE) -target_sources(yosys_techlibs_microchip INTERFACE + +add_library(yosys_techlibs_microchip OBJECT synth_microchip.cc microchip_dffopt.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_microchip) +target_sources(yosys PUBLIC $) add_share_file("share/microchip" "arith_map.v") add_share_file("share/microchip" "cells_map.v") diff --git a/techlibs/nanoxplore/CMakeLists.txt b/techlibs/nanoxplore/CMakeLists.txt index 196307d5437..4db2ef33bcd 100644 --- a/techlibs/nanoxplore/CMakeLists.txt +++ b/techlibs/nanoxplore/CMakeLists.txt @@ -1,11 +1,12 @@ -add_library(yosys_techlibs_nanoxplore INTERFACE) -target_sources(yosys_techlibs_nanoxplore INTERFACE + +add_library(yosys_techlibs_nanoxplore OBJECT synth_nanoxplore.cc nx_carry.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_nanoxplore) +target_sources(yosys PUBLIC $) # Techmap add_share_file("share/nanoxplore" "arith_map.v") diff --git a/techlibs/nexus/CMakeLists.txt b/techlibs/nexus/CMakeLists.txt index caf9652418b..8d11a2b1de7 100644 --- a/techlibs/nexus/CMakeLists.txt +++ b/techlibs/nexus/CMakeLists.txt @@ -1,10 +1,11 @@ -add_library(yosys_techlibs_nexus INTERFACE) -target_sources(yosys_techlibs_nexus INTERFACE + +add_library(yosys_techlibs_nexus OBJECT synth_nexus.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_nexus) +target_sources(yosys PUBLIC $) add_share_file("share/nexus" "cells_map.v") add_share_file("share/nexus" "cells_sim.v") diff --git a/techlibs/quicklogic/CMakeLists.txt b/techlibs/quicklogic/CMakeLists.txt index 27e486c95ea..8cb170680fc 100644 --- a/techlibs/quicklogic/CMakeLists.txt +++ b/techlibs/quicklogic/CMakeLists.txt @@ -1,4 +1,12 @@ -add_library(yosys_techlibs_quicklogic INTERFACE) +add_library(yosys_techlibs_quicklogic OBJECT + synth_quicklogic.cc + ql_bram_merge.cc + ql_bram_types.cc + ql_dsp_simd.cc + ql_dsp_io_regs.cc + ql_dsp_macc.cc + ql_ioff.cc +) function(pmgen_command _name) set(CUSTOM_TARGET_NAME ${_name}_pm_gen) @@ -15,15 +23,7 @@ endfunction() pmgen_command(ql_dsp_macc) -target_sources(yosys_techlibs_quicklogic INTERFACE - synth_quicklogic.cc - ql_bram_merge.cc - ql_bram_types.cc - ql_dsp_simd.cc - ql_dsp_io_regs.cc - ql_dsp_macc.cc - ql_ioff.cc -) + add_custom_command( COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/qlf_k6n10f @@ -38,7 +38,17 @@ target_sources(yosys_techlibs_quicklogic PUBLIC # ${CMAKE_CURRENT_BINARY_DIR}/qlf_k6n10f/bram_types_sim.v ) +## Custom target to generate the ql_dsp_macc_pm.h file +add_custom_target(yosys_techlibs_quicklogic_gen + DEPENDS + ${CMAKE_CURRENT_BINARY_DIR}/ql_dsp_macc_pm.h + ${CMAKE_CURRENT_BINARY_DIR}/qlf_k6n10f/bram_types_sim.v +) + +add_dependencies(yosys yosys_techlibs_quicklogic_gen) + target_link_libraries(yosys PUBLIC yosys_techlibs_quicklogic) +target_sources(yosys PUBLIC $) add_share_file("share/quicklogic/common" "common/cells_sim.v") add_share_file("share/quicklogic/pp3" "pp3/ffs_map.v") diff --git a/techlibs/sf2/CMakeLists.txt b/techlibs/sf2/CMakeLists.txt index 62b90ddede2..b862b671c7e 100644 --- a/techlibs/sf2/CMakeLists.txt +++ b/techlibs/sf2/CMakeLists.txt @@ -1,10 +1,11 @@ -add_library(yosys_techlibs_sf2 INTERFACE) -target_sources(yosys_techlibs_sf2 INTERFACE + +add_library(yosys_techlibs_sf2 OBJECT synth_sf2.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_sf2) +target_sources(yosys PUBLIC $) add_share_file("share/sf2" "arith_map.v") add_share_file("share/sf2" "cells_map.v") diff --git a/techlibs/xilinx/CMakeLists.txt b/techlibs/xilinx/CMakeLists.txt index dcf139ac386..a7b15e1347e 100644 --- a/techlibs/xilinx/CMakeLists.txt +++ b/techlibs/xilinx/CMakeLists.txt @@ -1,11 +1,12 @@ -add_library(yosys_techlibs_xilinx INTERFACE) -target_sources(yosys_techlibs_xilinx INTERFACE + +add_library(yosys_techlibs_xilinx OBJECT synth_xilinx.cc xilinx_dffopt.cc ) target_link_libraries(yosys PUBLIC yosys_techlibs_xilinx) +target_sources(yosys PUBLIC $) add_share_file("share/xilinx" "cells_map.v") add_share_file("share/xilinx" "cells_sim.v") From ad800f70491932935f0fefc0a5d4eaff8fa5c1e2 Mon Sep 17 00:00:00 2001 From: Nick Allison <99363282+nickrallison@users.noreply.github.com> Date: Wed, 16 Jul 2025 13:27:29 -0600 Subject: [PATCH 4/6] CMake: CMAKE_CXX_KNOWN_FEATURES & yosys-config separate file --- CMakeLists.txt | 118 ++++++++-------------------------------- cmake/YosysConfig.cmake | 95 ++++++++++++++++++++++++++++++++ 2 files changed, 118 insertions(+), 95 deletions(-) create mode 100644 cmake/YosysConfig.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 3adb3bc84cd..cafe79e3b57 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -62,7 +62,28 @@ if (ENABLE_ABC) add_custom_target(yosys-abc-copy ALL DEPENDS ${yosys_BINARY_DIR}/yosys-abc) endif() -set(CMAKE_CXX_STANDARD ${CXXSTD}) +get_property(cxx_features GLOBAL PROPERTY CMAKE_CXX_KNOWN_FEATURES) +if(NOT CMAKE_CXX_STANDARD) + if("cxx_std_20" IN_LIST cxx_features) + message(STATUS "C++20 support enabled") + set(CMAKE_CXX_STANDARD 20) + elseif("cxx_std_17" IN_LIST cxx_features) + message(STATUS "C++17 support enabled") + set(CMAKE_CXX_STANDARD 17) + elseif("cxx_std_14" IN_LIST cxx_features) + message(STATUS "C++14 support enabled") + set(CMAKE_CXX_STANDARD 14) + elseif("cxx_std_11" IN_LIST cxx_features) + message(STATUS "C++11 support enabled") + set(CMAKE_CXX_STANDARD 11) + else() + message(STATUS "C++98 support enabled") + set(CMAKE_CXX_STANDARD 98) + endif() +else() + message(STATUS "C++ standard set to ${CMAKE_CXX_STANDARD}") +endif() + set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) @@ -307,100 +328,7 @@ install(TARGETS yosys_exe RUNTIME DESTINATION .) #### yosys-config setup #### -# compiler -get_filename_component(_CXX_BASENAME "${CMAKE_CXX_COMPILER}" NAME) -set(YOSYS_CFG_CXX "${_CXX_BASENAME}" - CACHE STRING "C++ compiler that appears in yosys-config") - -# compile flags -set(_CFG_CXXFLAGS - -Wall -Wextra -ggdb - "-I\"${CMAKE_INSTALL_PREFIX}/share/yosys/include\"" - -MD -MP -D_YOSYS_ -fPIC - -DYOSYS_VERSION="${YOSYS_VER}" - -std=c++${CXXSTD} -O3) - -if (ENABLE_READLINE) - list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_READLINE) -endif() -if (ENABLE_PLUGINS) - list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_PLUGINS) -endif() -if (ENABLE_GLOB) - list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_GLOB) -endif() -if (ENABLE_ZLIB) - list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_ZLIB) -endif() -if (ENABLE_TCL) - list(APPEND _CFG_CXXFLAGS -I${TCL_INCLUDE_PATH} -DYOSYS_ENABLE_TCL) -endif() -if (ENABLE_ABC) - list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_ABC) -endif() -if (ENABLE_COVER) - list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_COVER) -endif() - -string (REPLACE ";" " " YOSYS_CFG_CXXFLAGS "${_CFG_CXXFLAGS}") - -# link flags -set(YOSYS_CFG_LINKFLAGS "-rdynamic" CACHE STRING "link flags for yosys-config") - -# libraries -set(_CFG_LIBS -lstdc++ -lm) -if (NOT (${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")) - list(APPEND _CFG_LIBS -lrt) -endif() -if (ENABLE_READLINE) - list(APPEND _CFG_LIBS -lreadline) -endif() -if (ENABLE_PLUGINS) - list(APPEND _CFG_LIBS -lffi) - if (NOT APPLE) - list(APPEND _CFG_LIBS -ldl) - endif() -endif() -if (ENABLE_ZLIB) - list(APPEND _CFG_LIBS -lz) -endif() -if (ENABLE_TCL) - get_filename_component(_TCL "${TCL_LIBRARY}" NAME_WE) - string(REGEX REPLACE "^lib" "" _TCL "${_TCL}") - list(APPEND _CFG_LIBS "-l${_TCL}") -endif() -string (REPLACE ";" " " YOSYS_CFG_LIBS "${_CFG_LIBS}") - -# bindir / datadir (installation paths) -set(YOSYS_CFG_PREFIX "/usr/local" - CACHE STRING "prefix that yosys-config reports") - -set(YOSYS_CFG_BINDIR "${YOSYS_CFG_PREFIX}/bin") -set(YOSYS_CFG_DATDIR "${YOSYS_CFG_PREFIX}/share/yosys") - -# abort if something is missing -foreach(var YOSYS_CFG_CXX YOSYS_CFG_CXXFLAGS YOSYS_CFG_LINKFLAGS - YOSYS_CFG_LIBS YOSYS_CFG_BINDIR YOSYS_CFG_DATDIR) - if("${${var}}" STREQUAL "") - message(FATAL_ERROR "${var} is empty – cannot create yosys-config") - endif() -endforeach() - -set(CXX "${YOSYS_CFG_CXX}") -set(CXXFLAGS "${YOSYS_CFG_CXXFLAGS}") -set(LINKFLAGS "${YOSYS_CFG_LINKFLAGS}") -set(LIBS "${YOSYS_CFG_LIBS}") -set(BINDIR "${YOSYS_CFG_BINDIR}") -set(DATDIR "${YOSYS_CFG_DATDIR}") - -configure_file(misc/yosys-config.in ${yosys_BINARY_DIR}/yosys-config @ONLY) -file(CHMOD ${yosys_BINARY_DIR}/yosys-config - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE - GROUP_READ GROUP_EXECUTE - WORLD_READ WORLD_EXECUTE) - -add_custom_target(yosys-config-copy ALL - DEPENDS ${yosys_BINARY_DIR}/yosys-config) +include(cmake/YosysConfig.cmake) #### INSTALL #### install(TARGETS yosys diff --git a/cmake/YosysConfig.cmake b/cmake/YosysConfig.cmake new file mode 100644 index 00000000000..9367483644b --- /dev/null +++ b/cmake/YosysConfig.cmake @@ -0,0 +1,95 @@ +#### yosys-config setup #### +# compiler +get_filename_component(_CXX_BASENAME "${CMAKE_CXX_COMPILER}" NAME) +set(YOSYS_CFG_CXX "${_CXX_BASENAME}" + CACHE STRING "C++ compiler that appears in yosys-config") + +# compile flags +set(_CFG_CXXFLAGS + -Wall -Wextra -ggdb + "-I\"${CMAKE_INSTALL_PREFIX}/share/yosys/include\"" + -MD -MP -D_YOSYS_ -fPIC + -DYOSYS_VERSION="${YOSYS_VER}" + -std=c++${CXXSTD} -O3) + +if (ENABLE_READLINE) + list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_READLINE) +endif() +if (ENABLE_PLUGINS) + list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_PLUGINS) +endif() +if (ENABLE_GLOB) + list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_GLOB) +endif() +if (ENABLE_ZLIB) + list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_ZLIB) +endif() +if (ENABLE_TCL) + list(APPEND _CFG_CXXFLAGS -I${TCL_INCLUDE_PATH} -DYOSYS_ENABLE_TCL) +endif() +if (ENABLE_ABC) + list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_ABC) +endif() +if (ENABLE_COVER) + list(APPEND _CFG_CXXFLAGS -DYOSYS_ENABLE_COVER) +endif() + +string (REPLACE ";" " " YOSYS_CFG_CXXFLAGS "${_CFG_CXXFLAGS}") + +# link flags +set(YOSYS_CFG_LINKFLAGS "-rdynamic" CACHE STRING "link flags for yosys-config") + +# libraries +set(_CFG_LIBS -lstdc++ -lm) +if (NOT (${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")) + list(APPEND _CFG_LIBS -lrt) +endif() +if (ENABLE_READLINE) + list(APPEND _CFG_LIBS -lreadline) +endif() +if (ENABLE_PLUGINS) + list(APPEND _CFG_LIBS -lffi) + if (NOT APPLE) + list(APPEND _CFG_LIBS -ldl) + endif() +endif() +if (ENABLE_ZLIB) + list(APPEND _CFG_LIBS -lz) +endif() +if (ENABLE_TCL) + get_filename_component(_TCL "${TCL_LIBRARY}" NAME_WE) + string(REGEX REPLACE "^lib" "" _TCL "${_TCL}") + list(APPEND _CFG_LIBS "-l${_TCL}") +endif() +string (REPLACE ";" " " YOSYS_CFG_LIBS "${_CFG_LIBS}") + +# bindir / datadir (installation paths) +set(YOSYS_CFG_PREFIX "/usr/local" + CACHE STRING "prefix that yosys-config reports") + +set(YOSYS_CFG_BINDIR "${YOSYS_CFG_PREFIX}/bin") +set(YOSYS_CFG_DATDIR "${YOSYS_CFG_PREFIX}/share/yosys") + +# abort if something is missing +foreach(var YOSYS_CFG_CXX YOSYS_CFG_CXXFLAGS YOSYS_CFG_LINKFLAGS + YOSYS_CFG_LIBS YOSYS_CFG_BINDIR YOSYS_CFG_DATDIR) + if("${${var}}" STREQUAL "") + message(FATAL_ERROR "${var} is empty – cannot create yosys-config") + endif() +endforeach() + +set(CXX "${YOSYS_CFG_CXX}") +set(CXXFLAGS "${YOSYS_CFG_CXXFLAGS}") +set(LINKFLAGS "${YOSYS_CFG_LINKFLAGS}") +set(LIBS "${YOSYS_CFG_LIBS}") +set(BINDIR "${YOSYS_CFG_BINDIR}") +set(DATDIR "${YOSYS_CFG_DATDIR}") + +configure_file(misc/yosys-config.in ${yosys_BINARY_DIR}/yosys-config @ONLY) +file(CHMOD ${yosys_BINARY_DIR}/yosys-config + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE + GROUP_READ GROUP_EXECUTE + WORLD_READ WORLD_EXECUTE) + +add_custom_target(yosys-config-copy ALL + DEPENDS ${yosys_BINARY_DIR}/yosys-config) \ No newline at end of file From 80517243c93dea3777d60f0882f28eef09332d8f Mon Sep 17 00:00:00 2001 From: Nick Allison <99363282+nickrallison@users.noreply.github.com> Date: Wed, 16 Jul 2025 13:58:17 -0600 Subject: [PATCH 5/6] CMake: Rename Object Library for Ninja Build & Changed install location --- CMakeLists.txt | 49 ++++++++++++++--------------- backends/aiger/CMakeLists.txt | 4 +-- backends/aiger2/CMakeLists.txt | 4 +-- backends/blif/CMakeLists.txt | 4 +-- backends/btor/CMakeLists.txt | 4 +-- backends/cxxrtl/CMakeLists.txt | 4 +-- backends/edif/CMakeLists.txt | 4 +-- backends/firrtl/CMakeLists.txt | 4 +-- backends/functional/CMakeLists.txt | 4 +-- backends/intersynth/CMakeLists.txt | 4 +-- backends/jny/CMakeLists.txt | 4 +-- backends/json/CMakeLists.txt | 4 +-- backends/rtlil/CMakeLists.txt | 4 +-- backends/simplec/CMakeLists.txt | 4 +-- backends/smt2/CMakeLists.txt | 4 +-- backends/smv/CMakeLists.txt | 4 +-- backends/spice/CMakeLists.txt | 4 +-- backends/table/CMakeLists.txt | 4 +-- backends/verilog/CMakeLists.txt | 4 +-- frontends/aiger/CMakeLists.txt | 4 +-- frontends/aiger2/CMakeLists.txt | 4 +-- frontends/ast/CMakeLists.txt | 4 +-- frontends/blif/CMakeLists.txt | 4 +-- frontends/json/CMakeLists.txt | 4 +-- frontends/liberty/CMakeLists.txt | 4 +-- frontends/rpc/CMakeLists.txt | 4 +-- frontends/rtlil/CMakeLists.txt | 6 ++-- frontends/verific/CMakeLists.txt | 4 +-- frontends/verilog/CMakeLists.txt | 6 ++-- kernel/CMakeLists.txt | 4 +-- libs/CMakeLists.txt | 4 +-- passes/cmds/CMakeLists.txt | 4 +-- passes/equiv/CMakeLists.txt | 4 +-- passes/fsm/CMakeLists.txt | 4 +-- passes/hierarchy/CMakeLists.txt | 4 +-- passes/memory/CMakeLists.txt | 4 +-- passes/opt/CMakeLists.txt | 4 +-- passes/pmgen/CMakeLists.txt | 4 +-- passes/proc/CMakeLists.txt | 4 +-- passes/sat/CMakeLists.txt | 4 +-- passes/techmap/CMakeLists.txt | 4 +-- passes/tests/CMakeLists.txt | 4 +-- scripts/debug_build.sh | 4 +-- techlibs/achronix/CMakeLists.txt | 4 +-- techlibs/anlogic/CMakeLists.txt | 4 +-- techlibs/common/CMakeLists.txt | 4 +-- techlibs/coolrunner2/CMakeLists.txt | 4 +-- techlibs/easic/CMakeLists.txt | 4 +-- techlibs/ecp5/CMakeLists.txt | 4 +-- techlibs/efinix/CMakeLists.txt | 4 +-- techlibs/fabulous/CMakeLists.txt | 4 +-- techlibs/gatemate/CMakeLists.txt | 4 +-- techlibs/gowin/CMakeLists.txt | 4 +-- techlibs/greenpak4/CMakeLists.txt | 4 +-- techlibs/ice40/CMakeLists.txt | 4 +-- techlibs/intel/CMakeLists.txt | 4 +-- techlibs/intel_alm/CMakeLists.txt | 4 +-- techlibs/lattice/CMakeLists.txt | 4 +-- techlibs/microchip/CMakeLists.txt | 4 +-- techlibs/nanoxplore/CMakeLists.txt | 4 +-- techlibs/nexus/CMakeLists.txt | 4 +-- techlibs/quicklogic/CMakeLists.txt | 6 ++-- techlibs/sf2/CMakeLists.txt | 4 +-- techlibs/xilinx/CMakeLists.txt | 4 +-- 64 files changed, 152 insertions(+), 155 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cafe79e3b57..85b7b70515f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,15 +95,15 @@ find_package(FLEX 2.6 REQUIRED) find_package(BISON 3.0 REQUIRED) find_package(Python3 3.5 REQUIRED COMPONENTS Interpreter) -add_library(yosys OBJECT) +add_library(yosys_obj OBJECT) include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}) -target_include_directories(yosys PUBLIC +target_include_directories(yosys_obj PUBLIC ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} ) add_compile_definitions(_YOSYS_) -target_compile_definitions(yosys PUBLIC _YOSYS_) +target_compile_definitions(yosys_obj PUBLIC _YOSYS_) if (ENABLE_READLINE AND ENABLE_EDITLINE) message(FATAL_ERROR "Not possible to enable both ENABLE_READLINE and ENABLE_EDITLINE") @@ -112,26 +112,26 @@ endif() if (ENABLE_READLINE) find_package(Readline REQUIRED) add_compile_definitions(YOSYS_ENABLE_READLINE) - target_link_libraries(yosys PUBLIC ${READLINE_LIBRARY}) + target_link_libraries(yosys_obj PUBLIC ${READLINE_LIBRARY}) endif() if (ENABLE_EDITLINE) find_package(Editline REQUIRED) add_compile_definitions(YOSYS_ENABLE_EDITLINE) - target_link_libraries(yosys PUBLIC ${EDITLINE_LIBRARY}) + target_link_libraries(yosys_obj PUBLIC ${EDITLINE_LIBRARY}) endif() if (ENABLE_TCL) find_package(TCL 8.6 REQUIRED) add_compile_definitions(YOSYS_ENABLE_TCL) - target_include_directories(yosys PUBLIC ${TCL_INCLUDE_PATH}) - target_link_libraries(yosys PUBLIC ${TCL_LIBRARY}) + target_include_directories(yosys_obj PUBLIC ${TCL_INCLUDE_PATH}) + target_link_libraries(yosys_obj PUBLIC ${TCL_LIBRARY}) endif() if (ENABLE_ZLIB) find_package(ZLIB REQUIRED) add_compile_definitions(YOSYS_ENABLE_ZLIB) - target_link_libraries(yosys PUBLIC ZLIB::ZLIB) + target_link_libraries(yosys_obj PUBLIC ZLIB::ZLIB) endif() if (ENABLE_COVER) @@ -164,8 +164,8 @@ if (ENABLE_ABC) add_compile_definitions(YOSYS_ENABLE_ABC) if (LINK_ABC) add_compile_definitions(YOSYS_LINK_ABC) - target_link_libraries(yosys PUBLIC $) - add_dependencies(yosys libabc) + target_link_libraries(yosys_obj PUBLIC $) + add_dependencies(yosys_obj libabc) endif() endif() @@ -173,7 +173,7 @@ if (ENABLE_PLUGINS) find_package(LibFFI REQUIRED) add_compile_definitions(YOSYS_ENABLE_PLUGINS) include_directories(${LIBFFI_INCLUDE_DIR}) - target_link_libraries(yosys PUBLIC ${LIBFFI_LIBRARY}) + target_link_libraries(yosys_obj PUBLIC ${LIBFFI_LIBRARY}) endif() if (DISABLE_SPAWN) @@ -310,37 +310,34 @@ set_property(SOURCE kernel/log.cc APPEND PROPERTY COMPILE_DEFINITIONS YOSYS_SRC= if (ENABLE_LIBYOSYS) add_library(yosys_shared SHARED - $ + $ ) - target_link_libraries(yosys_shared PUBLIC yosys) - set_target_properties(yosys_shared PROPERTIES OUTPUT_NAME yosys) + target_link_libraries(yosys_shared PUBLIC yosys_obj) + # set_target_properties(yosys_shared PROPERTIES OUTPUT_NAME yosys) install(TARGETS yosys_shared - LIBRARY DESTINATION .) + LIBRARY DESTINATION lib) endif() add_executable(yosys_exe kernel/driver.cc - $ + $ ) -target_link_libraries(yosys_exe PUBLIC yosys) +target_link_libraries(yosys_exe PUBLIC yosys_obj) set_target_properties(yosys_exe PROPERTIES OUTPUT_NAME yosys) install(TARGETS yosys_exe - RUNTIME DESTINATION .) + RUNTIME DESTINATION bin) #### yosys-config setup #### include(cmake/YosysConfig.cmake) #### INSTALL #### -install(TARGETS yosys - RUNTIME DESTINATION .) - if (ENABLE_ABC) install(PROGRAMS $ - DESTINATION . + DESTINATION bin RENAME yosys-abc) endif() -install(PROGRAMS ${yosys_BINARY_DIR}/yosys-config DESTINATION .) +install(PROGRAMS ${yosys_BINARY_DIR}/yosys-config DESTINATION bin) #### TESTING #### include(cmake/TestFiles.cmake) @@ -358,7 +355,7 @@ foreach(dir IN LISTS SH_TEST_DIRS) ) set_tests_properties(seed-tests.${name} PROPERTIES ENVIRONMENT "${_YOSYS_TEST_ENV}" - DEPENDS yosys) + DEPENDS yosys_exe) endforeach() foreach(dir IN LISTS SH_ABC_TEST_DIRS) @@ -370,7 +367,7 @@ foreach(dir IN LISTS SH_ABC_TEST_DIRS) ) set_tests_properties(abcopt-tests.${name} PROPERTIES ENVIRONMENT "${_YOSYS_TEST_ENV}" - DEPENDS yosys) + DEPENDS yosys_exe) endforeach() foreach(dir IN LISTS MK_TEST_DIRS) @@ -386,5 +383,5 @@ foreach(dir IN LISTS MK_TEST_DIRS) ) set_tests_properties(makefile-tests.${name} PROPERTIES ENVIRONMENT "${_YOSYS_TEST_ENV}" - DEPENDS yosys) + DEPENDS yosys_exe) endforeach() diff --git a/backends/aiger/CMakeLists.txt b/backends/aiger/CMakeLists.txt index 9deb6b4ef57..946cce7b2c4 100644 --- a/backends/aiger/CMakeLists.txt +++ b/backends/aiger/CMakeLists.txt @@ -5,5 +5,5 @@ add_library(yosys_backends_aiger OBJECT xaiger.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_aiger) -target_sources(yosys PUBLIC $) \ No newline at end of file +target_link_libraries(yosys_obj PUBLIC yosys_backends_aiger) +target_sources(yosys_obj PUBLIC $) \ No newline at end of file diff --git a/backends/aiger2/CMakeLists.txt b/backends/aiger2/CMakeLists.txt index 8fd7ffc6184..3edc2943c20 100644 --- a/backends/aiger2/CMakeLists.txt +++ b/backends/aiger2/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_backends_aiger2 OBJECT aiger.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_aiger2) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_aiger2) +target_sources(yosys_obj PUBLIC $) diff --git a/backends/blif/CMakeLists.txt b/backends/blif/CMakeLists.txt index 047e99b112a..3614aafc88a 100644 --- a/backends/blif/CMakeLists.txt +++ b/backends/blif/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_backends_blif OBJECT blif.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_blif) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_blif) +target_sources(yosys_obj PUBLIC $) diff --git a/backends/btor/CMakeLists.txt b/backends/btor/CMakeLists.txt index 3f5fe2e972e..87f29d1d316 100644 --- a/backends/btor/CMakeLists.txt +++ b/backends/btor/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_backends_btor OBJECT btor.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_btor) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_btor) +target_sources(yosys_obj PUBLIC $) diff --git a/backends/cxxrtl/CMakeLists.txt b/backends/cxxrtl/CMakeLists.txt index 5cc9b01b1db..c782bfe206a 100644 --- a/backends/cxxrtl/CMakeLists.txt +++ b/backends/cxxrtl/CMakeLists.txt @@ -4,8 +4,8 @@ add_library(yosys_backends_cxxrtl OBJECT cxxrtl_backend.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_cxxrtl) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_cxxrtl) +target_sources(yosys_obj PUBLIC $) add_include_file("backends/cxxrtl/runtime/cxxrtl" "runtime/cxxrtl/cxxrtl.h") add_include_file("backends/cxxrtl/runtime/cxxrtl" "runtime/cxxrtl/cxxrtl_vcd.h") diff --git a/backends/edif/CMakeLists.txt b/backends/edif/CMakeLists.txt index cebd79b8d88..7bf91d3bd40 100644 --- a/backends/edif/CMakeLists.txt +++ b/backends/edif/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_backends_edif OBJECT edif.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_edif) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_edif) +target_sources(yosys_obj PUBLIC $) diff --git a/backends/firrtl/CMakeLists.txt b/backends/firrtl/CMakeLists.txt index 975c31c8391..8a6225f065b 100644 --- a/backends/firrtl/CMakeLists.txt +++ b/backends/firrtl/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_backends_firrtl OBJECT firrtl.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_firrtl) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_firrtl) +target_sources(yosys_obj PUBLIC $) diff --git a/backends/functional/CMakeLists.txt b/backends/functional/CMakeLists.txt index a18f9435261..bc3c4f91784 100644 --- a/backends/functional/CMakeLists.txt +++ b/backends/functional/CMakeLists.txt @@ -7,5 +7,5 @@ add_library(yosys_backends_functional OBJECT test_generic.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_functional) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_functional) +target_sources(yosys_obj PUBLIC $) diff --git a/backends/intersynth/CMakeLists.txt b/backends/intersynth/CMakeLists.txt index 7fe12a221f9..7bee470ed5d 100644 --- a/backends/intersynth/CMakeLists.txt +++ b/backends/intersynth/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_backends_intersynth OBJECT intersynth.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_intersynth) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_intersynth) +target_sources(yosys_obj PUBLIC $) diff --git a/backends/jny/CMakeLists.txt b/backends/jny/CMakeLists.txt index 8985d85163a..2072f7af7f2 100644 --- a/backends/jny/CMakeLists.txt +++ b/backends/jny/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_backends_jny OBJECT jny.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_jny) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_jny) +target_sources(yosys_obj PUBLIC $) diff --git a/backends/json/CMakeLists.txt b/backends/json/CMakeLists.txt index 4ed5b684662..0b524e739f8 100644 --- a/backends/json/CMakeLists.txt +++ b/backends/json/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_backends_json OBJECT json.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_json) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_json) +target_sources(yosys_obj PUBLIC $) diff --git a/backends/rtlil/CMakeLists.txt b/backends/rtlil/CMakeLists.txt index c9154e8eedc..456ea6a798c 100644 --- a/backends/rtlil/CMakeLists.txt +++ b/backends/rtlil/CMakeLists.txt @@ -5,5 +5,5 @@ add_library(yosys_backends_rtlil OBJECT rtlil_backend.h ) -target_link_libraries(yosys PUBLIC yosys_backends_rtlil) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_rtlil) +target_sources(yosys_obj PUBLIC $) diff --git a/backends/simplec/CMakeLists.txt b/backends/simplec/CMakeLists.txt index 75d4e8550ba..15df9e84f1e 100644 --- a/backends/simplec/CMakeLists.txt +++ b/backends/simplec/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_backends_simplec OBJECT simplec.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_simplec) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_simplec) +target_sources(yosys_obj PUBLIC $) diff --git a/backends/smt2/CMakeLists.txt b/backends/smt2/CMakeLists.txt index cb1510e582e..65820256ed6 100644 --- a/backends/smt2/CMakeLists.txt +++ b/backends/smt2/CMakeLists.txt @@ -4,8 +4,8 @@ add_library(yosys_backends_smt2 OBJECT smt2.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_smt2) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_smt2) +target_sources(yosys_obj PUBLIC $) add_share_file("share/python3" "smtio.py") add_share_file("share/python3" "ywio.py") diff --git a/backends/smv/CMakeLists.txt b/backends/smv/CMakeLists.txt index 664467954eb..ab2f464e9db 100644 --- a/backends/smv/CMakeLists.txt +++ b/backends/smv/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_backends_smv OBJECT smv.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_smv) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_smv) +target_sources(yosys_obj PUBLIC $) diff --git a/backends/spice/CMakeLists.txt b/backends/spice/CMakeLists.txt index f3a138a2380..d2d113378d4 100644 --- a/backends/spice/CMakeLists.txt +++ b/backends/spice/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_backends_spice OBJECT spice.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_spice) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_spice) +target_sources(yosys_obj PUBLIC $) diff --git a/backends/table/CMakeLists.txt b/backends/table/CMakeLists.txt index 4dbdeb375a9..4fb50bfee41 100644 --- a/backends/table/CMakeLists.txt +++ b/backends/table/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_backends_table OBJECT table.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_table) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_table) +target_sources(yosys_obj PUBLIC $) diff --git a/backends/verilog/CMakeLists.txt b/backends/verilog/CMakeLists.txt index de360e252ee..c47837edad4 100644 --- a/backends/verilog/CMakeLists.txt +++ b/backends/verilog/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_backends_verilog OBJECT verilog_backend.cc ) -target_link_libraries(yosys PUBLIC yosys_backends_verilog) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_backends_verilog) +target_sources(yosys_obj PUBLIC $) diff --git a/frontends/aiger/CMakeLists.txt b/frontends/aiger/CMakeLists.txt index 429ef96551d..006a86a9ef1 100644 --- a/frontends/aiger/CMakeLists.txt +++ b/frontends/aiger/CMakeLists.txt @@ -5,5 +5,5 @@ add_library(yosys_frontends_aiger OBJECT aigerparse.h ) -target_link_libraries(yosys PUBLIC yosys_frontends_aiger) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_frontends_aiger) +target_sources(yosys_obj PUBLIC $) diff --git a/frontends/aiger2/CMakeLists.txt b/frontends/aiger2/CMakeLists.txt index a650135d622..4fb9ae0e766 100644 --- a/frontends/aiger2/CMakeLists.txt +++ b/frontends/aiger2/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_frontends_aiger2 OBJECT xaiger.cc ) -target_link_libraries(yosys PUBLIC yosys_frontends_aiger2) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_frontends_aiger2) +target_sources(yosys_obj PUBLIC $) diff --git a/frontends/ast/CMakeLists.txt b/frontends/ast/CMakeLists.txt index 75b65043464..6cee6416688 100644 --- a/frontends/ast/CMakeLists.txt +++ b/frontends/ast/CMakeLists.txt @@ -10,5 +10,5 @@ add_library(yosys_frontends_ast OBJECT simplify.cc ) -target_link_libraries(yosys PUBLIC yosys_frontends_ast) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_frontends_ast) +target_sources(yosys_obj PUBLIC $) diff --git a/frontends/blif/CMakeLists.txt b/frontends/blif/CMakeLists.txt index 348372b0263..615af8d76c0 100644 --- a/frontends/blif/CMakeLists.txt +++ b/frontends/blif/CMakeLists.txt @@ -5,5 +5,5 @@ add_library(yosys_frontends_blif OBJECT blifparse.h ) -target_link_libraries(yosys PUBLIC yosys_frontends_blif) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_frontends_blif) +target_sources(yosys_obj PUBLIC $) diff --git a/frontends/json/CMakeLists.txt b/frontends/json/CMakeLists.txt index c2a658ef2d8..f688d4299b0 100644 --- a/frontends/json/CMakeLists.txt +++ b/frontends/json/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_frontends_json OBJECT jsonparse.cc ) -target_link_libraries(yosys PUBLIC yosys_frontends_json) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_frontends_json) +target_sources(yosys_obj PUBLIC $) diff --git a/frontends/liberty/CMakeLists.txt b/frontends/liberty/CMakeLists.txt index 9de37e8a78f..069dbb1e917 100644 --- a/frontends/liberty/CMakeLists.txt +++ b/frontends/liberty/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_frontends_liberty OBJECT liberty.cc ) -target_link_libraries(yosys PUBLIC yosys_frontends_liberty) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_frontends_liberty) +target_sources(yosys_obj PUBLIC $) diff --git a/frontends/rpc/CMakeLists.txt b/frontends/rpc/CMakeLists.txt index 6261c15f70d..812f89c5ec9 100644 --- a/frontends/rpc/CMakeLists.txt +++ b/frontends/rpc/CMakeLists.txt @@ -5,6 +5,6 @@ if (NOT DISABLE_SPAWN) rpc_frontend.cc ) - target_link_libraries(yosys PUBLIC yosys_frontends_rpc) - target_sources(yosys PUBLIC $) + target_link_libraries(yosys_obj PUBLIC yosys_frontends_rpc) + target_sources(yosys_obj PUBLIC $) endif() diff --git a/frontends/rtlil/CMakeLists.txt b/frontends/rtlil/CMakeLists.txt index a69eda37052..6dd3ec8ac06 100644 --- a/frontends/rtlil/CMakeLists.txt +++ b/frontends/rtlil/CMakeLists.txt @@ -13,6 +13,6 @@ add_library(yosys_frontends_rtlil_gen OBJECT ${FLEX_RTLIL_LEXER_OUTPUTS} ${BISON_RTLIL_PARSER_OUTPUTS} ) -target_link_libraries(yosys PUBLIC yosys_frontends_rtlil yosys_frontends_rtlil_gen) -target_sources(yosys PUBLIC $) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_frontends_rtlil yosys_frontends_rtlil_gen) +target_sources(yosys_obj PUBLIC $) +target_sources(yosys_obj PUBLIC $) diff --git a/frontends/verific/CMakeLists.txt b/frontends/verific/CMakeLists.txt index f98056c20c9..3daddf6dbc9 100644 --- a/frontends/verific/CMakeLists.txt +++ b/frontends/verific/CMakeLists.txt @@ -5,5 +5,5 @@ add_library(yosys_frontends_verific OBJECT #verificsva.cc ) -target_link_libraries(yosys PUBLIC yosys_frontends_verific) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_frontends_verific) +target_sources(yosys_obj PUBLIC $) diff --git a/frontends/verilog/CMakeLists.txt b/frontends/verilog/CMakeLists.txt index 30cdfc3f100..fee8bb2e4b2 100644 --- a/frontends/verilog/CMakeLists.txt +++ b/frontends/verilog/CMakeLists.txt @@ -43,6 +43,6 @@ add_library(yosys_frontends_verilog_gen OBJECT #${CMAKE_CURRENT_BINARY_DIR}/verilog_parser.tab.cc #${CMAKE_CURRENT_BINARY_DIR}/verilog_parser.tab.hh ) -target_link_libraries(yosys PUBLIC yosys_frontends_verilog yosys_frontends_verilog_gen) -target_sources(yosys PUBLIC $) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_frontends_verilog yosys_frontends_verilog_gen) +target_sources(yosys_obj PUBLIC $) +target_sources(yosys_obj PUBLIC $) diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt index 581035fdb9a..5eecd20016b 100644 --- a/kernel/CMakeLists.txt +++ b/kernel/CMakeLists.txt @@ -93,5 +93,5 @@ endif() add_dependencies(yosys_kernel yosys_techlib_common) -target_link_libraries(yosys PUBLIC yosys_kernel) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_kernel) +target_sources(yosys_obj PUBLIC $) diff --git a/libs/CMakeLists.txt b/libs/CMakeLists.txt index 13e6d648ab7..aa3e46e9bc3 100644 --- a/libs/CMakeLists.txt +++ b/libs/CMakeLists.txt @@ -67,5 +67,5 @@ target_sources(yosys_libs PRIVATE ) endif() -target_link_libraries(yosys PUBLIC yosys_libs) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_libs) +target_sources(yosys_obj PUBLIC $) diff --git a/passes/cmds/CMakeLists.txt b/passes/cmds/CMakeLists.txt index 738b3a29641..4093e45f078 100644 --- a/passes/cmds/CMakeLists.txt +++ b/passes/cmds/CMakeLists.txt @@ -60,5 +60,5 @@ target_sources(yosys_passes_cmds PRIVATE ) endif() -target_link_libraries(yosys PUBLIC yosys_passes_cmds) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_passes_cmds) +target_sources(yosys_obj PUBLIC $) diff --git a/passes/equiv/CMakeLists.txt b/passes/equiv/CMakeLists.txt index 541107e13c3..498b5f60136 100644 --- a/passes/equiv/CMakeLists.txt +++ b/passes/equiv/CMakeLists.txt @@ -14,5 +14,5 @@ add_library(yosys_passes_equiv OBJECT equiv_opt.cc ) -target_link_libraries(yosys PUBLIC yosys_passes_equiv) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_passes_equiv) +target_sources(yosys_obj PUBLIC $) diff --git a/passes/fsm/CMakeLists.txt b/passes/fsm/CMakeLists.txt index 2439192ae19..12d8c6d5b99 100644 --- a/passes/fsm/CMakeLists.txt +++ b/passes/fsm/CMakeLists.txt @@ -13,5 +13,5 @@ add_library(yosys_passes_fsm OBJECT fsmdata.h ) -target_link_libraries(yosys PUBLIC yosys_passes_fsm) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_passes_fsm) +target_sources(yosys_obj PUBLIC $) diff --git a/passes/hierarchy/CMakeLists.txt b/passes/hierarchy/CMakeLists.txt index 074b7492e4c..4ece3828040 100644 --- a/passes/hierarchy/CMakeLists.txt +++ b/passes/hierarchy/CMakeLists.txt @@ -7,5 +7,5 @@ add_library(yosys_passes_hierarchy OBJECT keep_hierarchy.cc ) -target_link_libraries(yosys PUBLIC yosys_passes_hierarchy) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_passes_hierarchy) +target_sources(yosys_obj PUBLIC $) diff --git a/passes/memory/CMakeLists.txt b/passes/memory/CMakeLists.txt index 158eea861cb..95b08b09c2d 100644 --- a/passes/memory/CMakeLists.txt +++ b/passes/memory/CMakeLists.txt @@ -17,5 +17,5 @@ add_library(yosys_passes_memory OBJECT memlib.h ) -target_link_libraries(yosys PUBLIC yosys_passes_memory) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_passes_memory) +target_sources(yosys_obj PUBLIC $) diff --git a/passes/opt/CMakeLists.txt b/passes/opt/CMakeLists.txt index 18e68e03e1c..901c0962607 100644 --- a/passes/opt/CMakeLists.txt +++ b/passes/opt/CMakeLists.txt @@ -24,5 +24,5 @@ add_library(yosys_passes_opt OBJECT muxpack.cc ) -target_link_libraries(yosys PUBLIC yosys_passes_opt) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_passes_opt) +target_sources(yosys_obj PUBLIC $) diff --git a/passes/pmgen/CMakeLists.txt b/passes/pmgen/CMakeLists.txt index 58a3ad220ec..1ca23398513 100644 --- a/passes/pmgen/CMakeLists.txt +++ b/passes/pmgen/CMakeLists.txt @@ -74,5 +74,5 @@ add_dependencies(yosys_passes_pmgen peepopt_pm) # target_sources(yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR}/techlibs/xilinx/xilinx_srl_pm.h) -target_link_libraries(yosys PUBLIC yosys_passes_pmgen) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_passes_pmgen) +target_sources(yosys_obj PUBLIC $) diff --git a/passes/proc/CMakeLists.txt b/passes/proc/CMakeLists.txt index 8e56e5eea97..ad0c702ed9d 100644 --- a/passes/proc/CMakeLists.txt +++ b/passes/proc/CMakeLists.txt @@ -14,5 +14,5 @@ add_library(yosys_passes_proc OBJECT proc_memwr.cc ) -target_link_libraries(yosys PUBLIC yosys_passes_proc) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_passes_proc) +target_sources(yosys_obj PUBLIC $) diff --git a/passes/sat/CMakeLists.txt b/passes/sat/CMakeLists.txt index 8cd19ac6808..efc5ab869b7 100644 --- a/passes/sat/CMakeLists.txt +++ b/passes/sat/CMakeLists.txt @@ -32,5 +32,5 @@ target_sources(yosys_passes_sat PRIVATE ) endif() -target_link_libraries(yosys PUBLIC yosys_passes_sat) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_passes_sat) +target_sources(yosys_obj PUBLIC $) diff --git a/passes/techmap/CMakeLists.txt b/passes/techmap/CMakeLists.txt index 1e077f591c7..4ba9a4b4557 100644 --- a/passes/techmap/CMakeLists.txt +++ b/passes/techmap/CMakeLists.txt @@ -53,8 +53,8 @@ if (ENABLE_ABC) ) endif() -target_link_libraries(yosys PUBLIC yosys_passes_techmap) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_passes_techmap) +target_sources(yosys_obj PUBLIC $) if (NOT DISABLE_SPAWN) set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}) diff --git a/passes/tests/CMakeLists.txt b/passes/tests/CMakeLists.txt index e08d4fb6a23..8079307025f 100644 --- a/passes/tests/CMakeLists.txt +++ b/passes/tests/CMakeLists.txt @@ -6,5 +6,5 @@ add_library(yosys_passes_tests OBJECT test_abcloop.cc ) -target_link_libraries(yosys PUBLIC yosys_passes_tests) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_passes_tests) +target_sources(yosys_obj PUBLIC $) diff --git a/scripts/debug_build.sh b/scripts/debug_build.sh index 7909d18dcad..e23eb1a757d 100644 --- a/scripts/debug_build.sh +++ b/scripts/debug_build.sh @@ -8,11 +8,11 @@ git submodule update --init --recursive # 2. Build the project mkdir -p build -cmake -B build -DCMAKE_BUILD_TYPE=Debug -D ENABLE_CCACHE:BOOL=ON -D CMAKE_INSTALL_PREFIX:PATH=/usr/local +cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug -D ENABLE_CCACHE:BOOL=ON -D CMAKE_INSTALL_PREFIX:PATH=/usr/local cmake --build build --parallel $(nproc) # 3. Install the project into test install dir -cmake --install build --prefix . +# cmake --install build --prefix . # 4. Test the project # ctest -j$(nproc) --test-dir build --output-on-failure diff --git a/techlibs/achronix/CMakeLists.txt b/techlibs/achronix/CMakeLists.txt index 71cf692d643..82364e4d293 100644 --- a/techlibs/achronix/CMakeLists.txt +++ b/techlibs/achronix/CMakeLists.txt @@ -4,8 +4,8 @@ add_library(yosys_techlibs_achronix OBJECT synth_achronix.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_achronix) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_achronix) +target_sources(yosys_obj PUBLIC $) add_share_file("share/achronix/speedster22i" "speedster22i/cells_sim.v") add_share_file("share/achronix/speedster22i" "speedster22i/cells_map.v") diff --git a/techlibs/anlogic/CMakeLists.txt b/techlibs/anlogic/CMakeLists.txt index 79b39727bc0..8a66f4f5964 100644 --- a/techlibs/anlogic/CMakeLists.txt +++ b/techlibs/anlogic/CMakeLists.txt @@ -6,8 +6,8 @@ add_library(yosys_techlibs_anlogic OBJECT anlogic_fixcarry.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_anlogic) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_anlogic) +target_sources(yosys_obj PUBLIC $) add_share_file("share/anlogic" "cells_map.v") add_share_file("share/anlogic" "arith_map.v") diff --git a/techlibs/common/CMakeLists.txt b/techlibs/common/CMakeLists.txt index 2729d5c5816..32a13d04317 100644 --- a/techlibs/common/CMakeLists.txt +++ b/techlibs/common/CMakeLists.txt @@ -27,8 +27,8 @@ add_library(yosys_techlib_common OBJECT add_dependencies(yosys_techlib_common yosys_techlib_common_gen) -target_link_libraries(yosys PUBLIC yosys_techlib_common) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlib_common) +target_sources(yosys_obj PUBLIC $) add_share_file("share" "simlib.v") add_share_file("share" "simcells.v") diff --git a/techlibs/coolrunner2/CMakeLists.txt b/techlibs/coolrunner2/CMakeLists.txt index 79941738e54..09a2cdb0afb 100644 --- a/techlibs/coolrunner2/CMakeLists.txt +++ b/techlibs/coolrunner2/CMakeLists.txt @@ -6,8 +6,8 @@ add_library(yosys_techlibs_coolrunner2 OBJECT coolrunner2_fixup.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_coolrunner2) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_coolrunner2) +target_sources(yosys_obj PUBLIC $) add_share_file("share/coolrunner2" "cells_latch.v") add_share_file("share/coolrunner2" "cells_sim.v") diff --git a/techlibs/easic/CMakeLists.txt b/techlibs/easic/CMakeLists.txt index a45b8a6e28d..5d9a37926bd 100644 --- a/techlibs/easic/CMakeLists.txt +++ b/techlibs/easic/CMakeLists.txt @@ -4,5 +4,5 @@ add_library(yosys_techlibs_easic OBJECT synth_easic.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_easic) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_easic) +target_sources(yosys_obj PUBLIC $) diff --git a/techlibs/ecp5/CMakeLists.txt b/techlibs/ecp5/CMakeLists.txt index c0085cb5890..3e6033185fc 100644 --- a/techlibs/ecp5/CMakeLists.txt +++ b/techlibs/ecp5/CMakeLists.txt @@ -4,8 +4,8 @@ add_library(yosys_techlibs_ecp5 OBJECT synth_ecp5.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_ecp5) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_ecp5) +target_sources(yosys_obj PUBLIC $) add_share_file("share/ecp5" "cells_ff.vh") add_share_file("share/ecp5" "cells_io.vh") diff --git a/techlibs/efinix/CMakeLists.txt b/techlibs/efinix/CMakeLists.txt index f137ea974b6..e3f8c4cc02f 100644 --- a/techlibs/efinix/CMakeLists.txt +++ b/techlibs/efinix/CMakeLists.txt @@ -5,8 +5,8 @@ add_library(yosys_techlibs_efinix OBJECT efinix_fixcarry.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_efinix) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_efinix) +target_sources(yosys_obj PUBLIC $) add_share_file("share/efinix" "cells_map.v") add_share_file("share/efinix" "arith_map.v") diff --git a/techlibs/fabulous/CMakeLists.txt b/techlibs/fabulous/CMakeLists.txt index cfe327c20bb..9d20f5d20f9 100644 --- a/techlibs/fabulous/CMakeLists.txt +++ b/techlibs/fabulous/CMakeLists.txt @@ -4,8 +4,8 @@ add_library(yosys_techlibs_fabulous OBJECT synth_fabulous.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_fabulous) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_fabulous) +target_sources(yosys_obj PUBLIC $) add_share_file("share/fabulous" "cells_map.v") add_share_file("share/fabulous" "prims.v") diff --git a/techlibs/gatemate/CMakeLists.txt b/techlibs/gatemate/CMakeLists.txt index dc7fe059262..f4acaed9f54 100644 --- a/techlibs/gatemate/CMakeLists.txt +++ b/techlibs/gatemate/CMakeLists.txt @@ -18,8 +18,8 @@ target_sources(yosys_techlibs_gatemate PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/lut_tree_map.v ) -target_link_libraries(yosys PUBLIC yosys_techlibs_gatemate) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_gatemate) +target_sources(yosys_obj PUBLIC $) add_share_file("share/gatemate" "reg_map.v") add_share_file("share/gatemate" "mux_map.v") diff --git a/techlibs/gowin/CMakeLists.txt b/techlibs/gowin/CMakeLists.txt index 0eb13d04396..33d477740ff 100644 --- a/techlibs/gowin/CMakeLists.txt +++ b/techlibs/gowin/CMakeLists.txt @@ -4,8 +4,8 @@ add_library(yosys_techlibs_gowin OBJECT synth_gowin.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_gowin) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_gowin) +target_sources(yosys_obj PUBLIC $) add_share_file("share/gowin" "cells_map.v") add_share_file("share/gowin" "cells_sim.v") diff --git a/techlibs/greenpak4/CMakeLists.txt b/techlibs/greenpak4/CMakeLists.txt index b4e32057c2f..0777e3ec1ea 100644 --- a/techlibs/greenpak4/CMakeLists.txt +++ b/techlibs/greenpak4/CMakeLists.txt @@ -5,8 +5,8 @@ add_library(yosys_techlibs_greenpak4 OBJECT greenpak4_dffinv.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_greenpak4) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_greenpak4) +target_sources(yosys_obj PUBLIC $) add_share_file("share/greenpak4" "cells_blackbox.v") add_share_file("share/greenpak4" "cells_latch.v") diff --git a/techlibs/ice40/CMakeLists.txt b/techlibs/ice40/CMakeLists.txt index 88f9c726037..a8142dc9871 100644 --- a/techlibs/ice40/CMakeLists.txt +++ b/techlibs/ice40/CMakeLists.txt @@ -6,8 +6,8 @@ add_library(yosys_techlibs_ice40 OBJECT ice40_opt.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_ice40) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_ice40) +target_sources(yosys_obj PUBLIC $) add_share_file("share/ice40" "arith_map.v") add_share_file("share/ice40" "cells_map.v") diff --git a/techlibs/intel/CMakeLists.txt b/techlibs/intel/CMakeLists.txt index f62bea4bb6c..486513c4498 100644 --- a/techlibs/intel/CMakeLists.txt +++ b/techlibs/intel/CMakeLists.txt @@ -4,8 +4,8 @@ add_library(yosys_techlibs_intel OBJECT synth_intel.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_intel) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_intel) +target_sources(yosys_obj PUBLIC $) add_share_file("share/intel/common" "common/m9k_bb.v") add_share_file("share/intel/common" "common/altpll_bb.v") diff --git a/techlibs/intel_alm/CMakeLists.txt b/techlibs/intel_alm/CMakeLists.txt index 5887901b4d5..541f9f67cbe 100644 --- a/techlibs/intel_alm/CMakeLists.txt +++ b/techlibs/intel_alm/CMakeLists.txt @@ -4,8 +4,8 @@ add_library(yosys_techlibs_intel_alm OBJECT synth_intel_alm.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_intel_alm) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_intel_alm) +target_sources(yosys_obj PUBLIC $) # Techmap add_share_file("share/intel_alm/common" "common/abc9_map.v") diff --git a/techlibs/lattice/CMakeLists.txt b/techlibs/lattice/CMakeLists.txt index 029230dd14d..947ce3814aa 100644 --- a/techlibs/lattice/CMakeLists.txt +++ b/techlibs/lattice/CMakeLists.txt @@ -5,8 +5,8 @@ add_library(yosys_techlibs_lattice OBJECT lattice_gsr.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_lattice) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_lattice) +target_sources(yosys_obj PUBLIC $) add_share_file("share/lattice" "cells_ff.vh") add_share_file("share/lattice" "cells_io.vh") diff --git a/techlibs/microchip/CMakeLists.txt b/techlibs/microchip/CMakeLists.txt index c3157f7d30f..795edd4bac6 100644 --- a/techlibs/microchip/CMakeLists.txt +++ b/techlibs/microchip/CMakeLists.txt @@ -5,8 +5,8 @@ add_library(yosys_techlibs_microchip OBJECT microchip_dffopt.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_microchip) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_microchip) +target_sources(yosys_obj PUBLIC $) add_share_file("share/microchip" "arith_map.v") add_share_file("share/microchip" "cells_map.v") diff --git a/techlibs/nanoxplore/CMakeLists.txt b/techlibs/nanoxplore/CMakeLists.txt index 4db2ef33bcd..7e7ae4bdc83 100644 --- a/techlibs/nanoxplore/CMakeLists.txt +++ b/techlibs/nanoxplore/CMakeLists.txt @@ -5,8 +5,8 @@ add_library(yosys_techlibs_nanoxplore OBJECT nx_carry.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_nanoxplore) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_nanoxplore) +target_sources(yosys_obj PUBLIC $) # Techmap add_share_file("share/nanoxplore" "arith_map.v") diff --git a/techlibs/nexus/CMakeLists.txt b/techlibs/nexus/CMakeLists.txt index 8d11a2b1de7..1f47fd1c9f5 100644 --- a/techlibs/nexus/CMakeLists.txt +++ b/techlibs/nexus/CMakeLists.txt @@ -4,8 +4,8 @@ add_library(yosys_techlibs_nexus OBJECT synth_nexus.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_nexus) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_nexus) +target_sources(yosys_obj PUBLIC $) add_share_file("share/nexus" "cells_map.v") add_share_file("share/nexus" "cells_sim.v") diff --git a/techlibs/quicklogic/CMakeLists.txt b/techlibs/quicklogic/CMakeLists.txt index 8cb170680fc..81e0d9d5845 100644 --- a/techlibs/quicklogic/CMakeLists.txt +++ b/techlibs/quicklogic/CMakeLists.txt @@ -45,10 +45,10 @@ add_custom_target(yosys_techlibs_quicklogic_gen ${CMAKE_CURRENT_BINARY_DIR}/qlf_k6n10f/bram_types_sim.v ) -add_dependencies(yosys yosys_techlibs_quicklogic_gen) +add_dependencies(yosys_obj yosys_techlibs_quicklogic_gen) -target_link_libraries(yosys PUBLIC yosys_techlibs_quicklogic) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_quicklogic) +target_sources(yosys_obj PUBLIC $) add_share_file("share/quicklogic/common" "common/cells_sim.v") add_share_file("share/quicklogic/pp3" "pp3/ffs_map.v") diff --git a/techlibs/sf2/CMakeLists.txt b/techlibs/sf2/CMakeLists.txt index b862b671c7e..2dd7029d468 100644 --- a/techlibs/sf2/CMakeLists.txt +++ b/techlibs/sf2/CMakeLists.txt @@ -4,8 +4,8 @@ add_library(yosys_techlibs_sf2 OBJECT synth_sf2.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_sf2) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_sf2) +target_sources(yosys_obj PUBLIC $) add_share_file("share/sf2" "arith_map.v") add_share_file("share/sf2" "cells_map.v") diff --git a/techlibs/xilinx/CMakeLists.txt b/techlibs/xilinx/CMakeLists.txt index a7b15e1347e..cb2e3afebc6 100644 --- a/techlibs/xilinx/CMakeLists.txt +++ b/techlibs/xilinx/CMakeLists.txt @@ -5,8 +5,8 @@ add_library(yosys_techlibs_xilinx OBJECT xilinx_dffopt.cc ) -target_link_libraries(yosys PUBLIC yosys_techlibs_xilinx) -target_sources(yosys PUBLIC $) +target_link_libraries(yosys_obj PUBLIC yosys_techlibs_xilinx) +target_sources(yosys_obj PUBLIC $) add_share_file("share/xilinx" "cells_map.v") add_share_file("share/xilinx" "cells_sim.v") From 030b054f33a65be0dab5408001cebbf3c7476daa Mon Sep 17 00:00:00 2001 From: nick Date: Wed, 16 Jul 2025 20:45:35 -0600 Subject: [PATCH 6/6] CMake: CMAKE_CXX_STANDARD Update --- CMakeLists.txt | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 85b7b70515f..fe6e81a5701 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,27 +64,18 @@ endif() get_property(cxx_features GLOBAL PROPERTY CMAKE_CXX_KNOWN_FEATURES) if(NOT CMAKE_CXX_STANDARD) - if("cxx_std_20" IN_LIST cxx_features) - message(STATUS "C++20 support enabled") - set(CMAKE_CXX_STANDARD 20) - elseif("cxx_std_17" IN_LIST cxx_features) - message(STATUS "C++17 support enabled") - set(CMAKE_CXX_STANDARD 17) - elseif("cxx_std_14" IN_LIST cxx_features) - message(STATUS "C++14 support enabled") - set(CMAKE_CXX_STANDARD 14) - elseif("cxx_std_11" IN_LIST cxx_features) - message(STATUS "C++11 support enabled") - set(CMAKE_CXX_STANDARD 11) - else() - message(STATUS "C++98 support enabled") - set(CMAKE_CXX_STANDARD 98) - endif() + set(CMAKE_CXX_STANDARD 23) + message(STATUS "C++23 support enabled") else() + set(CMAKE_CXX_STANDARD_REQUIRED ON) message(STATUS "C++ standard set to ${CMAKE_CXX_STANDARD}") endif() -set(CMAKE_CXX_STANDARD_REQUIRED ON) +# Ensure C++17 support is available +if(NOT "cxx_std_17" IN_LIST cxx_features) + message(FATAL_ERROR "C++17 support is required but not available") +endif() + set(CMAKE_CXX_EXTENSIONS OFF) set(CMAKE_C_STANDARD 99)