CMake: reformat for consistency.

Normalize keywords to:

    if (...)
    elseif (...)
    else()
    endif()

    foreach (...)
    endforeach()

    other(...)

Normalize whitespace to 4 spaces.
This commit is contained in:
Catherine 2025-01-15 09:22:03 +00:00 committed by myrtle
parent c48157aa4b
commit d214308f5f
19 changed files with 178 additions and 159 deletions

View File

@ -9,7 +9,7 @@ cmake_policy(SET CMP0079 NEW)
# We want to explictly include all include directories when generating the # We want to explictly include all include directories when generating the
# compilation database as not all clang/gcc share the same implicit includes # compilation database as not all clang/gcc share the same implicit includes
# leading to essentially non-working compile_commands.json # leading to essentially non-working compile_commands.json
if(CMAKE_EXPORT_COMPILE_COMMANDS) if (CMAKE_EXPORT_COMPILE_COMMANDS)
set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES set(CMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES
${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES}) ${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES})
endif() endif()
@ -49,7 +49,7 @@ else()
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION FALSE) set(CMAKE_INTERPROCEDURAL_OPTIMIZATION FALSE)
endif() endif()
if(WIN32 OR EXTERNAL_CHIPDB) if (WIN32 OR EXTERNAL_CHIPDB)
set(BBASM_MODE "binary") set(BBASM_MODE "binary")
else() else()
set(BBASM_MODE "string") set(BBASM_MODE "string")
@ -65,7 +65,7 @@ else()
add_definitions(-DNPNR_DISABLE_THREADS) add_definitions(-DNPNR_DISABLE_THREADS)
endif() endif()
if(WASI) if (WASI)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lwasi-emulated-mman") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lwasi-emulated-mman")
add_definitions( add_definitions(
-DBOOST_EXCEPTION_DISABLE -DBOOST_EXCEPTION_DISABLE
@ -79,8 +79,8 @@ endif()
set(link_param "") set(link_param "")
if (STATIC_BUILD) if (STATIC_BUILD)
set(Boost_USE_STATIC_LIBS ON) set(Boost_USE_STATIC_LIBS ON)
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows") elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
if (MSVC) if (MSVC)
set(CMAKE_CXX_FLAGS_RELEASE "/MT") set(CMAKE_CXX_FLAGS_RELEASE "/MT")
set(CMAKE_CXX_FLAGS_DEBUG "/MTd") set(CMAKE_CXX_FLAGS_DEBUG "/MTd")
@ -118,11 +118,11 @@ if (NOT ARCH)
message(STATUS "Supported architectures are :") message(STATUS "Supported architectures are :")
message(STATUS " all") message(STATUS " all")
message(STATUS " all+alpha") message(STATUS " all+alpha")
foreach(item ${FAMILIES}) foreach (item ${FAMILIES})
message(STATUS " ${item}") message(STATUS " ${item}")
endforeach() endforeach()
message(FATAL_ERROR "Architecture setting is mandatory") message(FATAL_ERROR "Architecture setting is mandatory")
endif () endif()
if (ARCH STREQUAL "all+alpha") if (ARCH STREQUAL "all+alpha")
SET(ARCH ${STABLE_FAMILIES} ${EXPERIMENTAL_FAMILIES}) SET(ARCH ${STABLE_FAMILIES} ${EXPERIMENTAL_FAMILIES})
@ -133,7 +133,7 @@ if (ARCH STREQUAL "all")
SET(ARCH ${STABLE_FAMILIES}) SET(ARCH ${STABLE_FAMILIES})
endif() endif()
foreach(item ${ARCH}) foreach (item ${ARCH})
if (NOT item IN_LIST FAMILIES) if (NOT item IN_LIST FAMILIES)
message(FATAL_ERROR "Architecture '${item}' not in list of supported architectures") message(FATAL_ERROR "Architecture '${item}' not in list of supported architectures")
endif() endif()
@ -147,7 +147,7 @@ if (MSVC)
else() else()
# N.B. the -Wno-array-bounds is to work around a false positive in GCC 9 # N.B. the -Wno-array-bounds is to work around a false positive in GCC 9
set(WARN_FLAGS "-Wall -Wextra") set(WARN_FLAGS "-Wall -Wextra")
foreach(TRY_WARN_FLAG no-unused-parameter no-missing-field-initializers no-array-bounds no-format-truncation) foreach (TRY_WARN_FLAG no-unused-parameter no-missing-field-initializers no-array-bounds no-format-truncation)
check_cxx_compiler_flag("-W${TRY_WARN_FLAG}" HAS_W${TRY_WARN_FLAG}) check_cxx_compiler_flag("-W${TRY_WARN_FLAG}" HAS_W${TRY_WARN_FLAG})
if (HAS_W${TRY_WARN_FLAG}) if (HAS_W${TRY_WARN_FLAG})
set(WARN_FLAGS "${WARN_FLAGS} -W${TRY_WARN_FLAG}") set(WARN_FLAGS "${WARN_FLAGS} -W${TRY_WARN_FLAG}")
@ -170,7 +170,7 @@ if (COVERAGE)
include(CodeCoverage) include(CodeCoverage)
endif() endif()
if(NOT DEFINED CMAKE_SUPPRESS_DEVELOPER_WARNINGS) if (NOT DEFINED CMAKE_SUPPRESS_DEVELOPER_WARNINGS)
set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE INTERNAL "No dev warnings") set(CMAKE_SUPPRESS_DEVELOPER_WARNINGS 1 CACHE INTERNAL "No dev warnings")
endif() endif()
@ -239,9 +239,20 @@ if (NOT DEFINED PYBIND11_INCLUDE_DIR)
set(PYBIND11_INCLUDE_DIR "3rdparty/pybind11/include") set(PYBIND11_INCLUDE_DIR "3rdparty/pybind11/include")
endif() endif()
include_directories(common/kernel/ common/place/ common/route/ json/ frontend/ 3rdparty/json11/ 3rdparty/oourafft ${PYBIND11_INCLUDE_DIR} ${Boost_INCLUDE_DIRS} ${Python3_INCLUDE_DIRS}) include_directories(
common/kernel/
common/place/
common/route/
json/
frontend/
3rdparty/json11/
3rdparty/oourafft/
${PYBIND11_INCLUDE_DIR}
${Boost_INCLUDE_DIRS}
${Python3_INCLUDE_DIRS}
)
find_package (Eigen3 REQUIRED NO_MODULE) find_package(Eigen3 REQUIRED NO_MODULE)
link_libraries(Eigen3::Eigen) link_libraries(Eigen3::Eigen)
aux_source_directory(common/kernel/ KERNEL_SRC_FILES) aux_source_directory(common/kernel/ KERNEL_SRC_FILES)
@ -255,13 +266,21 @@ aux_source_directory(frontend/ FRONTEND_FILES)
aux_source_directory(rust/ RUST_FILES) aux_source_directory(rust/ RUST_FILES)
set(COMMON_FILES ${KERNEL_SRC_FILES} ${PLACE_SRC_FILES} ${ROUTE_SRC_FILES} ${EXT_JSON11_FILES} ${EXT_OOURAFFT_FILES} ${JSON_PARSER_FILES} ${FRONTEND_FILES}) set(COMMON_FILES
${KERNEL_SRC_FILES}
${PLACE_SRC_FILES}
${ROUTE_SRC_FILES}
${EXT_JSON11_FILES}
${EXT_OOURAFFT_FILES}
${JSON_PARSER_FILES}
${FRONTEND_FILES}
)
if( NOT CMAKE_BUILD_TYPE ) if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release) set(CMAKE_BUILD_TYPE Release)
endif() endif()
if(CMAKE_CROSSCOMPILING) if (CMAKE_CROSSCOMPILING)
set(BBA_IMPORT "IMPORTFILE-NOTFOUND" CACHE FILEPATH set(BBA_IMPORT "IMPORTFILE-NOTFOUND" CACHE FILEPATH
"Path to the `bba-export.cmake` export file from a native build") "Path to the `bba-export.cmake` export file from a native build")
include(${BBA_IMPORT}) include(${BBA_IMPORT})
@ -271,7 +290,7 @@ endif()
include(TestBigEndian) include(TestBigEndian)
test_big_endian(IS_BIG_ENDIAN) test_big_endian(IS_BIG_ENDIAN)
if(IS_BIG_ENDIAN) if (IS_BIG_ENDIAN)
set(BBASM_ENDIAN_FLAG "--be") set(BBASM_ENDIAN_FLAG "--be")
else() else()
set(BBASM_ENDIAN_FLAG "--le") set(BBASM_ENDIAN_FLAG "--le")
@ -279,10 +298,10 @@ endif()
set(EXTRA_LIB_DEPS) set(EXTRA_LIB_DEPS)
if(PROFILER) if (PROFILER)
list(APPEND EXTRA_LIB_DEPS profiler) list(APPEND EXTRA_LIB_DEPS profiler)
endif() endif()
if(TBB_FOUND) if (TBB_FOUND)
list(APPEND EXTRA_LIB_DEPS TBB::tbb) list(APPEND EXTRA_LIB_DEPS TBB::tbb)
endif() endif()
@ -340,7 +359,7 @@ foreach (family ${ARCH})
# Include the family-specific CMakeFile # Include the family-specific CMakeFile
include(${family}/family.cmake) include(${family}/family.cmake)
foreach (target ${family_targets}) foreach (target ${family_targets})
foreach(lib_dep ${EXTRA_LIB_DEPS}) foreach (lib_dep ${EXTRA_LIB_DEPS})
target_link_libraries(${target} PRIVATE ${lib_dep}) target_link_libraries(${target} PRIVATE ${lib_dep})
endforeach() endforeach()
@ -361,8 +380,8 @@ foreach (family ${ARCH})
target_link_libraries(${target} LINK_PUBLIC ${Python3_LIBRARIES}) target_link_libraries(${target} LINK_PUBLIC ${Python3_LIBRARIES})
if (STATIC_BUILD) if (STATIC_BUILD)
target_link_libraries(${target} LINK_PUBLIC ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS} ${ZLIB_LIBRARIES} ${EXPAT_LIBRARIES}) target_link_libraries(${target} LINK_PUBLIC ${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS} ${ZLIB_LIBRARIES} ${EXPAT_LIBRARIES})
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows") elseif (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
else() else()
target_link_libraries(${target} LINK_PUBLIC -lutil) target_link_libraries(${target} LINK_PUBLIC -lutil)
endif() endif()
@ -371,12 +390,12 @@ foreach (family ${ARCH})
if (USE_RUST) if (USE_RUST)
target_sources(${target} PRIVATE ${RUST_FILES}) target_sources(${target} PRIVATE ${RUST_FILES})
target_compile_definitions(${target} PRIVATE USE_RUST) target_compile_definitions(${target} PRIVATE USE_RUST)
foreach(crate ${RUST_CRATES}) foreach (crate ${RUST_CRATES})
target_link_libraries(${target} PRIVATE ${crate}) target_link_libraries(${target} PRIVATE ${crate})
endforeach(crate) endforeach()
endif() endif()
endforeach (target) endforeach()
endforeach (family) endforeach()
file(GLOB_RECURSE CLANGFORMAT_FILES *.cc *.h) file(GLOB_RECURSE CLANGFORMAT_FILES *.cc *.h)
string(REGEX REPLACE "[^;]*/ice40/chipdb/chipdb-[^;]*.cc" "" CLANGFORMAT_FILES "${CLANGFORMAT_FILES}") string(REGEX REPLACE "[^;]*/ice40/chipdb/chipdb-[^;]*.cc" "" CLANGFORMAT_FILES "${CLANGFORMAT_FILES}")

