mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-07 22:30:13 -06:00
Merge topic 'iwyu-cl'
ccfe1b0b40 IWYU: Add `--driver-mode=cl` when applicable
Acked-by: Kitware Robot <kwrobot@kitware.com>
Acked-by: buildbot <buildbot@kitware.com>
Merge-request: !6511
This commit is contained in:
@@ -9,6 +9,7 @@ endif()
|
||||
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)
|
||||
|
||||
@@ -22,6 +22,7 @@ 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)
|
||||
|
||||
@@ -17,6 +17,7 @@ if("x${CMAKE_C_SIMULATE_ID}" 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 CMAKE_C_COMPILER_VERSION VERSION_LESS 16.0.0)
|
||||
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-Qstd=c11")
|
||||
|
||||
@@ -16,6 +16,7 @@ endif()
|
||||
if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
|
||||
|
||||
set(CMAKE_CXX_CLANG_TIDY_DRIVER_MODE "cl")
|
||||
set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE_DRIVER_MODE "cl")
|
||||
|
||||
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0.0)
|
||||
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-Qstd=c++20")
|
||||
|
||||
@@ -4,6 +4,7 @@ __compiler_intel_llvm(C)
|
||||
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)
|
||||
|
||||
@@ -4,6 +4,7 @@ __compiler_intel_llvm(CXX)
|
||||
if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
|
||||
set(CMAKE_CXX_COMPILE_OPTIONS_EXPLICIT_LANGUAGE -TP)
|
||||
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|WMake"
|
||||
AND CMAKE_DEPFILE_FLAGS_CXX)
|
||||
|
||||
@@ -29,6 +29,7 @@ endif()
|
||||
|
||||
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")
|
||||
|
||||
# There are no C compiler modes so we hard-code the known compiler supported
|
||||
# features. Override the default macro for this special case. Pretend that
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
include(Compiler/CMakeCommonCompilerMacros)
|
||||
|
||||
set(CMAKE_CXX_CLANG_TIDY_DRIVER_MODE "cl")
|
||||
set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE_DRIVER_MODE "cl")
|
||||
|
||||
if ((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 19.0.24215.1 AND
|
||||
CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.10) OR
|
||||
|
||||
@@ -999,7 +999,25 @@ void cmMakefileTargetGenerator::WriteObjectRuleFiles(
|
||||
}
|
||||
if (cmNonempty(iwyu)) {
|
||||
run_iwyu += " --iwyu=";
|
||||
run_iwyu += this->LocalGenerator->EscapeForShell(*iwyu);
|
||||
|
||||
// Only add --driver-mode if it is not already specified, as adding
|
||||
// it unconditionally might override a user-specified driver-mode
|
||||
if (iwyu.Get()->find("--driver-mode=") == std::string::npos) {
|
||||
cmProp p = this->Makefile->GetDefinition(
|
||||
cmStrCat("CMAKE_", lang, "_INCLUDE_WHAT_YOU_USE_DRIVER_MODE"));
|
||||
std::string driverMode;
|
||||
|
||||
if (cmNonempty(p)) {
|
||||
driverMode = *p;
|
||||
} else {
|
||||
driverMode = lang == "C" ? "gcc" : "g++";
|
||||
}
|
||||
|
||||
run_iwyu += this->LocalGenerator->EscapeForShell(
|
||||
cmStrCat(*iwyu, ";--driver-mode=", driverMode));
|
||||
} else {
|
||||
run_iwyu += this->LocalGenerator->EscapeForShell(*iwyu);
|
||||
}
|
||||
}
|
||||
if (cmNonempty(tidy)) {
|
||||
run_iwyu += " --tidy=";
|
||||
|
||||
@@ -877,8 +877,26 @@ void cmNinjaTargetGenerator::WriteCompileRule(const std::string& lang,
|
||||
compilerLauncher.clear();
|
||||
}
|
||||
if (cmNonempty(iwyu)) {
|
||||
run_iwyu += cmStrCat(" --iwyu=",
|
||||
this->GetLocalGenerator()->EscapeForShell(*iwyu));
|
||||
run_iwyu += " --iwyu=";
|
||||
|
||||
// Only add --driver-mode if it is not already specified, as adding
|
||||
// it unconditionally might override a user-specified driver-mode
|
||||
if (iwyu.Get()->find("--driver-mode=") == std::string::npos) {
|
||||
cmProp p = this->Makefile->GetDefinition(
|
||||
cmStrCat("CMAKE_", lang, "_INCLUDE_WHAT_YOU_USE_DRIVER_MODE"));
|
||||
std::string driverMode;
|
||||
|
||||
if (cmNonempty(p)) {
|
||||
driverMode = *p;
|
||||
} else {
|
||||
driverMode = lang == "C" ? "gcc" : "g++";
|
||||
}
|
||||
|
||||
run_iwyu += this->LocalGenerator->EscapeForShell(
|
||||
cmStrCat(*iwyu, ";--driver-mode=", driverMode));
|
||||
} else {
|
||||
run_iwyu += this->LocalGenerator->EscapeForShell(*iwyu);
|
||||
}
|
||||
}
|
||||
if (cmNonempty(tidy)) {
|
||||
run_iwyu += " --tidy=";
|
||||
|
||||
Reference in New Issue
Block a user