3 eea5f6ad 2005-01-17 devnull test -f $PLAN9/config && . $PLAN9/config
5 fc165dcb 2005-10-19 devnull frameworks=""
6 3d637e16 2005-01-07 devnull doautolib=true
7 fc165dcb 2005-10-19 devnull doautoframework=true
8 3d637e16 2005-01-07 devnull verbose=false
10 ead3e311 2005-01-04 devnull if [ "x$1" = "x-l" ]
13 3d637e16 2005-01-07 devnull doautolib=false
14 fc165dcb 2005-10-19 devnull doautoframework=false
15 ead3e311 2005-01-04 devnull elif [ "x$1" = "x-v" ]
18 3d637e16 2005-01-07 devnull verbose=true
21 724b43e6 2005-01-07 devnull target=a.out
22 724b43e6 2005-01-07 devnull if [ "x$1" = "x-o" ]
24 724b43e6 2005-01-07 devnull target=$2
27 3d637e16 2005-01-07 devnull if $doautolib
29 ead3e311 2005-01-04 devnull ofiles=""
32 ead3e311 2005-01-04 devnull case "$i" in
34 ead3e311 2005-01-04 devnull ofiles="$ofiles $i"
39 ead3e311 2005-01-04 devnull # echo "ofiles $ofiles"
40 ead3e311 2005-01-04 devnull autolibs=""
41 ead3e311 2005-01-04 devnull if [ "x$ofiles" != "x" ]
44 ead3e311 2005-01-04 devnull nm $ofiles |
45 ead3e311 2005-01-04 devnull grep '__p9l_autolib_[a-zA-Z0-9+-]*$' |
46 190857f9 2005-01-07 devnull sed 's/.*__p9l_autolib_//' |
49 3d637e16 2005-01-07 devnull for i in $a
51 3d637e16 2005-01-07 devnull autolibs="$autolibs $i"
52 3d637e16 2005-01-07 devnull eval "need$i=true"
56 3d637e16 2005-01-07 devnull # fetch dependencies out of libraries
57 3d637e16 2005-01-07 devnull workq="$autolibs"
58 3d637e16 2005-01-07 devnull while [ "x$workq" != "x" ]
60 3d637e16 2005-01-07 devnull w="$workq"
62 3d637e16 2005-01-07 devnull for i in $w
64 359c1e01 2005-01-14 devnull # can't trust the libraries about using
65 866a7d1f 2006-02-14 devnull # libthread or libdraw - we might not be linking with
66 359c1e01 2005-01-14 devnull # those object files.
68 acc29ab2 2005-07-13 devnull nm $PLAN9/lib/lib$i.a 2>/dev/null |
69 3d637e16 2005-01-07 devnull grep '__p9l_autolib_[a-zA-Z0-9+-]*$' |
70 3d637e16 2005-01-07 devnull sed 's/.*__p9l_autolib_//' |
71 359c1e01 2005-01-14 devnull sort -u |
72 866a7d1f 2006-02-14 devnull egrep -v 'thread|draw'
74 3d637e16 2005-01-07 devnull okayfn="true"
75 3d637e16 2005-01-07 devnull for j in $a
77 3d637e16 2005-01-07 devnull if eval "[ x\$need$j = x ]"
79 3d637e16 2005-01-07 devnull autolibs="$autolibs $j"
80 3d637e16 2005-01-07 devnull workq="$workq $j"
81 3d637e16 2005-01-07 devnull eval "need$j=true"
83 3d637e16 2005-01-07 devnull if [ $j != $i ]
85 3d637e16 2005-01-07 devnull okayfn="$okayfn && have$j"
88 3d637e16 2005-01-07 devnull # echo "can$i: $okayfn"
89 3d637e16 2005-01-07 devnull eval "can$i() { $okayfn; }"
92 3d637e16 2005-01-07 devnull if $verbose
94 3d637e16 2005-01-07 devnull echo "autolibs $autolibs"
97 ead3e311 2005-01-04 devnull for i in $autolibs
99 3d637e16 2005-01-07 devnull eval "have$i() { false; }"
101 c8b6342d 2005-01-13 devnull havethread() { false; }
102 0d85a1cf 2005-02-11 devnull havesec() { false; }
104 3d637e16 2005-01-07 devnull # now find correct order
105 3d637e16 2005-01-07 devnull libsl=""
106 3d637e16 2005-01-07 devnull while [ "x$autolibs" != x ]
108 3d637e16 2005-01-07 devnull stillneed=""
109 3d637e16 2005-01-07 devnull didnothing=true
110 3d637e16 2005-01-07 devnull for i in $autolibs
112 3d637e16 2005-01-07 devnull if eval "can$i"
114 3d637e16 2005-01-07 devnull libsl="-l$i $libsl"
115 3d637e16 2005-01-07 devnull eval "have$i() { true; }"
116 3d637e16 2005-01-07 devnull didnothing=false
118 3d637e16 2005-01-07 devnull stillneed="$stillneed $i"
121 3d637e16 2005-01-07 devnull # break cycle by setting the last library on the list
122 3d637e16 2005-01-07 devnull # to have no dependencies
123 3d637e16 2005-01-07 devnull if $didnothing
126 3d637e16 2005-01-07 devnull for i in $autolibs
130 3d637e16 2005-01-07 devnull echo "dependency cycle: $autolibs; breaking with $j"
131 3d637e16 2005-01-07 devnull eval "can$j() { true; }"
133 3d637e16 2005-01-07 devnull autolibs="$stillneed"
135 3d637e16 2005-01-07 devnull if $verbose
137 3d637e16 2005-01-07 devnull echo "liborder $libsl"
139 ead3e311 2005-01-04 devnull libsl="$libsl -l9"
141 c8b6342d 2005-01-13 devnull # cycle: lib9 expects p9main, which is defined in libthread. oops.
142 359c1e01 2005-01-14 devnull if havethread
144 359c1e01 2005-01-14 devnull libsl="$libsl -lthread -l9"
147 0d85a1cf 2005-02-11 devnull # cycle: lib9 netcrypt uses libsec
148 0d85a1cf 2005-02-11 devnull if havesec
150 0d85a1cf 2005-02-11 devnull libsl="$libsl -lsec -l9"
153 89eaced6 2006-04-04 devnull if [ "x$needndb" = xtrue -a '(' -f /usr/lib/libresolv.a -o -f /usr/lib/libresolv.dylib ')' ]
155 866a7d1f 2006-02-14 devnull libsl="$libsl -lresolv"
158 56e3c290 2006-01-27 devnull if [ "x$needdraw" = xtrue -a "x$WSYSTYPE" != xnowsys ]
160 ead3e311 2005-01-04 devnull if [ "x$X11" = "x" ]
162 ead3e311 2005-01-04 devnull X11=/usr/X11R6
164 c968e519 2005-01-18 devnull # x86_64 seems to put its 64-bit libraries in lib64.
165 c968e519 2005-01-18 devnull if [ "${OBJTYPE:-`uname -m`}" = "x86_64" ]
167 c968e519 2005-01-18 devnull libsl="$libsl -L$X11/lib64"
169 ead3e311 2005-01-04 devnull libsl="$libsl -L$X11/lib -lX11"
172 fc165dcb 2005-10-19 devnull if $doautoframework
174 fc165dcb 2005-10-19 devnull ofiles=""
177 fc165dcb 2005-10-19 devnull case "$i" in
179 fc165dcb 2005-10-19 devnull ofiles="$ofiles $i"
184 fc165dcb 2005-10-19 devnull # echo "ofiles $ofiles"
185 fc165dcb 2005-10-19 devnull autoframeworks=""
186 fc165dcb 2005-10-19 devnull if [ "x$ofiles" != "x" ]
189 fc165dcb 2005-10-19 devnull nm $ofiles |
190 fc165dcb 2005-10-19 devnull grep '__p9l_autoframework_[a-zA-Z0-9+-]*$' |
191 fc165dcb 2005-10-19 devnull sed 's/.*__p9l_autoframework_//' |
194 fc165dcb 2005-10-19 devnull for i in $a
196 fc165dcb 2005-10-19 devnull autoframeworks="$autoframeworks $i"
197 fc165dcb 2005-10-19 devnull eval "need$i=true"
201 fc165dcb 2005-10-19 devnull if $verbose
203 fc165dcb 2005-10-19 devnull echo "autoframeworks $autoframeworks"
206 fc165dcb 2005-10-19 devnull for i in $autoframeworks
208 fc165dcb 2005-10-19 devnull eval "have$i() { false; }"
211 fc165dcb 2005-10-19 devnull frameworks=""
212 fc165dcb 2005-10-19 devnull for i in $autoframeworks
214 fc165dcb 2005-10-19 devnull frameworks="-framework $i $frameworks"
218 2d8fd46b 2004-03-26 devnull extralibs="-lm"
219 8f314994 2004-03-02 devnull tag="${SYSNAME:-`uname`}-${OBJTYPE:-`uname -m`}"
220 dbd7b9a9 2003-11-23 devnull case "$tag" in
221 7d0dbb31 2005-01-07 devnull *FreeBSD*)
223 108559b2 2005-01-19 devnull userpath=true
224 7d0dbb31 2005-01-07 devnull extralibs="$extralibs -lutil"
225 7d0dbb31 2005-01-07 devnull case "`uname -r`" in
227 8a26417b 2005-02-08 devnull extralibs="$extralibs -lkse"
229 7d0dbb31 2005-01-07 devnull [5-9].*)
230 7d0dbb31 2005-01-07 devnull extralibs="$extralibs -lpthread"
236 108559b2 2005-01-19 devnull userpath=true
237 7d0dbb31 2005-01-07 devnull extralibs="$extralibs -lutil"
239 7d0dbb31 2005-01-07 devnull *Linux*)
241 108559b2 2005-01-19 devnull userpath=true
242 7d0dbb31 2005-01-07 devnull extralibs="$extralibs -lutil"
243 eea5f6ad 2005-01-17 devnull case "${SYSVERSION:-`uname -r`}" in
245 7d0dbb31 2005-01-07 devnull extralibs="$extralibs -lpthread"
249 7d0dbb31 2005-01-07 devnull *Darwin*)
252 7d0dbb31 2005-01-07 devnull *SunOS*)
253 7d0dbb31 2005-01-07 devnull ld="${CC9:-cc} -g"
254 7d0dbb31 2005-01-07 devnull extralibs="$extralibs -lrt -lpthread -lsocket -lnsl"
255 7d0dbb31 2005-01-07 devnull # Record paths to shared libraries to avoid needing LD_LIBRARY_PATH
256 54bcb7e9 2005-01-16 devnull for i in "$libsl $@"
258 7d0dbb31 2005-01-07 devnull case "$i" in
260 7d0dbb31 2005-01-07 devnull s=`echo $i | sed 's/-L/-R/'`
261 7d0dbb31 2005-01-07 devnull extralibs="$extralibs $s"
265 dc305d03 2005-02-08 devnull case "${SYSVERSION:-`uname -r`}" in
267 dc305d03 2005-02-08 devnull echo do not know how to link right thread library on "$tag" 1>&2
270 dc305d03 2005-02-08 devnull # Some trickery is needed to force use of
271 dc305d03 2005-02-08 devnull # alternate thread lib from /usr/lib/lwp
272 dc305d03 2005-02-08 devnull # Likely, this only works with sun cc,
273 dc305d03 2005-02-08 devnull # for other compiler/loader we would need other flags.
274 dc305d03 2005-02-08 devnull ld="$ld -i"
275 dc305d03 2005-02-08 devnull extralibs="$extralibs /usr/lib/lwp/libthread.so -R/usr/lib/lwp:/usr/lib"
280 dbd7b9a9 2003-11-23 devnull echo do not know how to link on "$tag" 1>&2
284 108559b2 2005-01-19 devnull case "$userpath" in
286 54bcb7e9 2005-01-16 devnull for i in "$libsl $@"
288 54bcb7e9 2005-01-16 devnull case "$i" in
290 54bcb7e9 2005-01-16 devnull s=`echo $i | sed 's/-L/-Wl,-rpath,/'`
291 54bcb7e9 2005-01-16 devnull extralibs="$extralibs $s"
298 3d637e16 2005-01-07 devnull if $verbose
300 fc165dcb 2005-10-19 devnull echo $ld -L$PLAN9/lib "$@" $libsl $extralibs $frameworks
303 237c3090 2005-03-18 devnull xtmp=/tmp/9l.$$.$USER.out
304 237c3090 2005-03-18 devnull xxout() {
305 866a7d1f 2006-02-14 devnull sed 's/.*: In function `[^:]*: *//' $xtmp | egrep . |
306 d27ee153 2006-03-30 devnull egrep -v 'is almost always misused'
307 237c3090 2005-03-18 devnull rm -f $xtmp
310 fc165dcb 2005-10-19 devnull if $ld -L$PLAN9/lib "$@" $libsl $extralibs $frameworks >$xtmp 2>&1
316 724b43e6 2005-01-07 devnull rm -f $target