Blob


1 #!/bin/sh
3 libsl=""
5 doautolib=1
6 verbose=0
8 if [ "x$1" = "x-l" ]
9 then
10 shift
11 doautolib=0
12 elif [ "x$1" = "x-v" ]
13 then
14 shift
15 verbose=1
16 fi
18 if [ $doautolib = 1 ]
19 then
20 ofiles=""
21 for i
22 do
23 case "$i" in
24 [^-]*.o)
25 ofiles="$ofiles $i"
26 ;;
27 esac
28 done
30 # echo "ofiles $ofiles"
31 autolibs=""
32 if [ "x$ofiles" != "x" ]
33 then
34 autolibs=`
35 nm $ofiles |
36 grep '__p9l_autolib_[a-zA-Z0-9+-]*$' |
37 sed 's/.* __p9l_autolib_//' |
38 sort -u
39 `
40 fi
41 # echo "autolibs $autolibs"
43 libsl=""
44 special="mp draw 9pclient mux thread bio" # order matters
45 for i in $special
46 do
47 eval "need$i=0"
48 done
50 for i in $autolibs
51 do
52 case "$i" in
53 9pclient)
54 need9pclient=1
55 needmux=1
56 needthread=1
57 ;;
58 bio)
59 needbio=1
60 ;;
61 draw)
62 needdraw=1
63 ;;
64 mp)
65 needmp=1
66 ;;
67 mux)
68 needmux=1
69 needthread=1
70 ;;
71 plumb)
72 need9pclient=1
73 needmux=1
74 needthread=1
75 libsl="$libsl -lplumb"
76 ;;
77 sec)
78 needmp=1
79 libsl="$libsl -lsec"
80 ;;
81 thread)
82 needthread=1
83 ;;
84 venti)
85 libsl="$libsl -lventi"
86 needthread=1
87 ;;
88 *)
89 libsl="$libsl -l$i"
90 ;;
91 esac
92 done
94 for i in $special
95 do
96 if eval "[ \$need$i = 1 ]"
97 then
98 libsl="$libsl -l$i"
99 fi
100 done
101 libsl="$libsl -l9"
103 if [ $needdraw = 1 ]
104 then
105 if [ "x$X11" = "x" ]
106 then
107 X11=/usr/X11R6
108 fi
109 libsl="$libsl -L$X11/lib -lX11"
110 fi
111 fi
113 extralibs="-lm"
114 tag="${SYSNAME:-`uname`}-${OBJTYPE:-`uname -m`}"
115 case "$tag" in
116 *OpenBSD*) ld=gcc
117 extralibs="$extralibs -lutil -lpthread"
118 ;;
119 *BSD*) ld=gcc
120 extralibs="$extralibs -lutil"
121 ;;
122 *Linux*) ld=gcc
123 extralibs="$extralibs -lutil"
124 case "`uname -r`" in
125 2.6.*)
126 extralibs="$extralibs -lpthread"
127 ;;
128 esac
129 ;;
130 *Darwin*) ld=gcc ;;
131 *SunOS*) ld="${CC9:-cc} -g"
132 extralibs="$extralibs -lrt -lpthread -lsocket -lnsl"
133 # Record paths to shared libraries to avoid needing LD_LIBRARY_PATH
134 for i in "$@"
135 do
136 case "$i" in
137 -L*)
138 s=`echo $i | sed 's/-L/-R/'`
139 extralibs="$extralibs $s"
140 ;;
141 esac
142 done
143 ;;
144 *)
145 echo do not know how to link on "$tag" 1>&2
146 exit 1
147 esac
149 if [ $verbose = 1 ]
150 then
151 echo $ld -L$PLAN9/lib "$@" $libsl $extralibs
152 fi
153 exec $ld -L$PLAN9/lib "$@" $libsl $extralibs