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()