mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-11 16:32:14 -06:00
Swift: Ninja: Pass module name to all swift builds
Executables that don't export a public API should not emit a swiftmodule, but the swift modulename is observable from within the program, so we should still set the module name on executable builds. Fixes: #25710
This commit is contained in:
@@ -2024,11 +2024,9 @@ void cmNinjaTargetGenerator::WriteSwiftObjectBuildStatement(
|
||||
this->LocalGenerator->AppendFlags(
|
||||
vars["FLAGS"], { emitModuleFlag, modulePathFlag, moduleFilepath });
|
||||
objBuild.Outputs.push_back(moduleFilepath);
|
||||
|
||||
std::string const moduleNameFlag = "-module-name";
|
||||
this->LocalGenerator->AppendFlags(
|
||||
vars["FLAGS"], cmStrCat(moduleNameFlag, ' ', moduleName));
|
||||
}
|
||||
this->LocalGenerator->AppendFlags(vars["FLAGS"],
|
||||
cmStrCat("-module-name ", moduleName));
|
||||
|
||||
if (target.GetType() != cmStateEnums::EXECUTABLE) {
|
||||
std::string const libraryLinkNameFlag = "-module-link-name";
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
.*swiftc(.exe)? .* -parse-as-library -static -emit-module .* -module-name StaticLibrary [^
|
||||
]*
|
||||
.*swiftc(.exe)? .* -parse-as-library -emit-module .* -module-name DynamicLibrary
|
||||
.*swiftc(.exe)? .* -parse-as-library -emit-module .* -module-name DynamicLibrary [^
|
||||
]*
|
||||
.*swiftc(.exe)? .* -j [0-9]* -num-threads [0-9]* -c -module-name Executable
|
||||
|
||||
@@ -6,3 +6,7 @@ enable_language(Swift)
|
||||
|
||||
add_library(StaticLibrary STATIC L.swift)
|
||||
add_library(DynamicLibrary SHARED L.swift)
|
||||
add_executable(Executable E.swift)
|
||||
|
||||
add_dependencies(DynamicLibrary StaticLibrary)
|
||||
add_dependencies(Executable DynamicLibrary)
|
||||
|
||||
Reference in New Issue
Block a user