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