diff --git a/CMakeLists.txt b/CMakeLists.txt index ad61efd96b..ef372047f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -9,6 +9,13 @@ include(${MBED_CONFIG_PATH}/mbed_config.cmake) include(tools/cmake/set_linker_script.cmake) add_library(mbed-core INTERFACE) +add_library(mbed-core-obj OBJECT) + +set_property(TARGET mbed-core PROPERTY INTERFACE_SOURCES $) + +foreach(options COMPILE_DEFINITIONS COMPILE_FEATURES COMPILE_OPTIONS INCLUDE_DIRECTORIES LINK_LIBRARIES) + set_target_properties(mbed-core-obj PROPERTIES ${options} $) +endforeach() add_library(mbed-os INTERFACE) @@ -114,6 +121,14 @@ target_include_directories(mbed-core # TODO CMake: Should the source files be moved? add_library(mbed-device_key INTERFACE) add_library(mbed-rtos INTERFACE) +add_library(mbed-rtos-obj OBJECT) + + +set_property(TARGET mbed-rtos PROPERTY INTERFACE_SOURCES $) + +foreach(options COMPILE_DEFINITIONS COMPILE_FEATURES COMPILE_OPTIONS INCLUDE_DIRECTORIES LINK_LIBRARIES) + set_target_properties(mbed-rtos-obj PROPERTIES ${options} $) +endforeach() add_subdirectory(cmsis) add_subdirectory(drivers) diff --git a/cmsis/CMSIS_5/CMSIS/TARGET_CORTEX_A/CMakeLists.txt b/cmsis/CMSIS_5/CMSIS/TARGET_CORTEX_A/CMakeLists.txt index cdd29d79f4..3c9d4a2769 100644 --- a/cmsis/CMSIS_5/CMSIS/TARGET_CORTEX_A/CMakeLists.txt +++ b/cmsis/CMSIS_5/CMSIS/TARGET_CORTEX_A/CMakeLists.txt @@ -2,13 +2,20 @@ # SPDX-License-Identifier: Apache-2.0 add_library(mbed-cmsis-cortex-a INTERFACE) +add_library(mbed-cmsis-cortex-a-obj OBJECT) target_include_directories(mbed-cmsis-cortex-a INTERFACE Include ) -target_sources(mbed-cmsis-cortex-a - INTERFACE +target_sources(mbed-cmsis-cortex-a-obj + PRIVATE Source/irq_ctrl_gic.c ) + +set_property(TARGET mbed-cmsis-cortex-a PROPERTY INTERFACE_SOURCES $) + +foreach(options COMPILE_DEFINITIONS COMPILE_FEATURES COMPILE_OPTIONS INCLUDE_DIRECTORIES LINK_LIBRARIES) + set_target_properties(mbed-cmsis-cortex-a-obj PROPERTIES ${options} $) +endforeach() diff --git a/cmsis/CMSIS_5/CMSIS/TARGET_CORTEX_M/CMakeLists.txt b/cmsis/CMSIS_5/CMSIS/TARGET_CORTEX_M/CMakeLists.txt index b944fe4247..b6d1fa0666 100644 --- a/cmsis/CMSIS_5/CMSIS/TARGET_CORTEX_M/CMakeLists.txt +++ b/cmsis/CMSIS_5/CMSIS/TARGET_CORTEX_M/CMakeLists.txt @@ -2,13 +2,20 @@ # SPDX-License-Identifier: Apache-2.0 add_library(mbed-cmsis-cortex-m INTERFACE) +add_library(mbed-cmsis-cortex-m-obj OBJECT) target_include_directories(mbed-cmsis-cortex-m INTERFACE Include ) -target_sources(mbed-cmsis-cortex-m - INTERFACE +target_sources(mbed-cmsis-cortex-m-obj + PRIVATE Source/mbed_tz_context.c ) + +set_property(TARGET mbed-cmsis-cortex-m PROPERTY INTERFACE_SOURCES $) + +foreach(options COMPILE_DEFINITIONS COMPILE_FEATURES COMPILE_OPTIONS INCLUDE_DIRECTORIES LINK_LIBRARIES) + set_target_properties(mbed-cmsis-cortex-m-obj PROPERTIES ${options} $) +endforeach() diff --git a/cmsis/device/rtos/CMakeLists.txt b/cmsis/device/rtos/CMakeLists.txt index 024cf56218..061b171ae8 100644 --- a/cmsis/device/rtos/CMakeLists.txt +++ b/cmsis/device/rtos/CMakeLists.txt @@ -2,13 +2,13 @@ # SPDX-License-Identifier: Apache-2.0 if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM") - target_sources(mbed-rtos - INTERFACE + target_sources(mbed-rtos-obj + PRIVATE TOOLCHAIN_GCC_ARM/mbed_boot_gcc_arm.c ) elseif(${MBED_TOOLCHAIN} STREQUAL "ARM") - target_sources(mbed-rtos - INTERFACE + target_sources(mbed-rtos-obj + PRIVATE TOOLCHAIN_ARM_STD/mbed_boot_arm_std.c ) endif() @@ -18,8 +18,8 @@ target_include_directories(mbed-rtos include ) -target_sources(mbed-rtos - INTERFACE +target_sources(mbed-rtos-obj + PRIVATE source/mbed_boot.c source/mbed_rtos_rtx.c source/mbed_rtx_handlers.c @@ -30,3 +30,5 @@ target_compile_definitions(mbed-rtos INTERFACE MBED_CONF_RTOS_PRESENT=1 ) + +target_link_libraries(mbed-rtos INTERFACE mbed-core) diff --git a/connectivity/libraries/nanostack-libservice/CMakeLists.txt b/connectivity/libraries/nanostack-libservice/CMakeLists.txt index 9af5a22b1f..987c376efc 100644 --- a/connectivity/libraries/nanostack-libservice/CMakeLists.txt +++ b/connectivity/libraries/nanostack-libservice/CMakeLists.txt @@ -31,8 +31,8 @@ target_include_directories(mbed-core . ./mbed-client-libservice ) -target_sources(mbed-core - INTERFACE +target_sources(mbed-core-obj + PRIVATE source/libBits/common_functions.c source/libip6string/ip6tos.c ) diff --git a/drivers/CMakeLists.txt b/drivers/CMakeLists.txt index 83bb222309..74ce9c1215 100644 --- a/drivers/CMakeLists.txt +++ b/drivers/CMakeLists.txt @@ -9,8 +9,8 @@ target_include_directories(mbed-core ./include/drivers/internal ) -target_sources(mbed-core - INTERFACE +target_sources(mbed-core-obj + PRIVATE source/AnalogIn.cpp source/AnalogOut.cpp source/BufferedSerial.cpp diff --git a/hal/CMakeLists.txt b/hal/CMakeLists.txt index e0a6930586..0a35015364 100644 --- a/hal/CMakeLists.txt +++ b/hal/CMakeLists.txt @@ -11,8 +11,8 @@ target_include_directories(mbed-core include/hal ) -target_sources(mbed-core - INTERFACE +target_sources(mbed-core-obj + PRIVATE source/LowPowerTickerWrapper.cpp source/mbed_compat.c source/mbed_critical_section_api.c diff --git a/hal/usb/CMakeLists.txt b/hal/usb/CMakeLists.txt index 1215cf1d3f..ae9c0b234b 100644 --- a/hal/usb/CMakeLists.txt +++ b/hal/usb/CMakeLists.txt @@ -7,7 +7,7 @@ target_include_directories(mbed-core include/usb ) -target_sources(mbed-core - INTERFACE +target_sources(mbed-core-obj + PRIVATE source/mbed_usb_phy.cpp ) diff --git a/platform/cxxsupport/CMakeLists.txt b/platform/cxxsupport/CMakeLists.txt index f9b4651dd7..2d48a483f5 100644 --- a/platform/cxxsupport/CMakeLists.txt +++ b/platform/cxxsupport/CMakeLists.txt @@ -6,7 +6,7 @@ target_include_directories(mbed-core . ) -target_sources(mbed-core - INTERFACE +target_sources(mbed-core-obj + PRIVATE mstd_mutex.cpp ) diff --git a/platform/mbed-trace/CMakeLists.txt b/platform/mbed-trace/CMakeLists.txt index 8ce7385573..0f022818ec 100644 --- a/platform/mbed-trace/CMakeLists.txt +++ b/platform/mbed-trace/CMakeLists.txt @@ -9,7 +9,7 @@ target_include_directories(mbed-core include/mbed-trace ) -target_sources(mbed-core - INTERFACE +target_sources(mbed-core-obj + PRIVATE source/mbed_trace.c ) diff --git a/platform/source/CMakeLists.txt b/platform/source/CMakeLists.txt index 0eef2eef45..bbd0abaea7 100644 --- a/platform/source/CMakeLists.txt +++ b/platform/source/CMakeLists.txt @@ -12,8 +12,8 @@ target_include_directories(mbed-core . ) -target_sources(mbed-core - INTERFACE +target_sources(mbed-core-obj + PRIVATE ATCmdParser.cpp CThunkBase.cpp CriticalSectionLock.cpp diff --git a/platform/source/TARGET_CORTEX_M/CMakeLists.txt b/platform/source/TARGET_CORTEX_M/CMakeLists.txt index 481d09bd21..c93590885c 100644 --- a/platform/source/TARGET_CORTEX_M/CMakeLists.txt +++ b/platform/source/TARGET_CORTEX_M/CMakeLists.txt @@ -2,12 +2,12 @@ # SPDX-License-Identifier: Apache-2.0 if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM") - target_sources(mbed-core INTERFACE TOOLCHAIN_GCC/except.S) + target_sources(mbed-core-obj PRIVATE TOOLCHAIN_GCC/except.S) elseif(${MBED_TOOLCHAIN} STREQUAL "ARM") - target_sources(mbed-core INTERFACE TOOLCHAIN_ARM/except.S) + target_sources(mbed-core-obj PRIVATE TOOLCHAIN_ARM/except.S) endif() -target_sources(mbed-core - INTERFACE +target_sources(mbed-core-obj + PRIVATE mbed_fault_handler.c ) diff --git a/platform/source/minimal-printf/CMakeLists.txt b/platform/source/minimal-printf/CMakeLists.txt index 4c31fb0bef..1a47da5265 100644 --- a/platform/source/minimal-printf/CMakeLists.txt +++ b/platform/source/minimal-printf/CMakeLists.txt @@ -6,8 +6,8 @@ target_include_directories(mbed-core . ) -target_sources(mbed-core - INTERFACE +target_sources(mbed-core-obj + PRIVATE mbed_printf_armlink_overrides.c mbed_printf_implementation.c mbed_printf_wrapper.c diff --git a/rtos/CMakeLists.txt b/rtos/CMakeLists.txt index 9e2194d12d..45f5ff9e67 100644 --- a/rtos/CMakeLists.txt +++ b/rtos/CMakeLists.txt @@ -10,8 +10,8 @@ target_include_directories(mbed-core ./source ) -target_sources(mbed-core - INTERFACE +target_sources(mbed-core-obj + PRIVATE source/EventFlags.cpp source/Kernel.cpp source/Mutex.cpp