#!/bin/sh
libc_lib="/usr/local/musl/lib"
cleared=
shared=
crt=
userlinkdir=
userlink=

for i; do
        # safe to clear arguments now that we're iterating over them,
        # and rebuild them below
        [ "${cleared}" ] || set -- ; cleared=1

        case "$i" in
                -L-user-start)
                        userlinkdir=1
                        [ "${shared}" ] || set -- "$@" "${libc_lib}/Scrt1.o" "${libc_lib}/crti.o"
                        ;;
                -L-user-end)
                        userlinkdir=
                        ;;
                -L*)
                        [ "${userlinkdir}" ] && set -- "$@" "$i"
                        ;;
                -l-user-start)
                        userlink=1
                        ;;
                -l-user-end)
                        userlink=
                        ;;
                -l*)
                        [ "${crt}" -o "${shared}" ] || set -- "$@" "${libc_lib}/crtn.o"; crt=1
                        [ "${userlink}" ] && set -- "$@" "$i"
                        ;;
                -shared)
                        shared=1
                        set -- "$@" -shared
                        ;;
                *)
                        set -- "$@" "$i"
                        ;;
        esac
done

exec ld "$@"