musl/tools/ld.musl-clang.in
Shiz fb58545f8d add musl-clang, a wrapper for system clang installs
musl-clang allows the user to compile musl-powered programs using their
already existent clang install, without the need of a special cross compiler.
it achieves this by wrapping around both the system clang install and the
linker and passing them special flags to re-target musl at runtime.
it does only affect invocations done through the special musl-clang wrapper
script, so that the user setup remains fully intact otherwise.

the clang wrapper consists of the compiler frontend wrapper script,
musl-clang, and the linker wrapper script, ld.musl-clang.
musl-clang makes sure clang invokes ld.musl-clang to link objects; neither
script needs to be in PATH for the wrapper to work.
2015-07-06 23:52:16 +00:00

52 lines
1.0 KiB
Bash

#!/bin/sh
cc="@CC@"
libc_lib="@LIBDIR@"
ldso="@LDSO@"
cleared=
shared=
userlinkdir=
userlink=
for x ; do
test "$cleared" || set -- ; cleared=1
case "$x" in
-L-user-start)
userlinkdir=1
;;
-L-user-end)
userlinkdir=
;;
-L*)
test "$userlinkdir" && set -- "$@" "$x"
;;
-l-user-start)
userlink=1
;;
-l-user-end)
userlink=
;;
crtbegin*.o|crtend*.o)
set -- "$@" $($cc -print-file-name=$x)
;;
-lgcc|-lgcc_eh)
file=lib${x#-l}.a
set -- "$@" $($cc -print-file-name=$file)
;;
-l*)
test "$userlink" && set -- "$@" "$x"
;;
-shared)
shared=1
set -- "$@" -shared
;;
-sysroot=*|--sysroot=*)
;;
*)
set -- "$@" "$x"
;;
esac
done
exec $($cc -print-prog-name=ld) -nostdlib "$@" -lc -dynamic-linker "$ldso"