#! /bin/sh
#
# Copyright (c) 1994,1995 Berkeley Software Design, Inc. All rights reserved.
# The Berkeley Software Design Inc. software License Agreement specifies
# the terms and conditions for redistribution.
#
#	BSDI mkshlib,v 2.4 1995/11/28 19:51:19 donn Exp
#

PATH=/bin:/sbin:/usr/bin:/usr/sbin

#
# Build the standard shared libraries,
# as defined in the shlib.map file.
#

SHLIB_MAP="${SHLIB_MAP:-/usr/lib/shlib.map}"

while [ $# -gt 0 ]
do
	case "$1" in
	-m*)
		shift
		SHLIB_MAP="$1"
		;;
	*)
		break
		;;
	esac
	shift
done

case "$SHLIB_MAP" in
*/*)
	;;
*)
	SHLIB_MAP="/usr/lib/shlib.map.$SHLIB_MAP"
	;;
esac

# POSIX.1 says backslash parsing (-e in ash) is default
while read -e HANDLE TADDR DADDR SOURCE SHLIB LINKS
do
	# skip blank lines and comments (lines beginning with "#")
	case "$HANDLE" in ""|\#*) continue;; esac

	LIB=`dirname $SOURCE`
	STUB=$LIB/`basename $SHLIB`.a
	BASE=`basename $SOURCE .a`

	if [ $# -gt 0 ]
	then
		FOUND=no
		for f in "$@"
		do
			if [ "X$HANDLE" = "X$f" -o "X$HANDLE" = "X-l$f" -o \
			     "X$SOURCE" = "X$f" -o "X$SHLIB" = "X$f" -o \
			     "X$STUB" = "X$f" ]
			then
				FOUND=yes
				break
			fi
		done
		if [ $FOUND = no ]; then continue; fi
	fi

	if [ ! -r $SOURCE ]
	then
		echo mkshlib: $SOURCE missing or unreadable
		continue
	fi

	CMD=/usr/sbin/shlib

	if [ -f $LIB/$BASE.const ]
	then
		CMD="$CMD -c $LIB/$BASE.const"
	fi
	if [ -f $LIB/$BASE.except ]
	then
		CMD="$CMD -e $LIB/$BASE.except"
	fi
	if [ -f $SHLIB ]
	then
		CMD="$CMD -i $SHLIB"
	fi
	if [ -f $LIB/loader.$BASE.c ]
	then
		CMD="$CMD -b $LIB/loader.$BASE.c"
	fi

	echo Converting $SOURCE to $SHLIB at -t 0x$TADDR -d 0x$DADDR
	eval $CMD -m "$SHLIB_MAP" -t $TADDR -d $DADDR -s $STUB -n $SHLIB \
	    $LINKS $SOURCE

done < "$SHLIB_MAP"

exit 0
