diff --git a/CMakeLists.txt b/CMakeLists.txt index fe98f1c6499..efddcd1be98 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -595,14 +595,15 @@ endif() get_property(nuttx_apps_libs GLOBAL PROPERTY NUTTX_APPS_LIBRARIES) get_property(nuttx_extra_libs GLOBAL PROPERTY NUTTX_EXTRA_LIBRARIES) -set(nuttx_libs ${nuttx_kernel_libs} ${nuttx_system_libs} ${nuttx_apps_libs} - ${nuttx_extra_libs}) +set(nuttx_libs ${nuttx_kernel_libs} ${nuttx_system_libs} ${nuttx_apps_libs}) if(NOT CONFIG_ARCH_SIM) + # TODO: nostart/nodefault not applicable to nuttx toolchain target_link_libraries( - nuttx PRIVATE ${NUTTX_EXTRA_FLAGS} -Wl,--script=${ldscript} - -Wl,--start-group ${nuttx_libs} -Wl,--end-group) + nuttx + PRIVATE ${NUTTX_EXTRA_FLAGS} -Wl,--script=${ldscript} -Wl,--start-group + ${nuttx_libs} ${nuttx_extra_libs} -Wl,--end-group) # generate binary outputs in different formats (.bin, .hex, etc) nuttx_generate_outputs(nuttx) @@ -635,8 +636,8 @@ elseif(WIN32) add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/nuttx_all.lib COMMAND ${CMAKE_AR} /OUT:${CMAKE_BINARY_DIR}/nuttx_all.lib - ${nuttx_libs_paths} - DEPENDS ${nuttx_libs} + ${nuttx_libs_paths} ${nuttx_extra_libs} + DEPENDS ${nuttx_libs} ${nuttx_extra_libs} VERBATIM) add_custom_target(nuttx_all-lib DEPENDS ${CMAKE_BINARY_DIR}/nuttx_all.lib) add_dependencies(nuttx nuttx_all-lib) @@ -692,10 +693,10 @@ else() COMMAND ${CMAKE_C_COMPILER} ARGS -r $<$:-m32> $ $<$>:-Wl,--start-group> - ${nuttx_libs_paths} $<$>:-Wl,--end-group> -o - nuttx.rel + ${nuttx_libs_paths} ${nuttx_extra_libs} + $<$>:-Wl,--end-group> -o nuttx.rel COMMAND ${CMAKE_OBJCOPY} --redefine-syms=nuttx-names.dat nuttx.rel - DEPENDS ${nuttx_libs_paths} sim_head + DEPENDS ${nuttx_libs} ${nuttx_extra_libs} sim_head COMMAND_EXPAND_LISTS) add_custom_target(nuttx-rel DEPENDS nuttx.rel $<$>:nuttx.ld>) diff --git a/arch/arm/src/cmake/platform.cmake b/arch/arm/src/cmake/platform.cmake index 7463745b74c..5337cf994d0 100644 --- a/arch/arm/src/cmake/platform.cmake +++ b/arch/arm/src/cmake/platform.cmake @@ -100,7 +100,7 @@ if(CONFIG_ARCH_COVERAGE) list(APPEND EXTRA_LIB ${extra_library}) endif() -set_property(GLOBAL APPEND PROPERTY NUTTX_EXTRA_LIBRARIES ${EXTRA_LIB}) +nuttx_add_extra_library(${EXTRA_LIB}) separate_arguments(CMAKE_C_FLAG_ARGS NATIVE_COMMAND ${CMAKE_C_FLAGS}) set(PREPROCES ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} -E -P -x c) diff --git a/arch/risc-v/src/cmake/platform.cmake b/arch/risc-v/src/cmake/platform.cmake index 8280e5e37b1..79893f8388e 100644 --- a/arch/risc-v/src/cmake/platform.cmake +++ b/arch/risc-v/src/cmake/platform.cmake @@ -56,7 +56,7 @@ if(CONFIG_ARCH_COVERAGE) list(APPEND EXTRA_LIB ${extra_library}) endif() -set_property(GLOBAL APPEND PROPERTY NUTTX_EXTRA_LIBRARIES ${EXTRA_LIB}) +nuttx_add_extra_library(${EXTRA_LIB}) separate_arguments(CMAKE_C_FLAG_ARGS NATIVE_COMMAND ${CMAKE_C_FLAGS}) set(PREPROCES ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} -E -P -x c) diff --git a/cmake/nuttx_add_library.cmake b/cmake/nuttx_add_library.cmake index 9795aed5f1e..997ed228ed7 100644 --- a/cmake/nuttx_add_library.cmake +++ b/cmake/nuttx_add_library.cmake @@ -171,7 +171,7 @@ define_property( function(nuttx_add_library target) add_library(${target} ${ARGN}) - set_property(GLOBAL APPEND PROPERTY NUTTX_EXTRA_LIBRARIES ${target}) + set_property(GLOBAL APPEND PROPERTY NUTTX_SYSTEM_LIBRARIES ${target}) get_target_property(target_type ${target} TYPE) if(${target_type} STREQUAL "STATIC_LIBRARY") @@ -181,6 +181,18 @@ function(nuttx_add_library target) nuttx_add_library_internal(${target}) endfunction() +# ============================================================================= +# +# nuttx_add_extra_library +# +# Add extra library to extra attribute +# +function(nuttx_add_extra_library) + foreach(target ${ARGN}) + set_property(GLOBAL APPEND PROPERTY NUTTX_EXTRA_LIBRARIES ${target}) + endforeach() +endfunction() + # Import static library # function(nuttx_library_import library_name library_path)