aboutsummaryrefslogtreecommitdiffstats
path: root/share/qbs/imports/qbs/Probes/MsvcProbe.qbs
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@qt.io>2017-05-09 17:06:18 -0700
committerJake Petroules <jake.petroules@qt.io>2017-08-11 16:07:45 +0000
commitd0404591b1d0c6ef4e040f578d8c56b3001abb3e (patch)
tree0051337c66eca0fe152e3f1e76e9da0247f2a861 /share/qbs/imports/qbs/Probes/MsvcProbe.qbs
parented99a39fd9bb38163d81cef5011f7bb4401a9eef (diff)
Automatically determine built-in compiler defines
This provides users with access to the full list of macros defined by the MSVC, GCC, Clang, or MinGW compiler in use. Change-Id: I6e7f6841bbc18aed13958724b268283d97b17320 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'share/qbs/imports/qbs/Probes/MsvcProbe.qbs')
-rw-r--r--share/qbs/imports/qbs/Probes/MsvcProbe.qbs23
1 files changed, 20 insertions, 3 deletions
diff --git a/share/qbs/imports/qbs/Probes/MsvcProbe.qbs b/share/qbs/imports/qbs/Probes/MsvcProbe.qbs
index d62a9e1ea..1ee2b8159 100644
--- a/share/qbs/imports/qbs/Probes/MsvcProbe.qbs
+++ b/share/qbs/imports/qbs/Probes/MsvcProbe.qbs
@@ -37,6 +37,7 @@ import qbs.Utilities
PathProbe {
// Inputs
property string compilerFilePath
+ property stringList enableDefinesByLanguage
property string preferredArchitecture
// Outputs
@@ -46,12 +47,28 @@ PathProbe {
property int versionPatch
property stringList includePaths
property var buildEnv
+ property var compilerDefinesByLanguage
configure: {
- var info = Utilities.msvcCompilerInfo(compilerFilePath);
- found = !!info && !!info.macros && !!info.buildEnvironment;
+ var languages = enableDefinesByLanguage;
+ if (!languages || languages.length === 0)
+ languages = ["c"];
- var macros = info.macros;
+ var info = languages.contains("c")
+ ? Utilities.msvcCompilerInfo(compilerFilePath, "c") : {};
+ var infoCpp = languages.contains("cpp")
+ ? Utilities.msvcCompilerInfo(compilerFilePath, "cpp") : {};
+ found = (!languages.contains("c") ||
+ (!!info && !!info.macros && !!info.buildEnvironment))
+ && (!languages.contains("cpp") ||
+ (!!infoCpp && !!infoCpp.macros && !!infoCpp.buildEnvironment));
+
+ compilerDefinesByLanguage = {
+ "c": info.macros,
+ "cpp": infoCpp.macros,
+ };
+
+ var macros = info.macros || infoCpp.macros;
architecture = ModUtils.guessArchitecture(macros);
var ver = macros["_MSC_FULL_VER"];