View File

@ -6,7 +6,7 @@ set(ECP5_DEVICES ${ALL_ECP5_DEVICES} CACHE STRING
"Include support for these ECP5 devices (available: ${ALL_ECP5_DEVICES})") "Include support for these ECP5 devices (available: ${ALL_ECP5_DEVICES})")
message(STATUS "Enabled ECP5 devices: ${ECP5_DEVICES}") message(STATUS "Enabled ECP5 devices: ${ECP5_DEVICES}")
if(DEFINED ECP5_CHIPDB) if (DEFINED ECP5_CHIPDB)
add_custom_target(chipdb-ecp5-bbas ALL) add_custom_target(chipdb-ecp5-bbas ALL)
else() else()
# shared among all families # shared among all families
@ -15,37 +15,37 @@ else()
set(TRELLIS_PROGRAM_PREFIX "" CACHE STRING set(TRELLIS_PROGRAM_PREFIX "" CACHE STRING
"Trellis name prefix") "Trellis name prefix")
if(TRELLIS_PROGRAM_PREFIX) if (TRELLIS_PROGRAM_PREFIX)
message(STATUS "Trellis program prefix: ${TRELLIS_PROGRAM_PREFIX}") message(STATUS "Trellis program prefix: ${TRELLIS_PROGRAM_PREFIX}")
endif() endif()
IF(DEFINED ENV{TRELLIS_INSTALL_PREFIX}) if (DEFINED ENV{TRELLIS_INSTALL_PREFIX})
set(trellis_default_install_prefix $ENV{TRELLIS_INSTALL_PREFIX}) set(trellis_default_install_prefix $ENV{TRELLIS_INSTALL_PREFIX})
ELSE() else()
set(trellis_default_install_prefix ${CMAKE_INSTALL_PREFIX}) set(trellis_default_install_prefix ${CMAKE_INSTALL_PREFIX})
ENDIF() endif()
set(TRELLIS_INSTALL_PREFIX ${trellis_default_install_prefix} CACHE STRING set(TRELLIS_INSTALL_PREFIX ${trellis_default_install_prefix} CACHE STRING
"Trellis install prefix") "Trellis install prefix")
message(STATUS "Trellis install prefix: ${TRELLIS_INSTALL_PREFIX}") message(STATUS "Trellis install prefix: ${TRELLIS_INSTALL_PREFIX}")
if(NOT TRELLIS_LIBDIR) if (NOT TRELLIS_LIBDIR)
# The pytrellis library isn't a normal shared library, but rather a native Python library; # The pytrellis library isn't a normal shared library, but rather a native Python library;
# it does not follow the normal platform conventions for shared libraries, so we can't just # it does not follow the normal platform conventions for shared libraries, so we can't just
# use find_library() here. Instead, we emulate the useful parts of the find_library() logic # use find_library() here. Instead, we emulate the useful parts of the find_library() logic
# for use with find_path(). # for use with find_path().
set(pytrellis_paths) set(pytrellis_paths)
foreach(prefix_path ${CMAKE_PREFIX_PATH}) foreach (prefix_path ${CMAKE_PREFIX_PATH})
list(APPEND pytrellis_paths ${prefix_path}/lib) list(APPEND pytrellis_paths ${prefix_path}/lib)
if(CMAKE_LIBRARY_ARCHITECTURE) if (CMAKE_LIBRARY_ARCHITECTURE)
list(APPEND pytrellis_paths ${prefix_path}/lib/${CMAKE_LIBRARY_ARCHITECTURE}) list(APPEND pytrellis_paths ${prefix_path}/lib/${CMAKE_LIBRARY_ARCHITECTURE})
endif() endif()
endforeach() endforeach()
list(APPEND pytrellis_paths ${CMAKE_LIBRARY_PATH}) list(APPEND pytrellis_paths ${CMAKE_LIBRARY_PATH})
if(NOT NO_CMAKE_SYSTEM_PATH) if (NOT NO_CMAKE_SYSTEM_PATH)
foreach(prefix_path ${CMAKE_SYSTEM_PREFIX_PATH}) foreach (prefix_path ${CMAKE_SYSTEM_PREFIX_PATH})
list(APPEND pytrellis_paths ${prefix_path}/lib) list(APPEND pytrellis_paths ${prefix_path}/lib)
if(CMAKE_LIBRARY_ARCHITECTURE) if (CMAKE_LIBRARY_ARCHITECTURE)
list(APPEND pytrellis_paths ${prefix_path}/lib/${CMAKE_LIBRARY_ARCHITECTURE}) list(APPEND pytrellis_paths ${prefix_path}/lib/${CMAKE_LIBRARY_ARCHITECTURE})
endif() endif()
endforeach() endforeach()
@ -53,7 +53,7 @@ else()
endif() endif()
message(STATUS "Searching for pytrellis in: ${pytrellis_paths}") message(STATUS "Searching for pytrellis in: ${pytrellis_paths}")
if(WIN32) if (WIN32)
set(pytrellis_lib pytrellis.pyd) set(pytrellis_lib pytrellis.pyd)
else() else()
set(pytrellis_lib pytrellis${CMAKE_SHARED_MODULE_SUFFIX}) set(pytrellis_lib pytrellis${CMAKE_SHARED_MODULE_SUFFIX})
@ -64,21 +64,21 @@ else()
PATHS ${pytrellis_paths} PATHS ${pytrellis_paths}
PATH_SUFFIXES ${TRELLIS_PROGRAM_PREFIX}trellis PATH_SUFFIXES ${TRELLIS_PROGRAM_PREFIX}trellis
DOC "Location of the pytrellis library") DOC "Location of the pytrellis library")
if(NOT TRELLIS_LIBDIR) if (NOT TRELLIS_LIBDIR)
message(FATAL_ERROR "Failed to locate the pytrellis library") message(FATAL_ERROR "Failed to locate the pytrellis library")
endif() endif()
endif() endif()
message(STATUS "Trellis library directory: ${TRELLIS_LIBDIR}") message(STATUS "Trellis library directory: ${TRELLIS_LIBDIR}")
if(NOT TRELLIS_DATADIR) if (NOT TRELLIS_DATADIR)
set(TRELLIS_DATADIR ${TRELLIS_INSTALL_PREFIX}/share/${TRELLIS_PROGRAM_PREFIX}trellis) set(TRELLIS_DATADIR ${TRELLIS_INSTALL_PREFIX}/share/${TRELLIS_PROGRAM_PREFIX}trellis)
endif() endif()
message(STATUS "Trellis data directory: ${TRELLIS_DATADIR}") message(STATUS "Trellis data directory: ${TRELLIS_DATADIR}")
set(all_device_bbas) set(all_device_bbas)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/chipdb) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/chipdb)
foreach(device ${ECP5_DEVICES}) foreach (device ${ECP5_DEVICES})
if(NOT device IN_LIST ALL_ECP5_DEVICES) if (NOT device IN_LIST ALL_ECP5_DEVICES)
message(FATAL_ERROR "Device ${device} is not a supported ECP5 device") message(FATAL_ERROR "Device ${device} is not a supported ECP5 device")
endif() endif()
@ -102,7 +102,7 @@ else()
${PREVIOUS_CHIPDB_TARGET} ${PREVIOUS_CHIPDB_TARGET}
VERBATIM) VERBATIM)
list(APPEND all_device_bbas ${device_bba}) list(APPEND all_device_bbas ${device_bba})
if(SERIALIZE_CHIPDBS) if (SERIALIZE_CHIPDBS)
set(PREVIOUS_CHIPDB_TARGET ${CMAKE_CURRENT_BINARY_DIR}/${device_bba}) set(PREVIOUS_CHIPDB_TARGET ${CMAKE_CURRENT_BINARY_DIR}/${device_bba})
endif() endif()
endforeach() endforeach()
@ -110,7 +110,7 @@ else()
add_custom_target(chipdb-ecp5-bbas ALL DEPENDS ${all_device_bbas}) add_custom_target(chipdb-ecp5-bbas ALL DEPENDS ${all_device_bbas})
get_directory_property(has_parent PARENT_DIRECTORY) get_directory_property(has_parent PARENT_DIRECTORY)
if(has_parent) if (has_parent)
set(ECP5_CHIPDB ${CMAKE_CURRENT_BINARY_DIR}/chipdb PARENT_SCOPE) set(ECP5_CHIPDB ${CMAKE_CURRENT_BINARY_DIR}/chipdb PARENT_SCOPE)
# serialize chipdb build across multiple architectures # serialize chipdb build across multiple architectures
set(PREVIOUS_CHIPDB_TARGET chipdb-ecp5-bbas PARENT_SCOPE) set(PREVIOUS_CHIPDB_TARGET chipdb-ecp5-bbas PARENT_SCOPE)

