diff --git a/CMakeLists.txt b/CMakeLists.txt index be5fab3..1aa530a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,28 +18,28 @@ if(DR_COMPILE_CHECK) find_program(ARM_GCC arm-none-eabi-gcc) if(ARM_GCC) message(STATUS "ARM GCC found: ${ARM_GCC}") - set(ARM_MATRIX - "cm3; -mcpu=cortex-m3 -mthumb -mfloat-abi=soft" - "cm4-soft; -mcpu=cortex-m4 -mthumb -mfloat-abi=soft" - "cm4-hard; -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard" - "cm7-soft; -mcpu=cortex-m7 -mthumb -mfloat-abi=soft" - "cm7-hard; -mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard" + set(VARIANTS cm3 cm4-soft cm4-hard cm7-soft cm7-hard) + set(FLAG_LIST + "-mcpu=cortex-m3 -mthumb -mfloat-abi=soft" + "-mcpu=cortex-m4 -mthumb -mfloat-abi=soft" + "-mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard" + "-mcpu=cortex-m7 -mthumb -mfloat-abi=soft" + "-mcpu=cortex-m7 -mthumb -mfpu=fpv5-d16 -mfloat-abi=hard" ) - foreach(ENTRY ${ARM_MATRIX}) - string(REPLACE ";" "|" ENTRY "${ENTRY}") - string(REPLACE "|" ";" ITEM "${ENTRY}") - list(GET ITEM 0 VARIANT) - list(REMOVE_AT ITEM 0) - string(REPLACE ";" " " FLAGS "${ITEM}") - set(TARGET "check_${VARIANT}") - add_custom_target(${TARGET} - COMMAND ${ARM_GCC} ${FLAGS} + list(LENGTH VARIANTS VN) + math(EXPR VN "${VN} - 1") + foreach(I RANGE ${VN}) + list(GET VARIANTS ${I} V) + list(GET FLAG_LIST ${I} F) + set(TGT "check_${V}") + add_custom_target(${TGT} + COMMAND ${ARM_GCC} ${F} -c ${CMAKE_CURRENT_SOURCE_DIR}/datarouter.c -I${CMAKE_CURRENT_SOURCE_DIR} - -o ${CMAKE_CURRENT_BINARY_DIR}/${TARGET}.o - COMMENT "Compile check: ${VARIANT} (${FLAGS})" + -o ${CMAKE_CURRENT_BINARY_DIR}/${TGT}.o + COMMENT "Compile check: ${V} (${F})" ) - message(STATUS " compile check: ${VARIANT} (make ${TARGET})") + message(STATUS " compile check: ${V} (make ${TGT})") endforeach() else() message(WARNING "arm-none-eabi-gcc not found; skipping ARM compile checks")