
This is explicitly recommended by the FindPython module documentation and is required to avoid failed builds on some systems. See: https://cmake.org/cmake/help/latest/module/FindPython.html
52 lines
2.2 KiB
CMake
52 lines
2.2 KiB
CMake
message(STATUS "Configuring Himbaechel-Gowin uarch")
|
|
cmake_minimum_required(VERSION 3.5)
|
|
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(HIMBAECHEL_GOWIN_DEVICES "" CACHE STRING
|
|
"Include support for these Gowin devices (available: ${ALL_HIMBAECHEL_GOWIN_DEVICES})")
|
|
if(HIMBAECHEL_GOWIN_DEVICES STREQUAL "all")
|
|
set(HIMBAECHEL_GOWIN_DEVICES ${ALL_HIMBAECHEL_GOWIN_DEVICES})
|
|
endif()
|
|
message(STATUS "Enabled Himbaechel-Gowin devices: ${HIMBAECHEL_GOWIN_DEVICES}")
|
|
|
|
if(DEFINED ENV{APYCULA_INSTALL_PREFIX})
|
|
set(apycula_default_install_prefix $ENV{APYCULA_INSTALL_PREFIX})
|
|
endif()
|
|
set(APYCULA_INSTALL_PREFIX ${apycula_default_install_prefix} CACHE STRING
|
|
"Apycula install prefix (virtualenv directory)")
|
|
if(NOT APYCULA_INSTALL_PREFIX STREQUAL "")
|
|
message(STATUS "Apycula install prefix: ${APYCULA_INSTALL_PREFIX}")
|
|
set(apycula_Python3_EXECUTABLE ${APYCULA_INSTALL_PREFIX}/bin/python)
|
|
else()
|
|
message(STATUS "Apycula install prefix: (using system Python)")
|
|
set(apycula_Python3_EXECUTABLE ${Python3_EXECUTABLE})
|
|
endif()
|
|
|
|
set(chipdb_binaries)
|
|
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/share/himbaechel/gowin)
|
|
foreach(device ${HIMBAECHEL_GOWIN_DEVICES})
|
|
if(NOT device IN_LIST ALL_HIMBAECHEL_GOWIN_DEVICES)
|
|
message(FATAL_ERROR "Device ${device} is not a supported Gowin device")
|
|
endif()
|
|
|
|
set(device_bba ${CMAKE_BINARY_DIR}/share/himbaechel/gowin/chipdb-${device}.bba)
|
|
set(device_bin ${CMAKE_BINARY_DIR}/share/himbaechel/gowin/chipdb-${device}.bin)
|
|
add_custom_command(
|
|
OUTPUT ${device_bin}
|
|
COMMAND ${apycula_Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/gowin_arch_gen.py -d ${device} -o ${device_bba}
|
|
COMMAND bbasm ${BBASM_ENDIAN_FLAG} ${device_bba} ${device_bin}.new
|
|
# atomically update
|
|
COMMAND ${CMAKE_COMMAND} -E rename ${device_bin}.new ${device_bin}
|
|
DEPENDS
|
|
bbasm
|
|
${CMAKE_CURRENT_SOURCE_DIR}/gowin_arch_gen.py
|
|
${CMAKE_CURRENT_SOURCE_DIR}/constids.inc
|
|
VERBATIM)
|
|
list(APPEND chipdb_binaries ${device_bin})
|
|
endforeach()
|
|
|
|
add_custom_target(chipdb-himbaechel-gowin ALL DEPENDS ${chipdb_binaries})
|
|
install(DIRECTORY ${CMAKE_BINARY_DIR}/share/himbaechel/gowin/ DESTINATION share/nextpnr/himbaechel/gowin
|
|
PATTERN "*.bba" EXCLUDE)
|