mirror of
https://gitlab.kitware.com/cmake/cmake.git
synced 2026-09-25 04:09:36 +03:00
clang-cl: use gcc depfiles over /showIncludes
This enables `#embed` dependencies when using `clang-cl`. Fixes: #27594
This commit is contained in:
@@ -5,11 +5,6 @@ if("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
|
||||
set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -TC)
|
||||
set(CMAKE_C_CLANG_TIDY_DRIVER_MODE "cl")
|
||||
set(CMAKE_C_INCLUDE_WHAT_YOU_USE_DRIVER_MODE "cl")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_C)
|
||||
set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
elseif("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
||||
set(CMAKE_C_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -x c)
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
|
||||
@@ -18,11 +18,6 @@ endif()
|
||||
if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
|
||||
set(CMAKE_CXX_CLANG_TIDY_DRIVER_MODE "cl")
|
||||
set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE_DRIVER_MODE "cl")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles"
|
||||
AND CMAKE_DEPFILE_FLAGS_CXX)
|
||||
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 16.0)
|
||||
|
||||
@@ -1,18 +1,10 @@
|
||||
include(Platform/Windows-Clang)
|
||||
__windows_compiler_clang(C)
|
||||
|
||||
if("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_C)
|
||||
set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
elseif("x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_C)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_C_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_C)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_C_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_C_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
@@ -2,18 +2,10 @@ include(Platform/Windows-Clang)
|
||||
set(_COMPILE_CXX_MSVC " -TP")
|
||||
__windows_compiler_clang(CXX)
|
||||
|
||||
if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_CXX)
|
||||
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
elseif("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_CXX)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_CXX_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_CXX)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_CXX_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_CXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
@@ -2,18 +2,10 @@ include(Platform/Windows-Clang)
|
||||
set(_COMPILE_HIP_MSVC " -x hip")
|
||||
__windows_compiler_clang(HIP)
|
||||
|
||||
if("x${CMAKE_HIP_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_HIP)
|
||||
set(CMAKE_HIP_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
elseif("x${CMAKE_HIP_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_HIP)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_HIP_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_HIP_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_HIP)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_HIP_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_HIP_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
@@ -1,18 +1,10 @@
|
||||
include(Platform/Windows-Clang)
|
||||
__windows_compiler_clang(OBJC)
|
||||
|
||||
if("x${CMAKE_OBJC_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_OBJC)
|
||||
set(CMAKE_OBJC_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
elseif("x${CMAKE_OBJC_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_OBJC)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_OBJC_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_OBJC_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_OBJC)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_OBJC_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_OBJC_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
@@ -1,18 +1,10 @@
|
||||
include(Platform/Windows-Clang)
|
||||
__windows_compiler_clang(OBJCXX)
|
||||
|
||||
if("x${CMAKE_OBJCXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_OBJCXX)
|
||||
set(CMAKE_OBJCXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
elseif("x${CMAKE_OBJCXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_OBJCXX)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_OBJCXX_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_OBJCXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
if((NOT DEFINED CMAKE_DEPENDS_USE_COMPILER OR CMAKE_DEPENDS_USE_COMPILER)
|
||||
AND CMAKE_GENERATOR MATCHES "Makefiles|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_OBJCXX)
|
||||
# dependencies are computed by the compiler itself
|
||||
set(CMAKE_OBJCXX_DEPFILE_FORMAT gcc)
|
||||
set(CMAKE_OBJCXX_DEPENDS_USE_COMPILER TRUE)
|
||||
endif()
|
||||
|
||||
@@ -233,6 +233,11 @@ if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC"
|
||||
macro(__windows_compiler_clang_base lang)
|
||||
set(_COMPILE_${lang} "${_COMPILE_${lang}_MSVC}")
|
||||
__windows_compiler_msvc(${lang})
|
||||
|
||||
# Prefer clang-cl's gcc-style depfile over cl-style /showIncludes
|
||||
set(CMAKE_DEPFILE_FLAGS_${lang} "-clang:-MD -clang:-MT<DEP_TARGET> -clang:-MF<DEP_FILE>")
|
||||
unset(CMAKE_${lang}_DEPFILE_FORMAT)
|
||||
|
||||
unset(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_DEBUG_INFORMATION_FORMAT_EditAndContinue) # -ZI not supported by Clang
|
||||
set(CMAKE_${lang}_COMPILE_OPTIONS_WARNING_AS_ERROR "-WX")
|
||||
set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-imsvc")
|
||||
|
||||
Reference in New Issue
Block a user