Skip to content

Commit 655655e

Browse files
authored
Fix ld64 detect (#436)
1 parent c7fb1b8 commit 655655e

File tree

2 files changed

+49
-5
lines changed

2 files changed

+49
-5
lines changed
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure
2+
index 3f91d7153..abe78a50c 100755
3+
--- a/build/moz.configure/toolchain.configure
4+
+++ b/build/moz.configure/toolchain.configure
5+
@@ -1752,10 +1752,9 @@ def select_linker_tmpl(host_or_target):
6+
die("Unsupported linker " + linker)
7+
8+
# Check the kind of linker
9+
- version_check = ["-Wl,--version"]
10+
cmd_base = c_compiler.wrapper + [c_compiler.compiler] + c_compiler.flags
11+
12+
- def try_linker(linker):
13+
+ def try_linker(linker, version_check="-Wl,--version"):
14+
# Generate the compiler flag
15+
if linker == "ld64":
16+
linker_flag = ["-fuse-ld=ld"]
17+
@@ -1763,7 +1762,7 @@ def select_linker_tmpl(host_or_target):
18+
linker_flag = ["-fuse-ld=" + linker]
19+
else:
20+
linker_flag = []
21+
- cmd = cmd_base + linker_flag + version_check
22+
+ cmd = cmd_base + linker_flag + [version_check]
23+
if toolchain_flags:
24+
cmd += toolchain_flags
25+
26+
@@ -1779,11 +1778,14 @@ def select_linker_tmpl(host_or_target):
27+
# ensure consistent output.
28+
env["LC_ALL"] = "C"
29+
retcode, stdout, stderr = get_cmd_output(*cmd, env=env)
30+
- if retcode == 1 and "Logging ld64 options" in stderr:
31+
+ if retcode == 1 and ("Logging ld64 options" in stderr or "PROGRAM:ld PROJECT:dyld" in stderr):
32+
kind = "ld64"
33+
34+
elif retcode != 0:
35+
- return None
36+
+ if version_check == "-Wl,--version":
37+
+ return try_linker(linker, "-Wl,-v")
38+
+ else:
39+
+ return None
40+
41+
elif "mold" in stdout:
42+
kind = "mold"

mozjs-sys/mozjs/build/moz.configure/toolchain.configure

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1752,18 +1752,17 @@ def select_linker_tmpl(host_or_target):
17521752
die("Unsupported linker " + linker)
17531753

17541754
# Check the kind of linker
1755-
version_check = ["-Wl,--version"]
17561755
cmd_base = c_compiler.wrapper + [c_compiler.compiler] + c_compiler.flags
17571756

1758-
def try_linker(linker):
1757+
def try_linker(linker, version_check="-Wl,--version"):
17591758
# Generate the compiler flag
17601759
if linker == "ld64":
17611760
linker_flag = ["-fuse-ld=ld"]
17621761
elif linker:
17631762
linker_flag = ["-fuse-ld=" + linker]
17641763
else:
17651764
linker_flag = []
1766-
cmd = cmd_base + linker_flag + version_check
1765+
cmd = cmd_base + linker_flag + [version_check]
17671766
if toolchain_flags:
17681767
cmd += toolchain_flags
17691768

@@ -1779,11 +1778,14 @@ def select_linker_tmpl(host_or_target):
17791778
# ensure consistent output.
17801779
env["LC_ALL"] = "C"
17811780
retcode, stdout, stderr = get_cmd_output(*cmd, env=env)
1782-
if retcode == 1 and "Logging ld64 options" in stderr:
1781+
if retcode == 1 and ("Logging ld64 options" in stderr or "PROGRAM:ld PROJECT:dyld" in stderr):
17831782
kind = "ld64"
17841783

17851784
elif retcode != 0:
1786-
return None
1785+
if version_check == "-Wl,--version":
1786+
return try_linker(linker, "-Wl,-v")
1787+
else:
1788+
return None
17871789

17881790
elif "mold" in stdout:
17891791
kind = "mold"

0 commit comments

Comments
 (0)