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:
Evan Wilde
2024-02-22 16:53:50 -08:00
committed by Brad King
parent 9cd34156f4
commit f292e28b84
3 changed files with 9 additions and 5 deletions

View File

@@ -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";

View File

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

View File

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