1#! /bin/sh 2# 3# If these # comments don't work, trim them. Don't worry about any other 4# shell scripts, Configure will trim # comments from them for you. 5# 6# (If you are trying to port this package to a machine without sh, I would 7# suggest you cut out the prototypical config.h from the end of Configure 8# and edit it to reflect your system. Some packages may include samples 9# of config.h for certain machines, so you might look for one of those.) 10# 11# $RCSfile: Configure,v $$Revision: 4.0.1.9 $$Date: 92/06/23 12:28:33 $ 12# 13# Yes, you may rip this off to use in other distribution packages. 14# (Note: this Configure script was generated automatically. Rather than 15# working with this copy of Configure, you may wish to get metaconfig.) 16 17cat >/tmp/c1$$ <<EOF 18ARGGGHHHH!!!!! 19 20Your csh still thinks true is false. Write to your vendor today and tell 21them that next year Configure ought to "rm /bin/csh" unless they fix their 22blasted shell. :-) 23 24[End of diatribe. We now return you to your regularly scheduled 25programming...] 26 27EOF 28cat >/tmp/c2$$ <<EOF 29OOPS! You naughty creature! You didn't run Configure with sh! 30I will attempt to remedy the situation by running sh for you... 31 32EOF 33 34true || cat /tmp/c1$$ /tmp/c2$$ 35true || exec sh $0 36 37export PATH || cat /tmp/c2$$ 38export PATH || exec sh $0 39rm -f /tmp/c1$$ /tmp/c2$$ 40 41PATH=".:$PATH:/bin:/usr/bin:/usr/local/bin:/usr/ucb:/usr/local:/usr/lbin:/etc:/usr/new:/usr/new/bin:/usr/nbin" 42 43if test ! -t 0; then 44 echo "Say 'sh Configure', not 'sh <Configure'" 45 exit 1 46fi 47 48(alias) >/dev/null 2>&1 && \ 49 echo "(I see you are using the Korn shell. Some ksh's blow up on Configure," && \ 50 echo "especially on exotic machines. If yours does, try the Bourne shell instead.)" 51 52unset CDPATH 53if test ! -d ../UU; then 54 if test ! -d UU; then 55 mkdir UU 56 fi 57 cd UU 58fi 59 60case "$1" in 61-d) shift; fastread='yes';; 62esac 63 64d_eunice='' 65define='' 66eunicefix='' 67loclist='' 68expr='' 69sed='' 70echo='' 71cat='' 72rm='' 73mv='' 74cp='' 75tail='' 76tr='' 77mkdir='' 78sort='' 79uniq='' 80grep='' 81trylist='' 82test='' 83inews='' 84egrep='' 85more='' 86pg='' 87Mcc='' 88vi='' 89mailx='' 90mail='' 91cpp='' 92perl='' 93emacs='' 94ls='' 95rmail='' 96sendmail='' 97shar='' 98smail='' 99tbl='' 100troff='' 101nroff='' 102uname='' 103uuname='' 104line='' 105chgrp='' 106chmod='' 107lint='' 108sleep='' 109pr='' 110tar='' 111ln='' 112lpr='' 113lp='' 114touch='' 115make='' 116date='' 117csh='' 118bash='' 119ksh='' 120lex='' 121flex='' 122bison='' 123Log='' 124Header='' 125Id='' 126lastuname='' 127alignbytes='' 128bin='' 129installbin='' 130byteorder='' 131contains='' 132cppstdin='' 133cppminus='' 134d_bcmp='' 135d_bcopy='' 136d_safebcpy='' 137d_bzero='' 138d_castneg='' 139castflags='' 140d_charsprf='' 141d_chsize='' 142d_crypt='' 143cryptlib='' 144d_csh='' 145d_dosuid='' 146d_dup2='' 147d_fchmod='' 148d_fchown='' 149d_fcntl='' 150d_flexfnam='' 151d_flock='' 152d_getgrps='' 153d_gethent='' 154d_getpgrp='' 155d_getpgrp2='' 156d_getprior='' 157d_htonl='' 158d_index='' 159d_isascii='' 160d_killpg='' 161d_lstat='' 162d_memcmp='' 163d_memcpy='' 164d_safemcpy='' 165d_memmove='' 166d_memset='' 167d_mkdir='' 168d_msg='' 169d_msgctl='' 170d_msgget='' 171d_msgrcv='' 172d_msgsnd='' 173d_ndbm='' 174d_odbm='' 175d_open3='' 176d_readdir='' 177d_rename='' 178d_rewindir='' 179d_rmdir='' 180d_seekdir='' 181d_select='' 182d_sem='' 183d_semctl='' 184d_semget='' 185d_semop='' 186d_setegid='' 187d_seteuid='' 188d_setpgrp='' 189d_setpgrp2='' 190d_setprior='' 191d_setregid='' 192d_setresgid='' 193d_setreuid='' 194d_setresuid='' 195d_setrgid='' 196d_setruid='' 197d_shm='' 198d_shmat='' 199d_voidshmat='' 200d_shmctl='' 201d_shmdt='' 202d_shmget='' 203d_socket='' 204d_sockpair='' 205d_oldsock='' 206socketlib='' 207d_statblks='' 208d_stdstdio='' 209d_strctcpy='' 210d_strerror='' 211d_symlink='' 212d_syscall='' 213d_telldir='' 214d_truncate='' 215d_vfork='' 216d_voidsig='' 217d_tosignal='' 218d_volatile='' 219d_vprintf='' 220d_charvspr='' 221d_wait4='' 222d_waitpid='' 223gidtype='' 224groupstype='' 225i_fcntl='' 226i_gdbm='' 227i_grp='' 228i_niin='' 229i_sysin='' 230i_pwd='' 231d_pwquota='' 232d_pwage='' 233d_pwchange='' 234d_pwclass='' 235d_pwexpire='' 236d_pwcomment='' 237i_sys_file='' 238i_sysioctl='' 239i_time='' 240i_sys_time='' 241i_sys_select='' 242d_systimekernel='' 243i_utime='' 244i_varargs='' 245i_vfork='' 246intsize='' 247libc='' 248nm_opts='' 249libndir='' 250i_my_dir='' 251i_ndir='' 252i_sys_ndir='' 253i_dirent='' 254i_sys_dir='' 255d_dirnamlen='' 256ndirc='' 257ndiro='' 258mallocsrc='' 259mallocobj='' 260d_mymalloc='' 261mallocptrtype='' 262mansrc='' 263manext='' 264models='' 265split='' 266small='' 267medium='' 268large='' 269huge='' 270optimize='' 271ccflags='' 272cppflags='' 273ldflags='' 274cc='' 275nativegcc='' 276libs='' 277n='' 278c='' 279package='' 280randbits='' 281scriptdir='' 282installscr='' 283sig_name='' 284spitshell='' 285shsharp='' 286sharpbang='' 287startsh='' 288stdchar='' 289uidtype='' 290usrinclude='' 291inclPath='' 292void='' 293voidhave='' 294voidwant='' 295w_localtim='' 296w_s_timevl='' 297w_s_tm='' 298yacc='' 299lib='' 300privlib='' 301installprivlib='' 302CONFIG='' 303: get the name of the package 304package=perl 305: Here we go... 306echo " " 307echo "Beginning of configuration questions for $package kit." 308: Eunice requires " " instead of "", can you believe it 309echo " " 310 311define='define' 312undef='undef' 313: change the next line if compiling for Xenix/286 on Xenix/386 314xlibpth='/usr/lib/386 /lib/386' 315 316: the hints files may add more components to libpth 317test -d /usr/cs/lib && libpth="$libpth /usr/cs/lib" 318test -d /usr/ccs/lib && libpth="$libpth /usr/ccs/lib" 319test -d /usr/lib && libpth="$libpth /usr/lib" 320test -d /usr/ucblib && libpth="$libpth /usr/ucblib" 321test -d /usr/local/lib && libpth="$libpth /usr/local/lib" 322test -d /usr/lib/large && libpth="$libpth /usr/lib/large" 323test -d /lib && libpth="$libpth /lib" 324 libpth="$libpth $xlibpth" 325test -d /lib/large && libpth="$libpth /lib/large" 326test -d /usr/lib/small && libpth="$libpth /usr/lib/small" 327test -d /lib/small && libpth="$libpth /lib/small" 328test -d /usr/lib/cmplrs/cc && libpth="$libpth /usr/lib/cmplrs/cc" 329 330smallmach='pdp11 i8086 z8000 i80286 iAPX286' 331trap 'echo " "; exit 1' 1 2 3 332 333: We must find out about Eunice early 334eunicefix=':' 335if test -f /etc/unixtovms; then 336 eunicefix=/etc/unixtovms 337fi 338if test -f /etc/unixtovms.exe; then 339 eunicefix=/etc/unixtovms.exe 340fi 341 342attrlist="DGUX M_I186 M_I286 M_I386 M_I8086 M_XENIX UTS __DGUX__" 343attrlist="$attrlist __STDC__ __m88k__ ansi bsd4_2 gcos gimpel" 344attrlist="$attrlist hp9000s300 hp9000s500 hp9000s800 hpux" 345attrlist="$attrlist i186 i386 i8086 iAPX286 ibm interdata" 346attrlist="$attrlist m68k m88k mc300 mc500 mc68000 mc68k mc700 mert" 347attrlist="$attrlist ns16000 ns32000 nsc32000 os pdp11 posix pyr sinix" 348attrlist="$attrlist sparc sun tower tower32 tower32_600 tower32_800 tss" 349attrlist="$attrlist u3b2 u3b20 u3b200 u3b5 ultrix unix vax venix xenix" 350attrlist="$attrlist z8000" 351boPATH="" 352eoPATH="/usr/ucb /bin /usr/bin /usr/local /usr/local/bin /usr/lbin /usr/plx /usr/5bin /vol/local/bin /etc /usr/lib /lib /usr/local/lib /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/bin /bsd4.3/usr/ucb /bsd43/usr/bin /usr/ccs/lib /opt/SUNWste/bin /usr/opt/SUNWste/bin" 353d_newshome="/usr/NeWS" 354errnolist=errnolist 355h_fcntl=false 356h_sys_file=false 357serve_shm="" 358serve_msg="$undef" 359serve_inet_udp="" 360serve_inet_tcp="" 361serve_unix_udp="" 362serve_unix_tcp="" 363d_ndir=ndir 364voidwant=1 365voidwant=7 366libswanted="c_s net_s net socket nsl_s nsl nm ndir dir ndbm dbm PW malloc sun m bsd BSD x posix ucb" 367inclwanted='/usr/include /usr/netinclude /usr/include/sun /usr/include/bsd /usr/include/lan /usr/ucbinclude' 368 369: Now test for existence of everything in MANIFEST 370 371echo "First let's make sure your kit is complete. Checking..." 372awk '$1 !~ /PACKINGLIST/ {print $1}' ../MANIFEST | split -100 373rm -f missing 374for filelist in x??; do 375 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing) 376done 377if test -s missing; then 378 echo "WARNING: the following files are missing:" 379 cat missing 380 echo "INTERRUPT NOW, OR HIT RETURN TO PROCEED AT YOUR OWN RISK" 381 read junk 382else 383 echo "Looks good..." 384fi 385 386: some greps do not return status, grrr. 387echo "grimblepritz" >contains.txt 388if grep blurfldyick contains.txt >/dev/null 2>&1 ; then 389 contains=contains 390elif grep grimblepritz contains.txt >/dev/null 2>&1 ; then 391 contains=grep 392else 393 contains=contains 394fi 395: the following should work in any shell 396case "$contains" in 397contains*) 398 echo " " 399 echo "AGH! Grep doesn't return a status. Attempting remedial action." 400 cat >contains <<'EOSS' 401grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp 402EOSS 403chmod +x contains 404esac 405 406: see if sh knows # comments 407echo " " 408echo "Checking your sh to see if it knows about # comments..." 409if sh -c '#' >/dev/null 2>&1 ; then 410 echo "Your sh handles # comments correctly." 411 shsharp=true 412 spitshell=cat 413 echo " " 414 echo "Okay, let's see if #! works on this system..." 415 if test -f /bsd43/bin/echo; then 416 echo "#!/bsd43/bin/echo hi" > spit.sh 417 else 418 echo "#!/bin/echo hi" > spit.sh 419 fi 420 $eunicefix spit.sh 421 chmod +x spit.sh 422 ./spit.sh > today 423 if $contains hi today >/dev/null 2>&1; then 424 echo "It does." 425 sharpbang='#!' 426 else 427 echo "#! /bin/echo hi" > spit.sh 428 $eunicefix spit.sh 429 chmod +x spit.sh 430 ./spit.sh > today 431 if test -s today; then 432 echo "It does." 433 sharpbang='#! ' 434 else 435 echo "It doesn't." 436 sharpbang=': use ' 437 fi 438 fi 439else 440 echo "Your sh doesn't grok # comments--I will strip them later on." 441 shsharp=false 442 echo "exec grep -v '^#'" >spitshell 443 chmod +x spitshell 444 $eunicefix spitshell 445 spitshell=`pwd`/spitshell 446 echo "I presume that if # doesn't work, #! won't work either!" 447 sharpbang=': use ' 448fi 449 450: figure out how to guarantee sh startup 451echo " " 452echo "Checking out how to guarantee sh startup..." 453startsh=$sharpbang'/bin/sh' 454echo "Let's see if '$startsh' works..." 455cat >start.sh <<EOSS 456$startsh 457set abc 458test "$?abc" != 1 459EOSS 460 461chmod +x start.sh 462$eunicefix start.sh 463if ./start.sh; then 464 echo "Yup, it does." 465else 466 echo "Nope. You may have to fix up the shell scripts to make sure sh runs them." 467fi 468 469: first determine how to suppress newline on echo command 470echo "Checking echo to see how to suppress newlines..." 471(echo "hi there\c" ; echo " ") >echotmp 472if $contains c echotmp >/dev/null 2>&1 ; then 473 echo "...using -n." 474 n='-n' 475 c='' 476else 477 cat <<'EOM' 478...using \c 479EOM 480 n='' 481 c='\c' 482fi 483echo $n "Type carriage return to continue. Your cursor should be here-->$c" 484read ans 485 486: now set up to do reads with possible shell escape and default assignment 487cat <<EOSC >myread 488case "\$fastread" in 489yes) ans=''; echo " " ;; 490*) ans='!';; 491esac 492while expr "X\$ans" : "X!" >/dev/null; do 493 read ans 494 case "\$ans" in 495 !) 496 sh 497 echo " " 498 echo $n "\$rp $c" 499 ;; 500 !*) 501 set \`expr "X\$ans" : "X!\(.*\)\$"\` 502 sh -c "\$*" 503 echo " " 504 echo $n "\$rp $c" 505 ;; 506 esac 507done 508rp='Your answer:' 509case "\$ans" in 510'') ans="\$dflt";; 511esac 512EOSC 513 514: general instructions 515cat <<EOH 516 517This installation shell script will examine your system and ask you questions 518to determine how the $package package should be installed. If you get stuck 519on a question, you may use a ! shell escape to start a subshell or execute 520a command. Many of the questions will have default answers in square 521brackets--typing carriage return will give you the default. 522 523On some of the questions which ask for file or directory names you are 524allowed to use the ~name construct to specify the login directory belonging 525to "name", even if you don't have a shell which knows about that. Questions 526where this is allowed will be marked "(~name ok)". 527 528EOH 529rp="[Type carriage return to continue]" 530echo $n "$rp $c" 531. myread 532cat <<EOH 533 534Much effort has been expended to ensure that this shell script will run on any 535Unix system. If despite that it blows up on you, your best bet is to edit 536Configure and run it again. Also, let me (lwall@netlabs.com) 537know how I blew it. If you can't run Configure for some reason, you'll have 538to generate a config.sh file by hand. 539 540This installation script affects things in two ways: 1) it may do direct 541variable substitutions on some of the files included in this kit, and 5422) it builds a config.h file for inclusion in C programs. You may edit 543any of these files as the need arises after running this script. 544 545If you make a mistake on a question, there is no easy way to back up to it 546currently. The easiest thing to do is to edit config.sh and rerun all the 547SH files. Configure will offer to let you do this before it runs the SH files. 548 549EOH 550rp="[Type carriage return to continue]" 551echo $n "$rp $c" 552. myread 553 554: find out where common programs are 555echo " " 556echo "Locating common programs..." 557cat <<EOSC >loc 558$startsh 559case \$# in 5600) exit 1;; 561esac 562thing=\$1 563shift 564dflt=\$1 565shift 566for dir in \$*; do 567 case "\$thing" in 568 .) 569 if test -d \$dir/\$thing; then 570 echo \$dir 571 exit 0 572 fi 573 ;; 574 *) 575 if test -f \$dir/\$thing; then 576 echo \$dir/\$thing 577 exit 0 578 elif test -f \$dir/\$thing.exe; then 579 : on Eunice apparently 580 echo \$dir/\$thing 581 exit 0 582 fi 583 ;; 584 esac 585done 586echo \$dflt 587exit 1 588EOSC 589chmod +x loc 590$eunicefix loc 591loclist=" 592cat 593cp 594echo 595expr 596grep 597mkdir 598mv 599rm 600sed 601sort 602tr 603uniq 604" 605trylist=" 606Mcc 607bison 608cpp 609csh 610egrep 611line 612nroff 613perl 614test 615uname 616yacc 617" 618pth=`echo :$boPATH:$PATH:$eoPATH: | sed -e 's/:/ /g'` 619for file in $loclist; do 620 xxx=`./loc $file $file $pth` 621 eval $file=$xxx 622 eval _$file=$xxx 623 case "$xxx" in 624 /*) 625 echo $file is in $xxx. 626 ;; 627 *) 628 echo "I don't know where $file is. I hope it's in everyone's PATH." 629 ;; 630 esac 631done 632echo " " 633echo "Don't worry if any of the following aren't found..." 634ans=offhand 635for file in $trylist; do 636 xxx=`./loc $file $file $pth` 637 eval $file=$xxx 638 eval _$file=$xxx 639 case "$xxx" in 640 /*) 641 echo $file is in $xxx. 642 ;; 643 *) 644 echo "I don't see $file out there, $ans." 645 ans=either 646 ;; 647 esac 648done 649case "$egrep" in 650egrep) 651 echo "Substituting grep for egrep." 652 egrep=$grep 653 ;; 654esac 655case "$test" in 656test) 657 echo "Hopefully test is built into your sh." 658 ;; 659/bin/test) 660 if sh -c "PATH= test true" >/dev/null 2>&1; then 661 echo "Using the test built into your sh." 662 test=test 663 fi 664 ;; 665*) 666 test=test 667 ;; 668esac 669case "$echo" in 670echo) 671 echo "Hopefully echo is built into your sh." 672 ;; 673/bin/echo) 674 echo " " 675 echo "Checking compatibility between /bin/echo and builtin echo (if any)..." 676 $echo $n "hi there$c" >Loc1.txt 677 echo $n "hi there$c" >Loc2.txt 678 if cmp Loc1.txt Loc2.txt >/dev/null 2>&1; then 679 echo "They are compatible. In fact, they may be identical." 680 else 681 case "$n" in 682 '-n') n='' c='\c' ans='\c' ;; 683 *) n='-n' c='' ans='-n' ;; 684 esac 685 cat <<FOO 686They are not compatible! You are probably running ksh on a non-USG system. 687I'll have to use /bin/echo instead of the builtin, since Bourne shell doesn't 688have echo built in and we may have to run some Bourne shell scripts. That 689means I'll have to use $ans to suppress newlines now. Life is ridiculous. 690 691FOO 692 rp="Your cursor should be here-->" 693 $echo $n "$rp$c" 694 . myread 695 fi 696 ;; 697*) 698 : cross your fingers 699 echo=echo 700 ;; 701esac 702 703: set up shell script to do ~ expansion 704cat >filexp <<EOSS 705$startsh 706: expand filename 707case "\$1" in 708 ~/*|~) 709 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|" 710 ;; 711 ~*) 712 if $test -f /bin/csh; then 713 /bin/csh -f -c "glob \$1" 714 echo "" 715 else 716 name=\`$expr x\$1 : '..\([^/]*\)'\` 717 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\` 718 if $test ! -d "\$dir"; then 719 me=\`basename \$0\` 720 echo "\$me: can't locate home directory for: \$name" >&2 721 exit 1 722 fi 723 case "\$1" in 724 */*) 725 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\` 726 ;; 727 *) 728 echo \$dir 729 ;; 730 esac 731 fi 732 ;; 733*) 734 echo \$1 735 ;; 736esac 737EOSS 738chmod +x filexp 739$eunicefix filexp 740 741: get old answers, if there is a config file out there 742hint=default 743if test -f ../config.sh; then 744 echo " " 745 eval "`grep lastuname ../config.sh`" 746 tmp=`(uname -a) 2>&1` 747 if test "X$tmp" = "X$lastuname"; then 748 dflt=y 749 else 750 dflt=n 751 fi 752 lastuname="$tmp" 753 rp="I see a config.sh file. Did Configure make it on THIS system? [$dflt]" 754 echo $n "$rp $c" 755 . myread 756 case "$ans" in 757 n*) echo "OK, I'll ignore it."; mv ../config.sh ../config.sh.old;; 758 *) echo "Fetching default answers from your old config.sh file..." 759 tmp="$n" 760 ans="$c" 761 . ../config.sh 762 n="$tmp" 763 c="$ans" 764 hint=previous 765 ;; 766 esac 767else 768 lastuname=`(uname -a) 2>&1` 769fi 770if test -d ../hints && test ! -f ../config.sh; then 771 echo ' ' 772 echo "First time through, eh? I have some defaults handy for the following systems:" 773 (cd ../hints; ls -C *.sh | sed 's/\.sh/ /g') 774 dflt='' 775 : Half the following guesses are probably wrong... 776 test -f /irix && dflt="$dflt sgi" 777 test -f /xenix && dflt="$dflt sco_xenix" 778 test -f /dynix && dflt="$dflt dynix" 779 test -f /dnix && dflt="$dflt dnix" 780 test -f /bin/mips && /bin/mips && dflt="$dflt mips" 781 test -d /NextApps && test -f /usr/adm/software_version && dflt="$dflt next" 782 if test -f /bin/uname || test -f /usr/bin/uname; then 783 set `uname -a | tr '[A-Z]' '[a-z]'` 784 785 test -f "../hints/$5.sh" && dflt="$dflt $5" 786 787 case "$5" in 788 3b2) dflt="$dflt 3b2";; 789 fps*) dflt="$dflt fps";; 790 mips*) dflt="$dflt mips";; 791 [23]100) dflt="$dflt mips";; 792 next*) dflt="$dflt next" ;; 793 6000) dflt="$dflt mc6000";; 794 esac 795 796 test -f "../hints/$1.sh" && dflt="$dflt $1" 797 798 case "$1" in 799 aix) dflt="$dflt aix_rs" ;; 800 sunos) case "$3" in 801 3.4) dflt="$dflt sunos_3_4" ;; 802 3.5) dflt="$dflt sunos_3_5" ;; 803 4.0.1) dflt="$dflt sunos_4_0_1" ;; 804 4.0.2) dflt="$dflt sunos_4_0_2" ;; 805 esac 806 ;; 807 hp*ux) dflt="$dflt hpux" 808 extra_hints="hp"`echo $5 | sed -e s#/#_#g -e s/..$/00/` 809 if test -f ../hints/$extra_hints.sh; then 810 dflt="$dflt $extra_hints" 811 fi;; 812 irix) dflt="$dflt sgi" ;; 813 ultrix) case "$3" in 814 1*) dflt="$dflt ultrix_1" ;; 815 3*) dflt="$dflt ultrix_3" ;; 816 4*) dflt="$dflt ultrix_4" ;; 817 esac 818 ;; 819 uts) dflt="$dflt uts" ;; 820 $2) if test -f /etc/systemid; then 821 set `echo $3 | sed 's/\./ /'` $4 822 if test -f ../hints/sco_$1_$2_$3.sh; then 823 dflt="$dflt sco_$1_$2_$3" 824 elif test -f ../hints/sco_$1_$2.sh; then 825 dflt="$dflt sco_$1_$2" 826 elif test -f ../hints/sco_$1.sh; then 827 dflt="$dflt sco_$1" 828 fi 829 fi 830 ;; 831 esac 832 fi 833 set X `echo $dflt | tr ' ' '\012' | sort | uniq` 834 shift 835 dflt=${1+"$@"} 836 case "$dflt" in 837 '') dflt=none;; 838 esac 839 echo '(You may give one or more space-separated answers, or "none" if appropriate.' 840 echo 'If your OS version has no hints, do not give a wrong version--say "none".)' 841 rp="Which of these apply, if any? [$dflt]" 842 echo $n "$rp $c" 843 . myread 844 for file in $ans; do 845 if test -f ../hints/$file.sh; then 846 . ../hints/$file.sh 847 cat ../hints/$file.sh >>../config.sh 848 hint=recommended 849 fi 850 done 851fi 852 853cat >whoa <<'EOF' 854eval "was=\$$2" 855dflt=y 856echo ' ' 857echo "*** WHOA THERE!!! ***" 858echo " The $hint value for \$$2 on this machine was \"$was\"!" 859rp=" Keep the $hint value? [y]" 860echo $n "$rp $c" 861. myread 862case "$ans" in 863y) td=$was; tu=$was;; 864esac 865EOF 866 867setvar='td=$define; tu=$undef; set X $1; eval "was=\$$2"; 868case "$val$was" in 869defineundef) . whoa; eval "$2=\$td";; 870undefdefine) . whoa; eval "$2=\$tu";; 871*) eval "$2=$val";; 872esac' 873 874: determine where manual pages go 875$cat <<EOM 876 877$package has manual pages available in source form. 878EOM 879case "$nroff" in 880'nroff') 881 echo "However, you don't have nroff, so they're probably useless to you." 882 case "$mansrc" in 883 '') 884 mansrc="none" 885 ;; 886 esac 887esac 888echo "If you don't want the manual sources installed, answer 'none'." 889case "$mansrc" in 890'') 891 dflt=`./loc . none /usr/man/local/man1 /usr/man/man.L /usr/man/manl /usr/man/mann /usr/man/u_man/man1 /usr/man/man1 /usr/local/man/man1` 892 ;; 893*) dflt="$mansrc" 894 ;; 895esac 896cont=true 897while $test "$cont" ; do 898 echo " " 899 rp="Where do the manual pages (source) go (~name ok)? [$dflt]" 900 $echo $n "$rp $c" 901 . myread 902 case "$ans" in 903 'none') 904 mansrc='' 905 cont='' 906 ;; 907 *) 908 mansrc=`./filexp "$ans"` 909 if $test -d "$mansrc"; then 910 cont='' 911 else 912 if $test "$fastread" = yes; then 913 dflt=y 914 else 915 dflt=n 916 fi 917 rp="Directory $mansrc doesn't exist. Use that name anyway? [$dflt]" 918 $echo $n "$rp $c" 919 . myread 920 dflt='' 921 case "$ans" in 922 y*) cont='';; 923 esac 924 fi 925 ;; 926 esac 927done 928case "$mansrc" in 929'') 930 manext='' 931 ;; 932*l) 933 manext=l 934 ;; 935*n) 936 manext=n 937 ;; 938*o) 939 manext=l 940 ;; 941*p) 942 manext=n 943 ;; 944*C) 945 manext=C 946 ;; 947*L) 948 manext=L 949 ;; 950*) 951 manext=1 952 ;; 953esac 954 955: Sigh. Well, at least the box is fast... 956echo " " 957$echo $n "Hmm... $c" 958case "$usrinclude" in 959'') dflt='/usr/include';; 960*) dflt=$usrinclude;; 961esac 962inclPath='' 963if $test -f /bin/mips && /bin/mips; then 964 echo "Looks like a MIPS system..." 965 $cat >usrinclude.c <<'EOCP' 966#ifdef SYSTYPE_BSD43 967/bsd43 968#endif 969EOCP 970 if cc -E usrinclude.c > usrinclude.out && $contains / usrinclude.out >/dev/null 2>&1 ; then 971 echo "and you're compiling with the BSD43 compiler and libraries." 972 dflt='/bsd43/usr/include' 973 inclPath='/bsd43' 974 else 975 echo "and you're compiling with the SysV compiler and libraries." 976 fi 977else 978 echo "Doesn't look like a MIPS system." 979 echo "exit 1" >mips 980 chmod +x mips 981 $eunicefix mips 982fi 983 984cont=true 985while $test "$cont" ; do 986 echo " " 987 rp="Where are the include files you want to use? [$dflt]" 988 $echo $n "$rp $c" 989 . myread 990 usrinclude="$ans" 991 if $test -d $ans; then 992 cont='' 993 else 994 if $test "$fastread" = yes; then 995 dflt=y 996 else 997 dflt=n 998 fi 999 rp="Directory $ans doesn't exist. Use that name anyway? [$dflt]" 1000 $echo $n "$rp $c" 1001 . myread 1002 dflt='' 1003 case "$ans" in 1004 y*) cont='';; 1005 esac 1006 fi 1007done 1008 1009: make some quick guesses about what we are up against 1010echo " " 1011echo exit 1 >bsd 1012echo exit 1 >usg 1013echo exit 1 >v7 1014echo exit 1 >osf1 1015echo exit 1 >eunice 1016echo exit 1 >xenix 1017echo exit 1 >venix 1018cat $usrinclude/signal.h $usrinclude/sys/signal.h >guess.txt 2>/dev/null 1019if test "$usrinclude" = "/bsd43/usr/include" ; then 1020 echo "Looks kind of like a SysV MIPS running BSD, but we'll see..." 1021 echo exit 0 >bsd 1022elif test -f /osf_boot || $contains "OSF/1" /usr/include/ctype.h; then 1023 echo "Looks like an OSF/1 system, but we'll see..." 1024 echo exit 0 >osf1 1025elif test `echo abc | tr a-z A-Z` = Abc ; then 1026 echo "Looks kind of like a USG system, but we'll see..." 1027 echo exit 0 >usg 1028elif $contains SIGTSTP guess.txt >/dev/null 2>&1 ; then 1029 echo "Looks kind of like a BSD system, but we'll see..." 1030 echo exit 0 >bsd 1031else 1032 echo "Looks kind of like a version 7 system, but we'll see..." 1033 echo exit 0 >v7 1034fi 1035case "$eunicefix" in 1036*unixtovms*) 1037 cat <<'EOI' 1038There is, however, a strange, musty smell in the air that reminds me of 1039something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit. 1040EOI 1041 echo "exit 0" >eunice 1042 d_eunice="$define" 1043 ;; 1044*) 1045 echo " " 1046 echo "Congratulations. You aren't running Eunice." 1047 d_eunice="$undef" 1048 ;; 1049esac 1050if test -f /xenix; then 1051 echo "Actually, this looks more like a XENIX system..." 1052 echo "exit 0" >xenix 1053else 1054 echo " " 1055 echo "It's not Xenix..." 1056fi 1057chmod +x xenix 1058$eunicefix xenix 1059if test -f /venix; then 1060 echo "Actually, this looks more like a VENIX system..." 1061 echo "exit 0" >venix 1062else 1063 echo " " 1064 if xenix; then 1065 : null 1066 else 1067 echo "Nor is it Venix..." 1068 fi 1069fi 1070chmod +x bsd usg v7 osf1 eunice venix 1071$eunicefix bsd usg v7 eunice venix 1072 1073: see what memory models we can support 1074case "$models" in 1075'') 1076 : We may not use Cppsym or we get a circular dependency through cc. 1077 : But this should work regardless of which cc we eventually use. 1078 cat >pdp11.c <<'EOP' 1079main() { 1080#ifdef pdp11 1081 exit(0); 1082#else 1083 exit(1); 1084#endif 1085} 1086EOP 1087 cc -o pdp11 pdp11.c >/dev/null 2>&1 1088 if pdp11 2>/dev/null; then 1089 dflt='unsplit split' 1090 else 1091 ans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge` 1092 case "$ans" in 1093 X) dflt='none';; 1094 *) if $test -d /lib/small || $test -d /usr/lib/small; then 1095 dflt='small' 1096 else 1097 dflt='' 1098 fi 1099 if $test -d /lib/medium || $test -d /usr/lib/medium; then 1100 dflt="$dflt medium" 1101 fi 1102 if $test -d /lib/large || $test -d /usr/lib/large; then 1103 dflt="$dflt large" 1104 fi 1105 if $test -d /lib/huge || $test -d /usr/lib/huge; then 1106 dflt="$dflt huge" 1107 fi 1108 esac 1109 fi 1110 ;; 1111*) dflt="$models" ;; 1112esac 1113$cat <<EOM 1114 1115Some systems have different model sizes. On most systems they are called 1116small, medium, large, and huge. On the PDP11 they are called unsplit and 1117split. If your system doesn't support different memory models, say "none". 1118If you wish to force everything to one memory model, say "none" here and 1119put the appropriate flags later when it asks you for other cc and ld flags. 1120Venix systems may wish to put "none" and let the compiler figure things out. 1121(In the following question multiple model names should be space separated.) 1122 1123EOM 1124rp="Which models are supported? [$dflt]" 1125$echo $n "$rp $c" 1126. myread 1127models="$ans" 1128 1129case "$models" in 1130none) 1131 small='' 1132 medium='' 1133 large='' 1134 huge='' 1135 unsplit='' 1136 split='' 1137 ;; 1138*split) 1139 case "$split" in 1140 '') 1141 if $contains '\-i' $mansrc/man1/ld.1 >/dev/null 2>&1 || \ 1142 $contains '\-i' $mansrc/man1/cc.1 >/dev/null 2>&1; then 1143 dflt='-i' 1144 else 1145 dflt='none' 1146 fi 1147 ;; 1148 *) dflt="$split";; 1149 esac 1150 rp="What flag indicates separate I and D space? [$dflt]" 1151 $echo $n "$rp $c" 1152 . myread 1153 case "$ans" in 1154 none) ans='';; 1155 esac 1156 split="$ans" 1157 unsplit='' 1158 ;; 1159*large*|*small*|*medium*|*huge*) 1160 case "$models" in 1161 *large*) 1162 case "$large" in 1163 '') dflt='-Ml';; 1164 *) dflt="$large";; 1165 esac 1166 rp="What flag indicates large model? [$dflt]" 1167 $echo $n "$rp $c" 1168 . myread 1169 case "$ans" in 1170 none) ans=''; 1171 esac 1172 large="$ans" 1173 ;; 1174 *) large='';; 1175 esac 1176 case "$models" in 1177 *huge*) 1178 case "$huge" in 1179 '') dflt='-Mh';; 1180 *) dflt="$huge";; 1181 esac 1182 rp="What flag indicates huge model? [$dflt]" 1183 $echo $n "$rp $c" 1184 . myread 1185 case "$ans" in 1186 none) ans=''; 1187 esac 1188 huge="$ans" 1189 ;; 1190 *) huge="$large";; 1191 esac 1192 case "$models" in 1193 *medium*) 1194 case "$medium" in 1195 '') dflt='-Mm';; 1196 *) dflt="$medium";; 1197 esac 1198 rp="What flag indicates medium model? [$dflt]" 1199 $echo $n "$rp $c" 1200 . myread 1201 case "$ans" in 1202 none) ans=''; 1203 esac 1204 medium="$ans" 1205 ;; 1206 *) medium="$large";; 1207 esac 1208 case "$models" in 1209 *small*) 1210 case "$small" in 1211 '') dflt='none';; 1212 *) dflt="$small";; 1213 esac 1214 rp="What flag indicates small model? [$dflt]" 1215 $echo $n "$rp $c" 1216 . myread 1217 case "$ans" in 1218 none) ans=''; 1219 esac 1220 small="$ans" 1221 ;; 1222 *) small='';; 1223 esac 1224 ;; 1225*) 1226 echo "Unrecognized memory models--you may have to edit Makefile.SH" 1227 ;; 1228esac 1229 1230: see if we need a special compiler 1231echo " " 1232if usg; then 1233 case "$cc" in 1234 '') 1235 case "$Mcc" in 1236 /*) dflt='Mcc' 1237 ;; 1238 *) 1239 case "$large" in 1240 -M*) 1241 dflt='cc' 1242 ;; 1243 *) 1244 if $contains '\-M' $mansrc/cc.1 >/dev/null 2>&1 ; then 1245 dflt='cc -M' 1246 else 1247 dflt='cc' 1248 fi 1249 ;; 1250 esac 1251 ;; 1252 esac 1253 ;; 1254 *) dflt="$cc";; 1255 esac 1256 $cat <<'EOM' 1257 1258On some systems the default C compiler will not resolve multiple global 1259references that happen to have the same name. On some such systems the 1260"Mcc" command may be used to force these to be resolved. On other systems 1261a "cc -M" command is required. (Note that the -M flag on other systems 1262indicates a memory model to use!) If you have the Gnu C compiler, you 1263might wish to use that instead. What command will force resolution on 1264EOM 1265 $echo $n "this system? [$dflt] $c" 1266 rp="Command to resolve multiple refs? [$dflt]" 1267 . myread 1268 cc="$ans" 1269else 1270 case "$cc" in 1271 '') dflt=cc;; 1272 *) dflt="$cc";; 1273 esac 1274 rp="Use which C compiler? [$dflt]" 1275 $echo $n "$rp $c" 1276 . myread 1277 cc="$ans" 1278fi 1279case "$cc" in 1280*gcc*) cpp=`./loc gcc-cpp $cpp $pth` 1281 case "$nativegcc" in 1282 '') case "$ccflags" in 1283 *-fpcc-struct-return*) dflt=n;; 1284 *) dflt=y;; 1285 esac 1286 ;; 1287 undef) dflt=n;; 1288 *) dflt=y;; 1289 esac 1290 echo " " 1291 rp="Are your system (especially dbm) libraries compiled with gcc? [$dflt]" 1292 $echo $n "$rp $c" 1293 . myread 1294 case "$ans" in 1295 n*) nativegcc="$undef"; gccflags='-fpcc-struct-return';; 1296 *) nativegcc="$define"; gccflags='';; 1297 esac 1298 case "$gccflags" in 1299 *-ansi*) ;; 1300 *-traditional*) ;; 1301 *) gccflags="$gccflags -traditional -Dvolatile=__volatile__" ;; 1302 esac 1303 ;; 1304esac 1305 1306: determine optimize, if desired, or use for debug flag also 1307case "$optimize" in 1308' ') dflt="none" 1309 ;; 1310'') dflt="-O"; 1311 ;; 1312*) dflt="$optimize" 1313 ;; 1314esac 1315cat <<EOH 1316 1317Some C compilers have problems with their optimizers, by default, $package 1318compiles with the -O flag to use the optimizer. Alternately, you might 1319want to use the symbolic debugger, which uses the -g flag (on traditional 1320Unix systems). Either flag can be specified here. To use neither flag, 1321specify the word "none". 1322 1323EOH 1324rp="What optimizer/debugger flag should be used? [$dflt]" 1325$echo $n "$rp $c" 1326. myread 1327optimize="$ans" 1328case "$optimize" in 1329'none') optimize=" " 1330 ;; 1331esac 1332 1333case "$ccflags" in 1334'') case "$cc" in 1335 *gcc*) dflt="$gccflags";; 1336 *) dflt='';; 1337 esac 1338 ;; 1339*-fpcc-struct-return*) dflt="$ccflags";; 1340*) case "$cc" in 1341 *gcc*) dflt="$ccflags $gccflags";; 1342 *) dflt="$ccflags";; 1343 esac 1344 ;; 1345esac 1346for thisincl in $inclwanted; do 1347 if test -d $thisincl; then 1348 if test "x$thisincl" != "x$usrinclude"; then 1349 case "$dflt" in 1350 *$thisincl*);; 1351 *) dflt="$dflt -I$thisincl";; 1352 esac 1353 fi 1354 fi 1355done 1356case "$optimize" in 1357-g*) 1358 case "$dflt" in 1359 *DEBUGGING*);; 1360 *) dflt="$dflt -DDEBUGGING";; 1361 esac 1362 ;; 1363esac 1364if $contains 'LANGUAGE_C' $usrinclude/signal.h >/dev/null 2>&1; then 1365 case "$dflt" in 1366 *LANGUAGE_C*);; 1367 *) dflt="$dflt -DLANGUAGE_C";; 1368 *) if osf1; then 1369 dflt="$dflt -D__LANGUAGE_C__" 1370 else 1371 dflt="$dflt -DLANGUAGE_C" 1372 fi 1373 ;; 1374 esac 1375fi 1376if $contains '_NO_PROTO' $usrinclude/signal.h >/dev/null 2>&1; then 1377 case "$dflt" in 1378 *_NO_PROTO*);; 1379 *) osf1 || dflt="$dflt -D_NO_PROTO";; 1380 esac 1381fi 1382case "$dflt" in 1383'') dflt=none;; 1384esac 1385cat <<EOH 1386 1387Your C compiler may want other flags. For this question you should 1388include -I/whatever and -DWHATEVER flags and any other flags used by 1389the C compiler, but you should NOT include libraries or ld flags like 1390-lwhatever. For instance, this would be a good place to specify 1391-DDEBUGGING. To use no flags, specify the word "none". 1392 1393EOH 1394rp="Any additional cc flags? [$dflt]" 1395$echo $n "$rp $c" 1396. myread 1397case "$ans" in 1398none) ans=''; 1399esac 1400ccflags="$ans" 1401 1402: the following weeds options from ccflags that are of no interest to cpp 1403cppflags="$ccflags" 1404case "$cc" in 1405*gcc*) cppflags="$cppflags -D__GNUC__";; 1406esac 1407case "$cppflags" in 1408'');; 1409*) set X $cppflags 1410 cppflags='' 1411 for flag do 1412 case $flag in 1413 -D*|-U*|-I*|-traditional|-ansi|-nostdinc) cppflags="$cppflags $flag";; 1414 esac 1415 done 1416 case "$cppflags" in 1417 *-*) echo "(C preprocessor flags: $cppflags)";; 1418 esac 1419 ;; 1420esac 1421 1422case "$ldflags" in 1423'') if venix; then 1424 dflt='-i -z' 1425 else 1426 dflt='none' 1427 fi 1428 ;; 1429*) dflt="$ldflags";; 1430esac 1431echo " " 1432rp="Any additional ld flags (NOT including libraries)? [$dflt]" 1433$echo $n "$rp $c" 1434. myread 1435case "$ans" in 1436none) ans=''; 1437esac 1438ldflags="$ans" 1439 1440echo " " 1441echo "Checking for optional libraries..." 1442case "$libs" in 1443'') dflt=' ';; 1444*) dflt="$libs ";; 1445esac 1446case "$libswanted" in 1447'') libswanted='c_s';; 1448esac 1449for thislib in $libswanted; do 1450 case "$thislib" in 1451 dbm) thatlib=ndbm;; 1452 *_s) thatlib=NONE;; 1453 *) thatlib="${thislib}_s";; 1454 *) thatlib=NONE;; 1455 esac 1456 xxx=`./loc lib$thislib.a X /usr/ccs/lib /usr/lib /usr/ucblib /usr/local/lib /lib` 1457 if test -f $xxx; then 1458 echo "Found -l$thislib." 1459 case "$dflt" in 1460 *-l$thislib\ *|*-l$thatlib\ *);; 1461 *) dflt="$dflt -l$thislib ";; 1462 esac 1463 else 1464 xxx=`./loc lib$thislib.a X $libpth` 1465 if test -f $xxx; then 1466 echo "Found $xxx." 1467 case "$dflt" in 1468 *"$xxx "*);; 1469 *) dflt="$dflt $xxx ";; 1470 esac 1471 else 1472 xxx=`./loc Slib$thislib.a X $xlibpth` 1473 if test -f $xxx; then 1474 echo "Found -l$thislib." 1475 case "$dflt" in 1476 *-l$thislib\ *|*-l$thatlib\ *);; 1477 *) dflt="$dflt -l$thislib ";; 1478 esac 1479 else 1480 xxx=`./loc lib$thislib.so X /usr/ccs/lib /usr/lib /usr/ucblib /usr/local/lib /lib` 1481 if test -f $xxx; then 1482 echo "Found -l$thislib as a shared object only." 1483 case "$dflt" in 1484 *-l$thislib\ *|*-l$thatlib\ *);; 1485 *) dflt="$dflt -l$thislib ";; 1486 esac 1487 else 1488 echo "No -l$thislib." 1489 fi 1490 fi 1491 fi 1492 fi 1493done 1494set X $dflt 1495shift 1496dflt="$*" 1497case "$dflt" in 1498'') dflt='none';; 1499esac 1500 1501$cat <<EOM 1502 1503Some versions of Unix support shared libraries, which make 1504executables smaller but make load time slightly longer. 1505 1506On some systems, mostly newer Unix System V's, the shared library 1507is included by putting the option "-lc_s" as the last thing on the 1508cc command line when linking. Other systems use shared libraries 1509by default. There may be other libraries needed to compile $package 1510on your machine as well. If your system needs the "-lc_s" option, 1511include it here. Include any other special libraries here as well. 1512Say "none" for none. 1513EOM 1514 1515echo " " 1516rp="Any additional libraries? [$dflt]" 1517$echo $n "$rp $c" 1518. myread 1519case "$ans" in 1520none) ans=''; 1521esac 1522libs="$ans" 1523 1524: check for size of random number generator 1525echo " " 1526case "$alignbytes" in 1527'') 1528 echo "Checking alignment constraints..." 1529 $cat >try.c <<'EOCP' 1530struct foobar { 1531 char foo; 1532 double bar; 1533} try; 1534main() 1535{ 1536 printf("%d\n", (char*)&try.bar - (char*)&try.foo); 1537} 1538EOCP 1539 if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then 1540 dflt=`./try` 1541 else 1542 dflt='?' 1543 echo "(I can't seem to compile the test program...)" 1544 fi 1545 ;; 1546*) 1547 dflt="$alignbytes" 1548 ;; 1549esac 1550rp="Doubles must be aligned on a how-many-byte boundary? [$dflt]" 1551$echo $n "$rp $c" 1552. myread 1553alignbytes="$ans" 1554$rm -f try.c try 1555 1556: determine where public executables go 1557cat <<EOF 1558 1559The following questions distinguish the directory in which executables 1560reside from the directory in which they are installed (and from which they 1561are presumably copied to the former directory by occult means). This 1562distinction is often necessary under afs. On most other systems, however, 1563the two directories are the same. 1564 1565EOF 1566case "$bin" in 1567'') 1568 dflt=`./loc . /usr/local/bin /usr/local/bin /usr/lbin /usr/local /usr/bin /bin` 1569 ;; 1570*) dflt="$bin" 1571 ;; 1572esac 1573cont=true 1574while $test "$cont" ; do 1575 rp="In which directory will public executables reside (~name ok)? [$dflt]" 1576 $echo "In which directory will public executables reside (~name ok)?" 1577 $echo $n "[$dflt] $c" 1578 . myread 1579 bin="$ans" 1580 bin=`./filexp $bin` 1581 if test -d $bin; then 1582 cont='' 1583 else 1584 case "$fastread" in 1585 yes) dflt=y;; 1586 *) dflt=n;; 1587 esac 1588 rp="Directory $bin doesn't exist. Use that name anyway? [$dflt]" 1589 $echo $n "$rp $c" 1590 . myread 1591 dflt='' 1592 case "$ans" in 1593 y*) cont='';; 1594 esac 1595 fi 1596done 1597 1598case "$bin" in 1599 ?????????????????????????) 1600 cat <<EOF 1601 1602NOTE: you have a fairly long path name there. Some systems have trouble 1603executing a script if the #! line ends up longer than 32 characters. If 1604you have this trouble you may have to reinstall somewhere else, or make 1605a symbolic link from someplace with a shorter name. 1606 1607EOF 1608 ;; 1609esac 1610 1611case "$installbin" in 1612'') 1613 dflt=`echo $bin | sed 's#^/afs/#/afs/.#'` 1614 test -d $dflt || dflt="$bin" 1615 ;; 1616*) dflt="$installbin" 1617 ;; 1618esac 1619cont=true 1620while $test "$cont" ; do 1621 rp="In which directory will public executables be installed (~name ok)? [$dflt]" 1622 $echo "In which directory will public executables be installed (~name ok)?" 1623 $echo $n "[$dflt] $c" 1624 . myread 1625 installbin="$ans" 1626 installbin=`./filexp $installbin` 1627 if test -d $installbin; then 1628 cont='' 1629 else 1630 case "$fastread" in 1631 yes) dflt=y;; 1632 *) dflt=n;; 1633 esac 1634 rp="Directory $installbin doesn't exist. Use that name anyway? [$dflt]" 1635 $echo $n "$rp $c" 1636 . myread 1637 dflt='' 1638 case "$ans" in 1639 y*) cont='';; 1640 esac 1641 fi 1642done 1643 1644: check for ordering of bytes in a long 1645case "$byteorder" in 1646'') 1647cat <<'EOM' 1648 1649In the following, larger digits indicate more significance. A big-endian 1650machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A 1651little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other 1652machines may have weird orders like 3412. A Cray will report 87654321. If 1653the test program works the default is probably right. 1654I'm now running the test program... 1655EOM 1656 $cat >byteorder.c <<'EOCP' 1657#include <stdio.h> 1658main() 1659{ 1660 int i; 1661 union { 1662 unsigned long l; 1663 char c[sizeof(long)]; 1664 } u; 1665 1666 if (sizeof(long) > 4) 1667 u.l = (0x08070605L << 32) | 0x04030201L; 1668 else 1669 u.l = 0x04030201L; 1670 for (i=0; i < sizeof(long); i++) 1671 printf("%c",u.c[i]+'0'); 1672 printf("\n"); 1673} 1674EOCP 1675 if $cc byteorder.c -o byteorder >/dev/null 2>&1 ; then 1676 dflt=`./byteorder` 1677 case "$dflt" in 1678 ????|????????) echo "(The test program ran ok.)";; 1679 *) echo "(The test program didn't run right for some reason.)";; 1680 esac 1681 else 1682 dflt='4321' 1683 echo "(I can't seem to compile the test program. Guessing big-endian...)" 1684 fi 1685 ;; 1686*) 1687 echo " " 1688 dflt="$byteorder" 1689 ;; 1690esac 1691rp="What is the order of bytes in a long? [$dflt]" 1692$echo $n "$rp $c" 1693. myread 1694byteorder="$ans" 1695 1696: check for ability to cast negative floats to unsigned 1697echo " " 1698echo 'Checking to see if your C compiler can cast weird floats to unsigned' 1699$cat >try.c <<'EOCP' 1700#include <signal.h> 1701 1702blech() { exit(3); } 1703 1704main() 1705{ 1706 double f = -123; 1707 unsigned long along; 1708 unsigned int aint; 1709 unsigned short ashort; 1710 int result = 0; 1711 1712 signal(SIGFPE, blech); 1713 along = (unsigned long)f; 1714 aint = (unsigned int)f; 1715 ashort = (unsigned short)f; 1716 if (along != (unsigned long)-123) 1717 result |= 1; 1718 if (aint != (unsigned int)-123) 1719 result |= 1; 1720 if (ashort != (unsigned short)-123) 1721 result |= 1; 1722 f = (double)0x40000000; 1723 f = f + f; 1724 along = 0; 1725 along = (unsigned long)f; 1726 if (along != 0x80000000) 1727 result |= 2; 1728 f -= 1; 1729 along = 0; 1730 along = (unsigned long)f; 1731 if (along != 0x7fffffff) 1732 result |= 1; 1733 f += 2; 1734 along = 0; 1735 along = (unsigned long)f; 1736 if (along != 0x80000001) 1737 result |= 2; 1738 exit(result); 1739} 1740EOCP 1741if $cc -o try $ccflags try.c >/dev/null 2>&1; then 1742 ./try 1743 castflags=$? 1744else 1745 castflags=3 1746fi 1747case "$castflags" in 17480) val="$define" 1749 echo "Yup, it does." 1750 ;; 1751*) val="$undef" 1752 echo "Nope, it doesn't." 1753 ;; 1754esac 1755set d_castneg 1756eval $setvar 1757$rm -f try.* 1758 1759: see how we invoke the C preprocessor 1760echo " " 1761echo "Now, how can we feed standard input to your C preprocessor..." 1762cat <<'EOT' >testcpp.c 1763#define ABC abc 1764#define XYZ xyz 1765ABC.XYZ 1766EOT 1767 1768cd .. 1769echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin 1770chmod 755 cppstdin 1771wrapper=cppstdin 1772 1773case "$cppstdin" in 1774/*cppstdin) cppstdin=cppstdin;; 1775esac 1776cp cppstdin UU 1777cd UU 1778 1779if test "X$cppstdin" != "X" && \ 1780 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \ 1781 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then 1782 echo "You used to use $cppstdin $cppminus so we'll use that again." 1783elif test "$cc" = gcc && \ 1784 (echo "Using gcc, eh? We'll try to force gcc -E using a wrapper..."; \ 1785 $wrapper <testcpp.c >testcpp.out 2>&1; \ 1786 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1) ; then 1787 echo "Yup, we can." 1788 cppstdin="$wrapper" 1789 cppminus=''; 1790elif echo 'Maybe "'"$cc"' -E" will work...'; \ 1791 $cc -E <testcpp.c >testcpp.out 2>&1; \ 1792 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then 1793 echo "Yup, it does." 1794 cppstdin="$cc -E" 1795 cppminus=''; 1796elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \ 1797 $cc -E - <testcpp.c >testcpp.out 2>&1; \ 1798 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then 1799 echo "Yup, it does." 1800 cppstdin="$cc -E" 1801 cppminus='-'; 1802elif echo 'No such luck, maybe "'$cpp'" will work...'; \ 1803 $cpp <testcpp.c >testcpp.out 2>&1; \ 1804 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then 1805 echo "It works!" 1806 cppstdin="$cpp" 1807 cppminus=''; 1808elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \ 1809 $cpp - <testcpp.c >testcpp.out 2>&1; \ 1810 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then 1811 echo "Hooray, it works! I was beginning to wonder." 1812 cppstdin="$cpp" 1813 cppminus='-'; 1814elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \ 1815 $wrapper <testcpp.c >testcpp.out 2>&1; \ 1816 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then 1817 cppstdin="$wrapper" 1818 cppminus='' 1819 echo "Eureka!." 1820elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \ 1821 $cc -P <testcpp.c >testcpp.out 2>&1; \ 1822 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then 1823 echo "Yipee, that works!" 1824 cppstdin="$cc -P" 1825 cppminus=''; 1826elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \ 1827 $cc -P - <testcpp.c >testcpp.out 2>&1; \ 1828 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then 1829 echo "At long last!" 1830 cppstdin="$cc -P" 1831 cppminus='-'; 1832else 1833 dflt=blurfl 1834 $echo $n "No dice. I can't find a C preprocessor. Name one: $c" 1835 rp='Name a C preprocessor:' 1836 . myread 1837 cppstdin="$ans" 1838 $cppstdin <testcpp.c >testcpp.out 2>&1 1839 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then 1840 echo "OK, that will do." 1841 else 1842 echo "Sorry, I can't get that to work. Go find one and rerun Configure." 1843 exit 1 1844 fi 1845fi 1846 1847: get list of predefined functions in a handy place 1848echo " " 1849case "$libc" in 1850'') libc=unknown;; 1851esac 1852case "$nm_opts" in 1853'') if test -f /mach_boot; then 1854 nm_opts='' 1855 elif test -d /usr/ccs/lib; then 1856 nm_opts='-p' 1857 else 1858 nm_opts='' 1859 fi 1860 ;; 1861esac 1862: on mips, we DO NOT want /lib, and we want inclPath/usr/lib 1863case "$libpth" in 1864'') if mips; then 1865 libpth='$inclPath/usr/lib /usr/local/lib' 1866 nm_opts="-B" 1867 else 1868 libpth='/usr/ccs/lib /lib /usr/lib /usr/ucblib /usr/local/lib' 1869 fi 1870 ;; 1871esac 1872case "$libs" in 1873*-lc_s*) libc=`./loc libc_s.a $libc $libpth` 1874esac 1875libnames=''; 1876case "$libs" in 1877'') ;; 1878*) for thislib in $libs; do 1879 case "$thislib" in 1880 -l*) thislib=`expr X$thislib : 'X-l\(.*\)'` 1881 try=`./loc lib$thislib.a blurfl/dyick $libpth` 1882 if test ! -f $try; then 1883 try=`./loc lib$thislib blurfl/dyick $libpth` 1884 if test ! -f $try; then 1885 try=`./loc $thislib blurfl/dyick $libpth` 1886 if test ! -f $try; then 1887 try=`./loc Slib$thislib.a blurfl/dyick $xlibpth` 1888 if test ! -f $try; then 1889 try='' 1890 fi 1891 fi 1892 fi 1893 fi 1894 libnames="$libnames $try" 1895 ;; 1896 *) libnames="$libnames $thislib" ;; 1897 esac 1898 done 1899 ;; 1900esac 1901set /usr/ccs/lib/libc.so 1902test -f $1 || set /usr/lib/libc.so 1903test -f $1 || set /usr/shlib/libc.so 1904test -f $1 || set /usr/lib/libc.so.[0-9]* 1905test -f $1 || set /lib/libsys_s.a 1906eval set \$$# 1907if test -f "$1"; then 1908 echo "Your (shared) C library seems to be in $1." 1909 libc="$1" 1910elif test -f "$libc"; then 1911 echo "Your C library seems to be in $libc." 1912elif test -f /lib/libc.a; then 1913 echo "Your C library seems to be in /lib/libc.a. You're normal." 1914 libc=/lib/libc.a 1915else 1916 if ans=`./loc libc.a blurfl/dyick $libpth`; test -f "$ans"; then 1917 : 1918 elif ans=`./loc libc blurfl/dyick $libpth`; test -f "$ans"; then 1919 libnames="$libnames "`./loc clib blurfl/dyick $libpth` 1920 elif ans=`./loc clib blurfl/dyick $libpth`; test -f "$ans"; then 1921 : 1922 elif ans=`./loc Slibc.a blurfl/dyick $xlibpth`; test -f "$ans"; then 1923 : 1924 elif ans=`./loc Mlibc.a blurfl/dyick $xlibpth`; test -f "$ans"; then 1925 : 1926 elif ans=`./loc Llibc.a blurfl/dyick $xlibpth`; test -f "$ans"; then 1927 : 1928 fi 1929 if test -f "$ans"; then 1930 echo "Your C library seems to be in $ans, of all places." 1931 libc=$ans 1932 else 1933 cat <<EOM 1934 1935I can't seem to find your C library. I've looked in the following places: 1936 1937 $libpth 1938 1939None of these seems to contain your C library. What is the full name 1940EOM 1941 dflt=None 1942 $echo $n "of your C library? $c" 1943 rp='C library full name?' 1944 . myread 1945 libc="$ans" 1946 fi 1947fi 1948echo " " 1949if test $libc = "/lib/libc"; then 1950 libc="$libc /lib/clib" 1951fi 1952cat <<END 1953 1954If the guess above is wrong (which it might be if you're using a strange 1955compiler, or your machine supports multiple models), you can override it here. 1956END 1957dflt="$libc"; 1958rp="Your C library is where? [$dflt]" 1959$echo $n "$rp $c" 1960. myread 1961libc="$ans" 1962echo " " 1963echo $libc $libnames | tr ' ' '\012' | sort | uniq >libnames 1964$echo "Extracting names from the following files for later perusal:" 1965sed 's/^/ /' libnames 1966echo $n "This may take a while...$c" 1967set X `cat libnames` 1968shift 1969nm $nm_opts $* 2>/dev/null >libc.tmp 1970$sed -n -e 's/^.* [ATDS] *[_.]*//p' -e 's/^.* [ATDS] //p' <libc.tmp >libc.list 1971if $contains '^printf$' libc.list >/dev/null 2>&1; then 1972 echo done 1973elif $sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p' \ 1974 <libc.tmp >libc.list; \ 1975 $contains '^printf$' libc.list >/dev/null 2>&1; then 1976 echo done 1977elif $sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p' <libc.tmp >libc.list; \ 1978 $contains '^printf$' libc.list >/dev/null 2>&1; then 1979 echo done 1980elif $sed -n -e 's/^.* D __*//p' -e 's/^.* D //p' <libc.tmp >libc.list; \ 1981 $contains '^printf$' libc.list >/dev/null 2>&1; then 1982 echo done 1983elif $sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p' \ 1984 <libc.tmp >libc.list; \ 1985 $contains '^printf$' libc.list >/dev/null 2>&1; then 1986 echo done 1987elif $grep '|' <libc.tmp | $sed -n -e '/|COMMON/d' -e '/|DATA/d' -e '/ file/d' \ 1988 -e 's/^\([^ ]*\).*/\1/p' >libc.list 1989 $contains '^printf$' libc.list >/dev/null 2>&1; then 1990 echo done 1991elif $sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p' \ 1992 <libc.tmp >libc.list; \ 1993 $contains '^printf$' libc.list >/dev/null 2>&1; then 1994 echo done 1995elif $sed -n -e 's/^[ ]*[0-9][0-9a-f]*[ ]*Def. Text[ ]*//p' \ 1996 < libc.tmp | $sed -e 's/\[.*\]//' > libc.list; \ 1997 $contains '^printf$' libc.list >/dev/null 2>&1; then 1998 echo done 1999else 2000 nm -p $* 2>/dev/null >libc.tmp 2001 $sed -n -e 's/^.* [AT] *_[_.]*//p' -e 's/^.* [AT] //p' <libc.tmp >libc.list 2002 if $contains '^printf$' libc.list >/dev/null 2>&1; then 2003 nm_opts='-p' 2004 echo "done" 2005 else 2006 echo " " 2007 echo "nm didn't seem to work right." 2008 echo "Trying ar instead..." 2009 if ar t $libc > libc.tmp; then 2010 for thisname in $libnames; do 2011 ar t $thisname >>libc.tmp 2012 done 2013 $sed -e 's/\.o$//' < libc.tmp > libc.list 2014 echo "Ok." 2015 else 2016 echo "ar didn't seem to work right." 2017 echo "Maybe this is a Cray...trying bld instead..." 2018 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list; then 2019 for thisname in $libnames; do 2020 bld t $libnames | \ 2021 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list 2022 ar t $thisname >>libc.tmp 2023 done 2024 echo "Ok." 2025 else 2026 echo "That didn't work either. Giving up." 2027 exit 1 2028 fi 2029 fi 2030 fi 2031fi 2032if test -f /lib/syscalls.exp; then 2033 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." 2034 sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list 2035fi 2036 2037inlibc='echo " "; td=$define; tu=$undef; 2038if $contains "^$1\$" libc.list >/dev/null 2>&1; 2039then echo "$1() found"; 2040 eval "case \"\$$2\" in undef) . whoa; esac"; eval "$2=\$td"; 2041else echo "$1() NOT found"; 2042 eval "case \"\$$2\" in define) . whoa; esac"; eval "$2=\$tu"; fi' 2043 2044: see if bcmp exists 2045set bcmp d_bcmp 2046eval $inlibc 2047 2048: see if bcopy exists 2049set bcopy d_bcopy 2050eval $inlibc 2051 2052case "$d_safebcpy" in 2053'') 2054 : assume the worst 2055 d_safebcpy=undef 2056 case "$d_bcopy" in 2057 define) 2058 echo "Checking to see if your bcopy() can do overlapping copies..." 2059 $cat >safebcpy.c <<'EOCP' 2060main() 2061{ 2062 char buf[128]; 2063 register char *b; 2064 register int len; 2065 register int off; 2066 register int align; 2067 2068 for (align = 7; align >= 0; align--) { 2069 for (len = 36; len; len--) { 2070 b = buf+align; 2071 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", b, len); 2072 for (off = 1; off <= len; off++) { 2073 bcopy(b, b+off, len); 2074 bcopy(b+off, b, len); 2075 if (bcmp(b, "abcdefghijklmnopqrstuvwxyz0123456789", len)) 2076 exit(1); 2077 } 2078 } 2079 } 2080 exit(0); 2081} 2082EOCP 2083 if $cc safebcpy.c -o safebcpy $ccflags $libs >/dev/null 2>&1 ; then 2084 if ./safebcpy; then 2085 echo "It can." 2086 d_safebcpy=define 2087 else 2088 echo "It can't." 2089 fi 2090 else 2091 echo "(I can't compile the test program, so we'll assume not...)" 2092 fi 2093 ;; 2094 esac 2095 ;; 2096esac 2097 2098: see if bzero exists 2099set bzero d_bzero 2100eval $inlibc 2101 2102: see if sprintf is declared as int or pointer to char 2103echo " " 2104cat >ucbsprf.c <<'EOF' 2105#include <stdio.h> 2106main() 2107{ 2108 int sprintf(); 2109 char buf[10]; 2110 exit((unsigned long)sprintf(buf,"%s","foo") > 10L); 2111} 2112EOF 2113if $cc $ccflags ucbsprf.c -o ucbsprf >/dev/null 2>&1 && ./ucbsprf; then 2114 echo "Your sprintf() returns (int)." 2115 val="$undef" 2116else 2117 echo "Your sprintf() returns (char*)." 2118 val="$define" 2119fi 2120set d_charsprf 2121eval $setvar 2122 2123: see if vprintf exists 2124echo " " 2125if $contains '^vprintf$' libc.list >/dev/null 2>&1; then 2126 echo 'vprintf() found.' 2127 val="$define" 2128 cat >vprintf.c <<'EOF' 2129#include <varargs.h> 2130 2131main() { xxx("foo"); } 2132 2133xxx(va_alist) 2134va_dcl 2135{ 2136 va_list args; 2137 char buf[10]; 2138 2139 va_start(args); 2140 exit((unsigned long)vsprintf(buf,"%s",args) > 10L); 2141} 2142EOF 2143 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then 2144 echo "Your vsprintf() returns (int)." 2145 val2="$undef" 2146 else 2147 echo "Your vsprintf() returns (char*)." 2148 val2="$define" 2149 fi 2150else 2151 echo 'vprintf() NOT found.' 2152 val="$undef" 2153 val2="$undef" 2154fi 2155set d_vprintf 2156eval $setvar 2157val=$val2 2158set d_charvspr 2159eval $setvar 2160 2161: see if chsize exists 2162set chsize d_chsize 2163eval $inlibc 2164 2165: see if crypt exists 2166echo " " 2167if $contains '^crypt$' libc.list >/dev/null 2>&1; then 2168 echo 'crypt() found.' 2169 val="$define" 2170 cryptlib='' 2171else 2172 cryptlib=`./loc Slibcrypt.a "" $xlibpth` 2173 if $test -z "$cryptlib"; then 2174 cryptlib=`./loc Mlibcrypt.a "" $xlibpth` 2175 else 2176 cryptlib=-lcrypt 2177 fi 2178 if $test -z "$cryptlib"; then 2179 cryptlib=`./loc Llibcrypt.a "" $xlibpth` 2180 else 2181 cryptlib=-lcrypt 2182 fi 2183 if $test -z "$cryptlib"; then 2184 cryptlib=`./loc libcrypt.a "" $libpth` 2185 else 2186 cryptlib=-lcrypt 2187 fi 2188 if $test -z "$cryptlib"; then 2189 echo 'crypt() NOT found.' 2190 val="$undef" 2191 else 2192 val="$define" 2193 fi 2194fi 2195set d_crypt 2196eval $setvar 2197 2198: get csh whereabouts 2199case "$csh" in 2200'csh') val="$undef" ;; 2201*) val="$define" ;; 2202esac 2203set d_csh 2204eval $setvar 2205 2206: see if readdir exists 2207set readdir d_readdir 2208eval $inlibc 2209 2210: see if there are directory access routines out there 2211echo " " 2212xxx=`./loc ndir.h x $usrinclude /usr/local/include $inclwanted` 2213case "$xxx" in 2214x) 2215 xxx=`./loc sys/ndir.h x $usrinclude /usr/local/include $inclwanted` 2216 ;; 2217esac 2218D_dirnamlen="$undef" 2219I_dirent="$undef" 2220I_sys_dir="$undef" 2221I_my_dir="$undef" 2222I_ndir="$undef" 2223I_sys_ndir="$undef" 2224libndir='' 2225ndirc='' 2226ndiro='' 2227if $test -r $usrinclude/dirent.h; then 2228 echo "dirent.h found." 2229 if $contains 'd_namlen' $usrinclude/dirent.h >/dev/null 2>&1; then 2230 D_dirnamlen="$define" 2231 fi 2232 I_dirent="$define" 2233elif $test -r $xxx; then 2234 echo "You seem to use <$xxx>," 2235 if $test "$d_readdir" = "$define"; then 2236 echo "and I can get readdir() from your C library." 2237 elif $test -r /usr/lib/libndir.a || $test -r /usr/local/lib/libndir.a; then 2238 echo "and I'll get the routines using -lndir ." 2239 libndir='-lndir' 2240 else 2241 ans=`./loc libndir.a x $libpth` 2242 case "$ans" in 2243 x) 2244 echo "but I can't find the ndir library!" 2245 ;; 2246 *) 2247 echo "and I found the directory library in $ans." 2248 libndir="$ans" 2249 ;; 2250 esac 2251 fi 2252 if $contains 'd_namlen' $xxx >/dev/null 2>&1; then 2253 D_dirnamlen="$define" 2254 fi 2255 case "$xxx" in 2256 sys/) 2257 I_sys_ndir="$define" 2258 ;; 2259 *) 2260 I_ndir="$define" 2261 ;; 2262 esac 2263else 2264 : The next line used to require this to be a bsd system. 2265 if $contains '^readdir$' libc.list >/dev/null 2>&1 ; then 2266 echo "No ndir library found, but you have readdir() so we'll use that." 2267 if $contains 'd_namlen' $usrinclude/sys/dir.h >/dev/null 2>&1; then 2268 D_dirnamlen="$define" 2269 fi 2270 I_sys_dir="$define" 2271 else 2272 echo "No ndir library found--using ./$d_ndir.c." 2273: This will lose since $d_ndir.h is in another directory. 2274: I doubt we can rely on it being in ../$d_ndir.h . 2275: At least it will fail in a conservative manner. 2276 if $contains 'd_namlen' $d_ndir.h >/dev/null 2>&1; then 2277 D_dirnamlen="$define" 2278 fi 2279 I_my_dir="$define" 2280 ndirc="$d_ndir.c" 2281 ndiro="$d_ndir.o" 2282 fi 2283fi 2284val=$D_dirnamlen; set d_dirnamlen; eval $setvar 2285val=$I_dirent; set i_dirent; eval $setvar 2286val=$I_sys_dir; set i_sys_dir; eval $setvar 2287val=$I_my_dir; set i_my_dir; eval $setvar 2288val=$I_ndir; set i_ndir; eval $setvar 2289val=$I_sys_ndir; set i_sys_ndir; eval $setvar 2290 2291: now see if they want to do setuid emulation 2292case "$d_dosuid" in 2293'') dflt=n;; 2294*undef*) dflt=n;; 2295*) dflt=y;; 2296esac 2297cat <<EOM 2298 2299Some sites have disabled setuid #! scripts because of a bug in the kernel 2300that prevents them from being secure. If you are on such a system, the 2301setuid/setgid bits on scripts are currently useless. It is possible for 2302$package to detect those bits and emulate setuid/setgid in a secure fashion 2303until a better solution is devised for the kernel problem. 2304 2305EOM 2306rp="Do you want to do setuid/setgid emulation? [$dflt]" 2307$echo $n "$rp $c" 2308. myread 2309case "$ans" in 2310'') $ans="$dflt";; 2311esac 2312case "$ans" in 2313y*) d_dosuid="$define";; 2314*) d_dosuid="$undef";; 2315esac 2316 2317: see if dup2 exists 2318set dup2 d_dup2 2319eval $inlibc 2320 2321: see if fchmod exists 2322set fchmod d_fchmod 2323eval $inlibc 2324 2325: see if fchown exists 2326set fchown d_fchown 2327eval $inlibc 2328 2329: see if this is an fcntl system 2330set fcntl d_fcntl 2331eval $inlibc 2332 2333: see if we can have long filenames 2334echo " " 2335rm -f 123456789abcde 2336if (echo hi >123456789abcdef) 2>/dev/null; then 2337 : not version 8 2338 if test -f 123456789abcde; then 2339 echo 'You cannot have filenames longer than 14 characters. Sigh.' 2340 val="$undef" 2341 else 2342 echo 'You can have filenames longer than 14 characters.' 2343 val="$define" 2344 fi 2345else 2346 : version 8 probably 2347 echo "You can't have filenames longer than 14 chars. You can't even think about them!" 2348 val="$undef" 2349fi 2350set d_flexfnam 2351eval $setvar 2352 2353: see if flock exists 2354set flock d_flock 2355eval $inlibc 2356 2357: see if getgroups exists 2358set getgroups d_getgrps 2359eval $inlibc 2360 2361: see if gethostent exists 2362set gethostent d_gethent 2363eval $inlibc 2364 2365: see if getpgrp exists 2366set getpgrp d_getpgrp 2367eval $inlibc 2368 2369: see if getpgrp2 exists 2370set getpgrp2 d_getpgrp2 2371eval $inlibc 2372 2373: see if getpriority exists 2374set getpriority d_getprior 2375eval $inlibc 2376 2377: see if htonl exists 2378set htonl d_htonl 2379eval $inlibc 2380 2381: index or strcpy 2382echo " " 2383case "$d_index" in 2384undef) dflt=y;; 2385define) dflt=n;; 2386*) if $test -f /unix; then 2387 dflt=n 2388 else 2389 dflt=y 2390 fi 2391 ;; 2392esac 2393if $contains '^index$' libc.list >/dev/null 2>&1 ; then 2394 if $contains '^strchr$' libc.list >/dev/null 2>&1 ; then 2395 echo "Your system has both index() and strchr(). Shall I use" 2396 rp="index() rather than strchr()? [$dflt]" 2397 $echo $n "$rp $c" 2398 . myread 2399 case "$ans" in 2400 n*) d_index="$define" ;; 2401 *) d_index="$undef" ;; 2402 esac 2403 else 2404 d_index="$undef" 2405 echo "index() found." 2406 fi 2407else 2408 if $contains '^strchr$' libc.list >/dev/null 2>&1 ; then 2409 d_index="$define" 2410 echo "strchr() found." 2411 else 2412 echo "No index() or strchr() found!" 2413 d_index="$undef" 2414 fi 2415fi 2416 2417: see if isascii exists 2418set isascii d_isascii 2419eval $inlibc 2420 2421: see if killpg exists 2422set killpg d_killpg 2423eval $inlibc 2424 2425: see if lstat exists 2426set lstat d_lstat 2427eval $inlibc 2428 2429: see if memcmp exists 2430set memcmp d_memcmp 2431eval $inlibc 2432 2433: see if memcpy exists 2434set memcpy d_memcpy 2435eval $inlibc 2436 2437case "$d_safemcpy" in 2438'') 2439 : assume the worst 2440 d_safemcpy=undef 2441 case "$d_memcpy" in 2442 define) 2443 echo "Checking to see if your memcpy() can do overlapping copies..." 2444 $cat >safemcpy.c <<'EOCP' 2445main() 2446{ 2447 char buf[128]; 2448 register char *b; 2449 register int len; 2450 register int off; 2451 register int align; 2452 2453 for (align = 7; align >= 0; align--) { 2454 for (len = 36; len; len--) { 2455 b = buf+align; 2456 memcpy(b,"abcdefghijklmnopqrstuvwxyz0123456789", len); 2457 for (off = 1; off <= len; off++) { 2458 memcpy(b+off, b, len); 2459 memcpy(b, b+off, len); 2460 if (memcmp(b, "abcdefghijklmnopqrstuvwxyz0123456789", len)) 2461 exit(1); 2462 } 2463 } 2464 } 2465 exit(0); 2466} 2467EOCP 2468 if $cc safemcpy.c -o safemcpy $ccflags $libs >/dev/null 2>&1 ; then 2469 if ./safemcpy; then 2470 echo "It can." 2471 d_safemcpy=define 2472 else 2473 echo "It can't." 2474 fi 2475 else 2476 echo "(I can't compile the test program, so we'll assume not...)" 2477 fi 2478 ;; 2479 esac 2480 ;; 2481esac 2482 2483: see if memmove exists 2484set memmove d_memmove 2485eval $inlibc 2486 2487: see if memset exists 2488set memset d_memset 2489eval $inlibc 2490 2491: see if mkdir exists 2492set mkdir d_mkdir 2493eval $inlibc 2494 2495: see if msgctl exists 2496set msgctl d_msgctl 2497eval $inlibc 2498 2499: see if msgget exists 2500set msgget d_msgget 2501eval $inlibc 2502 2503: see if msgsnd exists 2504set msgsnd d_msgsnd 2505eval $inlibc 2506 2507: see if msgrcv exists 2508set msgrcv d_msgrcv 2509eval $inlibc 2510 2511: see how much of the 'msg*(2)' library is present. 2512h_msg=true 2513echo " " 2514case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in 2515*undef*) h_msg=false;; 2516esac 2517: we could also check for sys/ipc.h ... 2518if $h_msg && $test -r $usrinclude/sys/msg.h; then 2519 echo "You have the full msg*(2) library." 2520 val="$define" 2521else 2522 echo "You don't have the full msg*(2) library." 2523 val="$undef" 2524fi 2525set d_msg 2526eval $setvar 2527 2528: determine which malloc to compile in 2529echo " " 2530case "$d_mymalloc" in 2531'') 2532 case "$usemymalloc" in 2533 '') 2534 if bsd || v7; then 2535 dflt='y' 2536 else 2537 dflt='n' 2538 fi 2539 ;; 2540 n*) dflt=n;; 2541 *) dflt=y;; 2542 esac 2543 ;; 2544define) dflt="y" 2545 ;; 2546*) dflt="n" 2547 ;; 2548esac 2549rp="Do you wish to attempt to use the malloc that comes with $package? [$dflt]" 2550$echo $n "$rp $c" 2551. myread 2552case "$ans" in 2553'') ans=$dflt;; 2554esac 2555case "$ans" in 2556y*) mallocsrc='malloc.c'; mallocobj='malloc.o' 2557 libs=`echo $libs | sed 's/-lmalloc//'` 2558 val="$define" 2559 case "$mallocptrtype" in 2560 '') 2561 cat >usemymalloc.c <<'END' 2562#ifdef __STDC__ 2563#include <stdlib.h> 2564#else 2565#include <malloc.h> 2566#endif 2567void *malloc(); 2568END 2569 if $cc $ccflags -c usemymalloc.c >/dev/null 2>&1; then 2570 mallocptrtype=void 2571 else 2572 mallocptrtype=char 2573 fi 2574 ;; 2575 esac 2576 echo " " 2577 echo "Your system wants malloc to return $mallocptrtype*, it would seem." 2578 ;; 2579*) mallocsrc=''; 2580 mallocobj=''; 2581 mallocptrtype=void 2582 val="$undef" 2583 ;; 2584esac 2585set d_mymalloc 2586eval $setvar 2587 2588: see if ndbm is available 2589echo " " 2590xxx=`./loc ndbm.h x $usrinclude /usr/local/include $inclwanted` 2591if test -f $xxx; then 2592 val="$define" 2593 echo "ndbm.h found." 2594else 2595 val="$undef" 2596 echo "ndbm.h NOT found." 2597fi 2598set d_ndbm 2599eval $setvar 2600 2601: see if we have the old dbm 2602echo " " 2603xxx=`./loc dbm.h x $usrinclude /usr/local/include $inclwanted` 2604if test -f $xxx; then 2605 val="$define" 2606 echo "dbm.h found." 2607else 2608 val="$undef" 2609 echo "dbm.h NOT found." 2610fi 2611set d_odbm 2612eval $setvar 2613 2614: see whether socket exists 2615echo " " 2616socketlib='' 2617if $contains socket libc.list >/dev/null 2>&1; then 2618 echo "Looks like you have Berkeley networking support." 2619 val="$define" 2620 : now check for advanced features 2621 if $contains setsockopt libc.list >/dev/null 2>&1; then 2622 val2="$undef" 2623 else 2624 echo "...but it uses the old 4.1c interface, rather than 4.2" 2625 val2="$define" 2626 fi 2627else 2628 : hpux, for one, puts all the socket stuff in socklib.o 2629 if $contains socklib libc.list >/dev/null 2>&1; then 2630 echo "Looks like you have Berkeley networking support." 2631 val="$define" 2632 : we will have to assume that it supports the 4.2 BSD interface 2633 val2="$undef" 2634 else 2635 echo "Hmmm...you don't have Berkeley networking in libc.a..." 2636 : look for an optional networking library 2637 if test -f /usr/lib/libnet.a; then 2638 (ar t /usr/lib/libnet.a || 2639 nm -g /usr/lib/libnet.a) 2>/dev/null >> libc.list 2640 if $contains socket libc.list >/dev/null 2>&1; then 2641 echo "but the Wollongong group seems to have hacked it in." 2642 socketlib="-lnet -lnsl_s" 2643 val="$define" 2644 : now check for advanced features 2645 if $contains setsockopt libc.list >/dev/null 2>&1; then 2646 val2="$undef" 2647 else 2648 echo "...using the old 4.1c interface, rather than 4.2" 2649 val2="$define" 2650 fi 2651 else 2652 echo "or even in libnet.a, which is peculiar." 2653 val="$undef" 2654 val2="$undef" 2655 fi 2656 else 2657 echo "or anywhere else I see." 2658 val="$undef" 2659 val2="$undef" 2660 fi 2661 fi 2662fi 2663set d_socket 2664eval $setvar 2665 2666if $contains socketpair libc.list >/dev/null 2>&1; then 2667 val="$define" 2668else 2669 val="$undef" 2670fi 2671set d_sockpair 2672eval $setvar 2673val=$val2 2674set d_oldsock 2675eval $setvar 2676 2677: Locate the flags for 'open()' 2678echo " " 2679$cat >open3.c <<'EOCP' 2680#include <sys/types.h> 2681#ifdef I_FCNTL 2682#include <fcntl.h> 2683#endif 2684#ifdef I_SYS_FILE 2685#include <sys/file.h> 2686#endif 2687main() { 2688 2689 if(O_RDONLY); 2690 2691#ifdef O_TRUNC 2692 exit(0); 2693#else 2694 exit(1); 2695#endif 2696} 2697EOCP 2698: check sys/file.h first to get FREAD on Sun 2699if $test -r $usrinclude/sys/file.h && \ 2700 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then 2701 h_sys_file=true; 2702 echo "sys/file.h defines the O_* constants..." 2703 if ./open3; then 2704 echo "and you have the 3 argument form of open()." 2705 val="$define" 2706 else 2707 echo "but not the 3 argument form of open(). Oh, well." 2708 val="$undef" 2709 fi 2710elif $test -r $usrinclude/fcntl.h && \ 2711 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then 2712 h_fcntl=true; 2713 echo "fcntl.h defines the O_* constants..." 2714 if ./open3; then 2715 echo "and you have the 3 argument form of open()." 2716 val="$define" 2717 else 2718 echo "but not the 3 argument form of open(). Oh, well." 2719 val="$undef" 2720 fi 2721else 2722 val="$undef" 2723 echo "I can't find the O_* constant definitions! You got problems." 2724fi 2725set d_open3 2726eval $setvar 2727 2728: see if how pwd stuff is defined 2729echo " " 2730if $test -r $usrinclude/pwd.h ; then 2731 i_pwd="$define" 2732 echo "pwd.h found." 2733 $cppstdin $cppflags $cppminus <$usrinclude/pwd.h | \ 2734 sed -n '/struct[ ][ ]*passwd/,/^};/p' >pwd.txt 2735 if $contains 'pw_quota' pwd.txt >/dev/null 2>&1; then 2736 d_pwquota="$define" 2737 else 2738 d_pwquota="$undef" 2739 fi 2740 if $contains 'pw_age' pwd.txt >/dev/null 2>&1; then 2741 d_pwage="$define" 2742 else 2743 d_pwage="$undef" 2744 fi 2745 if $contains 'pw_change' pwd.txt >/dev/null 2>&1; then 2746 d_pwchange="$define" 2747 else 2748 d_pwchange="$undef" 2749 fi 2750 if $contains 'pw_class' pwd.txt >/dev/null 2>&1; then 2751 d_pwclass="$define" 2752 else 2753 d_pwclass="$undef" 2754 fi 2755 if $contains 'pw_expire' pwd.txt >/dev/null 2>&1; then 2756 d_pwexpire="$define" 2757 else 2758 d_pwexpire="$undef" 2759 fi 2760 if $contains 'pw_comment' pwd.txt >/dev/null 2>&1; then 2761 d_pwcomment="$define" 2762 else 2763 d_pwcomment="$undef" 2764 fi 2765else 2766 i_pwd="$undef" 2767 d_pwquota="$undef" 2768 d_pwage="$undef" 2769 d_pwchange="$undef" 2770 d_pwclass="$undef" 2771 d_pwexpire="$undef" 2772 d_pwcomment="$undef" 2773 echo "No pwd.h found." 2774fi 2775 2776: see if rename exists 2777set rename d_rename 2778eval $inlibc 2779 2780: see if rewindir exists 2781set rewinddir d_rewindir 2782eval $inlibc 2783 2784: see if rmdir exists 2785set rmdir d_rmdir 2786eval $inlibc 2787 2788: see if seekdir exists 2789set seekdir d_seekdir 2790eval $inlibc 2791 2792: see if select exists 2793set select d_select 2794eval $inlibc 2795 2796: see if semctl exists 2797set semctl d_semctl 2798eval $inlibc 2799 2800: see if semget exists 2801set semget d_semget 2802eval $inlibc 2803 2804: see if semop exists 2805set semop d_semop 2806eval $inlibc 2807 2808: see how much of the 'sem*(2)' library is present. 2809h_sem=true 2810echo " " 2811case "$d_semctl$d_semget$d_semop" in 2812*undef*) h_sem=false;; 2813esac 2814: we could also check for sys/ipc.h ... 2815if $h_sem && $test -r $usrinclude/sys/sem.h; then 2816 echo "You have the full sem*(2) library." 2817 val="$define" 2818else 2819 echo "You don't have the full sem*(2) library." 2820 val="$undef" 2821fi 2822set d_sem 2823eval $setvar 2824 2825: see if setegid exists 2826set setegid d_setegid 2827eval $inlibc 2828 2829: see if seteuid exists 2830set seteuid d_seteuid 2831eval $inlibc 2832 2833: see if setpgrp exists 2834set setpgrp d_setpgrp 2835eval $inlibc 2836 2837: see if setpgrp2 exists 2838set setpgrp2 d_setpgrp2 2839eval $inlibc 2840 2841: see if setpriority exists 2842set setpriority d_setprior 2843eval $inlibc 2844 2845: see if setregid exists 2846set setregid d_setregid 2847eval $inlibc 2848set setresgid d_setresgid 2849eval $inlibc 2850 2851: see if setreuid exists 2852set setreuid d_setreuid 2853eval $inlibc 2854set setresuid d_setresuid 2855eval $inlibc 2856 2857: see if setrgid exists 2858set setrgid d_setrgid 2859eval $inlibc 2860 2861: see if setruid exists 2862set setruid d_setruid 2863eval $inlibc 2864 2865: see if shmctl exists 2866set shmctl d_shmctl 2867eval $inlibc 2868 2869: see if shmget exists 2870set shmget d_shmget 2871eval $inlibc 2872 2873: see if shmat exists 2874set shmat d_shmat 2875eval $inlibc 2876 2877d_voidshmat="$undef" 2878case "$d_shmat" in 2879define) 2880 $cppstdin $cppflags $cppminus < $usrinclude/sys/shm.h >voidshmat.txt 2>/dev/null 2881 if $contains "void.*shmat" voidshmat.txt >/dev/null 2>&1; then 2882 echo "and shmat returns (void*)" 2883 d_voidshmat="$define" 2884 else 2885 echo "and shmat returns (char*)" 2886 fi 2887 ;; 2888esac 2889 2890: see if shmdt exists 2891set shmdt d_shmdt 2892eval $inlibc 2893 2894: see how much of the 'shm*(2)' library is present. 2895h_shm=true 2896echo " " 2897case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in 2898*undef*) h_shm=false;; 2899esac 2900: we could also check for sys/ipc.h ... 2901if $h_shm && $test -r $usrinclude/sys/shm.h; then 2902 echo "You have the full shm*(2) library." 2903 val="$define" 2904else 2905 echo "You don't have the full shm*(2) library." 2906 val="$undef" 2907fi 2908set d_shm 2909eval $setvar 2910 2911: see if stat knows about block sizes 2912echo " " 2913if $contains 'st_blocks;' $usrinclude/sys/stat.h >/dev/null 2>&1 ; then 2914 if $contains 'st_blksize;' $usrinclude/sys/stat.h >/dev/null 2>&1 ; then 2915 echo "Your stat knows about block sizes." 2916 val="$define" 2917 else 2918 echo "Your stat doesn't know about block sizes." 2919 val="$undef" 2920 fi 2921else 2922 echo "Your stat doesn't know about block sizes." 2923 val="$undef" 2924fi 2925set d_statblks 2926eval $setvar 2927 2928: see if stdio is really std 2929echo " " 2930if $contains 'char.*_ptr.*;' $usrinclude/stdio.h >/dev/null 2>&1 ; then 2931 if $contains '_cnt;' $usrinclude/stdio.h >/dev/null 2>&1 ; then 2932 echo "Your stdio is pretty std." 2933 val="$define" 2934 else 2935 echo "Your stdio isn't very std." 2936 val="$undef" 2937 fi 2938else 2939 echo "Your stdio isn't very std." 2940 val="$undef" 2941fi 2942set d_stdstdio 2943eval $setvar 2944 2945: check for structure copying 2946echo " " 2947echo "Checking to see if your C compiler can copy structs..." 2948$cat >strctcpy.c <<'EOCP' 2949main() 2950{ 2951 struct blurfl { 2952 int dyick; 2953 } foo, bar; 2954 2955 foo = bar; 2956} 2957EOCP 2958if $cc -c strctcpy.c >/dev/null 2>&1 ; then 2959 val="$define" 2960 echo "Yup, it can." 2961else 2962 val="$undef" 2963 echo "Nope, it can't." 2964fi 2965set d_strctcpy 2966eval $setvar 2967 2968: see if strerror exists 2969set strerror d_strerror 2970eval $inlibc 2971 2972: see if symlink exists 2973set symlink d_symlink 2974eval $inlibc 2975 2976: see if syscall exists 2977set syscall d_syscall 2978eval $inlibc 2979 2980: set if package uses struct tm 2981w_s_tm=1 2982 2983: set if package uses struct timeval 2984case "$d_select" in 2985define) w_s_timevl=1 ;; 2986esac 2987 2988: set if package uses localtime function 2989w_localtim=1 2990 2991: see which of time.h, sys/time.h, and sys/select should be included. 2992idefs='' 2993cat <<'EOM' 2994 2995Testing to see which of <time.h>, <sys/time.h>, and <sys/select.h> 2996should be included, because this application wants: 2997 2998EOM 2999case "$w_s_itimer" in 30001) 3001 echo " struct itimerval" 3002 idefs="-DS_ITIMERVAL $idefs" 3003 ;; 3004esac 3005case "$w_s_timevl" in 30061) 3007 echo " struct timeval" 3008 idefs="-DS_TIMEVAL $idefs" 3009 ;; 3010esac 3011case "$w_s_tm" in 30121) 3013 echo " struct tm" 3014 idefs="-DS_TM $idefs" 3015 ;; 3016esac 3017case "$w_localtim" in 30181) 3019 echo " ctime(3) declarations" 3020 idefs="-DD_CTIME $idefs" 3021 ;; 3022esac 3023case "$idefs" in 3024'') 3025 echo " (something I don't know about)" 3026 ;; 3027esac 3028echo " " 3029echo "I'm now running the test program..." 3030$cat >i_time.c <<'EOCP' 3031#include <sys/types.h> 3032#ifdef I_TIME 3033#include <time.h> 3034#endif 3035#ifdef I_SYS_TIME 3036#ifdef SYSTIMEKERNEL 3037#define KERNEL 3038#endif 3039#include <sys/time.h> 3040#endif 3041#ifdef I_SYS_SELECT 3042#include <sys/select.h> 3043#endif 3044main() 3045{ 3046 struct tm foo; 3047 struct tm *tmp; 3048#ifdef S_TIMEVAL 3049 struct timeval bar; 3050#endif 3051#ifdef S_ITIMERVAL 3052 struct itimerval baz; 3053#endif 3054 3055 if (foo.tm_sec == foo.tm_sec) 3056 exit(0); 3057#ifdef S_TIMEVAL 3058 if (bar.tv_sec == bar.tv_sec) 3059 exit(0); 3060#endif 3061#ifdef S_ITIMERVAL 3062 if (baz.it_interval == baz.it_interval) 3063 exit(0); 3064#endif 3065#ifdef S_TIMEVAL 3066 if (bar.tv_sec == bar.tv_sec) 3067 exit(0); 3068#endif 3069#ifdef D_CTIME 3070 /* this might not do anything for us... */ 3071 tmp = localtime((time_t *)0); 3072#endif 3073 exit(1); 3074} 3075EOCP 3076flags='' 3077for i_sys_select in '' '-DI_SYS_SELECT'; do 3078 for d_systimekernel in '' '-DSYSTIMEKERNEL'; do 3079 for i_time in '' '-DI_TIME'; do 3080 for i_systime in '-DI_SYS_TIME' ''; do 3081 case "$flags" in 3082 '') echo Trying $i_time $i_systime $d_systimekernel $i_sys_select 3083 if $cc $ccflags $idefs \ 3084 $i_time $i_systime $d_systimekernel $i_sys_select \ 3085 i_time.c -o i_time >/dev/null 2>&1 ; then 3086 set X $i_time $i_systime $d_systimekernel $i_sys_select 3087 shift 3088 flags="$*" 3089 echo Succeeded with $flags 3090 fi 3091 ;; 3092 esac 3093 done 3094 done 3095 done 3096done 3097case "$flags" in 3098*SYSTIMEKERNEL*) val="$define";; 3099*) val="$undef";; 3100esac 3101set d_systimekernel 3102eval $setvar 3103case "$flags" in 3104*I_TIME*) val="$define";; 3105*) val="$undef";; 3106esac 3107set i_time 3108eval $setvar 3109case "$flags" in 3110*I_SYS_SELECT*) val="$define";; 3111*) val="$undef";; 3112esac 3113set i_sys_select 3114eval $setvar 3115case "$flags" in 3116*I_SYS_TIME*) val="$define";; 3117*) val="$undef";; 3118esac 3119set i_sys_time 3120eval $setvar 3121case "$flags$i_sys_time$i_time" in 3122undefundef) i_sys_time="$define"; i_time="$define"; 3123 echo "ICK, NOTHING WORKED!!! You may have to diddle the includes.";; 3124esac 3125 3126: see if telldir exists 3127set telldir d_telldir 3128eval $inlibc 3129 3130: see if signal is declared as pointer to function returning int or void 3131echo " " 3132$cppstdin $cppflags $cppminus < $usrinclude/signal.h >d_voidsig.txt 3133if $contains 'int[^A-Za-z]*signal' d_voidsig.txt >/dev/null 2>&1 ; then 3134 echo "You have int (*signal())() instead of void." 3135 val="$undef" 3136else 3137 echo "You have void (*signal())() instead of int." 3138 val="$define" 3139fi 3140set d_voidsig 3141eval $setvar 3142case $voidsig in 3143define) d_tosignal=void;; 3144*) d_tosignal=int;; 3145esac 3146 3147: see if truncate exists 3148set truncate d_truncate 3149eval $inlibc 3150 3151: see if there is a vfork 3152set vfork d_vfork 3153eval $inlibc 3154 3155: check for volatile keyword 3156echo " " 3157echo 'Checking to see if your C compiler knows about "volatile"...' 3158$cat >try.c <<'EOCP' 3159main() 3160{ 3161 typedef unsigned short foo_t; 3162 char *volatile foo; 3163 volatile int bar; 3164 volatile foo_t blech; 3165 foo = foo; 3166} 3167EOCP 3168if $cc -c $ccflags try.c >/dev/null 2>&1 ; then 3169 val="$define" 3170 echo "Yup, it does." 3171else 3172 val="$undef" 3173 echo "Nope, it doesn't." 3174fi 3175set d_volatile 3176eval $setvar 3177$rm -f try.* 3178 3179: see if there is a wait4 3180set wait4 d_wait4 3181eval $inlibc 3182 3183: see if there is a waitpid 3184set waitpid d_waitpid 3185eval $inlibc 3186 3187: see what type gids are declared as in the kernel 3188case "$gidtype" in 3189'') 3190 if $contains 'gid_t;' $usrinclude/sys/types.h >/dev/null 2>&1 ; then 3191 dflt='gid_t'; 3192 else 3193 set `grep '_rgid;' $usrinclude/sys/user.h 2>/dev/null` unsigned short 3194 case $1 in 3195 unsigned) dflt="$1 $2" ;; 3196 *) dflt="$1" ;; 3197 esac 3198 fi 3199 ;; 3200*) dflt="$gidtype" 3201 ;; 3202esac 3203cont=true 3204echo " " 3205rp="What type are groups ids returned by getgid(), etc.? [$dflt]" 3206$echo $n "$rp $c" 3207. myread 3208gidtype="$ans" 3209 3210: see what type gids are returned by getgroups 3211echo " " 3212case "$groupstype" in 3213'') 3214 if $contains 'getgroups.*short' /usr/lib/lint/llib-lc >/dev/null 2>&1; then 3215 dflt='short' 3216 elif $contains 'getgroups.*int' /usr/lib/lint/llib-lc >/dev/null 2>&1; then 3217 dflt='int' 3218 elif $contains 'getgroups.*short' /usr/include/libc.h >/dev/null 2>&1; then 3219 dflt='short' 3220 elif $contains 'getgroups.*int' /usr/include/libc.h >/dev/null 2>&1; then 3221 dflt='int' 3222 elif $contains 'getgroups.*short' /usr/lib/lint/llib-lbsd >/dev/null 2>&1; then 3223 dflt='short' 3224 elif $contains 'getgroups.*int' /usr/lib/lint/llib-lbsd >/dev/null 2>&1; then 3225 dflt='int' 3226 elif $contains 'int.*gidset' /usr/man/man2/getgroups.2 >/dev/null 2>&1; then 3227 dflt='int' 3228 elif $contains 'gid_t;' $usrinclude/sys/types.h >/dev/null 2>&1 ; then 3229 dflt='gid_t' 3230 else 3231 set `grep 'groups\[NGROUPS\];' $usrinclude/sys/user.h 2>/dev/null` unsigned short 3232 case $1 in 3233 unsigned) dflt="$1 $2" ;; 3234 *) dflt="$1" ;; 3235 esac 3236 fi 3237 ;; 3238*) dflt="$groupstype" 3239 ;; 3240esac 3241cont=true 3242echo "(The following only matters if you have getgroups().)" 3243rp="What type are the group ids returned by getgroups()? [$dflt]" 3244$echo $n "$rp $c" 3245. myread 3246groupstype="$ans" 3247 3248: check for length of integer 3249echo " " 3250case "$intsize" in 3251'') 3252 echo "Checking to see how big your integers are..." 3253 $cat >intsize.c <<'EOCP' 3254#include <stdio.h> 3255main() 3256{ 3257 printf("%d\n", sizeof(int)); 3258} 3259EOCP 3260 if $cc intsize.c -o intsize >/dev/null 2>&1 ; then 3261 dflt=`./intsize` 3262 else 3263 dflt='4' 3264 echo "(I can't seem to compile the test program. Guessing...)" 3265 fi 3266 ;; 3267*) 3268 dflt="$intsize" 3269 ;; 3270esac 3271rp="What is the size of an integer (in bytes)? [$dflt]" 3272$echo $n "$rp $c" 3273. myread 3274intsize="$ans" 3275 3276: determine where private executables go 3277case "$privlib" in 3278'') 3279 dflt=/usr/lib/$package 3280 test -d /usr/local/lib && dflt=/usr/local/lib/$package 3281 ;; 3282*) dflt="$privlib" 3283 ;; 3284esac 3285$cat <<EOM 3286 3287The $package package has some auxiliary files that should be reside in a library 3288that is accessible by everyone. Where should these "private" but accessible 3289EOM 3290$echo $n "files reside? (~name ok) [$dflt] $c" 3291rp="Private files will reside where? [$dflt]" 3292. myread 3293privlib=`./filexp "$ans"` 3294 3295case "$installprivlib" in 3296'') 3297 dflt=`echo $privlib | sed 's#^/afs/#/afs/.#'` 3298 test -d $dflt || dflt="$privlib" 3299 ;; 3300*) dflt="$installprivlib" 3301 ;; 3302esac 3303$cat <<EOM 3304 3305On some systems (such as afs) you have to install the library files in a 3306different directory to get them to go to the right place. Where should the 3307EOM 3308$echo $n "library files be installed? (~name ok) [$dflt] $c" 3309rp="Install private files where? [$dflt]" 3310. myread 3311installprivlib=`./filexp "$ans"` 3312 3313: check for size of random number generator 3314echo " " 3315case "$randbits" in 3316'') 3317 echo "Checking to see how many bits your rand function produces..." 3318 $cat >randbits.c <<'EOCP' 3319#include <stdio.h> 3320main() 3321{ 3322 register int i; 3323 register unsigned long tmp; 3324 register unsigned long max = 0L; 3325 3326 for (i=1000; i; i--) { 3327 tmp = (unsigned long)rand(); 3328 if (tmp > max) max = tmp; 3329 } 3330 for (i=0; max; i++) 3331 max /= 2; 3332 printf("%d\n",i); 3333} 3334EOCP 3335 if $cc randbits.c -o randbits >/dev/null 2>&1 ; then 3336 dflt=`./randbits` 3337 else 3338 dflt='?' 3339 echo "(I can't seem to compile the test program...)" 3340 fi 3341 ;; 3342*) 3343 dflt="$randbits" 3344 ;; 3345esac 3346rp="How many bits does your rand() function produce? [$dflt]" 3347$echo $n "$rp $c" 3348. myread 3349randbits="$ans" 3350 3351: determine where publicly executable scripts go 3352case "$scriptdir" in 3353'') 3354 dflt="$bin" 3355 : guess some guesses 3356 test -d /usr/share/scripts && dflt=/usr/share/scripts 3357 test -d /usr/share/bin && dflt=/usr/share/bin 3358 ;; 3359*) dflt="$scriptdir" 3360 ;; 3361esac 3362cont=true 3363$cat <<EOM 3364 3365Some installations have a separate directory just for executable scripts so 3366that they can mount it across multiple architectures but keep the scripts in 3367one spot. You might, for example, have a subdirectory of /usr/share for this. 3368Or you might just lump your scripts in with all your other executables. 3369 3370EOM 3371while $test "$cont" ; do 3372 rp="Where will publicly executable scripts reside (~name ok)? [$dflt]" 3373 $echo $n "$rp $c" 3374 . myread 3375 scriptdir="$ans" 3376 scriptdir=`./filexp "$scriptdir"` 3377 if test -d $scriptdir; then 3378 cont='' 3379 else 3380 case "$fastread" in 3381 yes) dflt=y;; 3382 *) dflt=n;; 3383 esac 3384 rp="Directory $scriptdir doesn't exist. Use that name anyway? [$dflt]" 3385 $echo $n "$rp $c" 3386 . myread 3387 dflt='' 3388 case "$ans" in 3389 y*) cont='';; 3390 esac 3391 fi 3392done 3393 3394case "$installscr" in 3395'') 3396 dflt=`echo $scriptdir | sed 's#^/afs/#/afs/.#'` 3397 test -d $dflt || dflt="$scriptdir" 3398 ;; 3399*) dflt="$scriptdir" 3400 ;; 3401esac 3402cont=true 3403$cat <<EOM 3404 3405Some installations must install scripts in a different directory than where 3406they will eventually reside. On most systems they're the same directory. 3407EOM 3408while $test "$cont" ; do 3409 rp="Where do you install publicly executable scripts (~name ok)? [$dflt]" 3410 $echo $n "$rp $c" 3411 . myread 3412 installscr="$ans" 3413 installscr=`./filexp "$installscr"` 3414 if test -d $installscr; then 3415 cont='' 3416 else 3417 case "$fastread" in 3418 yes) dflt=y;; 3419 *) dflt=n;; 3420 esac 3421 rp="Directory $installscr doesn't exist. Use that name anyway? [$dflt]" 3422 $echo $n "$rp $c" 3423 . myread 3424 dflt='' 3425 case "$ans" in 3426 y*) cont='';; 3427 esac 3428 fi 3429done 3430 3431: generate list of signal names 3432echo " " 3433case "$sig_name" in 3434'') 3435 echo "Generating a list of signal names..." 3436 set X `cat $usrinclude/signal.h $usrinclude/sys/signal.h 2>&1 | awk ' 3437$1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $3 ~ /^[1-9][0-9]*$/ { 3438 sig[$3] = substr($2,4,20) 3439 if (max < $3 && $3 < 60) { 3440 max = $3 3441 } 3442} 3443 3444END { 3445 for (i=1; i<=max; i++) { 3446 if (sig[i] == "") 3447 printf "%d", i 3448 else 3449 printf "%s", sig[i] 3450 if (i < max) 3451 printf " " 3452 } 3453 printf "\n" 3454} 3455'` 3456 shift 3457 case $# in 3458 0) echo 'kill -l' >/tmp/foo$$ 3459 set X `$csh -f </tmp/foo$$` 3460 shift 3461 case $# in 3462 0)set HUP INT QUIT ILL TRAP IOT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM 3463 ;; 3464 esac 3465 ;; 3466 esac 3467 sig_name="ZERO $*" 3468 ;; 3469esac 3470echo "Signals are: $sig_name" 3471 3472: see what type of char stdio uses. 3473echo " " 3474if $contains 'unsigned.*char.*\*.*_ptr.*;' $usrinclude/stdio.h >/dev/null 2>&1 ; then 3475 echo "Your stdio uses unsigned chars." 3476 stdchar="unsigned char" 3477else 3478 echo "Your stdio uses signed chars." 3479 stdchar="char" 3480fi 3481 3482: see what type uids are declared as in the kernel 3483case "$uidtype" in 3484'') 3485 if $contains 'uid_t;' $usrinclude/sys/types.h >/dev/null 2>&1 ; then 3486 dflt='uid_t'; 3487 else 3488 set `grep '_ruid;' $usrinclude/sys/user.h 2>/dev/null` unsigned short 3489 case $1 in 3490 unsigned) dflt="$1 $2" ;; 3491 *) dflt="$1" ;; 3492 esac 3493 fi 3494 ;; 3495*) dflt="$uidtype" 3496 ;; 3497esac 3498cont=true 3499echo " " 3500rp="What type are user ids returned by getuid(), etc.? [$dflt]" 3501$echo $n "$rp $c" 3502. myread 3503uidtype="$ans" 3504 3505: check for void type 3506echo " " 3507$cat <<EOM 3508Checking to see how well your C compiler groks the void type... 3509 3510 Support flag bits are: 3511 1: basic void declarations. 3512 2: arrays of pointers to functions returning void. 3513 4: operations between pointers to and addresses of void functions. 3514 3515EOM 3516case "$voidhave" in 3517'') 3518 $cat >void.c <<'EOCP' 3519#if TRY & 1 3520void main() { 3521#else 3522main() { 3523#endif 3524 extern void moo(); /* function returning void */ 3525 void (*goo)(); /* ptr to func returning void */ 3526#if TRY & 2 3527 void (*foo[10])(); 3528#endif 3529 3530#if TRY & 4 3531 if(goo == moo) { 3532 exit(0); 3533 } 3534#endif 3535 exit(0); 3536} 3537EOCP 3538 if $cc -c -DTRY=$voidwant void.c >void.out 2>&1 ; then 3539 voidhave=$voidwant 3540 echo "It appears to support void to the level $package wants ($voidwant)." 3541 if $contains warning void.out >/dev/null 2>&1; then 3542 echo "However, you might get some warnings that look like this:" 3543 $cat void.out 3544 fi 3545 else 3546 echo "Hmm, your compiler has some difficulty with void. Checking further..." 3547 if $cc -c -DTRY=1 void.c >/dev/null 2>&1 ; then 3548 echo "It supports 1..." 3549 if $cc -c -DTRY=3 void.c >/dev/null 2>&1 ; then 3550 voidhave=3 3551 echo "And it supports 2 but not 4." 3552 else 3553 echo "It doesn't support 2..." 3554 if $cc -c -DTRY=5 void.c >/dev/null 2>&1 ; then 3555 voidhave=5 3556 echo "But it supports 4." 3557 else 3558 voidhave=1 3559 echo "And it doesn't support 4." 3560 fi 3561 fi 3562 else 3563 echo "There is no support at all for void." 3564 voidhave=0 3565 fi 3566 fi 3567esac 3568dflt="$voidhave"; 3569rp="Your void support flags add up to what? [$dflt]" 3570$echo $n "$rp $c" 3571. myread 3572voidhave="$ans" 3573 3574: preserve RCS keywords in files with variable substitution, grrr 3575Log='$Log' 3576Header='$Header' 3577Id='$Id' 3578Author='$Author' 3579Date='$Date' 3580Locker='$Locker' 3581RCSfile='$RCSfile' 3582Revision='$Revision' 3583Source='$Source' 3584State='$State' 3585 3586 3587: determine compiler compiler 3588case "$yacc" in 3589'') if xenix; then 3590 dflt=yacc 3591 else 3592 dflt='yacc -Sm25000' 3593 fi 3594 ;; 3595*) dflt="$yacc";; 3596esac 3597cont=true 3598 echo " " 3599rp="Which compiler compiler (yacc or bison -y) will you use? [$dflt]" 3600$echo $n "$rp $c" 3601. myread 3602case "$ans" in 3603'') ans="$dflt";; 3604esac 3605yacc="$ans" 3606 3607: see if we can include fcntl.h 3608echo " " 3609if $h_fcntl; then 3610 val="$define" 3611 echo "We'll be including <fcntl.h>." 3612else 3613 val="$undef" 3614 if $h_sys_file; then 3615 echo "We don't need to <fcntl.h> if we include <sys/file.h>." 3616 else 3617 echo "We won't be including <fcntl.h>." 3618 fi 3619fi 3620set i_fcntl 3621eval $setvar 3622 3623: see if gdbm is available 3624echo " " 3625xxx=`./loc gdbm.h x $usrinclude /usr/local/include $inclwanted` 3626if test -f $xxx; then 3627 val="$define" 3628 echo "gdbm.h found." 3629else 3630 val="$undef" 3631 echo "gdbm.h NOT found." 3632fi 3633set i_gdbm 3634eval $setvar 3635 3636: see if this is an grp system 3637echo " " 3638if $test -r $usrinclude/grp.h ; then 3639 val="$define" 3640 echo "grp.h found." 3641else 3642 val="$undef" 3643 echo "No grp.h found." 3644fi 3645set i_grp 3646eval $setvar 3647 3648: see if this is a netinet/in.h or sys/in.h system 3649echo " " 3650xxx=`./loc netinet/in.h x $usrinclude /usr/local/include $inclwanted` 3651if test -f $xxx; then 3652 val="$define" 3653 val2="$undef" 3654 echo "netinet/in.h found." 3655else 3656 val="$undef" 3657 echo "No netinet/in.h found, ..." 3658 xxx=`./loc sys/in.h x $usrinclude /usr/local/include $inclwanted` 3659 if test -f $xxx; then 3660 val2="$define" 3661 echo "but I found sys/in.h instead." 3662 else 3663 val2="$undef" 3664 echo "and I didn't find sys/in.h either." 3665 fi 3666fi 3667set i_niin 3668eval $setvar 3669val=$val2 3670set i_sysin 3671eval $setvar 3672 3673: Do we need to #include <sys/file.h> ? 3674echo " " 3675if $h_sys_file; then 3676 val="$define" 3677 echo "We'll be including <sys/file.h>." 3678else 3679 val="$undef" 3680 echo "We won't be including <sys/file.h>." 3681fi 3682set i_sys_file 3683eval $setvar 3684 3685: see if ioctl defs are in sgtty/termio or sys/ioctl 3686echo " " 3687if $test -r $usrinclude/sys/ioctl.h ; then 3688 val="$define" 3689 echo "sys/ioctl.h found." 3690else 3691 val="$undef" 3692 echo "sys/ioctl.h NOT found, assuming ioctl args are defined in sgtty.h." 3693fi 3694set i_sysioctl 3695eval $setvar 3696 3697: see if we should include utime.h 3698echo " " 3699if $test -r $usrinclude/utime.h ; then 3700 val="$define" 3701 echo "utime.h found." 3702else 3703 val="$undef" 3704 echo "No utime.h found, but that's ok." 3705fi 3706set i_utime 3707eval $setvar 3708 3709: see if this is a varargs system 3710echo " " 3711if $test -r $usrinclude/varargs.h ; then 3712 val="$define" 3713 echo "varargs.h found." 3714else 3715 val="$undef" 3716 echo "No varargs.h found, but that's ok (I hope)." 3717fi 3718set i_varargs 3719eval $setvar 3720 3721: see if this is a vfork system 3722echo " " 3723if $test -r $usrinclude/vfork.h ; then 3724 val="$define" 3725 echo "vfork.h found." 3726else 3727 val="$undef" 3728 echo "No vfork.h found." 3729fi 3730set i_vfork 3731eval $setvar 3732 3733: end of configuration questions 3734echo " " 3735echo "End of configuration questions." 3736echo " " 3737 3738: create config.sh file 3739echo " " 3740if test -d ../UU; then 3741 cd .. 3742fi 3743echo "Creating config.sh..." 3744test -f config.sh && cp config.sh UU/oldconfig.sh 3745$spitshell <<EOT >config.sh 3746$startsh 3747# config.sh 3748# This file was produced by running the Configure script. 3749d_eunice='$d_eunice' 3750define='$define' 3751eunicefix='$eunicefix' 3752loclist='$loclist' 3753expr='$expr' 3754sed='$sed' 3755echo='$echo' 3756cat='$cat' 3757rm='$rm' 3758mv='$mv' 3759cp='$cp' 3760tail='$tail' 3761tr='$tr' 3762mkdir='$mkdir' 3763sort='$sort' 3764uniq='$uniq' 3765grep='$grep' 3766trylist='$trylist' 3767test='$test' 3768inews='$inews' 3769egrep='$egrep' 3770more='$more' 3771pg='$pg' 3772Mcc='$Mcc' 3773vi='$vi' 3774mailx='$mailx' 3775mail='$mail' 3776cpp='$cpp' 3777perl='$perl' 3778emacs='$emacs' 3779ls='$ls' 3780rmail='$rmail' 3781sendmail='$sendmail' 3782shar='$shar' 3783smail='$smail' 3784tbl='$tbl' 3785troff='$troff' 3786nroff='$nroff' 3787uname='$uname' 3788uuname='$uuname' 3789line='$line' 3790chgrp='$chgrp' 3791chmod='$chmod' 3792lint='$lint' 3793sleep='$sleep' 3794pr='$pr' 3795tar='$tar' 3796ln='$ln' 3797lpr='$lpr' 3798lp='$lp' 3799touch='$touch' 3800make='$make' 3801date='$date' 3802csh='$csh' 3803bash='$bash' 3804ksh='$ksh' 3805lex='$lex' 3806flex='$flex' 3807bison='$bison' 3808Log='$Log' 3809Header='$Header' 3810Id='$Id' 3811lastuname='$lastuname' 3812alignbytes='$alignbytes' 3813bin='$bin' 3814installbin='$installbin' 3815byteorder='$byteorder' 3816contains='$contains' 3817cppstdin='$cppstdin' 3818cppminus='$cppminus' 3819d_bcmp='$d_bcmp' 3820d_bcopy='$d_bcopy' 3821d_safebcpy='$d_safebcpy' 3822d_bzero='$d_bzero' 3823d_castneg='$d_castneg' 3824castflags='$castflags' 3825d_charsprf='$d_charsprf' 3826d_chsize='$d_chsize' 3827d_crypt='$d_crypt' 3828cryptlib='$cryptlib' 3829d_csh='$d_csh' 3830d_dosuid='$d_dosuid' 3831d_dup2='$d_dup2' 3832d_fchmod='$d_fchmod' 3833d_fchown='$d_fchown' 3834d_fcntl='$d_fcntl' 3835d_flexfnam='$d_flexfnam' 3836d_flock='$d_flock' 3837d_getgrps='$d_getgrps' 3838d_gethent='$d_gethent' 3839d_getpgrp='$d_getpgrp' 3840d_getpgrp2='$d_getpgrp2' 3841d_getprior='$d_getprior' 3842d_htonl='$d_htonl' 3843d_index='$d_index' 3844d_isascii='$d_isascii' 3845d_killpg='$d_killpg' 3846d_lstat='$d_lstat' 3847d_memcmp='$d_memcmp' 3848d_memcpy='$d_memcpy' 3849d_safemcpy='$d_safemcpy' 3850d_memmove='$d_memmove' 3851d_memset='$d_memset' 3852d_mkdir='$d_mkdir' 3853d_msg='$d_msg' 3854d_msgctl='$d_msgctl' 3855d_msgget='$d_msgget' 3856d_msgrcv='$d_msgrcv' 3857d_msgsnd='$d_msgsnd' 3858d_ndbm='$d_ndbm' 3859d_odbm='$d_odbm' 3860d_open3='$d_open3' 3861d_readdir='$d_readdir' 3862d_rename='$d_rename' 3863d_rewindir='$d_rewindir' 3864d_rmdir='$d_rmdir' 3865d_seekdir='$d_seekdir' 3866d_select='$d_select' 3867d_sem='$d_sem' 3868d_semctl='$d_semctl' 3869d_semget='$d_semget' 3870d_semop='$d_semop' 3871d_setegid='$d_setegid' 3872d_seteuid='$d_seteuid' 3873d_setpgrp='$d_setpgrp' 3874d_setpgrp2='$d_setpgrp2' 3875d_setprior='$d_setprior' 3876d_setregid='$d_setregid' 3877d_setresgid='$d_setresgid' 3878d_setreuid='$d_setreuid' 3879d_setresuid='$d_setresuid' 3880d_setrgid='$d_setrgid' 3881d_setruid='$d_setruid' 3882d_shm='$d_shm' 3883d_shmat='$d_shmat' 3884d_voidshmat='$d_voidshmat' 3885d_shmctl='$d_shmctl' 3886d_shmdt='$d_shmdt' 3887d_shmget='$d_shmget' 3888d_socket='$d_socket' 3889d_sockpair='$d_sockpair' 3890d_oldsock='$d_oldsock' 3891socketlib='$socketlib' 3892d_statblks='$d_statblks' 3893d_stdstdio='$d_stdstdio' 3894d_strctcpy='$d_strctcpy' 3895d_strerror='$d_strerror' 3896d_symlink='$d_symlink' 3897d_syscall='$d_syscall' 3898d_telldir='$d_telldir' 3899d_truncate='$d_truncate' 3900d_vfork='$d_vfork' 3901d_voidsig='$d_voidsig' 3902d_tosignal='$d_tosignal' 3903d_volatile='$d_volatile' 3904d_vprintf='$d_vprintf' 3905d_charvspr='$d_charvspr' 3906d_wait4='$d_wait4' 3907d_waitpid='$d_waitpid' 3908gidtype='$gidtype' 3909groupstype='$groupstype' 3910i_fcntl='$i_fcntl' 3911i_gdbm='$i_gdbm' 3912i_grp='$i_grp' 3913i_niin='$i_niin' 3914i_sysin='$i_sysin' 3915i_pwd='$i_pwd' 3916d_pwquota='$d_pwquota' 3917d_pwage='$d_pwage' 3918d_pwchange='$d_pwchange' 3919d_pwclass='$d_pwclass' 3920d_pwexpire='$d_pwexpire' 3921d_pwcomment='$d_pwcomment' 3922i_sys_file='$i_sys_file' 3923i_sysioctl='$i_sysioctl' 3924i_time='$i_time' 3925i_sys_time='$i_sys_time' 3926i_sys_select='$i_sys_select' 3927d_systimekernel='$d_systimekernel' 3928i_utime='$i_utime' 3929i_varargs='$i_varargs' 3930i_vfork='$i_vfork' 3931intsize='$intsize' 3932libc='$libc' 3933nm_opts='$nm_opts' 3934libndir='$libndir' 3935i_my_dir='$i_my_dir' 3936i_ndir='$i_ndir' 3937i_sys_ndir='$i_sys_ndir' 3938i_dirent='$i_dirent' 3939i_sys_dir='$i_sys_dir' 3940d_dirnamlen='$d_dirnamlen' 3941ndirc='$ndirc' 3942ndiro='$ndiro' 3943mallocsrc='$mallocsrc' 3944mallocobj='$mallocobj' 3945d_mymalloc='$d_mymalloc' 3946mallocptrtype='$mallocptrtype' 3947mansrc='$mansrc' 3948manext='$manext' 3949models='$models' 3950split='$split' 3951small='$small' 3952medium='$medium' 3953large='$large' 3954huge='$huge' 3955optimize='$optimize' 3956ccflags='$ccflags' 3957cppflags='$cppflags' 3958ldflags='$ldflags' 3959cc='$cc' 3960nativegcc='$nativegcc' 3961libs='$libs' 3962n='$n' 3963c='$c' 3964package='$package' 3965randbits='$randbits' 3966scriptdir='$scriptdir' 3967installscr='$installscr' 3968sig_name='$sig_name' 3969spitshell='$spitshell' 3970shsharp='$shsharp' 3971sharpbang='$sharpbang' 3972startsh='$startsh' 3973stdchar='$stdchar' 3974uidtype='$uidtype' 3975usrinclude='$usrinclude' 3976inclPath='$inclPath' 3977void='$void' 3978voidhave='$voidhave' 3979voidwant='$voidwant' 3980w_localtim='$w_localtim' 3981w_s_timevl='$w_s_timevl' 3982w_s_tm='$w_s_tm' 3983yacc='$yacc' 3984lib='$lib' 3985privlib='$privlib' 3986installprivlib='$installprivlib' 3987EOT 3988 3989test -f patchlevel.h && awk '{printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh 3990echo "CONFIG=true" >>config.sh 3991 3992if test -f UU/oldconfig.sh; then 3993 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\ 3994 sort | uniq -u >UU/oldsyms 3995 set X `cat UU/oldsyms` 3996 shift 3997 case $# in 3998 0) ;; 3999 *) echo "Hmm...You had some extra variables I don't know about...I'll try to keep 'em..." 4000 for sym in `cat UU/oldsyms`; do 4001 echo " Propagating $hint variable "'$'"$sym..." 4002 eval 'tmp="$'"${sym}"'"' 4003 echo "$tmp" | \ 4004 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh 4005 done 4006 ;; 4007 esac 4008fi 4009 4010: Finish up 4011CONFIG=true 4012 4013echo " " 4014dflt='' 4015fastread='' 4016echo "If you didn't make any mistakes, then just type a carriage return here." 4017rp="If you need to edit config.sh, do it as a shell escape here:" 4018$echo $n "$rp $c" 4019. UU/myread 4020case "$ans" in 4021'') ;; 4022*) : in case they cannot read 4023 eval $ans;; 4024esac 4025chmod +x doSH 4026./doSH 4027 4028if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then 4029 dflt=n 4030 $cat <<EOM 4031 4032Now you need to generate make dependencies by running "make depend". 4033You might prefer to run it in background: "make depend > makedepend.out &" 4034It can take a while, so you might not want to run it right now. 4035 4036EOM 4037 rp="Run make depend now? [$dflt]" 4038 $echo $n "$rp $c" 4039 . UU/myread 4040 case "$ans" in 4041 y*) make depend && echo "Now you must run a make." 4042 ;; 4043 *) echo "You must run 'make depend' then 'make'." 4044 ;; 4045 esac 4046elif test -f [Mm]akefile; then 4047 echo " " 4048 echo "Now you must run a make." 4049else 4050 echo "Done." 4051fi 4052 4053$rm -f kit*isdone 4054$rm -rf UU 4055: end of Configure 4056