Explorar el Código

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.
Saleem Abdulrasool hace 6 años
padre
commit
62381effba
Se han modificado 1 ficheros con 10 adiciones y 13 borrados
  1. 10 13
      Source/cmNinjaNormalTargetGenerator.cxx

+ 10 - 13
Source/cmNinjaNormalTargetGenerator.cxx

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