summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2022-11-18 14:34:26 (GMT)
committerKitware Robot <kwrobot@kitware.com>2022-11-18 14:34:35 (GMT)
commit1cefd1da95ebecfbb3082d4ff4dd00f93be43bf1 (patch)
tree79393f581e955ca6661ea27bab6feaa14d50cf1b
parent72af27279bafa27607ec1db8f52c4597de31a465 (diff)
parent38c8807c5ac5cdc7c8d5f6ff48b521b0a2e3c81c (diff)
downloadCMake-1cefd1da95ebecfbb3082d4ff4dd00f93be43bf1.zip
CMake-1cefd1da95ebecfbb3082d4ff4dd00f93be43bf1.tar.gz
CMake-1cefd1da95ebecfbb3082d4ff4dd00f93be43bf1.tar.bz2
Merge topic 'ninja-swiftmodule-no-exe'
38c8807c5a Ninja: Avoid re-linking a Swift executable on every build Acked-by: Kitware Robot <kwrobot@kitware.com> Merge-request: !7901
-rw-r--r--Source/cmNinjaNormalTargetGenerator.cxx4
-rw-r--r--Tests/RunCMake/Swift/NoWorkToDo-nowork-stdout.txt1
-rw-r--r--Tests/RunCMake/Swift/NoWorkToDo.cmake2
-rw-r--r--Tests/RunCMake/Swift/RunCMakeTest.cmake10
-rw-r--r--Tests/RunCMake/Swift/hello.swift0
5 files changed, 16 insertions, 1 deletions
diff --git a/Source/cmNinjaNormalTargetGenerator.cxx b/Source/cmNinjaNormalTargetGenerator.cxx
index 895a4c3..21409d7 100644
--- a/Source/cmNinjaNormalTargetGenerator.cxx
+++ b/Source/cmNinjaNormalTargetGenerator.cxx
@@ -1112,7 +1112,9 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement(
this->GetObjectFilePath(source, config));
}
}
- linkBuild.Outputs.push_back(vars["SWIFT_MODULE"]);
+ if (targetType != cmStateEnums::EXECUTABLE) {
+ linkBuild.Outputs.push_back(vars["SWIFT_MODULE"]);
+ }
} else {
linkBuild.ExplicitDeps = this->GetObjects(config);
}
diff --git a/Tests/RunCMake/Swift/NoWorkToDo-nowork-stdout.txt b/Tests/RunCMake/Swift/NoWorkToDo-nowork-stdout.txt
new file mode 100644
index 0000000..60a9228
--- /dev/null
+++ b/Tests/RunCMake/Swift/NoWorkToDo-nowork-stdout.txt
@@ -0,0 +1 @@
+^ninja: no work to do
diff --git a/Tests/RunCMake/Swift/NoWorkToDo.cmake b/Tests/RunCMake/Swift/NoWorkToDo.cmake
new file mode 100644
index 0000000..e86a861
--- /dev/null
+++ b/Tests/RunCMake/Swift/NoWorkToDo.cmake
@@ -0,0 +1,2 @@
+enable_language(Swift)
+add_executable(hello hello.swift)
diff --git a/Tests/RunCMake/Swift/RunCMakeTest.cmake b/Tests/RunCMake/Swift/RunCMakeTest.cmake
index 21d5a25..7f4464d 100644
--- a/Tests/RunCMake/Swift/RunCMakeTest.cmake
+++ b/Tests/RunCMake/Swift/RunCMakeTest.cmake
@@ -14,6 +14,16 @@ elseif(RunCMake_GENERATOR STREQUAL Ninja)
run_cmake(SwiftMultiArch)
unset(RunCMake_TEST_OPTIONS)
endif()
+
+ # Test that a second build with no changes does nothing.
+ block()
+ run_cmake(NoWorkToDo)
+ set(RunCMake_TEST_NO_CLEAN 1)
+ set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/NoWorkToDo-build)
+ set(RunCMake_TEST_OUTPUT_MERGE 1)
+ run_cmake_command(NoWorkToDo-build ${CMAKE_COMMAND} --build .)
+ run_cmake_command(NoWorkToDo-nowork ${CMAKE_COMMAND} --build . -- -d explain)
+ endblock()
endif()
elseif(RunCMake_GENERATOR STREQUAL "Ninja Multi-Config")
if(CMAKE_Swift_COMPILER)
diff --git a/Tests/RunCMake/Swift/hello.swift b/Tests/RunCMake/Swift/hello.swift
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Tests/RunCMake/Swift/hello.swift