View File

@ -4,24 +4,24 @@ message(STATUS "Using ECP5 chipdb: ${ECP5_CHIPDB}")
set(chipdb_sources) set(chipdb_sources)
set(chipdb_binaries) set(chipdb_binaries)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb)
foreach(device ${ECP5_DEVICES}) foreach (device ${ECP5_DEVICES})
set(chipdb_bba ${ECP5_CHIPDB}/chipdb-${device}.bba) set(chipdb_bba ${ECP5_CHIPDB}/chipdb-${device}.bba)
set(chipdb_bin ${family}/chipdb/chipdb-${device}.bin) set(chipdb_bin ${family}/chipdb/chipdb-${device}.bin)
set(chipdb_cc ${family}/chipdb/chipdb-${device}.cc) set(chipdb_cc ${family}/chipdb/chipdb-${device}.cc)
if(BBASM_MODE STREQUAL "binary") if (BBASM_MODE STREQUAL "binary")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_bin} OUTPUT ${chipdb_bin}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} ${chipdb_bba} ${chipdb_bin} COMMAND bbasm ${BBASM_ENDIAN_FLAG} ${chipdb_bba} ${chipdb_bin}
DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba}) DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba})
list(APPEND chipdb_binaries ${chipdb_bin}) list(APPEND chipdb_binaries ${chipdb_bin})
elseif(BBASM_MODE STREQUAL "embed") elseif (BBASM_MODE STREQUAL "embed")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_cc} ${chipdb_bin} OUTPUT ${chipdb_cc} ${chipdb_bin}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} --e ${chipdb_bba} ${chipdb_cc} ${chipdb_bin} COMMAND bbasm ${BBASM_ENDIAN_FLAG} --e ${chipdb_bba} ${chipdb_cc} ${chipdb_bin}
DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba}) DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba})
list(APPEND chipdb_sources ${chipdb_cc}) list(APPEND chipdb_sources ${chipdb_cc})
list(APPEND chipdb_binaries ${chipdb_bin}) list(APPEND chipdb_binaries ${chipdb_bin})
elseif(BBASM_MODE STREQUAL "string") elseif (BBASM_MODE STREQUAL "string")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_cc} OUTPUT ${chipdb_cc}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} --c ${chipdb_bba} ${chipdb_cc} COMMAND bbasm ${BBASM_ENDIAN_FLAG} --c ${chipdb_bba} ${chipdb_cc}
@ -29,12 +29,12 @@ foreach(device ${ECP5_DEVICES})
list(APPEND chipdb_sources ${chipdb_cc}) list(APPEND chipdb_sources ${chipdb_cc})
endif() endif()
endforeach() endforeach()
if(WIN32) if (WIN32)
set(chipdb_rc ${CMAKE_CURRENT_BINARY_DIR}/${family}/resource/chipdb.rc) set(chipdb_rc ${CMAKE_CURRENT_BINARY_DIR}/${family}/resource/chipdb.rc)
list(APPEND chipdb_sources ${chipdb_rc}) list(APPEND chipdb_sources ${chipdb_rc})
file(WRITE ${chipdb_rc}) file(WRITE ${chipdb_rc})
foreach(device ${ECP5_DEVICES}) foreach (device ${ECP5_DEVICES})
file(APPEND ${chipdb_rc} file(APPEND ${chipdb_rc}
"${family}/chipdb-${device}.bin RCDATA \"${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb/chipdb-${device}.bin\"") "${family}/chipdb-${device}.bin RCDATA \"${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb/chipdb-${device}.bin\"")
endforeach() endforeach()
@ -48,6 +48,6 @@ target_compile_options(chipdb-${family} PRIVATE -g0 -O0 -w)
target_compile_definitions(chipdb-${family} PRIVATE NEXTPNR_NAMESPACE=nextpnr_${family}) target_compile_definitions(chipdb-${family} PRIVATE NEXTPNR_NAMESPACE=nextpnr_${family})
target_include_directories(chipdb-${family} PRIVATE ${family}) target_include_directories(chipdb-${family} PRIVATE ${family})
foreach(family_target ${family_targets}) foreach (family_target ${family_targets})
target_sources(${family_target} PRIVATE $<TARGET_OBJECTS:chipdb-${family}>) target_sources(${family_target} PRIVATE $<TARGET_OBJECTS:chipdb-${family}>)
endforeach() endforeach()

View File

@ -1,7 +1,7 @@
set(VIADUCT_UARCHES "example" "okami" "fabulous") set(VIADUCT_UARCHES "example" "okami" "fabulous")
foreach(uarch ${VIADUCT_UARCHES}) foreach (uarch ${VIADUCT_UARCHES})
aux_source_directory(${family}/viaduct/${uarch} UARCH_FILES) aux_source_directory(${family}/viaduct/${uarch} UARCH_FILES)
foreach(target ${family_targets}) foreach (target ${family_targets})
target_sources(${target} PRIVATE ${UARCH_FILES}) target_sources(${target} PRIVATE ${UARCH_FILES})
endforeach() endforeach()
endforeach(uarch) endforeach()

View File

@ -9,7 +9,7 @@ message(STATUS "Enabled Gowin devices: ${GOWIN_DEVICES}")
find_program (GOWIN_BBA_EXECUTABLE gowin_bba) find_program (GOWIN_BBA_EXECUTABLE gowin_bba)
message(STATUS "gowin_bba executable: ${GOWIN_BBA_EXECUTABLE}") message(STATUS "gowin_bba executable: ${GOWIN_BBA_EXECUTABLE}")
if(DEFINED GOWIN_CHIPDB) if (DEFINED GOWIN_CHIPDB)
add_custom_target(chipdb-gowin-bbas ALL) add_custom_target(chipdb-gowin-bbas ALL)
else() else()
# shared among all families # shared among all families
@ -18,8 +18,8 @@ else()
set(all_device_bbas) set(all_device_bbas)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/chipdb) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/chipdb)
foreach(device ${GOWIN_DEVICES}) foreach (device ${GOWIN_DEVICES})
if(NOT device IN_LIST ALL_GOWIN_DEVICES) if (NOT device IN_LIST ALL_GOWIN_DEVICES)
message(FATAL_ERROR "Device ${device} is not a supported Gowin device") message(FATAL_ERROR "Device ${device} is not a supported Gowin device")
endif() endif()
@ -35,7 +35,7 @@ else()
${CMAKE_CURRENT_SOURCE_DIR}/constids.inc ${CMAKE_CURRENT_SOURCE_DIR}/constids.inc
VERBATIM) VERBATIM)
list(APPEND all_device_bbas ${device_bba}) list(APPEND all_device_bbas ${device_bba})
if(SERIALIZE_CHIPDBS) if (SERIALIZE_CHIPDBS)
set(PREVIOUS_CHIPDB_TARGET ${CMAKE_CURRENT_BINARY_DIR}/${device_bba}) set(PREVIOUS_CHIPDB_TARGET ${CMAKE_CURRENT_BINARY_DIR}/${device_bba})
endif() endif()
endforeach() endforeach()
@ -43,7 +43,7 @@ else()
add_custom_target(chipdb-gowin-bbas ALL DEPENDS ${all_device_bbas}) add_custom_target(chipdb-gowin-bbas ALL DEPENDS ${all_device_bbas})
get_directory_property(has_parent PARENT_DIRECTORY) get_directory_property(has_parent PARENT_DIRECTORY)
if(has_parent) if (has_parent)
set(GOWIN_CHIPDB ${CMAKE_CURRENT_BINARY_DIR}/chipdb PARENT_SCOPE) set(GOWIN_CHIPDB ${CMAKE_CURRENT_BINARY_DIR}/chipdb PARENT_SCOPE)
# serialize chipdb build across multiple architectures # serialize chipdb build across multiple architectures
set(PREVIOUS_CHIPDB_TARGET chipdb-gowin-bbas PARENT_SCOPE) set(PREVIOUS_CHIPDB_TARGET chipdb-gowin-bbas PARENT_SCOPE)

