CMake: turn mbed-core into interface + obj libraries

pull/14427/head
Martin Kojtal 2021-02-22 20:45:01 +00:00
parent 68fb11e912
commit 494d0c0711
14 changed files with 63 additions and 32 deletions

View File

@ -9,6 +9,13 @@ include(${MBED_CONFIG_PATH}/mbed_config.cmake)
include(tools/cmake/set_linker_script.cmake) include(tools/cmake/set_linker_script.cmake)
add_library(mbed-core INTERFACE) add_library(mbed-core INTERFACE)
add_library(mbed-core-obj OBJECT)
set_property(TARGET mbed-core PROPERTY INTERFACE_SOURCES $<TARGET_OBJECTS:mbed-core-obj>)
foreach(options COMPILE_DEFINITIONS COMPILE_FEATURES COMPILE_OPTIONS INCLUDE_DIRECTORIES LINK_LIBRARIES)
set_target_properties(mbed-core-obj PROPERTIES ${options} $<TARGET_PROPERTY:mbed-core,INTERFACE_${options}>)
endforeach()
add_library(mbed-os INTERFACE) add_library(mbed-os INTERFACE)
@ -114,6 +121,14 @@ target_include_directories(mbed-core
# TODO CMake: Should the source files be moved? # TODO CMake: Should the source files be moved?
add_library(mbed-device_key INTERFACE) add_library(mbed-device_key INTERFACE)
add_library(mbed-rtos INTERFACE) add_library(mbed-rtos INTERFACE)
add_library(mbed-rtos-obj OBJECT)
set_property(TARGET mbed-rtos PROPERTY INTERFACE_SOURCES $<TARGET_OBJECTS:mbed-rtos-obj>)
foreach(options COMPILE_DEFINITIONS COMPILE_FEATURES COMPILE_OPTIONS INCLUDE_DIRECTORIES LINK_LIBRARIES)
set_target_properties(mbed-rtos-obj PROPERTIES ${options} $<TARGET_PROPERTY:mbed-rtos,INTERFACE_${options}>)
endforeach()
add_subdirectory(cmsis) add_subdirectory(cmsis)
add_subdirectory(drivers) add_subdirectory(drivers)

View File

@ -2,13 +2,20 @@
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
add_library(mbed-cmsis-cortex-a INTERFACE) add_library(mbed-cmsis-cortex-a INTERFACE)
add_library(mbed-cmsis-cortex-a-obj OBJECT)
target_include_directories(mbed-cmsis-cortex-a target_include_directories(mbed-cmsis-cortex-a
INTERFACE INTERFACE
Include Include
) )
target_sources(mbed-cmsis-cortex-a target_sources(mbed-cmsis-cortex-a-obj
INTERFACE PRIVATE
Source/irq_ctrl_gic.c Source/irq_ctrl_gic.c
) )
set_property(TARGET mbed-cmsis-cortex-a PROPERTY INTERFACE_SOURCES $<TARGET_OBJECTS:mbed-cmsis-cortex-a-obj>)
foreach(options COMPILE_DEFINITIONS COMPILE_FEATURES COMPILE_OPTIONS INCLUDE_DIRECTORIES LINK_LIBRARIES)
set_target_properties(mbed-cmsis-cortex-a-obj PROPERTIES ${options} $<TARGET_PROPERTY:mbed-cmsis-cortex-a,INTERFACE_${options}>)
endforeach()

View File

@ -2,13 +2,20 @@
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
add_library(mbed-cmsis-cortex-m INTERFACE) add_library(mbed-cmsis-cortex-m INTERFACE)
add_library(mbed-cmsis-cortex-m-obj OBJECT)
target_include_directories(mbed-cmsis-cortex-m target_include_directories(mbed-cmsis-cortex-m
INTERFACE INTERFACE
Include Include
) )
target_sources(mbed-cmsis-cortex-m target_sources(mbed-cmsis-cortex-m-obj
INTERFACE PRIVATE
Source/mbed_tz_context.c Source/mbed_tz_context.c
) )
set_property(TARGET mbed-cmsis-cortex-m PROPERTY INTERFACE_SOURCES $<TARGET_OBJECTS:mbed-cmsis-cortex-m-obj>)
foreach(options COMPILE_DEFINITIONS COMPILE_FEATURES COMPILE_OPTIONS INCLUDE_DIRECTORIES LINK_LIBRARIES)
set_target_properties(mbed-cmsis-cortex-m-obj PROPERTIES ${options} $<TARGET_PROPERTY:mbed-cmsis-cortex-m,INTERFACE_${options}>)
endforeach()

View File

@ -2,13 +2,13 @@
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM") if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM")
target_sources(mbed-rtos target_sources(mbed-rtos-obj
INTERFACE PRIVATE
TOOLCHAIN_GCC_ARM/mbed_boot_gcc_arm.c TOOLCHAIN_GCC_ARM/mbed_boot_gcc_arm.c
) )
elseif(${MBED_TOOLCHAIN} STREQUAL "ARM") elseif(${MBED_TOOLCHAIN} STREQUAL "ARM")
target_sources(mbed-rtos target_sources(mbed-rtos-obj
INTERFACE PRIVATE
TOOLCHAIN_ARM_STD/mbed_boot_arm_std.c TOOLCHAIN_ARM_STD/mbed_boot_arm_std.c
) )
endif() endif()
@ -18,8 +18,8 @@ target_include_directories(mbed-rtos
include include
) )
target_sources(mbed-rtos target_sources(mbed-rtos-obj
INTERFACE PRIVATE
source/mbed_boot.c source/mbed_boot.c
source/mbed_rtos_rtx.c source/mbed_rtos_rtx.c
source/mbed_rtx_handlers.c source/mbed_rtx_handlers.c
@ -30,3 +30,5 @@ target_compile_definitions(mbed-rtos
INTERFACE INTERFACE
MBED_CONF_RTOS_PRESENT=1 MBED_CONF_RTOS_PRESENT=1
) )
target_link_libraries(mbed-rtos INTERFACE mbed-core)

View File

@ -31,8 +31,8 @@ target_include_directories(mbed-core
. .
./mbed-client-libservice ./mbed-client-libservice
) )
target_sources(mbed-core target_sources(mbed-core-obj
INTERFACE PRIVATE
source/libBits/common_functions.c source/libBits/common_functions.c
source/libip6string/ip6tos.c source/libip6string/ip6tos.c
) )

