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

xiaoxiang781216 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 0afb8c7ad50 cmake/nuttx_toolchain.cmake: track preprocessed include 
deps
0afb8c7ad50 is described below

commit 0afb8c7ad508a79a3f5b14cf0360fea24609edaf
Author: shichunma <[email protected]>
AuthorDate: Wed Jun 3 10:05:00 2026 +0800

    cmake/nuttx_toolchain.cmake: track preprocessed include deps
    
    Make preprocess-generated outputs depend on included files by
    emitting depfiles for GNU/Clang Ninja/Makefile builds.
    
    This fixes stale generated rc.sysinit and ROMFS images when a
    board-specific included fragment such as rc.sysinit.ap changes,
    because the previous custom command only depended on the top-level
    source file.
    
    Signed-off-by: Jerry Ma <[email protected]>
---
 CMakeLists.txt              |  5 +++++
 cmake/nuttx_toolchain.cmake | 27 +++++++++++++++++++++++----
 2 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index b479ad22296..1fcc3e57f4e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -42,6 +42,11 @@ if(POLICY CMP0115)
   cmake_policy(SET CMP0115 NEW)
 endif()
 
+if(POLICY CMP0116)
+  # transform DEPFILE paths correctly for Ninja custom commands
+  cmake_policy(SET CMP0116 NEW)
+endif()
+
 # Avoid warning about DOWNLOAD_EXTRACT_TIMESTAMP in CMake 3.24:
 
 if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")
diff --git a/cmake/nuttx_toolchain.cmake b/cmake/nuttx_toolchain.cmake
index d52cdb62904..b01deda0938 100644
--- a/cmake/nuttx_toolchain.cmake
+++ b/cmake/nuttx_toolchain.cmake
@@ -91,13 +91,32 @@ if(NOT NUTTX_TOOLCHAIN_PREPROCESS_DEFINED)
       ARGN
       ${ARGN})
 
+    set(depfile_args)
+    set(preprocess_depflags)
+
+    if((CMAKE_GENERATOR MATCHES "Ninja|Makefiles")
+       AND (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID MATCHES
+                                                  "Clang"))
+      set(preprocess_depfile ${TARGET_FILE}.d)
+      list(
+        APPEND
+        preprocess_depflags
+        -MMD
+        -MT
+        ${TARGET_FILE}
+        -MF
+        ${preprocess_depfile})
+      list(APPEND depfile_args DEPFILE ${preprocess_depfile})
+    endif()
+
     add_custom_command(
       OUTPUT ${TARGET_FILE}
       COMMAND
-        ${PREPROCESS} ${DEFINES} -I${CMAKE_BINARY_DIR}/include
-        -I${NUTTX_DIR}/include -I${NUTTX_CHIP_ABS_DIR} ${SOURCE_FILE} >
-        ${TARGET_FILE}
-      DEPENDS ${SOURCE_FILE} ${DEPENDS})
+        ${PREPROCESS} ${DEFINES} ${preprocess_depflags}
+        -I${CMAKE_BINARY_DIR}/include -I${NUTTX_DIR}/include
+        -I${NUTTX_CHIP_ABS_DIR} ${SOURCE_FILE} > ${TARGET_FILE}
+      DEPENDS ${SOURCE_FILE} ${DEPENDS} ${depfile_args}
+      COMMAND_EXPAND_LISTS)
 
   endfunction()
 endif()

Reply via email to