View File

@ -4,24 +4,24 @@ message(STATUS "Using Gowin chipdb: ${GOWIN_CHIPDB}")
set(chipdb_sources) set(chipdb_sources)
set(chipdb_binaries) set(chipdb_binaries)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb)
foreach(device ${GOWIN_DEVICES}) foreach (device ${GOWIN_DEVICES})
set(chipdb_bba ${GOWIN_CHIPDB}/chipdb-${device}.bba) set(chipdb_bba ${GOWIN_CHIPDB}/chipdb-${device}.bba)
set(chipdb_bin ${family}/chipdb/chipdb-${device}.bin) set(chipdb_bin ${family}/chipdb/chipdb-${device}.bin)
set(chipdb_cc ${family}/chipdb/chipdb-${device}.cc) set(chipdb_cc ${family}/chipdb/chipdb-${device}.cc)
if(BBASM_MODE STREQUAL "binary") if (BBASM_MODE STREQUAL "binary")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_bin} OUTPUT ${chipdb_bin}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} ${chipdb_bba} ${chipdb_bin} COMMAND bbasm ${BBASM_ENDIAN_FLAG} ${chipdb_bba} ${chipdb_bin}
DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba}) DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba})
list(APPEND chipdb_binaries ${chipdb_bin}) list(APPEND chipdb_binaries ${chipdb_bin})
elseif(BBASM_MODE STREQUAL "embed") elseif (BBASM_MODE STREQUAL "embed")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_cc} ${chipdb_bin} OUTPUT ${chipdb_cc} ${chipdb_bin}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} --e ${chipdb_bba} ${chipdb_cc} ${chipdb_bin} COMMAND bbasm ${BBASM_ENDIAN_FLAG} --e ${chipdb_bba} ${chipdb_cc} ${chipdb_bin}
DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba}) DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba})
list(APPEND chipdb_sources ${chipdb_cc}) list(APPEND chipdb_sources ${chipdb_cc})
list(APPEND chipdb_binaries ${chipdb_bin}) list(APPEND chipdb_binaries ${chipdb_bin})
elseif(BBASM_MODE STREQUAL "string") elseif (BBASM_MODE STREQUAL "string")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_cc} OUTPUT ${chipdb_cc}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} --c ${chipdb_bba} ${chipdb_cc} COMMAND bbasm ${BBASM_ENDIAN_FLAG} --c ${chipdb_bba} ${chipdb_cc}
@ -29,12 +29,12 @@ foreach(device ${GOWIN_DEVICES})
list(APPEND chipdb_sources ${chipdb_cc}) list(APPEND chipdb_sources ${chipdb_cc})
endif() endif()
endforeach() endforeach()
if(WIN32) if (WIN32)
set(chipdb_rc ${CMAKE_CURRENT_BINARY_DIR}/${family}/resource/chipdb.rc) set(chipdb_rc ${CMAKE_CURRENT_BINARY_DIR}/${family}/resource/chipdb.rc)
list(APPEND chipdb_sources ${chipdb_rc}) list(APPEND chipdb_sources ${chipdb_rc})
file(WRITE ${chipdb_rc}) file(WRITE ${chipdb_rc})
foreach(device ${GOWIN_DEVICES}) foreach (device ${GOWIN_DEVICES})
file(APPEND ${chipdb_rc} file(APPEND ${chipdb_rc}
"${family}/chipdb-${device}.bin RCDATA \"${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb/chipdb-${device}.bin\"") "${family}/chipdb-${device}.bin RCDATA \"${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb/chipdb-${device}.bin\"")
endforeach() endforeach()
@ -48,6 +48,6 @@ target_compile_options(chipdb-${family} PRIVATE -g0 -O0 -w)
target_compile_definitions(chipdb-${family} PRIVATE NEXTPNR_NAMESPACE=nextpnr_${family}) target_compile_definitions(chipdb-${family} PRIVATE NEXTPNR_NAMESPACE=nextpnr_${family})
target_include_directories(chipdb-${family} PRIVATE ${family}) target_include_directories(chipdb-${family} PRIVATE ${family})
foreach(family_target ${family_targets}) foreach (family_target ${family_targets})
target_sources(${family_target} PRIVATE $<TARGET_OBJECTS:chipdb-${family}>) target_sources(${family_target} PRIVATE $<TARGET_OBJECTS:chipdb-${family}>)
endforeach() endforeach()

View File

@ -43,6 +43,6 @@ target_compile_definitions(gui_${family} PRIVATE NEXTPNR_NAMESPACE=nextpnr_${fam
target_link_libraries(gui_${family} Qt5::Widgets) target_link_libraries(gui_${family} Qt5::Widgets)
foreach(lib_dep ${EXTRA_LIB_DEPS}) foreach (lib_dep ${EXTRA_LIB_DEPS})
target_link_libraries(gui_${family} ${lib_dep}) target_link_libraries(gui_${family} ${lib_dep})
endforeach() endforeach()

View File

@ -3,22 +3,22 @@ set(HIMBAECHEL_UARCHES "example;gowin;xilinx;ng-ultra")
set(HIMBAECHEL_UARCH "${HIMBAECHEL_UARCHES}" CACHE STRING "Microarchitectures for nextpnr-himbaechel build") set(HIMBAECHEL_UARCH "${HIMBAECHEL_UARCHES}" CACHE STRING "Microarchitectures for nextpnr-himbaechel build")
set_property(CACHE HIMBAECHEL_UARCH PROPERTY STRINGS ${HIMBAECHEL_UARCHES}) set_property(CACHE HIMBAECHEL_UARCH PROPERTY STRINGS ${HIMBAECHEL_UARCHES})
foreach(item ${HIMBAECHEL_UARCH}) foreach (item ${HIMBAECHEL_UARCH})
if (NOT item IN_LIST HIMBAECHEL_UARCHES) if (NOT item IN_LIST HIMBAECHEL_UARCHES)
message(FATAL_ERROR "Microarchitecture '${item}' not in list of supported architectures") message(FATAL_ERROR "Microarchitecture '${item}' not in list of supported architectures")
endif() endif()
endforeach() endforeach()
foreach(uarch ${HIMBAECHEL_UARCH}) foreach (uarch ${HIMBAECHEL_UARCH})
add_subdirectory(${family}/uarch/${uarch}) add_subdirectory(${family}/uarch/${uarch})
aux_source_directory(${family}/uarch/${uarch} HM_UARCH_FILES) aux_source_directory(${family}/uarch/${uarch} HM_UARCH_FILES)
foreach(target ${family_targets}) foreach (target ${family_targets})
target_sources(${target} PRIVATE ${HM_UARCH_FILES}) target_sources(${target} PRIVATE ${HM_UARCH_FILES})
endforeach() endforeach()
if (BUILD_TESTS) if (BUILD_TESTS)
foreach(target ${family_test_targets}) foreach (target ${family_test_targets})
aux_source_directory(${family}/uarch/${uarch}/tests/ HM_UARCH_TEST_FILES) aux_source_directory(${family}/uarch/${uarch}/tests/ HM_UARCH_TEST_FILES)
target_sources(${target} PRIVATE ${HM_UARCH_TEST_FILES}) target_sources(${target} PRIVATE ${HM_UARCH_TEST_FILES})
endforeach() endforeach()
endif() endif()
endforeach(uarch) endforeach()

View File

@ -9,7 +9,7 @@ message(STATUS "Enabled Himbaechel-Example devices: ${HIMBAECHEL_EXAMPLE_DEVICES
set(chipdb_binaries) set(chipdb_binaries)
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/himbaechel/example) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/himbaechel/example)
foreach(device ${HIMBAECHEL_EXAMPLE_DEVICES}) foreach (device ${HIMBAECHEL_EXAMPLE_DEVICES})
set(device_bba ${CMAKE_BINARY_DIR}/share/himbaechel/example/chipdb-${device}.bba) set(device_bba ${CMAKE_BINARY_DIR}/share/himbaechel/example/chipdb-${device}.bba)
set(device_bin ${CMAKE_BINARY_DIR}/share/himbaechel/example/chipdb-${device}.bin) set(device_bin ${CMAKE_BINARY_DIR}/share/himbaechel/example/chipdb-${device}.bin)
add_custom_command( add_custom_command(

View File

@ -5,17 +5,17 @@ project(himbaechel-gowin-chipdb NONE)
set(ALL_HIMBAECHEL_GOWIN_DEVICES GW1N-1 GW1NZ-1 GW1N-4 GW1N-9 GW1N-9C GW1NS-4 GW2A-18 GW2A-18C) set(ALL_HIMBAECHEL_GOWIN_DEVICES GW1N-1 GW1NZ-1 GW1N-4 GW1N-9 GW1N-9C GW1NS-4 GW2A-18 GW2A-18C)
set(HIMBAECHEL_GOWIN_DEVICES "" CACHE STRING set(HIMBAECHEL_GOWIN_DEVICES "" CACHE STRING
"Include support for these Gowin devices (available: ${ALL_HIMBAECHEL_GOWIN_DEVICES})") "Include support for these Gowin devices (available: ${ALL_HIMBAECHEL_GOWIN_DEVICES})")
if(HIMBAECHEL_GOWIN_DEVICES STREQUAL "all") if (HIMBAECHEL_GOWIN_DEVICES STREQUAL "all")
set(HIMBAECHEL_GOWIN_DEVICES ${ALL_HIMBAECHEL_GOWIN_DEVICES}) set(HIMBAECHEL_GOWIN_DEVICES ${ALL_HIMBAECHEL_GOWIN_DEVICES})
endif() endif()
message(STATUS "Enabled Himbaechel-Gowin devices: ${HIMBAECHEL_GOWIN_DEVICES}") message(STATUS "Enabled Himbaechel-Gowin devices: ${HIMBAECHEL_GOWIN_DEVICES}")
if(DEFINED ENV{APYCULA_INSTALL_PREFIX}) if (DEFINED ENV{APYCULA_INSTALL_PREFIX})
set(apycula_default_install_prefix $ENV{APYCULA_INSTALL_PREFIX}) set(apycula_default_install_prefix $ENV{APYCULA_INSTALL_PREFIX})
endif() endif()
set(APYCULA_INSTALL_PREFIX ${apycula_default_install_prefix} CACHE STRING set(APYCULA_INSTALL_PREFIX ${apycula_default_install_prefix} CACHE STRING
"Apycula install prefix (virtualenv directory)") "Apycula install prefix (virtualenv directory)")
if(NOT APYCULA_INSTALL_PREFIX STREQUAL "") if (NOT APYCULA_INSTALL_PREFIX STREQUAL "")
message(STATUS "Apycula install prefix: ${APYCULA_INSTALL_PREFIX}") message(STATUS "Apycula install prefix: ${APYCULA_INSTALL_PREFIX}")
set(apycula_Python3_EXECUTABLE ${APYCULA_INSTALL_PREFIX}/bin/python) set(apycula_Python3_EXECUTABLE ${APYCULA_INSTALL_PREFIX}/bin/python)
else() else()
@ -25,8 +25,8 @@ endif()
set(chipdb_binaries) set(chipdb_binaries)
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/himbaechel/gowin) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/himbaechel/gowin)
foreach(device ${HIMBAECHEL_GOWIN_DEVICES}) foreach (device ${HIMBAECHEL_GOWIN_DEVICES})
if(NOT device IN_LIST ALL_HIMBAECHEL_GOWIN_DEVICES) if (NOT device IN_LIST ALL_HIMBAECHEL_GOWIN_DEVICES)
message(FATAL_ERROR "Device ${device} is not a supported Gowin device") message(FATAL_ERROR "Device ${device} is not a supported Gowin device")
endif() endif()

View File

@ -11,8 +11,8 @@ set(HIMBAECHEL_PRJBEYOND_DB "" CACHE STRING
set(chipdb_binaries) set(chipdb_binaries)
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/himbaechel/ng-ultra) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/himbaechel/ng-ultra)
foreach(device ${HIMBAECHEL_NGULTRA_DEVICES}) foreach (device ${HIMBAECHEL_NGULTRA_DEVICES})
if("${HIMBAECHEL_PRJBEYOND_DB}" STREQUAL "") if ("${HIMBAECHEL_PRJBEYOND_DB}" STREQUAL "")
message(SEND_ERROR "HIMBAECHEL_PRJBEYOND_DB must be set to a prjbeyond database checkout") message(SEND_ERROR "HIMBAECHEL_PRJBEYOND_DB must be set to a prjbeyond database checkout")
endif() endif()

