cmake: only write devicetree files when there are changes.
As part of #40167 is was discovered that devicetree headers are always generated when CMake re-runs. This causes all source files that directly or indirectly through included headers to recompile when CMake re-runs, even if there are no changes to devicetree. This commits introduces `zephyr_file_copy(...)` similar to `file(COPY_FILE ...)` from CMake 3.21. However, as CMake 3.20 is supported by Zephyr we need a zephyr variant of this function to allow usage with CMake 3.20. This ensures that only when there are changes to devicetree headers, then source files will recompile. Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
This commit is contained in:
parent
a17eeb2835
commit
ea082ac2c9
5 changed files with 52 additions and 7 deletions
|
@ -471,7 +471,7 @@ set_ifndef(DTS_CAT_OF_FIXUP_FILES ${ZEPHYR_BINARY_DIR}/include/generated/devicet
|
|||
|
||||
# Concatenate the fixups into a single header file for easy
|
||||
# #include'ing
|
||||
file(WRITE ${DTS_CAT_OF_FIXUP_FILES} "/* May only be included by devicetree.h */\n\n")
|
||||
file(WRITE ${DTS_CAT_OF_FIXUP_FILES}.new "/* May only be included by devicetree.h */\n\n")
|
||||
set(DISCOVERED_FIXUP_FILES)
|
||||
foreach(fixup_file
|
||||
${DTS_BOARD_FIXUP_FILE}
|
||||
|
@ -481,10 +481,12 @@ foreach(fixup_file
|
|||
)
|
||||
if(EXISTS ${fixup_file})
|
||||
file(READ ${fixup_file} contents)
|
||||
file(APPEND ${DTS_CAT_OF_FIXUP_FILES} "${contents}")
|
||||
file(APPEND ${DTS_CAT_OF_FIXUP_FILES}.new "${contents}")
|
||||
string(APPEND DISCOVERED_FIXUP_FILES "- ${fixup_file}\n")
|
||||
endif()
|
||||
endforeach()
|
||||
zephyr_file_copy(${DTS_CAT_OF_FIXUP_FILES}.new ${DTS_CAT_OF_FIXUP_FILES} ONLY_IF_DIFFERENT)
|
||||
file(REMOVE ${DTS_CAT_OF_FIXUP_FILES}.new)
|
||||
|
||||
if (DISCOVERED_FIXUP_FILES)
|
||||
message(WARNING "One or more dts_fixup.h files detected:\n${DISCOVERED_FIXUP_FILES}Use of these files is deprecated; use the devicetree.h API instead.")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue