#!/bin/sh

libsl=""

doautolib=1
verbose=0

if [ "x$1" = "x-l" ]
then
	shift
	doautolib=0
elif [ "x$1" = "x-v" ]
then
	shift
	verbose=1
fi

if [ $doautolib = 1 ]
then
	ofiles=""
	for i
	do
		case "$i" in
		[^-]*.o)
			ofiles="$ofiles $i"
			;;
		esac
	done
	
	# echo "ofiles $ofiles"
	autolibs=""
	if [ "x$ofiles" != "x" ]
	then
		autolibs=`
			nm $ofiles |
			grep '__p9l_autolib_[a-zA-Z0-9+-]*$' |
			sed 's/.* __p9l_autolib_//' |
			sort -u
		`
	fi
	# echo "autolibs $autolibs"
	
	libsl=""
	special="mp draw 9pclient mux thread bio"	# order matters
	for i in $special
	do
		eval "need$i=0"
	done
	
	for i in $autolibs
	do
		case "$i" in
		9pclient)
			need9pclient=1
			needmux=1
			needthread=1
			;;
		bio)
			needbio=1
			;;
		draw)
			needdraw=1
			;;
		mp)
			needmp=1
			;;
		mux)
			needmux=1
			needthread=1
			;;
		plumb)
			need9pclient=1
			needmux=1
			needthread=1
			libsl="$libsl -lplumb"
			;;
		sec)
			needmp=1
			libsl="$libsl -lsec"
			;;
		thread)
			needthread=1
			;;
		venti)
			libsl="$libsl -lventi"
			needthread=1
			;;
		*)
			libsl="$libsl -l$i"
			;;
		esac
	done
	
	for i in $special
	do
		if eval "[ \$need$i = 1 ]"
		then
			libsl="$libsl -l$i"
		fi
	done
	libsl="$libsl -l9"
	
	if [ $needdraw = 1 ]
	then
		if [ "x$X11" = "x" ]
		then
			X11=/usr/X11R6
		fi
		libsl="$libsl -L$X11/lib -lX11"
	fi
fi

extralibs="-lm"
tag="${SYSNAME:-`uname`}-${OBJTYPE:-`uname -m`}"
case "$tag" in
*OpenBSD*)	ld=gcc
		extralibs="$extralibs -lutil -lpthread"
		;;
*BSD*)		ld=gcc
		extralibs="$extralibs -lutil"
		;;
*Linux*)	ld=gcc
		extralibs="$extralibs -lutil"
		case "`uname -r`" in
		2.6.*)
			extralibs="$extralibs -lpthread"
			;;
		esac
		;;
*Darwin*)	ld=gcc ;;
*SunOS*)	ld="${CC9:-cc} -g"
		extralibs="$extralibs -lrt -lpthread -lsocket -lnsl"
		# Record paths to shared libraries to avoid needing LD_LIBRARY_PATH 
		for i in "$@"
		do
			case "$i" in
			-L*)
				s=`echo $i | sed 's/-L/-R/'`
				extralibs="$extralibs $s"
				;;
			esac
		done
		;;
*)
	echo do not know how to link on "$tag" 1>&2
	exit 1
esac

if [ $verbose = 1 ]
then
	echo $ld -L$PLAN9/lib "$@" $libsl $extralibs
fi
exec $ld -L$PLAN9/lib "$@" $libsl $extralibs