init
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
cmake_minimum_required(VERSION 3.27)
|
||||
include(ExternalProject)
|
||||
|
||||
project("Robot_V2" NONE)
|
||||
|
||||
# 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(DIRS
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Robot_V2.Release+GD32C103CB"
|
||||
)
|
||||
|
||||
set(OUTPUTS_1
|
||||
"${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"
|
||||
)
|
||||
|
||||
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 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 echo "Building CMake target '${CONTEXT}'"
|
||||
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()
|
||||
Reference in New Issue
Block a user