From 48bd67524dc3dd461f3616ac1d9a6bfe3ee6fb06 Mon Sep 17 00:00:00 2001 From: Angus Gratton Date: Fri, 10 Aug 2018 12:30:32 +1000 Subject: [PATCH] cmake: Only rewrite componend_depends.cmake if it changes --- tools/cmake/scripts/expand_requirements.cmake | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/cmake/scripts/expand_requirements.cmake b/tools/cmake/scripts/expand_requirements.cmake index d602801bba..a825a76473 100644 --- a/tools/cmake/scripts/expand_requirements.cmake +++ b/tools/cmake/scripts/expand_requirements.cmake @@ -184,10 +184,10 @@ debug("components in build: ${build_component_paths}") debug("components not found: ${not_found}") function(line contents) - file(APPEND "${DEPENDENCIES_FILE}" "${contents}\n") + file(APPEND "${DEPENDENCIES_FILE}.tmp" "${contents}\n") endfunction() -file(WRITE "${DEPENDENCIES_FILE}" "# Component requirements generated by expand_requirements.cmake\n\n") +file(WRITE "${DEPENDENCIES_FILE}.tmp" "# Component requirements generated by expand_requirements.cmake\n\n") line("set(BUILD_COMPONENTS ${build_components})") line("set(BUILD_COMPONENT_PATHS ${build_component_paths})") line("") @@ -216,3 +216,7 @@ endforeach() line(" message(FATAL_ERROR \"Component not found: \${component}\")") line("endfunction()") + +# only replace DEPENDENCIES_FILE if it has changed (prevents ninja/make build loops.) +execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${DEPENDENCIES_FILE}.tmp" "${DEPENDENCIES_FILE}") +execute_process(COMMAND ${CMAKE_COMMAND} -E remove "${DEPENDENCIES_FILE}.tmp")