View File

@ -9,8 +9,8 @@ target_include_directories(mbed-core
./include/drivers/internal ./include/drivers/internal
) )
target_sources(mbed-core target_sources(mbed-core-obj
INTERFACE PRIVATE
source/AnalogIn.cpp source/AnalogIn.cpp
source/AnalogOut.cpp source/AnalogOut.cpp
source/BufferedSerial.cpp source/BufferedSerial.cpp

View File

@ -11,8 +11,8 @@ target_include_directories(mbed-core
include/hal include/hal
) )
target_sources(mbed-core target_sources(mbed-core-obj
INTERFACE PRIVATE
source/LowPowerTickerWrapper.cpp source/LowPowerTickerWrapper.cpp
source/mbed_compat.c source/mbed_compat.c
source/mbed_critical_section_api.c source/mbed_critical_section_api.c

View File

@ -7,7 +7,7 @@ target_include_directories(mbed-core
include/usb include/usb
) )
target_sources(mbed-core target_sources(mbed-core-obj
INTERFACE PRIVATE
source/mbed_usb_phy.cpp source/mbed_usb_phy.cpp
) )

View File

@ -6,7 +6,7 @@ target_include_directories(mbed-core
. .
) )
target_sources(mbed-core target_sources(mbed-core-obj
INTERFACE PRIVATE
mstd_mutex.cpp mstd_mutex.cpp
) )

View File

@ -9,7 +9,7 @@ target_include_directories(mbed-core
include/mbed-trace include/mbed-trace
) )
target_sources(mbed-core target_sources(mbed-core-obj
INTERFACE PRIVATE
source/mbed_trace.c source/mbed_trace.c
) )

View File

@ -12,8 +12,8 @@ target_include_directories(mbed-core
. .
) )
target_sources(mbed-core target_sources(mbed-core-obj
INTERFACE PRIVATE
ATCmdParser.cpp ATCmdParser.cpp
CThunkBase.cpp CThunkBase.cpp
CriticalSectionLock.cpp CriticalSectionLock.cpp

View File

@ -2,12 +2,12 @@
# SPDX-License-Identifier: Apache-2.0 # SPDX-License-Identifier: Apache-2.0
if(${MBED_TOOLCHAIN} STREQUAL "GCC_ARM") 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") 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() endif()
target_sources(mbed-core target_sources(mbed-core-obj
INTERFACE PRIVATE
mbed_fault_handler.c mbed_fault_handler.c
) )

View File

@ -6,8 +6,8 @@ target_include_directories(mbed-core
. .
) )
target_sources(mbed-core target_sources(mbed-core-obj
INTERFACE PRIVATE
mbed_printf_armlink_overrides.c mbed_printf_armlink_overrides.c
mbed_printf_implementation.c mbed_printf_implementation.c
mbed_printf_wrapper.c mbed_printf_wrapper.c

View File

@ -10,8 +10,8 @@ target_include_directories(mbed-core
./source ./source
) )
target_sources(mbed-core target_sources(mbed-core-obj
INTERFACE PRIVATE
source/EventFlags.cpp source/EventFlags.cpp
source/Kernel.cpp source/Kernel.cpp
source/Mutex.cpp source/Mutex.cpp