Files
GD32_BOOT/tmp/CMakeLists.txt
T

92 lines
2.6 KiB
CMake

cmake_minimum_required(VERSION 3.27)
include(ExternalProject)
project("Robot_V2" NONE)
# Enable color diagnostics
set(CMAKE_COLOR_DIAGNOSTICS ON)
# Roots
include("roots.cmake")
# Context specific lists
set(CONTEXTS
"Robot_V2.Release+GD32C103CB"
)
list(LENGTH CONTEXTS CONTEXTS_LENGTH)
math(EXPR CONTEXTS_LENGTH "${CONTEXTS_LENGTH}-1")
set(COMPILERS
"AC6 V6.24.0"
)
set(DIRS
"${CMAKE_CURRENT_SOURCE_DIR}/Robot_V2.Release+GD32C103CB"
)
set(OUTPUTS_1
"${SOLUTION_ROOT}/out/Robot_V2/GD32C103CB/Release/Robot_V2.bin"
"${SOLUTION_ROOT}/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf"
"${SOLUTION_ROOT}/out/Robot_V2/GD32C103CB/Release/Robot_V2.hex"
"${SOLUTION_ROOT}/out/Robot_V2/GD32C103CB/Release/Robot_V2.axf.map"
"${SOLUTION_ROOT}/out/Robot_V2/GD32C103CB/Release/compile_commands.json"
)
set(ARGS
"-DSOLUTION_ROOT=${SOLUTION_ROOT}"
"-DCMSIS_PACK_ROOT=${CMSIS_PACK_ROOT}"
"-DCMSIS_COMPILER_ROOT=${CMSIS_COMPILER_ROOT}"
)
# Compilation database
add_custom_target(database)
# Iterate over contexts
foreach(INDEX RANGE ${CONTEXTS_LENGTH})
math(EXPR N "${INDEX}+1")
list(GET CONTEXTS ${INDEX} CONTEXT)
list(GET COMPILERS ${INDEX} COMPILER)
list(GET DIRS ${INDEX} DIR)
# Create external project, set configure and build steps
ExternalProject_Add(${CONTEXT}
PREFIX ${DIR}
SOURCE_DIR ${DIR}
BINARY_DIR ${N}
INSTALL_COMMAND ""
TEST_COMMAND ""
CONFIGURE_COMMAND ${CMAKE_COMMAND} -G Ninja -S <SOURCE_DIR> -B <BINARY_DIR> ${ARGS}
BUILD_COMMAND ${CMAKE_COMMAND} -E cmake_echo_color --blue --bold "Building CMake target '${CONTEXT}'"
COMMAND ${CMAKE_COMMAND} -E echo "Using compiler: ${COMPILER}"
COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR>
BUILD_ALWAYS TRUE
BUILD_BYPRODUCTS ${OUTPUTS_${N}}
LOG_CONFIGURE ON
LOG_OUTPUT_ON_FAILURE ON
USES_TERMINAL_BUILD ON
)
# Executes command step
ExternalProject_Add_Step(${CONTEXT} executes
DEPENDEES build
)
ExternalProject_Add_StepTargets(${CONTEXT} build configure executes)
# Debug
message(VERBOSE "Configure Context: ${CMAKE_COMMAND} -G Ninja -S ${DIR} -B ${N}")
# Database generation step
ExternalProject_Add_Step(${CONTEXT} database
COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --target database
ALWAYS TRUE
LOG TRUE
USES_TERMINAL ON
DEPENDEES configure
)
ExternalProject_Add_StepTargets(${CONTEXT} database)
add_dependencies(database ${CONTEXT}-database)
endforeach()