diff --git a/arch/arm64/src/cmake/clang.cmake b/arch/arm64/src/cmake/clang.cmake index cfecb831390..742a2602b90 100644 --- a/arch/arm64/src/cmake/clang.cmake +++ b/arch/arm64/src/cmake/clang.cmake @@ -169,3 +169,46 @@ if(NOT CONFIG_ARCH_USE_MMU) endif() add_link_options(-no-pie) + +# override nuttx_find_toolchain_lib + +set(NUTTX_FIND_TOOLCHAIN_LIB_DEFINED true) + +if(CONFIG_BUILTIN_TOOLCHAIN) + function(nuttx_find_toolchain_lib) + if(ARGN) + execute_process( + COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS} + --print-file-name=${ARGN} + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE extra_lib_path) + nuttx_add_extra_library(${extra_lib_path}) + else() + execute_process( + COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS} + --print-libgcc-file-name + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE libgcc_path) + get_filename_component(libgcc_name ${libgcc_path} NAME) + execute_process( + COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS} + --print-file-name=${libgcc_name} + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE libgcc) + nuttx_add_extra_library(${libgcc}) + endif() + endfunction() +else() + function(nuttx_find_toolchain_lib) + if(ARGN) + execute_process( + COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS} + --print-file-name=${ARGN} + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE extra_lib_path) + endif() + nuttx_add_extra_library(${extra_lib_path}) + endfunction() +endif() + +set(PREPROCESS ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} -E -P -x c) diff --git a/arch/arm64/src/cmake/gcc.cmake b/arch/arm64/src/cmake/gcc.cmake index 05b88bcf64b..5e95bca2147 100644 --- a/arch/arm64/src/cmake/gcc.cmake +++ b/arch/arm64/src/cmake/gcc.cmake @@ -218,3 +218,5 @@ if(CONFIG_ARCH_TOOLCHAIN_GNU AND NOT CONFIG_ARCH_TOOLCHAIN_CLANG) endif() endif() + +set(PREPROCESS ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} -E -P -x c) diff --git a/arch/arm64/src/cmake/platform.cmake b/arch/arm64/src/cmake/platform.cmake index 2e182309906..1f5ec30d44b 100644 --- a/arch/arm64/src/cmake/platform.cmake +++ b/arch/arm64/src/cmake/platform.cmake @@ -19,6 +19,7 @@ # the License. # # ############################################################################## + get_directory_property(TOOLCHAIN_DIR_FLAGS DIRECTORY ${CMAKE_SOURCE_DIR} COMPILE_OPTIONS) @@ -34,37 +35,16 @@ foreach(FLAG ${TOOLCHAIN_DIR_FLAGS}) endif() endforeach() -execute_process( - COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS} - --print-libgcc-file-name - OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE extra_library) -list(APPEND EXTRA_LIB ${extra_library}) -if(CONFIG_LIBM_TOOLCHAIN) - execute_process( - COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS} - --print-file-name=libm.a - OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE extra_library) - list(APPEND EXTRA_LIB ${extra_library}) +nuttx_find_toolchain_lib() + +if(NOT CONFIG_LIBM) + nuttx_find_toolchain_lib(libm.a) endif() + if(CONFIG_LIBSUPCXX_TOOLCHAIN) - execute_process( - COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS} - --print-file-name=libsupc++.a - OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE extra_library) - list(APPEND EXTRA_LIB ${extra_library}) + nuttx_find_toolchain_lib(libsupc++.a) endif() + if(CONFIG_COVERAGE_TOOLCHAIN) - execute_process( - COMMAND ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} ${NUTTX_EXTRA_FLAGS} - --print-file-name=libgcov.a - OUTPUT_STRIP_TRAILING_WHITESPACE - OUTPUT_VARIABLE extra_library) - list(APPEND EXTRA_LIB ${extra_library}) + nuttx_find_toolchain_lib(libgcov.a) endif() - -nuttx_add_extra_library(${EXTRA_LIB}) - -set(PREPROCESS ${CMAKE_C_COMPILER} ${CMAKE_C_FLAG_ARGS} -E -P -x c)