52 lines
1.2 KiB
Bash
52 lines
1.2 KiB
Bash
#!@bash@
|
|
|
|
if [ 1 = "$#" ] && [ "x-v" = "x$1" ]; then
|
|
# HACK! should not pass -Wl if there are no input files, otherwise libtool breaks
|
|
exec -a "@origname@" @gcc@ -v
|
|
fi
|
|
|
|
# logic based on pkgs/build-support/bintools-wrapper/ld-wrapper.sh
|
|
# very hacky
|
|
extraRpath=""
|
|
prev=""
|
|
for param in "$@"; do
|
|
case "$prev" in
|
|
-L | -B)
|
|
case "$param" in
|
|
"$NIX_STORE"/*)
|
|
extraRpath="$extraRpath -Wl,-rpath,${param}"
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
case "$param" in
|
|
-L"$NIX_STORE"/* | -B"$NIX_STORE"/*)
|
|
extraRpath="$extraRpath -Wl,-rpath,${param:2}"
|
|
;;
|
|
"$NIX_STORE"/*.so | "$NIX_STORE"/*.so.*)
|
|
extraRpath="$extraRpath -Wl,-rpath,${param%/*}"
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
prev="$param"
|
|
done
|
|
|
|
# Order of -B is very particular. musl detection in gnulib requires that
|
|
# libc/.. comes before libgcc, otherwise libc is assumed to be glibc.
|
|
exec -a "@origname@" @gcc@ -Wl,-dynamic-linker=@dynlinker@ \
|
|
@extraflags@ \
|
|
$extraRpath \
|
|
-Wl,-rpath,@libc@,-rpath,@libgcc@ \
|
|
-B@libc@/.. \
|
|
-B@libgcc@ \
|
|
-B@libc@ \
|
|
-B@origdir@ \
|
|
-B@binutils@ \
|
|
-isystem @gccinc@ \
|
|
"$@"
|