aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitrii Meshkov <demansong@gmail.com>2023-11-02 14:47:14 +0300
committerdemansong <demansong@gmail.com>2023-11-03 11:46:42 +0000
commite89f504db24796e934cdbf9a7ecc0bbd89347191 (patch)
tree206002396fa2fdcf43225d2cad63dfd440f8587b
parentd99256dd79460628aafb5fa34a8dde7761ff7b1c (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.js18
-rw-r--r--share/qbs/modules/cpp/windows-clang-cl.qbs2
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() {