1: 2### this script contains archaic constructs that work with all sh variants ### 3# Glenn Fowler 4# AT&T Research 5# 6# @(#)C probe (AT&T Research) 2012-02-29 7# 8# probe [ -d ] c-compiler-path [ attributes ] 9# 10# common C probe preamble for the tool specific probes 11# 12# NOTE: some cc -E's do syntax analysis! 13 14# 15# probe_* are first eval'd and then attempted from left to right 16# 17 18probe_binding="-dy -dn -Bdynamic -Bstatic '-Wl,-ashared -Wl,+s' -Wl,-aarchive -call_shared -non_shared -dynamic -static -bshared -bstatic '' -static" 19probe_env="CC_OPTIONS CCOPTS LD_OPTIONS LDOPTS LIBPATH LPATH" 20probe_include="stdio.h iostream.h complex.h ctype.h plot.h stdarg.h varargs.h ranlib.h hash.h sys/types.h stab.h cmath cstdio iostream string" 21probe_longlong="long 'long long'" 22probe_longlong_t="__int64_t _int64_t __int64 _int64 int64" 23probe_l="l yyreject m sin mopt sin" 24probe_lxx="C exit ++ exit g++ exit" 25probe_ppprefix="a n" 26probe_size="size" 27probe_src="cxx C cc c" 28probe_sa=".sa" 29probe_sd=".dll .lib .dll .x" 30probe_sdb=".pdb" 31probe_so=".dylib .so .sl" 32probe_symprefix="_" 33probe_verbose="'-v -v' '-# -#' '-d -d' -dryrun '-V -V'" 34probe_version="--version -V -version -v" 35 36# 37# the following are set by the preamble for the tool specific probe 38# 39 40cc=cc 41debug= 42dir=. 43dll=.dll 44dynamic= 45exe=exe 46executable="test -x" 47hosted= 48ifs=${IFS-' 49 '} 50obj=o 51ppenv= 52ppopt= 53predef= 54prepred= 55sa= 56sd= 57sdb= 58so= 59sov= 60static= 61stdlib= 62stdpp= 63suffix_command= 64if test "" != "$TMPDIR" -a -d "$TMPDIR" 65then tmpdir=$TMPDIR 66else tmpdir=/tmp 67fi 68tmpdir=$tmpdir/probe$$ 69undef="define defined elif else endif error if ifdef ifndef include line pragma undef __STDC__ __STDPP__ __ARGC__ __BASE__ __BASE_FILE__ __DATE__ __FILE__ __FUNCTION__ __INCLUDE_LEVEL__ __LINE__ __PATH__ __TIME__ __TIMESTAMP__ __VERSION__" 70version_flags= 71version_stamp= 72version_string= 73 74# 75# constrain the environment 76# 77 78DISPLAY= 79LC_ALL=C 80export DISPLAY LC_ALL 81 82# 83# now the common probes 84# 85 86while : 87do case $1 in 88 -d) debug=1 ;; 89 -*) set ''; break ;; 90 *) break ;; 91 esac 92 shift 93done 94 95cc=$1 96case $cc in 97[\\/]*|[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]:\\*) 98 ;; 99*) echo "Usage: $0 [ -d ] c-compiler-path [ attributes ]" >&2 100 exit 1 101 ;; 102esac 103ATTRIBUTES= 104eval $2 105_probe_PATH=$PATH 106PATH=/usr/bin:/bin:$PATH 107 108case $0 in 109*[\\/]*) dir=`echo $0 | sed -e 's,[\\/][\\/]*[^\\/]*\$,,'` ;; 110esac 111 112$executable . 2>/dev/null || executable='test -r' 113 114case $SHELL in 115[\\/]*|[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]:\\*) 116 sh=$SHELL 117 ;; 118*) sh=/bin/sh 119 ;; 120esac 121 122trap 'code=$?; cd ..; rm -rf $tmpdir; exit $code' 0 1 2 3 123mkdir $tmpdir 124cd $tmpdir 125 126exec 3>&1 4>&2 </dev/null 127case $debug in 128"") exec >/dev/null 2>&1 129 (ulimit -c 0) >/dev/null 2>&1 && ulimit -c 0 130 ;; 131*) PS4='+$LINENO+ ' 132 set -x 133 ;; 134esac 135 136if (xxx=xxx; unset xxx) 137then UNSET=1 138else UNSET= 139fi 140eval set x $probe_env 141while : 142do shift 143 case $# in 144 0) break ;; 145 esac 146 eval x='$'$1 147 case $x in 148 '') continue ;; 149 esac 150 case $1 in 151 *PATH) _probe_export="$_probe_export $1='$x'" ;; 152 esac 153 case $UNSET in 154 '') eval $1= 155 export $1 156 ;; 157 *) unset $1 158 ;; 159 esac 160done 161 162if test -f "$dir/probe.ini" 163then . "$dir/probe.ini" 164 IFS=$ifs 165fi 166 167mkdir suffix 168cd suffix 169for src in $probe_src 170do echo "int main(){return 0;}" > ../test.$src 171 rm -f test* 172 if $cc -c ../test.$src 173 then set test.* 174 if test -f "$1" 175 then o="$*" 176 mv $* .. 177 for i in $o 178 do if $cc -o test.exe ../$i 179 then obj=`echo "$i" | sed -e 's,test.,,'` 180 $executable test.exe || executable="test -r" 181 set test* 182 rm * 183 if $cc -o test ../$i 184 then rm $* 185 set test.* 186 if $executable "$1" 187 then exe=`echo "$1" | sed -e 's,test.,,'` 188 suffix_command=.$exe 189 fi 190 fi 191 break 2 192 fi 193 done 194 fi 195 fi 196done 197cd .. 198 199case $src in 200c) ;; 201*) echo '// ( 202int 203main() 204{ 205 class { public: int i; } j; 206 j.i = 0; 207 int k = j.i + 1; 208 return k; 209}' > dialect.$src 210 if $cc -c dialect.$src && $cc -o dialect.$exe dialect.$obj && $executable dialect.$exe 211 then mv dialect.$src dialect.c 212 rm -f dialect.$obj dialect.$exe 213 if $cc -c dialect.c && $cc -o dialect.$exe dialect.$obj && $executable dialect.$exe 214 then src=c 215 else set x $cc 216 while : 217 do shift 218 case $# in 219 0) break ;; 220 esac 221 case $1 in 222 *=*) continue ;; 223 esac 224 case `echo $1 | sed -e 's,.*/,,'` in 225 *CC*|*++*|*[xX][xX]*|*[pP][lL][uU][sS]*) ;; 226 *) src=c ;; 227 esac 228 break 229 done 230 fi 231 else src=c 232 fi 233 ;; 234esac 235 236set x x '(' 1 'int x;' 0 237while : 238do shift 239 shift 240 case $# in 241 [01]) break ;; 242 esac 243 rm -f test.$obj 244 echo "$1" > test.$src 245 $cc -c test.$src 246 r=$? 247 case $r in 248 0) test -f test.$obj || r=1 ;; 249 *) r=1 ;; 250 esac 251 case $2:$r in 252 0:0) ;; 253 0:1) echo "$cc: not a C compiler: failed to compile \`\`$1''" >&4 254 exit 1 255 ;; 256 1:0) echo "$cc: not a C compiler: successfully compiled \`\`$1''" >&4 257 exit 1 258 ;; 259 esac 260done 261 262hosttype=`package CC="$cc" || $SHELL -c "package CC='$cc'"` 263case $hosttype in 264*[Uu][Ss][Aa][Gg][Ee]:*) 265 hosttype=`PATH=$_probe_PATH; export PATH; package CC="$cc" || $SHELL -c "package CC='$cc'"` 266 ;; 267esac 268 269echo '#include <stdio.h> 270int main(){printf("hello");return 0;}' > dynamic.$src 271echo 'extern int sfclose() { return 0; }' > fun.$src 272if $cc -c dynamic.$src && $cc -c fun.$src 273then eval set x $probe_so 274 while : 275 do shift 276 case $# in 277 0) break ;; 278 esac 279 for i in foo junk 280 do rm -f dynamic.$exe 281 if $cc -L. -o dynamic.$exe dynamic.$obj -l$i 282 then : "there's really a -l$i"? 283 else rm -f dynamic.$exe 284 cat fun.$obj > lib$i$1 285 $cc -L. -o dynamic.$exe dynamic.$obj -l$i && $executable dynamic.$exe 286 x=$? 287 rm lib$i$1 288 case $x in 289 0) so=$1 290 rm -f dynamic.$exe > lib$i$1.1 291 $cc -L. -o dynamic.$exe dynamic.$obj -l$i && $executable dynamic.$exe 292 x=$? 293 rm lib$i$1.1 294 case $x in 295 0) sov=1 ;; 296 esac 297 break 2 298 ;; 299 *) break 300 ;; 301 esac 302 fi 303 done 304 k= 305 for i in "" .1 .2 .3 .4 .5 .6 .7 .8 .9 306 do rm -f dynamic.$exe > libc$1$i 307 $cc -L. -o dynamic.$exe dynamic.$obj && $executable dynamic.$exe 308 x=$? 309 (cd ..; rm $tmpdir/libc$1$i) 310 case $x in 311 0) ;; 312 *) k=X$k 313 case $k in 314 XXX) break ;; 315 esac 316 ;; 317 esac 318 done 319 case $k in 320 XXX) so=$1 321 sov=1 322 break 323 ;; 324 ?*) so=$1 325 break 326 ;; 327 esac 328 done 329 rm -f dynamic.$exe 330 if $cc -o dynamic.$exe dynamic.$obj 2>e && $executable dynamic.$exe 331 then e=`wc -l e` 332 maybe= 333 eval set x x $probe_binding 334 while : 335 do shift 336 shift 337 case $# in 338 0) break ;; 339 esac 340 rm -f dynamic.$exe 341 $cc -o dynamic.$exe $1 dynamic.$obj 2>e && $executable dynamic.$exe || continue 342 case $1 in 343 ?*) case $maybe in 344 "") maybe=$1 ;; 345 *) maybe=-- ;; 346 esac 347 ;; 348 esac 349 case `wc -l e` in 350 $e) ;; 351 *) continue ;; 352 esac 353 d=`ls -s dynamic.$exe` 354 rm -f dynamic.$exe 355 $cc -o dynamic.$exe $2 dynamic.$obj 2>e && $executable dynamic.$exe || continue 356 case `wc -l e` in 357 $e) ;; 358 *) continue ;; 359 esac 360 case `ls -s dynamic.$exe` in 361 $d) ;; 362 *) dynamic=$1 363 static=$2 364 maybe= 365 break 366 ;; 367 esac 368 done 369 case $maybe in 370 ""|--) ;; 371 *) rm -f dynamic.$exe 372 if $cc -o dynamic.$exe $maybe dynamic.$obj 2>e && $executable dynamic.$exe 373 then e=`wc -l e` 374 if $cc -o dynamic.$exe $maybe-bogus-bogus-bogus dynamic.$obj 2>e && $executable dynamic.$exe 375 then case `wc -l e` in 376 $e) ;; 377 *) dynamic=$maybe ;; 378 esac 379 else dynamic=$maybe 380 fi 381 fi 382 ;; 383 esac 384 fi 385fi 386 387eval set x $probe_version 388shift 389for o in "$@" 390do if $cc $o > version.out 2>&1 391 then version_string=`sed -e '/ is /d' -e 's/;/ /g' version.out | sed -e 1q` 392 case $version_string in 393 ''|*[Ee][Rr][Rr][Oo][Rr]*|*[Ff][Aa][Tt][Aa][Ll]*|*[Ww][Aa][Rr][Nn][Ii][Nn][Gg]*|*[Oo][Pp][Tt][Ii][Oo][Nn]*) 394 ;; 395 *) version_flags=$o 396 version_stamp=";VERSION;$o;$version_string;PATH;$cc" 397 break 398 ;; 399 esac 400 fi 401done 402case $version_stamp in 403'') eval set x $probe_version 404 shift 405 echo 'int main() { return 0; }' > version.i 406 for o in "$@" 407 do if $cc -c $o version.i > version.out 2>&1 408 then version_string=`sed -e '/ is /d' -e 's/;/ /g' version.out | sed -e 1q` 409 case $version_string in 410 ''|*[Ee][Rr][Rr][Oo][Rr]*|*[Ff][Aa][Tt][Aa][Ll]*|*[Ww][Aa][Rr][Nn][Ii][Nn][Gg]*|*[Oo][Pp][Tt][Ii][Oo][Nn]*) 411 ;; 412 *) version_flags=$o 413 break 414 ;; 415 esac 416 fi 417 done 418 ;; 419esac 420 421echo 'int main(){return 0;}' > hosted.$src 422$cc -o hosted.$exe hosted.$src && ./hosted.$exe && hosted=1 423 424echo '#!'$sh' 425echo "" $@' > cpp 426chmod +x cpp 427case `./cpp -Dprobe` in 428*-Dprobe*) 429 ;; 430*) cp /bin/echo cpp 431 chmod u+w cpp 432 ;; 433esac 434for prefix in $probe_ppprefix `echo $cc | sed -e '/cc\$/!d' -e 's,cc\$,,' -e 's,.*/,,'` 435do cp cpp ${prefix}cpp 436done 437 438echo "" > flags.$src 439echo '#pragma pp:version' > libpp.$src 440 441if test `realcppC=./cpp $cc -Dprobe -E flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1 442then ppenv='realcppC=${ppcmd}' 443elif test `cppC=./cpp $cc -Dprobe -E flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1 444then ppenv='cppC=${ppcmd}' 445elif test `_CPPNAME=./cpp $cc -Dprobe -E flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1 446then ppenv='_CPPNAME=${ppcmd}' 447elif test `_CPP=./cpp $cc -Dprobe -E flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1 448then ppenv='_CPP=${ppcmd}' 449elif test `$cc -Dprobe -E -%p+. flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1 && test `$cc -Dprobe -E -%p+. flags.$src | wc -l` -eq 1 450then ppopt='-%p+${ppdir}' 451elif test `$cc -Dprobe -E -Yp,. flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1 452then ppopt='-Yp,${ppdir}' 453elif test `$cc -Dprobe -E -Qpath $tmpdir flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1 454then ppopt='-Qpath ${ppdir}' 455elif test `$cc -Dprobe -E -tp -B./ flags.$src 2>err.out | tee cpp.out | grep -c '[-]Dprobe'` -eq 1 -a ! -s err.out 456then ppopt='-tp -B${ppdir}/' 457elif test `$cc -Dprobe -E -B./ flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1 458then ppopt='-B${ppdir}/' 459elif test `$cc -Dprobe -E -tp -h./ -B flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1 460then ppopt='-tp -h${ppdir}/ -B' 461elif test `$cc -Dprobe -E -t p,./cpp flags.$src | tee cpp.out | grep -c '[-]Dprobe'` -eq 1 462then ppopt='-t p,${ppcmd}' 463else { 464 eval set x $probe_verbose 465 shift 466 for o in "$@" 467 do $cc -E $o flags.$src 468 done 469 } 2>&1 | sed -e "s/['\"]//g" > cpp.out 470fi 471 472set x `sed -e 's,[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]:\\\\,/,g' -e 's,\\\\,/,g' cpp.out` 473def= 474definclude="-I+C -I-H" 475stdinclude=$definclude 476case $hosted in 477"") usrinclude= ;; 478esac 479cmdinclude= 480while : 481do case $# in 482 0|1) break ;; 483 esac 484 shift 485 case $1 in 486 -A) case $2 in 487 *\(*\)) shift 488 prepred="$prepred `echo $1 | sed 's/\(.*\)(\(.*\))/\1 \2/'`" 489 ;; 490 esac 491 ;; 492 -A\(*\)) 493 prepred="$prepred `echo $1 | sed 's/-A\(.*\)(\(.*\))/\1 \2/'`" 494 ;; 495 -[DI][-+][ABCDEFGHIJKLMNOPQRSTUVWXYZ]*) 496 stdpp=1 497 case $1 in 498 -I?[CH]) case $def in 499 ?*) definclude="$definclude $1" ;; 500 *) stdinclude="$stdinclude $1" ;; 501 esac 502 ;; 503 -I-S*|-YI,*) usrinclude="`echo $1 | sed 's/....//'`" ;; 504 -Y?,*) ;; 505 -Y*) usrinclude="`echo $1 | sed 's/..//'`" ;; 506 esac 507 ;; 508 -D) shift 509 case $1 in 510 [ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_]*=*) 511 predef="$predef 512`echo $1 | sed -e 's/=.*//'`" 513 ;; 514 [ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_]*) 515 predef="$predef 516$1" 517 ;; 518 esac 519 ;; 520 -Dprobe);; 521 -D*) case $1 in 522 -D[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_]*=*) 523 predef="$predef 524`echo $1 | sed -e 's/^-D//' -e 's/=.*//'`" 525 ;; 526 -D[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_]*) 527 predef="$predef 528`echo $1 | sed -e 's/^-D//'`" 529 ;; 530 esac 531 ;; 532 -I) shift 533 case $1 in 534 /*) case $def in 535 ?*) definclude="$definclude $1" ;; 536 *) stdinclude="$stdinclude $1" ;; 537 esac 538 cmdinclude="$cmdinclude $1" 539 ;; 540 esac 541 ;; 542 -I/*) f=`echo X$1 | sed 's/X-I//'` 543 case $def in 544 ?*) definclude="$definclude $f" ;; 545 *) stdinclude="$stdinclude $f" ;; 546 esac 547 cmdinclude="$cmdinclude $f" 548 ;; 549 -U) shift 550 undef="$undef $1" 551 ;; 552 -U*) undef="$undef `echo $1 | sed 's/^-U//'`" 553 ;; 554 flags.$src)def= 555 ;; 556 esac 557done 558stdinclude="$stdinclude $definclude" 559case " $stdinclude " in 560*\ $usrinclude\ *) 561 case $usrinclude in 562 /usr/include) 563 usrinclude= 564 ;; 565 *) case " $stdinclude " in 566 *\ /usr/include\ *) 567 usrinclude= 568 ;; 569 *) usrinclude=/usr/include 570 ;; 571 esac 572 ;; 573 esac 574 ;; 575esac 576 577tstinclude=`$cc -v -E flags.$src 2>&1 | sed -e '1,/[iI][nN][cC][lL][uU][dD][eE][ ]*<[.][.][.]>/d' -e '/^[eE][nN][dD] [oO][fF] [sS][eE][aA][rR][cC][hH]/,\$d'` 578j=$tstinclude 579case $j in 580*/*) ;; 581*) j=$cmdinclude ;; 582esac 583tstinclude= 584good= 585nogood= 586c_hdr="stdio.h ctype.h" 587C_hdr="libc.h" 588for i in $j 589do if test -d "$i" 590 then tstinclude="$tstinclude $i" 591 h= 592 for f in $c_hdr 593 do if test -f "$i/$f" 594 then case $i in 595 */CC) nogood=1 ;; 596 *) good=1 ;; 597 esac 598 else h="$h $f" 599 fi 600 done 601 c_hdr=$h 602 h= 603 for f in $C_hdr 604 do if test -f "$i/$f" 605 then case $i in 606 */CC) nogood=1 ;; 607 *) good=1 ;; 608 esac 609 else h="$h $f" 610 fi 611 done 612 C_hdr=$h 613 fi 614done 615case $nogood in 6161) good=0 ;; 617esac 618case $good in 6191) case $c_hdr in 620 ?*) bad=1 621 usrinclude=/usr/include 622 set '' $tstinclude /usr/include 623 ;; 624 *) set '' $tstinclude 625 ;; 626 esac 627 shift 628 stdinclude=$* 629 echo "#include <sys/types.h>" > include.$src 630 $cc -E include.$src | sed -e '/# 1 "[\\/]/!d' -e 's,[^"]*",,' -e 's,[\\/][^\\/]*".*,,' -e 's,[\\/]sys,,' > include.out 631 for f in `cat include.out` 632 do if test -d "$f" 633 then g=`echo $f | sed -e 's,[\\/][\\/]*[^\\/]*$,,'` 634 case " $stdinclude " in 635 *\ $f\ *|*\ $g\ *) 636 ;; 637 *) stdinclude="$stdinclude $f" 638 case $f in 639 /usr/include) usrinclude=$f ;; 640 esac 641 bad=1 642 ;; 643 esac 644 fi 645 done 646 ;; 647*) case $ppopt$ppenv in 648 ?*) echo '#!'$sh' 649 echo $VIRTUAL_ROOT | sed "s/:.*//"' > cpp 650 chmod +x cpp 651 ppcmd=cpp 652 ppdir=. 653 eval x='`'$ppenv '$'cc -E $ppopt flags.$src'`' 654 case $x in 655 ?*) tstinclude=$x/usr/include 656 ;; 657 esac 658 cp /bin/echo cpp 659 chmod u+w cpp 660 ;; 661 esac 662 663 eval set x $probe_include 664 while : 665 do shift 666 case $# in 667 0) break ;; 668 esac 669 echo "#include <$1>" > include.$src 670 $cc -E include.$src 671 done > include.out 672 673 ccinclude= 674 x=$stdinclude 675 stdinclude= 676 subinclude= 677 for f in $x $tstinclude `sed -e 's,\\\\,/,g' -e 's,///*,/,g' -e 's,"[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]:/,"/,g' -e '/^#[line ]*[0123456789][0123456789]*[ ][ ]*"[\\/]/!d' -e 's/^#[line ]*[0123456789][0123456789]*[ ][ ]*"\(.*\)[\\/].*".*/\1/' include.out | sort -u` 678 do case $f in 679 -*) ;; 680 */) f=`echo $f | sed -e 's,//*\$,,'` ;; 681 */.) f=`echo $f | sed -e 's,//*.\$,,'` ;; 682 esac 683 case $f in 684 -I*) ;; 685 */cc) ccinclude=1 686 ;; 687 */sys) continue 688 ;; 689 */include/*/*) 690 ;; 691 */include/*) 692 subinclude="$subinclude $f" 693 continue 694 ;; 695 esac 696 if test -d "$f" 697 then case " $stdinclude " in 698 *\ $f\ *) ;; 699 *) stdinclude="$stdinclude $f" ;; 700 esac 701 fi 702 done 703 rm include.out 704 case $ccinclude in 705 ?*) eval set x $probe_include 706 while : 707 do shift 708 case $# in 709 0) break ;; 710 esac 711 echo "#include <cc/$1>" > include.$src 712 if $cc -E include.$src > /dev/null 713 then break 714 fi 715 done 716 case $# in 717 0) ;; 718 *) x=$stdinclude 719 stdinclude= 720 for f in $x 721 do case $f in 722 */cc) ;; 723 *) stdinclude="$stdinclude $f" ;; 724 esac 725 done 726 ;; 727 esac 728 ;; 729 esac 730 case $subinclude in 731 ?*) for i in $subinclude 732 do for j in $stdinclude 733 do case $i in 734 $j/*/*) ;; 735 $j/*) both= 736 eval set x $probe_include 737 while : 738 do shift 739 case $# in 740 0) for k in $both 741 do echo "#include <$k>" > include.$src 742 $cc -E include.$src > include.out 743 I=`grep -c $i/$k < include.out` 744 J=`grep -c $j/$k < include.out` 745 case $I:$J in 746 0:*) ;; 747 *:0) stdinclude="$i $stdinclude" 748 break 749 ;; 750 esac 751 done 752 continue 3 753 ;; 754 esac 755 if test -f $i/$1 756 then if test ! -f $j/$1 757 then break 2 758 fi 759 both="$both $1" 760 fi 761 done 762 ;; 763 $j) continue 2 764 ;; 765 esac 766 done 767 stdinclude="$i $stdinclude" 768 done 769 ;; 770 esac 771 772 { 773 774 for i in $stdinclude 775 do 776 case $i in 777 $usrinclude) ;; 778 *) echo $i $i ;; 779 esac 780 done 781 782 eval set x $probe_include 783 while : 784 do shift 785 case $# in 786 0) break ;; 787 esac 788 echo "#include <$1>" > t.c 789 p= 790 for j in `$cc -E t.c | grep "$1" | sed -e 's,\\\\,/,g' -e 's,"[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]:/,"/,g' -e '/^#[line ]*1[ ][ ]*"[\\/]/!d' -e 's/^#[line ]*1[ ][ ]*"\(.*\)[\\/].*".*/\1/'` 791 do j=`echo $j | sed -e 's,///*,/,g' -e 's,/$,,'` 792 case $p in 793 ?*) echo $p $j ;; 794 esac 795 p=$j 796 done 797 done 798 799 case $usrinclude in 800 ?*) echo $usrinclude $usrinclude ;; 801 esac 802 803 } | tsort > tmp.tmp 804 tstinclude=`cat tmp.tmp` 805 bad= 806 for i in $stdinclude 807 do case " 808$tstinclude 809" in 810 *" 811$i 812"*) ;; 813 *) bad=1 814 break 815 ;; 816 esac 817 done 818 ;; 819esac 820 821case $bad in 822"") x=$stdinclude 823 stdinclude= 824 z= 825 for i in $tstinclude 826 do case " $x " in 827 *" $i "*) 828 stdinclude="$stdinclude $i" 829 z=$i 830 ;; 831 esac 832 done 833 case $usrinclude in 834 '') usrinclude=$z ;; 835 esac 836 ;; 837esac 838case $hosted in 839"") case $usrinclude in 840 /usr/include) usrinclude= ;; 841 esac 842 ;; 843esac 844 845case $usrinclude in 846?*) case " $stdinclude " in 847 *\ $usrinclude\ *) 848 x=$stdinclude 849 stdinclude= 850 for f in $x 851 do case $f in 852 $usrinclude) ;; 853 *) stdinclude="$stdinclude $f" ;; 854 esac 855 done 856 ;; 857 esac 858 ;; 859esac 860 861# drop dups -- they creep in somehow 862 863x=$stdinclude 864stdinclude= 865for f in $x 866do case " $stdinclude $usrinclude " in 867 *" $f "*) ;; 868 *) stdinclude="$stdinclude $f" ;; 869 esac 870done 871: 872### this script contains archaic constructs that work with all sh variants ### 873# Glenn Fowler 874# AT&T Research 875# 876# @(#)make.probe (AT&T Research) 2011-06-01 877# 878# C probe for make 879# 880# NOTE: C.probe must be included or .'d here 881# 882 883cc_dll_def=-D_BLD_DLL 884 885probe_ar_arflags="-Xany" 886probe_arflags="-xar" 887probe_ccs="strip size nm ld ar" # longest to shortest 888probe_debug="-g" 889probe_dll="'-G 0' -Wc,dll,exportall,longname,rent -Wc,exportall -dynamic $cc_dll_def" 890probe_export_dynamic="-rdynamic -export-dynamic -Wl,-export-dynamic -Wl,-E -bexpall -force_flat_namespace" 891probe_gcc_optimize="-O2" 892probe_gcc_version="*[Gg][Cc][Cc]*" 893probe_include_local="'-ignore-source-dir -iquote' -iquote -I-" 894probe_ldlazy='-zlazyload -znolazyload -Wl,-zlazyload -Wl,-znolazyload' 895probe_ldlib="LD_LIBRARY_PATH LIBPATH LPATH" 896probe_ldmap="'-Wl,-M' '-Qoption ld -M' '-Wl,-m' '-m'" 897probe_ldorigin="-Wl,-z,origin" 898probe_ldrecord='-zrecord -zignore -Wl,-zrecord -Wl,-zignore' 899probe_ldrunpath="-Wl,-R, -R -Wl,-rpath, -L" 900probe_ldstrip="'-s -mr' -Wl,-s" 901probe_lib="a lib" 902probe_lib_append="/usr/lib/pa1.1" 903probe_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" 904probe_lib_multiple="-Wl,-zmuldefs" 905probe_libdir="shlib lib" 906probe_nmflags="'' -p -B" 907probe_optimize="-O" 908probe_pic="-Kpic -KPIC -fpic -fPIC -pic -PIC +z +Z" 909probe_no_protect="'-fno-stack-protector -fno-stack-protector-all' -GS-" 910probe_readonly="-R -Krodata -xMerge -Wa,-r" 911probe_shared="'' -G -b -c -shared -Wl,dll" 912probe_shared_name="-Wl,-soname= -h" 913probe_shared_nostart="-nostartfiles" 914probe_shared_registry='"-update_registry $probe_shared_registry_file"' 915probe_shared_registry_file='registry.ld' 916probe_shared_registry_path="\$(LIBDIR)/$probe_shared_registry_file" 917probe_strict="'-ansi -pedantic' '-ansi -strict' -strict -ansi" 918probe_stripflags="'-f -s' -f -s" 919probe_unresolved="'-expect_unresolved \"*\"'" 920probe_warn="-Wall -fullwarn -w3 '-A -A' +w1" 921 922echo '#pragma pp:version' > libpp.$src 923echo '#define dDflag on' > dDflag.$src 924echo 'int main(){return 0;}' > doti.$src 925echo 'int code(){return 0;} int main(){return code();}' > export.$src 926echo '#include <stdio.h>' > imstd.$src 927echo '#include "_i_.h"' > imusr.$src 928echo 'int x;' > _i_.h 929mkdir im 930echo '(' > im/stdio.h 931echo '#include "implc_x.h" 932int main(){f(1);return 0;}' > implc.$src 933echo 'template <class T> void f(T){}' > implc_x.$src 934echo 'template <class T> void f(T);' > implc_x.h 935echo 'extern int NotalL(){return(0);}' > notall.$src 936echo '#include <stdio.h> 937extern int i; 938int i = 1; 939extern int f(){return(!i);} 940int main(){FILE* fp=stdin;return(f());}' > pic.$src 941echo 'class x {int n;} m;' > plusplus.$src 942echo 'int prefix(){return 0;}' > prefix.$src 943echo 'template<class T> int gt(T a, T b); 944template<class T> int gt(T a, T b) { return a > b; } 945int main () { return gt(2,1); }' > ptr.$src 946echo 'int main(){return 0;}' > require.$src 947echo '#if mips && !sgi || __CYGWIN__ 948( /* some systems choke on this probe */ 949#else 950#if test_const 951#define CONST const 952#else 953#define CONST 954#endif 955CONST char x[]={1,2,3,4,5,6,7,8,9,0}; 956int main(){*(char*)x=0; return x[0];} 957#endif' > readonly.$src 958# NOTE: sfclose() defined on uwin, not defined on all other systems 959echo 'extern int sfclose(); extern int ShareD(){return(sfclose());}' > shared.$src 960echo '#define g(a,b) a ## b 961volatile int a; 962const int g(x,y)=1; 963extern int c(int);' > stdc.$src 964echo 'extern int f(); int main() { return f(); }' > sovmain.$src 965echo 'int f() { return 0; }' > sovlib.$src 966echo '#include <stdio.h> 967int i; 968int main(){int j;j = i * 10;return j;}' > strip.$src 969echo 'template <class T> void f(T){} 970int main(){f(1);return 0;}' > toucho.$src 971echo '#if defined(__STDC__) || defined(__cplusplus) 972extern type call(int); 973#endif 974int main() {call(0);return(0);}' > tstlib.$src 975echo 'int main(){return 0;}' > warn.$src 976echo 'int f(){return 0;}' > warn1.$src 977echo 'int f(){}' > warn2.$src 978echo 'int f(){int i; return 0;}' > warn3.$src 979echo 'int f(){int i; return i;}' > warn4.$src 980echo 'int f(){return g();}' > warn5.$src 981warn_enum="1 2 3 4 5" 982 983chmod -w *.$src 984 985ar_arflags= 986arflags= 987cc_dll= 988cc_pic= 989cc_PIC= 990dDflag= 991debug= 992dialect= 993dll_dir='$(LIBDIR)' 994dll_libraries= 995dll_variants= 996doti= 997exectype= 998export_dynamic= 999gnu= 1000implicitc= 1001include_local= 1002lddynamic= 1003ldlazy= 1004ldnolazy= 1005ldnorecord= 1006ldorigin= 1007ldrecord= 1008ldrunpath= 1009ldscript= 1010ldstatic= 1011ldstrip= 1012Lflag= 1013lib_dll= 1014lib_all= 1015lib_undef= 1016libpath= 1017libpp= 1018makeoptions= 1019nmedit= 1020nmflags= 1021no_protect= 1022optimize= 1023plusplus= 1024prefix_archive=lib 1025prefix_dynamic= 1026prefix_shared=lib 1027ptrcopy= 1028ptrimplicit= 1029ptrmkdir= 1030readonly= 1031repository= 1032require= 1033runpath= 1034shared= 1035shared_name= 1036shared_registry= 1037shellmagic= 1038soversion= 1039stdc= 1040strict= 1041stripflags= 1042symprefix= 1043toucho= 1044warn= 1045 1046set $probe_lib 1047lib=$1 1048 1049d= 1050for f in $stdinclude $usrinclude 1051do case $f in 1052 -I*) ;; 1053 *) d="$d $f" ;; 1054 esac 1055done 1056stdinclude=$d 1057 1058set x $cc 1059cc_dir=`echo $2 | sed -e 's,/*[^/]*$,,'` 1060for c in $probe_ccs 1061do if $executable $cc_dir/$c 1062 then x=$cc_dir/$c 1063 else x=$c 1064 fi 1065 eval $c='$x' 1066done 1067ld_dir= 1068rm -f doti.$obj 1069if $cc -c doti.$src 1070then eval set x $probe_verbose 1071 shift 1072 for o 1073 do $cc $o doti.$obj 1074 $cc $o doti.$obj -lF0oB@r 1075 done 2>&1 | sed -e 's/^[+ ]*//' -e 's/[ ].*//' -e '/^\//!d' -e 's/:$//' -e '/ld[a-zA-Z0-9.]*$/!d' -e 's,///*,/,g' > t 1076 for i in `cat t` 1077 do rm -f t.$obj 1078 if test -x $i && $i -r -o t.$obj doti.$obj && test -f t.$obj 1079 then case $ld in 1080 ld) ld=$i ;; 1081 esac 1082 ld_dir=`echo $i | sed 's,/[^/]*$,,'` 1083 break 1084 fi 1085 done 1086fi 1087IFS=: 1088set x $PATH 1089IFS=$ifs 1090path=$* 1091m= 1092for c in $probe_ccs 1093do eval o='$'$c 1094 case $o in 1095 $c) ;; 1096 *) continue ;; 1097 esac 1098 C='${c}' 1099 for x in $cc_dir $ld_dir 1100 do cd $x 1101 for p in "${C}" "${C}[!a-zA-Z]*" "*[!a-zA-Z]${C}" "*[!a-zA-Z]${C}[!a-zA-Z]*" 1102 do eval set x $p 1103 case $# in 1104 2) if $executable $2 1105 then case $2 in 1106 *$c*$c*);; 1107 *) m=$p 1108 break 3 1109 ;; 1110 esac 1111 fi 1112 ;; 1113 esac 1114 done 1115 done 1116done 1117cd $tmpdir 1118for c in $probe_ccs 1119do eval o='$'$c 1120 case $o in 1121 $c) ;; 1122 *) continue ;; 1123 esac 1124 for x in $cc_dir $ld_dir 1125 do if $executable $x/$c 1126 then eval $c='$x/$c' 1127 continue 2 1128 fi 1129 case $m in 1130 ?*) eval set x $x/$m 1131 case $# in 1132 2) if $executable $2 1133 then eval $c='$2' 1134 continue 2 1135 fi 1136 ;; 1137 esac 1138 ;; 1139 esac 1140 done 1141 for x in $path 1142 do if $executable $x/$c 1143 then eval $c='$x/$c' 1144 break 1145 fi 1146 done 1147done 1148dld=$cc 1149 1150rm -f dynamic.$exe 1151if $cc -o dynamic.$exe dynamic.$obj && $executable dynamic.$exe 1152then mkdir mylib 1153 echo > mylib/libc.$lib 1154 eval set x $probe_ldlib 1155 while : 1156 do shift 1157 case $# in 1158 0) break ;; 1159 esac 1160 rm -f dynamic.$exe 1161 if eval $1=./mylib '$'cc -o dynamic.$exe dynamic.$obj 1162 then : 1163 else libpath=$1 1164 break 1165 fi 1166 done 1167fi 1168test `$cc -E libpp.$src | grep -c '^#pragma pp:version "libpp '` -eq 1 && libpp=1 1169$cc -E doti.$src > doti.i && $cc -c doti.i && test -s doti.$obj && doti=1 1170if $cc -c imusr.$src 1171then eval set x $probe_include_local 1172 while : 1173 do shift 1174 case $# in 1175 0) break ;; 1176 esac 1177 if $cc -c $1 imusr.$src 1178 then : "$1 should skip \"_i_.h\" in ." 1179 elif $cc -c imstd.$src 1180 then if $cc -c -Iim imstd.$src 1181 then : '-Idir should find <stdio.h> in dir' 1182 elif $cc -c $1 -Iim imstd.$src 1183 then : "$1 -Idir should find <stdio.h> in dir" 1184 elif $cc -c -Iim $1 imstd.$src 1185 then include_local=$1 1186 break 1187 else : "-Idir $1 should skip <stdio.h> in dir" 1188 fi 1189 else : should find stdio.h 1190 fi 1191 done 1192else : 'should find "_i_.h" in .' 1193fi 1194 1195if $cc -c pic.$src 2>e 1196then e=`wc -l e` 1197 s=`$size pic.$obj; wc pic.$obj` 1198 eval set x $probe_pic 1199 shift 1200 while : 1201 do case $# in 1202 0|1) break ;; 1203 esac 1204 pic=$1 1205 shift 1206 PIC=$1 1207 shift 1208 rm -f pic.$obj 1209 $cc $pic -c pic.$src 2>e && test -f pic.$obj || continue 1210 $cc $pic -o pic.$exe pic.$obj && test -f pic.$exe || { 1211 rm -f pic.$exe 1212 $cc -o pic.$exe pic.$obj && test -f pic.$exe && continue 1213 } 1214 case `wc -l e` in 1215 $e) ;; 1216 *) continue ;; 1217 esac 1218 case $pic in 1219 ???*) m=`echo " $pic" | sed -e 's/^ [-+]//g' -e 's/./-& /g' -e 's/[-+] //g'` 1220 rm -f pic.$obj pic1.$exe 1221 if $cc $m -c pic.$src 2>e && test -f pic.$obj && 1222 $cc -o pic1.$exe pic.$obj && test -f pic1.$exe 1223 then case `wc -l e` in 1224 $e) cc_pic=$m 1225 break 1226 ;; 1227 esac 1228 fi 1229 cc_pic=$pic 1230 break 1231 ;; 1232 *) case `$size pic.$obj; wc pic.$obj` in 1233 $s) ;; 1234 *) cc_pic=$pic 1235 break 1236 ;; 1237 esac 1238 ;; 1239 esac 1240 done 1241 # this works around gcc 2.95 sun4 -fpic a.out core dump after exit 1242 case $hosted:$cc_pic in 1243 1:?*) if ./pic.$exe 1244 then # this catches lynxos.ppc gcc that dumps -fpic and not -mshared 1245 echo 'static int* f() { static int v; return &v; } 1246int main() { f(); return 0; }' > picok.$src 1247 $cc $cc_pic -o picok.$exe picok.$src && ./picok.$exe || cc_pic= 1248 else cc_pic= 1249 fi 1250 ;; 1251 esac 1252 case $cc_pic in 1253 ?*) rm -f pic.$obj 1254 if $cc $PIC -c pic.$src 2>e && test -f pic.$obj 1255 then cc_PIC=$PIC 1256 else cc_PIC=$cc_pic 1257 fi 1258 ;; 1259 *) eval set x $probe_dll 1260 while : 1261 do shift 1262 case $# in 1263 0) break ;; 1264 esac 1265 rm -f pic.$obj pic.$exe 1266 $cc $1 -c pic.$src 2>e && test -f pic.$obj || continue 1267 $cc $1 -o pic.$exe pic.$obj && test -f pic.$exe || { 1268 rm -f pic.$exe 1269 $cc -o pic.$exe pic.$obj && test -f pic.$exe && continue 1270 } 1271 case $1 in 1272 -Wc,*exportall*) 1273 # get specific since sgi gets this far too 1274 rm -f pic.$exe pic.x 1275 $cc -Wl,dll -o pic.$exe pic.$obj || continue 1276 test -f pic.$exe || continue 1277 test -f pic.x || continue 1278 cc_dll="-D_SHARE_EXT_VARS $1" 1279 so=.x 1280 sd=.dll 1281 dld=$cc 1282 shared=-Wl,dll 1283 prefix_shared= 1284 probe_sd= 1285 probe_shared= 1286 #unused# lddynamic=-Bdynamic 1287 #unused# ldstatic=-Bstatic 1288 lib_dll=SYMBOL 1289 break 1290 ;; 1291 esac 1292 case `wc -l e` in 1293 $e) cc_dll=$1 1294 break 1295 ;; 1296 esac 1297 done 1298 ;; 1299 esac 1300fi 1301 1302$cc -c plusplus.$src && plusplus=1 1303$cc -E -dD dDflag.$src > t 1304case `grep '#define[ ][ ]*dDflag[ ][ ]*on' t` in 1305?*) dDflag=1 ;; 1306esac 1307case `grep '#define.*_GNUC_' t` in 1308?*) gnu=1 ;; 1309esac 1310case $plusplus in 1311"") $cc -c stdc.$src && stdc=1 ;; 1312*) mkdir ptr 1313 cd ptr 1314 $cc -c ../ptr.$src & 1315 NFS_locks_are_botched=$! 1316 cd .. 1317 if $cc -c require.$src && $cc require.$obj 1318 then set x `$cc require.$obj 2>&1` 1319 d= 1320 while : 1321 do shift 1322 case $# in 1323 0) break ;; 1324 esac 1325 case $1 in 1326 -l*) d="$d $1" ;; 1327 esac 1328 done 1329 for f in ++ 1330 do if $cc require.$obj -l$f 1331 then set x `$cc require.$obj -l$f 2>&1` 1332 r= 1333 while : 1334 do shift 1335 case $# in 1336 0) break ;; 1337 esac 1338 case $1 in 1339 -l*) case " $d $r " in 1340 *" "$1" "*) ;; 1341 *) r="$r $1" ;; 1342 esac 1343 esac 1344 done 1345 case $r in 1346 ?*) require="$require $f" 1347 echo '' $r > req.$f 1348 ;; 1349 esac 1350 fi 1351 done 1352 fi 1353 cd ptr 1354 for i in * 1355 do if test -d $i 1356 then repository=$i 1357 break 1358 fi 1359 done 1360 cd .. 1361 kill -9 $NFS_locks_are_botched 1362 rm -rf ptr 1363 case $repository in 1364 *?) mkdir ptr 1365 cd ptr 1366 i=PTR 1367 case $repository in 1368 $i) i=$i$i ;; 1369 esac 1370 $cc -ptr$i -c ../ptr.$src & 1371 NFS_locks_are_botched=$! 1372 cd .. 1373 sleep 5 1374 if test -d ptr/$i/$repository 1375 then ptrimplicit=1 1376 fi 1377 kill -9 $NFS_locks_are_botched 1378 rm -rf ptr 1379 ;; 1380 esac 1381 $cc -o implc implc.$src && $executable implc && implicitc=1 1382 if $cc -c toucho.$src && test -f toucho.$obj 1383 then o=`ls -l toucho.$obj` 1384 if $cc -o toucho toucho.$obj && $executable toucho 1385 then n=`ls -l touch.$obj` 1386 case $n in 1387 "$o") ;; 1388 *) toucho=1 ;; 1389 esac 1390 fi 1391 fi 1392 ;; 1393esac 1394 1395if $cc -c pic.$src 1396then eval set x $probe_nmflags 1397 while : 1398 do shift 1399 case $# in 1400 0) break ;; 1401 esac 1402 case `$nm $1 pic.$obj | grep -c '[0123456789][ ][ ]*T[ ][ ]*[_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]'` in 1403 0) ;; 1404 *) nmflags=$1 1405 break 1406 ;; 1407 esac 1408 done 1409 case $# in 1410 0) case `$nm -gh pic.$obj | grep -c '|\.*[TtDdBbC][EeAaSsOo][XxTtSsMm]'` in 1411 0) ;; 1412 *) nmflags=-gh 1413 nmedit="-e '/\.*[TtDdBbC][EeAaSsOo][XxTtSsMm]/!d' -e 's/[| ].*//'" 1414 ;; 1415 esac 1416 ;; 1417 *) nmedit="-e '/[ ]T[ ][ ]*[_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]/!d' -e 's/.*[ ]T[ ][ ]*//'" 1418 ;; 1419 esac 1420fi 1421 1422if $cc -c doti.$src 1423then eval set x $probe_stripflags 1424 while : 1425 do shift 1426 case $# in 1427 0) break ;; 1428 esac 1429 if $strip $1 doti.$obj 1430 then stripflags=$1 1431 break 1432 fi 1433 done 1434fi 1435 1436rm -f export.$obj export.exe 1437if $cc -c export.$src 1438then lm= 1439 if $cc -o export.exe export.$obj -lm 2>e && lm=-lm || 1440 $cc -o export.exe export.$obj 2>e 1441 then z=`wc -c < export.exe; $size export.exe 2>/dev/null` 1442 eval set x $probe_export_dynamic 1443 while : 1444 do shift 1445 case $# in 1446 0) break ;; 1447 esac 1448 rm -f export.exe 1449 if $cc -o export.exe $1 export.$obj $lm 2>f && $executable export.exe 1450 then y=`wc -c < export.exe; $size export.exe 2>/dev/null` 1451 case $y in 1452 $z) ;; 1453 *) if cmp -s e f 1454 then export_dynamic=$1 1455 break 1456 fi 1457 ;; 1458 esac 1459 fi 1460 done 1461 fi 1462fi 1463rm -f export.$obj export.exe 1464 1465rm -f strip.exe 1466if $cc -o strip.exe strip.$src 1467then z=`wc -c < strip.exe` 1468 eval set x $probe_ldstrip 1469 while : 1470 do shift 1471 case $# in 1472 0) break ;; 1473 esac 1474 rm -f strip.exe 1475 if $cc -o strip.exe $1 strip.$src 1476 then case `wc -c < strip.exe` in 1477 $z) ;; 1478 *) ldstrip=$1 1479 break 1480 ;; 1481 esac 1482 fi 1483 done 1484fi 1485 1486rm -f strip.exe strip.$obj 1487if $cc -c strip.$src && $cc -o strip.exe strip.$obj 2>e 1488then eval set x x $probe_ldlazy 1489 while : 1490 do shift 1491 shift 1492 case $# in 1493 0) break ;; 1494 esac 1495 rm -f strip.$exe 1496 $cc -o strip.$exe $1 strip.$obj $2 2>f && test -f strip.$exe || continue 1497 cmp -s e f || continue 1498 ldlazy=$1 1499 ldnolazy=$2 1500 break 1501 done 1502 eval set x x $probe_ldrecord 1503 while : 1504 do shift 1505 shift 1506 case $# in 1507 0) break ;; 1508 esac 1509 rm -f strip.$exe 1510 $cc -o strip.$exe $1 strip.$obj $2 2>f && test -f strip.$exe || continue 1511 cmp -s e f || continue 1512 ldrecord=$1 1513 ldnorecord=$2 1514 break 1515 done 1516fi 1517 1518case $cc_dll:$cc_pic:$so:$dynamic:$static in 1519::::|$cc_dll_def::::) 1520 : last chance dynamic checks 1521 while : 1522 do 1523 echo '__declspec(dllexport) int fun() { return 0; }' > exp.$src 1524 if $cc -c $cc_dll_def exp.$src 1525 then rm -f xxx.dll xxx.lib 1526 if $cc -shared -Wl,--enable-auto-image-base -Wl,--out-implib=xxx.lib -o xxx.dll exp.$obj && 1527 test -f xxx.lib -a -f xxx.dll 1528 then 1529 : cygwin 1530 cc_dll=$cc_dll_def 1531 dll_dir='$(BINDIR)' 1532 sd=.dll 1533 so=.dll.a 1534 ldscript=".def .exp .ign .res" 1535 lib_dll=option 1536 lib_all=-Wl,-whole-archive 1537 lib_undef=-Wl,-no-whole-archive 1538 dld=$cc 1539 shared='-shared -Wl,--enable-auto-image-base -Wl,--out-implib=$(<:N=*'$so')' 1540 prefix_dynamic=cyg 1541 prefix_shared=lib 1542 break 1543 fi 1544 fi 1545 break 1546 done 1547 ;; 1548*) if $cc -c $cc_dll $cc_pic shared.$src && $cc -c $cc_dll $cc_pic notall.$src 1549 then for xx in "$cc" "$ld" 1550 do eval set x $probe_shared 1551 while : 1552 do shift 1553 case $# in 1554 0) break ;; 1555 esac 1556 rm -f xxx$dll 1557 # UNDENT ... 1558 1559 if $xx $1 -o xxx$dll shared.$obj 2>e && test -r xxx$dll 1560 then if test -s e && egrep -i 'unknown|invalid|option' e > /dev/null 1561 then continue 1562 fi 1563 case `PATH=/bin:/usr/bin:$PATH file xxx$dll` in 1564 *lib*|*obj*|*shared*) 1565 ;; 1566 "") $executable xxx$dll || continue 1567 ;; 1568 *ELF*|*elf*) 1569 $executable xxx$dll || continue 1570 case `strings xxx$dll | sed -e 's,.*[ |],,' | sort -u | egrep -i '^([._](dynamic|dynstr|dynsym))$'` in 1571 [012]) continue ;; 1572 esac 1573 ;; 1574 *archive*not*stripped*|*data*dynamic*not*stripped*) 1575 $executable xxx$dll || continue 1576 ;; 1577 *) continue 1578 ;; 1579 esac 1580 dld=$xx 1581 shared=$1 1582 # does -nostartfiles make sense for C? 1583 case $plusplus in 1584 '') z=`wc -c < xxx$dll` 1585 eval set x $probe_shared_nostart 1586 while : 1587 do shift 1588 case $# in 1589 0) break ;; 1590 esac 1591 rm -f xxx$dll 1592 if $dld $shared $1 -o xxx$dll shared.$obj 2>e && test -r xxx$dll 1593 then case `wc -c < xxx$dll` in 1594 $z) ;; 1595 *) if test -s e 1596 then case `cat e` in 1597 *[Ee][Rr][Rr][Oo][Rr]*|*[Ww][Aa][Rr][Nn][Ii][Nn][Gg]*|*[Oo][Pp][Tt][Ii][Oo][Nn]*) 1598 continue 1599 ;; 1600 esac 1601 fi 1602 case $shared in 1603 '') shared=$1 ;; 1604 *) shared="$shared $1" ;; 1605 esac 1606 break 1607 ;; 1608 esac 1609 fi 1610 done 1611 ;; 1612 esac 1613 case $cc_dll in 1614 "") cc_dll=$cc_dll_def ;; 1615 esac 1616 eval set x x $probe_sd 1617 while : 1618 do shift 1619 shift 1620 case $# in 1621 [01]) break ;; 1622 esac 1623 rm -f xxx xxx$1 xxx$2 1624 if $dld $shared -o xxx shared.$obj 2>e 1625 then if test -f xxx$1 -a \( -f xxx$2 -o "$cc_dll" = "$cc_dll_def" \) 1626 then sd=$1 1627 so=$2 1628 lddynamic=-Bdynamic 1629 ldstatic=-Bstatic 1630 break 2 1631 elif test -f xxx -a -f xxx$2 1632 then sd=$1 1633 so=$2 1634 break 2 1635 else case $so in 1636 '') so=$1 ;; 1637 esac 1638 break 1639 fi 1640 fi 1641 done 1642 rm -f libxxx.$lib 1643 $ar cr libxxx.$lib shared.$obj 1644 ranlib libxxx.$lib 1645 eval set x x $probe_lib_all_undef 1646 rm -f xxx$dll 1647 if $dld $shared -o xxx$dll libxxx.$lib && test -r xxx$dll 1648 then if $nm $nmflags xxx$dll | grep ShareD 1649 then lib_dll=OPTION 1650 set x x 1651 fi 1652 fi 1653 while : 1654 do shift 1655 shift 1656 case $# in 1657 0|1) break ;; 1658 esac 1659 rm -f xxx$dll 1660 if $dld $shared -o xxx$dll $1 libxxx.$lib $2 && test -r xxx$dll 1661 then if $nm $nmflags xxx$dll | grep ShareD 1662 then lib_dll=option 1663 lib_all=$1 1664 lib_undef=$2 1665 break 1666 fi 1667 fi 1668 case $2 in 1669 ?*) if $dld $shared -o xxx$dll $1 libxxx.$lib && test -r xxx$dll 1670 then if $nm $nmflags xxx$dll | grep ShareD 1671 then lib_dll=option 1672 lib_all=$1 1673 break 1674 fi 1675 fi 1676 ;; 1677 esac 1678 done 1679 case $lib_dll in 1680 OPTION) lib_dll=option 1681 ;; 1682 option) case $lib_undef in 1683 "") rm -f libyyy.$lib 1684 $ar cr libyyy.$lib notall.$obj 1685 ranlib libyyy.$lib 1686 $cc -c prefix.$src 1687 eval set x x $probe_lib_all_undef 1688 while : 1689 do shift 1690 shift 1691 case $# in 1692 0|1) break ;; 1693 esac 1694 rm -f xxx$dll 1695 if $dld $shared -o xxx$dll prefix.$obj $lib_all libxxx.$lib $2 libyyy.$lib && test -r xxx$dll 1696 then rm -f t 1697 $nm $nmflags xxx$dll > t 1698 case `grep -c ShareD t`:`grep -c NotalL t` in 1699 0:*) ;; 1700 *:0) lib_undef=$2 1701 break 1702 ;; 1703 esac 1704 fi 1705 done 1706 ;; 1707 esac 1708 case $lib_undef in 1709 "") eval set x $probe_lib_multiple 1710 rm -f libyyy.$lib 1711 cp libxxx.$lib libyyy.$lib 1712 rm -f xxx$dll 1713 if $dld $shared -o xxx$dll prefix.$obj $lib_all libxxx.$lib libyyy.$lib && test -r xxx$dll 1714 then : 1715 else while : 1716 do shift 1717 case $# in 1718 0) break ;; 1719 esac 1720 rm -f xxx$dll 1721 if $dld $shared -o xxx$dll prefix.$obj $lib_all $1 libxxx.$lib libyyy.$lib && test -r xxx$dll 1722 then rm -f t 1723 $nm $nmflags xxx$dll > t 1724 case `grep -c ShareD t` in 1725 0) ;; 1726 *) lib_all="$lib_all $1" 1727 break 1728 ;; 1729 esac 1730 fi 1731 done 1732 fi 1733 lib_dll=symbol 1734 ;; 1735 esac 1736 ;; 1737 *) lib_dll=symbol 1738 ;; 1739 esac 1740 case `cat e` in 1741 ?*) eval set x $probe_unresolved 1742 while : 1743 do shift 1744 case $# in 1745 0) break ;; 1746 esac 1747 rm -f xxx$dll 1748 if eval '$dld $shared' $1 '-o xxx$dll shared.$obj 2>e && test -r xxx$dll' 1749 then case `cat e` in 1750 "") shared="$shared $1"; break ;; 1751 esac 1752 fi 1753 done 1754 ;; 1755 esac 1756 r= 1757 eval set x $probe_shared_registry 1758 while : 1759 do shift 1760 r=x$r 1761 case $# in 1762 0) break ;; 1763 esac 1764 rm -f xxx$dll 1765 if eval \$dld \$shared -o xxx\$dll $1 shared.\$obj && 1766 test -r xxx$dll -a -r $probe_shared_registry_file 1767 then probe_shared_registry_file='$(CC.SHARED.REGISTRY.PATH)' 1768 eval set x $probe_shared_registry 1769 i= 1770 while : 1771 do shift 1772 i=x$i 1773 case $i in 1774 $r) break ;; 1775 esac 1776 done 1777 shared_registry=$1 1778 fi 1779 done 1780 break 2 1781 fi 1782 1783 # ... INDENT 1784 done 1785 done 1786 fi 1787 case $so in 1788 ?*) rm -f xxx* 1789 if $dld $shared -g -o xxx shared.$obj 2>e 1790 then set x $probe_sdb 1791 while : 1792 do shift 1793 case $1 in 1794 0) break ;; 1795 esac 1796 if test -f xxx$1 1797 then sdb=$1 1798 break 1799 fi 1800 done 1801 fi 1802 if $cc -c require.$src 1803 then p=' 1804/usr/proberun/lib:/local/runprobe/lib 1805' 1806 eval set x $probe_ldrunpath 1807 while : 1808 do shift 1809 case $# in 1810 0) break ;; 1811 esac 1812 rm -f require.exe 1813 if $cc -o require.exe $1"$p" require.$obj && 1814 grep -c /proberun/ require.exe >/dev/null && 1815 grep -c /runprobe/ require.exe > /dev/null 1816 then ldrunpath=$1 1817 eval set x $probe_ldorigin 1818 while : 1819 do shift 1820 case $# in 1821 0) break ;; 1822 esac 1823 rm -f origin.exe 1824 if $cc -o origin.exe $1 $ldrunpath'$ORIGIN' require.$obj 1825 then if ./origin.exe > /dev/null 2>&1 1826 then ldorigin="$1 $ldrunpath"'\$ORIGIN/$(BINDIR:P=R=$(DLLDIR))' 1827 fi 1828 break 1829 fi 1830 done 1831 break 1832 fi 1833 done 1834 fi 1835 rm -f libxxx$so 1836 if $cc -c sovmain.$src && 1837 $cc -c $cc_dll $cc_pic sovlib.c && 1838 $dld $shared -o libxxx$so sovlib.$obj && 1839 $cc -o sovmain.$exe -L. sovmain.$obj -lxxx 1840 then rm -f sovmain.$exe 1841 mv libxxx$so libxxx$so.5.6 1842 if $cc -o sovmain.$exe -L. sovmain.$obj -lxxx 1843 then soversion=1 1844 fi 1845 fi 1846 rm -f doti.$obj 1847 std64=/lib64 1848 lcl64=/usr/local/lib64 1849 if test -d $std64 -a -d $lcl64 && $cc -c doti.$src 1850 then for i in `cd $lcl64; ls *$so 2>/dev/null | sed 's/lib\([^.]*\).*/\1/'` 1851 do if $cc -o runpath.$exe doti.$obj -l$i >/dev/null 2>&1 1852 then LD_LIBRARY_PATH= ./runpath.$exe >/dev/null 2>&1 && continue 1853 if LD_LIBRARY_PATH=$lcl64 ./runpath.$exe >/dev/null 2>&1 1854 then runpath=$lcl64 1855 break 1856 elif LD_LIBRARY_PATH=$std64 ./runpath.$exe >/dev/null 2>&1 1857 then runpath=$std64 1858 break 1859 elif LD_LIBRARY_PATH=$lcl64:$std64 ./runpath.$exe >/dev/null 2>&1 1860 then runpath=$lcl64:$std64 1861 break 1862 fi 1863 fi 1864 done 1865 fi 1866 ;; 1867 esac 1868 ;; 1869esac 1870 1871rm -f shared.$obj 1872if $cc -c shared.$src 1873then eval set x $probe_ar_arflags 1874 while : 1875 do shift 1876 case $# in 1877 0) break ;; 1878 esac 1879 rm -f libxxx.$lib 1880 if $ar $1 r libxxx.$lib shared.$obj && $ar $1 t libxxx.$lib 2>&1 | grep shared.$obj >/dev/null 1881 then ar_arflags=$1 1882 break 1883 fi 1884 done 1885 eval set x $probe_arflags 1886 while : 1887 do shift 1888 case $# in 1889 0) break ;; 1890 esac 1891 rm -f libxxx.$lib 1892 if $cc $1 -o libxxx.$lib shared.$obj && $ar t libxxx.$lib 2>&1 | grep shared.$obj >/dev/null 1893 then arflags=$1 1894 break 1895 fi 1896 done 1897fi 1898 1899case $shared in 1900-G) case $cc_dll in 1901 "") cc_dll=$cc_dll_def ;; 1902 esac 1903 ;; 1904*) case $lib_dll in 1905 symbol) echo 'extern int f(); 1906 int main() { f(); return 0; }' > main.$src 1907 echo '#include <stdio.h> 1908 int f() { printf("hello world"); return 0; }' > member.$src 1909 if $cc -c main.$src && $cc -c member.$src 1910 then echo f > lib.exp 1911 rm -f lib.$obj main.exe 1912 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 1913 then dld=$ld 1914 shared='-T512 -H512 -L$(LIBDIR): -berok -bmodtype:SRE' 1915 lib_dll=export 1916 dll_libraries='-lm -lc' 1917 ldscript=.exp 1918 case $cc_dll in 1919 "") cc_dll=$cc_dll_def ;; 1920 esac 1921 case $so in 1922 "") so=.$obj ;; 1923 esac 1924 fi 1925 fi 1926 ;; 1927 esac 1928 ;; 1929esac 1930case $shared in 1931?*) if $cc -c $cc_dll $cc_pic shared.$src 1932 then eval set x $probe_shared_name 1933 while : 1934 do shift 1935 case $# in 1936 0) break ;; 1937 esac 1938 rm -f xxx$dll 1939 if $dld $shared ${1}libfoo.1.2 -o xxx$dll shared.$obj 2>e && test -r xxx$dll 1940 then shared_name=$1 1941 break 1942 fi 1943 done 1944 fi 1945 ;; 1946esac 1947case " $cc_dll " in 1948*" $cc_dll_def "*) 1949 ;; 1950" ") ;; 1951*) cc_dll="$cc_dll_def $cc_dll" 1952 ;; 1953esac 1954 1955case $hosttype in 1956win32.*|cygwin.*|os2.*) 1957 Lflag=1 1958 ;; 1959*) if $cc -c doti.$src 1960 then if $cc -L. doti.$obj -lc >/dev/null 1961 then case $cc_dll in 1962 '') ;; 1963 *) Lflag=1 ;; 1964 esac 1965 fi 1966 fi 1967 ;; 1968esac 1969 1970case $lib_dll in 1971option) case $hosttype in 1972 linux.*) dll_libraries=-lc ;; 1973 esac 1974 ;; 1975SYMBOL) lib_dll=symbol 1976 ;; 1977symbol) echo "#include <stdio.h> 1978extern int fun() 1979{ 1980 puts(\"fun\"); 1981 return 0; 1982}" > dllib.$src 1983 echo "extern int fun(); 1984int 1985main() 1986{ 1987 return fun(); 1988}" > dlmain.$src 1989 pwd=`pwd` 1990 while : 1991 do 1992 if $cc -c $cc_dll $cc_pic dlmain.$src && 1993 $cc -c $cc_dll $cc_pic dllib.$src 1994 then rm -f libxxx$so 1995 if $dld $shared -o libxxx$so dllib.$obj && 1996 chmod 555 libxxx$so 1997 then rm -f dlmain.$exe 1998 if $cc -o dlmain.$exe dlmain.$obj $pwd/libxxx$so && 1999 (./dlmain.$exe) >/dev/null 2>&1 2000 then break 2001 fi 2002 fi 2003 rm -f libxxx$so dlmain.$exe 2004 if $dld $shared -o libxxx$so dllib.$obj -lm -lc && 2005 chmod 555 libxxx$so && 2006 $cc -o dlmain.$exe dlmain.$obj $pwd/libxxx$so && 2007 (./dlmain.$exe) >/dev/null 2>&1 2008 then dll_libraries='-lm -lc' 2009 fi 2010 fi 2011 break 2012 done 2013 # the dll_libraries probe is still lame 2014 case $dll_libraries in 2015 '') case $hosttype in 2016 sco.*|sol*.*|sun*) ;; 2017 *) dll_libraries='-lm -lc' ;; 2018 esac 2019 ;; 2020 esac 2021 ;; 2022esac 2023 2024stdlib= 2025a=`$cc -print-multi-directory 2>/dev/null` 2026case $a in 2027.) ;; 2028*) for d in `$cc -print-search-dirs 2>/dev/null | sed -e '/^libraries:/!d' -e 's/.*=//' | tr : '\n' | grep /lib/` 2029 do if [ -d ${d}${a} ] 2030 then stdlib="$stdlib ${d}${a}" 2031 else case $d in 2032 */lib/) d=`echo '' $d | sed -e 's,/$,,'` 2033 if [ -d ${d}${a} ] 2034 then stdlib="$stdlib ${d}${a}" 2035 fi 2036 ;; 2037 esac 2038 fi 2039 done 2040 ;; 2041esac 2042case $stdlib in 2043'') stdlib=`$cc -v doti.$src 2>&1 | 2044 sed 's/ */\n/g' | 2045 sed -e '/^-L/!d' -e 's/^-L//' | 2046 while read dir 2047 do if test -d "$dir" 2048 then (cd "$dir"; pwd) 2049 fi 2050 done` 2051 ;; 2052*) eval set x $probe_verbose 2053 shift 2054 for o in "$@" 2055 do stdlib="$stdlib "`$cc $o doti.$src 2>&1 | 2056 sed 's/ */\n/g' | 2057 sed -e '/^-L/!d' -e '/\/lib64$/!d' -e 's/^-L//'` 2058 done 2059 ;; 2060esac 2061case $stdlib in 2062?*) keepstdlib=1 2063 o=$stdlib 2064 stdlib= 2065 for dir in $o 2066 do case " $stdlib " in 2067 *" $o "*) continue ;; 2068 esac 2069 case $dir in 2070 /usr/lib64) 2071 i=/usr/local/lib64 2072 a=/lib64 2073 ;; 2074 /lib64) i=/usr/local/lib64 2075 a=/usr/lib64 2076 ;; 2077 /usr/lib) 2078 i=/usr/local/lib 2079 a=/lib 2080 ;; 2081 lib) i=/usr/local/lib 2082 a=/usr/lib 2083 ;; 2084 *) i= 2085 a= 2086 ;; 2087 esac 2088 if test "" != "$i" -a -d "$i" 2089 then case " $o " in 2090 *" $i "*) 2091 ;; 2092 *) stdlib="$stdlib $i" 2093 ;; 2094 esac 2095 fi 2096 stdlib="$stdlib $dir" 2097 if test "" != "$a" -a -d "$a" 2098 then case " $o " in 2099 *" $a "*) 2100 ;; 2101 *) stdlib="$stdlib $a" 2102 ;; 2103 esac 2104 fi 2105 done 2106 case $hosted in 2107 1) case " $stdlib " in 2108 *" /usr/lib "*) 2109 ;; 2110 *) case " $stdlib " in 2111 *" /usr/local/lib "*) 2112 ;; 2113 *) stdlib="$stdlib /usr/local/lib" 2114 ;; 2115 esac 2116 stdlib="$stdlib /usr/lib" 2117 ;; 2118 esac 2119 case " $stdlib " in 2120 *" /lib "*) 2121 ;; 2122 *) stdlib="$stdlib /lib" 2123 ;; 2124 esac 2125 esac 2126 ;; 2127*) keepstdlib=0 2128 case $dir in 2129 */arch/$hosttype/lib/*) 2130 notlib=`echo $dir | sed "s,/arch/$hosttype/lib/.*,/arch/$hosttype/lib,"` 2131 ;; 2132 *) notlib=//// 2133 ;; 2134 esac 2135 tstlib= 2136 implib= 2137 if $cc -c hosted.$src 2138 then for f in `( 2139 eval set x $probe_verbose 2140 while : 2141 do shift 2142 case $# in 2143 0) break ;; 2144 esac 2145 $cc $1 hosted.$obj 2146 done 2147 ) 2>&1 | sed -e 's/[ :]/\\ 2148 /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,//*$,,'` 2149 do case " $tstlib $implib " in 2150 *" $f "*) continue ;; 2151 esac 2152 case $f in 2153 $notlib) continue ;; 2154 esac 2155 if test -d $f 2156 then tstlib="$tstlib $f" 2157 elif test -f $f 2158 then d=`echo $f | sed -e 's,[\\\\/]*[^\\\\/]*\$,,'` 2159 case " $tstlib $implib " in 2160 *" $d "*) continue ;; 2161 esac 2162 case $d in 2163 *[\\/]usr[\\/]lib) 2164 x=$d 2165 d="`echo $d | sed -e 's,[\\\\/][\\\\/]*usr[\\\\/]lib\$,/lib,'`" 2166 case " $tstlib $implib " in 2167 *" $d "*) ;; 2168 *) implib="$implib $d" ;; 2169 esac 2170 implib="$implib $x" 2171 ;; 2172 *[\\/]lib) 2173 implib="$implib $d" 2174 d="`echo $d | sed -e 's,[\\\\/][\\\\/]*lib\$,/usr/lib,'`" 2175 case " $tstlib $implib " in 2176 *" $d "*) ;; 2177 *) implib="$implib $d" ;; 2178 esac 2179 ;; 2180 *) implib="$implib $d" 2181 ;; 2182 esac 2183 fi 2184 done 2185 fi 2186 tstlib="$tstlib $implib" 2187 if $cc -Dtype=void -Dcall=exit -c tstlib.$src && mv tstlib.$obj tst.$obj 2188 then case $plusplus in 2189 '') probe_lxx= ;; 2190 esac 2191 l= 2192 for sym in $probe_l $probe_lxx 2193 do case $l in 2194 "") l=$sym; continue ;; 2195 esac 2196 rm -f tstlib.$exe 2197 if $cc -o tstlib.$exe tst.$obj -l$l 2198 then eval set x $probe_ldmap 2199 while : 2200 do shift 2201 case $# in 2202 0) break ;; 2203 esac 2204 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` 2205 case $d in 2206 ?*) tstlib="$tstlib $d" ;; 2207 esac 2208 done 2209 fi 2210 l= 2211 done 2212 fi 2213 libstd= 2214 libset= 2215 stdlibroot="/ /usr/" 2216 for d in $tstlib 2217 do case $d in 2218 [\\/]lib|[\\/]usr[\\/]lib) 2219 ;; 2220 *) case " $stdlib " in 2221 *\ $d\ *) 2222 ;; 2223 *) if ls $d ${PREROOT+$PREROOT/../$d} > tmp.tmp && test -s tmp.tmp 2224 then for i in $probe_lib $obj 2225 do if grep -i "\\.$i\$" tmp.tmp >/dev/null 2226 then case " $probe_lib_append " in 2227 *\ $d\ *) 2228 libstd="$libstd $d" 2229 ;; 2230 *) stdlib="$stdlib $d" 2231 case $d in 2232 /usr/lib|/usr/lib/*) 2233 ;; 2234 /usr/lib?*) 2235 e=`echo $d | sed -e 's,/usr,,'` 2236 g=`echo $d/libc.* $e/libc.*` 2237 case "$e $g " in 2238 *".* "*);; 2239 *) stdlib="$stdlib $e" 2240 stdlibroot= 2241 ;; 2242 esac 2243 ;; 2244 esac 2245 ;; 2246 esac 2247 case $libset in 2248 "") case $i in 2249 $obj) ;; 2250 *) libset=1 2251 lib=$i 2252 ;; 2253 esac 2254 ;; 2255 esac 2256 break 2257 fi 2258 done 2259 fi 2260 ;; 2261 esac 2262 ;; 2263 esac 2264 done 2265 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'` 2266 do if test -d $d 2267 then case " $stdlib $libstd " in 2268 *\ ${d}\ *) 2269 ;; 2270 *) libstd="$libstd $d" 2271 ;; 2272 esac 2273 fi 2274 done 2275 case $hosted in 2276 "") tstlib= ;; 2277 *) tstlib="$stdlibroot /usr/ccs/ /usr/local/" ;; 2278 esac 2279 case $stdlibroot in 2280 ?*) d= 2281 for f in $stdinclude 2282 do f=`echo $f | sed -e 's,[^\\\\/]*\$,,'` 2283 d="$d $f" 2284 done 2285 tstlib="$d $tstlib" 2286 ;; 2287 esac 2288 $cc -c doti.$src > all.tmp 2289 for f in $probe_libdir 2290 do for d in $stdlib $libstd $tstlib 2291 do if test -d ${d}${f} 2292 then ls ${d}${f} ${PREROOT:+$PREROOT/../${d}${f}} | 2293 while read i 2294 do for j in ${d}${f}/${i} ${PREROOT:+$PREROOT/../${d}${f}/${i}} 2295 do if test -f $j -a -r $j -a -s $j 2296 then echo $i 2297 break 2298 fi 2299 done 2300 done > tmp.tmp 2301 if test -s tmp.tmp 2302 then if egrep -i "^${prefix_archive}[abcdefghijklmnopqrstuvwxyz0123456789_][abcdefghijklmnopqrstuvwxyz0123456789_]*\\.$lib\$" tmp.tmp >lib.tmp || 2303 egrep -i "\\.$obj\$" tmp.tmp >/dev/null || 2304 egrep -i "^${prefix_shared}[abcdefghijklmnopqrstuvwxyz0123456789_][abcdefghijklmnopqrstuvwxyz0123456789_]*\\$so(.[0-9]+)*\$" tmp.tmp >>lib.tmp 2305 then if test -s lib.tmp 2306 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 2307 xs=`sort all.tmp all.tmp tmp.tmp | uniq -u` 2308 case $xs in 2309 '') continue ;; 2310 esac 2311 ok=0 2312 for x in $xs 2313 do case $x in 2314 *_p) continue ;; # linux gcc known to hang for -lc_p 2315 esac 2316 if $cc -o doti.$exe doti.$obj -l$x 2>e 2317 then ok=1 2318 else if test -s e && egrep -i ":.*[ ](find|found|locate|search|-l$x)[ ]" e > /dev/null 2319 then if egrep -i ":.*[ ](access|permission)[ ]" e 2320 then : maybe 2321 else ok=0 2322 break 2323 fi 2324 fi 2325 case $Lflag in 2326 1) if $cc -L${d}${f} -o doti.$exe doti.$obj -l$x 2327 then ok=0 2328 break 2329 fi 2330 ;; 2331 esac 2332 fi 2333 done 2334 case $ok in 2335 0) continue ;; 2336 esac 2337 sort -u all.tmp tmp.tmp > lib.tmp 2338 mv lib.tmp all.tmp 2339 fi 2340 case " $stdlib $libstd " in 2341 *" ${d}${f} "*) 2342 ;; 2343 *) if test -d ${d}${f}/fsoft 2344 then stdlib="$stdlib ${d}${f}/"'$(FLOAT_OPTION)' 2345 fi 2346 stdlib="$stdlib ${d}${f}" 2347 ;; 2348 esac 2349 fi 2350 fi 2351 fi 2352 done 2353 done 2354 stdlib="$stdlib $libstd" 2355 case $stdlib in 2356 */shlib*) 2357 dy= 2358 st= 2359 for i in $stdlib $libstd 2360 do case $i in 2361 */shlib) dy="$dy $i" ;; 2362 *) st="$st $i" ;; 2363 esac 2364 done 2365 for i in /var 2366 do if test -d $i/shlib 2367 then dy="$dy $i/shlib" 2368 fi 2369 done 2370 stdlib="$dy $st" 2371 ;; 2372 esac 2373 ;; 2374esac 2375 2376if $cc -c prefix.$src 2377then eval set x $probe_symprefix 2378 while : 2379 do shift 2380 case $# in 2381 0) break ;; 2382 esac 2383 if $nm $nmflags prefix.$obj | grep -c ${1}prefix >/dev/null 2384 then symprefix=$1 2385 break 2386 fi 2387 done 2388fi 2389 2390if $cc -c warn.$src 2>e && test -f warn.$obj 2391then e=`wc -c < e` 2392 2393 eval set x $probe_debug 2394 while : 2395 do shift 2396 case $# in 2397 0) break ;; 2398 esac 2399 rm -f warn.$obj 2400 $cc $1 -c warn.$src 2>e && test -f warn.$obj || continue 2401 case `wc -c < e` in 2402 $e) debug=$1; break ;; 2403 esac 2404 done 2405 2406 eval set x $probe_no_protect 2407 while : 2408 do shift 2409 case $# in 2410 0) break ;; 2411 esac 2412 rm -f warn.$obj 2413 $cc $1 -c warn.$src 2>e && test -f warn.$obj || continue 2414 case `wc -c < e` in 2415 $e) no_protect=$1; break ;; 2416 esac 2417 done 2418 2419 case $version_string in 2420 $probe_gcc_version) probe_optimize="$probe_gcc_optimize $probe_optimize" ;; 2421 esac 2422 eval set x $probe_optimize 2423 while : 2424 do shift 2425 case $# in 2426 0) break ;; 2427 esac 2428 rm -f warn.$obj 2429 $cc $1 -c warn.$src 2>e && test -f warn.$obj || continue 2430 case `wc -c < e` in 2431 $e) optimize=$1; break ;; 2432 esac 2433 done 2434 2435 eval set x $probe_strict 2436 while : 2437 do shift 2438 case $# in 2439 0) break ;; 2440 esac 2441 rm -f warn.$obj 2442 $cc $1 -c warn.$src 2>e && test -f warn.$obj || continue 2443 n=`wc -c < e` 2444 if test $n -ge $e 2445 then strict=$1 2446 break 2447 fi 2448 done 2449 2450 $cc -c warn1.$src 2>e 2451 o=`wc -c < e` 2452 eval set x $probe_warn 2453 while : 2454 do shift 2455 case $# in 2456 0) break ;; 2457 esac 2458 rm -f warn.$obj warn.$exe 2459 $cc -o warn.$exe $1 warn.$src 2>e && test -f warn.$exe || continue 2460 n=`wc -c < e` 2461 for i in $warn_enum 2462 do rm -f warn$i.$obj 2463 $cc -c $1 warn$i.$src 2>e && test -f warn$i.$obj || continue 2464 n=`wc -c < e` 2465 if test $n -gt $o 2466 then warn=$1 2467 break 2 2468 fi 2469 done 2470 done 2471 2472fi 2473 2474while : 2475do case $hosted in 2476 1) rm -f readonly.$exe 2477 eval set x '""' $probe_readonly 2478 while : 2479 do shift 2480 case $# in 2481 0) break ;; 2482 esac 2483 for co in '' -Dtest_const 2484 do rm -f readonly.$exe 2485 if $cc -o readonly.$exe $co $1 readonly.$src && $executable readonly.$exe 2486 then if ./readonly.$exe >/dev/null 2>&1 2487 then : 2488 else readonly=$1 2489 break 3 2490 fi 2491 fi 2492 done 2493 done 2494 rm -f readonly.$exe readonly.s 2495 if $cc -S readonly.$src && test -f readonly.s 2496 then if sed -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)data/\1text/' \ 2497 -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)zero[ ][ ]*/\1set .,.+/' \ 2498 -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*1/\1byte 0/' \ 2499 -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*2/\1byte 0,0/' \ 2500 -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*3/\1byte 0,0,0/' \ 2501 -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*4/\1byte 0,0,0,0/' \ 2502 readonly.s > ro.s && $cc -o readonly.$exe ro.s && $executable readonly.$exe 2503 then if ./readonly.$exe >/dev/null 2>&1 2504 then : 2505 else readonly='-S.data' 2506 break 2507 fi 2508 fi 2509 rm -f readonly.$exe 2510 if sed -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)idat/\1code/' \ 2511 -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)zero[ ][ ]*/\1set .,.+/' \ 2512 -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*1/\1byte 0/' \ 2513 -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*2/\1byte 0,0/' \ 2514 -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*3/\1byte 0,0,0/' \ 2515 -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)space[ ][ ]*4/\1byte 0,0,0,0/' \ 2516 readonly.s > ro.s && $cc -o readonly.$exe ro.s && $executable readonly.$exe 2517 then if ./readonly.$exe >/dev/null 2>&1 2518 then : 2519 else readonly='-S.idat' 2520 break 2521 fi 2522 fi 2523 if sed -e 's/^\([ ]*[.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$:]*[ ]*\.*\)data/\1rdata/' \ 2524 readonly.s > ro.s && $cc -o readonly.$exe ro.s && $executable readonly.$exe 2525 then if ./readonly.$exe >/dev/null 2>&1 2526 then : 2527 else readonly='-S.rdata' 2528 break 2529 fi 2530 fi 2531 fi 2532 ;; 2533 esac 2534 break 2535done 2536 2537case $stdc in 2538?*) dialect="$dialect ANSI" ;; 2539esac 2540case $plusplus in 2541?*) dialect="$dialect C++" ;; 2542esac 2543case $hosted in 2544"") dialect="$dialect CROSS" ;; 2545esac 2546case $doti in 2547?*) dialect="$dialect DOTI" ;; 2548esac 2549case $gnu in 2550?*) dialect="$dialect GNU" ;; 2551esac 2552case $so:$dynamic:$static in 2553::) ;; 2554*) dialect="$dialect DYNAMIC" 2555 case $soversion in 2556 ?*) dialect="$dialect VERSION" ;; 2557 esac 2558 ;; 2559esac 2560case $implicitc in 2561?*) dialect="$dialect IMPLICITC" ;; 2562esac 2563case $ptrcopy in 2564?*) dialect="$dialect PTRCOPY" ;; 2565esac 2566case $ptrimplicit in 2567?*) dialect="$dialect PTRIMPLICIT" ;; 2568esac 2569case $ptrmkdir in 2570?*) dialect="$dialect PTRMKDIR" ;; 2571esac 2572case $libpp in 2573?*) dialect="$dialect LIBPP" ;; 2574esac 2575case $toucho in 2576?*) dialect="$dialect TOUCHO" ;; 2577esac 2578case $dDflag in 2579?*) dialect="$dialect -dD" ;; 2580esac 2581# 2005-05-25 use $(CC.INCLUDE.LOCAL) instead 2582case $include_local in 2583?*) dialect="$dialect -I-" ;; 2584esac 2585case $Lflag in 2586?*) dialect="$dialect -L" ;; 2587esac 2588 2589ppcmd='$(CPP)' 2590ppdir='$(CPP:D)' 2591eval ppopt='"'$ppopt'"' 2592eval ppenv='"'$ppenv'"' 2593 2594set x "" .$exe 2595shift 2596exe= 2597for i 2598do rm -f require$i 2599done 2600if $cc -o require require.$src 2601then for i 2602 do if $executable require$i 2603 then exe=$i 2604 break 2605 fi 2606 done 2607fi 2608case $sa:$sd:$so in 2609::?*) eval set x $probe_sa 2610 while : 2611 do shift 2612 case $# in 2613 0) break ;; 2614 esac 2615 for i in $stdlib 2616 do eval j="'" $i/lib*$1 "'" 2617 case $j in 2618 " $i/lib*$1 ") 2619 eval j="'" $i/lib*$1.[0123456789]* "'" 2620 case $j in 2621 " $i/lib*$1.[0123456789]* ") 2622 continue 2623 ;; 2624 esac 2625 ;; 2626 esac 2627 sa=$1 2628 lddynamic=-Bdynamic 2629 ldstatic=-Bstatic 2630 break 2 2631 done 2632 done 2633 ;; 2634esac 2635case $ldscript in 2636"") case $so in 2637 .lib) ldscript=".def .exp" ;; 2638 *) ldscript=".ld" ;; 2639 esac 2640 ;; 2641esac 2642case $hosttype in 2643'') hosttype=unknown ;; 2644sgi.mips3) dll_variants='sgi.mips2:o32:-mips2 sgi.mips4:64:-mips4' ;; 2645sgi.mips4) dll_variants='sgi.mips2:o32:-mips2 sgi.mips3:n32:-mips3' ;; 2646esac 2647 2648case $hosted in 2649"") ccnative=`echo $cc | sed -e 's,.*/,,'` 2650 ccs=$ccnative 2651 for c in cc gcc 2652 do case " $ccs " in 2653 *" $c "*) ;; 2654 *) ccs="$ccs $c" ;; 2655 esac 2656 done 2657 for p in $path 2658 do for c in $ccs 2659 do if $executable $p/$c 2660 then rm -f native.$exe 2661 if $p/$c -o native.$exe doti.$src && ./native.$exe 2662 then ccnative=$p/$c 2663 exectype=`package CC="$ccnative" || $SHELL -c "package CC='$ccnative'"` 2664 case $exectype in 2665 *[Uu][Ss][Aa][Gg][Ee]:*) 2666 exectype=`PATH=$_probe_PATH; export PATH; package CC="$ccnative" || $SHELL -c "package CC='$ccnative'"` 2667 ;; 2668 esac 2669 break 2 2670 fi 2671 fi 2672 done 2673 done 2674 ;; 2675*) ccnative=$cc 2676 exectype=$hosttype 2677 ;; 2678esac 2679 2680# runtime shared lib exported symbol resolution 2681 2682case $cc_dll:$shared in 2683:|:*|*:);; 2684*) cat > cmd.c <<'!' 2685#include <stdio.h> 2686#include <dlfcn.h> 2687typedef int (*Lib_f)(int**, int**, int**); 2688int gbl_def = 1; 2689int gbl_ref = 1; 2690int gbl_ext; 2691int main(int argc, char** argv) 2692{ 2693 void* dll; 2694 Lib_f lib; 2695 int* def; 2696 int* ref; 2697 int* ext; 2698 2699 if (!(dll = dlopen(*++argv, RTLD_LAZY))) 2700 fprintf(stderr, "library not found\n"); 2701 else if (!((lib = (Lib_f)dlsym(dll, "lib"))) && !(lib = (Lib_f)dlsym(dll, "_lib"))) 2702 fprintf(stderr, "symbol not found\n"); 2703 else if ((*lib)(&def, &ref, &ext)) 2704 fprintf(stderr, "function failed\n"); 2705 else if (def == &gbl_def && ref == &gbl_ref && ext == &gbl_ext) 2706 printf("ALL\n"); 2707 else if (ref == &gbl_ref && ext == &gbl_ext) 2708 printf("REF\n"); 2709 else if (ext == &gbl_ext) 2710 printf("EXT\n"); 2711 return 0; 2712} 2713! 2714 cat > lib.c <<'!' 2715int gbl_def = 1; 2716int gbl_ref; 2717int gbl_ext; 2718int lib(int** def, int** ref, int** ext) 2719{ 2720 *def = &gbl_def; 2721 *ref = &gbl_ref; 2722 *ext = &gbl_ext; 2723 return 0; 2724} 2725! 2726 if $cc -c $cc_dll $cc_pic cmd.c && 2727 $cc -c $cc_dll $cc_pic lib.c && { 2728 $cc $cc_dll $export_dynamic -o cmd.exe cmd.o || 2729 $cc $cc_dll $export_dynamic -o cmd.exe cmd.o -ldl 2730 } && 2731 $dld $shared -o libgbl.dll lib.o 2732 then x=`./cmd.exe ./libgbl.dll` 2733 case $x in 2734 ?*) dialect="$dialect EXPORT=$x" ;; 2735 esac 2736 else case $sd:$hosttype in 2737 .dll:*win*) dialect="$dialect EXPORT=DLL" ;; 2738 esac 2739 fi 2740 ;; 2741esac 2742 2743# shellmagic defined if installed shell scripts need magic 2744 2745echo ': got magic : 2746echo ok' > ok 2747chmod +x ok 2748case `(eval ./ok | /bin/sh) 2>/dev/null` in 2749ok) ;; 2750*) echo '#!/bin/env sh 2751: got magic : 2752echo ok' > ok 2753 chmod +x ok 2754 case `(eval ./ok | /bin/sh) 2>/dev/null` in 2755 ok) shellmagic='$("#")!/bin/env sh' 2756 ;; 2757 *) for i in /emx/bin/bash.exe /emx/bin/sh.exe 2758 do if test -x $i 2759 then shellmagic='$("#")!'$i 2760 break 2761 fi 2762 done 2763 ;; 2764 esac 2765 ;; 2766esac 2767 2768# 2769# path cleanup 2770# 2771 2772for i in ar ccnative dld ld nm size stdinclude stdlib strip 2773do eval o='$'$i 2774 v=$o 2775 case $v in 2776 *//*) v=`echo $v | sed 's,///*,/,g'` ;; 2777 esac 2778 if (test . -ef "`pwd`") 2779 then k= 2780 for x in $v 2781 do case $x in 2782 */../*|*/..) 2783 case $x in 2784 /*) a=/ ;; 2785 *) a= ;; 2786 esac 2787 IFS=/ 2788 set '' $x 2789 IFS=$ifs 2790 r= 2791 for d 2792 do r="$d $r" 2793 done 2794 p= 2795 g= 2796 for d in $r 2797 do case $d in 2798 ..) g="$g $d" ;; 2799 *) case $g in 2800 '') case $p in 2801 '') p=$d ;; 2802 *) p=$d/$p ;; 2803 esac 2804 ;; 2805 *) set $g 2806 shift 2807 g=$* 2808 ;; 2809 esac 2810 ;; 2811 esac 2812 done 2813 case $a in 2814 '') for d in $g 2815 do p=$d/$p 2816 done 2817 ;; 2818 *) p=$a$p 2819 ;; 2820 esac 2821 case $p in 2822 /) continue ;; 2823 esac 2824 test $x -ef $p && x=$p 2825 ;; 2826 esac 2827 k="$k $x" 2828 done 2829 set '' $k 2830 shift 2831 v=$1 2832 case $# in 2833 0) ;; 2834 *) shift 2835 while : 2836 do case $# in 2837 0) break ;; 2838 esac 2839 k= 2840 for d 2841 do for j in $v 2842 do test $d -ef $j && continue 2 2843 done 2844 k="$k $d" 2845 done 2846 set '' $k 2847 case $# in 2848 1) break ;; 2849 esac 2850 shift 2851 v="$v $1" 2852 shift 2853 done 2854 ;; 2855 esac 2856 fi 2857 case $v in 2858 $o) ;; 2859 *) eval $i='$'v ;; 2860 esac 2861done 2862 2863case $keepstdlib in 28641) ;; 2865*) # 2866 # favor lib64 over lib 2867 # 2868 case $hosttype in 2869 *64|*[!0-9]64[!a-zA-Z0-9]*) 2870 o=$stdlib 2871 stdlib= 2872 for i in $o 2873 do case " $stdlib " in 2874 *" $i "*) 2875 continue 2876 ;; 2877 esac 2878 case $i in 2879 *64) stdlib="$stdlib $i" 2880 continue 2881 ;; 2882 esac 2883 case " $o " in 2884 *" ${i}64 "*) 2885 case " $stdlib " in 2886 *" ${i}64 "*) 2887 ;; 2888 *) stdlib="$stdlib ${i}64" 2889 ;; 2890 esac 2891 ;; 2892 esac 2893 stdlib="$stdlib $i" 2894 done 2895 ;; 2896 esac 2897 ;; 2898esac 2899 2900# 2901# set up for local override 2902# 2903 2904CC_VERSION_STAMP=$version_stamp 2905CC_VERSION_STRING=$version_string 2906CC_CC=$cc 2907CC_NATIVE=$ccnative 2908CC_EXECTYPE=$exectype 2909CC_HOSTTYPE=$hosttype 2910CC_ALTPP_FLAGS=$ppopt 2911CC_ALTPP_ENV=$ppenv 2912CC_AR=$ar 2913CC_AR_ARFLAGS=$ar_arflags 2914CC_ARFLAGS=$arflags 2915CC_DEBUG=$debug 2916CC_DIALECT=$dialect 2917CC_PICBIG=$cc_PIC 2918CC_PICSMALL=$cc_pic 2919CC_PIC=$CC_PICBIG 2920CC_DLL_ONLY=$cc_dll 2921case $CC_DLL_ONLY in 2922'') CC_DLLBIG= 2923 CC_DLLSMALL= 2924 CC_DLL= 2925 ;; 2926*) CC_DLLBIG="$CC_DLL_ONLY $CC_PICBIG" 2927 CC_DLLSMALL="$CC_DLL_ONLY $CC_PICSMALL" 2928 CC_DLL="$CC_DLL_ONLY $CC_PICBIG" 2929 ;; 2930esac 2931CC_DLL_DIR=$dll_dir 2932CC_DLL_LIBRARIES=$dll_libraries 2933CC_DLL_VARIANTS=$dll_variants 2934CC_DYNAMIC=$dynamic 2935CC_EXPORT_DYNAMIC=$export_dynamic 2936CC_INCLUDE_LOCAL=$include_local 2937CC_LD=$ld 2938CC_LD_DYNAMIC=$lddynamic 2939CC_LD_LAZY=$ldlazy 2940CC_LD_NOLAZY=$ldnolazy 2941CC_LD_ORIGIN=$ldorigin 2942CC_LD_RECORD=$ldrecord 2943CC_LD_NORECORD=$ldnorecord 2944CC_LD_RUNPATH=$ldrunpath 2945CC_LD_STATIC=$ldstatic 2946CC_LD_STRIP=$ldstrip 2947CC_LIB_DLL=$lib_dll 2948CC_LIB_ALL=$lib_all 2949CC_LIB_UNDEF=$lib_undef 2950CC_MAKE_OPTIONS=$makeoptions 2951CC_NM=$nm 2952CC_NMEDIT=$nmedit 2953CC_NMFLAGS=$nmflags 2954CC_NOPROTECT=$no_protect 2955CC_OPTIMIZE=$optimize 2956CC_READONLY=$readonly 2957CC_REPOSITORY=$repository 2958CC_REQUIRE=$require 2959CC_RUNPATH=$runpath 2960CC_SHARED=$shared 2961CC_SHARED_LD=$dld 2962CC_SHARED_NAME=$shared_name 2963CC_SHARED_REGISTRY=$shared_registry 2964CC_SHARED_REGISTRY_PATH=$probe_shared_registry_path 2965CC_SHELLMAGIC=$shellmagic 2966CC_SIZE=$size 2967CC_STATIC=$static 2968CC_STDINCLUDE=$stdinclude 2969CC_STDLIB=$stdlib 2970CC_STRICT=$strict 2971CC_STRIP=$strip 2972CC_STRIP_FLAGS=$stripflags 2973CC_PREFIX_ARCHIVE=$prefix_archive 2974CC_PREFIX_DYNAMIC=$prefix_dynamic 2975CC_PREFIX_SHARED=$prefix_shared 2976CC_PREFIX_SYMBOL=$symprefix 2977CC_SUFFIX_ARCHIVE=.$lib 2978CC_SUFFIX_COMMAND=$suffix_command 2979CC_SUFFIX_DEBUG=$sdb 2980CC_SUFFIX_DYNAMIC=$sd 2981CC_SUFFIX_LD=$ldscript 2982CC_SUFFIX_OBJECT=.$obj 2983CC_SUFFIX_SHARED=$so 2984CC_SUFFIX_SOURCE=.$src 2985CC_SUFFIX_STATIC=$sa 2986CC_VERSION=$version_flags 2987CC_WARN=$warn 2988CC_ATTRIBUTES=$ATTRIBUTES 2989 2990exec >&3 2991 2992# 2993# check for local override 2994# all CC_* but { CC_CC CC_VERSION_STAMP CC_VERSION_STRING } may be modified 2995# additional CC.* may be printed on stdout 2996# 2997 2998if test -f "$dir/probe.lcl" 2999then . "$dir/probe.lcl" 3000fi 3001 3002# 3003# the payoff 3004# 3005 3006case $version_stamp in 3007?*) echo "# $version_stamp" ;; 3008esac 3009echo CC.CC = $cc 3010echo CC.NATIVE = $CC_NATIVE 3011echo CC.EXECTYPE = $CC_EXECTYPE 3012echo CC.HOSTTYPE = $CC_HOSTTYPE 3013echo CC.ALTPP.FLAGS = $CC_ALTPP_FLAGS 3014echo CC.ALTPP.ENV = $CC_ALTPP_ENV 3015echo CC.AR = $CC_AR 3016echo CC.AR.ARFLAGS = $CC_AR_ARFLAGS 3017echo CC.ARFLAGS = $CC_ARFLAGS 3018echo CC.DEBUG = $CC_DEBUG 3019echo CC.DIALECT = $CC_DIALECT 3020echo CC.DLLBIG = $CC_DLLBIG 3021echo CC.DLLSMALL = $CC_DLLSMALL 3022echo CC.DLL = $CC_DLL 3023echo CC.DLL.DEF = $cc_dll_def 3024echo CC.DLL.DIR = $CC_DLL_DIR 3025echo CC.DLL.LIBRARIES = $CC_DLL_LIBRARIES 3026echo CC.DLL.VARIANTS = $CC_DLL_VARIANTS 3027echo CC.DYNAMIC = $CC_DYNAMIC 3028echo CC.EXPORT.DYNAMIC = $CC_EXPORT_DYNAMIC 3029echo CC.INCLUDE.LOCAL = $CC_INCLUDE_LOCAL 3030# 3031# 2004-02-14 release workaround 3032# 3033case $CC_SHARED_LD in 3034$CC_CC) echo if LDSHARED 3035 echo CC.LD = $CC_LD 3036 echo else 3037 echo CC.LD = $CC_CC 3038 echo end 3039 ;; 3040*) echo CC.LD = $CC_LD 3041 ;; 3042esac 3043echo CC.LD.DYNAMIC = $CC_LD_DYNAMIC 3044echo CC.LD.LAZY = $CC_LD_LAZY 3045echo CC.LD.NOLAZY = $CC_LD_NOLAZY 3046echo CC.LD.ORIGIN = $CC_LD_ORIGIN 3047echo CC.LD.RECORD = $CC_LD_RECORD 3048echo CC.LD.NORECORD = $CC_LD_NORECORD 3049echo CC.LD.RUNPATH = $CC_LD_RUNPATH 3050echo CC.LD.STATIC = $CC_LD_STATIC 3051echo CC.LD.STRIP = $CC_LD_STRIP 3052echo CC.LIB.DLL = $CC_LIB_DLL 3053echo CC.LIB.ALL = $CC_LIB_ALL 3054echo CC.LIB.UNDEF = $CC_LIB_UNDEF 3055echo CC.MAKE.OPTIONS = $CC_MAKE_OPTIONS 3056echo CC.NM = $CC_NM 3057case $CC_NMEDIT in 3058?*) CC_NMEDIT=" $CC_NMEDIT" ;; 3059esac 3060echo CC.NMEDIT ="$CC_NMEDIT" 3061echo CC.NMFLAGS = $CC_NMFLAGS 3062echo CC.NOPROTECT = $CC_NOPROTECT 3063echo CC.OPTIMIZE = $CC_OPTIMIZE 3064echo CC.PICBIG = $CC_PICBIG 3065echo CC.PICSMALL = $CC_PICSMALL 3066echo CC.PIC = $CC_PIC 3067echo CC.READONLY = $CC_READONLY 3068echo CC.REPOSITORY = $CC_REPOSITORY 3069for f in $CC_REQUIRE 3070do echo CC.REQUIRE.$f =`cat req.$f` 3071done 3072echo CC.RUNPATH = $CC_RUNPATH 3073echo CC.SHARED = $CC_SHARED 3074echo CC.SHARED.LD = $CC_SHARED_LD 3075echo CC.SHARED.NAME = $CC_SHARED_NAME 3076echo CC.SHARED.REGISTRY = $CC_SHARED_REGISTRY 3077echo CC.SHARED.REGISTRY.PATH = $CC_SHARED_REGISTRY_PATH 3078echo CC.SHELLMAGIC = $CC_SHELLMAGIC 3079echo CC.SIZE = $CC_SIZE 3080echo CC.STATIC = $CC_STATIC 3081echo CC.STDINCLUDE = $CC_STDINCLUDE 3082echo CC.STDLIB = $CC_STDLIB 3083echo CC.STRICT = $CC_STRICT 3084echo CC.STRIP = $CC_STRIP 3085echo CC.STRIP.FLAGS = $CC_STRIP_FLAGS 3086echo CC.PREFIX.ARCHIVE = $CC_PREFIX_ARCHIVE 3087echo CC.PREFIX.DYNAMIC = $CC_PREFIX_DYNAMIC 3088echo CC.PREFIX.SHARED = $CC_PREFIX_SHARED 3089echo CC.PREFIX.SYMBOL = $CC_PREFIX_SYMBOL 3090echo CC.SUFFIX.ARCHIVE = $CC_SUFFIX_ARCHIVE 3091echo CC.SUFFIX.COMMAND = $CC_SUFFIX_COMMAND 3092echo CC.SUFFIX.DEBUG = $CC_SUFFIX_DEBUG 3093echo CC.SUFFIX.DYNAMIC = $CC_SUFFIX_DYNAMIC 3094echo CC.SUFFIX.LD = $CC_SUFFIX_LD 3095echo CC.SUFFIX.OBJECT = $CC_SUFFIX_OBJECT 3096echo CC.SUFFIX.SHARED = $CC_SUFFIX_SHARED 3097echo CC.SUFFIX.SOURCE = $CC_SUFFIX_SOURCE 3098echo CC.SUFFIX.STATIC = $CC_SUFFIX_STATIC 3099echo CC.VERSION = $CC_VERSION 3100case $CC_VERSION_STRING in 3101*\"*) i=`echo " $CC_VERSION_STRING" | sed -e 's,",\\\\",g' -e 's,^ ,,' -e 's,.*,"&",'` ;; 3102*\'*) i=\"$CC_VERSION_STRING\" ;; 3103*) i=$CC_VERSION_STRING ;; 3104esac 3105cat <<! 3106CC.VERSION.STRING = $i 3107! 3108echo CC.WARN = $CC_WARN 3109 3110for i in $CC_ATTRIBUTES 3111do eval echo CC.$i = \$$i 3112done 3113