diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ca4ebec97..f594083656 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,7 @@ include(${MBED_ROOT}/cmake/core.cmake) mbed_set_cpu_core_options(mbed-os ${MBED_TOOLCHAIN}) include(${MBED_ROOT}/cmake/toolchain.cmake) +mbed_set_toolchain_options(mbed-os) include(${MBED_ROOT}/cmake/profile.cmake) diff --git a/cmake/toolchains/ARM.cmake b/cmake/toolchains/ARM.cmake index 2ee5d5f2a1..e3b249e3cf 100644 --- a/cmake/toolchains/ARM.cmake +++ b/cmake/toolchains/ARM.cmake @@ -13,47 +13,52 @@ if(MBEDIDE) set_property(GLOBAL PROPERTY MBED_STUDIO_ARM_COMPILER "--ide=mbed") endif() -list(APPEND common_options - "${mbed_studio_arm_compiler}" - "-c" - "--target=arm-arm-none-eabi" - "-mthumb" - "-Wno-armcc-pragma-push-pop" - "-Wno-armcc-pragma-anon-unions" - "-Wno-reserved-user-defined-literal" - "-Wno-deprecated-register" - "-fdata-sections" - "-fno-exceptions" - "-fshort-enums" - "-fshort-wchar" -) -target_compile_options(mbed-os - PUBLIC - $<$:${common_options}> -) +# Sets toolchain options +function(mbed_set_toolchain_options target) + get_property(mbed_studio_arm_compiler GLOBAL PROPERTY MBED_STUDIO_ARM_COMPILER) + list(APPEND common_options + "${mbed_studio_arm_compiler}" + "-c" + "--target=arm-arm-none-eabi" + "-mthumb" + "-Wno-armcc-pragma-push-pop" + "-Wno-armcc-pragma-anon-unions" + "-Wno-reserved-user-defined-literal" + "-Wno-deprecated-register" + "-fdata-sections" + "-fno-exceptions" + "-fshort-enums" + "-fshort-wchar" + ) -target_compile_options(mbed-os - PUBLIC - $<$:${common_options}> -) + target_compile_options(${target} + PUBLIC + $<$:${common_options}> + ) -set(asm_preproc_options - "--target=arm-arm-none-eabi,-D,MBED_CONF_PLATFORM_CRASH_CAPTURE_ENABLED" -) -target_compile_options(mbed-os - PUBLIC - $<$:${MBED_STUDIO_ARM_COMPILER}> - $<$:--cpreproc> - $<$:--cpreproc_opts=${asm_preproc_options}> -) + target_compile_options(${target} + PUBLIC + $<$:${common_options}> + ) -target_compile_definitions(mbed-os - PUBLIC - TOOLCHAIN_ARM -) + set(asm_preproc_options + "--target=arm-arm-none-eabi,-D,MBED_CONF_PLATFORM_CRASH_CAPTURE_ENABLED" + ) + target_compile_options(${target} + PUBLIC + $<$:${MBED_STUDIO_ARM_COMPILER}> + $<$:--cpreproc> + $<$:--cpreproc_opts=${asm_preproc_options}> + ) -target_link_options(mbed-os - PUBLIC - ${MBED_STUDIO_ARM_COMPILER} -) + target_compile_definitions(${target} + PUBLIC + TOOLCHAIN_ARM + ) + + target_link_options(${target} + PUBLIC + ${MBED_STUDIO_ARM_COMPILER} + ) +endfunction() diff --git a/cmake/toolchains/GCC_ARM.cmake b/cmake/toolchains/GCC_ARM.cmake index 7bebb9171f..b884a149b2 100644 --- a/cmake/toolchains/GCC_ARM.cmake +++ b/cmake/toolchains/GCC_ARM.cmake @@ -7,47 +7,51 @@ set(CMAKE_CXX_COMPILER "arm-none-eabi-g++") set(GCC_ELF2BIN "arm-none-eabi-objcopy") set_property(GLOBAL PROPERTY ELF2BIN ${GCC_ELF2BIN}) -list(APPEND link_options - "-Wl,--start-group" - "-lstdc++" - "-lsupc++" - "-lm" - "-lc" - "-lgcc" - "-lnosys" - "-Wl,--end-group" - "-specs=nosys.specs" - "-T" "${CMAKE_BINARY_DIR}/${APP_TARGET}.link_script.ld" -) -list(APPEND common_options - "-Wall" - "-Wextra" - "-Wno-unused-parameter" - "-Wno-missing-field-initializers" - "-fmessage-length=0" - "-fno-exceptions" - "-ffunction-sections" - "-fdata-sections" - "-funsigned-char" - "-MMD" - "-fomit-frame-pointer" - "-g3" -) +# Sets toolchain options +function(mbed_set_toolchain_options target) + list(APPEND link_options + "-Wl,--start-group" + "-lstdc++" + "-lsupc++" + "-lm" + "-lc" + "-lgcc" + "-lnosys" + "-Wl,--end-group" + "-specs=nosys.specs" + "-T" "${CMAKE_BINARY_DIR}/${APP_TARGET}.link_script.ld" + ) -target_compile_options(mbed-os - PUBLIC - ${common_options} -) + list(APPEND common_options + "-Wall" + "-Wextra" + "-Wno-unused-parameter" + "-Wno-missing-field-initializers" + "-fmessage-length=0" + "-fno-exceptions" + "-ffunction-sections" + "-fdata-sections" + "-funsigned-char" + "-MMD" + "-fomit-frame-pointer" + "-g3" + ) -target_compile_definitions(mbed-os - PUBLIC - TOOLCHAIN_GCC_ARM - TOOLCHAIN_GCC -) + target_compile_options(${target} + PUBLIC + ${common_options} + ) -target_link_options(mbed-os - PUBLIC - ${common_options} - ${link_options} -) + target_compile_definitions(${target} + PUBLIC + TOOLCHAIN_GCC_ARM + TOOLCHAIN_GCC + ) + + target_link_options(${target} + PUBLIC + ${common_options} + ${link_options} + ) +endfunction()