Parcourir la source

cmGlobalNinjaGenerator: use gnu compatible paths with clang in gnu mode

Zsolt Parragi il y a 6 ans
Parent
commit
b7d5ef23e9
1 fichiers modifiés avec 14 ajouts et 7 suppressions
  1. 14 7
      Source/cmGlobalNinjaGenerator.cxx

+ 14 - 7
Source/cmGlobalNinjaGenerator.cxx

@@ -639,13 +639,20 @@ void cmGlobalNinjaGenerator::EnableLanguage(
     this->ResolveLanguageCompiler(l, mf, optional);
   }
 #ifdef _WIN32
-  if ((mf->GetSafeDefinition("CMAKE_C_SIMULATE_ID") != "MSVC") &&
-      (mf->GetSafeDefinition("CMAKE_CXX_SIMULATE_ID") != "MSVC") &&
-      (mf->IsOn("CMAKE_COMPILER_IS_MINGW") ||
-       (mf->GetSafeDefinition("CMAKE_C_COMPILER_ID") == "GNU") ||
-       (mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID") == "GNU") ||
-       (mf->GetSafeDefinition("CMAKE_C_COMPILER_ID") == "Clang") ||
-       (mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID") == "Clang"))) {
+  const bool clangGnuMode =
+    ((mf->GetSafeDefinition("CMAKE_C_COMPILER_ID") == "Clang") &&
+     (mf->GetSafeDefinition("CMAKE_C_COMPILER_FRONTEND_VARIANT") == "GNU")) ||
+    ((mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID") == "Clang") &&
+     (mf->GetSafeDefinition("CMAKE_CXX_COMPILER_FRONTEND_VARIANT") == "GNU"));
+
+  if (clangGnuMode ||
+      ((mf->GetSafeDefinition("CMAKE_C_SIMULATE_ID") != "MSVC") &&
+       (mf->GetSafeDefinition("CMAKE_CXX_SIMULATE_ID") != "MSVC") &&
+       (mf->IsOn("CMAKE_COMPILER_IS_MINGW") ||
+        (mf->GetSafeDefinition("CMAKE_C_COMPILER_ID") == "GNU") ||
+        (mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID") == "GNU") ||
+        (mf->GetSafeDefinition("CMAKE_C_COMPILER_ID") == "Clang") ||
+        (mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID") == "Clang")))) {
     this->UsingGCCOnWindows = true;
   }
 #endif