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