summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Scott <craig.scott@crascit.com>2024-09-08 22:32:10 (GMT)
committerKitware Robot <kwrobot@kitware.com>2024-09-08 22:32:40 (GMT)
commit012d116260ee6f7eafc72f44949af48918ff1691 (patch)
treed501aa5ec57540e9869de0beebf9060e65086a21
parent26791532be40d882628e050a5e456e248564e7c4 (diff)
parentcbb727ca6b394aed1852d47be052a73ed8450bee (diff)
downloadCMake-012d116260ee6f7eafc72f44949af48918ff1691.zip
CMake-012d116260ee6f7eafc72f44949af48918ff1691.tar.gz
CMake-012d116260ee6f7eafc72f44949af48918ff1691.tar.bz2
Merge topic 'cmp0168-populate-nondeclare-regression'
cbb727ca6b FetchContent: Don't update verify script timestamp if it doesn't change 795e7b44f2 Help: file(CONFIGURE) only updates output file timestamp if it changes Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !9799
-rw-r--r--Help/command/file.rst4
-rw-r--r--Modules/ExternalProject/shared_internal_commands.cmake4
2 files changed, 6 insertions, 2 deletions
diff --git a/Help/command/file.rst b/Help/command/file.rst
index 0ac49f4..a72b652 100644
--- a/Help/command/file.rst
+++ b/Help/command/file.rst
@@ -302,7 +302,9 @@ Writing
variable values referenced as ``@VAR@`` or ``${VAR}`` contained therein. The
substitution rules behave the same as the :command:`configure_file` command.
In order to match :command:`configure_file`'s behavior, generator expressions
- are not supported for both ``OUTPUT`` and ``CONTENT``.
+ are not supported for both ``OUTPUT`` and ``CONTENT``, and the output file
+ is only modified and its timestamp updated if the content is changed or the
+ file previously didn't exist.
The arguments are:
diff --git a/Modules/ExternalProject/shared_internal_commands.cmake b/Modules/ExternalProject/shared_internal_commands.cmake
index 41ce55b..149a8a7 100644
--- a/Modules/ExternalProject/shared_internal_commands.cmake
+++ b/Modules/ExternalProject/shared_internal_commands.cmake
@@ -1213,7 +1213,9 @@ hash=${hash}
endif ()
set(comment "Performing download step (${steps}) for '${name}'")
# already verified by 'download_script'
- file(WRITE "${verify_script}" "")
+ # We use file(CONFIGURE) instead of file(WRITE) to avoid updating the
+ # timestamp when the file already existed and was empty.
+ file(CONFIGURE OUTPUT "${verify_script}" CONTENT "")
# Rather than adding everything to the RepositoryInfo.txt file, it is
# more robust to just depend on the download script. That way, we will