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
This commit is contained in:
Brad King
2022-11-18 14:34:26 +00:00
committed by Kitware Robot
5 changed files with 16 additions and 1 deletions

View File

@@ -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);
}

View File

@@ -0,0 +1 @@
^ninja: no work to do

View File

@@ -0,0 +1,2 @@
enable_language(Swift)
add_executable(hello hello.swift)

View File

@@ -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)

View File