Skip to content

Commit fa98689

Browse files
hugueskamba0xc0170rajkan01
committed
CMake: Componentize Mbed OS into multiple CMake targets (#13732)
Aside from the core mbed-os CMake target, a number of targets have been created so they can optionally be included by application executables that require them using `target_link_libraries()`. Co-authored-by: Martin Kojtal <martin.kojtal@arm.com> Co-authored-by: Rajkumar Kanagaraj <rajkumar.kanagaraj@arm.com>
1 parent d84baa8 commit fa98689

File tree

229 files changed

+1763
-1000
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

229 files changed

+1763
-1000
lines changed

CMakeLists.txt

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ include(${MBED_ROOT}/tools/cmake/core.cmake)
2525
include(${MBED_ROOT}/tools/cmake/util.cmake)
2626
include(${MBED_ROOT}/tools/cmake/profile.cmake)
2727

28-
# Create Mbed OS library
2928
add_library(mbed-os OBJECT)
3029

3130
# Validate selected C library type
@@ -80,19 +79,26 @@ target_include_directories(mbed-os
8079
${CMAKE_CURRENT_SOURCE_DIR}
8180
)
8281

83-
# Default build
82+
# TODO CMake: This component is made visible here so its source files in
83+
# drivers/ can be added and it can be linked against by libraries in storage/.
84+
# Should the source files be moved from drivers/ to storage/ ?
85+
add_library(mbed-os-device_key INTERFACE)
86+
8487
add_subdirectory(cmsis)
85-
add_subdirectory(components)
86-
add_subdirectory(connectivity)
8788
add_subdirectory(drivers)
88-
add_subdirectory(events)
89-
add_subdirectory(features)
9089
add_subdirectory(hal)
9190
add_subdirectory(platform)
9291
add_subdirectory(rtos)
93-
add_subdirectory(storage)
9492
add_subdirectory(targets)
9593

94+
# The directories below contain optional target libraries
95+
add_subdirectory(events EXCLUDE_FROM_ALL)
96+
add_subdirectory(connectivity EXCLUDE_FROM_ALL)
97+
add_subdirectory(storage EXCLUDE_FROM_ALL)
98+
add_subdirectory(drivers/device_key EXCLUDE_FROM_ALL)
99+
add_subdirectory(drivers/source/usb EXCLUDE_FROM_ALL)
100+
add_subdirectory(features EXCLUDE_FROM_ALL)
101+
add_subdirectory(platform/FEATURE_EXPERIMENTAL_API EXCLUDE_FROM_ALL)
96102

97103
#
98104
# Configures the application
@@ -134,7 +140,6 @@ function(mbed_set_mbed_target_linker_script target)
134140
)
135141
endfunction()
136142

137-
138143
#
139144
# Converts output file of `target` to binary file and to Intel HEX file.
140145
#

cmsis/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@
33

44
add_subdirectory(CMSIS_5)
55
add_subdirectory(device)
6+

components/CMakeLists.txt

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

components/testing/CMakeLists.txt

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

components/testing/COMPONENT_FPGA_CI_TEST_SHIELD/CMakeLists.txt

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

connectivity/CMakeLists.txt

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

4-
mbed_add_cmake_directory_if_labels("FEATURE")
4+
# List of all connectivity libraries available.
5+
add_library(mbed-os-802.15.4-rf INTERFACE)
6+
add_library(mbed-os-ble INTERFACE)
7+
add_library(mbed-os-ble-blue_nrg INTERFACE)
8+
add_library(mbed-os-ble-cordio INTERFACE)
9+
add_library(mbed-os-ble-cordio_ll INTERFACE)
10+
add_library(mbed-os-cellular INTERFACE)
11+
add_library(mbed-os-coap INTERFACE)
12+
add_library(mbed-os-emac INTERFACE)
13+
add_library(mbed-os-lorawan INTERFACE)
14+
add_library(mbed-os-lwipstack INTERFACE)
15+
add_library(mbed-os-mbedtls INTERFACE)
16+
add_library(mbed-os-mbedtls-cryptocell310 INTERFACE)
17+
add_library(mbed-os-nanostack INTERFACE)
18+
add_library(mbed-os-nanostack-coap_service INTERFACE)
19+
add_library(mbed-os-nanostack-mbed_mesh_api INTERFACE)
20+
add_library(mbed-os-nanostack-hal_mbed_cmsis_rtos INTERFACE)
21+
add_library(mbed-os-nanostack-sal_stack INTERFACE)
22+
add_library(mbed-os-nanostack-sal_stack-event_loop INTERFACE)
23+
add_library(mbed-os-nanostack-libservice INTERFACE)
24+
add_library(mbed-os-netsocket INTERFACE)
25+
add_library(mbed-os-nfc INTERFACE)
26+
add_library(mbed-os-ppp INTERFACE)
27+
add_library(mbed-os-wifi INTERFACE)
528

