t9c: ignore autolib symbols 9l: use autolib symbols - plan9port - [fork] Plan 9 from user space
 (HTM) git clone git://src.adamsgaard.dk/plan9port
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit ead3e31153b4258073dd16f990e0bc1842646562
 (DIR) parent e9a569a96aa4b4b4f18a6d8ade511ee7812c30a6
 (HTM) Author: rsc <devnull@localhost>
       Date:   Tue,  4 Jan 2005 21:13:58 +0000
       
       9c: ignore autolib symbols
       9l: use autolib symbols
       
       Diffstat:
         M bin/9c                              |      16 ++++++++++++----
         M bin/9l                              |     116 ++++++++++++++++++++++++++++++-
       
       2 files changed, 127 insertions(+), 5 deletions(-)
       ---
 (DIR) diff --git a/bin/9c b/bin/9c
       t@@ -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__"
                                ;;
       t@@ -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
 (DIR) diff --git a/bin/9l b/bin/9l
       t@@ -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
       t@@ -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