aboutsummaryrefslogtreecommitdiffstats
path: root/share/qbs/modules/cpp/gcc.js
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@qt.io>2017-03-21 12:25:52 -0700
committerJake Petroules <jake.petroules@qt.io>2017-03-22 20:07:57 +0000
commit6ca71e5b61c5b1e4ec4c931665a2f3f34709cc23 (patch)
tree0f94d290ac2d0b6354cea7062ff10e813c370c2e /share/qbs/modules/cpp/gcc.js
parent53457970d7555307cb79f1c85fc0e3dccad45a03 (diff)
Introduce cpp.target[Assembler,Driver,Linker]Flags
These are internal properties that deduplicates architecture/vendor/system/abi related flags between the compiler invocation and compiler probe, and reduces tight coupling between gcc.js, GccProbe, and the individual cpp toolchain modules. Change-Id: I7ea57ea1dd4c5eb42fc8983e4c9c45aa01284521 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'share/qbs/modules/cpp/gcc.js')
-rw-r--r--share/qbs/modules/cpp/gcc.js60
1 files changed, 6 insertions, 54 deletions
diff --git a/share/qbs/modules/cpp/gcc.js b/share/qbs/modules/cpp/gcc.js
index 409b6eebe..178541cde 100644
--- a/share/qbs/modules/cpp/gcc.js
+++ b/share/qbs/modules/cpp/gcc.js
@@ -242,12 +242,9 @@ function linkerFlags(project, product, inputs, output) {
["--as-needed"]));
}
- var minimumDarwinVersion = product.cpp.minimumDarwinVersion;
- if (minimumDarwinVersion) {
- var flag = product.cpp.minimumDarwinVersionLinkerFlag;
- if (flag)
- args = args.concat(escapeLinkerFlags(product, inputs, [flag, minimumDarwinVersion]));
- }
+ var targetLinkerFlags = product.cpp.targetLinkerFlags;
+ if (targetLinkerFlags)
+ args = args.concat(escapeLinkerFlags(product, inputs, targetLinkerFlags));
var sysroot = product.cpp.sysroot;
if (sysroot) {
@@ -391,40 +388,12 @@ function linkerFlags(project, product, inputs, output) {
// for compiler AND linker
function configFlags(config, isDriver) {
- if (isDriver === undefined)
- isDriver = true;
-
var args = [];
- if (isDriver) {
+ if (isDriver !== false) {
args = args.concat(config.cpp.platformDriverFlags);
args = args.concat(config.cpp.driverFlags);
- }
-
- if (haveTargetOption(config) && isDriver) {
- args.push("-target", config.cpp.target);
- } else {
- var arch = config.cpp.targetArch;
- if (config.qbs.targetOS.contains("darwin"))
- args.push("-arch", arch);
-
- if (isDriver) {
- if (arch === 'x86_64')
- args.push('-m64');
- else if (arch === 'i386')
- args.push('-m32');
-
- var march = config.cpp.machineType;
- if (march)
- args.push("-march=" + march);
-
- var minimumDarwinVersion = config.cpp.minimumDarwinVersion;
- if (minimumDarwinVersion) {
- var flag = config.cpp.minimumDarwinVersionCompilerFlag;
- if (flag)
- args.push(flag + "=" + minimumDarwinVersion);
- }
- }
+ args = args.concat(config.cpp.targetDriverFlags);
}
var frameworkPaths = config.cpp.frameworkPaths;
@@ -676,16 +645,6 @@ function compilerFlags(project, product, input, output) {
return args;
}
-function haveTargetOption(product) {
- var toolchain = product.qbs.toolchain;
- var major = product.cpp.compilerVersionMajor;
- var minor = product.cpp.compilerVersionMinor;
-
- // Apple Clang 3.1 (shipped with Xcode 4.3) just happened to also correspond to LLVM 3.1,
- // so no special version check is needed for Apple
- return toolchain.contains("clang") && (major > 3 || (major === 3 && minor >= 1));
-}
-
function additionalCompilerAndLinkerFlags(product) {
var args = []
@@ -720,14 +679,7 @@ function prepareAssembler(project, product, inputs, outputs, input, output) {
var systemIncludePaths = input.cpp.systemIncludePaths;
var distributionIncludePaths = input.cpp.distributionIncludePaths;
- var args = [];
- var arch = product.cpp.targetArch;
- if (product.qbs.targetOS.contains("darwin"))
- args.push("-arch", arch);
- else if (arch === 'x86_64')
- args.push('--64');
- else if (arch === 'i386')
- args.push('--32');
+ var args = product.cpp.targetAssemblerFlags;
if (input.cpp.debugInformation)
args.push('-g');