Skip to content

Commit cca6652

Browse files
authored
Merge pull request #13987 from multiplemonomials/cmake-global-options
CMake: Set required toolchain and processor flags globally, instead of per-target
2 parents 2c1ce49 + 975a871 commit cca6652

27 files changed

+449
-781
lines changed

CMakeLists.txt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
cmake_minimum_required(VERSION 3.19.0 FATAL_ERROR)
77

88
include(${MBED_CONFIG_PATH}/mbed_config.cmake)
9-
include(${MBED_PATH}/tools/cmake/core.cmake)
109

1110
add_library(mbed-core INTERFACE)
1211

@@ -55,8 +54,6 @@ endif()
5554

5655
mbed_set_cpu_core_definitions(mbed-core)
5756
if(${MBED_TOOLCHAIN_FILE_USED})
58-
mbed_set_cpu_core_options(mbed-core ${MBED_TOOLCHAIN})
59-
mbed_set_toolchain_options(mbed-core)
6057
mbed_set_profile_options(mbed-core ${MBED_TOOLCHAIN})
6158
mbed_set_c_lib(mbed-core ${MBED_C_LIB})
6259
mbed_set_printf_lib(mbed-core ${MBED_PRINTF_LIB})

tools/cmake/app.cmake

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,13 @@ endif()
99

1010
include(${MBED_CONFIG_PATH}/mbed_config.cmake)
1111

12-
# Set default toolchain file
12+
# Load toolchain file
1313
if(NOT CMAKE_TOOLCHAIN_FILE OR MBED_TOOLCHAIN_FILE_USED)
1414
set(MBED_TOOLCHAIN_FILE_USED TRUE CACHE INTERNAL "")
15-
16-
set(CMAKE_TOOLCHAIN_FILE "${MBED_PATH}/tools/cmake/toolchain.cmake" CACHE INTERNAL "")
17-
18-
# Specify locations for toolchains and generic options
19-
include(${MBED_PATH}/tools/cmake/toolchains/${MBED_TOOLCHAIN}.cmake)
20-
21-
# Specify available build profiles and add options for the selected build profile
22-
include(${MBED_PATH}/tools/cmake/profile.cmake)
15+
include(${MBED_PATH}/tools/cmake/toolchain.cmake)
2316
endif()
2417

18+
# Specify available build profiles and add options for the selected build profile
19+
include(${MBED_PATH}/tools/cmake/profile.cmake)
20+
2521
enable_language(C CXX ASM)

tools/cmake/core.cmake

Lines changed: 0 additions & 4 deletions
This file was deleted.

tools/cmake/cores/Cortex-A9.cmake

Lines changed: 20 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,26 @@
11
# Copyright (c) 2020 ARM Limited. All rights reserved.
22
# SPDX-License-Identifier: Apache-2.0
33

4-
# Sets cpu core options
5-
function(mbed_set_cpu_core_options target mbed_toolchain)
6-
if(${mbed_toolchain} STREQUAL "GCC_ARM")
7-
list(APPEND common_toolchain_options
8-
"-mthumb-interwork"
9-
"-marm"
10-
"-march=armv7-a"
11-
"-mfpu=vfpv3"
12-
"-mfloat-abi=hard"
13-
"-mno-unaligned-access"
14-
)
15-
16-
target_compile_options(${target}
17-
INTERFACE
18-
${common_toolchain_options}
19-
)
20-
21-
target_link_options(${target}
22-
INTERFACE
23-
${common_toolchain_options}
24-
)
25-
elseif(${mbed_toolchain} STREQUAL "ARM")
26-
list(APPEND compile_options
27-
"-mcpu=cortex-a9"
28-
)
29-
30-
target_compile_options(${target}
31-
INTERFACE
32-
$<$<COMPILE_LANGUAGE:C>:${compile_options}>
33-
$<$<COMPILE_LANGUAGE:CXX>:${compile_options}>
34-
$<$<COMPILE_LANGUAGE:ASM>:-mcpu=Cortex-A9>
35-
)
36-
37-
target_link_options(${target}
38-
INTERFACE
39-
"--cpu=Cortex-A9"
40-
)
41-
endif()
42-
endfunction()
4+
if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM")
5+
list(APPEND common_options
6+
"-mthumb-interwork"
7+
"-marm"
8+
"-march=armv7-a"
9+
"-mfpu=vfpv3"
10+
"-mfloat-abi=hard"
11+
"-mno-unaligned-access"
12+
)
13+
elseif(${MBED_TOOLCHAIN} STREQUAL "ARM")
14+
list(APPEND c_cxx_compile_options
15+
"-mcpu=cortex-a9"
16+
)
17+
list(APPEND asm_compile_options
18+
"-mcpu=Cortex-A9"
19+
)
20+
list(APPEND link_options
21+
"--cpu=Cortex-A9"
22+
)
23+
endif()
4324

