[libcxx] [llvm] [libcxx][llvm]: Fix misidentification of GNU-style clang as clang-cl (PR #225124)
Jacob Abel via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 21 08:53:52 PDT 2026
https://github.com/OneDeuxTriSeiGo created https://github.com/llvm/llvm-project/pull/225124
Update cmake to prefer CMAKE_CXX_COMPILER_FRONTEND_VARIANT so that it matches clang (gnu frontend) vs clang-cl properly.
>From bf657e83a09608a5d7c3d2c76cfc1bfd11c30aba Mon Sep 17 00:00:00 2001
From: Jacob Abel <jacobabel at nullpo.dev>
Date: Mon, 21 Sep 2026 11:46:45 -0400
Subject: [PATCH] [libcxx][llvm]: Fix misidentification of GNU-style clang as
clang-cl
Signed-off-by: Jacob Abel <jacobabel at nullpo.dev>
---
libcxx/CMakeLists.txt | 2 +-
llvm/cmake/modules/CheckCompilerVersion.cmake | 4 +++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt
index d163f0f579c39..4f9e2eac01c55 100644
--- a/libcxx/CMakeLists.txt
+++ b/libcxx/CMakeLists.txt
@@ -43,7 +43,7 @@ MACRO_ENSURE_OUT_OF_SOURCE_BUILD(
"${PROJECT_NAME} requires an out of source build. Please create a separate
build directory and run 'cmake /path/to/${PROJECT_NAME} [options]' there."
)
-if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" AND "${CMAKE_CXX_SIMULATE_ID}" STREQUAL "MSVC")
+if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" AND "${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "MSVC")
message(STATUS "Configuring for clang-cl")
set(LIBCXX_TARGETING_CLANG_CL ON)
endif()
diff --git a/llvm/cmake/modules/CheckCompilerVersion.cmake b/llvm/cmake/modules/CheckCompilerVersion.cmake
index c550df7b08c84..bf2919ad08aa2 100644
--- a/llvm/cmake/modules/CheckCompilerVersion.cmake
+++ b/llvm/cmake/modules/CheckCompilerVersion.cmake
@@ -68,7 +68,9 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
if (CMAKE_CXX_SIMULATE_VERSION VERSION_LESS MSVC_MIN)
message(FATAL_ERROR "Host Clang must have at least -fms-compatibility-version=${MSVC_MIN}, your version is ${CMAKE_CXX_SIMULATE_VERSION}.")
endif()
- set(CLANG_CL 1)
+ if (CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "MSVC")
+ set(CLANG_CL 1)
+ endif()
elseif(NOT LLVM_ENABLE_LIBCXX)
# Test that we aren't using too old of a version of libstdc++.
set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
More information about the llvm-commits
mailing list