diff options
author | Michal Klocek <michal.klocek@qt.io> | 2019-01-17 15:39:32 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2019-02-06 22:11:22 +0000 |
commit | 7910dd0a548cdd9e7c5716d4f6704b3185fa34fb (patch) | |
tree | ebed8bfe3f4a187e3dbb8d42dc47ba01ff05d921 /configure.json | |
parent | 5133e22ae200eb3c5169340a16b419c9fce747cb (diff) |
Add llvm linker detection to configure
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg01240.html
This is currently only used for webengine, where link time really matters.
New configure options:
* force 'lld' '-linker lld' or' --linker=lld'
* force 'gold' '-linker gold' or '--linker=gold'
* force 'bfd' '-linker bfd' or '--linker=bfd'
Note before by default gold was always forced (if supported) now default linker
is system default one.
[ChangeLog][Tools][configure & build system] Added --linker=[bfg,lld,gold] configure flag.
Change-Id: Idaa13510da70243c6176b96db846d629cd65c7af
Reviewed-by: Kai Koehne <kai.koehne@qt.io>
Diffstat (limited to 'configure.json')
-rw-r--r-- | configure.json | 49 |
1 files changed, 44 insertions, 5 deletions
diff --git a/configure.json b/configure.json index f1a414fbf9..4a9e1fc24e 100644 --- a/configure.json +++ b/configure.json @@ -90,6 +90,7 @@ "headersclean": "boolean", "incredibuild-xge": { "type": "boolean", "name": "incredibuild_xge" }, "libudev": "boolean", + "linker": { "type": "optionalString", "values": [ "bfd", "gold", "lld" ] }, "ltcg": "boolean", "make": { "type": "addString", "values": [ "examples", "libs", "tests", "tools" ] }, "make-tool": "string", @@ -131,7 +132,7 @@ "syncqt": "boolean", "sysroot": "string", "testcocoon": "boolean", - "use-gold-linker": { "type": "boolean", "name": "use_gold_linker" }, + "use-gold-linker": { "type": "boolean", "name": "use_gold_linker_alias" }, "warnings-are-errors": { "type": "boolean", "name": "warnings_are_errors" }, "Werror": { "type": "boolean", "name": "warnings_are_errors" }, "widgets": "boolean", @@ -224,8 +225,8 @@ }, "testTypeDependencies": { - "linkerSupportsFlag": [ "use_gold_linker" ], - "verifySpec": [ "shared", "use_gold_linker", "compiler-flags", "qmakeargs", "commit" ], + "linkerSupportsFlag": [ "use_bfd_linker", "use_gold_linker", "use_lld_linker" ], + "verifySpec": [ "shared", "use_bfd_linker", "use_gold_linker", "use_lld_linker", "compiler-flags", "qmakeargs", "commit" ], "compile": [ "verifyspec" ], "detectPkgConfig": [ "cross_compile", "machineTuple" ], "library": [ "pkg-config", "compiler-flags" ], @@ -357,11 +358,21 @@ ] } }, + "use_bfd_linker": { + "label": "bfd linker", + "type": "compilerSupportsFlag", + "flag": "-fuse-ld=bfd" + }, "use_gold_linker": { "label": "gold linker", "type": "compilerSupportsFlag", "flag": "-fuse-ld=gold" }, + "use_lld_linker" : { + "label": "lld linker", + "type": "compilerSupportsFlag", + "flag": "-fuse-ld=lld" + }, "optimize_debug": { "label": "-Og support", "type": "compilerSupportsFlag", @@ -649,11 +660,34 @@ "output": [ "qmakeArgs" ], "condition": "input.qmakeArgs != ''" }, + "use_bfd_linker": { + "label": "bfd", + "autoDetect": "false", + "enable" : "input.linker == 'bfd'", + "disable" : "input.linker == 'gold' || input.linker == 'lld'", + "condition": "!config.win32 && !config.integrity && !config.wasm && tests.use_bfd_linker", + "output": [ "privateConfig", "useBFDLinker" ] + }, + "use_gold_linker_alias": { + "autoDetect": "false", + "condition": "!config.win32 && !config.integrity && !config.wasm && tests.use_gold_linker" + }, "use_gold_linker": { - "label": "Using gold linker", + "label": "gold", + "autoDetect": "false", + "enable" : "input.linker == 'gold' || features.use_gold_linker_alias" , + "disable" : "input.linker == 'bfd' || input.linker == 'lld'", "condition": "!config.win32 && !config.integrity && !config.wasm && tests.use_gold_linker", "output": [ "privateConfig", "useGoldLinker" ] }, + "use_lld_linker": { + "label": "lld", + "autoDetect": "false", + "enable" : "input.linker == 'lld'", + "disable" : "input.linker == 'bfd' || input.linker == 'gold'", + "condition": "!config.win32 && !config.integrity && !config.wasm && tests.use_lld_linker", + "output": [ "privateConfig", "useLLDLinker" ] + }, "optimize_debug": { "label": "Optimize debug build", "condition": "!config.msvc && !config.clang && (features.debug || features.debug_and_release) && tests.optimize_debug", @@ -1386,7 +1420,12 @@ Configure with '-qreal float' to create a build that is binary-compatible with 5 "args": "ccache", "condition": "config.unix" }, - "use_gold_linker", + { + "message": "Linker", + "type": "firstAvailableFeature", + "args": "use_bfd_linker use_gold_linker use_lld_linker", + "condition": "features.use_bfd_linker || features.use_gold_linker || features.use_lld_linker" + }, { "type": "feature", "args": "enable_new_dtags", |