Skip to content

Commit c1dcb98

Browse files
masc2008shichunma
authored andcommitted
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 <shichunma@bestechnic.com>
1 parent 32a8f63 commit c1dcb98

2 files changed

Lines changed: 28 additions & 4 deletions

File tree

‎CMakeLists.txt‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ if(POLICY CMP0115)
4242
cmake_policy(SET CMP0115 NEW)
4343
endif()
4444

45+
if(POLICY CMP0116)
46+
# transform DEPFILE paths correctly for Ninja custom commands
47+
cmake_policy(SET CMP0116 NEW)
48+
endif()
49+
4550
# Avoid warning about DOWNLOAD_EXTRACT_TIMESTAMP in CMake 3.24:
4651

4752
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.24.0")

‎cmake/nuttx_toolchain.cmake‎

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,32 @@ if(NOT NUTTX_TOOLCHAIN_PREPROCESS_DEFINED)
9191
ARGN
9292
${ARGN})
9393

94+
set(depfile_args)
95+
set(preprocess_depflags)
96+
97+
if((CMAKE_GENERATOR MATCHES "Ninja|Makefiles")
98+
AND (CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_C_COMPILER_ID MATCHES
99+
"Clang"))
100+
set(preprocess_depfile ${TARGET_FILE}.d)
101+
list(
102+
APPEND
103+
preprocess_depflags
104+
-MMD
105+
-MT
106+
${TARGET_FILE}
107+
-MF
108+
${preprocess_depfile})
109+
list(APPEND depfile_args DEPFILE ${preprocess_depfile})
110+
endif()
111+
94112
add_custom_command(
95113
OUTPUT ${TARGET_FILE}
96114
COMMAND
97-
${PREPROCESS} ${DEFINES} -I${CMAKE_BINARY_DIR}/include
98-
-I${NUTTX_DIR}/include -I${NUTTX_CHIP_ABS_DIR} ${SOURCE_FILE} >
99-
${TARGET_FILE}
100-
DEPENDS ${SOURCE_FILE} ${DEPENDS})
115+
${PREPROCESS} ${DEFINES} ${preprocess_depflags}
116+
-I${CMAKE_BINARY_DIR}/include -I${NUTTX_DIR}/include
117+
-I${NUTTX_CHIP_ABS_DIR} ${SOURCE_FILE} > ${TARGET_FILE}
118+
DEPENDS ${SOURCE_FILE} ${DEPENDS} ${depfile_args}
119+
COMMAND_EXPAND_LISTS)
101120

102121
endfunction()
103122
endif()

0 commit comments

Comments
 (0)