summaryrefslogtreecommitdiffstats
path: root/build/cargo-linker
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xbuild/cargo-linker22
-rw-r--r--build/cargo-linker.bat3
2 files changed, 25 insertions, 0 deletions
diff --git a/build/cargo-linker b/build/cargo-linker
new file mode 100755
index 0000000000..394dabcf7f
--- /dev/null
+++ b/build/cargo-linker
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# If you want to use a custom linker with Cargo, Cargo requires that you
+# specify it in Cargo.toml or via the matching environment variable.
+# Passing extra options to the linker is possible with Cargo via
+# RUSTFLAGS='-C link-args', but testing showed that doing this reliably
+# was difficult.
+#
+# Our solution to these problems is to use this wrapper script. We pass
+# in the LD and the LDFLAGS to use via environment variables. Note that
+# we do *not* quote either MOZ_CARGO_WRAP variable:
+#
+# * MOZ_CARGO_WRAP_LD is equivalent to CC on Unix-y platforms, and CC
+# frequently has additional arguments in addition to the compiler
+# itself.
+# * MOZ_CARGO_WRAP_LDFLAGS contains space-separated arguments to pass,
+# and not quoting it ensures that each of those arguments is passed
+# as a separate argument to the actual LD.
+#
+# $@ is doubly quoted for the eval. See bug 1418598.
+
+eval ${MOZ_CARGO_WRAP_LD} ${MOZ_CARGO_WRAP_LDFLAGS} '"$@"'
diff --git a/build/cargo-linker.bat b/build/cargo-linker.bat
new file mode 100644
index 0000000000..ccde26c8ef
--- /dev/null
+++ b/build/cargo-linker.bat
@@ -0,0 +1,3 @@
+@echo off
+REM See comment in cargo-linker (without extension)
+%MOZ_CARGO_WRAP_LD% %MOZ_CARGO_WRAP_LDFLAGS% %*