View File

@ -11,8 +11,8 @@ message(STATUS "Enabled Himbaechel-Xilinx devices: ${HIMBAECHEL_XILINX_DEVICES}"
set(chipdb_binaries) set(chipdb_binaries)
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/himbaechel/xilinx) file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/himbaechel/xilinx)
foreach(device ${HIMBAECHEL_XILINX_DEVICES}) foreach (device ${HIMBAECHEL_XILINX_DEVICES})
if("${HIMBAECHEL_PRJXRAY_DB}" STREQUAL "") if ("${HIMBAECHEL_PRJXRAY_DB}" STREQUAL "")
message(SEND_ERROR "HIMBAECHEL_PRJXRAY_DB must be set to a prjxray database checkout") message(SEND_ERROR "HIMBAECHEL_PRJXRAY_DB must be set to a prjxray database checkout")
endif() endif()

View File

@ -6,7 +6,7 @@ set(ICE40_DEVICES ${ALL_ICE40_DEVICES} CACHE STRING
"Include support for these iCE40 devices (available: ${ALL_ICE40_DEVICES})") "Include support for these iCE40 devices (available: ${ALL_ICE40_DEVICES})")
message(STATUS "Enabled iCE40 devices: ${ICE40_DEVICES}") message(STATUS "Enabled iCE40 devices: ${ICE40_DEVICES}")
if(DEFINED ICE40_CHIPDB) if (DEFINED ICE40_CHIPDB)
add_custom_target(chipdb-ice40-bbas ALL) add_custom_target(chipdb-ice40-bbas ALL)
else() else()
# shared among all families # shared among all families
@ -15,37 +15,37 @@ else()
set(icestorm_default_install_prefix ${CMAKE_INSTALL_PREFIX}) set(icestorm_default_install_prefix ${CMAKE_INSTALL_PREFIX})
# for compatibility with old build scripts # for compatibility with old build scripts
if(DEFINED ICEBOX_ROOT) if (DEFINED ICEBOX_ROOT)
message(WARNING "-DICEBOX_ROOT= is deprecated, use -DICESTORM_INSTALL_PREFIX=${ICEBOX_ROOT} instead") message(WARNING "-DICEBOX_ROOT= is deprecated, use -DICESTORM_INSTALL_PREFIX=${ICEBOX_ROOT} instead")
get_filename_component(dir ${ICEBOX_ROOT} DIRECTORY) get_filename_component(dir ${ICEBOX_ROOT} DIRECTORY)
get_filename_component(dir ${dir} DIRECTORY) get_filename_component(dir ${dir} DIRECTORY)
set(icestorm_default_install_prefix ${dir}) set(icestorm_default_install_prefix ${dir})
elseif(DEFINED ENV{ICESTORM_INSTALL_PREFIX}) elseif (DEFINED ENV{ICESTORM_INSTALL_PREFIX})
set(icestorm_default_install_prefix $ENV{ICESTORM_INSTALL_PREFIX}) set(icestorm_default_install_prefix $ENV{ICESTORM_INSTALL_PREFIX})
endif() endif()
set(ICESTORM_INSTALL_PREFIX ${icestorm_default_install_prefix} CACHE STRING set(ICESTORM_INSTALL_PREFIX ${icestorm_default_install_prefix} CACHE STRING
"IceStorm install prefix") "IceStorm install prefix")
message(STATUS "IceStorm install prefix: ${ICESTORM_INSTALL_PREFIX}") message(STATUS "IceStorm install prefix: ${ICESTORM_INSTALL_PREFIX}")
if(NOT ICEBOX_DATADIR) if (NOT ICEBOX_DATADIR)
set(ICEBOX_DATADIR ${ICESTORM_INSTALL_PREFIX}/share/icebox) set(ICEBOX_DATADIR ${ICESTORM_INSTALL_PREFIX}/share/icebox)
endif() endif()
message(STATUS "icebox data directory: ${ICEBOX_DATADIR}") message(STATUS "icebox data directory: ${ICEBOX_DATADIR}")
set(all_device_bbas) set(all_device_bbas)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/chipdb) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/chipdb)
foreach(device ${ICE40_DEVICES}) foreach (device ${ICE40_DEVICES})
if(NOT device IN_LIST ALL_ICE40_DEVICES) if (NOT device IN_LIST ALL_ICE40_DEVICES)
message(FATAL_ERROR "Device ${device} is not a supported iCE40 device") message(FATAL_ERROR "Device ${device} is not a supported iCE40 device")
endif() endif()
if(device STREQUAL "5k") if (device STREQUAL "5k")
set(timing_opts set(timing_opts
--slow ${ICEBOX_DATADIR}/timings_up5k.txt) --slow ${ICEBOX_DATADIR}/timings_up5k.txt)
elseif(device STREQUAL "u4k") elseif (device STREQUAL "u4k")
set(timing_opts set(timing_opts
--slow ${ICEBOX_DATADIR}/timings_u4k.txt) --slow ${ICEBOX_DATADIR}/timings_u4k.txt)
elseif(device STREQUAL "384") elseif (device STREQUAL "384")
set(timing_opts set(timing_opts
--slow ${ICEBOX_DATADIR}/timings_lp384.txt) --slow ${ICEBOX_DATADIR}/timings_lp384.txt)
else() else()
@ -72,7 +72,7 @@ else()
${PREVIOUS_CHIPDB_TARGET} ${PREVIOUS_CHIPDB_TARGET}
VERBATIM) VERBATIM)
list(APPEND all_device_bbas ${device_bba}) list(APPEND all_device_bbas ${device_bba})
if(SERIALIZE_CHIPDBS) if (SERIALIZE_CHIPDBS)
set(PREVIOUS_CHIPDB_TARGET ${CMAKE_CURRENT_BINARY_DIR}/${device_bba}) set(PREVIOUS_CHIPDB_TARGET ${CMAKE_CURRENT_BINARY_DIR}/${device_bba})
endif() endif()
endforeach() endforeach()
@ -80,7 +80,7 @@ else()
add_custom_target(chipdb-ice40-bbas ALL DEPENDS ${all_device_bbas}) add_custom_target(chipdb-ice40-bbas ALL DEPENDS ${all_device_bbas})
get_directory_property(has_parent PARENT_DIRECTORY) get_directory_property(has_parent PARENT_DIRECTORY)
if(has_parent) if (has_parent)
set(ICE40_CHIPDB ${CMAKE_CURRENT_BINARY_DIR}/chipdb PARENT_SCOPE) set(ICE40_CHIPDB ${CMAKE_CURRENT_BINARY_DIR}/chipdb PARENT_SCOPE)
# serialize chipdb build across multiple architectures # serialize chipdb build across multiple architectures
set(PREVIOUS_CHIPDB_TARGET chipdb-ice40-bbas PARENT_SCOPE) set(PREVIOUS_CHIPDB_TARGET chipdb-ice40-bbas PARENT_SCOPE)

