summaryrefslogtreecommitdiffstats
path: root/Tests
diff options
context:
space:
mode:
authorJeremy Day <jeremy@thebrowser.company>2023-12-15 20:18:39 (GMT)
committerJeremy Day <jeremy@thebrowser.company>2024-01-04 21:20:05 (GMT)
commit1161ad76ac569a38ad767d98ea7c5963a076696a (patch)
treee811988ff976bffb89dcdc3f96d817ff0c30b2a0 /Tests
parentedb10c53256a4c308548af298eafc9ddf90b3bda (diff)
downloadCMake-1161ad76ac569a38ad767d98ea7c5963a076696a.zip
CMake-1161ad76ac569a38ad767d98ea7c5963a076696a.tar.gz
CMake-1161ad76ac569a38ad767d98ea7c5963a076696a.tar.bz2
Swift/Ninja: Always restat swift build commands
The swift toolchain leaves output files untouched if there are no meaningful input changes; without restat, this causes ninja to needlessly rebuild targets that are not actually out-of-date Fixes: #25496
Diffstat (limited to 'Tests')
-rw-r--r--Tests/RunCMake/Swift/NoWorkToDo-norelink-stdout.txt2
-rw-r--r--Tests/RunCMake/Swift/NoWorkToDo.cmake7
-rw-r--r--Tests/RunCMake/Swift/RunCMakeTest.cmake3
3 files changed, 10 insertions, 2 deletions
diff --git a/Tests/RunCMake/Swift/NoWorkToDo-norelink-stdout.txt b/Tests/RunCMake/Swift/NoWorkToDo-norelink-stdout.txt
new file mode 100644
index 0000000..e7b31b7
--- /dev/null
+++ b/Tests/RunCMake/Swift/NoWorkToDo-norelink-stdout.txt
@@ -0,0 +1,2 @@
+.*\[1\/4\].*
+.*\[2\/3\].*
diff --git a/Tests/RunCMake/Swift/NoWorkToDo.cmake b/Tests/RunCMake/Swift/NoWorkToDo.cmake
index 02b9195..b58f8ff 100644
--- a/Tests/RunCMake/Swift/NoWorkToDo.cmake
+++ b/Tests/RunCMake/Swift/NoWorkToDo.cmake
@@ -1,6 +1,9 @@
cmake_policy(SET CMP0157 NEW)
enable_language(Swift)
-add_executable(hello1 hello.swift)
+
+file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/hello.swift "")
+
+add_executable(hello1 ${CMAKE_CURRENT_BINARY_DIR}/hello.swift)
set_target_properties(hello1 PROPERTIES ENABLE_EXPORTS TRUE)
-add_executable(hello2 hello.swift)
+add_executable(hello2 ${CMAKE_CURRENT_BINARY_DIR}/hello.swift)
diff --git a/Tests/RunCMake/Swift/RunCMakeTest.cmake b/Tests/RunCMake/Swift/RunCMakeTest.cmake
index 68d10ea..ba5bf44 100644
--- a/Tests/RunCMake/Swift/RunCMakeTest.cmake
+++ b/Tests/RunCMake/Swift/RunCMakeTest.cmake
@@ -27,6 +27,9 @@ elseif(RunCMake_GENERATOR STREQUAL Ninja)
set(RunCMake_TEST_OUTPUT_MERGE 1)
run_cmake_command(NoWorkToDo-build ${CMAKE_COMMAND} --build .)
run_cmake_command(NoWorkToDo-nowork ${CMAKE_COMMAND} --build . -- -d explain)
+ file(WRITE ${RunCMake_TEST_BINARY_DIR}/hello.swift "//No-op change\n")
+ run_cmake_command(NoWorkToDo-norelink ${CMAKE_COMMAND} --build . -- -d explain)
+ run_cmake_command(NoWorkToDo-nowork ${CMAKE_COMMAND} --build . -- -d explain)
endblock()
# Test that intermediate static libraries are rebuilt when the public