#!/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 |