#!/bin/sh

debug=false

try() {
    added="$1"
    shift
    $debug && echo "Trying: $* $added"
    "$@" $added 2>busybox_ld.err
}

# Sanitize lib list (dups, extra spaces etc)
#echo "BBOX_LIB_LIST=$BBOX_LIB_LIST"
BBOX_LIB_LIST=`echo "$BBOX_LIB_LIST" | xargs -n1 | sort | uniq | xargs`

# First link with all libs. If it fails, bail out
echo "Trying libraries: $BBOX_LIB_LIST"
l_list=`echo "$BBOX_LIB_LIST" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'`
test "x$l_list" != "x" && l_list="-Wl,--start-group $l_list -Wl,--end-group"
try "$l_list" "$@" \
|| {
    echo "Failed: $* -Wl,--start-group $l_list -Wl,--end-group"
    cat busybox_ld.err
    exit 1
}

# Now try to remove each lib and build without it.
# Stop when no lib can be removed.
while test "$BBOX_LIB_LIST"; do
    $debug && echo "Trying libraries: $BBOX_LIB_LIST"
    all_needed=true
    for one in $BBOX_LIB_LIST; do
	without_one=`echo " $BBOX_LIB_LIST " | sed "s/ $one / /g" | xargs`
	l_list=`echo "$without_one" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'`
	test "x$l_list" != "x" && l_list="-Wl,--start-group $l_list -Wl,--end-group"
	$debug && echo "Trying -l options: '$l_list'"
	if try "$l_list" "$@"; then
		echo "Library $one is not needed"
		BBOX_LIB_LIST="$without_one"
		all_needed=false
	else
		echo "Library $one is needed"
	fi
    done
    # All libs were needed, can't remove any
    $all_needed && break
    # If there is no space char, the list has just one lib.
    # I'm not sure that in this case lib really is 100% needed.
    # Let's try linking without it anyway... thus commented out.
    #{ echo "$BBOX_LIB_LIST" | grep -q ' '; } || break
done

# Make the binary with final, minimal list of libs
echo "Final link with: $BBOX_LIB_LIST"
l_list=`echo "$BBOX_LIB_LIST" | sed -e 's/ / -l/g' -e 's/^/-l/' -e 's/^-l$//'`
test "x$l_list" != "x" && l_list="-Wl,--start-group $l_list -Wl,--end-group -Wl,--verbose"
# --verbose gives us gobs of info to stdout (e.g. linker script used)
if ! test -f busybox_ldscript; then
    try "$l_list -Wl,--verbose" "$@" >busybox_ld.out
else
    echo "Custom linker script 'busybox_ldscript' found, using it"
    # Add SORT_BY_ALIGNMENT to linker script (found in busybox_ld.out):
    #  .rodata         : { *(.rodata SORT_BY_ALIGNMENT(.rodata.*) .gnu.linkonce.r.*) }
    #  *(.data SORT_BY_ALIGNMENT(.data.*) .gnu.linkonce.d.*)
    #  *(.bss SORT_BY_ALIGNMENT(.bss.*) .gnu.linkonce.b.*)
    # This will eliminate most of the data padding (~3kb).
    try "$l_list -Wl,--verbose -Wl,-T -Wl,busybox_ldscript" "$@" >busybox_ld.out
fi
