Ninja,Swift: reuse SWIFT_MODULE_NAME for SWIFT_MODULE

Rather than compute the value of `SWIFT_MODULE`, use the computed value
of `SWIFT_MODULE_NAME`.  This is helpful strictly for Windows where you
have multiple configuration variants with differing ABIs that need must
co-exist.  In particular, this re-use permits the use of
`CMAKE_DEBUG_POSTFIX` to have the import library and the DLL be named
with the trailing suffix but have the same import name for the swift
module and interface.
This commit is contained in:
Saleem Abdulrasool 2019-05-20 08:40:07 -07:00
parent e025495b85
commit 62381effba

View File

@ -814,10 +814,15 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
return targetNames.Base;
}();
vars["SWIFT_MODULE"] = [this]() -> std::string {
cmGeneratorTarget::Names targetNames =
this->GetGeneratorTarget()->GetLibraryNames(this->GetConfigName());
vars["SWIFT_MODULE_NAME"] = [this]() -> std::string {
if (const char* name =
this->GetGeneratorTarget()->GetProperty("Swift_MODULE_NAME")) {
return name;
}
return this->GetGeneratorTarget()->GetName();
}();
vars["SWIFT_MODULE"] = [this](const std::string& module) -> std::string {
std::string directory =
this->GetLocalGenerator()->GetCurrentBinaryDirectory();
if (const char* prop = this->GetGeneratorTarget()->GetProperty(
@ -825,7 +830,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
directory = prop;
}
std::string name = targetNames.Base + ".swiftmodule";
std::string name = module + ".swiftmodule";
if (const char* prop =
this->GetGeneratorTarget()->GetProperty("Swift_MODULE")) {
name = prop;
@ -834,15 +839,7 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement()
return this->GetLocalGenerator()->ConvertToOutputFormat(
this->ConvertToNinjaPath(directory + "/" + name),
cmOutputConverter::SHELL);
}();
vars["SWIFT_MODULE_NAME"] = [this]() -> std::string {
if (const char* name =
this->GetGeneratorTarget()->GetProperty("Swift_MODULE_NAME")) {
return name;
}
return this->GetGeneratorTarget()->GetName();
}();
}(vars["SWIFT_MODULE_NAME"]);
vars["SWIFT_OUTPUT_FILE_MAP"] =
this->GetLocalGenerator()->ConvertToOutputFormat(