View File

@ -4,24 +4,24 @@ message(STATUS "Using iCE40 chipdb: ${ICE40_CHIPDB}")
set(chipdb_sources) set(chipdb_sources)
set(chipdb_binaries) set(chipdb_binaries)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb)
foreach(device ${ICE40_DEVICES}) foreach (device ${ICE40_DEVICES})
set(chipdb_bba ${ICE40_CHIPDB}/chipdb-${device}.bba) set(chipdb_bba ${ICE40_CHIPDB}/chipdb-${device}.bba)
set(chipdb_bin ${family}/chipdb/chipdb-${device}.bin) set(chipdb_bin ${family}/chipdb/chipdb-${device}.bin)
set(chipdb_cc ${family}/chipdb/chipdb-${device}.cc) set(chipdb_cc ${family}/chipdb/chipdb-${device}.cc)
if(BBASM_MODE STREQUAL "binary") if (BBASM_MODE STREQUAL "binary")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_bin} OUTPUT ${chipdb_bin}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} ${chipdb_bba} ${chipdb_bin} COMMAND bbasm ${BBASM_ENDIAN_FLAG} ${chipdb_bba} ${chipdb_bin}
DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba}) DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba})
list(APPEND chipdb_binaries ${chipdb_bin}) list(APPEND chipdb_binaries ${chipdb_bin})
elseif(BBASM_MODE STREQUAL "embed") elseif (BBASM_MODE STREQUAL "embed")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_cc} ${chipdb_bin} OUTPUT ${chipdb_cc} ${chipdb_bin}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} --e ${chipdb_bba} ${chipdb_cc} ${chipdb_bin} COMMAND bbasm ${BBASM_ENDIAN_FLAG} --e ${chipdb_bba} ${chipdb_cc} ${chipdb_bin}
DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba}) DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba})
list(APPEND chipdb_sources ${chipdb_cc}) list(APPEND chipdb_sources ${chipdb_cc})
list(APPEND chipdb_binaries ${chipdb_bin}) list(APPEND chipdb_binaries ${chipdb_bin})
elseif(BBASM_MODE STREQUAL "string") elseif (BBASM_MODE STREQUAL "string")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_cc} OUTPUT ${chipdb_cc}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} --c ${chipdb_bba} ${chipdb_cc} COMMAND bbasm ${BBASM_ENDIAN_FLAG} --c ${chipdb_bba} ${chipdb_cc}
@ -29,12 +29,12 @@ foreach(device ${ICE40_DEVICES})
list(APPEND chipdb_sources ${chipdb_cc}) list(APPEND chipdb_sources ${chipdb_cc})
endif() endif()
endforeach() endforeach()
if(WIN32) if (WIN32)
set(chipdb_rc ${CMAKE_CURRENT_BINARY_DIR}/${family}/resource/chipdb.rc) set(chipdb_rc ${CMAKE_CURRENT_BINARY_DIR}/${family}/resource/chipdb.rc)
list(APPEND chipdb_sources ${chipdb_rc}) list(APPEND chipdb_sources ${chipdb_rc})
file(WRITE ${chipdb_rc}) file(WRITE ${chipdb_rc})
foreach(device ${ICE40_DEVICES}) foreach (device ${ICE40_DEVICES})
file(APPEND ${chipdb_rc} file(APPEND ${chipdb_rc}
"${family}/chipdb-${device}.bin RCDATA \"${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb/chipdb-${device}.bin\"") "${family}/chipdb-${device}.bin RCDATA \"${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb/chipdb-${device}.bin\"")
endforeach() endforeach()
@ -48,6 +48,6 @@ target_compile_options(chipdb-${family} PRIVATE -g0 -O0 -w)
target_compile_definitions(chipdb-${family} PRIVATE NEXTPNR_NAMESPACE=nextpnr_${family}) target_compile_definitions(chipdb-${family} PRIVATE NEXTPNR_NAMESPACE=nextpnr_${family})
target_include_directories(chipdb-${family} PRIVATE ${family}) target_include_directories(chipdb-${family} PRIVATE ${family})
foreach(family_target ${family_targets}) foreach (family_target ${family_targets})
target_sources(${family_target} PRIVATE $<TARGET_OBJECTS:chipdb-${family}>) target_sources(${family_target} PRIVATE $<TARGET_OBJECTS:chipdb-${family}>)
endforeach() endforeach()

View File

