diff options
author | Jake Petroules <jake.petroules@qt.io> | 2017-05-09 17:06:18 -0700 |
---|---|---|
committer | Jake Petroules <jake.petroules@qt.io> | 2017-08-11 16:07:45 +0000 |
commit | d0404591b1d0c6ef4e040f578d8c56b3001abb3e (patch) | |
tree | 0051337c66eca0fe152e3f1e76e9da0247f2a861 /share/qbs/imports/qbs/Probes/MsvcProbe.qbs | |
parent | ed99a39fd9bb38163d81cef5011f7bb4401a9eef (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.qbs | 23 |
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"]; |