浏览代码

Merge branch 'backport-swift-ninja-multiconfig' into swift-ninja-multiconfig

Kyle Edwards 5 年之前
父节点
当前提交
87819db28d

+ 1 - 1
Modules/CMakeDetermineSwiftCompiler.cmake

@@ -16,7 +16,7 @@ if("${CMAKE_GENERATOR}" STREQUAL "Xcode")
   endif()
   set(CMAKE_Swift_COMPILER_XCODE_TYPE sourcecode.swift)
   _cmake_find_compiler_path(Swift)
-elseif("${CMAKE_GENERATOR}" STREQUAL "Ninja")
+elseif("${CMAKE_GENERATOR}" MATCHES "^Ninja")
   if(CMAKE_Swift_COMPILER)
     _cmake_find_compiler_path(Swift)
   else()

+ 3 - 3
Source/cmNinjaNormalTargetGenerator.cxx

@@ -885,11 +885,11 @@ void cmNinjaNormalTargetGenerator::WriteLinkStatement(
         cmOutputConverter::SHELL);
     }(vars["SWIFT_MODULE_NAME"]);
 
+    const std::string map = cmStrCat(gt->GetSupportDirectory(), '/', config,
+                                     '/', "output-file-map.json");
     vars["SWIFT_OUTPUT_FILE_MAP"] =
       this->GetLocalGenerator()->ConvertToOutputFormat(
-        this->ConvertToNinjaPath(gt->GetSupportDirectory() +
-                                 "/output-file-map.json"),
-        cmOutputConverter::SHELL);
+        this->ConvertToNinjaPath(map), cmOutputConverter::SHELL);
 
     vars["SWIFT_SOURCES"] = [this, config]() -> std::string {
       std::vector<cmSourceFile const*> sources;

+ 3 - 2
Source/cmNinjaTargetGenerator.cxx

@@ -952,8 +952,9 @@ void cmNinjaTargetGenerator::WriteObjectBuildStatements(
   this->GetImplFileStream(fileConfig) << "\n";
 
   if (!this->Configs[config].SwiftOutputMap.empty()) {
-    std::string const mapFilePath = cmStrCat(
-      this->GeneratorTarget->GetSupportDirectory(), "/output-file-map.json");
+    std::string const mapFilePath =
+      cmStrCat(this->GeneratorTarget->GetSupportDirectory(), '/', config, '/',
+               "output-file-map.json");
     std::string const targetSwiftDepsPath = [this, config]() -> std::string {
       cmGeneratorTarget const* target = this->GeneratorTarget;
       if (const char* name = target->GetProperty("Swift_DEPENDENCIES_FILE")) {

+ 1 - 0
Tests/RunCMake/Swift/L.swift

@@ -0,0 +1 @@
+public let ThirtyTwo: Int = 32

+ 6 - 0
Tests/RunCMake/Swift/RunCMakeTest.cmake

@@ -12,6 +12,12 @@ elseif(RunCMake_GENERATOR STREQUAL Ninja)
     run_cmake(SwiftMultiArch)
     unset(RunCMake_TEST_OPTIONS)
   endif()
+elseif(RunCMake_GENERATOR STREQUAL "Ninja Multi-Config")
+  if(CMAKE_Swift_COMPILER)
+    set(RunCMake_TEST_OPTIONS "-DCMAKE_CONFIGURATION_TYPES=Debug\\;Release")
+    run_cmake(SwiftSimple)
+    unset(RunCMake_TEST_OPTIONS)
+  endif()
 else()
   run_cmake(NotSupported)
 endif()

+ 2 - 0
Tests/RunCMake/Swift/SwiftSimple.cmake

@@ -0,0 +1,2 @@
+enable_language(Swift)
+add_library(L L.swift)