From a3b304f380d3d28496fcf1d58dc06038fd256e02 Mon Sep 17 00:00:00 2001 From: Renz Bagaporo Date: Thu, 6 Aug 2026 09:00:14 +0900 Subject: [PATCH] fix(cmake): track linker script preprocessor includes --- tools/cmake/utilities.cmake | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/cmake/utilities.cmake b/tools/cmake/utilities.cmake index 9584098dcfa..a40193ebab1 100644 --- a/tools/cmake/utilities.cmake +++ b/tools/cmake/utilities.cmake @@ -231,16 +231,23 @@ function(preprocess_linker_file cmake_target script_in output_var preserve_suffi # Keep comments (-C): historical behavior for cmakev1 linker scripts. It was # previously hardcoded in linker_script_preprocessor.cmake, which now leaves # comment handling to the caller. + # Ask the preprocessor to emit all transitive #include dependencies. Without + # a depfile, CMake only knows about script_in and sdkconfig.h, so changes to + # files such as ld.common leave script_out stale. + set(depfile "${script_out}.d") + set(depfile_flags "-MD -MF \"${depfile}\" -MT \"${script_out}\"") + add_custom_command( OUTPUT ${script_out} COMMAND ${CMAKE_COMMAND} "-DCC=${CMAKE_C_COMPILER}" "-DSOURCE=${script_in}" "-DTARGET=${script_out}" - "-DCFLAGS=-C -I\"${config_dir}\" ${extra_cflags}" + "-DCFLAGS=-C -I\"${config_dir}\" ${depfile_flags} ${extra_cflags}" -P "${linker_script_generator}" MAIN_DEPENDENCY ${script_in} DEPENDS ${sdkconfig_header} + DEPFILE "${depfile}" COMMENT "Preprocessing linker script ${script_in} -> ${script_out}" VERBATIM)