cmake: Allow to configure/restrict the variant to be built

This introduces FW_VARIANTS as a configurable option, defaulting to the
full list of variants.
This commit is contained in:
Yuri D'Elia 2022-10-01 17:20:09 +02:00
parent b3add22885
commit 530702d1c9
1 changed files with 15 additions and 8 deletions

View File

@ -459,18 +459,25 @@ endfunction()
if(CMAKE_CROSSCOMPILING) if(CMAKE_CROSSCOMPILING)
file(GLOB FW_VARIANTS RELATIVE ${PROJECT_SOURCE_DIR}/Firmware/variants ${PROJECT_SOURCE_DIR}/Firmware/variants/*.h) # build a list of all supported variants
foreach(THIS_VAR IN LISTS FW_VARIANTS) file(GLOB ALL_VARIANTS RELATIVE ${PROJECT_SOURCE_DIR}/Firmware/variants ${PROJECT_SOURCE_DIR}/Firmware/variants/*.h)
string(REPLACE ".h" "" TRIMMED_NAME "${THIS_VAR}") list(TRANSFORM ALL_VARIANTS REPLACE "\.h$" "")
message("Variant added: ${TRIMMED_NAME}") set(FW_VARIANTS ${ALL_VARIANTS} CACHE STRING "Firmware variants to be built")
string(REPLACE "-E3Dv6full" "" DIR_NAME "${TRIMMED_NAME}")
foreach(THIS_VAR IN LISTS FW_VARIANTS)
if(NOT ${THIS_VAR} IN_LIST ALL_VARIANTS)
message(FATAL_ERROR "Variant ${THIS_VAR} does not exist")
endif()
message("Variant added: ${THIS_VAR}")
string(REPLACE "-E3Dv6full" "" DIR_NAME "${THIS_VAR}")
string(REPLACE "1_75mm_" "" DIR_NAME "${DIR_NAME}") string(REPLACE "1_75mm_" "" DIR_NAME "${DIR_NAME}")
# Generate a file in a subfolder so that we can organize things a little more neatly in VS code # Generate a file in a subfolder so that we can organize things a little more neatly in VS code
FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build_gen/${DIR_NAME}) FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build_gen/${DIR_NAME})
FILE(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/build_gen/${DIR_NAME}/CMakeLists.txt "project(${DIR_NAME})\nfw_add_variant(${TRIMMED_NAME})") FILE(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/build_gen/${DIR_NAME}/CMakeLists.txt "project(${DIR_NAME})\nfw_add_variant(${THIS_VAR})")
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/build_gen/${DIR_NAME}) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/build_gen/${DIR_NAME})
#fw_add_variant(${TRIMMED_NAME}) #fw_add_variant(${TRIMMED_NAME})
endforeach(THIS_VAR IN LISTS FW_VARIANTS) endforeach(THIS_VAR IN LISTS FW_VARIANTS)
endif() endif()