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