#!/usr/local/bin/bash

function usage
{
	retval="$1"
	(
	 	echo "Usage: $0 dstlib srclib1 srclib2 ... srclibn"
		echo "dstlib is a library to have all srclibx's merged into"
	) 1>&2
	exit "$retval"
}

if [ "$#" -ge 1 ] && [ "$1" = "-h" ]
then
	usage 0
fi

if [ "$#" = 0 ]
then
	usage 1
fi
	
dstlib="$1"
shift
srclibs="$@"

curdir="$(pwd)"

function make_absolute
{
	case "$1" in
		./*)
			echo "$curdir/$(echo $1 | sed 's#\./##')"
			;;
		/*)
			echo "$1"
			;;
		*)
			echo "$curdir/$1"
			;;
	esac

}

dstlib="$(make_absolute $dstlib)"

echo "Destination library is $dstlib"
echo "Source libraries are $srclibs"

#set -x

TMPDIR="/tmp/merge-libs-`whoami`-$$"
for srclib in $srclibs
do
	echo "Source library is $srclib"
	srclib="$(make_absolute $srclib)"
	if ! mkdir "$TMPDIR"
	then
		echo Failed to create directory "$TMPDIR" 1>&2
		exit 1
	fi
	if ! cd "$TMPDIR"
	then
		echo Failed to chdir to directory "$TMPDIR" 1>&2
		exit 1
	fi
	for bits in 32 64
	do
		rm -f *
		if ! ar -X "$bits" x "$srclib"
		then
			echo "Extracting $bits bit objects from $srclib failed" 1>&2
			exit 1
		fi
		if ls | grep . > /dev/null
		then
			echo "$bits bit objects found in $srclib, adding to $dstlib"
			if ! ar -X "$bits" r "$dstlib" *
			then
				echo "Replacing (adding) $bits bit objects to $dstlib failed" 1>&2
				exit 1
			fi
		else
			echo "No $bits bit objects found in $srclib, continuing"
		fi
	done
done

# the cd makes the temporary directory un-busy, so that it can be
# removed
cd /tmp
rm -rf "$TMPDIR"

