From 0bf4683f46b343d1309869076d7e733848a81f3a Mon Sep 17 00:00:00 2001 From: Hugues Kamba Date: Wed, 28 Oct 2020 16:50:23 +0000 Subject: [PATCH] CMake: Set compile defintions for supported toolchain at top level input source file The compile defintions should always be added depending on the selected toolchain. mbed_set_toolchain_options() should only be called if a third-party toolchain file has not been used as it has compile options that can cause conflicts. --- CMakeLists.txt | 17 +++++++++++++++++ tools/cmake/toolchains/ARM.cmake | 6 ------ tools/cmake/toolchains/GCC_ARM.cmake | 8 -------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 61f4a483d4..ca3cc5a389 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,7 @@ if(POLICY CMP0076) cmake_policy(SET CMP0076 NEW) endif() +include(${MBED_CONFIG_PATH}/mbed_config.cmake) include(${MBED_PATH}/tools/cmake/core.cmake) include(${MBED_PATH}/tools/cmake/profile.cmake) @@ -74,6 +75,22 @@ target_compile_definitions(mbed-core ${MBED_CONFIG_DEFINITIONS} ) +# Add compile definitions for backward compatibility with the toolchain +# supported. New source files should instead check for __GNUC__ and __clang__ +# for the GCC_ARM and ARM toolchains respectively. +if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM") + target_compile_definitions(mbed-core + INTERFACE + TOOLCHAIN_GCC_ARM + TOOLCHAIN_GCC + ) +elseif(${MBED_TOOLCHAIN} STREQUAL "ARM") + target_compile_definitions(mbed-core + INTERFACE + TOOLCHAIN_ARM + ) +endif() + # Include mbed.h and config from generate folder target_include_directories(mbed-core INTERFACE diff --git a/tools/cmake/toolchains/ARM.cmake b/tools/cmake/toolchains/ARM.cmake index d8a835d170..0ff9ea4772 100644 --- a/tools/cmake/toolchains/ARM.cmake +++ b/tools/cmake/toolchains/ARM.cmake @@ -13,7 +13,6 @@ if(MBEDIDE) set_property(GLOBAL PROPERTY MBED_STUDIO_ARM_COMPILER "--ide=mbed") endif() - # Sets toolchain options function(mbed_set_toolchain_options target) get_property(mbed_studio_arm_compiler GLOBAL PROPERTY MBED_STUDIO_ARM_COMPILER) @@ -48,11 +47,6 @@ function(mbed_set_toolchain_options target) $<$:${MBED_STUDIO_ARM_COMPILER}> ) - target_compile_definitions(${target} - INTERFACE - TOOLCHAIN_ARM - ) - list(APPEND link_options "${MBED_STUDIO_ARM_COMPILER}" "--map" diff --git a/tools/cmake/toolchains/GCC_ARM.cmake b/tools/cmake/toolchains/GCC_ARM.cmake index 99740b3cdf..1b2f111878 100644 --- a/tools/cmake/toolchains/GCC_ARM.cmake +++ b/tools/cmake/toolchains/GCC_ARM.cmake @@ -7,7 +7,6 @@ set(CMAKE_CXX_COMPILER "arm-none-eabi-g++") set(GCC_ELF2BIN "arm-none-eabi-objcopy") set_property(GLOBAL PROPERTY ELF2BIN ${GCC_ELF2BIN}) - # Sets toolchain options function(mbed_set_toolchain_options target) list(APPEND link_options @@ -52,13 +51,6 @@ function(mbed_set_toolchain_options target) ${common_options} ) - target_compile_definitions(${target} - INTERFACE - TOOLCHAIN_GCC_ARM - TOOLCHAIN_GCC - ) - - target_link_options(${target} INTERFACE ${common_options}