@ -6,7 +6,7 @@ set(MACHXO2_DEVICES 1200 6900 CACHE STRING
"Include support for these MachXO2/XO3 devices (available: ${ALL_MACHXO2_DEVICES})") "Include support for these MachXO2/XO3 devices (available: ${ALL_MACHXO2_DEVICES})")
message(STATUS "Enabled MachXO2/XO3 devices: ${MACHXO2_DEVICES}") message(STATUS "Enabled MachXO2/XO3 devices: ${MACHXO2_DEVICES}")
if(DEFINED MACHXO2_CHIPDB) if (DEFINED MACHXO2_CHIPDB)
add_custom_target(chipdb-machxo2-bbas ALL) add_custom_target(chipdb-machxo2-bbas ALL)
else() else()
# shared among all families # shared among all families
@ -15,7 +15,7 @@ else()
set(TRELLIS_PROGRAM_PREFIX "" CACHE STRING set(TRELLIS_PROGRAM_PREFIX "" CACHE STRING
"Trellis name prefix") "Trellis name prefix")
if(TRELLIS_PROGRAM_PREFIX) if (TRELLIS_PROGRAM_PREFIX)
message(STATUS "Trellis program prefix: ${TRELLIS_PROGRAM_PREFIX}") message(STATUS "Trellis program prefix: ${TRELLIS_PROGRAM_PREFIX}")
endif() endif()
@ -23,23 +23,23 @@ else()
"Trellis install prefix") "Trellis install prefix")
message(STATUS "Trellis install prefix: ${TRELLIS_INSTALL_PREFIX}") message(STATUS "Trellis install prefix: ${TRELLIS_INSTALL_PREFIX}")
if(NOT TRELLIS_LIBDIR) if (NOT TRELLIS_LIBDIR)
# The pytrellis library isn't a normal shared library, but rather a native Python library; # The pytrellis library isn't a normal shared library, but rather a native Python library;
# it does not follow the normal platform conventions for shared libraries, so we can't just # it does not follow the normal platform conventions for shared libraries, so we can't just
# use find_library() here. Instead, we emulate the useful parts of the find_library() logic # use find_library() here. Instead, we emulate the useful parts of the find_library() logic
# for use with find_path(). # for use with find_path().
set(pytrellis_paths) set(pytrellis_paths)
foreach(prefix_path ${CMAKE_PREFIX_PATH}) foreach (prefix_path ${CMAKE_PREFIX_PATH})
list(APPEND pytrellis_paths ${prefix_path}/lib) list(APPEND pytrellis_paths ${prefix_path}/lib)
if(CMAKE_LIBRARY_ARCHITECTURE) if (CMAKE_LIBRARY_ARCHITECTURE)
list(APPEND pytrellis_paths ${prefix_path}/lib/${CMAKE_LIBRARY_ARCHITECTURE}) list(APPEND pytrellis_paths ${prefix_path}/lib/${CMAKE_LIBRARY_ARCHITECTURE})
endif() endif()
endforeach() endforeach()
list(APPEND pytrellis_paths ${CMAKE_LIBRARY_PATH}) list(APPEND pytrellis_paths ${CMAKE_LIBRARY_PATH})
if(NOT NO_CMAKE_SYSTEM_PATH) if (NOT NO_CMAKE_SYSTEM_PATH)
foreach(prefix_path ${CMAKE_SYSTEM_PREFIX_PATH}) foreach (prefix_path ${CMAKE_SYSTEM_PREFIX_PATH})
list(APPEND pytrellis_paths ${prefix_path}/lib) list(APPEND pytrellis_paths ${prefix_path}/lib)
if(CMAKE_LIBRARY_ARCHITECTURE) if (CMAKE_LIBRARY_ARCHITECTURE)
list(APPEND pytrellis_paths ${prefix_path}/lib/${CMAKE_LIBRARY_ARCHITECTURE}) list(APPEND pytrellis_paths ${prefix_path}/lib/${CMAKE_LIBRARY_ARCHITECTURE})
endif() endif()
endforeach() endforeach()
@ -47,7 +47,7 @@ else()
endif() endif()
message(STATUS "Searching for pytrellis in: ${pytrellis_paths}") message(STATUS "Searching for pytrellis in: ${pytrellis_paths}")
if(WIN32) if (WIN32)
set(pytrellis_lib pytrellis.pyd) set(pytrellis_lib pytrellis.pyd)
else() else()
set(pytrellis_lib pytrellis${CMAKE_SHARED_MODULE_SUFFIX}) set(pytrellis_lib pytrellis${CMAKE_SHARED_MODULE_SUFFIX})
@ -58,21 +58,21 @@ else()
PATHS ${pytrellis_paths} PATHS ${pytrellis_paths}
PATH_SUFFIXES ${TRELLIS_PROGRAM_PREFIX}trellis PATH_SUFFIXES ${TRELLIS_PROGRAM_PREFIX}trellis
DOC "Location of the pytrellis library") DOC "Location of the pytrellis library")
if(NOT TRELLIS_LIBDIR) if (NOT TRELLIS_LIBDIR)
message(FATAL_ERROR "Failed to locate the pytrellis library") message(FATAL_ERROR "Failed to locate the pytrellis library")
endif() endif()
endif() endif()
message(STATUS "Trellis library directory: ${TRELLIS_LIBDIR}") message(STATUS "Trellis library directory: ${TRELLIS_LIBDIR}")
if(NOT TRELLIS_DATADIR) if (NOT TRELLIS_DATADIR)
set(TRELLIS_DATADIR ${TRELLIS_INSTALL_PREFIX}/share/${TRELLIS_PROGRAM_PREFIX}trellis) set(TRELLIS_DATADIR ${TRELLIS_INSTALL_PREFIX}/share/${TRELLIS_PROGRAM_PREFIX}trellis)
endif() endif()
message(STATUS "Trellis data directory: ${TRELLIS_DATADIR}") message(STATUS "Trellis data directory: ${TRELLIS_DATADIR}")
set(all_device_bbas) set(all_device_bbas)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/chipdb) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/chipdb)
foreach(device ${MACHXO2_DEVICES}) foreach (device ${MACHXO2_DEVICES})
if(NOT device IN_LIST ALL_MACHXO2_DEVICES) if (NOT device IN_LIST ALL_MACHXO2_DEVICES)
message(FATAL_ERROR "Device ${device} is not a supported MachXO2/XO3 device") message(FATAL_ERROR "Device ${device} is not a supported MachXO2/XO3 device")
endif() endif()
@ -96,7 +96,7 @@ else()
${PREVIOUS_CHIPDB_TARGET} ${PREVIOUS_CHIPDB_TARGET}
VERBATIM) VERBATIM)
list(APPEND all_device_bbas ${device_bba}) list(APPEND all_device_bbas ${device_bba})
if(SERIALIZE_CHIPDBS) if (SERIALIZE_CHIPDBS)
set(PREVIOUS_CHIPDB_TARGET ${CMAKE_CURRENT_BINARY_DIR}/${device_bba}) set(PREVIOUS_CHIPDB_TARGET ${CMAKE_CURRENT_BINARY_DIR}/${device_bba})
endif() endif()
endforeach() endforeach()
@ -104,7 +104,7 @@ else()
add_custom_target(chipdb-machxo2-bbas ALL DEPENDS ${all_device_bbas}) add_custom_target(chipdb-machxo2-bbas ALL DEPENDS ${all_device_bbas})
get_directory_property(has_parent PARENT_DIRECTORY) get_directory_property(has_parent PARENT_DIRECTORY)
if(has_parent) if (has_parent)
set(MACHXO2_CHIPDB ${CMAKE_CURRENT_BINARY_DIR}/chipdb PARENT_SCOPE) set(MACHXO2_CHIPDB ${CMAKE_CURRENT_BINARY_DIR}/chipdb PARENT_SCOPE)
# serialize chipdb build across multiple architectures # serialize chipdb build across multiple architectures
set(PREVIOUS_CHIPDB_TARGET chipdb-machxo2-bbas PARENT_SCOPE) set(PREVIOUS_CHIPDB_TARGET chipdb-machxo2-bbas PARENT_SCOPE)

View File

@ -4,24 +4,24 @@ message(STATUS "Using MachXO2/XO3 chipdb: ${MACHXO2_CHIPDB}")
set(chipdb_sources) set(chipdb_sources)
set(chipdb_binaries) set(chipdb_binaries)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb)
foreach(device ${MACHXO2_DEVICES}) foreach (device ${MACHXO2_DEVICES})
set(chipdb_bba ${MACHXO2_CHIPDB}/chipdb-${device}.bba) set(chipdb_bba ${MACHXO2_CHIPDB}/chipdb-${device}.bba)
set(chipdb_bin ${family}/chipdb/chipdb-${device}.bin) set(chipdb_bin ${family}/chipdb/chipdb-${device}.bin)
set(chipdb_cc ${family}/chipdb/chipdb-${device}.cc) set(chipdb_cc ${family}/chipdb/chipdb-${device}.cc)
if(BBASM_MODE STREQUAL "binary") if (BBASM_MODE STREQUAL "binary")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_bin} OUTPUT ${chipdb_bin}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} ${chipdb_bba} ${chipdb_bin} COMMAND bbasm ${BBASM_ENDIAN_FLAG} ${chipdb_bba} ${chipdb_bin}
DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba}) DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba})
list(APPEND chipdb_binaries ${chipdb_bin}) list(APPEND chipdb_binaries ${chipdb_bin})
elseif(BBASM_MODE STREQUAL "embed") elseif (BBASM_MODE STREQUAL "embed")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_cc} ${chipdb_bin} OUTPUT ${chipdb_cc} ${chipdb_bin}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} --e ${chipdb_bba} ${chipdb_cc} ${chipdb_bin} COMMAND bbasm ${BBASM_ENDIAN_FLAG} --e ${chipdb_bba} ${chipdb_cc} ${chipdb_bin}
DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba}) DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba})
list(APPEND chipdb_sources ${chipdb_cc}) list(APPEND chipdb_sources ${chipdb_cc})
list(APPEND chipdb_binaries ${chipdb_bin}) list(APPEND chipdb_binaries ${chipdb_bin})
elseif(BBASM_MODE STREQUAL "string") elseif (BBASM_MODE STREQUAL "string")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_cc} OUTPUT ${chipdb_cc}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} --c ${chipdb_bba} ${chipdb_cc} COMMAND bbasm ${BBASM_ENDIAN_FLAG} --c ${chipdb_bba} ${chipdb_cc}
@ -29,12 +29,12 @@ foreach(device ${MACHXO2_DEVICES})
list(APPEND chipdb_sources ${chipdb_cc}) list(APPEND chipdb_sources ${chipdb_cc})
endif() endif()
endforeach() endforeach()
if(WIN32) if (WIN32)
set(chipdb_rc ${CMAKE_CURRENT_BINARY_DIR}/${family}/resource/chipdb.rc) set(chipdb_rc ${CMAKE_CURRENT_BINARY_DIR}/${family}/resource/chipdb.rc)
list(APPEND chipdb_sources ${chipdb_rc}) list(APPEND chipdb_sources ${chipdb_rc})
file(WRITE ${chipdb_rc}) file(WRITE ${chipdb_rc})
foreach(device ${MACHXO2_DEVICES}) foreach (device ${MACHXO2_DEVICES})
file(APPEND ${chipdb_rc} file(APPEND ${chipdb_rc}
"${family}/chipdb-${device}.bin RCDATA \"${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb/chipdb-${device}.bin\"") "${family}/chipdb-${device}.bin RCDATA \"${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb/chipdb-${device}.bin\"")
endforeach() endforeach()
@ -50,7 +50,7 @@ target_include_directories(chipdb-${family} PRIVATE ${family})
configure_file(${family}/machxo2_available.h.in ${CMAKE_CURRENT_BINARY_DIR}/generated/machxo2_available.h) configure_file(${family}/machxo2_available.h.in ${CMAKE_CURRENT_BINARY_DIR}/generated/machxo2_available.h)
foreach(family_target ${family_targets}) foreach (family_target ${family_targets})
target_sources(${family_target} PRIVATE $<TARGET_OBJECTS:chipdb-${family}>) target_sources(${family_target} PRIVATE $<TARGET_OBJECTS:chipdb-${family}>)
target_sources(${family_target} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/generated/machxo2_available.h) target_sources(${family_target} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/generated/machxo2_available.h)
endforeach() endforeach()

View File