29+
30+
add_subdirectory(FEATURE_BLE)
631
add_subdirectory(cellular)
732
add_subdirectory(drivers)
833
add_subdirectory(libraries)
@@ -12,8 +37,3 @@ add_subdirectory(mbedtls)
1237
add_subdirectory(nanostack)
1338
add_subdirectory(netsocket)
1439
add_subdirectory(nfc)
15-
16-
target_include_directories(mbed-os
17-
PUBLIC
18-
${CMAKE_CURRENT_SOURCE_DIR}
19-
)

connectivity/FEATURE_BLE/CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
add_subdirectory(libraries)
55
add_subdirectory(source)
66

7-
target_include_directories(mbed-os
8-
PUBLIC
7+
target_include_directories(mbed-os-ble
8+
INTERFACE
99
.
1010
include
1111
include/ble
@@ -20,3 +20,8 @@ target_include_directories(mbed-os
2020
include/ble/services
2121
source
2222
)
23+
24+
target_compile_definitions(mbed-os-ble
25+
INTERFACE
26+
MBED_CONF_BLE_PRESENT=1
27+
)
Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
# Copyright (c) 2020 ARM Limited. All rights reserved.
22
# SPDX-License-Identifier: Apache-2.0
33

4-
mbed_add_cmake_directory_if_labels("TARGET")
4+
if("CORDIO_LL" IN_LIST MBED_TARGET_LABELS)
5+
add_subdirectory(TARGET_CORDIO_LL)
6+
endif()
57

68
add_subdirectory(cordio_stack)
79

8-
target_include_directories(mbed-os
9-
PUBLIC
10+
target_include_directories(mbed-os-ble-cordio
11+
INTERFACE
1012
.
1113
)
14+
15+
target_link_libraries(mbed-os-ble-cordio
16+
INTERFACE
17+
mbed-os-ble
18+
)

connectivity/FEATURE_BLE/libraries/TARGET_CORDIO_LL/CMakeLists.txt

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

4-
target_include_directories(mbed-os
5-
PUBLIC
6-
${CMAKE_CURRENT_SOURCE_DIR}
7-
${CMAKE_CURRENT_SOURCE_DIR}/stack
8-
${CMAKE_CURRENT_SOURCE_DIR}/stack/controller
9-
${CMAKE_CURRENT_SOURCE_DIR}/stack/controller/include
10-
${CMAKE_CURRENT_SOURCE_DIR}/stack/controller/include/ble
11-
${CMAKE_CURRENT_SOURCE_DIR}/stack/controller/include/common
12-
${CMAKE_CURRENT_SOURCE_DIR}/stack/controller/sources/ble/bb
13-
${CMAKE_CURRENT_SOURCE_DIR}/stack/controller/sources/ble/include
14-
${CMAKE_CURRENT_SOURCE_DIR}/stack/controller/sources/ble/lctr
15-
${CMAKE_CURRENT_SOURCE_DIR}/stack/controller/sources/ble/lhci
16-
${CMAKE_CURRENT_SOURCE_DIR}/stack/controller/sources/ble/sch
17-
${CMAKE_CURRENT_SOURCE_DIR}/stack/controller/sources/common/bb
18-
${CMAKE_CURRENT_SOURCE_DIR}/stack/controller/sources/common/sch
19-
${CMAKE_CURRENT_SOURCE_DIR}/stack/thirdparty
20-
${CMAKE_CURRENT_SOURCE_DIR}/stack/thirdparty/nordic-bsp/components/boards
21-
${CMAKE_CURRENT_SOURCE_DIR}/stack/thirdparty/uecc
22-
${CMAKE_CURRENT_SOURCE_DIR}/stack_adaptation
4+
target_include_directories(mbed-os-ble-cordio_ll
5+
INTERFACE
6+
.
7+
./stack
8+
./stack/controller
9+
./stack/controller/include
10+
./stack/controller/include/ble
11+
./stack/controller/include/common
12+
./stack/controller/sources/ble/bb
13+
./stack/controller/sources/ble/include
14+
./stack/controller/sources/ble/lctr
15+
./stack/controller/sources/ble/lhci
16+
./stack/controller/sources/ble/sch
17+
./stack/controller/sources/common/bb
18+
./stack/controller/sources/common/sch
19+
./stack/thirdparty
20+
./stack/thirdparty/nordic-bsp/components/boards
21+
./stack/thirdparty/uecc
22+
./stack_adaptation
2323
)
2424

25-
target_sources(mbed-os
26-
PRIVATE
25+
target_sources(mbed-os-ble-cordio_ll
26+
INTERFACE
2727
stack/controller/sources/ble/bb/bb_ble_adv_master.c
2828
stack/controller/sources/ble/bb/bb_ble_adv_master_ae.c
2929
stack/controller/sources/ble/bb/bb_ble_adv_slave.c
@@ -45,14 +45,14 @@ target_sources(mbed-os
4545
stack/controller/sources/ble/bb/bb_ble_whitelist.c
4646
)
4747

48-
target_sources(mbed-os
49-
PRIVATE
48+
target_sources(mbed-os-ble-cordio_ll
49+
INTERFACE
5050
stack/controller/sources/ble/init/init.c
5151
stack/controller/sources/ble/init/init_ctr.c
5252
)
5353

54-
target_sources(mbed-os
55-
PRIVATE
54+
target_sources(mbed-os-ble-cordio_ll
55+
INTERFACE
5656
stack/controller/sources/ble/lctr/lctr_act_adv_master.c
5757
stack/controller/sources/ble/lctr/lctr_act_adv_master_ae.c
5858
stack/controller/sources/ble/lctr/lctr_act_adv_slave.c
@@ -145,8 +145,8 @@ target_sources(mbed-os
145145
stack/controller/sources/ble/lctr/lctr_sm_llcp_slave_phy.c
146146
)
147147

148-
target_sources(mbed-os
149-
PRIVATE
148+
target_sources(mbed-os-ble-cordio_ll
149+
INTERFACE
150150
stack/controller/sources/ble/lhci/lhci_cmd.c
151151
stack/controller/sources/ble/lhci/lhci_cmd_adv_master.c
152152
stack/controller/sources/ble/lhci/lhci_cmd_adv_master_ae.c
@@ -224,8 +224,8 @@ target_sources(mbed-os
224224
stack/controller/sources/ble/lhci/lhci_main_iso.c
225225
)
226226

227-
target_sources(mbed-os
228-
PRIVATE
227+
target_sources(mbed-os-ble-cordio_ll
228+
INTERFACE
229229
stack/controller/sources/ble/ll/ll_init.c
230230
stack/controller/sources/ble/ll/ll_init_adv_master.c
231231
stack/controller/sources/ble/ll/ll_init_adv_master_ae.c
@@ -275,8 +275,8 @@ target_sources(mbed-os
275275
stack/controller/sources/ble/ll/ll_math.c
276276
)
277277

278-
target_sources(mbed-os
279-
PRIVATE
278+
target_sources(mbed-os-ble-cordio_ll
279+
INTERFACE
280280
stack/controller/sources/ble/lmgr/lmgr_events.c
281281
stack/controller/sources/ble/lmgr/lmgr_main.c
282282
stack/controller/sources/ble/lmgr/lmgr_main_adv_master_ae.c
@@ -290,15 +290,15 @@ target_sources(mbed-os
290290
stack/controller/sources/ble/lmgr/lmgr_main_slave.c
291291
)
292292

293-
target_sources(mbed-os
294-
PRIVATE
293+
target_sources(mbed-os-ble-cordio_ll
294+
INTERFACE
295295
stack/controller/sources/ble/sch/sch_ble.c
296296
stack/controller/sources/ble/sch/sch_rm.c
297297
stack/controller/sources/ble/sch/sch_tm.c
298298
)
299299

300-
target_sources(mbed-os
301-
PRIVATE
300+
target_sources(mbed-os-ble-cordio_ll
301+
INTERFACE
302302
stack/controller/sources/common/bb/bb_main.c
303303

304304
stack/controller/sources/common/chci/chci_tr.c
@@ -307,16 +307,21 @@ target_sources(mbed-os
307307
stack/controller/sources/common/sch/sch_main.c
308308
)
309309

310-
target_sources(mbed-os
311-
PRIVATE
310+
target_sources(mbed-os-ble-cordio_ll
311+
INTERFACE
312312
stack/thirdparty/nordic-bsp/components/boards/boards.c
313313

314314
stack/thirdparty/uecc/asm_arm.inc
315315
stack/thirdparty/uecc/uECC.c
316316
stack/thirdparty/uecc/uECC_ll.c
317317
)
318318

319-
target_sources(mbed-os
320-
PRIVATE
319+
target_sources(mbed-os-ble-cordio_ll
320+
INTERFACE
321321
stack_adaptation/custom_chci_tr.cpp
322322
)
323+
324+
target_link_libraries(mbed-os-ble-cordio_ll
325+
INTERFACE
326+
mbed-os-ble-cordio
327+
)

connectivity/FEATURE_BLE/libraries/cordio_stack/ble-host/CMakeLists.txt

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

4-
target_include_directories(mbed-os
5-
PUBLIC
4+
target_include_directories(mbed-os-ble-cordio
5+
INTERFACE
66
include
77
sources/hci/dual_chip
88
sources/sec/common
@@ -14,8 +14,8 @@ target_include_directories(mbed-os
1414
sources/stack/smp
1515
)
1616

17-
target_sources(mbed-os
18-
PRIVATE
17+
target_sources(mbed-os-ble-cordio
18+
INTERFACE
1919
sources/hci/common/hci_core.c
2020

2121
sources/hci/dual_chip/hci_cmd.c
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Copyright (c) 2020 ARM Limited. All rights reserved.
22
# SPDX-License-Identifier: Apache-2.0
33

4-
target_include_directories(mbed-os
5-
PUBLIC
4+
target_include_directories(mbed-os-ble-cordio
5+
INTERFACE
66
include
77
)

connectivity/FEATURE_BLE/libraries/cordio_stack/wsf/CMakeLists.txt

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

4-
target_include_directories(mbed-os
5-
PUBLIC
4+
target_include_directories(mbed-os-ble-cordio
5+
INTERFACE
66
include
77
include/util
88
)
99

10-
target_sources(mbed-os
11-
PRIVATE
10+
target_sources(mbed-os-ble-cordio
11+
INTERFACE
1212
sources/port/baremetal/wsf_assert.c
1313
sources/port/baremetal/wsf_buf.c
1414
sources/port/baremetal/wsf_bufio.c

connectivity/FEATURE_BLE/source/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ add_subdirectory(gatt)
77
add_subdirectory(generic)
88
add_subdirectory(pal)
99

10-
target_sources(mbed-os
11-
PRIVATE
10+
target_sources(mbed-os-ble
11+
INTERFACE
1212
BLE.cpp
1313
Gap.cpp
1414
GattClient.cpp

connectivity/FEATURE_BLE/source/cordio/CMakeLists.txt

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

4-
target_include_directories(mbed-os
5-
PUBLIC
4+
target_include_directories(mbed-os-ble-cordio
5+
INTERFACE
66
.
77
source
88
stack_adaptation
99
)
1010

11-
target_sources(mbed-os
12-
PRIVATE
11+
target_sources(mbed-os-ble-cordio
12+
INTERFACE
1313
driver/CordioHCIDriver.cpp
1414
driver/CordioHCITransportDriver.cpp
1515
driver/H4TransportDriver.cpp

0 commit comments

Comments
 (0)