Browse Source

Clang: Record Clang 16.0 C++ modules flags only for GNU-like front-end

The settings added by commit 3fe8e33f27 (Clang: Record Clang 16.0 flags
for our experimental C++ modules support, 2023-03-03, v3.26.0-rc6~6^2)
work only for the GNU-like `clang++` front-end, and not for the
MSVC-like `clang-cl` on Windows.

Also quote the path to `clang-scan-deps` to support spaces in its path.

Issue: #24611
Brad King 2 years ago
parent
commit
ffd8537acf
1 changed files with 15 additions and 13 deletions
  1. 15 13
      Modules/Compiler/Clang-CXX.cmake

+ 15 - 13
Modules/Compiler/Clang-CXX.cmake

@@ -30,16 +30,18 @@ if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
   endif()
 endif()
 
-if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
-  string(CONCAT CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE
-    "${CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS}"
-    " -format=p1689"
-    " --"
-    " <CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS>"
-    " -x c++ <SOURCE> -c -o <OBJECT>"
-    " -MT <DYNDEP_FILE>"
-    " -MD -MF <DEP_FILE>"
-    " > <DYNDEP_FILE>")
-  set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "clang")
-  set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG "@<MODULE_MAP_FILE>")
-endif ()
+if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
+  if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
+    string(CONCAT CMAKE_EXPERIMENTAL_CXX_SCANDEP_SOURCE
+      "\"${CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS}\""
+      " -format=p1689"
+      " --"
+      " <CMAKE_CXX_COMPILER> <DEFINES> <INCLUDES> <FLAGS>"
+      " -x c++ <SOURCE> -c -o <OBJECT>"
+      " -MT <DYNDEP_FILE>"
+      " -MD -MF <DEP_FILE>"
+      " > <DYNDEP_FILE>")
+    set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FORMAT "clang")
+    set(CMAKE_EXPERIMENTAL_CXX_MODULE_MAP_FLAG "@<MODULE_MAP_FILE>")
+  endif()
+endif()