@ -7,7 +7,7 @@ add_subdirectory(${MISTRAL_ROOT}/libmistral ${CMAKE_CURRENT_BINARY_DIR}/libmistr
find_package(LibLZMA REQUIRED) find_package(LibLZMA REQUIRED)
foreach(family_target ${family_targets}) foreach (family_target ${family_targets})
target_include_directories(${family_target} PRIVATE ${MISTRAL_ROOT}/libmistral ${CMAKE_CURRENT_BINARY_DIR}/tools ${CMAKE_CURRENT_BINARY_DIR}/libmistral ${LIBLZMA_INCLUDE_DIRS}) target_include_directories(${family_target} PRIVATE ${MISTRAL_ROOT}/libmistral ${CMAKE_CURRENT_BINARY_DIR}/tools ${CMAKE_CURRENT_BINARY_DIR}/libmistral ${LIBLZMA_INCLUDE_DIRS})
target_link_libraries(${family_target} PRIVATE mistral ${LIBLZMA_LIBRARIES}) target_link_libraries(${family_target} PRIVATE mistral ${LIBLZMA_LIBRARIES})
endforeach() endforeach()

View File

@ -9,23 +9,23 @@ set(NEXUS_FAMILIES ${ALL_NEXUS_FAMILIES} CACHE STRING
"Include support for these Nexus families (available: ${ALL_NEXUS_FAMILIES})") "Include support for these Nexus families (available: ${ALL_NEXUS_FAMILIES})")
message(STATUS "Enabled Nexus families: ${NEXUS_FAMILIES}") message(STATUS "Enabled Nexus families: ${NEXUS_FAMILIES}")
if(DEFINED NEXUS_CHIPDB) if (DEFINED NEXUS_CHIPDB)
add_custom_target(chipdb-nexus-bbas ALL) add_custom_target(chipdb-nexus-bbas ALL)
else() else()
# shared among all families # shared among all families
IF(DEFINED ENV{OXIDE_INSTALL_PREFIX}) if (DEFINED ENV{OXIDE_INSTALL_PREFIX})
set(oxide_default_install_prefix $ENV{OXIDE_INSTALL_PREFIX}) set(oxide_default_install_prefix $ENV{OXIDE_INSTALL_PREFIX})
ELSE() else()
set(oxide_default_install_prefix ${CMAKE_INSTALL_PREFIX}) set(oxide_default_install_prefix ${CMAKE_INSTALL_PREFIX})
ENDIF() endif()
set(OXIDE_INSTALL_PREFIX "${oxide_default_install_prefix}" CACHE STRING set(OXIDE_INSTALL_PREFIX "${oxide_default_install_prefix}" CACHE STRING
"prjoxide install prefix") "prjoxide install prefix")
message(STATUS "prjoxide install prefix: ${OXIDE_INSTALL_PREFIX}") message(STATUS "prjoxide install prefix: ${OXIDE_INSTALL_PREFIX}")
set(all_device_bbas) set(all_device_bbas)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/chipdb) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/chipdb)
foreach(subfamily ${NEXUS_FAMILIES}) foreach (subfamily ${NEXUS_FAMILIES})
if(NOT subfamily IN_LIST ALL_NEXUS_FAMILIES) if (NOT subfamily IN_LIST ALL_NEXUS_FAMILIES)
message(FATAL_ERROR "${subfamily} is not a supported Nexus family") message(FATAL_ERROR "${subfamily} is not a supported Nexus family")
endif() endif()
@ -44,7 +44,7 @@ else()
${PREVIOUS_CHIPDB_TARGET} ${PREVIOUS_CHIPDB_TARGET}
VERBATIM) VERBATIM)
list(APPEND all_device_bbas ${family_bba}) list(APPEND all_device_bbas ${family_bba})
if(SERIALIZE_CHIPDBS) if (SERIALIZE_CHIPDBS)
set(PREVIOUS_CHIPDB_TARGET ${CMAKE_CURRENT_BINARY_DIR}/${family_bba}) set(PREVIOUS_CHIPDB_TARGET ${CMAKE_CURRENT_BINARY_DIR}/${family_bba})
endif() endif()
endforeach() endforeach()
@ -52,7 +52,7 @@ else()
add_custom_target(chipdb-nexus-bbas ALL DEPENDS ${all_device_bbas}) add_custom_target(chipdb-nexus-bbas ALL DEPENDS ${all_device_bbas})
get_directory_property(has_parent PARENT_DIRECTORY) get_directory_property(has_parent PARENT_DIRECTORY)
if(has_parent) if (has_parent)
set(NEXUS_CHIPDB ${CMAKE_CURRENT_BINARY_DIR}/chipdb PARENT_SCOPE) set(NEXUS_CHIPDB ${CMAKE_CURRENT_BINARY_DIR}/chipdb PARENT_SCOPE)
# serialize chipdb build across multiple architectures # serialize chipdb build across multiple architectures
set(PREVIOUS_CHIPDB_TARGET chipdb-nexus-bbas PARENT_SCOPE) set(PREVIOUS_CHIPDB_TARGET chipdb-nexus-bbas PARENT_SCOPE)

View File

@ -4,24 +4,24 @@ message(STATUS "Using Nexus chipdb: ${NEXUS_CHIPDB}")
set(chipdb_sources) set(chipdb_sources)
set(chipdb_binaries) set(chipdb_binaries)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb) file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb)
foreach(subfamily ${NEXUS_FAMILIES}) foreach (subfamily ${NEXUS_FAMILIES})
set(chipdb_bba ${NEXUS_CHIPDB}/chipdb-${subfamily}.bba) set(chipdb_bba ${NEXUS_CHIPDB}/chipdb-${subfamily}.bba)
set(chipdb_bin ${family}/chipdb/chipdb-${subfamily}.bin) set(chipdb_bin ${family}/chipdb/chipdb-${subfamily}.bin)
set(chipdb_cc ${family}/chipdb/chipdb-${subfamily}.cc) set(chipdb_cc ${family}/chipdb/chipdb-${subfamily}.cc)
if(BBASM_MODE STREQUAL "binary") if (BBASM_MODE STREQUAL "binary")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_bin} OUTPUT ${chipdb_bin}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} ${chipdb_bba} ${chipdb_bin} COMMAND bbasm ${BBASM_ENDIAN_FLAG} ${chipdb_bba} ${chipdb_bin}
DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba}) DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba})
list(APPEND chipdb_binaries ${chipdb_bin}) list(APPEND chipdb_binaries ${chipdb_bin})
elseif(BBASM_MODE STREQUAL "embed") elseif (BBASM_MODE STREQUAL "embed")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_cc} ${chipdb_bin} OUTPUT ${chipdb_cc} ${chipdb_bin}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} --e ${chipdb_bba} ${chipdb_cc} ${chipdb_bin} COMMAND bbasm ${BBASM_ENDIAN_FLAG} --e ${chipdb_bba} ${chipdb_cc} ${chipdb_bin}
DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba}) DEPENDS bbasm chipdb-${family}-bbas ${chipdb_bba})
list(APPEND chipdb_sources ${chipdb_cc}) list(APPEND chipdb_sources ${chipdb_cc})
list(APPEND chipdb_binaries ${chipdb_bin}) list(APPEND chipdb_binaries ${chipdb_bin})
elseif(BBASM_MODE STREQUAL "string") elseif (BBASM_MODE STREQUAL "string")
add_custom_command( add_custom_command(
OUTPUT ${chipdb_cc} OUTPUT ${chipdb_cc}
COMMAND bbasm ${BBASM_ENDIAN_FLAG} --c ${chipdb_bba} ${chipdb_cc} COMMAND bbasm ${BBASM_ENDIAN_FLAG} --c ${chipdb_bba} ${chipdb_cc}
@ -29,12 +29,12 @@ foreach(subfamily ${NEXUS_FAMILIES})
list(APPEND chipdb_sources ${chipdb_cc}) list(APPEND chipdb_sources ${chipdb_cc})
endif() endif()
endforeach() endforeach()
if(WIN32) if (WIN32)
set(chipdb_rc ${CMAKE_CURRENT_BINARY_DIR}/${family}/resource/chipdb.rc) set(chipdb_rc ${CMAKE_CURRENT_BINARY_DIR}/${family}/resource/chipdb.rc)
list(APPEND chipdb_sources ${chipdb_rc}) list(APPEND chipdb_sources ${chipdb_rc})
file(WRITE ${chipdb_rc}) file(WRITE ${chipdb_rc})
foreach(subfamily ${NEXUS_FAMILIES}) foreach (subfamily ${NEXUS_FAMILIES})
file(APPEND ${chipdb_rc} file(APPEND ${chipdb_rc}
"${family}/chipdb-${subfamily}.bin RCDATA \"${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb/chipdb-${subfamily}.bin\"") "${family}/chipdb-${subfamily}.bin RCDATA \"${CMAKE_CURRENT_BINARY_DIR}/${family}/chipdb/chipdb-${subfamily}.bin\"")
endforeach() endforeach()
@ -48,6 +48,6 @@ target_compile_options(chipdb-${family} PRIVATE -g0 -O0 -w)
target_compile_definitions(chipdb-${family} PRIVATE NEXTPNR_NAMESPACE=nextpnr_${family}) target_compile_definitions(chipdb-${family} PRIVATE NEXTPNR_NAMESPACE=nextpnr_${family})
target_include_directories(chipdb-${family} PRIVATE ${family}) target_include_directories(chipdb-${family} PRIVATE ${family})
foreach(family_target ${family_targets}) foreach (family_target ${family_targets})
target_sources(${family_target} PRIVATE $<TARGET_OBJECTS:chipdb-${family}>) target_sources(${family_target} PRIVATE $<TARGET_OBJECTS:chipdb-${family}>)
endforeach() endforeach()