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