diff options
author | Dmitrii Meshkov <demansong@gmail.com> | 2023-11-02 14:47:14 +0300 |
---|---|---|
committer | demansong <demansong@gmail.com> | 2023-11-03 11:46:42 +0000 |
commit | e89f504db24796e934cdbf9a7ecc0bbd89347191 (patch) | |
tree | 206002396fa2fdcf43225d2cad63dfd440f8587b | |
parent | d99256dd79460628aafb5fa34a8dde7761ff7b1c (diff) |
Handle systemIncludePaths correctly for clang-cl
"/imsvc" flag must be used for adding directory to system include
paths. It affects on suppressing warnings in headers such directories.
This flag can be found in [clang 4.0 user manual](https://releases.llvm.org/4.0.0/tools/clang/docs/UsersManual.html)
at leasst so it is ok to expect that this flag exists in any
user-supplied clang-cl compiler.
Change-Id: Ie08cac2ac02acfeceba4ff4c50043c925ce75168
Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
-rw-r--r-- | share/qbs/modules/cpp/msvc.js | 18 | ||||
-rw-r--r-- | share/qbs/modules/cpp/windows-clang-cl.qbs | 2 |
2 files changed, 12 insertions, 8 deletions
diff --git a/share/qbs/modules/cpp/msvc.js b/share/qbs/modules/cpp/msvc.js index 6127279fb..4136b23e3 100644 --- a/share/qbs/modules/cpp/msvc.js +++ b/share/qbs/modules/cpp/msvc.js @@ -249,14 +249,16 @@ function prepareCompiler(project, product, inputs, outputs, input, output, expli return input.cpp.includeFlag + FileInfo.toWindowsSeparators(path); })); - var includeFlag = input.cpp.includeFlag; - if (supportsExternalIncludesOption(input)) { - args.push("/experimental:external"); - var enforcesSlashW = - Utilities.versionCompare(input.cpp.compilerVersion, "19.29.30037") >= 0 - if (enforcesSlashW) - args.push("/external:W0") - includeFlag = input.cpp.systemIncludeFlag; + var includeFlag = input.qbs.toolchain.includes("clang-cl") ? input.cpp.systemIncludeFlag : input.cpp.includeFlag; + if (!input.qbs.toolchain.includes("clang-cl")) { + if (supportsExternalIncludesOption(input)) { + args.push("/experimental:external"); + var enforcesSlashW = + Utilities.versionCompare(input.cpp.compilerVersion, "19.29.30037") >= 0 + if (enforcesSlashW) + args.push("/external:W0") + includeFlag = input.cpp.systemIncludeFlag; + } } var systemIncludePaths = Cpp.collectSystemIncludePaths(input); args = args.concat([].uniqueConcat(systemIncludePaths).map(function(path) { diff --git a/share/qbs/modules/cpp/windows-clang-cl.qbs b/share/qbs/modules/cpp/windows-clang-cl.qbs index 32abb572a..9aa9d7395 100644 --- a/share/qbs/modules/cpp/windows-clang-cl.qbs +++ b/share/qbs/modules/cpp/windows-clang-cl.qbs @@ -85,6 +85,8 @@ MsvcBaseModule { linkerName: "lld-link.exe" linkerPath: FileInfo.joinPaths(toolchainInstallPath, linkerName) + systemIncludeFlag: "/imsvc" + validateFunc: { var baseFunc = base; return function() { |