4425
function(mbed_set_cpu_core_definitions target)
4526
target_compile_definitions(${target}

tools/cmake/cores/Cortex-M0+.cmake

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -2,40 +2,22 @@
22
# SPDX-License-Identifier: Apache-2.0
33

44
# Sets cpu core options
5-
function(mbed_set_cpu_core_options target mbed_toolchain)
6-
if(${mbed_toolchain} STREQUAL "GCC_ARM")
7-
list(APPEND common_toolchain_options
8-
"-mthumb"
9-
"-mcpu=cortex-m0plus"
10-
)
11-
12-
target_compile_options(${target}
13-
INTERFACE
14-
${common_toolchain_options}
15-
)
16-
17-
target_link_options(${target}
18-
INTERFACE
19-
${common_toolchain_options}
20-
)
21-
elseif(${mbed_toolchain} STREQUAL "ARM")
22-
list(APPEND compile_options
23-
"-mcpu=cortex-m0plus"
24-
)
25-
26-
target_compile_options(${target}
27-
INTERFACE
28-
$<$<COMPILE_LANGUAGE:C>:${compile_options}>
29-
$<$<COMPILE_LANGUAGE:CXX>:${compile_options}>
30-
$<$<COMPILE_LANGUAGE:ASM>:-mcpu=Cortex-M0plus>
31-
)
32-
33-
target_link_options(${target}
34-
INTERFACE
35-
"--cpu=Cortex-M0plus"
36-
)
37-
endif()
38-
endfunction()
5+
if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM")
6+
list(APPEND common_options
7+
"-mthumb"
8+
"-mcpu=cortex-m0plus"
9+
)
10+
elseif(${MBED_TOOLCHAIN} STREQUAL "ARM")
11+
list(APPEND c_cxx_compile_options
12+
"-mcpu=cortex-m0plus"
13+
)
14+
list(APPEND asm_compile_options
15+
"-mcpu=Cortex-M0plus"
16+
)
17+
list(APPEND link_options
18+
"--cpu=Cortex-M0plus"
19+
)
20+
endif()
3921

4022
function(mbed_set_cpu_core_definitions target)
4123
target_compile_definitions(${target}

tools/cmake/cores/Cortex-M0.cmake

Lines changed: 15 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,21 @@
22
# SPDX-License-Identifier: Apache-2.0
33

44
# Sets cpu core options
5-
function(mbed_set_cpu_core_options target mbed_toolchain)
6-
if(${mbed_toolchain} STREQUAL "GCC_ARM")
7-
list(APPEND common_toolchain_options
8-
"-mthumb"
9-
)
10-
11-
target_compile_options(${target}
12-
INTERFACE
13-
${common_toolchain_options}
14-
)
15-
16-
target_link_options(${target}
17-
INTERFACE
18-
${common_toolchain_options}
19-
)
20-
elseif(${mbed_toolchain} STREQUAL "ARM")
21-
list(APPEND options
22-
"-mcpu=cortex-m0"
23-
)
24-
25-
target_compile_options(${target}
26-
INTERFACE
27-
$<$<COMPILE_LANGUAGE:C>:${compile_options}>
28-
$<$<COMPILE_LANGUAGE:CXX>:${compile_options}>
29-
$<$<COMPILE_LANGUAGE:ASM>:-mcpu=Cortex-M0>
30-
)
31-
32-
target_link_options(${target}
33-
INTERFACE
34-
"-cpu=Cortex-M0"
35-
)
36-
endif()
37-
endfunction()
5+
if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM")
6+
list(APPEND common_options
7+
"-mthumb"
8+
)
9+
elseif(${MBED_TOOLCHAIN} STREQUAL "ARM")
10+
list(APPEND c_cxx_compile_options
11+
"-mcpu=cortex-m0"
12+
)
13+
list(APPEND asm_compile_options
14+
"-mcpu=Cortex-M0"
15+
)
16+
list(APPEND link_options
17+
"--cpu=Cortex-M0"
18+
)
19+
endif()
3820

3921
function(mbed_set_cpu_core_definitions target)
4022
target_compile_definitions(${target}

tools/cmake/cores/Cortex-M1.cmake

Lines changed: 15 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,21 @@
22
# SPDX-License-Identifier: Apache-2.0
33

44
# Sets cpu core options
5-
function(mbed_set_cpu_core_options target mbed_toolchain)
6-
if(${mbed_toolchain} STREQUAL "GCC_ARM")
7-
list(APPEND common_toolchain_options
8-
"-mthumb"
9-
)
10-
11-
target_compile_options(${target}
12-
INTERFACE
13-
${common_toolchain_options}
14-
)
15-
16-
target_link_options(${target}
17-
INTERFACE
18-
${common_toolchain_options}
19-
)
20-
elseif(${mbed_toolchain} STREQUAL "ARM")
21-
list(APPEND options
22-
"-mcpu=cortex-m1"
23-
)
24-
25-
target_compile_options(${target}
26-
INTERFACE
27-
$<$<COMPILE_LANGUAGE:C>:${compile_options}>
28-
$<$<COMPILE_LANGUAGE:CXX>:${compile_options}>
29-
$<$<COMPILE_LANGUAGE:ASM>:-mcpu=Cortex-M1>
30-
)
31-
32-
target_link_options(${target}
33-
INTERFACE
34-
"--cpu=Cortex-M1"
35-
)
36-
endif()
37-
endfunction()
5+
if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM")
6+
list(APPEND common_options
7+
"-mthumb"
8+
)
9+
elseif(${MBED_TOOLCHAIN} STREQUAL "ARM")
10+
list(APPEND c_cxx_compile_options
11+
"-mcpu=cortex-m1"
12+
)
13+
list(APPEND asm_compile_options
14+
"-mcpu=Cortex-M1"
15+
)
16+
list(APPEND link_options
17+
"--cpu=Cortex-M1"
18+
)
19+
endif()
3820

3921
function(mbed_set_cpu_core_definitions target)
4022
target_compile_definitions(${target}

tools/cmake/cores/Cortex-M23-NS.cmake

Lines changed: 15 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,22 @@
22
# SPDX-License-Identifier: Apache-2.0
33

44
# Sets cpu core options
5-
function(mbed_set_cpu_core_options target mbed_toolchain)
6-
if(${mbed_toolchain} STREQUAL "GCC_ARM")
7-
list(APPEND common_toolchain_options
8-
"-mthumb"
9-
)
10-
11-
target_compile_options(${target}
12-
INTERFACE
13-
${common_toolchain_options}
14-
)
15-
16-
target_link_options(${target}
17-
INTERFACE
18-
${common_toolchain_options}
19-
)
20-
elseif(${mbed_toolchain} STREQUAL "ARM")
21-
list(APPEND compile_options
22-
"-mcpu=cortex-m23"
23-
)
24-
25-
target_compile_options(${target}
26-
INTERFACE
27-
$<$<COMPILE_LANGUAGE:C>:${compile_options}>
28-
$<$<COMPILE_LANGUAGE:CXX>:${compile_options}>
29-
$<$<COMPILE_LANGUAGE:ASM>:-mcpu=Cortex-M23>
30-
)
5+
if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM")
6+
list(APPEND common_options
7+
"-mthumb"
8+
)
9+
elseif(${MBED_TOOLCHAIN} STREQUAL "ARM")
10+
list(APPEND c_cxx_compile_options
11+
"-mcpu=cortex-m23"
12+
)
13+
list(APPEND asm_compile_options
14+
"-mcpu=Cortex-M23"
15+
)
16+
list(APPEND link_options
17+
"--cpu=Cortex-M23"
18+
)
19+
endif()
3120

32-
target_link_options(${target}
33-
INTERFACE
34-
"--cpu=Cortex-M23"
35-
)
36-
endif()
37-
endfunction()
3821

3922
function(mbed_set_cpu_core_definitions target)
4023
target_compile_definitions(${target}

tools/cmake/cores/Cortex-M23.cmake

Lines changed: 15 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,39 +2,22 @@
22
# SPDX-License-Identifier: Apache-2.0
33

44
# Sets cpu core options
5-
function(mbed_set_cpu_core_options target mbed_toolchain)
6-
if(${mbed_toolchain} STREQUAL "GCC_ARM")
7-
list(APPEND common_toolchain_options
8-
"-mthumb"
9-
)
10-
11-
target_compile_options(${target}
12-
INTERFACE
13-
${common_toolchain_options}
14-
)
15-
16-
target_link_options(${target}
17-
INTERFACE
18-
${common_toolchain_options}
19-
)
20-
elseif(${mbed_toolchain} STREQUAL "ARM")
21-
list(APPEND compile_options
22-
"-mcpu=cortex-m23"
23-
)
24-
25-
target_compile_options(${target}
26-
INTERFACE
27-
$<$<COMPILE_LANGUAGE:C>:${compile_options}>
28-
$<$<COMPILE_LANGUAGE:CXX>:${compile_options}>
29-
$<$<COMPILE_LANGUAGE:ASM>:-mcpu=Cortex-M23>
30-
)
5+
if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM")
6+
list(APPEND common_options
7+
"-mthumb"
8+
)
9+
elseif(${MBED_TOOLCHAIN} STREQUAL "ARM")
10+
list(APPEND c_cxx_compile_options
11+
"-mcpu=cortex-m23"
12+
)
13+
list(APPEND asm_compile_options
14+
"-mcpu=Cortex-M23"
15+
)
16+
list(APPEND link_options
17+
"--cpu=Cortex-M23"
18+
)
19+
endif()
3120

32-
target_link_options(${target}
33-
INTERFACE
34-
"--cpu=Cortex-M23"
35-
)
36-
endif()
37-
endfunction()
3821

3922
function(mbed_set_cpu_core_definitions target)
4023
target_compile_definitions(${target}

0 commit comments

Comments
 (0)