1*b30d1939SAndy Fiddaman:
2*b30d1939SAndy Fiddaman### this script contains archaic constructs that work with all sh variants ###
3*b30d1939SAndy Fiddaman# Glenn Fowler
4*b30d1939SAndy Fiddaman# AT&T Research
5*b30d1939SAndy Fiddaman#
6*b30d1939SAndy Fiddaman# @(#)make.probe (AT&T Research) 2011-06-01
7*b30d1939SAndy Fiddaman#
8*b30d1939SAndy Fiddaman# C probe for make
9*b30d1939SAndy Fiddaman#
10*b30d1939SAndy Fiddaman# NOTE: C.probe must be included or .'d here
11*b30d1939SAndy Fiddaman#
12*b30d1939SAndy Fiddaman
13*b30d1939SAndy Fiddamancc_dll_def=-D_BLD_DLL
14*b30d1939SAndy Fiddaman
15*b30d1939SAndy Fiddamanprobe_ar_arflags="-Xany"
16*b30d1939SAndy Fiddamanprobe_arflags="-xar"
17*b30d1939SAndy Fiddamanprobe_ccs="strip size nm ld ar" # longest to shortest
18*b30d1939SAndy Fiddamanprobe_debug="-g"
19*b30d1939SAndy Fiddamanprobe_dll="'-G 0' -Wc,dll,exportall,longname,rent -Wc,exportall -dynamic $cc_dll_def"
20*b30d1939SAndy Fiddamanprobe_export_dynamic="-rdynamic -export-dynamic -Wl,-export-dynamic -Wl,-E -bexpall -force_flat_namespace"
21*b30d1939SAndy Fiddamanprobe_gcc_optimize="-O2"
22*b30d1939SAndy Fiddamanprobe_gcc_version="*[Gg][Cc][Cc]*"
23*b30d1939SAndy Fiddamanprobe_include_local="'-ignore-source-dir -iquote' -iquote -I-"
24*b30d1939SAndy Fiddamanprobe_ldlazy='-zlazyload -znolazyload -Wl,-zlazyload -Wl,-znolazyload'
25*b30d1939SAndy Fiddamanprobe_ldlib="LD_LIBRARY_PATH LIBPATH LPATH"
26*b30d1939SAndy Fiddamanprobe_ldmap="'-Wl,-M' '-Qoption ld -M' '-Wl,-m' '-m'"
27*b30d1939SAndy Fiddamanprobe_ldorigin="-Wl,-z,origin"
28*b30d1939SAndy Fiddamanprobe_ldrecord='-zrecord -zignore -Wl,-zrecord -Wl,-zignore'
29*b30d1939SAndy Fiddamanprobe_ldrunpath="-Wl,-R, -R -Wl,-rpath, -L"
30*b30d1939SAndy Fiddamanprobe_ldstrip="'-s -mr' -Wl,-s"
31*b30d1939SAndy Fiddamanprobe_lib="a lib"
32*b30d1939SAndy Fiddamanprobe_lib_append="/usr/lib/pa1.1"
33*b30d1939SAndy Fiddamanprobe_lib_all_undef="-all -notall -all -none -Bwhole-archive -Bno-whole-archive -whole-archive -no-whole-archive -Wl,-whole-archive -Wl,-no-whole-archive -all_load '' -Wl,-zallextract -Wl,-zdefaultextract +forceload +noforceload"
34*b30d1939SAndy Fiddamanprobe_lib_multiple="-Wl,-zmuldefs"
35*b30d1939SAndy Fiddamanprobe_libdir="shlib lib"
36*b30d1939SAndy Fiddamanprobe_nmflags="'' -p -B"
37*b30d1939SAndy Fiddamanprobe_optimize="-O"
38*b30d1939SAndy Fiddamanprobe_pic="-Kpic -KPIC -fpic -fPIC -pic -PIC +z +Z"
39*b30d1939SAndy Fiddamanprobe_no_protect="'-fno-stack-protector -fno-stack-protector-all' -GS-"
40*b30d1939SAndy Fiddamanprobe_readonly="-R -Krodata -xMerge -Wa,-r"
41*b30d1939SAndy Fiddamanprobe_shared="'' -G -b -c -shared -Wl,dll"
42*b30d1939SAndy Fiddamanprobe_shared_name="-Wl,-soname= -h"
43*b30d1939SAndy Fiddamanprobe_shared_nostart="-nostartfiles"
44*b30d1939SAndy Fiddamanprobe_shared_registry='"-update_registry $probe_shared_registry_file"'
45*b30d1939SAndy Fiddamanprobe_shared_registry_file='registry.ld'
46*b30d1939SAndy Fiddamanprobe_shared_registry_path="\$(LIBDIR)/$probe_shared_registry_file"
47*b30d1939SAndy Fiddamanprobe_strict="'-ansi -pedantic' '-ansi -strict' -strict -ansi"
48*b30d1939SAndy Fiddamanprobe_stripflags="'-f -s' -f -s"
49*b30d1939SAndy Fiddamanprobe_unresolved="'-expect_unresolved \"*\"'"
50*b30d1939SAndy Fiddamanprobe_warn="-Wall -fullwarn -w3 '-A -A' +w1"
51*b30d1939SAndy Fiddaman
52*b30d1939SAndy Fiddamanecho '#pragma pp:version' > libpp.$src
53*b30d1939SAndy Fiddamanecho '#define dDflag on' > dDflag.$src
54*b30d1939SAndy Fiddamanecho 'int main(){return 0;}' > doti.$src
55*b30d1939SAndy Fiddamanecho 'int code(){return 0;} int main(){return code();}' > export.$src
56*b30d1939SAndy Fiddamanecho '#include <stdio.h>' > imstd.$src
57*b30d1939SAndy Fiddamanecho '#include "_i_.h"' > imusr.$src
58*b30d1939SAndy Fiddamanecho 'int x;' > _i_.h
59*b30d1939SAndy Fiddamanmkdir im
60*b30d1939SAndy Fiddamanecho '(' > im/stdio.h
61*b30d1939SAndy Fiddamanecho '#include "implc_x.h"
62*b30d1939SAndy Fiddamanint main(){f(1);return 0;}' > implc.$src
63*b30d1939SAndy Fiddamanecho 'template <class T> void f(T){}' > implc_x.$src
64*b30d1939SAndy Fiddamanecho 'template <class T> void f(T);' > implc_x.h
65*b30d1939SAndy Fiddamanecho 'extern int NotalL(){return(0);}' > notall.$src
66*b30d1939SAndy Fiddamanecho '#include <stdio.h>
67*b30d1939SAndy Fiddamanextern int i;
68*b30d1939SAndy Fiddamanint i = 1;
69*b30d1939SAndy Fiddamanextern int f(){return(!i);}
70*b30d1939SAndy Fiddamanint main(){FILE* fp=stdin;return(f());}' > pic.$src
71*b30d1939SAndy Fiddamanecho 'class x {int n;} m;' > plusplus.$src
72*b30d1939SAndy Fiddamanecho 'int prefix(){return 0;}' > prefix.$src
73*b30d1939SAndy Fiddamanecho 'template<class T> int gt(T a, T b);
74*b30d1939SAndy Fiddamantemplate<class T> int gt(T a, T b) { return a > b; }
75*b30d1939SAndy Fiddamanint main () { return gt(2,1); }' > ptr.$src
76*b30d1939SAndy Fiddamanecho 'int main(){return 0;}' > require.$src
77*b30d1939SAndy Fiddamanecho '#if mips && !sgi || __CYGWIN__
78*b30d1939SAndy Fiddaman( /* some systems choke on this probe */
79*b30d1939SAndy Fiddaman#else
80*b30d1939SAndy Fiddaman#if test_const
81*b30d1939SAndy Fiddaman#define CONST const
82*b30d1939SAndy Fiddaman#else
83*b30d1939SAndy Fiddaman#define CONST
84*b30d1939SAndy Fiddaman#endif
85*b30d1939SAndy FiddamanCONST char x[]={1,2,3,4,5,6,7,8,9,0};
86*b30d1939SAndy Fiddamanint main(){*(char*)x=0; return x[0];}
87*b30d1939SAndy Fiddaman#endif' > readonly.$src
88*b30d1939SAndy Fiddaman# NOTE:	sfclose() defined on uwin, not defined on all other systems
89*b30d1939SAndy Fiddamanecho 'extern int sfclose(); extern int ShareD(){return(sfclose());}' > shared.$src
90*b30d1939SAndy Fiddamanecho '#define g(a,b) a ## b
91*b30d1939SAndy Fiddamanvolatile int a;
92*b30d1939SAndy Fiddamanconst int g(x,y)=1;
93*b30d1939SAndy Fiddamanextern int c(int);' > stdc.$src
94*b30d1939SAndy Fiddamanecho 'extern int f(); int main() { return f(); }' > sovmain.$src
95*b30d1939SAndy Fiddamanecho 'int f() { return 0; }' > sovlib.$src
96*b30d1939SAndy Fiddamanecho '#include <stdio.h>
97*b30d1939SAndy Fiddamanint i;
98*b30d1939SAndy Fiddamanint main(){int j;j = i * 10;return j;}' > strip.$src
99*b30d1939SAndy Fiddamanecho 'template <class T> void f(T){}
100*b30d1939SAndy Fiddamanint main(){f(1);return 0;}' > toucho.$src
101*b30d1939SAndy Fiddamanecho '#if defined(__STDC__) || defined(__cplusplus)
102*b30d1939SAndy Fiddamanextern type call(int);
103*b30d1939SAndy Fiddaman#endif
104*b30d1939SAndy Fiddamanint main() {call(0);return(0);}' > tstlib.$src
105*b30d1939SAndy Fiddamanecho 'int main(){return 0;}' > warn.$src
106*b30d1939SAndy Fiddamanecho 'int f(){return 0;}' > warn1.$src
107*b30d1939SAndy Fiddamanecho 'int f(){}' > warn2.$src
108*b30d1939SAndy Fiddamanecho 'int f(){int i; return 0;}' > warn3.$src
109*b30d1939SAndy Fiddamanecho 'int f(){int i; return i;}' > warn4.$src
110*b30d1939SAndy Fiddamanecho 'int f(){return g();}' > warn5.$src
111*b30d1939SAndy Fiddamanwarn_enum="1 2 3 4 5"
112*b30d1939SAndy Fiddaman
113*b30d1939SAndy Fiddamanchmod -w *.$src
114*b30d1939SAndy Fiddaman
115*b30d1939SAndy Fiddamanar_arflags=
116*b30d1939SAndy Fiddamanarflags=
117*b30d1939SAndy Fiddamancc_dll=
118*b30d1939SAndy Fiddamancc_pic=
119*b30d1939SAndy Fiddamancc_PIC=
120*b30d1939SAndy FiddamandDflag=
121*b30d1939SAndy Fiddamandebug=
122*b30d1939SAndy Fiddamandialect=
123*b30d1939SAndy Fiddamandll_dir='$(LIBDIR)'
124*b30d1939SAndy Fiddamandll_libraries=
125*b30d1939SAndy Fiddamandll_variants=
126*b30d1939SAndy Fiddamandoti=
127*b30d1939SAndy Fiddamanexectype=
128*b30d1939SAndy Fiddamanexport_dynamic=
129*b30d1939SAndy Fiddamangnu=
130*b30d1939SAndy Fiddamanimplicitc=
131*b30d1939SAndy Fiddamaninclude_local=
132*b30d1939SAndy Fiddamanlddynamic=
133*b30d1939SAndy Fiddamanldlazy=
134*b30d1939SAndy Fiddamanldnolazy=
135*b30d1939SAndy Fiddamanldnorecord=
136*b30d1939SAndy Fiddamanldorigin=
137*b30d1939SAndy Fiddamanldrecord=
138*b30d1939SAndy Fiddamanldrunpath=
139*b30d1939SAndy Fiddamanldscript=
140*b30d1939SAndy Fiddamanldstatic=
141*b30d1939SAndy Fiddamanldstrip=
142*b30d1939SAndy FiddamanLflag=
143*b30d1939SAndy Fiddamanlib_dll=
144*b30d1939SAndy Fiddamanlib_all=
145*b30d1939SAndy Fiddamanlib_undef=
146*b30d1939SAndy Fiddamanlibpath=
147*b30d1939SAndy Fiddamanlibpp=
148*b30d1939SAndy Fiddamanmakeoptions=
149*b30d1939SAndy Fiddamannmedit=
150*b30d1939SAndy Fiddamannmflags=
151*b30d1939SAndy Fiddamanno_protect=
152*b30d1939SAndy Fiddamanoptimize=
153*b30d1939SAndy Fiddamanplusplus=
154*b30d1939SAndy Fiddamanprefix_archive=lib
155*b30d1939SAndy Fiddamanprefix_dynamic=
156*b30d1939SAndy Fiddamanprefix_shared=lib
157*b30d1939SAndy Fiddamanptrcopy=
158*b30d1939SAndy Fiddamanptrimplicit=
159*b30d1939SAndy Fiddamanptrmkdir=
160*b30d1939SAndy Fiddamanreadonly=
161*b30d1939SAndy Fiddamanrepository=
162*b30d1939SAndy Fiddamanrequire=
163*b30d1939SAndy Fiddamanrunpath=
164*b30d1939SAndy Fiddamanshared=
165*b30d1939SAndy Fiddamanshared_name=
166*b30d1939SAndy Fiddamanshared_registry=
167*b30d1939SAndy Fiddamanshellmagic=
168*b30d1939SAndy Fiddamansoversion=
169*b30d1939SAndy Fiddamanstdc=
170*b30d1939SAndy Fiddamanstrict=
171*b30d1939SAndy Fiddamanstripflags=
172*b30d1939SAndy Fiddamansymprefix=
173*b30d1939SAndy Fiddamantoucho=
174*b30d1939SAndy Fiddamanwarn=
175*b30d1939SAndy Fiddaman
176*b30d1939SAndy Fiddamanset $probe_lib
177*b30d1939SAndy Fiddamanlib=$1
178*b30d1939SAndy Fiddaman
179*b30d1939SAndy Fiddamand=
180*b30d1939SAndy Fiddamanfor f in $stdinclude $usrinclude
181*b30d1939SAndy Fiddamando	case $f in
182*b30d1939SAndy Fiddaman	-I*)	;;
183*b30d1939SAndy Fiddaman	*)	d="$d $f" ;;
184*b30d1939SAndy Fiddaman	esac
185*b30d1939SAndy Fiddamandone
186*b30d1939SAndy Fiddamanstdinclude=$d
187*b30d1939SAndy Fiddaman
188*b30d1939SAndy Fiddamanset x $cc
189*b30d1939SAndy Fiddamancc_dir=`echo $2 | sed -e 's,/*[^/]*$,,'`
190*b30d1939SAndy Fiddamanfor c in $probe_ccs
191*b30d1939SAndy Fiddamando	if	$executable $cc_dir/$c
192*b30d1939SAndy Fiddaman	then	x=$cc_dir/$c
193*b30d1939SAndy Fiddaman	else	x=$c
194*b30d1939SAndy Fiddaman	fi
195*b30d1939SAndy Fiddaman	eval $c='$x'
196*b30d1939SAndy Fiddamandone
197*b30d1939SAndy Fiddamanld_dir=
198*b30d1939SAndy Fiddamanrm -f doti.$obj
199*b30d1939SAndy Fiddamanif	$cc -c doti.$src
200*b30d1939SAndy Fiddamanthen	eval set x $probe_verbose
201*b30d1939SAndy Fiddaman	shift
202*b30d1939SAndy Fiddaman	for o
203*b30d1939SAndy Fiddaman	do	$cc $o doti.$obj
204*b30d1939SAndy Fiddaman		$cc $o doti.$obj -lF0oB@r
205*b30d1939SAndy Fiddaman	done 2>&1 | sed -e 's/^[+ 	]*//' -e 's/[ 	].*//' -e '/^\//!d' -e 's/:$//' -e '/ld[a-zA-Z0-9.]*$/!d' -e 's,///*,/,g' > t
206*b30d1939SAndy Fiddaman	for i in `cat t`
207*b30d1939SAndy Fiddaman	do	rm -f t.$obj
208*b30d1939SAndy Fiddaman		if test -x $i && $i -r -o t.$obj doti.$obj && test -f t.$obj
209*b30d1939SAndy Fiddaman		then	case $ld in
210*b30d1939SAndy Fiddaman			ld)	ld=$i ;;
211*b30d1939SAndy Fiddaman			esac
212*b30d1939SAndy Fiddaman			ld_dir=`echo $i | sed 's,/[^/]*$,,'`
213*b30d1939SAndy Fiddaman			break
214*b30d1939SAndy Fiddaman		fi
215*b30d1939SAndy Fiddaman	done
216*b30d1939SAndy Fiddamanfi
217*b30d1939SAndy FiddamanIFS=:
218*b30d1939SAndy Fiddamanset x $PATH
219*b30d1939SAndy FiddamanIFS=$ifs
220*b30d1939SAndy Fiddamanpath=$*
221*b30d1939SAndy Fiddamanm=
222*b30d1939SAndy Fiddamanfor c in $probe_ccs
223*b30d1939SAndy Fiddamando	eval o='$'$c
224*b30d1939SAndy Fiddaman	case $o in
225*b30d1939SAndy Fiddaman	$c)	;;
226*b30d1939SAndy Fiddaman	*)	continue ;;
227*b30d1939SAndy Fiddaman	esac
228*b30d1939SAndy Fiddaman	C='${c}'
229*b30d1939SAndy Fiddaman	for x in $cc_dir $ld_dir
230*b30d1939SAndy Fiddaman	do	cd $x
231*b30d1939SAndy Fiddaman		for p in "${C}" "${C}[!a-zA-Z]*" "*[!a-zA-Z]${C}" "*[!a-zA-Z]${C}[!a-zA-Z]*"
232*b30d1939SAndy Fiddaman		do	eval set x $p
233*b30d1939SAndy Fiddaman			case $# in
234*b30d1939SAndy Fiddaman			2)	if	$executable $2
235*b30d1939SAndy Fiddaman				then	case $2 in
236*b30d1939SAndy Fiddaman					*$c*$c*);;
237*b30d1939SAndy Fiddaman					*)	m=$p
238*b30d1939SAndy Fiddaman						break 3
239*b30d1939SAndy Fiddaman						;;
240*b30d1939SAndy Fiddaman					esac
241*b30d1939SAndy Fiddaman				fi
242*b30d1939SAndy Fiddaman				;;
243*b30d1939SAndy Fiddaman			esac
244*b30d1939SAndy Fiddaman		done
245*b30d1939SAndy Fiddaman	done
246*b30d1939SAndy Fiddamandone
247*b30d1939SAndy Fiddamancd $tmpdir
248*b30d1939SAndy Fiddamanfor c in $probe_ccs
249*b30d1939SAndy Fiddamando	eval o='$'$c
250*b30d1939SAndy Fiddaman	case $o in
251*b30d1939SAndy Fiddaman	$c)	;;
252*b30d1939SAndy Fiddaman	*)	continue ;;
253*b30d1939SAndy Fiddaman	esac
254*b30d1939SAndy Fiddaman	for x in $cc_dir $ld_dir
255*b30d1939SAndy Fiddaman	do	if	$executable $x/$c
256*b30d1939SAndy Fiddaman		then	eval $c='$x/$c'
257*b30d1939SAndy Fiddaman			continue 2
258*b30d1939SAndy Fiddaman		fi
259*b30d1939SAndy Fiddaman		case $m in
260*b30d1939SAndy Fiddaman		?*)	eval set x $x/$m
261*b30d1939SAndy Fiddaman			case $# in
262*b30d1939SAndy Fiddaman			2)	if	$executable $2
263*b30d1939SAndy Fiddaman				then	eval $c='$2'
264*b30d1939SAndy Fiddaman					continue 2
265*b30d1939SAndy Fiddaman				fi
266*b30d1939SAndy Fiddaman				;;
267*b30d1939SAndy Fiddaman			esac
268*b30d1939SAndy Fiddaman			;;
269*b30d1939SAndy Fiddaman		esac
270*b30d1939SAndy Fiddaman	done
271*b30d1939SAndy Fiddaman	for x in $path
272*b30d1939SAndy Fiddaman	do	if	$executable $x/$c
273*b30d1939SAndy Fiddaman		then	eval $c='$x/$c'
274*b30d1939SAndy Fiddaman			break
275*b30d1939SAndy Fiddaman		fi
276*b30d1939SAndy Fiddaman	done
277*b30d1939SAndy Fiddamandone
278*b30d1939SAndy Fiddamandld=$cc
279*b30d1939SAndy Fiddaman
280*b30d1939SAndy Fiddamanrm -f dynamic.$exe
281*b30d1939SAndy Fiddamanif	$cc -o dynamic.$exe dynamic.$obj && $executable dynamic.$exe
282*b30d1939SAndy Fiddamanthen	mkdir mylib
283*b30d1939SAndy Fiddaman	echo > mylib/libc.$lib
284*b30d1939SAndy Fiddaman	eval set x $probe_ldlib
285*b30d1939SAndy Fiddaman	while	:
286*b30d1939SAndy Fiddaman	do	shift
287*b30d1939SAndy Fiddaman		case $# in
288*b30d1939SAndy Fiddaman		0)	break ;;
289*b30d1939SAndy Fiddaman		esac
290*b30d1939SAndy Fiddaman		rm -f dynamic.$exe
291*b30d1939SAndy Fiddaman		if	eval $1=./mylib '$'cc -o dynamic.$exe dynamic.$obj
292*b30d1939SAndy Fiddaman		then	:
293*b30d1939SAndy Fiddaman		else	libpath=$1
294*b30d1939SAndy Fiddaman			break
295*b30d1939SAndy Fiddaman		fi
296*b30d1939SAndy Fiddaman	done
297*b30d1939SAndy Fiddamanfi
298*b30d1939SAndy Fiddamantest `$cc -E libpp.$src | grep -c '^#pragma pp:version "libpp '` -eq 1 && libpp=1
299*b30d1939SAndy Fiddaman$cc -E doti.$src > doti.i && $cc -c doti.i && test -s doti.$obj && doti=1
300*b30d1939SAndy Fiddamanif	$cc -c imusr.$src
301*b30d1939SAndy Fiddamanthen	eval set x $probe_include_local
302*b30d1939SAndy Fiddaman	while	:
303*b30d1939SAndy Fiddaman	do	shift
304*b30d1939SAndy Fiddaman		case $# in
305*b30d1939SAndy Fiddaman		0)	break ;;
306*b30d1939SAndy Fiddaman		esac
307*b30d1939SAndy Fiddaman		if	$cc -c $1 imusr.$src
308*b30d1939SAndy Fiddaman		then	: "$1 should skip \"_i_.h\" in ."
309*b30d1939SAndy Fiddaman		elif	$cc -c imstd.$src
310*b30d1939SAndy Fiddaman		then	if	$cc -c -Iim imstd.$src
311*b30d1939SAndy Fiddaman			then	: '-Idir should find <stdio.h> in dir'
312*b30d1939SAndy Fiddaman			elif	$cc -c $1 -Iim imstd.$src
313*b30d1939SAndy Fiddaman			then	: "$1 -Idir should find <stdio.h> in dir"
314*b30d1939SAndy Fiddaman			elif	$cc -c -Iim $1 imstd.$src
315*b30d1939SAndy Fiddaman			then	include_local=$1
316*b30d1939SAndy Fiddaman				break
317*b30d1939SAndy Fiddaman			else	: "-Idir $1 should skip <stdio.h> in dir"
318*b30d1939SAndy Fiddaman			fi
319*b30d1939SAndy Fiddaman		else	: should find stdio.h
320*b30d1939SAndy Fiddaman		fi
321*b30d1939SAndy Fiddaman	done
322*b30d1939SAndy Fiddamanelse	: 'should find "_i_.h" in .'
323*b30d1939SAndy Fiddamanfi
324*b30d1939SAndy Fiddaman
325*b30d1939SAndy Fiddamanif	$cc -c pic.$src 2>e
326*b30d1939SAndy Fiddamanthen	e=`wc -l e`
327*b30d1939SAndy Fiddaman	s=`$size pic.$obj; wc pic.$obj`
328*b30d1939SAndy Fiddaman	eval set x $probe_pic
329*b30d1939SAndy Fiddaman	shift
330*b30d1939SAndy Fiddaman	while	:
331*b30d1939SAndy Fiddaman	do	case $# in
332*b30d1939SAndy Fiddaman		0|1)	break ;;
333*b30d1939SAndy Fiddaman		esac
334*b30d1939SAndy Fiddaman		pic=$1
335*b30d1939SAndy Fiddaman		shift
336*b30d1939SAndy Fiddaman		PIC=$1
337*b30d1939SAndy Fiddaman		shift
338*b30d1939SAndy Fiddaman		rm -f pic.$obj
339*b30d1939SAndy Fiddaman		$cc $pic -c pic.$src 2>e && test -f pic.$obj || continue
340*b30d1939SAndy Fiddaman		$cc $pic -o pic.$exe pic.$obj && test -f pic.$exe || {
341*b30d1939SAndy Fiddaman			rm -f pic.$exe
342*b30d1939SAndy Fiddaman			$cc -o pic.$exe pic.$obj && test -f pic.$exe && continue
343*b30d1939SAndy Fiddaman		}
344*b30d1939SAndy Fiddaman		case `wc -l e` in
345*b30d1939SAndy Fiddaman		$e)	;;
346*b30d1939SAndy Fiddaman		*)	continue ;;
347*b30d1939SAndy Fiddaman		esac
348*b30d1939SAndy Fiddaman		case $pic in
349*b30d1939SAndy Fiddaman		???*)	m=`echo " $pic" | sed -e 's/^ [-+]//g' -e 's/./-& /g' -e 's/[-+] //g'`
350*b30d1939SAndy Fiddaman			rm -f pic.$obj pic1.$exe
351*b30d1939SAndy Fiddaman			if	$cc $m -c pic.$src 2>e && test -f pic.$obj &&
352*b30d1939SAndy Fiddaman				$cc -o pic1.$exe pic.$obj && test -f pic1.$exe
353*b30d1939SAndy Fiddaman			then	case `wc -l e` in
354*b30d1939SAndy Fiddaman				$e)	cc_pic=$m
355*b30d1939SAndy Fiddaman					break
356*b30d1939SAndy Fiddaman					;;
357*b30d1939SAndy Fiddaman				esac
358*b30d1939SAndy Fiddaman			fi
359*b30d1939SAndy Fiddaman			cc_pic=$pic
360*b30d1939SAndy Fiddaman			break
361*b30d1939SAndy Fiddaman			;;
362*b30d1939SAndy Fiddaman		*)	case `$size pic.$obj; wc pic.$obj` in
363*b30d1939SAndy Fiddaman			$s)	;;
364*b30d1939SAndy Fiddaman			*)	cc_pic=$pic
365*b30d1939SAndy Fiddaman				break
366*b30d1939SAndy Fiddaman				;;
367*b30d1939SAndy Fiddaman			esac
368*b30d1939SAndy Fiddaman			;;
369*b30d1939SAndy Fiddaman		esac
370*b30d1939SAndy Fiddaman	done
371*b30d1939SAndy Fiddaman	# this works around gcc 2.95 sun4 -fpic a.out core dump after exit
372*b30d1939SAndy Fiddaman	case $hosted:$cc_pic in
373*b30d1939SAndy Fiddaman	1:?*)   if	./pic.$exe
374*b30d1939SAndy Fiddaman		then	# this catches lynxos.ppc gcc that dumps -fpic and not -mshared
375*b30d1939SAndy Fiddaman			echo 'static int* f() { static int v; return &v; }
376*b30d1939SAndy Fiddamanint main() { f(); return 0; }' > picok.$src
377*b30d1939SAndy Fiddaman			$cc $cc_pic -o picok.$exe picok.$src && ./picok.$exe || cc_pic=
378*b30d1939SAndy Fiddaman		else	cc_pic=
379*b30d1939SAndy Fiddaman		fi
380*b30d1939SAndy Fiddaman		;;
381*b30d1939SAndy Fiddaman	esac
382*b30d1939SAndy Fiddaman	case $cc_pic in
383*b30d1939SAndy Fiddaman	?*)	rm -f pic.$obj
384*b30d1939SAndy Fiddaman		if	$cc $PIC -c pic.$src 2>e && test -f pic.$obj
385*b30d1939SAndy Fiddaman		then	cc_PIC=$PIC
386*b30d1939SAndy Fiddaman		else	cc_PIC=$cc_pic
387*b30d1939SAndy Fiddaman		fi
388*b30d1939SAndy Fiddaman		;;
389*b30d1939SAndy Fiddaman	*)	eval set x $probe_dll
390*b30d1939SAndy Fiddaman		while	:
391*b30d1939SAndy Fiddaman		do	shift
392*b30d1939SAndy Fiddaman			case $# in
393*b30d1939SAndy Fiddaman			0)	break ;;
394*b30d1939SAndy Fiddaman			esac
395*b30d1939SAndy Fiddaman			rm -f pic.$obj pic.$exe
396*b30d1939SAndy Fiddaman			$cc $1 -c pic.$src 2>e && test -f pic.$obj || continue
397*b30d1939SAndy Fiddaman			$cc $1 -o pic.$exe pic.$obj && test -f pic.$exe || {
398*b30d1939SAndy Fiddaman				rm -f pic.$exe
399*b30d1939SAndy Fiddaman				$cc -o pic.$exe pic.$obj && test -f pic.$exe && continue
400*b30d1939SAndy Fiddaman			}
401*b30d1939SAndy Fiddaman			case $1 in
402*b30d1939SAndy Fiddaman			-Wc,*exportall*)
403*b30d1939SAndy Fiddaman				# get specific since sgi gets this far too
404*b30d1939SAndy Fiddaman				rm -f pic.$exe pic.x
405*b30d1939SAndy Fiddaman				$cc -Wl,dll -o pic.$exe pic.$obj || continue
406*b30d1939SAndy Fiddaman				test -f pic.$exe || continue
407*b30d1939SAndy Fiddaman				test -f pic.x || continue
408*b30d1939SAndy Fiddaman				cc_dll="-D_SHARE_EXT_VARS $1"
409*b30d1939SAndy Fiddaman				so=.x
410*b30d1939SAndy Fiddaman				sd=.dll
411*b30d1939SAndy Fiddaman				dld=$cc
412*b30d1939SAndy Fiddaman				shared=-Wl,dll
413*b30d1939SAndy Fiddaman				prefix_shared=
414*b30d1939SAndy Fiddaman				probe_sd=
415*b30d1939SAndy Fiddaman				probe_shared=
416*b30d1939SAndy Fiddaman				#unused# lddynamic=-Bdynamic
417*b30d1939SAndy Fiddaman				#unused# ldstatic=-Bstatic
418*b30d1939SAndy Fiddaman				lib_dll=SYMBOL
419*b30d1939SAndy Fiddaman				break
420*b30d1939SAndy Fiddaman				;;
421*b30d1939SAndy Fiddaman			esac
422*b30d1939SAndy Fiddaman			case `wc -l e` in
423*b30d1939SAndy Fiddaman			$e)	cc_dll=$1
424*b30d1939SAndy Fiddaman				break
425*b30d1939SAndy Fiddaman				;;
426*b30d1939SAndy Fiddaman			esac
427*b30d1939SAndy Fiddaman		done
428*b30d1939SAndy Fiddaman		;;
429*b30d1939SAndy Fiddaman	esac
430*b30d1939SAndy Fiddamanfi
431*b30d1939SAndy Fiddaman
432*b30d1939SAndy Fiddaman$cc -c plusplus.$src && plusplus=1
433*b30d1939SAndy Fiddaman$cc -E -dD dDflag.$src > t
434*b30d1939SAndy Fiddamancase `grep '#define[ 	][ 	]*dDflag[ 	][ 	]*on' t` in
435*b30d1939SAndy Fiddaman?*)	dDflag=1 ;;
436*b30d1939SAndy Fiddamanesac
437*b30d1939SAndy Fiddamancase `grep '#define.*_GNUC_' t` in
438*b30d1939SAndy Fiddaman?*)	gnu=1 ;;
439*b30d1939SAndy Fiddamanesac
440*b30d1939SAndy Fiddamancase $plusplus in
441*b30d1939SAndy Fiddaman"")	$cc -c stdc.$src && stdc=1 ;;
442*b30d1939SAndy Fiddaman*)	mkdir ptr
443*b30d1939SAndy Fiddaman	cd ptr
444*b30d1939SAndy Fiddaman	$cc -c ../ptr.$src &
445*b30d1939SAndy Fiddaman	NFS_locks_are_botched=$!
446*b30d1939SAndy Fiddaman	cd ..
447*b30d1939SAndy Fiddaman	if	$cc -c require.$src && $cc require.$obj
448*b30d1939SAndy Fiddaman	then	set x `$cc require.$obj 2>&1`
449*b30d1939SAndy Fiddaman		d=
450*b30d1939SAndy Fiddaman		while	:
451*b30d1939SAndy Fiddaman		do	shift
452*b30d1939SAndy Fiddaman			case $# in
453*b30d1939SAndy Fiddaman			0)	break ;;
454*b30d1939SAndy Fiddaman			esac
455*b30d1939SAndy Fiddaman			case $1 in
456*b30d1939SAndy Fiddaman			-l*)	d="$d $1" ;;
457*b30d1939SAndy Fiddaman			esac
458*b30d1939SAndy Fiddaman		done
459*b30d1939SAndy Fiddaman		for f in ++
460*b30d1939SAndy Fiddaman		do	if $cc require.$obj -l$f
461*b30d1939SAndy Fiddaman			then	set x `$cc require.$obj -l$f 2>&1`
462*b30d1939SAndy Fiddaman				r=
463*b30d1939SAndy Fiddaman				while	:
464*b30d1939SAndy Fiddaman				do	shift
465*b30d1939SAndy Fiddaman					case $# in
466*b30d1939SAndy Fiddaman					0)	break ;;
467*b30d1939SAndy Fiddaman					esac
468*b30d1939SAndy Fiddaman					case $1 in
469*b30d1939SAndy Fiddaman					-l*)	case " $d $r " in
470*b30d1939SAndy Fiddaman						*" "$1" "*)	;;
471*b30d1939SAndy Fiddaman						*)		r="$r $1" ;;
472*b30d1939SAndy Fiddaman						esac
473*b30d1939SAndy Fiddaman					esac
474*b30d1939SAndy Fiddaman				done
475*b30d1939SAndy Fiddaman				case $r in
476*b30d1939SAndy Fiddaman				?*)	require="$require $f"
477*b30d1939SAndy Fiddaman					echo '' $r > req.$f
478*b30d1939SAndy Fiddaman					;;
479*b30d1939SAndy Fiddaman				esac
480*b30d1939SAndy Fiddaman			fi
481*b30d1939SAndy Fiddaman		done
482*b30d1939SAndy Fiddaman	fi
483*b30d1939SAndy Fiddaman	cd ptr
484*b30d1939SAndy Fiddaman	for i in *
485*b30d1939SAndy Fiddaman	do	if	test -d $i
486*b30d1939SAndy Fiddaman		then	repository=$i
487*b30d1939SAndy Fiddaman			break
488*b30d1939SAndy Fiddaman		fi
489*b30d1939SAndy Fiddaman	done
490*b30d1939SAndy Fiddaman	cd ..
491*b30d1939SAndy Fiddaman	kill -9 $NFS_locks_are_botched
492*b30d1939SAndy Fiddaman	rm -rf ptr
493*b30d1939SAndy Fiddaman	case $repository in
494*b30d1939SAndy Fiddaman	*?)	mkdir ptr
495*b30d1939SAndy Fiddaman		cd ptr
496*b30d1939SAndy Fiddaman		i=PTR
497*b30d1939SAndy Fiddaman		case $repository in
498*b30d1939SAndy Fiddaman		$i)	i=$i$i ;;
499*b30d1939SAndy Fiddaman		esac
500*b30d1939SAndy Fiddaman		$cc -ptr$i -c ../ptr.$src &
501*b30d1939SAndy Fiddaman		NFS_locks_are_botched=$!
502*b30d1939SAndy Fiddaman		cd ..
503*b30d1939SAndy Fiddaman		sleep 5
504*b30d1939SAndy Fiddaman		if	test -d ptr/$i/$repository
505*b30d1939SAndy Fiddaman		then	ptrimplicit=1
506*b30d1939SAndy Fiddaman		fi
507*b30d1939SAndy Fiddaman		kill -9 $NFS_locks_are_botched
508*b30d1939SAndy Fiddaman		rm -rf ptr
509*b30d1939SAndy Fiddaman		;;
510*b30d1939SAndy Fiddaman	esac
511*b30d1939SAndy Fiddaman	$cc -o implc implc.$src && $executable implc && implicitc=1
512*b30d1939SAndy Fiddaman	if	$cc -c toucho.$src && test -f toucho.$obj
513*b30d1939SAndy Fiddaman	then	o=`ls -l toucho.$obj`
514*b30d1939SAndy Fiddaman		if	$cc -o toucho toucho.$obj && $executable toucho
515*b30d1939SAndy Fiddaman		then	n=`ls -l touch.$obj`
516*b30d1939SAndy Fiddaman			case $n in
517*b30d1939SAndy Fiddaman			"$o")	;;
518*b30d1939SAndy Fiddaman			*)	toucho=1 ;;
519*b30d1939SAndy Fiddaman			esac
520*b30d1939SAndy Fiddaman		fi
521*b30d1939SAndy Fiddaman	fi
522*b30d1939SAndy Fiddaman	;;
523*b30d1939SAndy Fiddamanesac
524*b30d1939SAndy Fiddaman
525*b30d1939SAndy Fiddamanif	$cc -c pic.$src
526*b30d1939SAndy Fiddamanthen	eval set x $probe_nmflags
527*b30d1939SAndy Fiddaman	while	:
528*b30d1939SAndy Fiddaman	do	shift
529*b30d1939SAndy Fiddaman		case $# in
530*b30d1939SAndy Fiddaman		0)	break ;;
531*b30d1939SAndy Fiddaman		esac
532*b30d1939SAndy Fiddaman		case `$nm $1 pic.$obj | grep -c '[0123456789][ 	][ 	]*T[ 	][ 	]*[_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]'` in
533*b30d1939SAndy Fiddaman		0)	;;
534*b30d1939SAndy Fiddaman		*)	nmflags=$1
535*b30d1939SAndy Fiddaman			break
536*b30d1939SAndy Fiddaman			;;
537*b30d1939SAndy Fiddaman		esac
538*b30d1939SAndy Fiddaman	done
539*b30d1939SAndy Fiddaman	case $# in
540*b30d1939SAndy Fiddaman	0)	case `$nm -gh pic.$obj | grep -c '|\.*[TtDdBbC][EeAaSsOo][XxTtSsMm]'` in
541*b30d1939SAndy Fiddaman		0)	;;
542*b30d1939SAndy Fiddaman		*)	nmflags=-gh
543*b30d1939SAndy Fiddaman			nmedit="-e '/\.*[TtDdBbC][EeAaSsOo][XxTtSsMm]/!d' -e 's/[| 	].*//'"
544*b30d1939SAndy Fiddaman			;;
545*b30d1939SAndy Fiddaman		esac
546*b30d1939SAndy Fiddaman		;;
547*b30d1939SAndy Fiddaman	*)	nmedit="-e '/[ 	]T[ 	][ 	]*[_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]/!d' -e 's/.*[ 	]T[ 	][ 	]*//'"
548*b30d1939SAndy Fiddaman		;;
549*b30d1939SAndy Fiddaman	esac
550*b30d1939SAndy Fiddamanfi
551*b30d1939SAndy Fiddaman
552*b30d1939SAndy Fiddamanif	$cc -c doti.$src
553*b30d1939SAndy Fiddamanthen	eval set x $probe_stripflags
554*b30d1939SAndy Fiddaman	while	:
555*b30d1939SAndy Fiddaman	do	shift
556*b30d1939SAndy Fiddaman		case $# in
557*b30d1939SAndy Fiddaman		0)	break ;;
558*b30d1939SAndy Fiddaman		esac
559*b30d1939SAndy Fiddaman		if	$strip $1 doti.$obj
560*b30d1939SAndy Fiddaman		then	stripflags=$1
561*b30d1939SAndy Fiddaman			break
562*b30d1939SAndy Fiddaman		fi
563*b30d1939SAndy Fiddaman	done
564*b30d1939SAndy Fiddamanfi
565*b30d1939SAndy Fiddaman
566*b30d1939SAndy Fiddamanrm -f export.$obj export.exe
567*b30d1939SAndy Fiddamanif	$cc -c export.$src
568*b30d1939SAndy Fiddamanthen	lm=
569*b30d1939SAndy Fiddaman	if	$cc -o export.exe export.$obj -lm 2>e && lm=-lm ||
570*b30d1939SAndy Fiddaman		$cc -o export.exe export.$obj 2>e
571*b30d1939SAndy Fiddaman	then	z=`wc -c < export.exe; $size export.exe 2>/dev/null`
572*b30d1939SAndy Fiddaman		eval set x $probe_export_dynamic
573*b30d1939SAndy Fiddaman		while	:
574*b30d1939SAndy Fiddaman		do	shift
575*b30d1939SAndy Fiddaman			case $# in
576*b30d1939SAndy Fiddaman			0)	break ;;
577*b30d1939SAndy Fiddaman			esac
578*b30d1939SAndy Fiddaman			rm -f export.exe
579*b30d1939SAndy Fiddaman			if	$cc -o export.exe $1 export.$obj $lm 2>f && $executable export.exe
580*b30d1939SAndy Fiddaman			then	y=`wc -c < export.exe; $size export.exe 2>/dev/null`
581*b30d1939SAndy Fiddaman				case $y in
582*b30d1939SAndy Fiddaman				$z)	;;
583*b30d1939SAndy Fiddaman				*)	if	cmp -s e f
584*b30d1939SAndy Fiddaman					then	export_dynamic=$1
585*b30d1939SAndy Fiddaman						break
586*b30d1939SAndy Fiddaman					fi
587*b30d1939SAndy Fiddaman					;;
588*b30d1939SAndy Fiddaman				esac
589*b30d1939SAndy Fiddaman			fi
590*b30d1939SAndy Fiddaman		done
591*b30d1939SAndy Fiddaman	fi
592*b30d1939SAndy Fiddamanfi
593*b30d1939SAndy Fiddamanrm -f export.$obj export.exe
594*b30d1939SAndy Fiddaman
595*b30d1939SAndy Fiddamanrm -f strip.exe
596*b30d1939SAndy Fiddamanif	$cc -o strip.exe strip.$src
597*b30d1939SAndy Fiddamanthen	z=`wc -c < strip.exe`
598*b30d1939SAndy Fiddaman	eval set x $probe_ldstrip
599*b30d1939SAndy Fiddaman	while	:
600*b30d1939SAndy Fiddaman	do	shift
601*b30d1939SAndy Fiddaman		case $# in
602*b30d1939SAndy Fiddaman		0)	break ;;
603*b30d1939SAndy Fiddaman		esac
604*b30d1939SAndy Fiddaman		rm -f strip.exe
605*b30d1939SAndy Fiddaman		if	$cc -o strip.exe $1 strip.$src
606*b30d1939SAndy Fiddaman		then	case `wc -c < strip.exe` in
607*b30d1939SAndy Fiddaman			$z)	;;
608*b30d1939SAndy Fiddaman			*)	ldstrip=$1
609*b30d1939SAndy Fiddaman				break
610*b30d1939SAndy Fiddaman				;;
611*b30d1939SAndy Fiddaman			esac
612*b30d1939SAndy Fiddaman		fi
613*b30d1939SAndy Fiddaman	done
614*b30d1939SAndy Fiddamanfi
615*b30d1939SAndy Fiddaman
616*b30d1939SAndy Fiddamanrm -f strip.exe strip.$obj
617*b30d1939SAndy Fiddamanif	$cc -c strip.$src && $cc -o strip.exe strip.$obj 2>e
618*b30d1939SAndy Fiddamanthen	eval set x x $probe_ldlazy
619*b30d1939SAndy Fiddaman	while	:
620*b30d1939SAndy Fiddaman	do	shift
621*b30d1939SAndy Fiddaman		shift
622*b30d1939SAndy Fiddaman		case $# in
623*b30d1939SAndy Fiddaman		0)	break ;;
624*b30d1939SAndy Fiddaman		esac
625*b30d1939SAndy Fiddaman		rm -f strip.$exe
626*b30d1939SAndy Fiddaman		$cc -o strip.$exe $1 strip.$obj $2 2>f && test -f strip.$exe || continue
627*b30d1939SAndy Fiddaman		cmp -s e f || continue
628*b30d1939SAndy Fiddaman		ldlazy=$1
629*b30d1939SAndy Fiddaman		ldnolazy=$2
630*b30d1939SAndy Fiddaman		break
631*b30d1939SAndy Fiddaman	done
632*b30d1939SAndy Fiddaman	eval set x x $probe_ldrecord
633*b30d1939SAndy Fiddaman	while	:
634*b30d1939SAndy Fiddaman	do	shift
635*b30d1939SAndy Fiddaman		shift
636*b30d1939SAndy Fiddaman		case $# in
637*b30d1939SAndy Fiddaman		0)	break ;;
638*b30d1939SAndy Fiddaman		esac
639*b30d1939SAndy Fiddaman		rm -f strip.$exe
640*b30d1939SAndy Fiddaman		$cc -o strip.$exe $1 strip.$obj $2 2>f && test -f strip.$exe || continue
641*b30d1939SAndy Fiddaman		cmp -s e f || continue
642*b30d1939SAndy Fiddaman		ldrecord=$1
643*b30d1939SAndy Fiddaman		ldnorecord=$2
644*b30d1939SAndy Fiddaman		break
645*b30d1939SAndy Fiddaman	done
646*b30d1939SAndy Fiddamanfi
647*b30d1939SAndy Fiddaman
648*b30d1939SAndy Fiddamancase $cc_dll:$cc_pic:$so:$dynamic:$static in
649*b30d1939SAndy Fiddaman::::|$cc_dll_def::::)
650*b30d1939SAndy Fiddaman	: last chance dynamic checks
651*b30d1939SAndy Fiddaman	while	:
652*b30d1939SAndy Fiddaman	do
653*b30d1939SAndy Fiddaman		echo '__declspec(dllexport) int fun() { return 0; }' > exp.$src
654*b30d1939SAndy Fiddaman		if	$cc -c $cc_dll_def exp.$src
655*b30d1939SAndy Fiddaman		then	rm -f xxx.dll xxx.lib
656*b30d1939SAndy Fiddaman			if	$cc -shared -Wl,--enable-auto-image-base -Wl,--out-implib=xxx.lib -o xxx.dll exp.$obj &&
657*b30d1939SAndy Fiddaman				test -f xxx.lib -a -f xxx.dll
658*b30d1939SAndy Fiddaman			then
659*b30d1939SAndy Fiddaman				: cygwin
660*b30d1939SAndy Fiddaman				cc_dll=$cc_dll_def
661*b30d1939SAndy Fiddaman				dll_dir='$(BINDIR)'
662*b30d1939SAndy Fiddaman				sd=.dll
663*b30d1939SAndy Fiddaman				so=.dll.a
664*b30d1939SAndy Fiddaman				ldscript=".def .exp .ign .res"
665*b30d1939SAndy Fiddaman				lib_dll=option
666*b30d1939SAndy Fiddaman				lib_all=-Wl,-whole-archive
667*b30d1939SAndy Fiddaman				lib_undef=-Wl,-no-whole-archive
668*b30d1939SAndy Fiddaman				dld=$cc
669*b30d1939SAndy Fiddaman				shared='-shared -Wl,--enable-auto-image-base -Wl,--out-implib=$(<:N=*'$so')'
670*b30d1939SAndy Fiddaman				prefix_dynamic=cyg
671*b30d1939SAndy Fiddaman				prefix_shared=lib
672*b30d1939SAndy Fiddaman				break
673*b30d1939SAndy Fiddaman			fi
674*b30d1939SAndy Fiddaman		fi
675*b30d1939SAndy Fiddaman		break
676*b30d1939SAndy Fiddaman	done
677*b30d1939SAndy Fiddaman	;;
678*b30d1939SAndy Fiddaman*)	if	$cc -c $cc_dll $cc_pic shared.$src && $cc -c $cc_dll $cc_pic notall.$src
679*b30d1939SAndy Fiddaman	then	for xx in "$cc" "$ld"
680*b30d1939SAndy Fiddaman		do	eval set x $probe_shared
681*b30d1939SAndy Fiddaman			while	:
682*b30d1939SAndy Fiddaman			do	shift
683*b30d1939SAndy Fiddaman				case $# in
684*b30d1939SAndy Fiddaman				0)	break ;;
685*b30d1939SAndy Fiddaman				esac
686*b30d1939SAndy Fiddaman				rm -f xxx$dll
687*b30d1939SAndy Fiddaman				# UNDENT ...
688*b30d1939SAndy Fiddaman
689*b30d1939SAndy Fiddaman	if	$xx $1 -o xxx$dll shared.$obj 2>e && test -r xxx$dll
690*b30d1939SAndy Fiddaman	then	if	test -s e && egrep -i 'unknown|invalid|option' e > /dev/null
691*b30d1939SAndy Fiddaman		then	continue
692*b30d1939SAndy Fiddaman		fi
693*b30d1939SAndy Fiddaman		case `PATH=/bin:/usr/bin:$PATH file xxx$dll` in
694*b30d1939SAndy Fiddaman		*lib*|*obj*|*shared*)
695*b30d1939SAndy Fiddaman			;;
696*b30d1939SAndy Fiddaman		"")	$executable xxx$dll || continue
697*b30d1939SAndy Fiddaman			;;
698*b30d1939SAndy Fiddaman		*ELF*|*elf*)
699*b30d1939SAndy Fiddaman			$executable xxx$dll || continue
700*b30d1939SAndy Fiddaman			case `strings xxx$dll | sed -e 's,.*[ |],,' | sort -u | egrep -i '^([._](dynamic|dynstr|dynsym))$'` in
701*b30d1939SAndy Fiddaman			[012])	continue ;;
702*b30d1939SAndy Fiddaman			esac
703*b30d1939SAndy Fiddaman			;;
704*b30d1939SAndy Fiddaman		*archive*not*stripped*|*data*dynamic*not*stripped*)
705*b30d1939SAndy Fiddaman			$executable xxx$dll || continue
706*b30d1939SAndy Fiddaman			;;
707*b30d1939SAndy Fiddaman		*)	continue
708*b30d1939SAndy Fiddaman			;;
709*b30d1939SAndy Fiddaman		esac
710*b30d1939SAndy Fiddaman		dld=$xx
711*b30d1939SAndy Fiddaman		shared=$1
712*b30d1939SAndy Fiddaman		# does -nostartfiles make sense for C?
713*b30d1939SAndy Fiddaman		case $plusplus in
714*b30d1939SAndy Fiddaman		'')	z=`wc -c < xxx$dll`
715*b30d1939SAndy Fiddaman			eval set x $probe_shared_nostart
716*b30d1939SAndy Fiddaman			while	:
717*b30d1939SAndy Fiddaman			do	shift
718*b30d1939SAndy Fiddaman				case $# in
719*b30d1939SAndy Fiddaman				0)	break ;;
720*b30d1939SAndy Fiddaman				esac
721*b30d1939SAndy Fiddaman				rm -f xxx$dll
722*b30d1939SAndy Fiddaman				if	$dld $shared $1 -o xxx$dll shared.$obj 2>e && test -r xxx$dll
723*b30d1939SAndy Fiddaman				then	case `wc -c < xxx$dll` in
724*b30d1939SAndy Fiddaman					$z)	;;
725*b30d1939SAndy Fiddaman					*)	if	test -s e
726*b30d1939SAndy Fiddaman						then	case `cat e` in
727*b30d1939SAndy Fiddaman							*[Ee][Rr][Rr][Oo][Rr]*|*[Ww][Aa][Rr][Nn][Ii][Nn][Gg]*|*[Oo][Pp][Tt][Ii][Oo][Nn]*)
728*b30d1939SAndy Fiddaman								continue
729*b30d1939SAndy Fiddaman								;;
730*b30d1939SAndy Fiddaman							esac
731*b30d1939SAndy Fiddaman						fi
732*b30d1939SAndy Fiddaman						case $shared in
733*b30d1939SAndy Fiddaman						'')	shared=$1 ;;
734*b30d1939SAndy Fiddaman						*)	shared="$shared $1" ;;
735*b30d1939SAndy Fiddaman						esac
736*b30d1939SAndy Fiddaman						break
737*b30d1939SAndy Fiddaman						;;
738*b30d1939SAndy Fiddaman					esac
739*b30d1939SAndy Fiddaman				fi
740*b30d1939SAndy Fiddaman			done
741*b30d1939SAndy Fiddaman			;;
742*b30d1939SAndy Fiddaman		esac
743*b30d1939SAndy Fiddaman		case $cc_dll in
744*b30d1939SAndy Fiddaman		"")	cc_dll=$cc_dll_def ;;
745*b30d1939SAndy Fiddaman		esac
746*b30d1939SAndy Fiddaman		eval set x x $probe_sd
747*b30d1939SAndy Fiddaman		while	:
748*b30d1939SAndy Fiddaman		do	shift
749*b30d1939SAndy Fiddaman			shift
750*b30d1939SAndy Fiddaman			case $# in
751*b30d1939SAndy Fiddaman			[01])	break ;;
752*b30d1939SAndy Fiddaman			esac
753*b30d1939SAndy Fiddaman			rm -f xxx xxx$1 xxx$2
754*b30d1939SAndy Fiddaman			if	$dld $shared -o xxx shared.$obj 2>e
755*b30d1939SAndy Fiddaman			then	if	test -f xxx$1 -a \( -f xxx$2 -o "$cc_dll" = "$cc_dll_def" \)
756*b30d1939SAndy Fiddaman				then	sd=$1
757*b30d1939SAndy Fiddaman					so=$2
758*b30d1939SAndy Fiddaman					lddynamic=-Bdynamic
759*b30d1939SAndy Fiddaman					ldstatic=-Bstatic
760*b30d1939SAndy Fiddaman					break 2
761*b30d1939SAndy Fiddaman				elif	test -f xxx -a -f xxx$2
762*b30d1939SAndy Fiddaman				then	sd=$1
763*b30d1939SAndy Fiddaman					so=$2
764*b30d1939SAndy Fiddaman					break 2
765*b30d1939SAndy Fiddaman				else	case $so in
766*b30d1939SAndy Fiddaman					'')	so=$1 ;;
767*b30d1939SAndy Fiddaman					esac
768*b30d1939SAndy Fiddaman					break
769*b30d1939SAndy Fiddaman				fi
770*b30d1939SAndy Fiddaman			fi
771*b30d1939SAndy Fiddaman		done
772*b30d1939SAndy Fiddaman		rm -f libxxx.$lib
773*b30d1939SAndy Fiddaman		$ar cr libxxx.$lib shared.$obj
774*b30d1939SAndy Fiddaman		ranlib libxxx.$lib
775*b30d1939SAndy Fiddaman		eval set x x $probe_lib_all_undef
776*b30d1939SAndy Fiddaman		rm -f xxx$dll
777*b30d1939SAndy Fiddaman		if	$dld $shared -o xxx$dll libxxx.$lib && test -r xxx$dll
778*b30d1939SAndy Fiddaman		then	if	$nm $nmflags xxx$dll | grep ShareD
779*b30d1939SAndy Fiddaman			then	lib_dll=OPTION
780*b30d1939SAndy Fiddaman				set x x
781*b30d1939SAndy Fiddaman			fi
782*b30d1939SAndy Fiddaman		fi
783*b30d1939SAndy Fiddaman		while	:
784*b30d1939SAndy Fiddaman		do	shift
785*b30d1939SAndy Fiddaman			shift
786*b30d1939SAndy Fiddaman			case $# in
787*b30d1939SAndy Fiddaman			0|1)	break ;;
788*b30d1939SAndy Fiddaman			esac
789*b30d1939SAndy Fiddaman			rm -f xxx$dll
790*b30d1939SAndy Fiddaman			if	$dld $shared -o xxx$dll $1 libxxx.$lib $2 && test -r xxx$dll
791*b30d1939SAndy Fiddaman			then	if	$nm $nmflags xxx$dll | grep ShareD
792*b30d1939SAndy Fiddaman				then	lib_dll=option
793*b30d1939SAndy Fiddaman					lib_all=$1
794*b30d1939SAndy Fiddaman					lib_undef=$2
795*b30d1939SAndy Fiddaman					break
796*b30d1939SAndy Fiddaman				fi
797*b30d1939SAndy Fiddaman			fi
798*b30d1939SAndy Fiddaman			case $2 in
799*b30d1939SAndy Fiddaman			?*)	if	$dld $shared -o xxx$dll $1 libxxx.$lib && test -r xxx$dll
800*b30d1939SAndy Fiddaman				then	if	$nm $nmflags xxx$dll | grep ShareD
801*b30d1939SAndy Fiddaman					then	lib_dll=option
802*b30d1939SAndy Fiddaman						lib_all=$1
803*b30d1939SAndy Fiddaman						break
804*b30d1939SAndy Fiddaman					fi
805*b30d1939SAndy Fiddaman				fi
806*b30d1939SAndy Fiddaman				;;
807*b30d1939SAndy Fiddaman			esac
808*b30d1939SAndy Fiddaman		done
809*b30d1939SAndy Fiddaman		case $lib_dll in
810*b30d1939SAndy Fiddaman		OPTION)	lib_dll=option
811*b30d1939SAndy Fiddaman			;;
812*b30d1939SAndy Fiddaman		option)	case $lib_undef in
813*b30d1939SAndy Fiddaman			"")	rm -f libyyy.$lib
814*b30d1939SAndy Fiddaman				$ar cr libyyy.$lib notall.$obj
815*b30d1939SAndy Fiddaman				ranlib libyyy.$lib
816*b30d1939SAndy Fiddaman				$cc -c prefix.$src
817*b30d1939SAndy Fiddaman				eval set x x $probe_lib_all_undef
818*b30d1939SAndy Fiddaman				while	:
819*b30d1939SAndy Fiddaman				do	shift
820*b30d1939SAndy Fiddaman					shift
821*b30d1939SAndy Fiddaman					case $# in
822*b30d1939SAndy Fiddaman					0|1)	break ;;
823*b30d1939SAndy Fiddaman					esac
824*b30d1939SAndy Fiddaman					rm -f xxx$dll
825*b30d1939SAndy Fiddaman					if	$dld $shared -o xxx$dll prefix.$obj $lib_all libxxx.$lib $2 libyyy.$lib && test -r xxx$dll
826*b30d1939SAndy Fiddaman					then	rm -f t
827*b30d1939SAndy Fiddaman						$nm $nmflags xxx$dll > t
828*b30d1939SAndy Fiddaman						case `grep -c ShareD t`:`grep -c NotalL t` in
829*b30d1939SAndy Fiddaman						0:*)	;;
830*b30d1939SAndy Fiddaman						*:0)	lib_undef=$2
831*b30d1939SAndy Fiddaman							break
832*b30d1939SAndy Fiddaman							;;
833*b30d1939SAndy Fiddaman						esac
834*b30d1939SAndy Fiddaman					fi
835*b30d1939SAndy Fiddaman				done
836*b30d1939SAndy Fiddaman				;;
837*b30d1939SAndy Fiddaman			esac
838*b30d1939SAndy Fiddaman			case $lib_undef in
839*b30d1939SAndy Fiddaman			"")	eval set x $probe_lib_multiple
840*b30d1939SAndy Fiddaman				rm -f libyyy.$lib
841*b30d1939SAndy Fiddaman				cp libxxx.$lib libyyy.$lib
842*b30d1939SAndy Fiddaman				rm -f xxx$dll
843*b30d1939SAndy Fiddaman				if	$dld $shared -o xxx$dll prefix.$obj $lib_all libxxx.$lib libyyy.$lib && test -r xxx$dll
844*b30d1939SAndy Fiddaman				then	:
845*b30d1939SAndy Fiddaman				else	while	:
846*b30d1939SAndy Fiddaman					do	shift
847*b30d1939SAndy Fiddaman						case $# in
848*b30d1939SAndy Fiddaman						0)	break ;;
849*b30d1939SAndy Fiddaman						esac
850*b30d1939SAndy Fiddaman						rm -f xxx$dll
851*b30d1939SAndy Fiddaman						if	$dld $shared -o xxx$dll prefix.$obj $lib_all $1 libxxx.$lib libyyy.$lib && test -r xxx$dll
852*b30d1939SAndy Fiddaman						then	rm -f t
853*b30d1939SAndy Fiddaman							$nm $nmflags xxx$dll > t
854*b30d1939SAndy Fiddaman							case `grep -c ShareD t` in
855*b30d1939SAndy Fiddaman							0)	;;
856*b30d1939SAndy Fiddaman							*)	lib_all="$lib_all $1"
857*b30d1939SAndy Fiddaman								break
858*b30d1939SAndy Fiddaman								;;
859*b30d1939SAndy Fiddaman							esac
860*b30d1939SAndy Fiddaman						fi
861*b30d1939SAndy Fiddaman					done
862*b30d1939SAndy Fiddaman				fi
863*b30d1939SAndy Fiddaman				lib_dll=symbol
864*b30d1939SAndy Fiddaman				;;
865*b30d1939SAndy Fiddaman			esac
866*b30d1939SAndy Fiddaman			;;
867*b30d1939SAndy Fiddaman		*)	lib_dll=symbol
868*b30d1939SAndy Fiddaman			;;
869*b30d1939SAndy Fiddaman		esac
870*b30d1939SAndy Fiddaman		case `cat e` in
871*b30d1939SAndy Fiddaman		?*)	eval set x $probe_unresolved
872*b30d1939SAndy Fiddaman			while	:
873*b30d1939SAndy Fiddaman			do	shift
874*b30d1939SAndy Fiddaman				case $# in
875*b30d1939SAndy Fiddaman				0)	break ;;
876*b30d1939SAndy Fiddaman				esac
877*b30d1939SAndy Fiddaman				rm -f xxx$dll
878*b30d1939SAndy Fiddaman				if	eval '$dld $shared' $1 '-o xxx$dll shared.$obj 2>e && test -r xxx$dll'
879*b30d1939SAndy Fiddaman				then	case `cat e` in
880*b30d1939SAndy Fiddaman					"")	shared="$shared $1"; break ;;
881*b30d1939SAndy Fiddaman					esac
882*b30d1939SAndy Fiddaman				fi
883*b30d1939SAndy Fiddaman			done
884*b30d1939SAndy Fiddaman			;;
885*b30d1939SAndy Fiddaman		esac
886*b30d1939SAndy Fiddaman		r=
887*b30d1939SAndy Fiddaman		eval set x $probe_shared_registry
888*b30d1939SAndy Fiddaman		while	:
889*b30d1939SAndy Fiddaman		do	shift
890*b30d1939SAndy Fiddaman			r=x$r
891*b30d1939SAndy Fiddaman			case $# in
892*b30d1939SAndy Fiddaman			0)	break ;;
893*b30d1939SAndy Fiddaman			esac
894*b30d1939SAndy Fiddaman			rm -f xxx$dll
895*b30d1939SAndy Fiddaman			if	eval \$dld \$shared -o xxx\$dll $1 shared.\$obj &&
896*b30d1939SAndy Fiddaman				test -r xxx$dll -a -r $probe_shared_registry_file
897*b30d1939SAndy Fiddaman			then	probe_shared_registry_file='$(CC.SHARED.REGISTRY.PATH)'
898*b30d1939SAndy Fiddaman				eval set x $probe_shared_registry
899*b30d1939SAndy Fiddaman				i=
900*b30d1939SAndy Fiddaman				while	:
901*b30d1939SAndy Fiddaman				do	shift
902*b30d1939SAndy Fiddaman					i=x$i
903*b30d1939SAndy Fiddaman					case $i in
904*b30d1939SAndy Fiddaman					$r)	break ;;
905*b30d1939SAndy Fiddaman					esac
906*b30d1939SAndy Fiddaman				done
907*b30d1939SAndy Fiddaman				shared_registry=$1
908*b30d1939SAndy Fiddaman			fi
909*b30d1939SAndy Fiddaman		done
910*b30d1939SAndy Fiddaman		break 2
911*b30d1939SAndy Fiddaman	fi
912*b30d1939SAndy Fiddaman
913*b30d1939SAndy Fiddaman				# ... INDENT
914*b30d1939SAndy Fiddaman			done
915*b30d1939SAndy Fiddaman		done
916*b30d1939SAndy Fiddaman	fi
917*b30d1939SAndy Fiddaman	case $so in
918*b30d1939SAndy Fiddaman	?*)	rm -f xxx*
919*b30d1939SAndy Fiddaman		if	$dld $shared -g -o xxx shared.$obj 2>e
920*b30d1939SAndy Fiddaman		then	set x $probe_sdb
921*b30d1939SAndy Fiddaman			while	:
922*b30d1939SAndy Fiddaman			do	shift
923*b30d1939SAndy Fiddaman				case $1 in
924*b30d1939SAndy Fiddaman				0)	break ;;
925*b30d1939SAndy Fiddaman				esac
926*b30d1939SAndy Fiddaman				if	test -f xxx$1
927*b30d1939SAndy Fiddaman				then	sdb=$1
928*b30d1939SAndy Fiddaman					break
929*b30d1939SAndy Fiddaman				fi
930*b30d1939SAndy Fiddaman			done
931*b30d1939SAndy Fiddaman		fi
932*b30d1939SAndy Fiddaman		if	$cc -c require.$src
933*b30d1939SAndy Fiddaman		then	p='
934*b30d1939SAndy Fiddaman/usr/proberun/lib:/local/runprobe/lib
935*b30d1939SAndy Fiddaman'
936*b30d1939SAndy Fiddaman			eval set x $probe_ldrunpath
937*b30d1939SAndy Fiddaman			while	:
938*b30d1939SAndy Fiddaman			do	shift
939*b30d1939SAndy Fiddaman				case $# in
940*b30d1939SAndy Fiddaman				0)	break ;;
941*b30d1939SAndy Fiddaman				esac
942*b30d1939SAndy Fiddaman				rm -f require.exe
943*b30d1939SAndy Fiddaman				if	$cc -o require.exe $1"$p" require.$obj &&
944*b30d1939SAndy Fiddaman					grep -c /proberun/ require.exe >/dev/null &&
945*b30d1939SAndy Fiddaman					grep -c /runprobe/ require.exe > /dev/null
946*b30d1939SAndy Fiddaman				then	ldrunpath=$1
947*b30d1939SAndy Fiddaman					eval set x $probe_ldorigin
948*b30d1939SAndy Fiddaman					while	:
949*b30d1939SAndy Fiddaman					do	shift
950*b30d1939SAndy Fiddaman						case $# in
951*b30d1939SAndy Fiddaman						0)	break ;;
952*b30d1939SAndy Fiddaman						esac
953*b30d1939SAndy Fiddaman						rm -f origin.exe
954*b30d1939SAndy Fiddaman						if	$cc -o origin.exe $1 $ldrunpath'$ORIGIN' require.$obj
955*b30d1939SAndy Fiddaman						then	if	./origin.exe > /dev/null 2>&1
956*b30d1939SAndy Fiddaman							then	ldorigin="$1 $ldrunpath"'\$ORIGIN/$(BINDIR:P=R=$(DLLDIR))'
957*b30d1939SAndy Fiddaman							fi
958*b30d1939SAndy Fiddaman							break
959*b30d1939SAndy Fiddaman						fi
960*b30d1939SAndy Fiddaman					done
961*b30d1939SAndy Fiddaman					break
962*b30d1939SAndy Fiddaman				fi
963*b30d1939SAndy Fiddaman			done
964*b30d1939SAndy Fiddaman		fi
965*b30d1939SAndy Fiddaman		rm -f libxxx$so
966*b30d1939SAndy Fiddaman		if	$cc -c sovmain.$src &&
967*b30d1939SAndy Fiddaman			$cc -c $cc_dll $cc_pic sovlib.c &&
968*b30d1939SAndy Fiddaman			$dld $shared -o libxxx$so sovlib.$obj &&
969*b30d1939SAndy Fiddaman			$cc -o sovmain.$exe -L. sovmain.$obj -lxxx
970*b30d1939SAndy Fiddaman		then	rm -f sovmain.$exe
971*b30d1939SAndy Fiddaman			mv libxxx$so libxxx$so.5.6
972*b30d1939SAndy Fiddaman			if	$cc -o sovmain.$exe -L. sovmain.$obj -lxxx
973*b30d1939SAndy Fiddaman			then	soversion=1
974*b30d1939SAndy Fiddaman			fi
975*b30d1939SAndy Fiddaman		fi
976*b30d1939SAndy Fiddaman		rm -f doti.$obj
977*b30d1939SAndy Fiddaman		std64=/lib64
978*b30d1939SAndy Fiddaman		lcl64=/usr/local/lib64
979*b30d1939SAndy Fiddaman		if	test -d $std64 -a -d $lcl64 && $cc -c doti.$src
980*b30d1939SAndy Fiddaman		then	for i in `cd $lcl64; ls *$so 2>/dev/null | sed 's/lib\([^.]*\).*/\1/'`
981*b30d1939SAndy Fiddaman			do	if	$cc -o runpath.$exe doti.$obj -l$i >/dev/null 2>&1
982*b30d1939SAndy Fiddaman				then	LD_LIBRARY_PATH= ./runpath.$exe >/dev/null 2>&1 && continue
983*b30d1939SAndy Fiddaman					if	LD_LIBRARY_PATH=$lcl64 ./runpath.$exe >/dev/null 2>&1
984*b30d1939SAndy Fiddaman					then	runpath=$lcl64
985*b30d1939SAndy Fiddaman						break
986*b30d1939SAndy Fiddaman					elif	LD_LIBRARY_PATH=$std64 ./runpath.$exe >/dev/null 2>&1
987*b30d1939SAndy Fiddaman					then	runpath=$std64
988*b30d1939SAndy Fiddaman						break
989*b30d1939SAndy Fiddaman					elif	LD_LIBRARY_PATH=$lcl64:$std64 ./runpath.$exe >/dev/null 2>&1
990*b30d1939SAndy Fiddaman					then	runpath=$lcl64:$std64
991*b30d1939SAndy Fiddaman						break
992*b30d1939SAndy Fiddaman					fi
993*b30d1939SAndy Fiddaman				fi
994*b30d1939SAndy Fiddaman			done
995*b30d1939SAndy Fiddaman		fi
996*b30d1939SAndy Fiddaman		;;
997*b30d1939SAndy Fiddaman	esac
998*b30d1939SAndy Fiddaman	;;
999*b30d1939SAndy Fiddamanesac
1000*b30d1939SAndy Fiddaman
1001*b30d1939SAndy Fiddamanrm -f shared.$obj
1002*b30d1939SAndy Fiddamanif	$cc -c shared.$src
1003*b30d1939SAndy Fiddamanthen	eval set x $probe_ar_arflags
1004*b30d1939SAndy Fiddaman	while	:
1005*b30d1939SAndy Fiddaman	do	shift
1006*b30d1939SAndy Fiddaman		case $# in
1007*b30d1939SAndy Fiddaman		0)	break ;;
1008*b30d1939SAndy Fiddaman		esac
1009*b30d1939SAndy Fiddaman		rm -f libxxx.$lib
1010*b30d1939SAndy Fiddaman		if	$ar $1 r libxxx.$lib shared.$obj && $ar $1 t libxxx.$lib 2>&1 | grep shared.$obj >/dev/null
1011*b30d1939SAndy Fiddaman		then	ar_arflags=$1
1012*b30d1939SAndy Fiddaman			break
1013*b30d1939SAndy Fiddaman		fi
1014*b30d1939SAndy Fiddaman	done
1015*b30d1939SAndy Fiddaman	eval set x $probe_arflags
1016*b30d1939SAndy Fiddaman	while	:
1017*b30d1939SAndy Fiddaman	do	shift
1018*b30d1939SAndy Fiddaman		case $# in
1019*b30d1939SAndy Fiddaman		0)	break ;;
1020*b30d1939SAndy Fiddaman		esac
1021*b30d1939SAndy Fiddaman		rm -f libxxx.$lib
1022*b30d1939SAndy Fiddaman		if	$cc $1 -o libxxx.$lib shared.$obj && $ar t libxxx.$lib 2>&1 | grep shared.$obj >/dev/null
1023*b30d1939SAndy Fiddaman		then	arflags=$1
1024*b30d1939SAndy Fiddaman			break
1025*b30d1939SAndy Fiddaman		fi
1026*b30d1939SAndy Fiddaman	done
1027*b30d1939SAndy Fiddamanfi
1028*b30d1939SAndy Fiddaman
1029*b30d1939SAndy Fiddamancase $shared in
1030*b30d1939SAndy Fiddaman-G)	case $cc_dll in
1031*b30d1939SAndy Fiddaman	"")	cc_dll=$cc_dll_def ;;
1032*b30d1939SAndy Fiddaman	esac
1033*b30d1939SAndy Fiddaman	;;
1034*b30d1939SAndy Fiddaman*)	case $lib_dll in
1035*b30d1939SAndy Fiddaman	symbol)	echo 'extern int f();
1036*b30d1939SAndy Fiddaman	int main() { f(); return 0; }' > main.$src
1037*b30d1939SAndy Fiddaman		echo '#include <stdio.h>
1038*b30d1939SAndy Fiddaman	int f() { printf("hello world"); return 0; }' > member.$src
1039*b30d1939SAndy Fiddaman		if	$cc -c main.$src && $cc -c member.$src
1040*b30d1939SAndy Fiddaman		then	echo f > lib.exp
1041*b30d1939SAndy Fiddaman			rm -f lib.$obj main.exe
1042*b30d1939SAndy Fiddaman			if	$ld -o lib.$obj -L: -bexport:lib.exp -berok -bmodtype:SRE -T512 -H512 -lm -lc member.$obj && $cc -o main.exe main.$obj lib.$obj
1043*b30d1939SAndy Fiddaman			then	dld=$ld
1044*b30d1939SAndy Fiddaman				shared='-T512 -H512 -L$(LIBDIR): -berok -bmodtype:SRE'
1045*b30d1939SAndy Fiddaman				lib_dll=export
1046*b30d1939SAndy Fiddaman				dll_libraries='-lm -lc'
1047*b30d1939SAndy Fiddaman				ldscript=.exp
1048*b30d1939SAndy Fiddaman				case $cc_dll in
1049*b30d1939SAndy Fiddaman				"")	cc_dll=$cc_dll_def ;;
1050*b30d1939SAndy Fiddaman				esac
1051*b30d1939SAndy Fiddaman				case $so in
1052*b30d1939SAndy Fiddaman				"")	so=.$obj ;;
1053*b30d1939SAndy Fiddaman				esac
1054*b30d1939SAndy Fiddaman			fi
1055*b30d1939SAndy Fiddaman		fi
1056*b30d1939SAndy Fiddaman		;;
1057*b30d1939SAndy Fiddaman	esac
1058*b30d1939SAndy Fiddaman	;;
1059*b30d1939SAndy Fiddamanesac
1060*b30d1939SAndy Fiddamancase $shared in
1061*b30d1939SAndy Fiddaman?*)	if	$cc -c $cc_dll $cc_pic shared.$src
1062*b30d1939SAndy Fiddaman	then	eval set x $probe_shared_name
1063*b30d1939SAndy Fiddaman		while	:
1064*b30d1939SAndy Fiddaman		do	shift
1065*b30d1939SAndy Fiddaman			case $# in
1066*b30d1939SAndy Fiddaman			0)	break ;;
1067*b30d1939SAndy Fiddaman			esac
1068*b30d1939SAndy Fiddaman			rm -f xxx$dll
1069*b30d1939SAndy Fiddaman			if	$dld $shared ${1}libfoo.1.2 -o xxx$dll shared.$obj 2>e && test -r xxx$dll
1070*b30d1939SAndy Fiddaman			then	shared_name=$1
1071*b30d1939SAndy Fiddaman				break
1072*b30d1939SAndy Fiddaman			fi
1073*b30d1939SAndy Fiddaman		done
1074*b30d1939SAndy Fiddaman	fi
1075*b30d1939SAndy Fiddaman	;;
1076*b30d1939SAndy Fiddamanesac
1077*b30d1939SAndy Fiddamancase " $cc_dll " in
1078*b30d1939SAndy Fiddaman*" $cc_dll_def "*)
1079*b30d1939SAndy Fiddaman	;;
1080*b30d1939SAndy Fiddaman"  ")	;;
1081*b30d1939SAndy Fiddaman*)	cc_dll="$cc_dll_def $cc_dll"
1082*b30d1939SAndy Fiddaman	;;
1083*b30d1939SAndy Fiddamanesac
1084*b30d1939SAndy Fiddaman
1085*b30d1939SAndy Fiddamancase $hosttype in
1086*b30d1939SAndy Fiddamanwin32.*|cygwin.*|os2.*)
1087*b30d1939SAndy Fiddaman	Lflag=1
1088*b30d1939SAndy Fiddaman	;;
1089*b30d1939SAndy Fiddaman*)	if	$cc -c doti.$src
1090*b30d1939SAndy Fiddaman	then	if	$cc -L. doti.$obj -lc >/dev/null
1091*b30d1939SAndy Fiddaman		then	case $cc_dll in
1092*b30d1939SAndy Fiddaman			'')	;;
1093*b30d1939SAndy Fiddaman			*)	Lflag=1 ;;
1094*b30d1939SAndy Fiddaman			esac
1095*b30d1939SAndy Fiddaman		fi
1096*b30d1939SAndy Fiddaman	fi
1097*b30d1939SAndy Fiddaman	;;
1098*b30d1939SAndy Fiddamanesac
1099*b30d1939SAndy Fiddaman
1100*b30d1939SAndy Fiddamancase $lib_dll in
1101*b30d1939SAndy Fiddamanoption)	case $hosttype in
1102*b30d1939SAndy Fiddaman	linux.*)	dll_libraries=-lc ;;
1103*b30d1939SAndy Fiddaman	esac
1104*b30d1939SAndy Fiddaman	;;
1105*b30d1939SAndy FiddamanSYMBOL)	lib_dll=symbol
1106*b30d1939SAndy Fiddaman	;;
1107*b30d1939SAndy Fiddamansymbol)	echo "#include <stdio.h>
1108*b30d1939SAndy Fiddamanextern int fun()
1109*b30d1939SAndy Fiddaman{
1110*b30d1939SAndy Fiddaman	puts(\"fun\");
1111*b30d1939SAndy Fiddaman	return 0;
1112*b30d1939SAndy Fiddaman}" > dllib.$src
1113*b30d1939SAndy Fiddaman	echo "extern int fun();
1114*b30d1939SAndy Fiddamanint
1115*b30d1939SAndy Fiddamanmain()
1116*b30d1939SAndy Fiddaman{
1117*b30d1939SAndy Fiddaman	return fun();
1118*b30d1939SAndy Fiddaman}" > dlmain.$src
1119*b30d1939SAndy Fiddaman	pwd=`pwd`
1120*b30d1939SAndy Fiddaman	while	:
1121*b30d1939SAndy Fiddaman	do
1122*b30d1939SAndy Fiddaman		if	$cc -c $cc_dll $cc_pic dlmain.$src &&
1123*b30d1939SAndy Fiddaman			$cc -c $cc_dll $cc_pic dllib.$src
1124*b30d1939SAndy Fiddaman		then	rm -f libxxx$so
1125*b30d1939SAndy Fiddaman			if	$dld $shared -o libxxx$so dllib.$obj &&
1126*b30d1939SAndy Fiddaman				chmod 555 libxxx$so
1127*b30d1939SAndy Fiddaman			then	rm -f dlmain.$exe
1128*b30d1939SAndy Fiddaman				if	$cc -o dlmain.$exe dlmain.$obj $pwd/libxxx$so &&
1129*b30d1939SAndy Fiddaman					(./dlmain.$exe) >/dev/null 2>&1
1130*b30d1939SAndy Fiddaman				then	break
1131*b30d1939SAndy Fiddaman				fi
1132*b30d1939SAndy Fiddaman			fi
1133*b30d1939SAndy Fiddaman			rm -f libxxx$so dlmain.$exe
1134*b30d1939SAndy Fiddaman			if	$dld $shared -o libxxx$so dllib.$obj -lm -lc &&
1135*b30d1939SAndy Fiddaman				chmod 555 libxxx$so &&
1136*b30d1939SAndy Fiddaman				$cc -o dlmain.$exe dlmain.$obj $pwd/libxxx$so &&
1137*b30d1939SAndy Fiddaman				(./dlmain.$exe) >/dev/null 2>&1
1138*b30d1939SAndy Fiddaman			then	dll_libraries='-lm -lc'
1139*b30d1939SAndy Fiddaman			fi
1140*b30d1939SAndy Fiddaman		fi
1141*b30d1939SAndy Fiddaman		break
1142*b30d1939SAndy Fiddaman	done
1143*b30d1939SAndy Fiddaman	# the dll_libraries probe is still lame
1144*b30d1939SAndy Fiddaman	case $dll_libraries in
1145*b30d1939SAndy Fiddaman	'')	case $hosttype in
1146*b30d1939SAndy Fiddaman		sco.*|sol*.*|sun*)	;;
1147*b30d1939SAndy Fiddaman		*)			dll_libraries='-lm -lc' ;;
1148*b30d1939SAndy Fiddaman		esac
1149*b30d1939SAndy Fiddaman		;;
1150*b30d1939SAndy Fiddaman	esac
1151*b30d1939SAndy Fiddaman	;;
1152*b30d1939SAndy Fiddamanesac
1153*b30d1939SAndy Fiddaman
1154*b30d1939SAndy Fiddamanstdlib=
1155*b30d1939SAndy Fiddamana=`$cc -print-multi-directory 2>/dev/null`
1156*b30d1939SAndy Fiddamancase $a in
1157*b30d1939SAndy Fiddaman.)	;;
1158*b30d1939SAndy Fiddaman*)	for d in `$cc -print-search-dirs 2>/dev/null | sed -e '/^libraries:/!d' -e 's/.*=//' | tr : '\n' | grep /lib/`
1159*b30d1939SAndy Fiddaman	do	if	[ -d ${d}${a} ]
1160*b30d1939SAndy Fiddaman		then	stdlib="$stdlib ${d}${a}"
1161*b30d1939SAndy Fiddaman		else	case $d in
1162*b30d1939SAndy Fiddaman			*/lib/)	d=`echo '' $d | sed -e 's,/$,,'`
1163*b30d1939SAndy Fiddaman				if	[ -d ${d}${a} ]
1164*b30d1939SAndy Fiddaman				then	stdlib="$stdlib ${d}${a}"
1165*b30d1939SAndy Fiddaman				fi
1166*b30d1939SAndy Fiddaman				;;
1167*b30d1939SAndy Fiddaman			esac
1168*b30d1939SAndy Fiddaman		fi
1169*b30d1939SAndy Fiddaman	done
1170*b30d1939SAndy Fiddaman	;;
1171*b30d1939SAndy Fiddamanesac
1172*b30d1939SAndy Fiddamancase $stdlib in
1173*b30d1939SAndy Fiddaman'')	stdlib=`$cc -v doti.$src 2>&1 |
1174*b30d1939SAndy Fiddaman		sed 's/  */\n/g' |
1175*b30d1939SAndy Fiddaman		sed -e '/^-L/!d' -e 's/^-L//' |
1176*b30d1939SAndy Fiddaman		while read dir
1177*b30d1939SAndy Fiddaman		do	if	test -d "$dir"
1178*b30d1939SAndy Fiddaman			then	(cd "$dir"; pwd)
1179*b30d1939SAndy Fiddaman			fi
1180*b30d1939SAndy Fiddaman		done`
1181*b30d1939SAndy Fiddaman	;;
1182*b30d1939SAndy Fiddaman*)	eval set x $probe_verbose
1183*b30d1939SAndy Fiddaman	shift
1184*b30d1939SAndy Fiddaman	for o in "$@"
1185*b30d1939SAndy Fiddaman	do	stdlib="$stdlib "`$cc $o doti.$src 2>&1 |
1186*b30d1939SAndy Fiddaman		sed 's/  */\n/g' |
1187*b30d1939SAndy Fiddaman		sed -e '/^-L/!d' -e '/\/lib64$/!d' -e 's/^-L//'`
1188*b30d1939SAndy Fiddaman	done
1189*b30d1939SAndy Fiddaman	;;
1190*b30d1939SAndy Fiddamanesac
1191*b30d1939SAndy Fiddamancase $stdlib in
1192*b30d1939SAndy Fiddaman?*)	keepstdlib=1
1193*b30d1939SAndy Fiddaman	o=$stdlib
1194*b30d1939SAndy Fiddaman	stdlib=
1195*b30d1939SAndy Fiddaman	for dir in $o
1196*b30d1939SAndy Fiddaman	do	case " $stdlib " in
1197*b30d1939SAndy Fiddaman		*" $o "*) continue ;;
1198*b30d1939SAndy Fiddaman		esac
1199*b30d1939SAndy Fiddaman		case $dir in
1200*b30d1939SAndy Fiddaman		/usr/lib64)
1201*b30d1939SAndy Fiddaman			i=/usr/local/lib64
1202*b30d1939SAndy Fiddaman			a=/lib64
1203*b30d1939SAndy Fiddaman			;;
1204*b30d1939SAndy Fiddaman		/lib64) i=/usr/local/lib64
1205*b30d1939SAndy Fiddaman			a=/usr/lib64
1206*b30d1939SAndy Fiddaman			;;
1207*b30d1939SAndy Fiddaman		/usr/lib)
1208*b30d1939SAndy Fiddaman			i=/usr/local/lib
1209*b30d1939SAndy Fiddaman			a=/lib
1210*b30d1939SAndy Fiddaman			;;
1211*b30d1939SAndy Fiddaman		lib)	i=/usr/local/lib
1212*b30d1939SAndy Fiddaman			a=/usr/lib
1213*b30d1939SAndy Fiddaman			;;
1214*b30d1939SAndy Fiddaman		*)	i=
1215*b30d1939SAndy Fiddaman			a=
1216*b30d1939SAndy Fiddaman			;;
1217*b30d1939SAndy Fiddaman		esac
1218*b30d1939SAndy Fiddaman		if	test "" != "$i" -a -d "$i"
1219*b30d1939SAndy Fiddaman		then	case " $o " in
1220*b30d1939SAndy Fiddaman			*" $i "*)
1221*b30d1939SAndy Fiddaman				;;
1222*b30d1939SAndy Fiddaman			*)	stdlib="$stdlib $i"
1223*b30d1939SAndy Fiddaman				;;
1224*b30d1939SAndy Fiddaman			esac
1225*b30d1939SAndy Fiddaman		fi
1226*b30d1939SAndy Fiddaman		stdlib="$stdlib $dir"
1227*b30d1939SAndy Fiddaman		if	test "" != "$a" -a -d "$a"
1228*b30d1939SAndy Fiddaman		then	case " $o " in
1229*b30d1939SAndy Fiddaman			*" $a "*)
1230*b30d1939SAndy Fiddaman				;;
1231*b30d1939SAndy Fiddaman			*)	stdlib="$stdlib $a"
1232*b30d1939SAndy Fiddaman				;;
1233*b30d1939SAndy Fiddaman			esac
1234*b30d1939SAndy Fiddaman		fi
1235*b30d1939SAndy Fiddaman	done
1236*b30d1939SAndy Fiddaman	case $hosted in
1237*b30d1939SAndy Fiddaman	1)	case " $stdlib " in
1238*b30d1939SAndy Fiddaman		*" /usr/lib "*)
1239*b30d1939SAndy Fiddaman			;;
1240*b30d1939SAndy Fiddaman		*)	case " $stdlib " in
1241*b30d1939SAndy Fiddaman			*" /usr/local/lib "*)
1242*b30d1939SAndy Fiddaman				;;
1243*b30d1939SAndy Fiddaman			*)	stdlib="$stdlib /usr/local/lib"
1244*b30d1939SAndy Fiddaman				;;
1245*b30d1939SAndy Fiddaman			esac
1246*b30d1939SAndy Fiddaman			stdlib="$stdlib /usr/lib"
1247*b30d1939SAndy Fiddaman			;;
1248*b30d1939SAndy Fiddaman		esac
1249*b30d1939SAndy Fiddaman		case " $stdlib " in
1250*b30d1939SAndy Fiddaman		*" /lib "*)
1251*b30d1939SAndy Fiddaman			;;
1252*b30d1939SAndy Fiddaman		*)	stdlib="$stdlib /lib"
1253*b30d1939SAndy Fiddaman			;;
1254*b30d1939SAndy Fiddaman		esac
1255*b30d1939SAndy Fiddaman	esac
1256*b30d1939SAndy Fiddaman	;;
1257*b30d1939SAndy Fiddaman*)	keepstdlib=0
1258*b30d1939SAndy Fiddaman	case $dir in
1259*b30d1939SAndy Fiddaman	*/arch/$hosttype/lib/*)
1260*b30d1939SAndy Fiddaman		notlib=`echo $dir | sed "s,/arch/$hosttype/lib/.*,/arch/$hosttype/lib,"`
1261*b30d1939SAndy Fiddaman		;;
1262*b30d1939SAndy Fiddaman	*)	notlib=////
1263*b30d1939SAndy Fiddaman		;;
1264*b30d1939SAndy Fiddaman	esac
1265*b30d1939SAndy Fiddaman	tstlib=
1266*b30d1939SAndy Fiddaman	implib=
1267*b30d1939SAndy Fiddaman	if	$cc -c hosted.$src
1268*b30d1939SAndy Fiddaman	then	for f in `(
1269*b30d1939SAndy Fiddaman			eval set x $probe_verbose
1270*b30d1939SAndy Fiddaman			while	:
1271*b30d1939SAndy Fiddaman			do	shift
1272*b30d1939SAndy Fiddaman				case $# in
1273*b30d1939SAndy Fiddaman				0)	break ;;
1274*b30d1939SAndy Fiddaman				esac
1275*b30d1939SAndy Fiddaman				$cc $1 hosted.$obj
1276*b30d1939SAndy Fiddaman			done
1277*b30d1939SAndy Fiddaman			) 2>&1 | sed -e 's/[ 	:]/\\
1278*b30d1939SAndy Fiddaman	/g' -e 's/-L//g' -e 's/^P,//' -e "s/[\"']//g" -e 's,^[\\\\/]*[\\\\/],/,' | sed -e '/^\$/d' -e '/^[-+]/d' -e '/^[^\\\\\\/]/d' -e '/[\\\\\\/]tmp[\\\\\\/]/d' -e 's/:\$//' -e 's,//*$,,'`
1279*b30d1939SAndy Fiddaman		do	case " $tstlib $implib " in
1280*b30d1939SAndy Fiddaman			*" $f "*)	continue ;;
1281*b30d1939SAndy Fiddaman			esac
1282*b30d1939SAndy Fiddaman			case $f in
1283*b30d1939SAndy Fiddaman			$notlib)	continue ;;
1284*b30d1939SAndy Fiddaman			esac
1285*b30d1939SAndy Fiddaman			if	test -d $f
1286*b30d1939SAndy Fiddaman			then	tstlib="$tstlib $f"
1287*b30d1939SAndy Fiddaman			elif	test -f $f
1288*b30d1939SAndy Fiddaman			then	d=`echo $f | sed -e 's,[\\\\/]*[^\\\\/]*\$,,'`
1289*b30d1939SAndy Fiddaman				case " $tstlib $implib " in
1290*b30d1939SAndy Fiddaman				*" $d "*)	continue ;;
1291*b30d1939SAndy Fiddaman				esac
1292*b30d1939SAndy Fiddaman				case $d in
1293*b30d1939SAndy Fiddaman				*[\\/]usr[\\/]lib)
1294*b30d1939SAndy Fiddaman					x=$d
1295*b30d1939SAndy Fiddaman					d="`echo $d | sed -e 's,[\\\\/][\\\\/]*usr[\\\\/]lib\$,/lib,'`"
1296*b30d1939SAndy Fiddaman					case " $tstlib $implib " in
1297*b30d1939SAndy Fiddaman					*" $d "*)	;;
1298*b30d1939SAndy Fiddaman					*)		implib="$implib $d" ;;
1299*b30d1939SAndy Fiddaman					esac
1300*b30d1939SAndy Fiddaman					implib="$implib $x"
1301*b30d1939SAndy Fiddaman					;;
1302*b30d1939SAndy Fiddaman				*[\\/]lib)
1303*b30d1939SAndy Fiddaman					implib="$implib $d"
1304*b30d1939SAndy Fiddaman					d="`echo $d | sed -e 's,[\\\\/][\\\\/]*lib\$,/usr/lib,'`"
1305*b30d1939SAndy Fiddaman					case " $tstlib $implib " in
1306*b30d1939SAndy Fiddaman					*" $d "*)	;;
1307*b30d1939SAndy Fiddaman					*)		implib="$implib $d" ;;
1308*b30d1939SAndy Fiddaman					esac
1309*b30d1939SAndy Fiddaman					;;
1310*b30d1939SAndy Fiddaman				*)	implib="$implib $d"
1311*b30d1939SAndy Fiddaman					;;
1312*b30d1939SAndy Fiddaman				esac
1313*b30d1939SAndy Fiddaman			fi
1314*b30d1939SAndy Fiddaman		done
1315*b30d1939SAndy Fiddaman	fi
1316*b30d1939SAndy Fiddaman	tstlib="$tstlib $implib"
1317*b30d1939SAndy Fiddaman	if	$cc -Dtype=void -Dcall=exit -c tstlib.$src && mv tstlib.$obj tst.$obj
1318*b30d1939SAndy Fiddaman	then	case $plusplus in
1319*b30d1939SAndy Fiddaman		'')	probe_lxx= ;;
1320*b30d1939SAndy Fiddaman		esac
1321*b30d1939SAndy Fiddaman		l=
1322*b30d1939SAndy Fiddaman		for sym in $probe_l $probe_lxx
1323*b30d1939SAndy Fiddaman		do	case $l in
1324*b30d1939SAndy Fiddaman			"")	l=$sym; continue ;;
1325*b30d1939SAndy Fiddaman			esac
1326*b30d1939SAndy Fiddaman			rm -f tstlib.$exe
1327*b30d1939SAndy Fiddaman			if	$cc -o tstlib.$exe tst.$obj -l$l
1328*b30d1939SAndy Fiddaman			then	eval set x $probe_ldmap
1329*b30d1939SAndy Fiddaman				while	:
1330*b30d1939SAndy Fiddaman				do	shift
1331*b30d1939SAndy Fiddaman					case $# in
1332*b30d1939SAndy Fiddaman					0)	break ;;
1333*b30d1939SAndy Fiddaman					esac
1334*b30d1939SAndy Fiddaman					d=`$cc -Dtype=int -Dcall=$sym $static $1 tstlib.$src -l$l 2>&1 | sed -e '/[\\\\\\/].*[\\\\\\/]lib[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+]*\.[^\\\\\\/]*\$/!d' -e 's,^[^\\\\\/]*,,' -e 's,[\\\\\\/]lib[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+][abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+]*\.[^\\\\\\/]*\$,,' -e '/^[\\\\\\/]/!d' | sort -u`
1335*b30d1939SAndy Fiddaman					case $d in
1336*b30d1939SAndy Fiddaman					?*)	tstlib="$tstlib $d" ;;
1337*b30d1939SAndy Fiddaman					esac
1338*b30d1939SAndy Fiddaman				done
1339*b30d1939SAndy Fiddaman			fi
1340*b30d1939SAndy Fiddaman			l=
1341*b30d1939SAndy Fiddaman		done
1342*b30d1939SAndy Fiddaman	fi
1343*b30d1939SAndy Fiddaman	libstd=
1344*b30d1939SAndy Fiddaman	libset=
1345*b30d1939SAndy Fiddaman	stdlibroot="/ /usr/"
1346*b30d1939SAndy Fiddaman	for d in $tstlib
1347*b30d1939SAndy Fiddaman	do	case $d in
1348*b30d1939SAndy Fiddaman		[\\/]lib|[\\/]usr[\\/]lib)
1349*b30d1939SAndy Fiddaman			;;
1350*b30d1939SAndy Fiddaman		*)	case " $stdlib " in
1351*b30d1939SAndy Fiddaman			*\ $d\ *)
1352*b30d1939SAndy Fiddaman				;;
1353*b30d1939SAndy Fiddaman			*)	if	ls $d ${PREROOT+$PREROOT/../$d} > tmp.tmp && test -s tmp.tmp
1354*b30d1939SAndy Fiddaman				then	for i in $probe_lib $obj
1355*b30d1939SAndy Fiddaman					do	if	grep -i "\\.$i\$" tmp.tmp >/dev/null
1356*b30d1939SAndy Fiddaman						then	case " $probe_lib_append " in
1357*b30d1939SAndy Fiddaman							*\ $d\ *)
1358*b30d1939SAndy Fiddaman								libstd="$libstd $d"
1359*b30d1939SAndy Fiddaman								;;
1360*b30d1939SAndy Fiddaman							*)	stdlib="$stdlib $d"
1361*b30d1939SAndy Fiddaman								case $d in
1362*b30d1939SAndy Fiddaman								/usr/lib|/usr/lib/*)
1363*b30d1939SAndy Fiddaman									;;
1364*b30d1939SAndy Fiddaman								/usr/lib?*)
1365*b30d1939SAndy Fiddaman									e=`echo $d | sed -e 's,/usr,,'`
1366*b30d1939SAndy Fiddaman									g=`echo $d/libc.* $e/libc.*`
1367*b30d1939SAndy Fiddaman									case "$e $g " in
1368*b30d1939SAndy Fiddaman									*".* "*);;
1369*b30d1939SAndy Fiddaman									*)	stdlib="$stdlib $e"
1370*b30d1939SAndy Fiddaman										stdlibroot=
1371*b30d1939SAndy Fiddaman										;;
1372*b30d1939SAndy Fiddaman									esac
1373*b30d1939SAndy Fiddaman									;;
1374*b30d1939SAndy Fiddaman								esac
1375*b30d1939SAndy Fiddaman								;;
1376*b30d1939SAndy Fiddaman							esac
1377*b30d1939SAndy Fiddaman							case $libset in
1378*b30d1939SAndy Fiddaman							"")	case $i in
1379*b30d1939SAndy Fiddaman								$obj)	;;
1380*b30d1939SAndy Fiddaman								*)	libset=1
1381*b30d1939SAndy Fiddaman									lib=$i
1382*b30d1939SAndy Fiddaman									;;
1383*b30d1939SAndy Fiddaman								esac
1384*b30d1939SAndy Fiddaman								;;
1385*b30d1939SAndy Fiddaman							esac
1386*b30d1939SAndy Fiddaman							break
1387*b30d1939SAndy Fiddaman						fi
1388*b30d1939SAndy Fiddaman					done
1389*b30d1939SAndy Fiddaman				fi
1390*b30d1939SAndy Fiddaman				;;
1391*b30d1939SAndy Fiddaman			esac
1392*b30d1939SAndy Fiddaman			;;
1393*b30d1939SAndy Fiddaman		esac
1394*b30d1939SAndy Fiddaman	done
1395*b30d1939SAndy Fiddaman	for d in `$ld --verbose 2>&1 | sed -e '/SEARCH_DIR/!d' -e 's/[ 	][ 	][ 	]*/ /g' -e 's/SEARCH_DIR(\([^ ]*\));/\1/g' -e 's, //[^ ]*,,' -e 's,",,g'`
1396*b30d1939SAndy Fiddaman	do	if	test -d $d
1397*b30d1939SAndy Fiddaman		then	case " $stdlib $libstd " in
1398*b30d1939SAndy Fiddaman			*\ ${d}\ *)
1399*b30d1939SAndy Fiddaman				;;
1400*b30d1939SAndy Fiddaman			*)	libstd="$libstd $d"
1401*b30d1939SAndy Fiddaman				;;
1402*b30d1939SAndy Fiddaman			esac
1403*b30d1939SAndy Fiddaman		fi
1404*b30d1939SAndy Fiddaman	done
1405*b30d1939SAndy Fiddaman	case $hosted in
1406*b30d1939SAndy Fiddaman	"")	tstlib= ;;
1407*b30d1939SAndy Fiddaman	*)	tstlib="$stdlibroot /usr/ccs/ /usr/local/" ;;
1408*b30d1939SAndy Fiddaman	esac
1409*b30d1939SAndy Fiddaman	case $stdlibroot in
1410*b30d1939SAndy Fiddaman	?*)	d=
1411*b30d1939SAndy Fiddaman		for f in $stdinclude
1412*b30d1939SAndy Fiddaman		do	f=`echo $f | sed -e 's,[^\\\\/]*\$,,'`
1413*b30d1939SAndy Fiddaman			d="$d $f"
1414*b30d1939SAndy Fiddaman		done
1415*b30d1939SAndy Fiddaman		tstlib="$d $tstlib"
1416*b30d1939SAndy Fiddaman		;;
1417*b30d1939SAndy Fiddaman	esac
1418*b30d1939SAndy Fiddaman	$cc -c doti.$src > all.tmp
1419*b30d1939SAndy Fiddaman	for f in $probe_libdir
1420*b30d1939SAndy Fiddaman	do	for d in $stdlib $libstd $tstlib
1421*b30d1939SAndy Fiddaman		do	if	test -d ${d}${f}
1422*b30d1939SAndy Fiddaman			then	ls ${d}${f} ${PREROOT:+$PREROOT/../${d}${f}} |
1423*b30d1939SAndy Fiddaman				while read i
1424*b30d1939SAndy Fiddaman				do	for j in ${d}${f}/${i} ${PREROOT:+$PREROOT/../${d}${f}/${i}}
1425*b30d1939SAndy Fiddaman					do	if	test -f $j -a -r $j -a -s $j
1426*b30d1939SAndy Fiddaman						then	echo $i
1427*b30d1939SAndy Fiddaman							break
1428*b30d1939SAndy Fiddaman						fi
1429*b30d1939SAndy Fiddaman					done
1430*b30d1939SAndy Fiddaman				done > tmp.tmp
1431*b30d1939SAndy Fiddaman				if	test -s tmp.tmp
1432*b30d1939SAndy Fiddaman				then	if	egrep -i "^${prefix_archive}[abcdefghijklmnopqrstuvwxyz0123456789_][abcdefghijklmnopqrstuvwxyz0123456789_]*\\.$lib\$" tmp.tmp >lib.tmp ||
1433*b30d1939SAndy Fiddaman						egrep -i "\\.$obj\$" tmp.tmp >/dev/null ||
1434*b30d1939SAndy Fiddaman						egrep -i "^${prefix_shared}[abcdefghijklmnopqrstuvwxyz0123456789_][abcdefghijklmnopqrstuvwxyz0123456789_]*\\$so(.[0-9]+)*\$" tmp.tmp >>lib.tmp
1435*b30d1939SAndy Fiddaman					then	if	test -s lib.tmp
1436*b30d1939SAndy Fiddaman						then	sed -e "s,.*/,," -e 's,^'${prefix_archive}'\(.*\)\.'$lib'$,\1,g' -e 's,^'${prefix_shared}'\(.*\)\'$so'[.0-9]*,\1,g' lib.tmp | sort -u > tmp.tmp
1437*b30d1939SAndy Fiddaman							xs=`sort all.tmp all.tmp tmp.tmp | uniq -u`
1438*b30d1939SAndy Fiddaman							case $xs in
1439*b30d1939SAndy Fiddaman							'')	continue ;;
1440*b30d1939SAndy Fiddaman							esac
1441*b30d1939SAndy Fiddaman							ok=0
1442*b30d1939SAndy Fiddaman							for x in $xs
1443*b30d1939SAndy Fiddaman							do	case $x in
1444*b30d1939SAndy Fiddaman								*_p)	continue ;; # linux gcc known to hang for -lc_p
1445*b30d1939SAndy Fiddaman								esac
1446*b30d1939SAndy Fiddaman								if	$cc -o doti.$exe doti.$obj -l$x 2>e
1447*b30d1939SAndy Fiddaman								then	ok=1
1448*b30d1939SAndy Fiddaman								else	if	test -s e && egrep -i ":.*[ 	](find|found|locate|search|-l$x)[ 	]" e > /dev/null
1449*b30d1939SAndy Fiddaman									then	if	egrep -i ":.*[ 	](access|permission)[ 	]" e
1450*b30d1939SAndy Fiddaman										then	: maybe
1451*b30d1939SAndy Fiddaman										else	ok=0
1452*b30d1939SAndy Fiddaman											break
1453*b30d1939SAndy Fiddaman										fi
1454*b30d1939SAndy Fiddaman									fi
1455*b30d1939SAndy Fiddaman									case $Lflag in
1456*b30d1939SAndy Fiddaman									1)	if	$cc -L${d}${f} -o doti.$exe doti.$obj -l$x
1457*b30d1939SAndy Fiddaman										then	ok=0
1458*b30d1939SAndy Fiddaman											break
1459*b30d1939SAndy Fiddaman										fi
1460*b30d1939SAndy Fiddaman										;;
1461*b30d1939SAndy Fiddaman									esac
1462*b30d1939SAndy Fiddaman								fi
1463*b30d1939SAndy Fiddaman							done
1464*b30d1939SAndy Fiddaman							case $ok in
1465*b30d1939SAndy Fiddaman							0)	continue ;;
1466*b30d1939SAndy Fiddaman							esac
1467*b30d1939SAndy Fiddaman							sort -u all.tmp tmp.tmp > lib.tmp
1468*b30d1939SAndy Fiddaman							mv lib.tmp all.tmp
1469*b30d1939SAndy Fiddaman						fi
1470*b30d1939SAndy Fiddaman						case " $stdlib $libstd " in
1471*b30d1939SAndy Fiddaman						*" ${d}${f} "*)
1472*b30d1939SAndy Fiddaman							;;
1473*b30d1939SAndy Fiddaman						*)	if	test -d ${d}${f}/fsoft
1474*b30d1939SAndy Fiddaman							then	stdlib="$stdlib ${d}${f}/"'$(FLOAT_OPTION)'
1475*b30d1939SAndy Fiddaman							fi
1476*b30d1939SAndy Fiddaman							stdlib="$stdlib ${d}${f}"
1477*b30d1939SAndy Fiddaman							;;
1478*b30d1939SAndy Fiddaman						esac
1479*b30d1939SAndy Fiddaman					fi
1480*b30d1939SAndy Fiddaman				fi
1481*b30d1939SAndy Fiddaman			fi
1482*b30d1939SAndy Fiddaman		done
1483*b30d1939SAndy Fiddaman	done
1484*b30d1939SAndy Fiddaman	stdlib="$stdlib $libstd"
1485*b30d1939SAndy Fiddaman	case $stdlib in
1486*b30d1939SAndy Fiddaman	*/shlib*)
1487*b30d1939SAndy Fiddaman		dy=
1488*b30d1939SAndy Fiddaman		st=
1489*b30d1939SAndy Fiddaman		for i in $stdlib $libstd
1490*b30d1939SAndy Fiddaman		do	case $i in
1491*b30d1939SAndy Fiddaman			*/shlib)	dy="$dy $i" ;;
1492*b30d1939SAndy Fiddaman			*)		st="$st $i" ;;
1493*b30d1939SAndy Fiddaman			esac
1494*b30d1939SAndy Fiddaman		done
1495*b30d1939SAndy Fiddaman		for i in /var
1496*b30d1939SAndy Fiddaman		do	if	test -d $i/shlib
1497*b30d1939SAndy Fiddaman			then	dy="$dy $i/shlib"
1498*b30d1939SAndy Fiddaman			fi
1499*b30d1939SAndy Fiddaman		done
1500*b30d1939SAndy Fiddaman		stdlib="$dy $st"
1501*b30d1939SAndy Fiddaman		;;
1502*b30d1939SAndy Fiddaman	esac
1503*b30d1939SAndy Fiddaman	;;
1504*b30d1939SAndy Fiddamanesac
1505*b30d1939SAndy Fiddaman
1506*b30d1939SAndy Fiddamanif	$cc -c prefix.$src
1507*b30d1939SAndy Fiddamanthen	eval set x $probe_symprefix
1508*b30d1939SAndy Fiddaman	while	:
1509*b30d1939SAndy Fiddaman	do	shift
1510*b30d1939SAndy Fiddaman		case $# in
1511*b30d1939SAndy Fiddaman		0)	break ;;
1512*b30d1939SAndy Fiddaman		esac
1513*b30d1939SAndy Fiddaman		if	$nm $nmflags prefix.$obj | grep -c ${1}prefix >/dev/null
1514*b30d1939SAndy Fiddaman		then	symprefix=$1
1515*b30d1939SAndy Fiddaman			break
1516*b30d1939SAndy Fiddaman		fi
1517*b30d1939SAndy Fiddaman	done
1518*b30d1939SAndy Fiddamanfi
1519*b30d1939SAndy Fiddaman
1520*b30d1939SAndy Fiddamanif	$cc -c warn.$src 2>e && test -f warn.$obj
1521*b30d1939SAndy Fiddamanthen	e=`wc -c < e`
1522*b30d1939SAndy Fiddaman
1523*b30d1939SAndy Fiddaman	eval set x $probe_debug
1524*b30d1939SAndy Fiddaman	while	:
1525*b30d1939SAndy Fiddaman	do	shift
1526*b30d1939SAndy Fiddaman		case $# in
1527*b30d1939SAndy Fiddaman		0)	break ;;
1528*b30d1939SAndy Fiddaman		esac
1529*b30d1939SAndy Fiddaman		rm -f warn.$obj
1530*b30d1939SAndy Fiddaman		$cc $1 -c warn.$src 2>e && test -f warn.$obj || continue
1531*b30d1939SAndy Fiddaman		case `wc -c < e` in
1532*b30d1939SAndy Fiddaman		$e)	debug=$1; break ;;
1533*b30d1939SAndy Fiddaman		esac
1534*b30d1939SAndy Fiddaman	done
1535*b30d1939SAndy Fiddaman
1536*b30d1939SAndy Fiddaman	eval set x $probe_no_protect
1537*b30d1939SAndy Fiddaman	while	:
1538*b30d1939SAndy Fiddaman	do	shift
1539*b30d1939SAndy Fiddaman		case $# in
1540*b30d1939SAndy Fiddaman		0)	break ;;
1541*b30d1939SAndy Fiddaman		esac
1542*b30d1939SAndy Fiddaman		rm -f warn.$obj
1543*b30d1939SAndy Fiddaman		$cc $1 -c warn.$src 2>e && test -f warn.$obj || continue
1544*b30d1939SAndy Fiddaman		case `wc -c < e` in
1545*b30d1939SAndy Fiddaman		$e)	no_protect=$1; break ;;
1546*b30d1939SAndy Fiddaman		esac
1547*b30d1939SAndy Fiddaman	done
1548*b30d1939SAndy Fiddaman
1549*b30d1939SAndy Fiddaman	case $version_string in
1550*b30d1939SAndy Fiddaman	$probe_gcc_version)	probe_optimize="$probe_gcc_optimize $probe_optimize" ;;
1551*b30d1939SAndy Fiddaman	esac
1552*b30d1939SAndy Fiddaman	eval set x $probe_optimize
1553*b30d1939SAndy Fiddaman	while	:
1554*b30d1939SAndy Fiddaman	do	shift
1555*b30d1939SAndy Fiddaman		case $# in
1556*b30d1939SAndy Fiddaman		0)	break ;;
1557*b30d1939SAndy Fiddaman		esac
1558*b30d1939SAndy Fiddaman		rm -f warn.$obj
1559*b30d1939SAndy Fiddaman		$cc $1 -c warn.$src 2>e && test -f warn.$obj || continue
1560*b30d1939SAndy Fiddaman		case `wc -c < e` in
1561*b30d1939SAndy Fiddaman		$e)	optimize=$1; break ;;
1562*b30d1939SAndy Fiddaman		esac
1563*b30d1939SAndy Fiddaman	done
1564*b30d1939SAndy Fiddaman
1565*b30d1939SAndy Fiddaman	eval set x $probe_strict
1566*b30d1939SAndy Fiddaman	while	:
1567*b30d1939SAndy Fiddaman	do	shift
1568*b30d1939SAndy Fiddaman		case $# in
1569*b30d1939SAndy Fiddaman		0)	break ;;
1570*b30d1939SAndy Fiddaman		esac
1571*b30d1939SAndy Fiddaman		rm -f warn.$obj
1572*b30d1939SAndy Fiddaman		$cc $1 -c warn.$src 2>e && test -f warn.$obj || continue
1573*b30d1939SAndy Fiddaman		n=`wc -c < e`
1574*b30d1939SAndy Fiddaman		if	test $n -ge $e
1575*b30d1939SAndy Fiddaman		then	strict=$1
1576*b30d1939SAndy Fiddaman			break
1577*b30d1939SAndy Fiddaman		fi
1578*b30d1939SAndy Fiddaman	done
1579*b30d1939SAndy Fiddaman
1580*b30d1939SAndy Fiddaman	$cc -c warn1.$src 2>e
1581*b30d1939SAndy Fiddaman	o=`wc -c < e`
1582*b30d1939SAndy Fiddaman	eval set x $probe_warn
1583*b30d1939SAndy Fiddaman	while	:
1584*b30d1939SAndy Fiddaman	do	shift
1585*b30d1939SAndy Fiddaman		case $# in
1586*b30d1939SAndy Fiddaman		0)	break ;;
1587*b30d1939SAndy Fiddaman		esac
1588*b30d1939SAndy Fiddaman		rm -f warn.$obj warn.$exe
1589*b30d1939SAndy Fiddaman		$cc -o warn.$exe $1 warn.$src 2>e && test -f warn.$exe || continue
1590*b30d1939SAndy Fiddaman		n=`wc -c < e`
1591*b30d1939SAndy Fiddaman		for i in $warn_enum
1592*b30d1939SAndy Fiddaman		do	rm -f warn$i.$obj
1593*b30d1939SAndy Fiddaman			$cc -c $1 warn$i.$src 2>e && test -f warn$i.$obj || continue
1594*b30d1939SAndy Fiddaman			n=`wc -c < e`
1595*b30d1939SAndy Fiddaman			if	test $n -gt $o
1596*b30d1939SAndy Fiddaman			then	warn=$1
1597*b30d1939SAndy Fiddaman				break 2
1598*b30d1939SAndy Fiddaman			fi
1599*b30d1939SAndy Fiddaman		done
1600*b30d1939SAndy Fiddaman	done
1601*b30d1939SAndy Fiddaman
1602*b30d1939SAndy Fiddamanfi
1603*b30d1939SAndy Fiddaman
1604*b30d1939SAndy Fiddamanwhile	:
1605*b30d1939SAndy Fiddamando	case $hosted in
1606*b30d1939SAndy Fiddaman	1)	rm -f readonly.$exe
1607*b30d1939SAndy Fiddaman		eval set x '""' $probe_readonly
1608*b30d1939SAndy Fiddaman		while	:
1609*b30d1939SAndy Fiddaman		do	shift
1610*b30d1939SAndy Fiddaman			case $# in
1611*b30d1939SAndy Fiddaman			0)	break ;;
1612*b30d1939SAndy Fiddaman			esac
1613*b30d1939SAndy Fiddaman			for co in '' -Dtest_const
1614*b30d1939SAndy Fiddaman			do	rm -f readonly.$exe
1615*b30d1939SAndy Fiddaman				if	$cc -o readonly.$exe $co $1 readonly.$src && $executable readonly.$exe
1616*b30d1939SAndy Fiddaman				then	if	./readonly.$exe >/dev/null 2>&1
1617*b30d1939SAndy Fiddaman					then	:
1618*b30d1939SAndy Fiddaman					else	readonly=$1
1619*b30d1939SAndy Fiddaman						break 3
1620*b30d1939SAndy Fiddaman					fi
1621*b30d1939SAndy Fiddaman				fi
1622*b30d1939SAndy Fiddaman			done
1623*b30d1939SAndy Fiddaman		done
1624*b30d1939SAndy Fiddaman		rm -f readonly.$exe readonly.s
1625*b30d1939SAndy Fiddaman		if	$cc -S readonly.$src && test -f readonly.s
1626*b30d1939SAndy Fiddaman		then	if	sed	-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)data/\1text/' \
1627*b30d1939SAndy Fiddaman					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)zero[ 	][ 	]*/\1set	.,.+/' \
1628*b30d1939SAndy Fiddaman					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*1/\1byte 0/' \
1629*b30d1939SAndy Fiddaman					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*2/\1byte 0,0/' \
1630*b30d1939SAndy Fiddaman					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*3/\1byte 0,0,0/' \
1631*b30d1939SAndy Fiddaman					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*4/\1byte 0,0,0,0/' \
1632*b30d1939SAndy Fiddaman					readonly.s > ro.s && $cc -o readonly.$exe ro.s && $executable readonly.$exe
1633*b30d1939SAndy Fiddaman			then	if	./readonly.$exe >/dev/null 2>&1
1634*b30d1939SAndy Fiddaman				then	:
1635*b30d1939SAndy Fiddaman				else	readonly='-S.data'
1636*b30d1939SAndy Fiddaman					break
1637*b30d1939SAndy Fiddaman				fi
1638*b30d1939SAndy Fiddaman			fi
1639*b30d1939SAndy Fiddaman			rm -f readonly.$exe
1640*b30d1939SAndy Fiddaman			if	sed	-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)idat/\1code/' \
1641*b30d1939SAndy Fiddaman					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)zero[ 	][ 	]*/\1set	.,.+/' \
1642*b30d1939SAndy Fiddaman					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*1/\1byte 0/' \
1643*b30d1939SAndy Fiddaman					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*2/\1byte 0,0/' \
1644*b30d1939SAndy Fiddaman					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*3/\1byte 0,0,0/' \
1645*b30d1939SAndy Fiddaman					-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)space[ 	][ 	]*4/\1byte 0,0,0,0/' \
1646*b30d1939SAndy Fiddaman					readonly.s > ro.s && $cc -o readonly.$exe ro.s && $executable readonly.$exe
1647*b30d1939SAndy Fiddaman			then	if	./readonly.$exe >/dev/null 2>&1
1648*b30d1939SAndy Fiddaman				then	:
1649*b30d1939SAndy Fiddaman				else	readonly='-S.idat'
1650*b30d1939SAndy Fiddaman					break
1651*b30d1939SAndy Fiddaman				fi
1652*b30d1939SAndy Fiddaman			fi
1653*b30d1939SAndy Fiddaman			if	sed	-e 's/^\([ 	]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ 	]*\.*\)data/\1rdata/' \
1654*b30d1939SAndy Fiddaman					readonly.s > ro.s && $cc -o readonly.$exe ro.s && $executable readonly.$exe
1655*b30d1939SAndy Fiddaman			then	if	./readonly.$exe >/dev/null 2>&1
1656*b30d1939SAndy Fiddaman				then	:
1657*b30d1939SAndy Fiddaman				else	readonly='-S.rdata'
1658*b30d1939SAndy Fiddaman					break
1659*b30d1939SAndy Fiddaman				fi
1660*b30d1939SAndy Fiddaman			fi
1661*b30d1939SAndy Fiddaman		fi
1662*b30d1939SAndy Fiddaman		;;
1663*b30d1939SAndy Fiddaman	esac
1664*b30d1939SAndy Fiddaman	break
1665*b30d1939SAndy Fiddamandone
1666*b30d1939SAndy Fiddaman
1667*b30d1939SAndy Fiddamancase $stdc in
1668*b30d1939SAndy Fiddaman?*)	dialect="$dialect ANSI" ;;
1669*b30d1939SAndy Fiddamanesac
1670*b30d1939SAndy Fiddamancase $plusplus in
1671*b30d1939SAndy Fiddaman?*)	dialect="$dialect C++" ;;
1672*b30d1939SAndy Fiddamanesac
1673*b30d1939SAndy Fiddamancase $hosted in
1674*b30d1939SAndy Fiddaman"")	dialect="$dialect CROSS" ;;
1675*b30d1939SAndy Fiddamanesac
1676*b30d1939SAndy Fiddamancase $doti in
1677*b30d1939SAndy Fiddaman?*)	dialect="$dialect DOTI" ;;
1678*b30d1939SAndy Fiddamanesac
1679*b30d1939SAndy Fiddamancase $gnu in
1680*b30d1939SAndy Fiddaman?*)	dialect="$dialect GNU" ;;
1681*b30d1939SAndy Fiddamanesac
1682*b30d1939SAndy Fiddamancase $so:$dynamic:$static in
1683*b30d1939SAndy Fiddaman::)	;;
1684*b30d1939SAndy Fiddaman*)	dialect="$dialect DYNAMIC"
1685*b30d1939SAndy Fiddaman	case $soversion in
1686*b30d1939SAndy Fiddaman	?*)	dialect="$dialect VERSION" ;;
1687*b30d1939SAndy Fiddaman	esac
1688*b30d1939SAndy Fiddaman	;;
1689*b30d1939SAndy Fiddamanesac
1690*b30d1939SAndy Fiddamancase $implicitc in
1691*b30d1939SAndy Fiddaman?*)	dialect="$dialect IMPLICITC" ;;
1692*b30d1939SAndy Fiddamanesac
1693*b30d1939SAndy Fiddamancase $ptrcopy in
1694*b30d1939SAndy Fiddaman?*)	dialect="$dialect PTRCOPY" ;;
1695*b30d1939SAndy Fiddamanesac
1696*b30d1939SAndy Fiddamancase $ptrimplicit in
1697*b30d1939SAndy Fiddaman?*)	dialect="$dialect PTRIMPLICIT" ;;
1698*b30d1939SAndy Fiddamanesac
1699*b30d1939SAndy Fiddamancase $ptrmkdir in
1700*b30d1939SAndy Fiddaman?*)	dialect="$dialect PTRMKDIR" ;;
1701*b30d1939SAndy Fiddamanesac
1702*b30d1939SAndy Fiddamancase $libpp in
1703*b30d1939SAndy Fiddaman?*)	dialect="$dialect LIBPP" ;;
1704*b30d1939SAndy Fiddamanesac
1705*b30d1939SAndy Fiddamancase $toucho in
1706*b30d1939SAndy Fiddaman?*)	dialect="$dialect TOUCHO" ;;
1707*b30d1939SAndy Fiddamanesac
1708*b30d1939SAndy Fiddamancase $dDflag in
1709*b30d1939SAndy Fiddaman?*)	dialect="$dialect -dD" ;;
1710*b30d1939SAndy Fiddamanesac
1711*b30d1939SAndy Fiddaman# 2005-05-25 use $(CC.INCLUDE.LOCAL) instead
1712*b30d1939SAndy Fiddamancase $include_local in
1713*b30d1939SAndy Fiddaman?*)	dialect="$dialect -I-" ;;
1714*b30d1939SAndy Fiddamanesac
1715*b30d1939SAndy Fiddamancase $Lflag in
1716*b30d1939SAndy Fiddaman?*)	dialect="$dialect -L" ;;
1717*b30d1939SAndy Fiddamanesac
1718*b30d1939SAndy Fiddaman
1719*b30d1939SAndy Fiddamanppcmd='$(CPP)'
1720*b30d1939SAndy Fiddamanppdir='$(CPP:D)'
1721*b30d1939SAndy Fiddamaneval ppopt='"'$ppopt'"'
1722*b30d1939SAndy Fiddamaneval ppenv='"'$ppenv'"'
1723*b30d1939SAndy Fiddaman
1724*b30d1939SAndy Fiddamanset x "" .$exe
1725*b30d1939SAndy Fiddamanshift
1726*b30d1939SAndy Fiddamanexe=
1727*b30d1939SAndy Fiddamanfor i
1728*b30d1939SAndy Fiddamando	rm -f require$i
1729*b30d1939SAndy Fiddamandone
1730*b30d1939SAndy Fiddamanif	$cc -o require require.$src
1731*b30d1939SAndy Fiddamanthen	for i
1732*b30d1939SAndy Fiddaman	do	if	$executable require$i
1733*b30d1939SAndy Fiddaman		then	exe=$i
1734*b30d1939SAndy Fiddaman			break
1735*b30d1939SAndy Fiddaman		fi
1736*b30d1939SAndy Fiddaman	done
1737*b30d1939SAndy Fiddamanfi
1738*b30d1939SAndy Fiddamancase $sa:$sd:$so in
1739*b30d1939SAndy Fiddaman::?*)	eval set x $probe_sa
1740*b30d1939SAndy Fiddaman	while	:
1741*b30d1939SAndy Fiddaman	do	shift
1742*b30d1939SAndy Fiddaman		case $# in
1743*b30d1939SAndy Fiddaman		0)	break ;;
1744*b30d1939SAndy Fiddaman		esac
1745*b30d1939SAndy Fiddaman		for i in $stdlib
1746*b30d1939SAndy Fiddaman		do	eval j="'" $i/lib*$1 "'"
1747*b30d1939SAndy Fiddaman			case $j in
1748*b30d1939SAndy Fiddaman			" $i/lib*$1 ")
1749*b30d1939SAndy Fiddaman				eval j="'" $i/lib*$1.[0123456789]* "'"
1750*b30d1939SAndy Fiddaman				case $j in
1751*b30d1939SAndy Fiddaman				" $i/lib*$1.[0123456789]* ")
1752*b30d1939SAndy Fiddaman					continue
1753*b30d1939SAndy Fiddaman					;;
1754*b30d1939SAndy Fiddaman				esac
1755*b30d1939SAndy Fiddaman				;;
1756*b30d1939SAndy Fiddaman			esac
1757*b30d1939SAndy Fiddaman			sa=$1
1758*b30d1939SAndy Fiddaman			lddynamic=-Bdynamic
1759*b30d1939SAndy Fiddaman			ldstatic=-Bstatic
1760*b30d1939SAndy Fiddaman			break 2
1761*b30d1939SAndy Fiddaman		done
1762*b30d1939SAndy Fiddaman	done
1763*b30d1939SAndy Fiddaman	;;
1764*b30d1939SAndy Fiddamanesac
1765*b30d1939SAndy Fiddamancase $ldscript in
1766*b30d1939SAndy Fiddaman"")	case $so in
1767*b30d1939SAndy Fiddaman	.lib)	ldscript=".def .exp" ;;
1768*b30d1939SAndy Fiddaman	*)	ldscript=".ld" ;;
1769*b30d1939SAndy Fiddaman	esac
1770*b30d1939SAndy Fiddaman	;;
1771*b30d1939SAndy Fiddamanesac
1772*b30d1939SAndy Fiddamancase $hosttype in
1773*b30d1939SAndy Fiddaman'')		hosttype=unknown ;;
1774*b30d1939SAndy Fiddamansgi.mips3)	dll_variants='sgi.mips2:o32:-mips2 sgi.mips4:64:-mips4' ;;
1775*b30d1939SAndy Fiddamansgi.mips4)	dll_variants='sgi.mips2:o32:-mips2 sgi.mips3:n32:-mips3' ;;
1776*b30d1939SAndy Fiddamanesac
1777*b30d1939SAndy Fiddaman
1778*b30d1939SAndy Fiddamancase $hosted in
1779*b30d1939SAndy Fiddaman"")	ccnative=`echo $cc | sed -e 's,.*/,,'`
1780*b30d1939SAndy Fiddaman	ccs=$ccnative
1781*b30d1939SAndy Fiddaman	for c in cc gcc
1782*b30d1939SAndy Fiddaman	do	case " $ccs " in
1783*b30d1939SAndy Fiddaman		*" $c "*)	;;
1784*b30d1939SAndy Fiddaman		*)		ccs="$ccs $c" ;;
1785*b30d1939SAndy Fiddaman		esac
1786*b30d1939SAndy Fiddaman	done
1787*b30d1939SAndy Fiddaman	for p in $path
1788*b30d1939SAndy Fiddaman	do	for c in $ccs
1789*b30d1939SAndy Fiddaman		do	if	$executable $p/$c
1790*b30d1939SAndy Fiddaman			then	rm -f native.$exe
1791*b30d1939SAndy Fiddaman				if	$p/$c -o native.$exe doti.$src && ./native.$exe
1792*b30d1939SAndy Fiddaman				then	ccnative=$p/$c
1793*b30d1939SAndy Fiddaman					exectype=`package CC="$ccnative" || $SHELL -c "package CC='$ccnative'"`
1794*b30d1939SAndy Fiddaman					case $exectype in
1795*b30d1939SAndy Fiddaman					*[Uu][Ss][Aa][Gg][Ee]:*)
1796*b30d1939SAndy Fiddaman						exectype=`PATH=$_probe_PATH; export PATH; package CC="$ccnative" || $SHELL -c "package CC='$ccnative'"`
1797*b30d1939SAndy Fiddaman						;;
1798*b30d1939SAndy Fiddaman					esac
1799*b30d1939SAndy Fiddaman					break 2
1800*b30d1939SAndy Fiddaman				fi
1801*b30d1939SAndy Fiddaman			fi
1802*b30d1939SAndy Fiddaman		done
1803*b30d1939SAndy Fiddaman	done
1804*b30d1939SAndy Fiddaman	;;
1805*b30d1939SAndy Fiddaman*)	ccnative=$cc
1806*b30d1939SAndy Fiddaman	exectype=$hosttype
1807*b30d1939SAndy Fiddaman	;;
1808*b30d1939SAndy Fiddamanesac
1809*b30d1939SAndy Fiddaman
1810*b30d1939SAndy Fiddaman# runtime shared lib exported symbol resolution
1811*b30d1939SAndy Fiddaman
1812*b30d1939SAndy Fiddamancase $cc_dll:$shared in
1813*b30d1939SAndy Fiddaman:|:*|*:);;
1814*b30d1939SAndy Fiddaman*)	cat > cmd.c <<'!'
1815*b30d1939SAndy Fiddaman#include <stdio.h>
1816*b30d1939SAndy Fiddaman#include <dlfcn.h>
1817*b30d1939SAndy Fiddamantypedef int (*Lib_f)(int**, int**, int**);
1818*b30d1939SAndy Fiddamanint	gbl_def = 1;
1819*b30d1939SAndy Fiddamanint	gbl_ref = 1;
1820*b30d1939SAndy Fiddamanint	gbl_ext;
1821*b30d1939SAndy Fiddamanint main(int argc, char** argv)
1822*b30d1939SAndy Fiddaman{
1823*b30d1939SAndy Fiddaman	void*	dll;
1824*b30d1939SAndy Fiddaman	Lib_f	lib;
1825*b30d1939SAndy Fiddaman	int*	def;
1826*b30d1939SAndy Fiddaman	int*	ref;
1827*b30d1939SAndy Fiddaman	int*	ext;
1828*b30d1939SAndy Fiddaman
1829*b30d1939SAndy Fiddaman	if (!(dll = dlopen(*++argv, RTLD_LAZY)))
1830*b30d1939SAndy Fiddaman		fprintf(stderr, "library not found\n");
1831*b30d1939SAndy Fiddaman	else if (!((lib = (Lib_f)dlsym(dll, "lib"))) && !(lib = (Lib_f)dlsym(dll, "_lib")))
1832*b30d1939SAndy Fiddaman		fprintf(stderr, "symbol not found\n");
1833*b30d1939SAndy Fiddaman	else if ((*lib)(&def, &ref, &ext))
1834*b30d1939SAndy Fiddaman		fprintf(stderr, "function failed\n");
1835*b30d1939SAndy Fiddaman	else if (def == &gbl_def && ref == &gbl_ref && ext == &gbl_ext)
1836*b30d1939SAndy Fiddaman		printf("ALL\n");
1837*b30d1939SAndy Fiddaman	else if (ref == &gbl_ref && ext == &gbl_ext)
1838*b30d1939SAndy Fiddaman		printf("REF\n");
1839*b30d1939SAndy Fiddaman	else if (ext == &gbl_ext)
1840*b30d1939SAndy Fiddaman		printf("EXT\n");
1841*b30d1939SAndy Fiddaman	return 0;
1842*b30d1939SAndy Fiddaman}
1843*b30d1939SAndy Fiddaman!
1844*b30d1939SAndy Fiddaman	cat > lib.c <<'!'
1845*b30d1939SAndy Fiddamanint	gbl_def = 1;
1846*b30d1939SAndy Fiddamanint	gbl_ref;
1847*b30d1939SAndy Fiddamanint	gbl_ext;
1848*b30d1939SAndy Fiddamanint lib(int** def, int** ref, int** ext)
1849*b30d1939SAndy Fiddaman{
1850*b30d1939SAndy Fiddaman	*def = &gbl_def;
1851*b30d1939SAndy Fiddaman	*ref = &gbl_ref;
1852*b30d1939SAndy Fiddaman	*ext = &gbl_ext;
1853*b30d1939SAndy Fiddaman	return 0;
1854*b30d1939SAndy Fiddaman}
1855*b30d1939SAndy Fiddaman!
1856*b30d1939SAndy Fiddaman	if	$cc -c $cc_dll $cc_pic cmd.c &&
1857*b30d1939SAndy Fiddaman		$cc -c $cc_dll $cc_pic lib.c && {
1858*b30d1939SAndy Fiddaman			$cc $cc_dll $export_dynamic -o cmd.exe cmd.o ||
1859*b30d1939SAndy Fiddaman			$cc $cc_dll $export_dynamic -o cmd.exe cmd.o -ldl
1860*b30d1939SAndy Fiddaman		} &&
1861*b30d1939SAndy Fiddaman		$dld $shared -o libgbl.dll lib.o
1862*b30d1939SAndy Fiddaman	then	x=`./cmd.exe ./libgbl.dll`
1863*b30d1939SAndy Fiddaman		case $x in
1864*b30d1939SAndy Fiddaman		?*)	dialect="$dialect EXPORT=$x" ;;
1865*b30d1939SAndy Fiddaman		esac
1866*b30d1939SAndy Fiddaman	else	case $sd:$hosttype in
1867*b30d1939SAndy Fiddaman		.dll:*win*)	dialect="$dialect EXPORT=DLL" ;;
1868*b30d1939SAndy Fiddaman		esac
1869*b30d1939SAndy Fiddaman	fi
1870*b30d1939SAndy Fiddaman	;;
1871*b30d1939SAndy Fiddamanesac
1872*b30d1939SAndy Fiddaman
1873*b30d1939SAndy Fiddaman# shellmagic defined if installed shell scripts need magic
1874*b30d1939SAndy Fiddaman
1875*b30d1939SAndy Fiddamanecho ': got magic :
1876*b30d1939SAndy Fiddamanecho ok' > ok
1877*b30d1939SAndy Fiddamanchmod +x ok
1878*b30d1939SAndy Fiddamancase `(eval ./ok | /bin/sh) 2>/dev/null` in
1879*b30d1939SAndy Fiddamanok)	;;
1880*b30d1939SAndy Fiddaman*)	echo '#!/bin/env sh
1881*b30d1939SAndy Fiddaman: got magic :
1882*b30d1939SAndy Fiddamanecho ok' > ok
1883*b30d1939SAndy Fiddaman	chmod +x ok
1884*b30d1939SAndy Fiddaman	case `(eval ./ok | /bin/sh) 2>/dev/null` in
1885*b30d1939SAndy Fiddaman	ok)	shellmagic='$("#")!/bin/env sh'
1886*b30d1939SAndy Fiddaman		;;
1887*b30d1939SAndy Fiddaman	*)	for i in /emx/bin/bash.exe /emx/bin/sh.exe
1888*b30d1939SAndy Fiddaman		do	if	test -x $i
1889*b30d1939SAndy Fiddaman			then	shellmagic='$("#")!'$i
1890*b30d1939SAndy Fiddaman				break
1891*b30d1939SAndy Fiddaman			fi
1892*b30d1939SAndy Fiddaman		done
1893*b30d1939SAndy Fiddaman		;;
1894*b30d1939SAndy Fiddaman	esac
1895*b30d1939SAndy Fiddaman	;;
1896*b30d1939SAndy Fiddamanesac
1897*b30d1939SAndy Fiddaman
1898*b30d1939SAndy Fiddaman#
1899*b30d1939SAndy Fiddaman# path cleanup
1900*b30d1939SAndy Fiddaman#
1901*b30d1939SAndy Fiddaman
1902*b30d1939SAndy Fiddamanfor i in ar ccnative dld ld nm size stdinclude stdlib strip
1903*b30d1939SAndy Fiddamando	eval o='$'$i
1904*b30d1939SAndy Fiddaman	v=$o
1905*b30d1939SAndy Fiddaman	case $v in
1906*b30d1939SAndy Fiddaman	*//*)	v=`echo $v | sed 's,///*,/,g'` ;;
1907*b30d1939SAndy Fiddaman	esac
1908*b30d1939SAndy Fiddaman	if	(test . -ef "`pwd`")
1909*b30d1939SAndy Fiddaman	then	k=
1910*b30d1939SAndy Fiddaman		for x in $v
1911*b30d1939SAndy Fiddaman		do	case $x in
1912*b30d1939SAndy Fiddaman			*/../*|*/..)
1913*b30d1939SAndy Fiddaman				case $x in
1914*b30d1939SAndy Fiddaman				/*)	a=/ ;;
1915*b30d1939SAndy Fiddaman				*)	a= ;;
1916*b30d1939SAndy Fiddaman				esac
1917*b30d1939SAndy Fiddaman				IFS=/
1918*b30d1939SAndy Fiddaman				set '' $x
1919*b30d1939SAndy Fiddaman				IFS=$ifs
1920*b30d1939SAndy Fiddaman				r=
1921*b30d1939SAndy Fiddaman				for d
1922*b30d1939SAndy Fiddaman				do	r="$d $r"
1923*b30d1939SAndy Fiddaman				done
1924*b30d1939SAndy Fiddaman				p=
1925*b30d1939SAndy Fiddaman				g=
1926*b30d1939SAndy Fiddaman				for d in $r
1927*b30d1939SAndy Fiddaman				do	case $d in
1928*b30d1939SAndy Fiddaman					..)	g="$g $d" ;;
1929*b30d1939SAndy Fiddaman					*)	case $g in
1930*b30d1939SAndy Fiddaman						'')	case $p in
1931*b30d1939SAndy Fiddaman							'')	p=$d ;;
1932*b30d1939SAndy Fiddaman							*)	p=$d/$p ;;
1933*b30d1939SAndy Fiddaman							esac
1934*b30d1939SAndy Fiddaman							;;
1935*b30d1939SAndy Fiddaman						*)	set $g
1936*b30d1939SAndy Fiddaman							shift
1937*b30d1939SAndy Fiddaman							g=$*
1938*b30d1939SAndy Fiddaman							;;
1939*b30d1939SAndy Fiddaman						esac
1940*b30d1939SAndy Fiddaman						;;
1941*b30d1939SAndy Fiddaman					esac
1942*b30d1939SAndy Fiddaman				done
1943*b30d1939SAndy Fiddaman				case $a in
1944*b30d1939SAndy Fiddaman				'')	for d in $g
1945*b30d1939SAndy Fiddaman					do	p=$d/$p
1946*b30d1939SAndy Fiddaman					done
1947*b30d1939SAndy Fiddaman					;;
1948*b30d1939SAndy Fiddaman				*)	p=$a$p
1949*b30d1939SAndy Fiddaman					;;
1950*b30d1939SAndy Fiddaman				esac
1951*b30d1939SAndy Fiddaman				case $p in
1952*b30d1939SAndy Fiddaman				/)	continue ;;
1953*b30d1939SAndy Fiddaman				esac
1954*b30d1939SAndy Fiddaman				test $x -ef $p && x=$p
1955*b30d1939SAndy Fiddaman				;;
1956*b30d1939SAndy Fiddaman			esac
1957*b30d1939SAndy Fiddaman			k="$k $x"
1958*b30d1939SAndy Fiddaman		done
1959*b30d1939SAndy Fiddaman		set '' $k
1960*b30d1939SAndy Fiddaman		shift
1961*b30d1939SAndy Fiddaman		v=$1
1962*b30d1939SAndy Fiddaman		case $# in
1963*b30d1939SAndy Fiddaman		0)	;;
1964*b30d1939SAndy Fiddaman		*)	shift
1965*b30d1939SAndy Fiddaman			while	:
1966*b30d1939SAndy Fiddaman			do	case $# in
1967*b30d1939SAndy Fiddaman				0)	break ;;
1968*b30d1939SAndy Fiddaman				esac
1969*b30d1939SAndy Fiddaman				k=
1970*b30d1939SAndy Fiddaman				for d
1971*b30d1939SAndy Fiddaman				do	for j in $v
1972*b30d1939SAndy Fiddaman					do	test $d -ef $j && continue 2
1973*b30d1939SAndy Fiddaman					done
1974*b30d1939SAndy Fiddaman					k="$k $d"
1975*b30d1939SAndy Fiddaman				done
1976*b30d1939SAndy Fiddaman				set '' $k
1977*b30d1939SAndy Fiddaman				case $# in
1978*b30d1939SAndy Fiddaman				1)	break ;;
1979*b30d1939SAndy Fiddaman				esac
1980*b30d1939SAndy Fiddaman				shift
1981*b30d1939SAndy Fiddaman				v="$v $1"
1982*b30d1939SAndy Fiddaman				shift
1983*b30d1939SAndy Fiddaman			done
1984*b30d1939SAndy Fiddaman			;;
1985*b30d1939SAndy Fiddaman		esac
1986*b30d1939SAndy Fiddaman	fi
1987*b30d1939SAndy Fiddaman	case $v in
1988*b30d1939SAndy Fiddaman	$o)	;;
1989*b30d1939SAndy Fiddaman	*)	eval $i='$'v ;;
1990*b30d1939SAndy Fiddaman	esac
1991*b30d1939SAndy Fiddamandone
1992*b30d1939SAndy Fiddaman
1993*b30d1939SAndy Fiddamancase $keepstdlib in
1994*b30d1939SAndy Fiddaman1)	;;
1995*b30d1939SAndy Fiddaman*)	#
1996*b30d1939SAndy Fiddaman	# favor lib64 over lib
1997*b30d1939SAndy Fiddaman	#
1998*b30d1939SAndy Fiddaman	case $hosttype in
1999*b30d1939SAndy Fiddaman	*64|*[!0-9]64[!a-zA-Z0-9]*)
2000*b30d1939SAndy Fiddaman		o=$stdlib
2001*b30d1939SAndy Fiddaman		stdlib=
2002*b30d1939SAndy Fiddaman		for i in $o
2003*b30d1939SAndy Fiddaman		do	case " $stdlib " in
2004*b30d1939SAndy Fiddaman			*" $i "*)
2005*b30d1939SAndy Fiddaman				continue
2006*b30d1939SAndy Fiddaman				;;
2007*b30d1939SAndy Fiddaman			esac
2008*b30d1939SAndy Fiddaman			case $i in
2009*b30d1939SAndy Fiddaman			*64)	stdlib="$stdlib $i"
2010*b30d1939SAndy Fiddaman				continue
2011*b30d1939SAndy Fiddaman				;;
2012*b30d1939SAndy Fiddaman			esac
2013*b30d1939SAndy Fiddaman			case " $o " in
2014*b30d1939SAndy Fiddaman			*" ${i}64 "*)
2015*b30d1939SAndy Fiddaman				case " $stdlib " in
2016*b30d1939SAndy Fiddaman				*" ${i}64 "*)
2017*b30d1939SAndy Fiddaman					;;
2018*b30d1939SAndy Fiddaman				*)	stdlib="$stdlib ${i}64"
2019*b30d1939SAndy Fiddaman					;;
2020*b30d1939SAndy Fiddaman				esac
2021*b30d1939SAndy Fiddaman				;;
2022*b30d1939SAndy Fiddaman			esac
2023*b30d1939SAndy Fiddaman			stdlib="$stdlib $i"
2024*b30d1939SAndy Fiddaman		done
2025*b30d1939SAndy Fiddaman		;;
2026*b30d1939SAndy Fiddaman	esac
2027*b30d1939SAndy Fiddaman	;;
2028*b30d1939SAndy Fiddamanesac
2029*b30d1939SAndy Fiddaman
2030*b30d1939SAndy Fiddaman#
2031*b30d1939SAndy Fiddaman# set up for local override
2032*b30d1939SAndy Fiddaman#
2033*b30d1939SAndy Fiddaman
2034*b30d1939SAndy FiddamanCC_VERSION_STAMP=$version_stamp
2035*b30d1939SAndy FiddamanCC_VERSION_STRING=$version_string
2036*b30d1939SAndy FiddamanCC_CC=$cc
2037*b30d1939SAndy FiddamanCC_NATIVE=$ccnative
2038*b30d1939SAndy FiddamanCC_EXECTYPE=$exectype
2039*b30d1939SAndy FiddamanCC_HOSTTYPE=$hosttype
2040*b30d1939SAndy FiddamanCC_ALTPP_FLAGS=$ppopt
2041*b30d1939SAndy FiddamanCC_ALTPP_ENV=$ppenv
2042*b30d1939SAndy FiddamanCC_AR=$ar
2043*b30d1939SAndy FiddamanCC_AR_ARFLAGS=$ar_arflags
2044*b30d1939SAndy FiddamanCC_ARFLAGS=$arflags
2045*b30d1939SAndy FiddamanCC_DEBUG=$debug
2046*b30d1939SAndy FiddamanCC_DIALECT=$dialect
2047*b30d1939SAndy FiddamanCC_PICBIG=$cc_PIC
2048*b30d1939SAndy FiddamanCC_PICSMALL=$cc_pic
2049*b30d1939SAndy FiddamanCC_PIC=$CC_PICBIG
2050*b30d1939SAndy FiddamanCC_DLL_ONLY=$cc_dll
2051*b30d1939SAndy Fiddamancase $CC_DLL_ONLY in
2052*b30d1939SAndy Fiddaman'')	CC_DLLBIG=
2053*b30d1939SAndy Fiddaman	CC_DLLSMALL=
2054*b30d1939SAndy Fiddaman	CC_DLL=
2055*b30d1939SAndy Fiddaman	;;
2056*b30d1939SAndy Fiddaman*)	CC_DLLBIG="$CC_DLL_ONLY $CC_PICBIG"
2057*b30d1939SAndy Fiddaman	CC_DLLSMALL="$CC_DLL_ONLY $CC_PICSMALL"
2058*b30d1939SAndy Fiddaman	CC_DLL="$CC_DLL_ONLY $CC_PICBIG"
2059*b30d1939SAndy Fiddaman	;;
2060*b30d1939SAndy Fiddamanesac
2061*b30d1939SAndy FiddamanCC_DLL_DIR=$dll_dir
2062*b30d1939SAndy FiddamanCC_DLL_LIBRARIES=$dll_libraries
2063*b30d1939SAndy FiddamanCC_DLL_VARIANTS=$dll_variants
2064*b30d1939SAndy FiddamanCC_DYNAMIC=$dynamic
2065*b30d1939SAndy FiddamanCC_EXPORT_DYNAMIC=$export_dynamic
2066*b30d1939SAndy FiddamanCC_INCLUDE_LOCAL=$include_local
2067*b30d1939SAndy FiddamanCC_LD=$ld
2068*b30d1939SAndy FiddamanCC_LD_DYNAMIC=$lddynamic
2069*b30d1939SAndy FiddamanCC_LD_LAZY=$ldlazy
2070*b30d1939SAndy FiddamanCC_LD_NOLAZY=$ldnolazy
2071*b30d1939SAndy FiddamanCC_LD_ORIGIN=$ldorigin
2072*b30d1939SAndy FiddamanCC_LD_RECORD=$ldrecord
2073*b30d1939SAndy FiddamanCC_LD_NORECORD=$ldnorecord
2074*b30d1939SAndy FiddamanCC_LD_RUNPATH=$ldrunpath
2075*b30d1939SAndy FiddamanCC_LD_STATIC=$ldstatic
2076*b30d1939SAndy FiddamanCC_LD_STRIP=$ldstrip
2077*b30d1939SAndy FiddamanCC_LIB_DLL=$lib_dll
2078*b30d1939SAndy FiddamanCC_LIB_ALL=$lib_all
2079*b30d1939SAndy FiddamanCC_LIB_UNDEF=$lib_undef
2080*b30d1939SAndy FiddamanCC_MAKE_OPTIONS=$makeoptions
2081*b30d1939SAndy FiddamanCC_NM=$nm
2082*b30d1939SAndy FiddamanCC_NMEDIT=$nmedit
2083*b30d1939SAndy FiddamanCC_NMFLAGS=$nmflags
2084*b30d1939SAndy FiddamanCC_NOPROTECT=$no_protect
2085*b30d1939SAndy FiddamanCC_OPTIMIZE=$optimize
2086*b30d1939SAndy FiddamanCC_READONLY=$readonly
2087*b30d1939SAndy FiddamanCC_REPOSITORY=$repository
2088*b30d1939SAndy FiddamanCC_REQUIRE=$require
2089*b30d1939SAndy FiddamanCC_RUNPATH=$runpath
2090*b30d1939SAndy FiddamanCC_SHARED=$shared
2091*b30d1939SAndy FiddamanCC_SHARED_LD=$dld
2092*b30d1939SAndy FiddamanCC_SHARED_NAME=$shared_name
2093*b30d1939SAndy FiddamanCC_SHARED_REGISTRY=$shared_registry
2094*b30d1939SAndy FiddamanCC_SHARED_REGISTRY_PATH=$probe_shared_registry_path
2095*b30d1939SAndy FiddamanCC_SHELLMAGIC=$shellmagic
2096*b30d1939SAndy FiddamanCC_SIZE=$size
2097*b30d1939SAndy FiddamanCC_STATIC=$static
2098*b30d1939SAndy FiddamanCC_STDINCLUDE=$stdinclude
2099*b30d1939SAndy FiddamanCC_STDLIB=$stdlib
2100*b30d1939SAndy FiddamanCC_STRICT=$strict
2101*b30d1939SAndy FiddamanCC_STRIP=$strip
2102*b30d1939SAndy FiddamanCC_STRIP_FLAGS=$stripflags
2103*b30d1939SAndy FiddamanCC_PREFIX_ARCHIVE=$prefix_archive
2104*b30d1939SAndy FiddamanCC_PREFIX_DYNAMIC=$prefix_dynamic
2105*b30d1939SAndy FiddamanCC_PREFIX_SHARED=$prefix_shared
2106*b30d1939SAndy FiddamanCC_PREFIX_SYMBOL=$symprefix
2107*b30d1939SAndy FiddamanCC_SUFFIX_ARCHIVE=.$lib
2108*b30d1939SAndy FiddamanCC_SUFFIX_COMMAND=$suffix_command
2109*b30d1939SAndy FiddamanCC_SUFFIX_DEBUG=$sdb
2110*b30d1939SAndy FiddamanCC_SUFFIX_DYNAMIC=$sd
2111*b30d1939SAndy FiddamanCC_SUFFIX_LD=$ldscript
2112*b30d1939SAndy FiddamanCC_SUFFIX_OBJECT=.$obj
2113*b30d1939SAndy FiddamanCC_SUFFIX_SHARED=$so
2114*b30d1939SAndy FiddamanCC_SUFFIX_SOURCE=.$src
2115*b30d1939SAndy FiddamanCC_SUFFIX_STATIC=$sa
2116*b30d1939SAndy FiddamanCC_VERSION=$version_flags
2117*b30d1939SAndy FiddamanCC_WARN=$warn
2118*b30d1939SAndy FiddamanCC_ATTRIBUTES=$ATTRIBUTES
2119*b30d1939SAndy Fiddaman
2120*b30d1939SAndy Fiddamanexec >&3
2121*b30d1939SAndy Fiddaman
2122*b30d1939SAndy Fiddaman#
2123*b30d1939SAndy Fiddaman# check for local override
2124*b30d1939SAndy Fiddaman# all CC_* but { CC_CC CC_VERSION_STAMP CC_VERSION_STRING } may be modified
2125*b30d1939SAndy Fiddaman# additional CC.* may be printed on stdout
2126*b30d1939SAndy Fiddaman#
2127*b30d1939SAndy Fiddaman
2128*b30d1939SAndy Fiddamanif	test -f "$dir/probe.lcl"
2129*b30d1939SAndy Fiddamanthen	. "$dir/probe.lcl"
2130*b30d1939SAndy Fiddamanfi
2131*b30d1939SAndy Fiddaman
2132*b30d1939SAndy Fiddaman#
2133*b30d1939SAndy Fiddaman# the payoff
2134*b30d1939SAndy Fiddaman#
2135*b30d1939SAndy Fiddaman
2136*b30d1939SAndy Fiddamancase $version_stamp in
2137*b30d1939SAndy Fiddaman?*)	echo "# $version_stamp" ;;
2138*b30d1939SAndy Fiddamanesac
2139*b30d1939SAndy Fiddamanecho CC.CC = $cc
2140*b30d1939SAndy Fiddamanecho CC.NATIVE = $CC_NATIVE
2141*b30d1939SAndy Fiddamanecho CC.EXECTYPE = $CC_EXECTYPE
2142*b30d1939SAndy Fiddamanecho CC.HOSTTYPE = $CC_HOSTTYPE
2143*b30d1939SAndy Fiddamanecho CC.ALTPP.FLAGS = $CC_ALTPP_FLAGS
2144*b30d1939SAndy Fiddamanecho CC.ALTPP.ENV = $CC_ALTPP_ENV
2145*b30d1939SAndy Fiddamanecho CC.AR = $CC_AR
2146*b30d1939SAndy Fiddamanecho CC.AR.ARFLAGS = $CC_AR_ARFLAGS
2147*b30d1939SAndy Fiddamanecho CC.ARFLAGS = $CC_ARFLAGS
2148*b30d1939SAndy Fiddamanecho CC.DEBUG = $CC_DEBUG
2149*b30d1939SAndy Fiddamanecho CC.DIALECT = $CC_DIALECT
2150*b30d1939SAndy Fiddamanecho CC.DLLBIG = $CC_DLLBIG
2151*b30d1939SAndy Fiddamanecho CC.DLLSMALL = $CC_DLLSMALL
2152*b30d1939SAndy Fiddamanecho CC.DLL = $CC_DLL
2153*b30d1939SAndy Fiddamanecho CC.DLL.DEF = $cc_dll_def
2154*b30d1939SAndy Fiddamanecho CC.DLL.DIR = $CC_DLL_DIR
2155*b30d1939SAndy Fiddamanecho CC.DLL.LIBRARIES = $CC_DLL_LIBRARIES
2156*b30d1939SAndy Fiddamanecho CC.DLL.VARIANTS = $CC_DLL_VARIANTS
2157*b30d1939SAndy Fiddamanecho CC.DYNAMIC = $CC_DYNAMIC
2158*b30d1939SAndy Fiddamanecho CC.EXPORT.DYNAMIC = $CC_EXPORT_DYNAMIC
2159*b30d1939SAndy Fiddamanecho CC.INCLUDE.LOCAL = $CC_INCLUDE_LOCAL
2160*b30d1939SAndy Fiddaman#
2161*b30d1939SAndy Fiddaman# 2004-02-14 release workaround
2162*b30d1939SAndy Fiddaman#
2163*b30d1939SAndy Fiddamancase $CC_SHARED_LD in
2164*b30d1939SAndy Fiddaman$CC_CC)	echo if LDSHARED
2165*b30d1939SAndy Fiddaman	echo CC.LD = $CC_LD
2166*b30d1939SAndy Fiddaman	echo else
2167*b30d1939SAndy Fiddaman	echo CC.LD = $CC_CC
2168*b30d1939SAndy Fiddaman	echo end
2169*b30d1939SAndy Fiddaman	;;
2170*b30d1939SAndy Fiddaman*)	echo CC.LD = $CC_LD
2171*b30d1939SAndy Fiddaman	;;
2172*b30d1939SAndy Fiddamanesac
2173*b30d1939SAndy Fiddamanecho CC.LD.DYNAMIC = $CC_LD_DYNAMIC
2174*b30d1939SAndy Fiddamanecho CC.LD.LAZY = $CC_LD_LAZY
2175*b30d1939SAndy Fiddamanecho CC.LD.NOLAZY = $CC_LD_NOLAZY
2176*b30d1939SAndy Fiddamanecho CC.LD.ORIGIN = $CC_LD_ORIGIN
2177*b30d1939SAndy Fiddamanecho CC.LD.RECORD = $CC_LD_RECORD
2178*b30d1939SAndy Fiddamanecho CC.LD.NORECORD = $CC_LD_NORECORD
2179*b30d1939SAndy Fiddamanecho CC.LD.RUNPATH = $CC_LD_RUNPATH
2180*b30d1939SAndy Fiddamanecho CC.LD.STATIC = $CC_LD_STATIC
2181*b30d1939SAndy Fiddamanecho CC.LD.STRIP = $CC_LD_STRIP
2182*b30d1939SAndy Fiddamanecho CC.LIB.DLL = $CC_LIB_DLL
2183*b30d1939SAndy Fiddamanecho CC.LIB.ALL = $CC_LIB_ALL
2184*b30d1939SAndy Fiddamanecho CC.LIB.UNDEF = $CC_LIB_UNDEF
2185*b30d1939SAndy Fiddamanecho CC.MAKE.OPTIONS = $CC_MAKE_OPTIONS
2186*b30d1939SAndy Fiddamanecho CC.NM = $CC_NM
2187*b30d1939SAndy Fiddamancase $CC_NMEDIT in
2188*b30d1939SAndy Fiddaman?*)	CC_NMEDIT=" $CC_NMEDIT" ;;
2189*b30d1939SAndy Fiddamanesac
2190*b30d1939SAndy Fiddamanecho CC.NMEDIT ="$CC_NMEDIT"
2191*b30d1939SAndy Fiddamanecho CC.NMFLAGS = $CC_NMFLAGS
2192*b30d1939SAndy Fiddamanecho CC.NOPROTECT = $CC_NOPROTECT
2193*b30d1939SAndy Fiddamanecho CC.OPTIMIZE = $CC_OPTIMIZE
2194*b30d1939SAndy Fiddamanecho CC.PICBIG = $CC_PICBIG
2195*b30d1939SAndy Fiddamanecho CC.PICSMALL = $CC_PICSMALL
2196*b30d1939SAndy Fiddamanecho CC.PIC = $CC_PIC
2197*b30d1939SAndy Fiddamanecho CC.READONLY = $CC_READONLY
2198*b30d1939SAndy Fiddamanecho CC.REPOSITORY = $CC_REPOSITORY
2199*b30d1939SAndy Fiddamanfor f in $CC_REQUIRE
2200*b30d1939SAndy Fiddamando	echo CC.REQUIRE.$f =`cat req.$f`
2201*b30d1939SAndy Fiddamandone
2202*b30d1939SAndy Fiddamanecho CC.RUNPATH = $CC_RUNPATH
2203*b30d1939SAndy Fiddamanecho CC.SHARED = $CC_SHARED
2204*b30d1939SAndy Fiddamanecho CC.SHARED.LD = $CC_SHARED_LD
2205*b30d1939SAndy Fiddamanecho CC.SHARED.NAME = $CC_SHARED_NAME
2206*b30d1939SAndy Fiddamanecho CC.SHARED.REGISTRY = $CC_SHARED_REGISTRY
2207*b30d1939SAndy Fiddamanecho CC.SHARED.REGISTRY.PATH = $CC_SHARED_REGISTRY_PATH
2208*b30d1939SAndy Fiddamanecho CC.SHELLMAGIC = $CC_SHELLMAGIC
2209*b30d1939SAndy Fiddamanecho CC.SIZE = $CC_SIZE
2210*b30d1939SAndy Fiddamanecho CC.STATIC = $CC_STATIC
2211*b30d1939SAndy Fiddamanecho CC.STDINCLUDE = $CC_STDINCLUDE
2212*b30d1939SAndy Fiddamanecho CC.STDLIB = $CC_STDLIB
2213*b30d1939SAndy Fiddamanecho CC.STRICT = $CC_STRICT
2214*b30d1939SAndy Fiddamanecho CC.STRIP = $CC_STRIP
2215*b30d1939SAndy Fiddamanecho CC.STRIP.FLAGS = $CC_STRIP_FLAGS
2216*b30d1939SAndy Fiddamanecho CC.PREFIX.ARCHIVE = $CC_PREFIX_ARCHIVE
2217*b30d1939SAndy Fiddamanecho CC.PREFIX.DYNAMIC = $CC_PREFIX_DYNAMIC
2218*b30d1939SAndy Fiddamanecho CC.PREFIX.SHARED = $CC_PREFIX_SHARED
2219*b30d1939SAndy Fiddamanecho CC.PREFIX.SYMBOL = $CC_PREFIX_SYMBOL
2220*b30d1939SAndy Fiddamanecho CC.SUFFIX.ARCHIVE = $CC_SUFFIX_ARCHIVE
2221*b30d1939SAndy Fiddamanecho CC.SUFFIX.COMMAND = $CC_SUFFIX_COMMAND
2222*b30d1939SAndy Fiddamanecho CC.SUFFIX.DEBUG = $CC_SUFFIX_DEBUG
2223*b30d1939SAndy Fiddamanecho CC.SUFFIX.DYNAMIC = $CC_SUFFIX_DYNAMIC
2224*b30d1939SAndy Fiddamanecho CC.SUFFIX.LD = $CC_SUFFIX_LD
2225*b30d1939SAndy Fiddamanecho CC.SUFFIX.OBJECT = $CC_SUFFIX_OBJECT
2226*b30d1939SAndy Fiddamanecho CC.SUFFIX.SHARED = $CC_SUFFIX_SHARED
2227*b30d1939SAndy Fiddamanecho CC.SUFFIX.SOURCE = $CC_SUFFIX_SOURCE
2228*b30d1939SAndy Fiddamanecho CC.SUFFIX.STATIC = $CC_SUFFIX_STATIC
2229*b30d1939SAndy Fiddamanecho CC.VERSION = $CC_VERSION
2230*b30d1939SAndy Fiddamancase $CC_VERSION_STRING in
2231*b30d1939SAndy Fiddaman*\"*)	i=`echo " $CC_VERSION_STRING" | sed -e 's,",\\\\",g' -e 's,^ ,,' -e 's,.*,"&",'` ;;
2232*b30d1939SAndy Fiddaman*\'*)	i=\"$CC_VERSION_STRING\" ;;
2233*b30d1939SAndy Fiddaman*)	i=$CC_VERSION_STRING ;;
2234*b30d1939SAndy Fiddamanesac
2235*b30d1939SAndy Fiddamancat <<!
2236*b30d1939SAndy FiddamanCC.VERSION.STRING = $i
2237*b30d1939SAndy Fiddaman!
2238*b30d1939SAndy Fiddamanecho CC.WARN = $CC_WARN
2239*b30d1939SAndy Fiddaman
2240*b30d1939SAndy Fiddamanfor i in $CC_ATTRIBUTES
2241*b30d1939SAndy Fiddamando	eval echo CC.$i = \$$i
2242*b30d1939SAndy Fiddamandone
2243