Files
2026-06-16 18:35:34 +03:00

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@ \
"$@"