aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2005-01-04 21:13:58 +0000
committerrsc <devnull@localhost>2005-01-04 21:13:58 +0000
commitead3e31153b4258073dd16f990e0bc1842646562 (patch)
tree1ccebd6d8b4e60166304135573c4f69ab36123b8 /bin
parente9a569a96aa4b4b4f18a6d8ade511ee7812c30a6 (diff)
downloadplan9port-ead3e31153b4258073dd16f990e0bc1842646562.tar.gz
plan9port-ead3e31153b4258073dd16f990e0bc1842646562.tar.bz2
plan9port-ead3e31153b4258073dd16f990e0bc1842646562.zip
9c: ignore autolib symbols
9l: use autolib symbols
Diffstat (limited to 'bin')
-rwxr-xr-xbin/9c16
-rwxr-xr-xbin/9l116
2 files changed, 127 insertions, 5 deletions
diff --git a/bin/9c b/bin/9c
index cc6ec8ed..cbd67ce9 100755
--- a/bin/9c
+++ b/bin/9c
@@ -27,7 +27,7 @@ case "$tag" in
cflags="$ngflags -g3 -no-cpp-precomp" ;;
*HP-UX*) cc=cc; cflags="-g -O -c -Ae" ;;
*Linux*) usegcc
- case "`uname -r`" in
+ case "${SYSVERSION:-`uname -r`}" in
2.6.*)
cflags="$cflags -D__Linux26__"
;;
@@ -53,12 +53,20 @@ case "$tag" in
exit 1
esac
+# N.B. Must use temp file to avoid pipe; pipe loses status.
+xtmp=/tmp/9c.$$.$USER.out
+status=x
case "$tag" in
*SunOS*-cc)
- exec $cc -DPLAN9PORT -I$PLAN9/include $cflags "$@" 2>&1 |
+ $cc -DPLAN9PORT -I$PLAN9/include $cflags "$@" 2>&1 |
/bin/sed 's/\"\([^\"][^\"]*\)\", line \([0-9][0-9]*\)/\1:\2/g' 1>&2
+ status=$?
;;
*)
- exec $cc -DPLAN9PORT -I$PLAN9/include $cflags "$@"
+ $cc -DPLAN9PORT -I$PLAN9/include $cflags "$@"
+ status=$?
;;
-esac
+esac >$xtmp 2>&1
+grep -v '__p9l_autolib_' $xtmp
+rm -f $xtmp
+exit $status
diff --git a/bin/9l b/bin/9l
index 4df0ef8d..be401441 100755
--- a/bin/9l
+++ b/bin/9l
@@ -1,5 +1,115 @@
#!/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
@@ -36,4 +146,8 @@ case "$tag" in
exit 1
esac
-exec $ld -L$PLAN9/lib "$@" $extralibs
+if [ $verbose = 1 ]
+then
+ echo $ld -L$PLAN9/lib "$@" $libsl $extralibs
+fi
+exec $ld -L$PLAN9/lib "$@" $libsl $extralibs