summaryrefslogtreecommitdiff
path: root/configure
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2016-07-22 10:19:52 +0300
committerMartin Storsjö <martin@martin.st>2016-07-26 09:29:49 +0300
commit100fb0ddfda958da70f98feac81f924c02483789 (patch)
tree33e1260d694ca01a417b3cf11a9a59ca1251b4fd /configure
parent79fb0692992c74214c6cf8e81350fc93eeffc5ec (diff)
configure: Allow detecting and using LLVM lld-link as linker for windows
Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure12
1 files changed, 12 insertions, 0 deletions
diff --git a/configure b/configure
index a41c1e8f8e..c56ead757f 100755
--- a/configure
+++ b/configure
@@ -3262,6 +3262,18 @@ probe_cc(){
# -Qvec- -Qsimd- to prevent miscompilation, -GS for consistency
# with MSVC which enables it by default.
_cflags='-Qms0 -Qvec- -Qsimd- -GS'
+ elif $_cc -? 2>/dev/null | grep -q 'LLVM.*Linker'; then
+ # lld can emulate multiple different linkers; in ms link.exe mode,
+ # the -? parameter gives the help output which contains an identifyable
+ # string, while it gives an error in other modes.
+ _type=lld-link
+ # The link.exe mode doesn't have a switch for getting the version,
+ # but we can force it back to gnu mode and get the version from there.
+ _ident=$($_cc -flavor gnu --version)
+ _ld_o='-out:$@'
+ _flags_filter=msvc_flags
+ _ld_lib='lib%.a'
+ _ld_path='-libpath:'
elif $_cc --version 2>/dev/null | grep -q ^cparser; then
_type=cparser
_ident=$($_cc --version | head -n1)