diff options
author | Jake Petroules <jake.petroules@qt.io> | 2017-03-21 12:25:52 -0700 |
---|---|---|
committer | Jake Petroules <jake.petroules@qt.io> | 2017-03-22 20:07:57 +0000 |
commit | 6ca71e5b61c5b1e4ec4c931665a2f3f34709cc23 (patch) | |
tree | 0f94d290ac2d0b6354cea7062ff10e813c370c2e /share/qbs/modules/cpp/gcc.js | |
parent | 53457970d7555307cb79f1c85fc0e3dccad45a03 (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.js | 60 |
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'); |