| if (NOT DEFINED TORC_ROOT) |
| # Adapted from https://cliutils.gitlab.io/modern-cmake/chapters/projects/submodule.html |
| find_package(Git QUIET) |
| if(GIT_FOUND AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/.gitmodules") |
| # Update submodules as needed |
| option(GIT_SUBMODULE "Check submodules during build" ON) |
| if(GIT_SUBMODULE) |
| message(STATUS "Submodule update") |
| execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init --recursive |
| WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} |
| RESULT_VARIABLE GIT_SUBMOD_RESULT) |
| if(NOT GIT_SUBMOD_RESULT EQUAL "0") |
| message(FATAL_ERROR "git submodule update --init failed with ${GIT_SUBMOD_RESULT}, please checkout submodules") |
| endif() |
| endif() |
| endif() |
| |
| add_dependencies(nextpnr-${family} torc) |
| if (BUILD_TESTS) |
| add_dependencies(nextpnr-${family}-test torc) |
| endif() |
| add_custom_target(torc ALL |
| COMMAND $(MAKE) > /dev/null 2> /dev/null |
| COMMENT "Building torc (may take some time...)" |
| WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/torc/src) |
| set(TORC_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/torc) |
| endif() |
| |
| find_package(Boost REQUIRED COMPONENTS regex ${boost_libs} ${boost_python_lib}) |
| |
| target_compile_definitions(nextpnr-${family} PRIVATE -DTORC_ROOT="${TORC_ROOT}") |
| target_include_directories(nextpnr-${family} PUBLIC ${TORC_ROOT}/src) |
| if (BUILD_TESTS) |
| target_compile_definitions(nextpnr-${family}-test PRIVATE -DTORC_ROOT="${TORC_ROOT}") |
| target_include_directories(nextpnr-${family}-test PUBLIC ${TORC_ROOT}/src) |
| endif() |
| if (BUILD_GUI) |
| target_include_directories(gui_${family} PUBLIC ${TORC_ROOT}/src) |
| endif() |
| |
| set(TORC_OBJS |
| ${TORC_ROOT}/src/torc/architecture/Arc.o |
| ${TORC_ROOT}/src/torc/architecture/ArcUsage.o |
| ${TORC_ROOT}/src/torc/architecture/Array.o |
| ${TORC_ROOT}/src/torc/architecture/DDB.o |
| ${TORC_ROOT}/src/torc/architecture/DDBConsoleStreams.o |
| ${TORC_ROOT}/src/torc/architecture/DDBStreamHelper.o |
| ${TORC_ROOT}/src/torc/architecture/DigestStream.o |
| ${TORC_ROOT}/src/torc/architecture/ExtendedWireInfo.o |
| ${TORC_ROOT}/src/torc/architecture/InstancePin.o |
| ${TORC_ROOT}/src/torc/architecture/OutputStreamHelpers.o |
| ${TORC_ROOT}/src/torc/architecture/Package.o |
| ${TORC_ROOT}/src/torc/architecture/Pad.o |
| ${TORC_ROOT}/src/torc/architecture/PrimitiveConn.o |
| ${TORC_ROOT}/src/torc/architecture/PrimitiveDef.o |
| ${TORC_ROOT}/src/torc/architecture/PrimitiveElement.o |
| ${TORC_ROOT}/src/torc/architecture/PrimitiveElementPin.o |
| ${TORC_ROOT}/src/torc/architecture/PrimitivePin.o |
| ${TORC_ROOT}/src/torc/architecture/Segments.o |
| ${TORC_ROOT}/src/torc/architecture/Site.o |
| ${TORC_ROOT}/src/torc/architecture/Sites.o |
| ${TORC_ROOT}/src/torc/architecture/Tiles.o |
| ${TORC_ROOT}/src/torc/architecture/TileInfo.o |
| ${TORC_ROOT}/src/torc/architecture/Tilewire.o |
| ${TORC_ROOT}/src/torc/architecture/Versions.o |
| ${TORC_ROOT}/src/torc/architecture/VprExporter.o |
| ${TORC_ROOT}/src/torc/architecture/WireInfo.o |
| ${TORC_ROOT}/src/torc/architecture/WireUsage.o |
| ${TORC_ROOT}/src/torc/architecture/XdlImporter.o |
| ${TORC_ROOT}/src/torc/architecture/XilinxDatabaseTypes.o |
| |
| ${TORC_ROOT}/src/torc/common/Annotated.o |
| ${TORC_ROOT}/src/torc/common/DeviceDesignator.o |
| ${TORC_ROOT}/src/torc/common/Devices.o |
| ${TORC_ROOT}/src/torc/common/DirectoryTree.o |
| ${TORC_ROOT}/src/torc/common/DottedVersion.o |
| ${TORC_ROOT}/src/torc/common/NullOutputStream.o |
| |
| ${TORC_ROOT}/src/torc/externals/zlib/zfstream.o |
| z |
| |
| ${TORC_ROOT}/src/torc/physical/Circuit.o |
| ${TORC_ROOT}/src/torc/physical/ConfigMap.o |
| ${TORC_ROOT}/src/torc/physical/Config.o |
| ${TORC_ROOT}/src/torc/physical/Design.o |
| ${TORC_ROOT}/src/torc/physical/Factory.o |
| ${TORC_ROOT}/src/torc/physical/Instance.o |
| ${TORC_ROOT}/src/torc/physical/InstancePin.o |
| ${TORC_ROOT}/src/torc/physical/InstanceReference.o |
| ${TORC_ROOT}/src/torc/physical/Module.o |
| ${TORC_ROOT}/src/torc/physical/ModuleTransformer.o |
| ${TORC_ROOT}/src/torc/physical/Named.o |
| ${TORC_ROOT}/src/torc/physical/Net.o |
| ${TORC_ROOT}/src/torc/physical/OutputStreamHelpers.o |
| ${TORC_ROOT}/src/torc/physical/Pip.o |
| ${TORC_ROOT}/src/torc/physical/Port.o |
| ${TORC_ROOT}/src/torc/physical/Progenitor.o |
| ${TORC_ROOT}/src/torc/physical/Progeny.o |
| ${TORC_ROOT}/src/torc/physical/Renamable.o |
| ${TORC_ROOT}/src/torc/physical/Routethrough.o |
| ${TORC_ROOT}/src/torc/physical/TilewirePlaceholder.o |
| ${TORC_ROOT}/src/torc/physical/XdlExporter.o |
| ) |
| |
| target_link_libraries(nextpnr-${family} PRIVATE ${TORC_OBJS}) |
| if (BUILD_TESTS) |
| target_link_libraries(nextpnr-${family}-test PRIVATE ${TORC_OBJS}) |
| endif() |