This is an automated email from the ASF dual-hosted git repository.

anchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 734b0c5757a cmake: deduplicate NUTTX_EXTRA_FLAGS in linking stage
734b0c5757a is described below

commit 734b0c5757af4f84f4b43a6c3bac114d86067fe2
Author: Sarthak Pandey <[email protected]>
AuthorDate: Mon Oct 12 12:50:46 2026 +0530

    cmake: deduplicate NUTTX_EXTRA_FLAGS in linking stage
    
    When CMake configures multiple languages (e.g. C, CXX, ASM), directory 
COMPILE_OPTIONS is populated multiple times, causing NUTTX_EXTRA_FLAGS in 
platform.cmake to accumulate duplicate compiler options.
    
    When using the Ninja generator, these duplicated flags are passed to the 
linker without automatic deduplication, causing duplicate CFLAGS in final 
linking.
    
    This patch deduplicates NUTTX_EXTRA_FLAGS in platform.cmake across 
architectures and in CMakeLists.txt before target_link_libraries.
    
    Signed-off-by: Sarthak Pandey <[email protected]>
---
 CMakeLists.txt                        | 4 ++++
 arch/arm/src/cmake/platform.cmake     | 4 ++++
 arch/risc-v/src/cmake/platform.cmake  | 4 ++++
 arch/tricore/src/cmake/platform.cmake | 4 ++++
 arch/x86_64/src/cmake/platform.cmake  | 4 ++++
 arch/xtensa/src/cmake/platform.cmake  | 4 ++++
 6 files changed, 24 insertions(+)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 16f2720b991..e05b944bc2b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -756,6 +756,10 @@ if(NOT CONFIG_ARCH_SIM)
     # Remove executable suffix
     set(CMAKE_EXECUTABLE_SUFFIX "")
   else()
+    if(NUTTX_EXTRA_FLAGS)
+      list(REMOVE_DUPLICATES NUTTX_EXTRA_FLAGS)
+    endif()
+
     target_link_libraries(
       nuttx
       PRIVATE ${NUTTX_EXTRA_FLAGS}
diff --git a/arch/arm/src/cmake/platform.cmake 
b/arch/arm/src/cmake/platform.cmake
index 1f31e0eb6e3..6bd3863f8ff 100644
--- a/arch/arm/src/cmake/platform.cmake
+++ b/arch/arm/src/cmake/platform.cmake
@@ -75,6 +75,10 @@ foreach(FLAG ${TOOLCHAIN_DIR_FLAGS})
   endif()
 endforeach()
 
+if(NUTTX_EXTRA_FLAGS)
+  list(REMOVE_DUPLICATES NUTTX_EXTRA_FLAGS)
+endif()
+
 separate_arguments(CMAKE_C_FLAG_ARGS NATIVE_COMMAND ${CMAKE_C_FLAGS})
 
 nuttx_find_toolchain_lib()
diff --git a/arch/risc-v/src/cmake/platform.cmake 
b/arch/risc-v/src/cmake/platform.cmake
index 4ef51e5b396..e5067bf4899 100644
--- a/arch/risc-v/src/cmake/platform.cmake
+++ b/arch/risc-v/src/cmake/platform.cmake
@@ -35,6 +35,10 @@ foreach(FLAG ${TOOLCHAIN_DIR_FLAGS})
   endif()
 endforeach()
 
+if(NUTTX_EXTRA_FLAGS)
+  list(REMOVE_DUPLICATES NUTTX_EXTRA_FLAGS)
+endif()
+
 separate_arguments(CMAKE_C_FLAG_ARGS NATIVE_COMMAND ${CMAKE_C_FLAGS})
 
 nuttx_find_toolchain_lib()
diff --git a/arch/tricore/src/cmake/platform.cmake 
b/arch/tricore/src/cmake/platform.cmake
index 7cc04664f24..3fe49137a8a 100644
--- a/arch/tricore/src/cmake/platform.cmake
+++ b/arch/tricore/src/cmake/platform.cmake
@@ -37,6 +37,10 @@ foreach(FLAG ${TOOLCHAIN_DIR_FLAGS})
   endif()
 endforeach()
 
+if(NUTTX_EXTRA_FLAGS)
+  list(REMOVE_DUPLICATES NUTTX_EXTRA_FLAGS)
+endif()
+
 separate_arguments(CMAKE_C_FLAG_ARGS NATIVE_COMMAND ${CMAKE_C_FLAGS})
 
 if(CONFIG_TRICORE_TOOLCHAIN_GNU)
diff --git a/arch/x86_64/src/cmake/platform.cmake 
b/arch/x86_64/src/cmake/platform.cmake
index 92005089db7..6241caa9e35 100644
--- a/arch/x86_64/src/cmake/platform.cmake
+++ b/arch/x86_64/src/cmake/platform.cmake
@@ -35,6 +35,10 @@ foreach(FLAG ${TOOLCHAIN_DIR_FLAGS})
   endif()
 endforeach()
 
+if(NUTTX_EXTRA_FLAGS)
+  list(REMOVE_DUPLICATES NUTTX_EXTRA_FLAGS)
+endif()
+
 separate_arguments(CMAKE_C_FLAG_ARGS NATIVE_COMMAND ${CMAKE_C_FLAGS})
 
 nuttx_find_toolchain_lib()
diff --git a/arch/xtensa/src/cmake/platform.cmake 
b/arch/xtensa/src/cmake/platform.cmake
index d785994715d..6bf8882922c 100644
--- a/arch/xtensa/src/cmake/platform.cmake
+++ b/arch/xtensa/src/cmake/platform.cmake
@@ -34,6 +34,10 @@ foreach(FLAG ${TOOLCHAIN_DIR_FLAGS})
   endif()
 endforeach()
 
+if(NUTTX_EXTRA_FLAGS)
+  list(REMOVE_DUPLICATES NUTTX_EXTRA_FLAGS)
+endif()
+
 separate_arguments(CMAKE_C_FLAG_ARGS NATIVE_COMMAND ${CMAKE_C_FLAGS})
 
 execute_process(

Reply via email to