X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Configure;h=952a685c0b4f54c46f5cff3da4925ec21107e167;hb=49d8d3a1123fb996c090905424ed66f675b3df17;hp=e873dfe71060427c757a170e800d5a1c169f691c;hpb=3712091946b37b5feabcc1f630b32639406ad717;p=p5sagit%2Fp5-mst-13.2.git diff --git a/Configure b/Configure index e873dfe..952a685 100755 --- a/Configure +++ b/Configure @@ -20,7 +20,7 @@ # $Id: Head.U,v 3.0.1.8 1995/07/25 13:40:02 ram Exp $ # -# Generated on Fri Dec 8 11:19:33 EST 1995 [metaconfig 3.0 PL58] +# Generated on Sat Feb 1 00:26:40 EST 1997 [metaconfig 3.0 PL60] cat >/tmp/c1$$ </dev/null 2>&1; then - : already under /bin/ksh - else +: Test and see if we are running under ksh, either blatantly or in disguise. +if (PATH=.; alias -x) >/dev/null 2>&1; then + : running under ksh. Is this a good thing? + if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname ; then + if test X`/usr/bin/uname -v` = X4 ; then + : on AIX 4, /bin/sh is really ksh, and it causes us problems. + : Avoid it cat <<'EOM' -(Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.) +(Feeding myself to /usr/bin/bsh to avoid AIX 4's /bin/sh.) EOM unset ENV - exec /bin/ksh $0 "$@" + exec /usr/bin/bsh $0 "$@" fi -else + else + if test ! -f /hp-ux ; then : Warn them if they use ksh on other systems - (PATH=.; alias -x) >/dev/null 2>&1 && \ cat <&2 +$me: Fatal Error: I can't find a Bourne Shell anywhere. +Usually it's in /bin/sh. How did you even get this far? +Please contact me (Chip Salzenberg) at chip@perl.com and +we'll try to straigten this all out. +EOM + exit 1 + ;; +esac + +: see if sh knows # comments +if `$sh -c '#' >/dev/null 2>&1`; then + shsharp=true + spitshell=cat + echo " " + xcat=/bin/cat + test -f $xcat || xcat=/usr/bin/cat + echo "#!$xcat" >try + $eunicefix try + chmod +x try + ./try > today + if test -s today; then + sharpbang='#!' + else + echo "#! $xcat" > try + $eunicefix try + chmod +x try + ./try > today + if test -s today; then + sharpbang='#! ' + else + echo "Okay, let's see if #! works on this system..." + echo "It's just a comment." + sharpbang=': use ' + fi + fi +else + echo "Your $sh doesn't grok # comments--I will strip them later on." + shsharp=false + cd .. + echo "exec grep -v '^[ ]*#'" >spitshell + chmod +x spitshell + $eunicefix spitshell + spitshell=`pwd`/spitshell + cd UU + echo "I presume that if # doesn't work, #! won't work either!" + sharpbang=': use ' +fi +rm -f try today + +: figure out how to guarantee sh startup +case "$startsh" in +'') startsh=${sharpbang}${sh} ;; +*) +esac +cat >try <extract <<'EOS' +cat >extract <>extract <<'EOS' CONFIG=true echo "Doing variable substitutions on .SH files..." if test -f MANIFEST; then @@ -814,7 +994,11 @@ silent='' extractsh='' override='' knowitall='' + rm -f optdef.sh +cat >optdef.sh <&2 + -V) echo "$me generated by metaconfig 3.0 PL60." >&2 exit 0;; --) break;; -*) echo "$me: unknown option $1" >&2; shift; error=true;; @@ -875,7 +1059,7 @@ done case "$error" in true) cat >&2 <&4 @@ -1048,6 +1232,7 @@ esac" : now set up to do reads with possible shell escape and default assignment cat <myread +$startsh xxxm=\$dflt $myecho ans='!' @@ -1070,7 +1255,7 @@ while expr "X\$ans" : "X!" >/dev/null; do read answ set x \$xxxm shift - aok=''; eval "ans=\"\$answ\"" && aok=y + aok=''; eval ans="\\"\$answ\\"" && aok=y case "\$answ" in "\$ans") case "\$ans" in @@ -1080,10 +1265,10 @@ while expr "X\$ans" : "X!" >/dev/null; do case "\$1" in -d) fastread=yes - echo "(OK, I'll run with -d after this question.)" + echo "(OK, I'll run with -d after this question.)" >&4 ;; -*) - echo "*** Sorry, \$1 not supported yet." + echo "*** Sorry, \$1 not supported yet." >&4 ;; esac $myecho @@ -1143,7 +1328,10 @@ EOF : general instructions needman=true firsttime=true -user=`( (logname) 2>/dev/null || whoami) 2>&1` +user=`(logname) 2>/dev/null` +case "$user" in "") + user=`whoami 2>&1` ;; +esac if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then firsttime=false echo " " @@ -1189,7 +1377,7 @@ If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all the questions and use the computed defaults (or the previous answers if there was already a config.sh file). Type 'Configure -h' for a list of options. You may also start interactively and then answer '& -d' at any prompt to turn -on the non-interactive behaviour for the remaining of the execution. +on the non-interactive behavior for the remainder of the execution. EOH . ./myread @@ -1199,7 +1387,7 @@ Much effort has been expended to ensure that this shell script will run on any Unix system. If despite that it blows up on yours, your best bet is to edit Configure and run it again. If you can't run Configure for some reason, you'll have to generate a config.sh file by hand. Whatever problems you -have, let me (lwall@netlabs.com) know how I blew it. +have, let me (chip@perl.com) know how I blew it. This installation script affects things in two ways: @@ -1220,74 +1408,6 @@ EOH esac fi -: see if sh knows # comments -echo " " -echo "Checking your sh to see if it knows about # comments..." >&4 -if `sh -c '#' >/dev/null 2>&1`; then - echo "Your sh handles # comments correctly." - shsharp=true - spitshell=cat - echo " " - echo "Okay, let's see if #! works on this system..." - xcat=/bin/cat - test -f $xcat || xcat=/usr/bin/cat - echo "#!$xcat" >try - $eunicefix try - chmod +x try - ./try > today - if test -s today; then - echo "It does." - sharpbang='#!' - else - echo "#! $xcat" > try - $eunicefix try - chmod +x try - ./try > today - if test -s today; then - echo "It does." - sharpbang='#! ' - else - echo "It's just a comment." - sharpbang=': use ' - fi - fi -else - echo "Your sh doesn't grok # comments--I will strip them later on." - shsharp=false - cd .. - echo "exec grep -v '^[ ]*#'" >spitshell - chmod +x spitshell - $eunicefix spitshell - spitshell=`pwd`/spitshell - cd UU - echo "I presume that if # doesn't work, #! won't work either!" - sharpbang=': use ' -fi -rm -f try today - -: figure out how to guarantee sh startup -echo " " -echo "Checking out how to guarantee sh startup..." >&4 -case "$SYSTYPE" in -*bsd*|sys5*) startsh=$sharpbang"/$SYSTYPE/bin/sh";; -*) startsh=$sharpbang'/bin/sh';; -esac -echo "Let's see if '$startsh' works..." -cat >try <&4 @@ -1337,7 +1457,6 @@ echo expr find grep -ln ls mkdir rm @@ -1354,11 +1473,18 @@ cpp csh date egrep +gzip +less line +ln +more nroff perl +pg +sendmail test uname +zip " pth=`echo $PATH | sed -e "s/$p_/ /g"` pth="$pth /lib /usr/lib" @@ -1406,6 +1532,12 @@ egrep) egrep=$grep ;; esac +case "$ln" in +ln) + echo "Substituting cp for ln." + ln=$cp + ;; +esac case "$test" in test) echo "Hopefully test is built into your sh." @@ -1522,10 +1654,16 @@ if test -f config.sh; then *) echo "Fetching default answers from your old config.sh file..." >&4 tmp_n="$n" tmp_c="$c" + tmp_sh="$sh" . ./config.sh cp config.sh UU n="$tmp_n" c="$tmp_c" + : Older versions did not always set $sh. Catch re-use of such + : an old config.sh. + case "$sh" in + '') sh="$tmp_sh" ;; + esac hint=previous ;; esac @@ -1539,13 +1677,15 @@ EOM cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4 dflt='' : Half the following guesses are probably wrong... If you have better - : tests or hints, please send them to lwall@netlabs.com + : tests or hints, please send them to chip@perl.com : The metaconfig authors would also appreciate a copy... $test -f /irix && osname=irix $test -f /xenix && osname=sco_xenix $test -f /dynix && osname=dynix $test -f /dnix && osname=dnix - $test -f /unicos && osname=unicos && osvers=`$uname -r` + $test -f /lynx.os && osname=lynxos + $test -f /unicos && osname=unicos && osvers=`$uname -r` + $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r` $test -f /bin/mips && /bin/mips && osname=mips $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \ $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4 @@ -1577,7 +1717,6 @@ EOM esac;; [23]100) osname=mips ;; next*) osname=next ;; - news*) osname=news ;; i386*) if $test -f /etc/kconfig; then osname=isc @@ -1603,6 +1742,9 @@ EOM *) osvers=$tmp;; esac ;; + *dc.osx) osname=dcosx + osvers="$3" + ;; dnix) osname=dnix osvers="$3" ;; @@ -1612,6 +1754,9 @@ EOM dgux) osname=dgux osvers="$3" ;; + dynixptx*) osname=dynixptx + osvers="$3" + ;; freebsd) osname=freebsd osvers="$3" ;; genix) osname=genix ;; @@ -1623,7 +1768,7 @@ EOM *) osvers="$3" ;; esac ;; - irix) osname=irix + irix*) osname=irix case "$3" in 4*) osvers=4 ;; 5*) osvers=5 ;; @@ -1632,16 +1777,25 @@ EOM ;; linux) osname=linux case "$3" in - 1*) osvers=1 ;; *) osvers="$3" ;; esac ;; netbsd*) osname=netbsd osvers="$3" ;; + news-os) osvers="$3" + case "$3" in + 4*) osname=newsos4 ;; + *) osname=newsos ;; + esac + ;; bsd386) osname=bsd386 osvers=`$uname -r` ;; + powerux | power_ux | powermax_os | powermaxos | \ + powerunix | power_unix) osname=powerux + osvers="$3" + ;; next*) osname=next ;; solaris) osname=solaris case "$3" in @@ -1668,10 +1822,10 @@ EOM ultrix) osname=ultrix osvers="$3" ;; - osf1) case "$5" in + osf1|mls+) case "$5" in alpha) osname=dec_osf - osvers=`echo "$3" | sed 's/^[vt]//'` + osvers=`echo "$3" | sed 's/^[xvt]//'` ;; hp*) osname=hp_osf1 ;; mips) osname=mips_osf1 ;; @@ -1680,10 +1834,13 @@ EOM uts) osname=uts osvers="$3" ;; + qnx) osname=qnx + osvers="$4" + ;; $2) case "$osname" in *isc*) ;; *freebsd*) ;; - svr*) + svr*) : svr4.x or possibly later case "svr$3" in ${osname}*) @@ -1736,16 +1893,20 @@ EOM ;; esac else - if test -f /vmunix -a -f news_os.sh; then + if test -f /vmunix -a -f newsos4.sh; then (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then - osname=news_os + osname=newsos4 fi $rm -f ../UU/kernel.what elif test -d c:/.; then set X $myuname osname=os2 osvers="$5" + if test -n "$DJDIR"; then + osname=dos + osvers=djgpp + fi fi fi @@ -1842,6 +2003,7 @@ cd UU tmp_c="$c" cd .. cp $config_sh config.sh 2>/dev/null + chmod +w config.sh . ./config.sh cd UU cp ../config.sh . @@ -1881,13 +2043,39 @@ case "$ans" in none) osname='' ;; *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;; esac +echo " " +case "$osvers" in + ''|' ') + case "$hintfile" in + ''|' '|none) dflt=none ;; + *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'` + dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'` + case "$dflt" in + ''|' ') dflt=none ;; + esac + ;; + esac + ;; + *) dflt="$osvers" ;; +esac +rp="Operating system version?" +. ./myread +case "$ans" in +none) osvers='' ;; +*) osvers="$ans" ;; +esac + + + : who configured the system -cf_time=`$date 2>&1` -(logname > .temp) >/dev/null 2>&1 -$test -s .temp || (whoami > .temp) >/dev/null 2>&1 -$test -s .temp || echo unknown > .temp -cf_by=`$cat .temp` -$rm -f .temp +cf_time=`LC_ALL=C; export LC_ALL; $date 2>&1` +cf_by=`(logname) 2>/dev/null` +case "$cf_by" in "") + cf_by=`(whoami) 2>/dev/null` + case "$cf_by" in "") + cf_by=unknown ;; + esac ;; +esac : determine the architecture name echo " " @@ -1895,7 +2083,8 @@ if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then tarch=`arch`"-$osname" elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then if uname -m > tmparch 2>&1 ; then - tarch=`$sed -e 's/ /_/g' -e 's/$/'"-$osname/" tmparch` + tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \ + -e 's/$/'"-$osname/" tmparch` else tarch="$osname" fi @@ -1916,17 +2105,37 @@ case "$archname" in esac rp='What is your architecture name' . ./myread -archname="$ans" +case "$usethreads" in +$define) echo "Threads selected." >&4 + case "$ans" in + *-thread) echo "...and architecture name already ends in -thread." >&4 + archname="$ans" + ;; + *) archname="$ans-thread" + echo "...setting architecture name to $archname." >&4 + ;; + esac + ;; +*) archname="$ans" ;; +esac myarchname="$tarch" : is AFS running? echo " " -if test -d /afs; then +case "$afs" in +$define|true) afs=true ;; +$undef|false) afs=false ;; +*) if test -d /afs; then + afs=true + else + afs=false + fi + ;; +esac +if $afs; then echo "AFS may be running... I'll be extra cautious then..." >&4 - afs=true else echo "AFS does not seem to be running..." >&4 - afs=false fi : decide how portable to be. Allow command line overrides. @@ -1976,7 +2185,10 @@ chmod +x filexp $eunicefix filexp : now set up to get a file name -cat <<'EOSC' >getfile +cat <getfile +$startsh +EOS +cat <<'EOSC' >>getfile tilde='' fullpath='' already='' @@ -2291,11 +2503,20 @@ baserev=5.0 echo " " echo "Getting the current patchlevel..." >&4 if $test -r ../patchlevel.h;then - patchlevel=`awk '/PATCHLEVEL/ {print $3}' < ../patchlevel.h` + patchlevel=`awk '/PATCHLEVEL/ {print $3}' ../patchlevel.h` + subversion=`awk '/SUBVERSION/ {print $3}' ../patchlevel.h` else patchlevel=0 + subversion=0 fi -echo "(You have $package $baserev PL$patchlevel.)" +$echo $n "(You have $package" $c +case "$package" in +"*$baserev") ;; +*) $echo $n " $baserev" $c ;; +esac +$echo $n " patchlevel $patchlevel" $c +test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c +echo ".)" : set the prefixup variable, to restore leading tilda escape prefixup='case "$prefixexp" in @@ -2308,18 +2529,27 @@ set archlib archlib eval $prefixit case "$archlib" in '') - case "$privlib" in - '') - dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib` - set dflt - eval $prefixup - ;; - *) version=`echo $baserev $patchlevel | $awk '{print $1 + $2/1000.0}'` - dflt="$privlib/$archname/$version" - ;; - esac + case "$privlib" in + '') dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib` + set dflt + eval $prefixup + ;; + *) if test 0 -eq "$subversion"; then + version=`LC_ALL=C; export LC_ALL; \ + echo $baserev $patchlevel | \ + $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'` + else + version=`LC_ALL=C; export LC_ALL; \ + echo $baserev $patchlevel $subversion | \ + $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'` + fi + dflt="$privlib/$archname/$version" ;; -*) dflt="$archlib";; + esac + ;; +*) + dflt="$archlib" + ;; esac cat <whoa +$startsh +EOS +cat <<'EOSC' >>whoa +dflt=y +echo " " +echo "*** WHOA THERE!!! ***" >&4 +echo " The $hint value for \$$var on this machine was \"$was\"!" >&4 +rp=" Keep the $hint value?" +. ./myread +case "$ans" in +y) td=$was; tu=$was;; esac -$cat <bsd +echo exit 1 >usg +echo exit 1 >v7 +echo exit 1 >osf1 +echo exit 1 >eunice +echo exit 1 >xenix +echo exit 1 >venix +echo exit 1 >os2 +d_bsd="$undef" +$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null +if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1 +then + echo "Looks kind of like an OSF/1 system, but we'll see..." + echo exit 0 >osf1 +elif test `echo abc | tr a-z A-Z` = Abc ; then + xxx=`./loc addbib blurfl $pth` + if $test -f $xxx; then + echo "Looks kind of like a USG system with BSD features, but we'll see..." + echo exit 0 >bsd + echo exit 0 >usg + else + if $contains SIGTSTP foo >/dev/null 2>&1 ; then + echo "Looks kind of like an extended USG system, but we'll see..." + else + echo "Looks kind of like a USG system, but we'll see..." + fi + echo exit 0 >usg + fi +elif $contains SIGTSTP foo >/dev/null 2>&1 ; then + echo "Looks kind of like a BSD system, but we'll see..." + d_bsd="$define" + echo exit 0 >bsd +else + echo "Looks kind of like a Version 7 system, but we'll see..." + echo exit 0 >v7 +fi +case "$eunicefix" in +*unixtovms*) + $cat <<'EOI' +There is, however, a strange, musty smell in the air that reminds me of +something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit. +EOI + echo exit 0 >eunice + d_eunice="$define" +: it so happens the Eunice I know will not run shell scripts in Unix format + ;; +*) + echo " " + echo "Congratulations. You aren't running Eunice." + d_eunice="$undef" + ;; +esac +: Detect OS2. The p_ variable is set above in the Head.U unit. +case "$p_" in +:) ;; +*) + $cat <<'EOI' +I have the feeling something is not exactly right, however...don't tell me... +lemme think...does HAL ring a bell?...no, of course, you're only running OS/2! +EOI + echo exit 0 >os2 + ;; +esac +if test -f /xenix; then + echo "Actually, this looks more like a XENIX system..." + echo exit 0 >xenix + d_xenix="$define" +else + echo " " + echo "It's not Xenix..." + d_xenix="$undef" +fi +chmod +x xenix +$eunicefix xenix +if test -f /venix; then + echo "Actually, this looks more like a VENIX system..." + echo exit 0 >venix +else + echo " " + if ./xenix; then + : null + else + echo "Nor is it Venix..." + fi +fi +chmod +x bsd usg v7 osf1 eunice xenix venix os2 +$eunicefix bsd usg v7 osf1 eunice xenix venix os2 +$rm -f foo + +: see if setuid scripts can be secure +$cat <reflect + chmod +x,u+s reflect + ./reflect >flect 2>&1 + if $contains "/dev/fd" flect >/dev/null; then + echo "Congratulations, your kernel has secure setuid scripts!" >&4 + val="$define" + else + $cat <&4 + dflt=n;; + "$undef") + echo "Well, the $hint value is *not* secure." >&4 + dflt=n;; + *) echo "Well, the $hint value *is* secure." >&4 + dflt=y;; + esac + ;; + *) + $rm -f reflect flect + echo "#!$ls" >reflect + chmod +x,u+s reflect + echo >flect + chmod a+w flect + echo '"su" will (probably) prompt you for '"$ans's password." + su $ans -c './reflect >flect' + if $contains "/dev/fd" flect >/dev/null; then + echo "Okay, it looks like setuid scripts are secure." >&4 + dflt=y + else + echo "I don't think setuid scripts are secure." >&4 + dflt=n + fi + ;; + esac + rp='Does your kernel have *secure* setuid scripts?' + . ./myread + case "$ans" in + [yY]*) val="$define";; + *) val="$undef";; + esac + fi +else + echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4 + echo "(That's for file descriptors, not floppy disks.)" + val="$undef" +fi +set d_suidsafe +eval $setvar + +$rm -f reflect flect + +: now see if they want to do setuid emulation +echo " " +val="$undef" +case "$d_suidsafe" in +"$define") + val="$undef" + echo "No need to emulate SUID scripts since they are secure here." >& 4 + ;; +*) + $cat <whoa -dflt=y -echo " " -echo "*** WHOA THERE!!! ***" >&4 -echo " The $hint value for \$$var on this machine was \"$was\"!" >&4 -rp=" Keep the $hint value?" -. ./myread -case "$ans" in -y) td=$was; tu=$was;; -esac -EOSC - -: function used to set $1 to $val -setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef; -case "$val$was" in -$define$undef) . ./whoa; eval "$var=\$td";; -$undef$define) . ./whoa; eval "$var=\$tu";; -*) eval "$var=$val";; -esac' - : determine where old public architecture dependent libraries might be case "$oldarchlib" in '') case "$privlib" in @@ -2483,12 +2924,13 @@ if $test ! -d "$dflt/auto"; then fi cat <&4 +else + echo "Could not find manual pages in source form." >&4 fi -man1dir="$ans" -man1direxp="$ansexp" -case "$man1dir" in -'') man1dir=' ' - installman1dir='';; -esac -if $afs; then - $cat <pdp11.c <<'EOP' +main() { +#ifdef pdp11 + exit(0); +#else + exit(1); +#endif +} +EOP + (cc -o pdp11 pdp11.c) >/dev/null 2>&1 + if $test -f pdp11 && ./pdp11 2>/dev/null; then + dflt='unsplit split' + else + tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge` + case "$tans" in + X) dflt='none';; + *) if $test -d /lib/small || $test -d /usr/lib/small; then + dflt='small' + else + dflt='' + fi + if $test -d /lib/medium || $test -d /usr/lib/medium; then + dflt="$dflt medium" + fi + if $test -d /lib/large || $test -d /usr/lib/large; then + dflt="$dflt large" + fi + if $test -d /lib/huge || $test -d /usr/lib/huge; then + dflt="$dflt huge" + fi + esac + fi;; +*) dflt="$models";; +esac +$cat </dev/null 2>&1 || \ + $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then + dflt='-i' + else + dflt='none' + fi;; + *) dflt="$split";; esac + rp="What flag indicates separate I and D space?" . ./myread - man1ext="$ans" + tans="$ans" + case "$tans" in + none) tans='';; + esac + split="$tans" + unsplit='';; +*large*|*small*|*medium*|*huge*) + case "$models" in + *large*) + case "$large" in + '') dflt='-Ml';; + *) dflt="$large";; + esac + rp="What flag indicates large model?" + . ./myread + tans="$ans" + case "$tans" in + none) tans=''; + esac + large="$tans";; + *) large='';; + esac + case "$models" in + *huge*) case "$huge" in + '') dflt='-Mh';; + *) dflt="$huge";; + esac + rp="What flag indicates huge model?" + . ./myread + tans="$ans" + case "$tans" in + none) tans=''; + esac + huge="$tans";; + *) huge="$large";; + esac + case "$models" in + *medium*) case "$medium" in + '') dflt='-Mm';; + *) dflt="$medium";; + esac + rp="What flag indicates medium model?" + . ./myread + tans="$ans" + case "$tans" in + none) tans=''; + esac + medium="$tans";; + *) medium="$large";; + esac + case "$models" in + *small*) case "$small" in + '') dflt='none';; + *) dflt="$small";; + esac + rp="What flag indicates small model?" + . ./myread + tans="$ans" + case "$tans" in + none) tans=''; + esac + small="$tans";; + *) small='';; + esac + ;; +*) + echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4 ;; esac -: see if we can have long filenames +: see if we need a special compiler echo " " -rmlist="$rmlist /tmp/cf$$" -$test -d /tmp/cf$$ || mkdir /tmp/cf$$ -first=123456789abcdef -second=/tmp/cf$$/$first -$rm -f $first $second -if (echo hi >$first) 2>/dev/null; then - if $test -f 123456789abcde; then - echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4 - val="$undef" - else - if (echo hi >$second) 2>/dev/null; then - if $test -f /tmp/cf$$/123456789abcde; then - $cat <<'EOM' -That's peculiar... You can have filenames longer than 14 characters, but only -on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems -I shall consider your system cannot support long filenames at all. +if ./usg; then + case "$cc" in + '') case "$Mcc" in + /*) dflt='Mcc';; + *) case "$large" in + -M*) dflt='cc';; + *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then + if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then + dflt='cc' + else + dflt='cc -M' + fi + else + dflt='cc' + fi;; + esac;; + esac;; + *) dflt="$cc";; + esac + $cat <<'EOM' +On some systems the default C compiler will not resolve multiple global +references that happen to have the same name. On some such systems the "Mcc" +command may be used to force these to be resolved. On other systems a "cc -M" +command is required. (Note that the -M flag on other systems indicates a +memory model to use!) If you have the Gnu C compiler, you might wish to use +that instead. + EOM - val="$undef" - else - echo 'You can have filenames longer than 14 characters.' >&4 - val="$define" - fi - else - $cat <<'EOM' -How confusing! Some of your filesystems are sane enough to allow filenames -longer than 14 characters but some others like /tmp can't even think about them. -So, for now on, I shall assume your kernel does not allow them at all. -EOM - val="$undef" - fi - fi + rp="What command will force resolution on this system?" + . ./myread + cc="$ans" else - $cat <<'EOM' -You can't have filenames longer than 14 chars. You can't even think about them! -EOM - val="$undef" -fi -set d_flexfnam -eval $setvar -$rm -rf /tmp/cf$$ 123456789abcde* - -: determine where library module manual pages go -set man3dir man3dir none -eval $prefixit -$cat <&4 +$cat >gccvers.c < +int main() { +#ifdef __GNUC__ +#ifdef __VERSION__ + printf("%s\n", __VERSION__); +#else + printf("%s\n", "1"); +#endif +#endif + exit(0); +} EOM - case "$man3dir" in - '') man3dir="none";; - esac;; +if $cc -o gccvers gccvers.c >/dev/null 2>&1; then + gccversion=`./gccvers` + case "$gccversion" in + '') echo "You are not using GNU cc." ;; + *) echo "You are using GNU cc $gccversion." ;; + esac +else + echo " " + echo "*** WHOA THERE!!! ***" >&4 + echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4 + case "$knowitall" in + '') + echo " You'd better start hunting for one and let me know about it." >&4 + exit 1 + ;; + esac +fi +$rm -f gccvers* +case "$gccversion" in +1*) cpp=`./loc gcc-cpp $cpp $pth` ;; esac -case "$d_flexfnam" in -undef) - $cat <<'EOM' -However, your system can't handle the long file names like File::Basename.3. -You can use the supplied perldoc script instead. -EOM - case "$man3dir" in - '') man3dir="none";; - esac;; +: What should the include directory be ? +echo " " +$echo $n "Hmm... $c" +dflt='/usr/include' +incpath='' +mips_type='' +if $test -f /bin/mips && /bin/mips; then + echo "Looks like a MIPS system..." + $cat >usr.c <<'EOCP' +#ifdef SYSTYPE_BSD43 +/bsd43 +#endif +EOCP + if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then + dflt='/bsd43/usr/include' + incpath='/bsd43' + mips_type='BSD 4.3' + else + mips_type='System V' + fi + $rm -f usr.c usr.out + echo "and you're compiling with the $mips_type compiler and libraries." + xxx_prompt=y + echo "exit 0" >mips +else + echo "Doesn't look like a MIPS system." + xxx_prompt=n + echo "exit 1" >mips +fi +chmod +x mips +$eunicefix mips +echo " " +case "$usrinc" in +'') ;; +*) dflt="$usrinc";; esac - -echo "If you don't want the manual sources installed, answer 'none'." -: We dont use /usr/local/man/man3 because some man programs will -: only show the /usr/local/man/man3 contents, and not the system ones, -: thus man less will show the perl module less.pm, but not the system -: less command. We might also conflict with TCL man pages. -: However, something like /opt/perl/man/man3 is fine. -case "$man3dir" in -'') case "$prefix" in - *perl*) dflt=`echo $man1dir | $sed 's/man1/man3/g'` ;; - *) dflt="$privlib/man/man3" ;; - esac +case "$xxx_prompt" in +y) fn=d/ + rp='Where are the include files you want to use?' + . ./getfile + usrinc="$ans" + ;; +*) usrinc="$dflt" ;; -' ') dflt=none;; -*) dflt="$man3dir" ;; esac -echo " " - -fn=dn+~ -rp="Where do the $spackage library man pages (source) go?" -. ./getfile -if test "X$man3direxp" != "X$ansexp"; then - installman3dir='' -fi -man3dir="$ans" -man3direxp="$ansexp" -case "$man3dir" in -'') man3dir=' ' - installman3dir='';; +: Set private lib path +case "$plibpth" in +'') if ./mips; then + plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib" + fi;; +esac +case "$libpth" in +' ') dlist='';; +'') dlist="$loclibpth $plibpth $glibpth";; +*) dlist="$libpth";; esac -if $afs; then - $cat <&4 -else - echo "Could not find manual pages in source form." >&4 -fi -: see what memory models we can support -case "$models" in +: compute shared library extension +case "$so" in '') - $cat >pdp11.c <<'EOP' -main() { -#ifdef pdp11 - exit(0); -#else - exit(1); -#endif -} -EOP - cc -o pdp11 pdp11.c >/dev/null 2>&1 - if ./pdp11 2>/dev/null; then - dflt='unsplit split' + if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then + dflt='sl' else - tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge` - case "$tans" in - X) dflt='none';; - *) if $test -d /lib/small || $test -d /usr/lib/small; then - dflt='small' - else - dflt='' - fi - if $test -d /lib/medium || $test -d /usr/lib/medium; then - dflt="$dflt medium" - fi - if $test -d /lib/large || $test -d /usr/lib/large; then - dflt="$dflt large" - fi - if $test -d /lib/huge || $test -d /usr/lib/huge; then - dflt="$dflt huge" - fi - esac - fi;; -*) dflt="$models";; + dflt='so' + fi + ;; +*) dflt="$so";; esac $cat </dev/null 2>&1 || \ - $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then - dflt='-i' - else - dflt='none' - fi;; - *) dflt="$split";; - esac - rp="What flag indicates separate I and D space?" - . ./myread - tans="$ans" - case "$tans" in - none) tans='';; - esac - split="$tans" - unsplit='';; -*large*|*small*|*medium*|*huge*) - case "$models" in - *large*) - case "$large" in - '') dflt='-Ml';; - *) dflt="$large";; - esac - rp="What flag indicates large model?" - . ./myread - tans="$ans" - case "$tans" in - none) tans=''; - esac - large="$tans";; - *) large='';; - esac - case "$models" in - *huge*) case "$huge" in - '') dflt='-Mh';; - *) dflt="$huge";; +: Looking for optional libraries +echo " " +echo "Checking for optional libraries..." >&4 +case "$libs" in +' '|'') dflt='';; +*) dflt="$libs";; +esac +case "$libswanted" in +'') libswanted='c_s';; +esac +for thislib in $libswanted; do + + if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then + echo "Found -l$thislib (shared)." + case " $dflt " in + *"-l$thislib "*);; + *) dflt="$dflt -l$thislib";; esac - rp="What flag indicates huge model?" - . ./myread - tans="$ans" - case "$tans" in - none) tans=''; + elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then + echo "Found -l$thislib (shared)." + case " $dflt " in + *"-l$thislib "*);; + *) dflt="$dflt -l$thislib";; esac - huge="$tans";; - *) huge="$large";; - esac - case "$models" in - *medium*) case "$medium" in - '') dflt='-Mm';; - *) dflt="$medium";; + elif xxx=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$xxx"; then + echo "Found -l$thislib." + case " $dflt " in + *"-l$thislib "*);; + *) dflt="$dflt -l$thislib";; esac - rp="What flag indicates medium model?" - . ./myread - tans="$ans" - case "$tans" in - none) tans=''; + elif xxx=`./loc $thislib$lib_ext X $libpth`; $test -f "$xxx"; then + echo "Found -l$thislib." + case " $dflt " in + *"-l$thislib "*);; + *) dflt="$dflt -l$thislib";; esac - medium="$tans";; - *) medium="$large";; - esac - case "$models" in - *small*) case "$small" in - '') dflt='none';; - *) dflt="$small";; + elif xxx=`./loc lib${thislib}_s$lib_ext X $libpth`; $test -f "$xxx"; then + echo "Found -l${thislib}_s." + case " $dflt " in + *"-l$thislib "*);; + *) dflt="$dflt -l${thislib}_s";; esac - rp="What flag indicates small model?" - . ./myread - tans="$ans" - case "$tans" in - none) tans=''; + elif xxx=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$xxx"; then + echo "Found -l$thislib." + case " $dflt " in + *"-l$thislib "*);; + *) dflt="$dflt -l$thislib";; esac - small="$tans";; - *) small='';; - esac - ;; -*) - echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4 - ;; -esac - -: make some quick guesses about what we are up against -echo " " -$echo $n "Hmm... $c" -echo exit 1 >bsd -echo exit 1 >usg -echo exit 1 >v7 -echo exit 1 >osf1 -echo exit 1 >eunice -echo exit 1 >xenix -echo exit 1 >venix -d_bsd="$undef" -$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null -if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1 -then - echo "Looks kind of like an OSF/1 system, but we'll see..." - echo exit 0 >osf1 -elif test `echo abc | tr a-z A-Z` = Abc ; then - xxx=`./loc addbib blurfl $pth` - if $test -f $xxx; then - echo "Looks kind of like a USG system with BSD features, but we'll see..." - echo exit 0 >bsd - echo exit 0 >usg else - if $contains SIGTSTP foo >/dev/null 2>&1 ; then - echo "Looks kind of like an extended USG system, but we'll see..." - else - echo "Looks kind of like a USG system, but we'll see..." - fi - echo exit 0 >usg + echo "No -l$thislib." fi -elif $contains SIGTSTP foo >/dev/null 2>&1 ; then - echo "Looks kind of like a BSD system, but we'll see..." - d_bsd="$define" - echo exit 0 >bsd -else - echo "Looks kind of like a Version 7 system, but we'll see..." - echo exit 0 >v7 -fi -case "$eunicefix" in -*unixtovms*) - $cat <<'EOI' -There is, however, a strange, musty smell in the air that reminds me of -something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit. -EOI - echo exit 0 >eunice - d_eunice="$define" -: it so happens the Eunice I know will not run shell scripts in Unix format - ;; -*) - echo " " - echo "Congratulations. You aren't running Eunice." - d_eunice="$undef" - ;; +done +set X $dflt +shift +dflt="$*" +case "$libs" in +'') dflt="$dflt";; +*) dflt="$libs";; +esac +case "$dflt" in +' '|'') dflt='none';; esac -if test -f /xenix; then - echo "Actually, this looks more like a XENIX system..." - echo exit 0 >xenix - d_xenix="$define" -else - echo " " - echo "It's not Xenix..." - d_xenix="$undef" -fi -chmod +x xenix -$eunicefix xenix -if test -f /venix; then - echo "Actually, this looks more like a VENIX system..." - echo exit 0 >venix -else - echo " " - if ./xenix; then - : null - else - echo "Nor is it Venix..." - fi -fi -chmod +x bsd usg v7 osf1 eunice xenix venix -$eunicefix bsd usg v7 osf1 eunice xenix venix -$rm -f foo -: see if we need a special compiler -echo " " -if ./usg; then - case "$cc" in - '') case "$Mcc" in - /*) dflt='Mcc';; - *) case "$large" in - -M*) dflt='cc';; - *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then - if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then - dflt='cc' - else - dflt='cc -M' - fi - else - dflt='cc' - fi;; - esac;; - esac;; - *) dflt="$cc";; - esac - $cat <<'EOM' -On some systems the default C compiler will not resolve multiple global -references that happen to have the same name. On some such systems the "Mcc" -command may be used to force these to be resolved. On other systems a "cc -M" -command is required. (Note that the -M flag on other systems indicates a -memory model to use!) If you have the Gnu C compiler, you might wish to use -that instead. +$cat <&4 -$cat >gccvers.c < -int main() { -#ifdef __GNUC__ -#ifdef __VERSION__ - printf("%s\n", __VERSION__); -#else - printf("%s\n", "1"); -#endif -#endif - exit(0); -} -EOM -if $cc -o gccvers gccvers.c >/dev/null 2>&1; then - gccversion=`./gccvers` - case "$gccversion" in - '') echo "You are not using GNU cc." ;; - *) echo "You are using GNU cc $gccversion." ;; - esac -else - echo " " - echo "*** WHOA THERE!!! ***" >&4 - echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4 - case "$knowitall" in - '') - echo " You'd better start hunting for one and let me know about it." >&4 - exit 1 - ;; - esac -fi -$rm -f gccvers* -case "$gccversion" in -1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -esac -: What should the include directory be ? -echo " " -$echo $n "Hmm... $c" -dflt='/usr/include' -incpath='' -mips_type='' -if $test -f /bin/mips && /bin/mips; then - echo "Looks like a MIPS system..." - $cat >usr.c <<'EOCP' -#ifdef SYSTYPE_BSD43 -/bsd43 -#endif -EOCP - if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then - dflt='/bsd43/usr/include' - incpath='/bsd43' - mips_type='BSD 4.3' - else - mips_type='System V' - fi - $rm -f usr.c usr.out - echo "and you're compiling with the $mips_type compiler and libraries." - xxx_prompt=y - echo "exit 0" >mips -else - echo "Doesn't look like a MIPS system." - xxx_prompt=n - echo "exit 1" >mips -fi -chmod +x mips -$eunicefix mips echo " " -case "$usrinc" in -'') ;; -*) dflt="$usrinc";; -esac -case "$xxx_prompt" in -y) fn=d/ - rp='Where are the include files you want to use?' - . ./getfile - usrinc="$ans" - ;; -*) usrinc="$dflt" - ;; +rp="Any additional libraries?" +. ./myread +case "$ans" in +none) libs=' ';; +*) libs="$ans";; esac : see how we invoke the C preprocessor @@ -3387,73 +3579,27 @@ case "$cppstdin" in esac $rm -f testcpp.c testcpp.out -: Set private lib path -case "$plibpth" in -'') if ./mips; then - plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib" - fi;; -esac -case "$libpth" in -' ') dlist='';; -'') dlist="$loclibpth $plibpth $glibpth";; -*) dlist="$libpth";; +: determine optimize, if desired, or use for debug flag also +case "$optimize" in +' '|$undef) dflt='none';; +'') dflt='-O';; +*) dflt="$optimize";; esac +$cat <cpp1.out 2>/dev/null && \ $cpprun -DLFRULB=bar $ftry $cpplast cpp2.out 2>/dev/null && \ @@ -3651,8 +3795,8 @@ rmlist="$rmlist pdp11" : coherency check echo " " -echo "Checking your choice of C compiler and flags for coherency..." >&4 -set X $cc $optimize $ccflags $ldflags try.c -o try +echo "Checking your choice of C compiler, libs, and flags for coherency..." >&4 +set X $cc $optimize $ccflags $ldflags -o try try.c $libs shift $cat >try.msg < try.c <<'EOF' main() { exit(0); } EOF dflt=y -if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then +if sh -c "$cc $optimize $ccflags -o try try.c $ldflags $libs" >>try.msg 2>&1; then if sh -c './try' >>try.msg 2>&1; then dflt=n else echo "The program compiled OK, but exited with status $?." >>try.msg - rp="You have a problem. Shall I abort Configure" + rp="You have a problem. Shall I abort Configure (and explain the problem)" dflt=y fi else echo "I can't compile the test program." >>try.msg - rp="You have a BIG problem. Shall I abort Configure" + rp="You have a BIG problem. Shall I abort Configure (and explain the problem)" dflt=y fi case "$dflt" in y) - $cat try.msg + $cat try.msg >&4 case "$knowitall" in '') echo "(The supplied flags might be incorrect with this C compiler.)" @@ -3703,121 +3847,43 @@ n) echo "OK, that should do.";; esac $rm -f try try.* core -: compute shared library extension -case "$so" in -'') - if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then - dflt='sl' - else - dflt='so' - fi - ;; -*) dflt="$so";; -esac -$cat <&4 -case "$libs" in -' '|'') dflt='';; -*) dflt="$libs";; -esac -case "$libswanted" in -'') libswanted='c_s';; -esac -for thislib in $libswanted; do - - if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then - echo "Found -l$thislib (shared)." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then - echo "Found -l$thislib (shared)." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - elif xxx=`./loc lib$thislib.a X $libpth`; $test -f "$xxx"; then - echo "Found -l$thislib." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - elif xxx=`./loc $thislib.a X $libpth`; $test -f "$xxx"; then - echo "Found -l$thislib." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - elif xxx=`./loc lib${thislib}_s.a X $libpth`; $test -f "$xxx"; then - echo "Found -l${thislib}_s." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l${thislib}_s";; - esac - elif xxx=`./loc Slib$thislib.a X $xlibpth`; $test -f "$xxx"; then - echo "Found -l$thislib." - case " $dflt " in - *"-l$thislib "*);; - *) dflt="$dflt -l$thislib";; - esac - else - echo "No -l$thislib." - fi -done -set X $dflt -shift -dflt="$*" -case "$libs" in -'') dflt="$dflt";; -*) dflt="$libs";; -esac -case "$dflt" in -' '|'') dflt='none';; -esac - -$cat <&4 +cat >gnulibc.c </dev/null 2>&1 && \ + ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then + val="$define" + echo "You are using the GNU C Library" +else + val="$undef" + echo "You are not using the GNU C Library" +fi +$rm -f gnulibc* +set d_gnulibc +eval $setvar : see if nm is to be used to determine whether a symbol is defined or not case "$usenm" in '') - dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null` - if $test $dflt -gt 20; then - dflt=y - else + case "$d_gnulibc" in + $define) dflt=n - fi + ;; + *) + dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null` + if $test $dflt -gt 20; then + dflt=y + else + dflt=n + fi + ;; + esac ;; *) case "$usenm" in @@ -3834,6 +3900,7 @@ but that should make the symbols extraction faster. The alternative is to skip the 'nm' extraction part and to compile a small test program instead to determine whether each symbol is present. If you have a fast C compiler and/or if your 'nm' output cannot be parsed, this may be the best solution. +You shouldn't let me use 'nm' if you have the GNU C Library. EOM rp='Shall I use nm to extract C symbols from the libraries?' @@ -3851,16 +3918,31 @@ esac : nm options which may be necessary case "$nm_opt" in '') if $test -f /mach_boot; then - nm_opt='' + nm_opt='' # Mach elif $test -d /usr/ccs/lib; then - nm_opt='-p' + nm_opt='-p' # Solaris (and SunOS?) elif $test -f /dgux; then - nm_opt='-p' + nm_opt='-p' # DG-UX + elif $test -f /lib64/rld; then + nm_opt='-p' # 64-bit Irix else nm_opt='' fi;; esac +: nm options which may be necessary for shared libraries but illegal +: for archive libraries. Thank you, Linux. +case "$nm_so_opt" in +'') case "$myuname" in + *linux*) + if nm --help | $grep 'dynamic' > /dev/null 2>&1; then + nm_so_opt='--dynamic' + fi + ;; + esac + ;; +esac + case "$runnm" in true) : get list of predefined functions in a handy place @@ -3868,7 +3950,7 @@ echo " " case "$libc" in '') libc=unknown case "$libs" in - *-lc_s*) libc=`./loc libc_s.a $libc $libpth` + *-lc_s*) libc=`./loc libc_s$lib_ext $libc $libpth` esac ;; esac @@ -3886,13 +3968,15 @@ case "$libs" in : elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then : - elif try=`./loc lib$thislib.a X $libpth`; $test -f "$try"; then + elif try=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$try"; then + : + elif try=`./loc $thislib$lib_ext X $libpth`; $test -f "$try"; then : elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then : elif try=`./loc $thislib X $libpth`; $test -f "$try"; then : - elif try=`./loc Slib$thislib.a X $xlibpth`; $test -f "$try"; then + elif try=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$try"; then : else try='' @@ -3907,22 +3991,24 @@ esac xxx=normal case "$libc" in unknown) - set /usr/ccs/lib/libc.$so - $test -r $1 || set /usr/lib/libc.$so - $test -r $1 || set /usr/shlib/libc.$so - $test -r $1 || \ - set `echo blurfl; echo /usr/lib/libc.$so.[0-9]* | \ - tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e ' - h - s/[0-9][0-9]*/0000&/g - s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g - G - s/\n/ /' | \ - sort | $sed -e 's/^.* //'` - eval set \$$# - $test -r $1 || set /lib/libc.$so - $test -r $1 || set /lib/libsys_s.a - ;; + set /lib/libc.$so + for xxx in $libpth; do + $test -r $1 || set $xxx/libc.$so + : The messy sed command sorts on library version numbers. + $test -r $1 || \ + set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \ + tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e ' + h + s/[0-9][0-9]*/0000&/g + s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g + G + s/\n/ /' | \ + sort | $sed -e 's/^.* //'` + eval set \$$# + done + $test -r $1 || set /usr/ccs/lib/libc.$so + $test -r $1 || set /lib/libsys_s$lib_ext + ;; *) set blurfl ;; @@ -3940,25 +4026,25 @@ elif $test -r /lib/libc && $test -r /lib/clib; then fi elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then echo "Your C library seems to be in $libc, as you said before." -elif $test -r $incpath/usr/lib/libc.a; then - libc=$incpath/usr/lib/libc.a; +elif $test -r $incpath/usr/lib/libc$lib_ext; then + libc=$incpath/usr/lib/libc$lib_ext; echo "Your C library seems to be in $libc. That's fine." -elif $test -r /lib/libc.a; then - libc=/lib/libc.a; +elif $test -r /lib/libc$lib_ext; then + libc=/lib/libc$lib_ext; echo "Your C library seems to be in $libc. You're normal." else - if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then + if tans=`./loc libc$lib_ext blurfl/dyick $libpth`; $test -r "$tans"; then : elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then libnames="$libnames "`./loc clib blurfl/dyick $libpth` elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then : - elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then + elif tans=`./loc Slibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then : - elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then + elif tans=`./loc Mlibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then : else - tans=`./loc Llibc.a blurfl/dyick $xlibpth` + tans=`./loc Llibc$lib_ext blurfl/dyick $xlibpth` fi if $test -r "$tans"; then echo "Your C library seems to be in $tans, of all places." @@ -4006,13 +4092,22 @@ $sed 's/^/ /' libnames >&4 echo " " $echo $n "This may take a while...$c" >&4 -nm $nm_opt $* 2>/dev/null >libc.tmp +: Linux may need the special Dynamic option to nm for shared libraries. +: In general, this is stored in the nm_so_opt variable. +: Unfortunately, that option may be fatal on non-shared libraries. +for nm_libs_ext in $*; do + case $nm_libs_ext in + *$so*) nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;; + *) nm $nm_opt $nm_libs_ext 2>/dev/null ;; + esac +done > libc.tmp + $echo $n ".$c" $grep fprintf libc.tmp > libc.ptf xscan='eval "libc.list"; $echo $n ".$c" >&4' xrun='eval "libc.list"; echo "done" >&4' xxx='[ADTSIW]' -if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx //p'";\ +if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\ eval $xscan;\ $contains '^fprintf$' libc.list >/dev/null 2>&1; then eval $xrun @@ -4049,6 +4144,10 @@ elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\ eval $xscan;\ $contains '^fprintf$' libc.list >/dev/null 2>&1; then eval $xrun +elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\ eval $xscan;\ $contains '^fprintf$' libc.list >/dev/null 2>&1; then @@ -4057,6 +4156,10 @@ elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\ eval $xscan;\ $contains '^fprintf$' libc.list >/dev/null 2>&1; then eval $xrun +elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun else nm -p $* 2>/dev/null >libc.tmp $grep fprintf libc.tmp > libc.ptf @@ -4103,134 +4206,7 @@ fi esac $rm -f libnames libpath -: is a C symbol defined? -csym='tlook=$1; -case "$3" in --v) tf=libc.tmp; tc=""; tdc="";; --a) tf=libc.tmp; tc="[0]"; tdc="[]";; -*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";; -esac; -tx=yes; -case "$reuseval-$4" in -true-) ;; -true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;; -esac; -case "$tx" in -yes) - case "$runnm" in - true) - if $contains $tlook $tf >/dev/null 2>&1; - then tval=true; - else tval=false; - fi;; - *) - echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c; - if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1; - then tval=true; - else tval=false; - fi; - $rm -f t t.c;; - esac;; -*) - case "$tval" in - $define) tval=true;; - *) tval=false;; - esac;; -esac; -eval "$2=$tval"' - -: define an is-in-libc? function -inlibc='echo " "; td=$define; tu=$undef; -sym=$1; var=$2; eval "was=\$$2"; -tx=yes; -case "$reuseval$was" in -true) ;; -true*) tx=no;; -esac; -case "$tx" in -yes) - set $sym tres -f; - eval $csym; - case "$tres" in - true) - echo "$sym() found." >&4; - case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";; - *) - echo "$sym() NOT found." >&4; - case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";; - esac;; -*) - case "$was" in - $define) echo "$sym() found." >&4;; - *) echo "$sym() NOT found." >&4;; - esac;; -esac' - -: Check how to convert floats to strings. -echo " " -echo "Checking for an efficient way to convert floats to strings." -$cat >try.c <<'EOP' -#ifdef TRY_gconvert -#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b)) -#endif -#ifdef TRY_gcvt -#define Gconvert(x,n,t,b) gcvt((x),(n),(b)) -#endif -#ifdef TRY_sprintf -#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x)) -#endif -main() { - char buf[64]; - Gconvert(1.0, 8, 0, buf); - if (buf[0] != '1' || buf[1] != '\0') - exit(1); - Gconvert(0.0, 8, 0, buf); - if (buf[0] != '0' || buf[1] != '\0') - exit(1); - Gconvert(-1.0, 8, 0, buf); - if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0') - exit(1); - exit(0); -} -EOP -case "$d_Gconvert" in -gconvert*) xxx_list='gconvert gcvt sprintf' ;; -gcvt*) xxx_list='gcvt gconvert sprintf' ;; -sprintf*) xxx_list='sprintf gconvert gcvt' ;; -*) xxx_list='gconvert gcvt sprintf' ;; -esac - -for xxx_convert in $xxx_list; do - echo "Trying $xxx_convert" - $rm -f try try.o - if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \ - try.c $libs > /dev/null 2>&1 ; then - echo "$xxx_convert" found. >&4 - if ./try; then - echo "Good, $xxx_convert drops a trailing decimal point." - echo "I'll use $xxx_convert to convert floats into a string." >&4 - break; - else - echo "But $xxx_convert keeps a trailing decimal point". - fi - else - echo "$xxx_convert NOT found." >&4 - fi -done - -case "$xxx_convert" in -gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;; -gcvt) d_Gconvert='gcvt((x),(n),(b))' ;; -*) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;; -esac - -: Initialize h_fcntl -h_fcntl=false - -: Initialize h_sysfile -h_sysfile=false - -: determine filename position in cpp output +: determine filename position in cpp output echo " " echo "Computing filename position in cpp output for #include directives..." >&4 echo '#include ' > foo.c @@ -4290,841 +4266,1991 @@ esac EOF chmod +x findhdr -: access call always available on UNIX -set access d_access +: define an alternate in-header-list? function +inhdr='echo " "; td=$define; tu=$undef; yyy=$@; +cont=true; xxf="echo \"<\$1> found.\" >&4"; +case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";; +*) xxnf="echo \"<\$1> NOT found, ...\" >&4";; +esac; +case $# in 4) instead=instead;; *) instead="at last";; esac; +while $test "$cont"; do + xxx=`./findhdr $1` + var=$2; eval "was=\$$2"; + if $test "$xxx" && $test -r "$xxx"; + then eval $xxf; + eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td"; + cont=""; + else eval $xxnf; + eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi; + set $yyy; shift; shift; yyy=$@; + case $# in 0) cont="";; + 2) xxf="echo \"but I found <\$1> $instead.\" >&4"; + xxnf="echo \"and I did not find <\$1> either.\" >&4";; + *) xxf="echo \"but I found <\$1\> instead.\" >&4"; + xxnf="echo \"there is no <\$1>, ...\" >&4";; + esac; +done; +while $test "$yyy"; +do set $yyy; var=$2; eval "was=\$$2"; + eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; + set $yyy; shift; shift; yyy=$@; +done' + +: see if dld is available +set dld.h i_dld +eval $inhdr + +: is a C symbol defined? +csym='tlook=$1; +case "$3" in +-v) tf=libc.tmp; tc=""; tdc="";; +-a) tf=libc.tmp; tc="[0]"; tdc="[]";; +*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";; +esac; +tx=yes; +case "$reuseval-$4" in +true-) ;; +true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;; +esac; +case "$tx" in +yes) + case "$runnm" in + true) + if $contains $tlook $tf >/dev/null 2>&1; + then tval=true; + else tval=false; + fi;; + *) + echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c; + if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1; + then tval=true; + else tval=false; + fi; + $rm -f t t.c;; + esac;; +*) + case "$tval" in + $define) tval=true;; + *) tval=false;; + esac;; +esac; +eval "$2=$tval"' + +: define an is-in-libc? function +inlibc='echo " "; td=$define; tu=$undef; +sym=$1; var=$2; eval "was=\$$2"; +tx=yes; +case "$reuseval$was" in +true) ;; +true*) tx=no;; +esac; +case "$tx" in +yes) + set $sym tres -f; + eval $csym; + case "$tres" in + true) + echo "$sym() found." >&4; + case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";; + *) + echo "$sym() NOT found." >&4; + case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";; + esac;; +*) + case "$was" in + $define) echo "$sym() found." >&4;; + *) echo "$sym() NOT found." >&4;; + esac;; +esac' + +: see if dlopen exists +xxx_runnm="$runnm" +runnm=false +set dlopen d_dlopen eval $inlibc +runnm="$xxx_runnm" -: locate the flags for 'access()' -case "$d_access" in -"$define") - echo " " - $cat >access.c <<'EOCP' -#include -#ifdef I_FCNTL +: determine which dynamic loading, if any, to compile in +echo " " +dldir="ext/DynaLoader" +case "$usedl" in +$define|y|true) + dflt='y' + usedl="$define" + ;; +$undef|n|false) + dflt='n' + usedl="$undef" + ;; +*) + dflt='n' + case "$d_dlopen" in + $define) dflt='y' ;; + esac + case "$i_dld" in + $define) dflt='y' ;; + esac + : Does a dl_xxx.xs file exist for this operating system + $test -f ../$dldir/dl_${osname}.xs && dflt='y' + ;; +esac +rp="Do you wish to use dynamic loading?" +. ./myread +usedl="$ans" +case "$ans" in +y*) usedl="$define" + case "$dlsrc" in + '') + if $test -f ../$dldir/dl_${osname}.xs ; then + dflt="$dldir/dl_${osname}.xs" + elif $test "$d_dlopen" = "$define" ; then + dflt="$dldir/dl_dlopen.xs" + elif $test "$i_dld" = "$define" ; then + dflt="$dldir/dl_dld.xs" + else + dflt='' + fi + ;; + *) dflt="$dldir/$dlsrc" + ;; + esac + echo "The following dynamic loading files are available:" + : Can not go over to $dldir because getfile has path hard-coded in. + cd ..; ls -C $dldir/dl*.xs; cd UU + rp="Source file to use for dynamic loading" + fn="fne" + . ./getfile + usedl="$define" + : emulate basename + dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'` + + $cat << EOM + +Some systems may require passing special flags to $cc -c to +compile modules that will be used to create a shared library. +To use no flags, say "none". + +EOM + case "$cccdlflags" in + '') case "$gccversion" in + '') case "$osname" in + hpux) dflt='+z' ;; + next) dflt='none' ;; + svr4*|esix*) dflt='-Kpic' ;; + irix*) dflt='-KPIC' ;; + solaris) case "$ccflags" in + *-DDEBUGGING*) dflt='-KPIC' ;; + *) dflt='-Kpic' ;; + esac ;; + sunos) dflt='-pic' ;; + *) dflt='none' ;; + esac ;; + *) case "$osname/$ccflags" in + solaris/*-DDEBUGGING*) dflt='-fPIC' ;; + *) dflt='-fpic' ;; + esac ;; + esac ;; + *) dflt="$cccdlflags" ;; + esac + rp="Any special flags to pass to $cc -c to compile shared library modules?" + . ./myread + case "$ans" in + none) cccdlflags=' ' ;; + *) cccdlflags="$ans" ;; + esac + + cat << EOM + +Some systems use ld to create libraries that can be dynamically loaded, +while other systems (such as those using ELF) use $cc. + +EOM + case "$ld" in + '') $cat >try.c <<'EOM' +/* Test for whether ELF binaries are produced */ #include -#endif -#ifdef I_SYS_FILE -#include -#endif -#ifdef I_UNISTD -#include -#endif +#include main() { - exit(R_OK); + char b[4]; + int i = open("a.out",O_RDONLY); + if(i == -1) + exit(1); /* fail */ + if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F') + exit(0); /* succeed (yes, it's ELF) */ + else + exit(1); /* fail */ } -EOCP - : check sys/file.h first, no particular reason here - if $test `./findhdr sys/file.h` && \ - $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then - h_sysfile=true; - echo " defines the *_OK access constants." >&4 - elif $test `./findhdr fcntl.h` && \ - $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then - h_fcntl=true; - echo " defines the *_OK access constants." >&4 - elif $test `./findhdr unistd.h` && \ - $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then - echo " defines the *_OK access constants." >&4 +EOM + if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then + cat <&4 + +To build perl, you must add the current working directory to your +$xxx environtment variable before running make. You can do +this with + $xxx=\`pwd\`; export $xxx +for Bourne-style shells, or + setenv $xxx \`pwd\` +for Csh-style shells. You *MUST* do this before running make. + +EOM + ;; + *) useshrplib='false' ;; + esac + ;; +esac + +case "$useshrplib" in +true) + case "$libperl" in + '') + # Figure out a good name for libperl.so. Since it gets stored in + # a version-specific architecture-dependent library, the version + # number isn't really that important, except for making cc/ld happy. + # + # A name such as libperl.so.3.1 + majmin="libperl.$so.$patchlevel.$subversion" + # A name such as libperl.so.301 + majonly=`echo $patchlevel $subversion | + $awk '{printf "%d%02d", $1, $2}'` + majonly=libperl.$so.$majonly + # I'd prefer to keep the os-specific stuff here to a minimum, and + # rely on figuring it out from the naming of libc. + case "${osname}${osvers}" in + next4*) + dflt=libperl.5.$so + # XXX How handle the --version stuff for MAB? + ;; + linux*) # ld won't link with a bare -lperl otherwise. + dflt=libperl.$so + ;; + *) # Try to guess based on whether libc has major.minor. + case "$libc" in + *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;; + *libc.$so.[0-9]*) dflt=$majonly ;; + *) dflt=libperl.$so ;; + esac + ;; + esac + ;; + *) dflt=$libperl + ;; + esac + cat << EOM + +I need to select a good name for the shared libperl. If your system uses +library names with major and minor numbers, then you might want something +like $majmin. Alternatively, if your system uses a single version +number for shared libraries, then you might want to use $majonly. +Or, your system might be quite happy with a simple libperl.$so. + +Since the shared libperl will get installed into a version-specific +architecture-dependent directory, the version number of the shared perl +library probably isn't important, so the default should be o.k. + +EOM + rp='What name do you want to give to the shared libperl?' + . ./myread + libperl=$ans + echo "Ok, I'll use $libperl" + ;; +*) + libperl="libperl${lib_ext}" + ;; +esac + +# Detect old use of shrpdir via undocumented Configure -Dshrpdir +case "$shrpdir" in +'') ;; +*) $cat >&4 <&4 <&4 <&4 + +Adding $xxx to the flags +passed to $ld so that the perl executable will find the +installed shared $libperl. + +EOM + ;; + esac + ;; + esac +fi +# Respect a hint or command-line value. +case "$shrpenv" in +'') shrpenv="$tmp_shrpenv" ;; +esac + +: determine where manual pages go +set man1dir man1dir none +eval $prefixit +$cat <$first) 2>/dev/null; then + if $test -f 123456789abcde; then + echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4 + val="$undef" + else + if (echo hi >$second) 2>/dev/null; then + if $test -f /tmp/cf$$/123456789abcde; then + $cat <<'EOM' +That's peculiar... You can have filenames longer than 14 characters, but only +on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems +I shall consider your system cannot support long filenames at all. +EOM + val="$undef" + else + echo 'You can have filenames longer than 14 characters.' >&4 + val="$define" + fi + else + $cat <<'EOM' +How confusing! Some of your filesystems are sane enough to allow filenames +longer than 14 characters but some others like /tmp can't even think about them. +So, for now on, I shall assume your kernel does not allow them at all. +EOM + val="$undef" + fi + fi +else + $cat <<'EOM' +You can't have filenames longer than 14 chars. You can't even think about them! +EOM + val="$undef" +fi +set d_flexfnam +eval $setvar +$rm -rf /tmp/cf$$ 123456789abcde* + +: determine where library module manual pages go +set man3dir man3dir none +eval $prefixit +$cat </dev/null 2>&1; then + dflt=y + else + dflt=n + fi;; + *) dflt=n;; + esac + echo " " + rp='Are you getting the hosts file via yellow pages?' + . ./myread + case "$ans" in + y*) hostcat='ypcat hosts';; + *) hostcat='cat /etc/hosts';; + esac + ;; + esac +fi + +: now get the host name +echo " " +echo "Figuring out host name..." >&4 +case "$myhostname" in +'') cont=true + echo 'Maybe "hostname" will work...' + if tans=`sh -c hostname 2>&1` ; then + myhostname=$tans + phostname=hostname + cont='' + fi + ;; +*) cont='';; +esac +if $test "$cont"; then + if ./xenix; then + echo 'Oh, dear. Maybe "/etc/systemid" is the key...' + if tans=`cat /etc/systemid 2>&1` ; then + myhostname=$tans + phostname='cat /etc/systemid' + echo "Whadyaknow. Xenix always was a bit strange..." + cont='' + fi + elif $test -r /etc/systemid; then + echo "(What is a non-Xenix system doing with /etc/systemid?)" + fi +fi +if $test "$cont"; then + echo 'No, maybe "uuname -l" will work...' + if tans=`sh -c 'uuname -l' 2>&1` ; then + myhostname=$tans + phostname='uuname -l' else - echo "I can't find the four *_OK access constants--I'll use mine." >&4 + echo 'Strange. Maybe "uname -n" will work...' + if tans=`sh -c 'uname -n' 2>&1` ; then + myhostname=$tans + phostname='uname -n' + else + echo 'Oh well, maybe I can mine it out of whoami.h...' + if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then + myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'` + phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h" + else + case "$myhostname" in + '') echo "Does this machine have an identity crisis or something?" + phostname='';; + *) + echo "Well, you said $myhostname before..." + phostname='echo $myhostname';; + esac + fi + fi fi +fi +: you do not want to know about this +set $myhostname +myhostname=$1 + +: verify guess +if $test "$myhostname" ; then + dflt=y + rp='Your host name appears to be "'$myhostname'".'" Right?" + . ./myread + case "$ans" in + y*) ;; + *) myhostname='';; + esac +fi + +: bad guess or no guess +while $test "X$myhostname" = X ; do + dflt='' + rp="Please type the (one word) name of your host:" + . ./myread + myhostname="$ans" +done + +: translate upper to lower if necessary +case "$myhostname" in +*[A-Z]*) + echo "(Normalizing case in your host name)" + myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'` ;; esac -$rm -f access* -: see if alarm exists -set alarm d_alarm -eval $inlibc +case "$myhostname" in +*.*) + dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"` + myhostname=`expr "X$myhostname" : "X\([^.]*\)\."` + echo "(Trimming domain name from host name--host name is now $myhostname)" + ;; +*) case "$mydomain" in + '') + { + : If we use NIS, try ypmatch. + : Is there some reason why this was not done before? + test "X$hostcat" = "Xypcat hosts" && + ypmatch "$myhostname" hosts 2>/dev/null |\ + $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \ + $test -s hosts + } || { + : Extract only the relevant hosts, reducing file size, + : remove comments, insert trailing space for later use. + $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ / + /[ ]$myhostname[ . ]/p" > hosts + } + tmp_re="[ . ]" + $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ } + END { print sum }" hosts` = x1 || tmp_re="[ ]" + dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \ + hosts | $sort | $uniq | \ + $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"` + case `$echo X$dflt` in + X*\ *) echo "(Several hosts in /etc/hosts matched hostname)" + dflt=. + ;; + X.) echo "(You do not have fully-qualified names in /etc/hosts)" + ;; + esac + case "$dflt" in + .) + tans=`./loc resolv.conf X /etc /usr/etc` + if $test -f "$tans"; then + echo "(Attempting domain name extraction from $tans)" + : Why was there an Egrep here, when Sed works? + : Look for either a search or a domain directive. + dflt=.`$sed -n -e 's/ / /g' \ + -e 's/^search *\([^ ]*\).*/\1/p' $tans \ + | ./tr '[A-Z]' '[a-z]' 2>/dev/null` + case "$dflt" in + .) dflt=.`$sed -n -e 's/ / /g' \ + -e 's/^domain *\([^ ]*\).*/\1/p' $tans \ + | ./tr '[A-Z]' '[a-z]' 2>/dev/null` + ;; + esac + fi + ;; + esac + case "$dflt" in + .) echo "(No help from resolv.conf either -- attempting clever guess)" + dflt=.`sh -c domainname 2>/dev/null` + case "$dflt" in + '') dflt='.';; + .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;; + esac + ;; + esac + case "$dflt" in + .) echo "(Lost all hope -- silly guess then)" + dflt='.uucp' + ;; + esac + $rm -f hosts + ;; + *) dflt="$mydomain";; + esac;; +esac +echo " " +rp="What is your domain name?" +. ./myread +tans="$ans" +case "$ans" in +'') ;; +.*) ;; +*) tans=".$tans";; +esac +mydomain="$tans" + +: translate upper to lower if necessary +case "$mydomain" in +*[A-Z]*) + echo "(Normalizing case in your domain name)" + mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'` + ;; +esac + +: a little sanity check here +case "$phostname" in +'') ;; +*) + case `$phostname | ./tr '[A-Z]' '[a-z]'` in + $myhostname$mydomain|$myhostname) ;; + *) + case "$phostname" in + sed*) + echo "(That doesn't agree with your whoami.h file, by the way.)" + ;; + *) + echo "(That doesn't agree with your $phostname command, by the way.)" + ;; + esac + ;; + esac + ;; +esac + +$cat <&4 -$cat >attrib.c <<'EOCP' -#include -void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn)); -EOCP -if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then - if $contains 'warning' attrib.out >/dev/null 2>&1; then - echo "Your C compiler doesn't fully support __attribute__." - val="$undef" - else - echo "Your C compiler supports __attribute__." - val="$define" - fi -else - echo "Your C compiler doesn't seem to understand __attribute__ at all." - val="$undef" -fi -set d_attribut -eval $setvar -$rm -f attrib* +If you or somebody else will be maintaining perl at your site, please +fill in the correct e-mail address here so that they may be contacted +if necessary. Currently, the "perlbug" program included with perl +will send mail to this address in addition to perlbug@perl.com. You may +enter "none" for no administrator. -: see if bcmp exists -set bcmp d_bcmp -eval $inlibc +EOM +case "$perladmin" in +'') dflt="$cf_email";; +*) dflt="$perladmin";; +esac +rp='Perl administrator e-mail address' +. ./myread +perladmin="$ans" -: see if bcopy exists -set bcopy d_bcopy -eval $inlibc +: figure out how to guarantee perl startup +case "$startperl" in +'') + case "$sharpbang" in + *!) + $cat <set.c </dev/null 2>&1; then - ./set 2>/dev/null - case $? in - 0) echo "You have to use setpgrp() instead of setpgrp(pid, pgrp)." >&4 - val="$undef";; - *) echo "You have to use setpgrp(pid, pgrp) instead of setpgrp()." >&4 - val="$define";; +EOH + dflt="$binexp/perl" + rp='What shall I put after the #! to start up perl ("none" to not use #!)?' + . ./myread + case "$ans" in + none) startperl=": # use perl";; + *) startperl="#!$ans" + if $test 30 -lt `echo "$ans" | wc -c`; then + $cat >&4 <&4 - fi + ;; + *) startperl=": # use perl" + ;; + esac ;; -*) val="$undef";; esac -set d_bsdpgrp -eval $setvar -$rm -f set set.c - -: see if bzero exists -set bzero d_bzero -eval $inlibc +echo "I'll use $startperl to start perl scripts." -: check for length of integer -echo " " -case "$intsize" in +: figure best path for perl in scripts +case "$perlpath" in '') - echo "Checking to see how big your integers are..." >&4 - $cat >try.c <<'EOCP' -#include -main() -{ - printf("%d\n", sizeof(int)); - exit(0); -} -EOCP - if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then - intsize=`./try` - echo "Your integers are $intsize bytes long." - else - dflt='4' - echo "(I can't seem to compile the test program. Guessing...)" - rp="What is the size of an integer (in bytes)?" - . ./myread - intsize="$ans" - fi - ;; -esac -$rm -f try.c try + perlpath="$binexp/perl" + case "$startperl" in + *!*) ;; + *) + $cat <$$.tmp 2>/dev/null -if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then - echo "You have int (*signal())() instead of void." >&4 - val="$undef" -elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then - echo "You have void (*signal())() instead of int." >&4 - val="$define" -elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then - echo "You have int (*signal())() instead of void." >&4 - val="$undef" -else - case "$d_voidsig" in - '') - echo "I can't determine whether signal handler returns void or int..." >&4 - dflt=void - rp="What type does your signal handler return?" +I will use the "eval 'exec'" idiom to start Perl on your system. +I can use the full path of your Perl binary for this purpose, but +doing so may cause problems if you want to share those scripts and +Perl is not always in a standard place ($binexp/perl). + +EOH + dflt="$binexp/perl" + rp="What path shall I use in \"eval 'exec'\"?" . ./myread - case "$ans" in - v*) val="$define";; - *) val="$undef";; - esac;; - "$define") - echo "As you already told me, signal handler returns void." >&4;; - *) - echo "As you already told me, signal handler returns int." >&4;; + perlpath="$ans" + ;; esac -fi -set d_voidsig -eval $setvar -case "$d_voidsig" in -"$define") signal_t="void";; -*) signal_t="int";; + ;; +esac +case "$startperl" in +*!*) ;; +*) echo "I'll use $perlpath in \"eval 'exec'\"" ;; esac -$rm -f $$.tmp -: check for ability to cast large floats to 32-bit ints. -echo " " -echo 'Checking whether your C compiler can cast large floats to int32.' >&4 -if $test "$intsize" -eq 4; then - xxx=int -else - xxx=long +: determine where public executable scripts go +set scriptdir scriptdir +eval $prefixit +case "$scriptdir" in +'') + dflt="$bin" + : guess some guesses + $test -d /usr/share/scripts && dflt=/usr/share/scripts + $test -d /usr/share/bin && dflt=/usr/share/bin + $test -d /usr/local/script && dflt=/usr/local/script + $test -d $prefixexp/script && dflt=$prefixexp/script + set dflt + eval $prefixup + ;; +*) dflt="$scriptdir" + ;; +esac +$cat <try.c < -#include -$signal_t blech() { exit(3); } -main() -{ - $xxx i32; - double f; - int result = 0; - signal(SIGFPE, blech); +scriptdir="$ans" +scriptdirexp="$ansexp" +if $afs; then + $cat </dev/null 2>&1; then - ./try - yyy=$? +EOM + case "$installscript" in + '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;; + *) dflt="$installscript";; + esac + fn=de~ + rp='Where will public scripts be installed?' + . ./getfile + installscript="$ans" else - echo "(I can't seem to compile the test program--assuming it can't)" - yyy=1 + installscript="$scriptdirexp" fi -case "$yyy" in -0) val="$define" - echo "Yup, it can." - ;; -*) val="$undef" - echo "Nope, it can't." - ;; -esac -set d_casti32 -eval $setvar -$rm -f try try.* -: check for ability to cast negative floats to unsigned -echo " " -echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4 -$cat >try.c < -#include -$signal_t blech() { exit(7); } -$signal_t blech_in_list() { exit(4); } -unsigned long dummy_long(p) unsigned long p; { return p; } -unsigned int dummy_int(p) unsigned int p; { return p; } -unsigned short dummy_short(p) unsigned short p; { return p; } -main() -{ - double f = -123.; - unsigned long along; - unsigned int aint; - unsigned short ashort; - int result = 0; +cat <. Versions 5.003_02 and later of perl allow alternate IO +mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still +the default. This abstraction layer can use AT&T's sfio (if you already +have sfio installed) or regular stdio. Using PerlIO with sfio may cause +problems with some extension modules. Using PerlIO with stdio is safe, +but it is slower than plain stdio and therefore is not the default. -} -EOCP -if $cc -o try $ccflags try.c >/dev/null 2>&1; then - ./try - castflags=$? -else - echo "(I can't seem to compile the test program--assuming it can't)" - castflags=7 -fi -case "$castflags" in -0) val="$define" - echo "Yup, it can." - ;; -*) val="$undef" - echo "Nope, it can't." +If this doesn't make any sense to you, just accept the default 'n'. +EOM +case "$useperlio" in +$define|true|[yY]*) dflt='y';; +*) dflt='n';; +esac +rp='Use the experimental PerlIO abstraction layer?' +. ./myread +case "$ans" in +y|Y) + val="$define" + ;; +*) + echo "Ok, doing things the stdio way" + val="$undef" ;; esac -set d_castneg -eval $setvar -$rm -f try.* +set useperlio +eval $setvar -: see if vprintf exists +: Check how to convert floats to strings. echo " " -if set vprintf val -f d_vprintf; eval $csym; $val; then - echo 'vprintf() found.' >&4 - val="$define" - $cat >vprintf.c <<'EOF' -#include +echo "Checking for an efficient way to convert floats to strings." +$cat >try.c <<'EOP' +#ifdef TRY_gconvert +#define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b)) +char *myname = "gconvert"; +#endif +#ifdef TRY_gcvt +#define Gconvert(x,n,t,b) gcvt((x),(n),(b)) +char *myname = "gcvt"; +#endif +#ifdef TRY_sprintf +#define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x)) +char *myname = "sprintf"; +#endif -main() { xxx("foo"); } +#include -xxx(va_alist) -va_dcl +int +checkit(expect, got) +char *expect; +char *got; { - va_list args; - char buf[10]; + if (strcmp(expect, got)) { + printf("%s oddity: Expected %s, got %s\n", + myname, expect, got); + exit(1); + } +} - va_start(args); - exit((unsigned long)vsprintf(buf,"%s",args) > 10L); +int +main() +{ + char buf[64]; + buf[63] = '\0'; + + /* This must be 1st test on (which?) platform */ + /* Alan Burlison */ + Gconvert(0.1, 8, 0, buf); + checkit("0.1", buf); + + Gconvert(1.0, 8, 0, buf); + checkit("1", buf); + + Gconvert(0.0, 8, 0, buf); + checkit("0", buf); + + Gconvert(-1.0, 8, 0, buf); + checkit("-1", buf); + + /* Some Linux gcvt's give 1.e+5 here. */ + Gconvert(100000.0, 8, 0, buf); + checkit("100000", buf); + + /* Some Linux gcvt's give -1.e+5 here. */ + Gconvert(-100000.0, 8, 0, buf); + checkit("-100000", buf); + + exit(0); } -EOF - if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then - echo "Your vsprintf() returns (int)." >&4 - val2="$undef" +EOP +case "$d_Gconvert" in +gconvert*) xxx_list='gconvert gcvt sprintf' ;; +gcvt*) xxx_list='gcvt gconvert sprintf' ;; +sprintf*) xxx_list='sprintf gconvert gcvt' ;; +*) xxx_list='gconvert gcvt sprintf' ;; +esac + +for xxx_convert in $xxx_list; do + echo "Trying $xxx_convert" + $rm -f try try.o + if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \ + try.c $libs > /dev/null 2>&1 ; then + echo "$xxx_convert" found. >&4 + if ./try; then + echo "I'll use $xxx_convert to convert floats into a string." >&4 + break; + else + echo "...But $xxx_convert didn't work as I expected." + fi else - echo "Your vsprintf() returns (char*)." >&4 - val2="$define" + echo "$xxx_convert NOT found." >&4 fi -else - echo 'vprintf() NOT found.' >&4 - val="$undef" - val2="$undef" -fi -set d_vprintf -eval $setvar -val=$val2 -set d_charvspr -eval $setvar +done + +case "$xxx_convert" in +gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;; +gcvt) d_Gconvert='gcvt((x),(n),(b))' ;; +*) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;; +esac -: see if chown exists -set chown d_chown -eval $inlibc +: Initialize h_fcntl +h_fcntl=false -: see if chroot exists -set chroot d_chroot -eval $inlibc +: Initialize h_sysfile +h_sysfile=false -: see if chsize exists -set chsize d_chsize +: access call always available on UNIX +set access d_access eval $inlibc -: check for const keyword -echo " " -echo 'Checking to see if your C compiler knows about "const"...' >&4 -$cat >const.c <<'EOCP' -typedef struct spug { int drokk; } spug; -main() -{ - const char *foo; - const spug y; +: locate the flags for 'access()' +case "$d_access" in +"$define") + echo " " + $cat >access.c <<'EOCP' +#include +#ifdef I_FCNTL +#include +#endif +#ifdef I_SYS_FILE +#include +#endif +#ifdef I_UNISTD +#include +#endif +main() { + exit(R_OK); } EOCP -if $cc -c $ccflags const.c >/dev/null 2>&1 ; then - val="$define" - echo "Yup, it does." -else - val="$undef" - echo "Nope, it doesn't." -fi -set d_const -eval $setvar - -: see if crypt exists -echo " " -if set crypt val -f d_crypt; eval $csym; $val; then - echo 'crypt() found.' >&4 - val="$define" - cryptlib='' -else - cryptlib=`./loc Slibcrypt.a "" $xlibpth` - if $test -z "$cryptlib"; then - cryptlib=`./loc Mlibcrypt.a "" $xlibpth` - else - cryptlib=-lcrypt - fi - if $test -z "$cryptlib"; then - cryptlib=`./loc Llibcrypt.a "" $xlibpth` - else - cryptlib=-lcrypt - fi - if $test -z "$cryptlib"; then - cryptlib=`./loc libcrypt.a "" $libpth` + : check sys/file.h first, no particular reason here + if $test `./findhdr sys/file.h` && \ + $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then + h_sysfile=true; + echo " defines the *_OK access constants." >&4 + elif $test `./findhdr fcntl.h` && \ + $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then + h_fcntl=true; + echo " defines the *_OK access constants." >&4 + elif $test `./findhdr unistd.h` && \ + $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then + echo " defines the *_OK access constants." >&4 else - cryptlib=-lcrypt + echo "I can't find the four *_OK access constants--I'll use mine." >&4 fi - if $test -z "$cryptlib"; then - echo 'crypt() NOT found.' >&4 + ;; +esac +$rm -f access* + +: see if alarm exists +set alarm d_alarm +eval $inlibc + +: Look for GNU-cc style attribute checking +echo " " +echo "Checking whether your compiler can handle __attribute__ ..." >&4 +$cat >attrib.c <<'EOCP' +#include +void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn)); +EOCP +if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then + if $contains 'warning' attrib.out >/dev/null 2>&1; then + echo "Your C compiler doesn't fully support __attribute__." val="$undef" else + echo "Your C compiler supports __attribute__." val="$define" fi +else + echo "Your C compiler doesn't seem to understand __attribute__ at all." + val="$undef" fi -set d_crypt -eval $setvar - -: get csh whereabouts -case "$csh" in -'csh') val="$undef" ;; -*) val="$define" ;; -esac -set d_csh +set d_attribut eval $setvar -full_csh=$csh +$rm -f attrib* -: see if cuserid exists -set cuserid d_cuserid +: see if bcmp exists +set bcmp d_bcmp eval $inlibc -: define an alternate in-header-list? function -inhdr='echo " "; td=$define; tu=$undef; yyy=$@; -cont=true; xxf="echo \"<\$1> found.\" >&4"; -case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";; -*) xxnf="echo \"<\$1> NOT found, ...\" >&4";; -esac; -case $# in 4) instead=instead;; *) instead="at last";; esac; -while $test "$cont"; do - xxx=`./findhdr $1` - var=$2; eval "was=\$$2"; - if $test "$xxx" && $test -r "$xxx"; - then eval $xxf; - eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td"; - cont=""; - else eval $xxnf; - eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi; - set $yyy; shift; shift; yyy=$@; - case $# in 0) cont="";; - 2) xxf="echo \"but I found <\$1> $instead.\" >&4"; - xxnf="echo \"and I did not find <\$1> either.\" >&4";; - *) xxf="echo \"but I found <\$1\> instead.\" >&4"; - xxnf="echo \"there is no <\$1>, ...\" >&4";; - esac; -done; -while $test "$yyy"; -do set $yyy; var=$2; eval "was=\$$2"; - eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; - set $yyy; shift; shift; yyy=$@; -done' +: see if bcopy exists +set bcopy d_bcopy +eval $inlibc -: see if this is a limits.h system -set limits.h i_limits +: see if this is a unistd.h system +set unistd.h i_unistd eval $inhdr -: see if this is a float.h system -set float.h i_float -eval $inhdr +: see if getpgrp exists +set getpgrp d_getpgrp +eval $inlibc -: See if number of significant digits in a double precision number is known -echo " " -$cat >dbl_dig.c < -#endif -#ifdef I_FLOAT -#include +echo "Checking to see which flavor of getpgrp is in use . . . " +case "$d_getpgrp" in +"$define") + echo " " + $cat >set.c < +#ifdef I_UNISTD +# include #endif -#ifdef DBL_DIG -printf("Contains DBL_DIG"); +main() +{ + if (getuid() == 0) { + printf("(I see you are running Configure as super-user...)\n"); + setuid(1); + } +#ifdef TRY_BSD_PGRP + if (getpgrp(1) == 0) + exit(0); +#else + if (getpgrp() > 0) + exit(0); #endif -EOM -$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null -if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then - echo "DBL_DIG found." >&4 - val="$define" -else - echo "DBL_DIG NOT found." >&4 - val="$undef" -fi -$rm -f dbl_dig.? -set d_dbl_dig + exit(1); +} +EOP + if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then + echo "You have to use getpgrp(pid) instead of getpgrp()." >&4 + val="$define" + elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then + echo "You have to use getpgrp() instead of getpgrp(pid)." >&4 + val="$undef" + else + echo "I can't seem to compile and run the test program." + if ./usg; then + xxx="a USG one, i.e. you use getpgrp()." + else + # SVR4 systems can appear rather BSD-ish. + case "$i_unistd" in + $undef) + xxx="a BSD one, i.e. you use getpgrp(pid)." + val="$define" + ;; + $define) + xxx="probably a USG one, i.e. you use getpgrp()." + val="$undef" + ;; + esac + fi + echo "Assuming your getpgrp is $xxx" >&4 + fi + ;; +*) val="$undef";; +esac +set d_bsdgetpgrp eval $setvar +$rm -f set set.c -: see if difftime exists -set difftime d_difftime +: see if setpgrp exists +set setpgrp d_setpgrp eval $inlibc -: see if this is a dirent system -echo " " -if xinc=`./findhdr dirent.h`; $test "$xinc"; then - val="$define" - echo " found." >&4 -else - val="$undef" - if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then - echo " found." >&4 - echo " " +echo "Checking to see which flavor of setpgrp is in use . . . " +case "$d_setpgrp" in +"$define") + echo " " + $cat >set.c < +#ifdef I_UNISTD +# include +#endif +main() +{ + if (getuid() == 0) { + printf("(I see you are running Configure as super-user...)\n"); + setuid(1); + } +#ifdef TRY_BSD_PGRP + if (-1 == setpgrp(1, 1)) + exit(0); +#else + if (setpgrp() != -1) + exit(0); +#endif + exit(1); +} +EOP + if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then + echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4 + val="$define" + elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then + echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4 + val="$undef" else - xinc=`./findhdr sys/ndir.h` + echo "I can't seem to compile and run the test program." + if ./usg; then + xxx="a USG one, i.e. you use setpgrp()." + else + # SVR4 systems can appear rather BSD-ish. + case "$i_unistd" in + $undef) + xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)." + val="$define" + ;; + $define) + xxx="probably a USG one, i.e. you use setpgrp()." + val="$undef" + ;; + esac + fi + echo "Assuming your setpgrp is $xxx" >&4 fi - echo " NOT found." >&4 -fi -set i_dirent + ;; +*) val="$undef";; +esac +set d_bsdsetpgrp eval $setvar +d_bsdpgrp=$d_bsdsetpgrp +$rm -f set set.c +: see if bzero exists +set bzero d_bzero +eval $inlibc -: Look for type of directory structure. +: check for lengths of integral types echo " " -$cppstdin $cppflags $cppminus < "$xinc" > try.c +case "$intsize" in +'') + echo "Checking to see how big your integers are..." >&4 + $cat >intsize.c <<'EOCP' +#include +main() +{ + printf("intsize=%d;\n", sizeof(int)); + printf("longsize=%d;\n", sizeof(long)); + printf("shortsize=%d;\n", sizeof(short)); + fflush(stdout); + exit(0); +} +EOCP +# If $libs contains -lsfio, and sfio is mis-configured, then it +# sometimes (apparently) runs and exits with a 0 status, but with no +# output!. Thus we check with test -s whether we actually got any +# output. I think it has to do with sfio's use of _exit vs. exit, +# but I don't know for sure. --Andy Dougherty 1/27/97. + if $cc $optimize $ccflags $ldflags -o intsize intsize.c $libs >/dev/null 2>&1 && + ./intsize > intsize.out 2>/dev/null && test -s intsize.out ; then + eval `$cat intsize.out` + echo "Your integers are $intsize bytes long." + echo "Your long integers are $longsize bytes long." + echo "Your short integers are $shortsize bytes long." + else + $cat >&4 <$$.tmp 2>/dev/null +if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then + echo "You have int (*signal())() instead of void." >&4 + val="$undef" +elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then + echo "You have void (*signal())() instead of int." >&4 + val="$define" +elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then + echo "You have int (*signal())() instead of void." >&4 + val="$undef" +else + case "$d_voidsig" in + '') + echo "I can't determine whether signal handler returns void or int..." >&4 + dflt=void + rp="What type does your signal handler return?" + . ./myread + case "$ans" in + v*) val="$define";; + *) val="$undef";; + esac;; + "$define") + echo "As you already told me, signal handler returns void." >&4;; + *) + echo "As you already told me, signal handler returns int." >&4;; esac - ;; -*) guess1="$direntrytype" - ;; +fi +set d_voidsig +eval $setvar +case "$d_voidsig" in +"$define") signal_t="void";; +*) signal_t="int";; esac +$rm -f $$.tmp -case "$guess1" in -'struct dirent') guess2='struct direct' ;; -*) guess2='struct dirent' ;; -esac - -if $contains "$guess1" try.c >/dev/null 2>&1; then - direntrytype="$guess1" - echo "Your directory entries are $direntrytype." >&4 -elif $contains "$guess2" try.c >/dev/null 2>&1; then - direntrytype="$guess2" - echo "Your directory entries seem to be $direntrytype." >&4 +: check for ability to cast large floats to 32-bit ints. +echo " " +echo 'Checking whether your C compiler can cast large floats to int32.' >&4 +if $test "$intsize" -eq 4; then + xxx=int else - echo "I don't recognize your system's directory entries." >&4 - rp="What type is used for directory entries on this system?" - dflt="$guess1" - . ./myread - direntrytype="$ans" + xxx=long fi -$rm -f try.c +$cat >try.c < +#include +$signal_t blech() { exit(3); } +main() +{ + $xxx i32; + double f; + int result = 0; + signal(SIGFPE, blech); + f = (double) 0x7fffffff; + f = 10 * f; + i32 = ($xxx) f; -: see if the directory entry stores field length -echo " " -$cppstdin $cppflags $cppminus < "$xinc" > try.c -if $contains 'd_namlen' try.c >/dev/null 2>&1; then - echo "Good, your directory entry keeps length information in d_namlen." >&4 - val="$define" + if (i32 != ($xxx) f) + result |= 1; + exit(result); +} +EOCP +if $cc -o try $ccflags try.c >/dev/null 2>&1; then + ./try + yyy=$? else - echo "Your directory entry does not know about the d_namlen field." >&4 - val="$undef" + echo "(I can't seem to compile the test program--assuming it can't)" + yyy=1 fi -set d_dirnamlen +case "$yyy" in +0) val="$define" + echo "Yup, it can." + ;; +*) val="$undef" + echo "Nope, it can't." + ;; +esac +set d_casti32 eval $setvar -$rm -f try.c - -: see if dlerror exists -xxx_runnm="$runnm" -runnm=false -set dlerror d_dlerror -eval $inlibc -runnm="$xxx_runnm" +$rm -f try try.* -: see if dld is available -set dld.h i_dld -eval $inhdr +: check for ability to cast negative floats to unsigned +echo " " +echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4 +$cat >try.c < +#include +$signal_t blech() { exit(7); } +$signal_t blech_in_list() { exit(4); } +unsigned long dummy_long(p) unsigned long p; { return p; } +unsigned int dummy_int(p) unsigned int p; { return p; } +unsigned short dummy_short(p) unsigned short p; { return p; } +main() +{ + double f = -123.; + unsigned long along; + unsigned int aint; + unsigned short ashort; + int result = 0; -: see if dlopen exists -xxx_runnm="$runnm" -runnm=false -set dlopen d_dlopen -eval $inlibc -runnm="$xxx_runnm" + signal(SIGFPE, blech); + along = (unsigned long)f; + aint = (unsigned int)f; + ashort = (unsigned short)f; + if (along != (unsigned long)-123) + result |= 1; + if (aint != (unsigned int)-123) + result |= 1; + if (ashort != (unsigned short)-123) + result |= 1; + f = (double)0x40000000; + f = f + f; + along = 0; + along = (unsigned long)f; + if (along != 0x80000000) + result |= 2; + f -= 1.; + along = 0; + along = (unsigned long)f; + if (along != 0x7fffffff) + result |= 1; + f += 2.; + along = 0; + along = (unsigned long)f; + if (along != 0x80000001) + result |= 2; + if (result) + exit(result); + signal(SIGFPE, blech_in_list); + f = 123.; + along = dummy_long((unsigned long)f); + aint = dummy_int((unsigned int)f); + ashort = dummy_short((unsigned short)f); + if (along != (unsigned long)123) + result |= 4; + if (aint != (unsigned int)123) + result |= 4; + if (ashort != (unsigned short)123) + result |= 4; + exit(result); -: determine which dynamic loading, if any, to compile in -echo " " -dldir="ext/DynaLoader" -case "$usedl" in -$define|y|true) - dflt='y' - usedl="$define" - ;; -$undef|n|false) - dflt='n' - usedl="$undef" +} +EOCP +if $cc -o try $ccflags try.c >/dev/null 2>&1; then + ./try + castflags=$? +else + echo "(I can't seem to compile the test program--assuming it can't)" + castflags=7 +fi +case "$castflags" in +0) val="$define" + echo "Yup, it can." ;; -*) - dflt='n' - case "$d_dlopen" in - $define) dflt='y' ;; - esac - case "$i_dld" in - $define) dflt='y' ;; - esac - : Does a dl_xxx.xs file exist for this operating system - $test -f ../$dldir/dl_${osname}.xs && dflt='y' +*) val="$undef" + echo "Nope, it can't." ;; esac -rp="Do you wish to use dynamic loading?" -. ./myread -usedl="$ans" -case "$ans" in -y*) usedl="$define" - case "$dlsrc" in - '') - if $test -f ../$dldir/dl_${osname}.xs ; then - dflt="$dldir/dl_${osname}.xs" - elif $test "$d_dlopen" = "$define" ; then - dflt="$dldir/dl_dlopen.xs" - elif $test "$i_dld" = "$define" ; then - dflt="$dldir/dl_dld.xs" - else - dflt='' - fi - ;; - *) dflt="$dldir/$dlsrc" - ;; - esac - echo "The following dynamic loading files are available:" - : Can not go over to $dldir because getfile has path hard-coded in. - cd ..; ls -C $dldir/dl*.xs; cd UU - rp="Source file to use for dynamic loading" - fn="fne" - . ./getfile - usedl="$define" - : emulate basename - dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'` - - $cat << EOM - -Some systems may require passing special flags to $cc -c to -compile modules that will be used to create a shared library. -To use no flags, say "none". +set d_castneg +eval $setvar +$rm -f try.* -EOM - case "$cccdlflags" in - '') case "$gccversion" in - '') case "$osname" in - hpux) dflt='+z' ;; - next) dflt='none' ;; - solaris|svr4*|esix*) dflt='-Kpic' ;; - sunos) dflt='-pic' ;; - *) dflt='none' ;; - esac ;; - *) dflt='-fpic' ;; - esac ;; - *) dflt="$cccdlflags" ;; - esac - rp="Any special flags to pass to $cc -c to compile shared library modules?" - . ./myread - case "$ans" in - none) cccdlflags=' ' ;; - *) cccdlflags="$ans" ;; - esac +: see if vprintf exists +echo " " +if set vprintf val -f d_vprintf; eval $csym; $val; then + echo 'vprintf() found.' >&4 + val="$define" + $cat >vprintf.c <<'EOF' +#include - cat << EOM +main() { xxx("foo"); } -Some systems use ld to create libraries that can be dynamically loaded, -while other systems (such as those using ELF) use $cc. +xxx(va_alist) +va_dcl +{ + va_list args; + char buf[10]; -EOM - case "$ld" in - '') $cat >try.c <<'EOM' -/* Test for whether ELF binaries are produced */ -#include -#include -main() { - char b[4]; - int i = open("a.out",O_RDONLY); - if(i == -1) - exit(1); /* fail */ - if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F') - exit(0); /* succeed (yes, it's ELF) */ - else - exit(1); /* fail */ + va_start(args); + exit((unsigned long)vsprintf(buf,"%s",args) > 10L); } -EOM - if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then - cat </dev/null 2>&1 && ./vprintf; then + echo "Your vsprintf() returns (int)." >&4 + val2="$undef" + else + echo "Your vsprintf() returns (char*)." >&4 + val2="$define" + fi +else + echo 'vprintf() NOT found.' >&4 + val="$undef" + val2="$undef" +fi +set d_vprintf +eval $setvar +val=$val2 +set d_charvspr +eval $setvar - rp="What command should be used to create dynamic libraries?" - . ./myread - ld="$ans" +: see if chown exists +set chown d_chown +eval $inlibc - cat << EOM +: see if chroot exists +set chroot d_chroot +eval $inlibc -Some systems may require passing special flags to $ld to create a -library that can be dynamically loaded. If your ld flags include --L/other/path options to locate libraries outside your loader's normal -search path, you may need to specify those -L options here as well. To -use no flags, say "none". +: see if chsize exists +set chsize d_chsize +eval $inlibc -EOM - case "$lddlflags" in - '') case "$osname" in - hpux) dflt='-b' ;; - linux) dflt='-shared' ;; - next) dflt='none' ;; - solaris) dflt='-G' ;; - sunos) dflt='-assert nodefinitions' ;; - svr4*|esix*) dflt="-G $ldflags" ;; - *) dflt='none' ;; - esac - ;; - *) dflt="$lddlflags" ;; - esac +: check for const keyword +echo " " +echo 'Checking to see if your C compiler knows about "const"...' >&4 +$cat >const.c <<'EOCP' +typedef struct spug { int drokk; } spug; +main() +{ + const char *foo; + const spug y; +} +EOCP +if $cc -c $ccflags const.c >/dev/null 2>&1 ; then + val="$define" + echo "Yup, it does." +else + val="$undef" + echo "Nope, it doesn't." +fi +set d_const +eval $setvar -: Try to guess additional flags to pick up local libraries. -for thisflag in $ldflags; do - case "$thisflag" in - -L*) - case " $dflt " in - *" $thisflag "*) ;; - *) dflt="$dflt $thisflag" ;; - esac - ;; - esac -done +: see if crypt exists +echo " " +if set crypt val -f d_crypt; eval $csym; $val; then + echo 'crypt() found.' >&4 + val="$define" + cryptlib='' +else + cryptlib=`./loc Slibcrypt$lib_ext "" $xlibpth` + if $test -z "$cryptlib"; then + cryptlib=`./loc Mlibcrypt$lib_ext "" $xlibpth` + else + cryptlib=-lcrypt + fi + if $test -z "$cryptlib"; then + cryptlib=`./loc Llibcrypt$lib_ext "" $xlibpth` + else + cryptlib=-lcrypt + fi + if $test -z "$cryptlib"; then + cryptlib=`./loc libcrypt$lib_ext "" $libpth` + else + cryptlib=-lcrypt + fi + if $test -z "$cryptlib"; then + echo 'crypt() NOT found.' >&4 + val="$undef" + else + val="$define" + fi +fi +set d_crypt +eval $setvar -case "$dflt" in -'') dflt='none' ;; +: get csh whereabouts +case "$csh" in +'csh') val="$undef" ;; +*) val="$define" ;; +esac +set d_csh +eval $setvar +: Respect a hint or command line value for full_csh. +case "$full_csh" in +'') full_csh=$csh ;; esac - rp="Any special flags to pass to $ld to create a dynamically loaded library?" - . ./myread - case "$ans" in - none) lddlflags=' ' ;; - *) lddlflags="$ans" ;; - esac +: see if cuserid exists +set cuserid d_cuserid +eval $inlibc - cat <dbl_dig.c < +#endif +#ifdef I_FLOAT +#include +#endif +#ifdef DBL_DIG +printf("Contains DBL_DIG"); +#endif EOM - case "$ccdlflags" in - '') case "$osname" in - hpux) dflt='-Wl,-E' ;; - linux) dflt='-rdynamic' ;; - next) dflt='none' ;; - sunos) dflt='none' ;; - *) dflt='none' ;; - esac ;; - *) dflt="$ccdlflags" ;; - esac - rp="Any special flags to pass to $cc to use dynamic loading?" - . ./myread - case "$ans" in - none) ccdlflags=' ' ;; - *) ccdlflags="$ans" ;; - esac - ;; -*) usedl="$undef" - ld='ld' - dlsrc='dl_none.xs' - lddlflags='' - ccdlflags='' - ;; -esac - -val="$undef" -case "$osname" in -esix*|svr4*) - case "$usedl" in - $define) - $cat <dbl_dig.E 2>/dev/null +if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then + echo "DBL_DIG found." >&4 + val="$define" +else + echo "DBL_DIG NOT found." >&4 + val="$undef" +fi +$rm -f dbl_dig.? +set d_dbl_dig +eval $setvar -System V Release 4 systems can support dynamic loading -only if libperl is created as a shared library. +: see if difftime exists +set difftime d_difftime +eval $inlibc -EOM +: see if this is a dirent system +echo " " +if xinc=`./findhdr dirent.h`; $test "$xinc"; then val="$define" - ;; - esac ;; -esac -set d_shrplib; eval $setvar -case "$d_shrplib" in -$define) - cat <&4 + echo " found." >&4 +else + val="$undef" + if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then + echo " found." >&4 + echo " " + else + xinc=`./findhdr sys/ndir.h` + fi + echo " NOT found." >&4 +fi +set i_dirent +eval $setvar -Be sure to add the perl source directory to the LD_LIBRARY_PATH -environment variable before running make: - LD_LIBRARY_PATH=`cd ..;pwd`; export LD_LIBRARY_PATH -or - setenv LD_LIBRARY_PATH `cd ..;pwd` +: Look for type of directory structure. +echo " " +$cppstdin $cppflags $cppminus < "$xinc" > try.c -EOM -;; -esac -case "$d_shrplib" in -$define) - case "$shrpdir" in - "") dflt="$archlib/CORE";; - *) dflt="$shrpdir";; +case "$direntrytype" in +''|' ') + case "$i_dirent" in + $define) guess1='struct dirent' ;; + *) guess1='struct direct' ;; esac - rp="What directory should we install the shared libperl into?" - fn="d~" - . ./getfile - shrpdir="$ans" ;; -*) shrpdir='none' +*) guess1="$direntrytype" ;; esac +case "$guess1" in +'struct dirent') guess2='struct direct' ;; +*) guess2='struct dirent' ;; +esac + +if $contains "$guess1" try.c >/dev/null 2>&1; then + direntrytype="$guess1" + echo "Your directory entries are $direntrytype." >&4 +elif $contains "$guess2" try.c >/dev/null 2>&1; then + direntrytype="$guess2" + echo "Your directory entries seem to be $direntrytype." >&4 +else + echo "I don't recognize your system's directory entries." >&4 + rp="What type is used for directory entries on this system?" + dflt="$guess1" + . ./myread + direntrytype="$ans" +fi +$rm -f try.c + + +: see if the directory entry stores field length +echo " " +$cppstdin $cppflags $cppminus < "$xinc" > try.c +if $contains 'd_namlen' try.c >/dev/null 2>&1; then + echo "Good, your directory entry keeps length information in d_namlen." >&4 + val="$define" +else + echo "Your directory entry does not know about the d_namlen field." >&4 + val="$undef" +fi +set d_dirnamlen +eval $setvar +$rm -f try.c + +: see if dlerror exists +xxx_runnm="$runnm" +runnm=false +set dlerror d_dlerror +eval $inlibc +runnm="$xxx_runnm" + : see if dlfcn is available set dlfcn.h i_dlfcn eval $inhdr @@ -5187,26 +6313,31 @@ main() #endif handle = dlopen("./dyna.$dlext", mode) ; if (handle == NULL) { - printf ("1\n") ; - exit(0); + printf ("1\n") ; + fflush (stdout) ; + exit(0); } symbol = dlsym(handle, "fred") ; if (symbol == NULL) { - /* try putting a leading underscore */ - symbol = dlsym(handle, "_fred") ; - if (symbol == NULL) { - printf ("2\n") ; - exit(0); - } - printf ("3\n") ; + /* try putting a leading underscore */ + symbol = dlsym(handle, "_fred") ; + if (symbol == NULL) { + printf ("2\n") ; + fflush (stdout) ; + exit(0); + } + printf ("3\n") ; } else - printf ("4\n") ; - exit(0); + printf ("4\n") ; + fflush (stdout) ; + exit(0); } EOM + : Call the object file tmp-dyna.o in case dlext=o. if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && - $ld $lddlflags -o dyna.$dlext dyna.o > /dev/null 2>&1 && + mv dyna${obj_ext} tmp-dyna${obj_ext} > /dev/null 2>&1 && + $ld $lddlflags -o dyna.$dlext tmp-dyna${obj_ext} > /dev/null 2>&1 && $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then xxx=`./fred` case $xxx in @@ -5224,120 +6355,11 @@ EOM ;; esac -$rm -f fred fred.? dyna.$dlext dyna.? +$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.? set d_dlsymun eval $setvar -: see if setuid scripts can be secure -$cat <reflect - chmod +x,u+s reflect - ./reflect >flect 2>&1 - if $contains "/dev/fd" flect >/dev/null; then - echo "Congratulations, your kernel has secure setuid scripts!" >&4 - val="$define" - else - $cat <&4 - dflt=n;; - "$undef") - echo "Well, the $hint value is *not* secure." >&4 - dflt=n;; - *) echo "Well, the $hint value *is* secure." >&4 - dflt=y;; - esac - ;; - *) - $rm -f reflect flect - echo "#!$ls" >reflect - chmod +x,u+s reflect - echo >flect - chmod a+w flect - echo '"su" will (probably) prompt you for '"$ans's password." - su $ans -c './reflect >flect' - if $contains "/dev/fd" flect >/dev/null; then - echo "Okay, it looks like setuid scripts are secure." >&4 - dflt=y - else - echo "I don't think setuid scripts are secure." >&4 - dflt=n - fi - ;; - esac - rp='Does your kernel have *secure* setuid scripts?' - . ./myread - case "$ans" in - [yY]*) val="$define";; - *) val="$undef";; - esac - fi -else - echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4 - val="$undef" -fi -set d_suidsafe -eval $setvar - -$rm -f reflect flect - -: now see if they want to do setuid emulation -echo " " -val="$undef" -case "$d_suidsafe" in -"$define") - val="$undef" - echo "No need to emulate SUID scripts since they are secure here." >& 4 - ;; -*) - $cat </dev/null 2>&1 ; then + $cc $ccflags "-DI_SYS_FILE" -o open3 $ldflags open3.c $libs >/dev/null 2>&1 ; then h_sysfile=true; echo " defines the O_* constants..." >&4 if ./open3; then @@ -5374,7 +6396,7 @@ if $test `./findhdr sys/file.h` && \ val="$undef" fi elif $test `./findhdr fcntl.h` && \ - $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then + $cc $ccflags "-DI_FCNTL" -o open3 $ldflags open3.c $libs >/dev/null 2>&1 ; then h_fcntl=true; echo " defines the O_* constants..." >&4 if ./open3; then @@ -5503,7 +6525,8 @@ main() } EOCP if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then - echo "./try >try.out 2>try.ret 3>try.err || exit 4" >mtry + echo "$startsh" >mtry + echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry chmod +x mtry ./mtry >/dev/null 2>&1 case $? in @@ -5538,7 +6561,7 @@ EOCP *) echo "However, your read() returns '$status' on EOF??";; esac val="$define" - if test "$status" -eq "$rd_nodata"; then + if test "$status" = "$rd_nodata"; then echo "WARNING: you can't distinguish between EOF and no data!" val="$undef" fi @@ -5600,6 +6623,10 @@ eval $inlibc set fsetpos d_fsetpos eval $inlibc +: see if gethostbyaddr exists +set gethostbyaddr d_gethbadd +eval $inlibc + : see if gethostent exists set gethostent d_gethent eval $inlibc @@ -5608,8 +6635,12 @@ eval $inlibc set getlogin d_getlogin eval $inlibc -: see if getpgrp exists -set getpgrp d_getpgrp +: see if getnetbyaddr exists +set getnetbyaddr d_getnbadd +eval $inlibc + +: see if getpgid exists +set getpgid d_getpgid eval $inlibc : see if getpgrp2 exists @@ -5624,6 +6655,25 @@ eval $inlibc set getpriority d_getprior eval $inlibc +: see if gettimeofday or ftime exists +set gettimeofday d_gettimeod +eval $inlibc +case "$d_gettimeod" in +"$undef") + set ftime d_ftime + eval $inlibc + ;; +*) + val="$undef"; set d_ftime; eval $setvar + ;; +esac +case "$d_gettimeod$d_ftime" in +"$undef$undef") + echo " " + echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4 + ;; +esac + : see if this is a netinet/in.h or sys/in.h system set netinet/in.h i_niin sys/in.h i_sysin eval $inhdr @@ -5717,6 +6767,10 @@ set d_strchr; eval $setvar val="$vali" set d_index; eval $setvar +: check whether inet_aton exists +set inet_aton d_inetaton +eval $inlibc + : Look for isascii echo " " $cat >isascii.c <<'EOCP' @@ -6027,13 +7081,59 @@ eval $inlibc set rmdir d_rmdir eval $inlibc +: see if memory.h is available. +val='' +set memory.h val +eval $inhdr + +: See if it conflicts with string.h +case "$val" in +$define) + case "$strings" in + '') ;; + *) + $cppstdin $cppflags $cppminus < $strings > mem.h + if $contains 'memcpy' mem.h >/dev/null 2>&1; then + echo " " + echo "We won't be including ." + val="$undef" + fi + $rm -f mem.h + ;; + esac +esac +set i_memory +eval $setvar + : can bcopy handle overlapping blocks? val="$undef" case "$d_bcopy" in "$define") echo " " echo "Checking to see if your bcopy() can do overlapping copies..." >&4 - $cat >foo.c <<'EOCP' + $cat >foo.c <>foo.c <<'EOCP' +#include + +#ifdef I_MEMORY +# include +#endif +#ifdef I_STDLIB +# include +#endif +#ifdef I_STRING +# include +#else +# include +#endif +#ifdef I_UNISTD +# include /* Needed for NetBSD */ +#endif main() { char buf[128], abc[128]; @@ -6042,6 +7142,8 @@ int len; int off; int align; +/* Copy "abcde..." string to char abc[] so that gcc doesn't + try to store the string in read-only memory. */ bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36); for (align = 7; align >= 0; align--) { @@ -6059,15 +7161,22 @@ for (align = 7; align >= 0; align--) { exit(0); } EOCP - if $cc $ccflags $ldflags foo.c -o safebcpy $libs >/dev/null 2>&1; then + if $cc $optimize $ccflags $ldflags foo.c \ + -o safebcpy $libs >/dev/null 2>&1; then if ./safebcpy 2>/dev/null; then echo "Yes, it can." val="$define" else echo "It can't, sorry." + case "$d_memmove" in + "$define") echo "But that's Ok since you have memmove()." ;; + esac fi else echo "(I can't compile the test program, so we'll assume not...)" + case "$d_memmove" in + "$define") echo "But that's Ok since you have memmove()." ;; + esac fi ;; esac @@ -6081,7 +7190,29 @@ case "$d_memcpy" in "$define") echo " " echo "Checking to see if your memcpy() can do overlapping copies..." >&4 - $cat >foo.c <<'EOCP' + $cat >foo.c <>foo.c <<'EOCP' +#include + +#ifdef I_MEMORY +# include +#endif +#ifdef I_STDLIB +# include +#endif +#ifdef I_STRING +# include +#else +# include +#endif +#ifdef I_UNISTD +# include /* Needed for NetBSD */ +#endif main() { char buf[128], abc[128]; @@ -6090,6 +7221,8 @@ int len; int off; int align; +/* Copy "abcde..." string to char abc[] so that gcc doesn't + try to store the string in read-only memory. */ memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36); for (align = 7; align >= 0; align--) { @@ -6107,20 +7240,82 @@ for (align = 7; align >= 0; align--) { exit(0); } EOCP - if $cc $ccflags $ldflags foo.c -o safemcpy $libs >/dev/null 2>&1; then - if ./safemcpy 2>/dev/null; then + if $cc $optimize $ccflags $ldflags foo.c \ + -o safemcpy $libs >/dev/null 2>&1; then + if ./safemcpy 2>/dev/null; then + echo "Yes, it can." + val="$define" + else + echo "It can't, sorry." + case "$d_memmove" in + "$define") echo "But that's Ok since you have memmove()." ;; + esac + fi + else + echo "(I can't compile the test program, so we'll assume not...)" + case "$d_memmove" in + "$define") echo "But that's Ok since you have memmove()." ;; + esac + fi + ;; +esac +$rm -f foo.* safemcpy core +set d_safemcpy +eval $setvar + +: can memcmp be trusted to compare relative magnitude? +val="$undef" +case "$d_memcmp" in +"$define") + echo " " + echo "Checking to see if your memcmp() can compare relative magnitude..." >&4 + $cat >foo.c <>foo.c <<'EOCP' +#include + +#ifdef I_MEMORY +# include +#endif +#ifdef I_STDLIB +# include +#endif +#ifdef I_STRING +# include +#else +# include +#endif +#ifdef I_UNISTD +# include /* Needed for NetBSD */ +#endif +main() +{ +char a = -1; +char b = 0; +if ((a < b) && memcmp(&a, &b, 1) < 0) + exit(1); +exit(0); +} +EOCP + if $cc $optimize $ccflags $ldflags foo.c \ + -o sanemcmp $libs >/dev/null 2>&1; then + if ./sanemcmp 2>/dev/null; then echo "Yes, it can." val="$define" else - echo "It can't, sorry." + echo "No, it can't (it uses signed chars)." fi else echo "(I can't compile the test program, so we'll assume not...)" fi ;; esac -$rm -f foo.* safemcpy core -set d_safemcpy +$rm -f foo.* sanemcmp core +set d_sanemcmp eval $setvar : see if select exists @@ -6208,6 +7403,59 @@ eval $inlibc set setsid d_setsid eval $inlibc +: see if sfio.h is available +set sfio.h i_sfio +eval $inhdr + + +: see if sfio library is available +case "$i_sfio" in +$define) + val='' + set sfreserve val + eval $inlibc + ;; +*) + val="$undef" + ;; +esac +: Ok, but do we want to use it. +case "$val" in +$define) + case "$usesfio" in + true|$define|[yY]*) dflt='y';; + *) dflt='n';; + esac + echo "$package can use the sfio library, but it is experimental." + rp="You seem to have sfio available, do you want to try using it?" + . ./myread + case "$ans" in + y|Y) ;; + *) echo "Ok, avoiding sfio this time. I'll use stdio instead." + val="$undef" + : Remove sfio from list of libraries to use + set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'` + shift + libs="$*" + echo "libs = $libs" >&4 + ;; + esac + ;; +*) case "$usesfio" in + true|$define|[yY]*) + echo "Sorry, cannot find sfio on this machine" >&4 + echo "Ignoring your setting of usesfio=$usesfio" >&4 + ;; + esac + ;; +esac +set d_sfio +eval $setvar +case "$d_sfio" in +$define) usesfio='true';; +*) usesfio='false';; +esac + : see if shmctl exists set shmctl d_shmctl eval $inlibc @@ -6270,6 +7518,83 @@ fi set d_shm eval $setvar +echo " " +: see if we have sigaction +if set sigaction val -f d_sigaction; eval $csym; $val; then + echo 'sigaction() found.' >&4 + val="$define" +else + echo 'sigaction NOT found.' >&4 + val="$undef" +fi + +$cat > set.c <<'EOP' +/* Solaris 2.5_x86 with SunWorks Pro C 3.0.1 doesn't have a complete + sigaction structure if compiled with cc -Xc. This compile test + will fail then. +*/ +#include +#include +#include +main() +{ + struct sigaction act, oact; +} +EOP + +if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then + : +else + echo "But you don't seem to have a useable struct sigaction." >&4 + val="$undef" +fi +set d_sigaction; eval $setvar +$rm -f set set.o set.c + +: see if sigsetjmp exists +echo " " +case "$d_sigsetjmp" in +'') + $cat >set.c <<'EOP' +#include +sigjmp_buf env; +int set = 1; +main() +{ + if (sigsetjmp(env,1)) + exit(set); + set = 0; + siglongjmp(env, 1); + exit(1); +} +EOP + if $cc $ccflags $ldflags -o set set.c $libs > /dev/null 2>&1 ; then + if ./set >/dev/null 2>&1; then + echo "POSIX sigsetjmp found." >&4 + val="$define" + else + $cat >&4 <&4 + val="$undef" + fi + ;; +*) val="$d_sigsetjmp" + case "$d_sigsetjmp" in + $define) echo "POSIX sigsetjmp found." >&4;; + $undef) echo "sigsetjmp not found." >&4;; + esac + ;; +esac +set d_sigsetjmp +eval $setvar +$rm -f set.c set + socketlib='' sockethdr='' : see whether socket exists @@ -6291,10 +7616,10 @@ else : we will have to assume that it supports the 4.2 BSD interface d_oldsock="$undef" else - echo "You don't have Berkeley networking in libc.a..." >&4 - if test -f /usr/lib/libnet.a; then - ( (nm $nm_opt /usr/lib/libnet.a | eval $nm_extract) || \ - ar t /usr/lib/libnet.a) 2>/dev/null >> libc.list + echo "You don't have Berkeley networking in libc$lib_ext..." >&4 + if test -f /usr/lib/libnet$lib_ext; then + ( (nm $nm_opt /usr/lib/libnet$lib_ext | eval $nm_extract) || \ + ar t /usr/lib/libnet$lib_ext) 2>/dev/null >> libc.list if $contains socket libc.list >/dev/null 2>&1; then echo "...but the Wollongong group seems to have hacked it in." >&4 socketlib="-lnet" @@ -6307,7 +7632,7 @@ else d_oldsock="$define" fi else - echo "or even in libnet.a, which is peculiar." >&4 + echo "or even in libnet$lib_ext, which is peculiar." >&4 d_socket="$undef" d_oldsock="$undef" fi @@ -6389,7 +7714,7 @@ $cat >try.c < #define FILE_ptr(fp) $stdio_ptr #define FILE_cnt(fp) $stdio_cnt -main() { +main() { FILE *fp = fopen("try.c", "r"); char c = getc(fp); if ( @@ -6431,6 +7756,7 @@ esac set d_stdio_cnt_lval eval $setvar + : see if _base is also standard val="$undef" case "$d_stdstdio" in @@ -6439,7 +7765,7 @@ $define) #include #define FILE_base(fp) $stdio_base #define FILE_bufsiz(fp) $stdio_bufsiz -main() { +main() { FILE *fp = fopen("try.c", "r"); char c = getc(fp); if ( @@ -6452,7 +7778,7 @@ main() { EOP if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then if ./try; then - echo "Even its _base field acts std." + echo "And its _base field acts std." val="$define" else echo "But its _base field isn't std." @@ -6531,6 +7857,18 @@ else d_strerrm='"unknown"' fi +: see if strtod exists +set strtod d_strtod +eval $inlibc + +: see if strtol exists +set strtol d_strtol +eval $inlibc + +: see if strtoul exists +set strtoul d_strtoul +eval $inlibc + : see if strxfrm exists set strxfrm d_strxfrm eval $inlibc @@ -6563,302 +7901,69 @@ eval $inlibc typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@; case "$inclist" in "") inclist="sys/types.h";; -esac; -eval "varval=\$$var"; -case "$varval" in -"") - $rm -f temp.c; - for inc in $inclist; do - echo "#include <$inc>" >>temp.c; - done; - $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null; - if $contains $type temp.E >/dev/null 2>&1; then - eval "$var=\$type"; - else - eval "$var=\$def"; - fi; - $rm -f temp.?;; -*) eval "$var=\$varval";; -esac' - -: see if this is a sys/times.h system -set sys/times.h i_systimes -eval $inhdr - -: see if times exists -echo " " -if set times val -f d_times; eval $csym; $val; then - echo 'times() found.' >&4 - d_times="$define" - inc='' - case "$i_systimes" in - "$define") inc='sys/times.h';; - esac - set clock_t clocktype long stdio.h sys/types.h $inc - eval $typedef - dflt="$clocktype" - echo " " - rp="What type is returned by times() on this system?" - . ./myread - clocktype="$ans" -else - echo 'times() NOT found, hope that will do.' >&4 - d_times="$undef" - clocktype='int' -fi - -: see if truncate exists -set truncate d_truncate -eval $inlibc - -: see if tzname[] exists -echo " " -if set tzname val -a d_tzname; eval $csym; $val; then - val="$define" - echo 'tzname[] found.' >&4 -else - val="$undef" - echo 'tzname[] NOT found.' >&4 -fi -set d_tzname -eval $setvar - -: see if umask exists -set umask d_umask -eval $inlibc - -: see if we have to deal with yellow pages, now NIS. -if $test -d /usr/etc/yp || $test -d /etc/yp; then - if $test -f /usr/etc/nibindd; then - echo " " - echo "I'm fairly confident you're on a NeXT." - echo " " - rp='Do you get the hosts file via NetInfo?' - dflt=y - case "$hostcat" in - nidump*) ;; - '') ;; - *) dflt=n;; - esac - . ./myread - case "$ans" in - y*) hostcat='nidump hosts .';; - *) case "$hostcat" in - nidump*) hostcat='';; - esac - ;; - esac - fi - case "$hostcat" in - nidump*) ;; - *) - case "$hostcat" in - *ypcat*) dflt=y;; - '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then - dflt=y - else - dflt=n - fi;; - *) dflt=n;; - esac - echo " " - rp='Are you getting the hosts file via yellow pages?' - . ./myread - case "$ans" in - y*) hostcat='ypcat hosts';; - *) hostcat='cat /etc/hosts';; - esac - ;; - esac -fi - -: now get the host name -echo " " -echo "Figuring out host name..." >&4 -case "$myhostname" in -'') cont=true - echo 'Maybe "hostname" will work...' - if tans=`sh -c hostname 2>&1` ; then - myhostname=$tans - phostname=hostname - cont='' - fi - ;; -*) cont='';; -esac -if $test "$cont"; then - if ./xenix; then - echo 'Oh, dear. Maybe "/etc/systemid" is the key...' - if tans=`cat /etc/systemid 2>&1` ; then - myhostname=$tans - phostname='cat /etc/systemid' - echo "Whadyaknow. Xenix always was a bit strange..." - cont='' - fi - elif $test -r /etc/systemid; then - echo "(What is a non-Xenix system doing with /etc/systemid?)" - fi -fi -if $test "$cont"; then - echo 'No, maybe "uuname -l" will work...' - if tans=`sh -c 'uuname -l' 2>&1` ; then - myhostname=$tans - phostname='uuname -l' - else - echo 'Strange. Maybe "uname -n" will work...' - if tans=`sh -c 'uname -n' 2>&1` ; then - myhostname=$tans - phostname='uname -n' - else - echo 'Oh well, maybe I can mine it out of whoami.h...' - if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then - myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'` - phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h" - else - case "$myhostname" in - '') echo "Does this machine have an identity crisis or something?" - phostname='';; - *) - echo "Well, you said $myhostname before..." - phostname='echo $myhostname';; - esac - fi - fi - fi -fi -: you do not want to know about this -set $myhostname -myhostname=$1 +esac; +eval "varval=\$$var"; +case "$varval" in +"") + $rm -f temp.c; + for inc in $inclist; do + echo "#include <$inc>" >>temp.c; + done; + $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null; + if $contains $type temp.E >/dev/null 2>&1; then + eval "$var=\$type"; + else + eval "$var=\$def"; + fi; + $rm -f temp.?;; +*) eval "$var=\$varval";; +esac' -: verify guess -if $test "$myhostname" ; then - dflt=y - rp='Your host name appears to be "'$myhostname'".'" Right?" - . ./myread - case "$ans" in - y*) ;; - *) myhostname='';; - esac -fi +: see if this is a sys/times.h system +set sys/times.h i_systimes +eval $inhdr -: bad guess or no guess -while $test "X$myhostname" = X ; do - dflt='' - rp="Please type the (one word) name of your host:" +: see if times exists +echo " " +if set times val -f d_times; eval $csym; $val; then + echo 'times() found.' >&4 + d_times="$define" + inc='' + case "$i_systimes" in + "$define") inc='sys/times.h';; + esac + set clock_t clocktype long stdio.h sys/types.h $inc + eval $typedef + dflt="$clocktype" + echo " " + rp="What type is returned by times() on this system?" . ./myread - myhostname="$ans" -done + clocktype="$ans" +else + echo 'times() NOT found, hope that will do.' >&4 + d_times="$undef" + clocktype='int' +fi -: translate upper to lower if necessary -case "$myhostname" in -*[A-Z]*) - echo "(Normalizing case in your host name)" - myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'` - ;; -esac +: see if truncate exists +set truncate d_truncate +eval $inlibc -case "$myhostname" in -*.*) - dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"` - myhostname=`expr "X$myhostname" : "X\([^.]*\)\."` - echo "(Trimming domain name from host name--host name is now $myhostname)" - ;; -*) case "$mydomain" in - '') - { - : If we use NIS, try ypmatch. - : Is there some reason why this was not done before? - test "X$hostcat" = "Xypcat hosts" && - ypmatch "$myhostname" hosts 2>/dev/null |\ - $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \ - $test -s hosts - } || { - : Extract only the relevant hosts, reducing file size, - : remove comments, insert trailing space for later use. - $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ / - /[ ]$myhostname[ . ]/p" > hosts - } - tmp_re="[ . ]" - $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ } - END { print sum }" hosts` = x1 || tmp_re="[ ]" - dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \ - hosts | $sort | $uniq | \ - $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"` - case `$echo X$dflt` in - X*\ *) echo "(Several hosts in /etc/hosts matched hostname)" - dflt=. - ;; - .) echo "(You do not have fully-qualified names in /etc/hosts)" - ;; - esac - case "$dflt" in - .) - tans=`./loc resolv.conf X /etc /usr/etc` - if $test -f "$tans"; then - echo "(Attempting domain name extraction from $tans)" - : Why was there an Egrep here, when Sed works? - dflt=.`$sed -n -e 's/^domain[ ]*\(.*\)/\1/p' $tans \ - | ./tr '[A-Z]' '[a-z]' 2>/dev/null` - fi - ;; - esac - case "$dflt" in - .) echo "(No help from resolv.conf either -- attempting clever guess)" - dflt=.`sh -c domainname 2>/dev/null` - case "$dflt" in - '') dflt='.';; - .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;; - esac - ;; - esac - case "$dflt" in - .) echo "(Lost all hope -- silly guess then)" - dflt='.uucp' - ;; - esac - $rm -f hosts - ;; - *) dflt="$mydomain";; - esac;; -esac +: see if tzname[] exists echo " " -rp="What is your domain name?" -. ./myread -tans="$ans" -case "$ans" in -'') ;; -.*) ;; -*) tans=".$tans";; -esac -mydomain="$tans" - -: translate upper to lower if necessary -case "$mydomain" in -*[A-Z]*) - echo "(Normalizing case in your domain name)" - mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'` - ;; -esac +if set tzname val -a d_tzname; eval $csym; $val; then + val="$define" + echo 'tzname[] found.' >&4 +else + val="$undef" + echo 'tzname[] NOT found.' >&4 +fi +set d_tzname +eval $setvar -: a little sanity check here -case "$phostname" in -'') ;; -*) - case `$phostname | ./tr '[A-Z]' '[a-z]'` in - $myhostname$mydomain|$myhostname) ;; - *) - case "$phostname" in - sed*) - echo "(That doesn't agree with your whoami.h file, by the way.)" - ;; - *) - echo "(That doesn't agree with your $phostname command, by the way.)" - ;; - esac - ;; - esac - ;; -esac +: see if umask exists +set umask d_umask +eval $inlibc : see how we will look up host name echo " " @@ -7067,7 +8172,7 @@ EOCP dflt=`./try` else dflt='8' - echo"(I can't seem to compile the test program...)" + echo "(I can't seem to compile the test program...)" fi ;; *) dflt="$alignbytes" @@ -7078,23 +8183,6 @@ rp="Doubles must be aligned on a how-many-byte boundary?" alignbytes="$ans" $rm -f try.c try -case "$ar" in -'') ar='ar';; -esac -case "$lib_ext" in -'') lib_ext='.a';; -esac -case "$obj_ext" in -'') obj_ext='.o';; -esac -case "$path_sep" in -'') path_sep=':';; -esac -: Which makefile gets called first. This is used by make depend. -case "$firstmakefile" in -'') firstmakefile='makefile';; -esac - : check for ordering of bytes in a long case "$byteorder" in '') @@ -7191,6 +8279,75 @@ set db.h i_db eval $inhdr case "$i_db" in +$define) + : Check db version. + echo " " + echo "Checking Berkeley DB version ..." >&4 + $cat >try.c < +#include +#include +main() +{ +#ifdef DB_VERSION_MAJOR /* DB version >= 2 */ + int Major, Minor, Patch ; + (void)db_version(&Major, &Minor, &Patch) ; + printf("You have Berkeley DB Version 2 or greater\n"); + + printf("db.h is from Berkeley DB Version %d.%d.%d\n", + DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH); + printf("libdb is from Berkeley DB Version %d.%d.%d\n", + Major, Minor, Patch) ; + + /* check that db.h & libdb are compatible */ + if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) { + printf("db.h and libdb are incompatible\n") ; + exit(3); + } + + printf("db.h and libdb are compatible\n") ; + /* needs to be >= 2.05 */ + if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { + printf("but Perl needs Berkeley DB 2.0.5 or greater\n") ; + exit(2); + } + + exit(0); +#else +#if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC) + printf("You have Berkeley DB Version 1\n"); + exit(0); /* DB version < 2: the coast is clear. */ +#else + exit(1); /* not Berkeley DB? */ +#endif +#endif +} +EOCP + if $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try; then + echo 'Looks OK.' >&4 + else + echo "I can't use Berkeley DB with your . I'll disable Berkeley DB." >&4 + i_db=$undef + case " $libs " in + *"-ldb "*) + : Remove db from list of libraries to use + echo "Removing unusable -ldb from library list" >&4 + set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'` + shift + libs="$*" + echo "libs = $libs" >&4 + ;; + esac + fi + $rm -f try.* + ;; +esac + +case "$i_db" in define) : Check the return type needed for hash echo " " @@ -7202,6 +8359,8 @@ define) #endif #include #include + +#ifndef DB_VERSION_MAJOR u_int32_t hash_cb (ptr, size) const void *ptr; size_t size; @@ -7212,6 +8371,7 @@ main() { info.hash = hash_cb; } +#endif EOCP if $cc $ccflags -c try.c >try.out 2>&1 ; then if $contains warning try.out >>/dev/null 2>&1 ; then @@ -7220,13 +8380,15 @@ EOCP db_hashtype='u_int32_t' fi else - echo "I can't seem to compile the test program." >&4 - db_hashtype=int + : XXX Maybe we should just give up here. + db_hashtype=u_int32_t + echo "Help: I can't seem to compile the db test program." >&4 + echo "Something's wrong, but I'll assume you use $db_hashtype." >&4 fi $rm -f try.* echo "Your version of Berkeley DB uses $db_hashtype for hash." ;; -*) db_hashtype=int +*) db_hashtype=u_int32_t ;; esac @@ -7242,6 +8404,8 @@ define) #endif #include #include + +#ifndef DB_VERSION_MAJOR size_t prefix_cb (key1, key2) const DBT *key1; const DBT *key2; @@ -7252,6 +8416,7 @@ main() { info.prefix = prefix_cb; } +#endif EOCP if $cc $ccflags -c try.c >try.out 2>&1 ; then if $contains warning try.out >>/dev/null 2>&1 ; then @@ -7260,13 +8425,15 @@ EOCP db_prefixtype='size_t' fi else - echo "I can't seem to compile the test program." >&4 - db_prefixtype='int' + db_prefixtype='size_t' + : XXX Maybe we should just give up here. + echo "Help: I can't seem to compile the db test program." >&4 + echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4 fi $rm -f try.* echo "Your version of Berkeley DB uses $db_prefixtype for prefix." ;; -*) db_prefixtype='int' +*) db_prefixtype='size_t' ;; esac @@ -7286,9 +8453,9 @@ case "$voidflags" in '') $cat >try.c <<'EOCP' #if TRY & 1 -void main() { +void sub() { #else -main() { +sub() { #endif extern void moo(); /* function returning void */ void (*goo)(); /* ptr to func returning void */ @@ -7306,8 +8473,9 @@ main() { #endif exit(0); } +main() { sub(); } EOCP - if $cc -c -DTRY=$defvoidused try.c >.out 2>&1 ; then + if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then voidflags=$defvoidused echo "It appears to support void to the level $package wants ($defvoidused)." if $contains warning .out >/dev/null 2>&1; then @@ -7316,16 +8484,16 @@ EOCP fi else echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4 - if $cc -c -DTRY=1 try.c >/dev/null 2>&1 ; then + if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then echo "It supports 1..." - if $cc -c -DTRY=3 try.c >/dev/null 2>&1 ; then + if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then echo "It also supports 2..." - if $cc -c -DTRY=7 try.c >/dev/null 2>&1 ; then + if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then voidflags=7 echo "And it supports 4 but not 8 definitely." else echo "It doesn't support 4..." - if $cc -c -DTRY=11 try.c >/dev/null 2>&1 ; then + if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then voidflags=11 echo "But it supports 8." else @@ -7335,11 +8503,11 @@ echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4 fi else echo "It does not support 2..." - if $cc -c -DTRY=13 try.c >/dev/null 2>&1 ; then + if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then voidflags=13 echo "But it supports 4 and 8." else - if $cc -c -DTRY=5 try.c >/dev/null 2>&1 ; then + if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then voidflags=5 echo "And it supports 4 but has not heard about 8." else @@ -7353,11 +8521,11 @@ echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4 fi fi esac -: Only prompt user if voidflags is not 15. If voidflags is 15, then -: we presume all is well. +: Only prompt user if support does not match the level we want case "$voidflags" in -15) ;; -*) dflt="$voidflags"; +"$defvoidused") ;; +*) + dflt="$voidflags"; rp="Your void support flags add up to what?" . ./myread voidflags="$ans" @@ -7400,34 +8568,74 @@ gidtype="$ans" set getgroups d_getgrps eval $inlibc -: Find type of 2nd arg to getgroups +: see if setgroups exists +set setgroups d_setgrps +eval $inlibc + +: Find type of 2nd arg to 'getgroups()' and 'setgroups()' echo " " -case "$d_getgrps" in -'define') +case "$d_getgrps$d_setgrps" in +*define*) case "$groupstype" in '') dflt="$gidtype" ;; *) dflt="$groupstype" ;; esac $cat <&4 + echo "Go find a make program or fix your PATH setting!" >&4 + exit 1 + ;; + esac + ;; +*) echo make is in $make. ;; +esac + +$echo $n "Checking if your $make program sets \$(MAKE)... $c" >&4 +case "$make_set_make" in +'') + $sed 's/^X //' > testmake.mak << 'EOF' +Xall: +X @echo 'ac_maketemp="$(MAKE)"' +EOF + : GNU make sometimes prints "make[1]: Entering...", which would confuse us. + case "`$make -f testmake.mak 2>/dev/null`" in + *ac_maketemp=*) make_set_make='#' ;; + *) make_set_make="MAKE=$make" ;; + esac + $rm -f testmake.mak + ;; +esac +case "$make_set_make" in +'#') echo "Yup, it does." >&4 ;; +*) echo "Nope, it doesn't." >&4 ;; esac - -: see what type lseek is declared as in the kernel -set off_t lseektype long stdio.h sys/types.h -eval $typedef -echo " " -dflt="$lseektype" -rp="What type is lseek's offset on this system declared as?" -. ./myread -lseektype="$ans" : see what type is used for mode_t set mode_t modetype int stdio.h sys/types.h @@ -7438,6 +8646,31 @@ rp="What type is used for file modes?" . ./myread modetype="$ans" +: locate the preferred pager for this system +case "$pager" in +'') + dflt='' + case "$pg" in + /*) dflt=$pg;; + esac + case "$more" in + /*) dflt=$more;; + esac + case "$less" in + /*) dflt=$less;; + esac + case "$dflt" in + '') dflt=/usr/ucb/more;; + esac + ;; +*) dflt="$pager";; +esac +echo " " +fn=f/ +rp='What pager is used on your system?' +. ./getfile +pager="$ans" + : Cruising for prototypes echo " " echo "Checking out function prototypes..." >&4 @@ -7461,8 +8694,18 @@ echo " " case "$randbits" in '') echo "Checking to see how many bits your rand function produces..." >&4 - $cat >try.c <<'EOCP' + $cat >try.c < +#ifdef I_UNISTD +# include +#endif +#ifdef I_STDLIB +# include +#endif +EOCP + $cat >>try.c <<'EOCP' main() { register int i; @@ -7476,9 +8719,10 @@ main() for (i = 0; max; i++) max /= 2; printf("%d\n",i); + fflush(stdout); } EOCP - if $cc try.c -o try >/dev/null 2>&1 ; then + if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1 ; then dflt=`try` else dflt='?' @@ -7492,7 +8736,7 @@ esac rp='How many bits does your rand() function produce?' . ./myread randbits="$ans" -$rm -f try.c try +$rm -f try.c try.o try : see if ar generates random libraries by itself echo " " @@ -7505,14 +8749,14 @@ EOP $cc $ccflags -c bar1.c >/dev/null 2>&1 $cc $ccflags -c bar2.c >/dev/null 2>&1 $cc $ccflags -c foo.c >/dev/null 2>&1 -ar rc bar.a bar2.o bar1.o >/dev/null 2>&1 -if $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 && +ar rc bar$lib_ext bar2.o bar1.o >/dev/null 2>&1 +if $cc $ccflags $ldflags -o foobar foo.o bar$lib_ext $libs > /dev/null 2>&1 && ./foobar >/dev/null 2>&1; then echo "ar appears to generate random libraries itself." orderlib=false ranlib=":" -elif ar ts bar.a >/dev/null 2>&1 && - $cc $ccflags $ldflags -o foobar foo.o bar.a $libs > /dev/null 2>&1 && +elif ar ts bar$lib_ext >/dev/null 2>&1 && + $cc $ccflags $ldflags -o foobar foo.o bar$lib_ext $libs > /dev/null 2>&1 && ./foobar >/dev/null 2>&1; then echo "a table of contents needs to be added with 'ar ts'." orderlib=false @@ -7578,7 +8822,7 @@ main() } EOCP flags='' -s_timezone='' +for s_timezone in '-DS_TIMEZONE' ''; do sysselect='' for s_timeval in '-DS_TIMEVAL' ''; do for i_systimek in '' '-DSYSTIMEKERNEL'; do @@ -7601,6 +8845,7 @@ done done done done +done timeincl='' echo " " case "$flags" in @@ -7638,11 +8883,10 @@ $cat >fd_set.c < -#else +#endif #ifdef I_SYS_SELECT #include #endif -#endif main() { fd_set fds; @@ -7733,11 +8977,10 @@ EOM #endif #ifdef I_SYS_TIME #include -#else +#endif #ifdef I_SYS_SELECT #include #endif -#endif main() { int width; @@ -7802,13 +9045,59 @@ $cat > signal.c <<'EOP' #include #include int main() { -#ifdef NSIG -printf("NSIG %d\n", NSIG); -#else -#ifdef _NSIG -printf("NSIG %d\n", _NSIG); + +/* Strange style to avoid deeply-nested #if/#else/#endif */ +#ifndef NSIG +# ifdef _NSIG +# define NSIG (_NSIG) +# endif +#endif + +#ifndef NSIG +# ifdef SIGMAX +# define NSIG (SIGMAX+1) +# endif +#endif + +#ifndef NSIG +# ifdef SIG_MAX +# define NSIG (SIG_MAX+1) +# endif +#endif + +#ifndef NSIG +# ifdef MAXSIG +# define NSIG (MAXSIG+1) +# endif +#endif + +#ifndef NSIG +# ifdef MAX_SIG +# define NSIG (MAX_SIG+1) +# endif +#endif + +#ifndef NSIG +# ifdef SIGARRAYSIZE +# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */ +# endif +#endif + +#ifndef NSIG +# ifdef _sys_nsig +# define NSIG (_sys_nsig) /* Solaris 2.5 */ +# endif #endif + +/* Default to some arbitrary number that's big enough to get most + of the common signals. +*/ +#ifndef NSIG +# define NSIG 50 #endif + +printf("NSIG %d\n", NSIG); + EOP echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk ' { @@ -7855,7 +9144,7 @@ EOP $cat >signal_cmd </dev/null 2>&1; then +if $cc $ccflags $ldflags signal.c -o signal >/dev/null 2>&1; then ./signal | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst else echo "(I can't seem be able to compile the test program -- Guessing)" @@ -7867,7 +9156,7 @@ else 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;; esac echo \$@ | $tr ' ' '\012' | \ - $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst + $awk '{ printf \$1; printf " %d\n", ++s; }' >signal.lst fi $rm -f signal.c signal signal.o EOS @@ -7936,25 +9225,187 @@ main() printf("int\n"); else printf("long\n"); + fflush(stdout); + exit(0); } EOM echo " " -if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 ; then - ssizetype=`./ssize` +# If $libs contains -lsfio, and sfio is mis-configured, then it +# sometimes (apparently) runs and exits with a 0 status, but with no +# output!. Thus we check with test -s whether we actually got any +# output. I think it has to do with sfio's use of _exit vs. exit, +# but I don't know for sure. --Andy Dougherty 1/27/97. +if $cc $optimize $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 && + ./ssize > ssize.out 2>/dev/null && test -s ssize.out ; then + ssizetype=`$cat ssize.out` echo "I'll be using $ssizetype for functions returning a byte count." >&4 else - echo "(I can't compile the test program--please enlighten me!)" - $cat <&4 <try.c < +#$i_niin I_NIIN +#$i_netdb I_NETDB +#$i_unistd I_UNISTD +#$d_socket HAS_SOCKET +#$d_socket HAS_SOCKET +#ifdef HAS_SOCKET +#include /* Might include */ +#endif +#ifdef I_NIIN +#include +#endif +#ifdef I_NETDB +#include +#endif +#ifdef I_UNISTD +#include +#endif +#define Size_t $sizetype +main() +{ + Gethbadd_addr_t addr; + Gethbadd_alen_t alen; + struct hostent* hent; + + extern struct hostent *gethostbyaddr(const Gethbadd_addr_t, Gethbadd_alen_t, int); + + alen = sizeof(struct in_addr); + addr = (Gethbadd_addr_t)malloc(alen); + /* We do not execute this so the contents of the addr matter not. */ + hent = gethostbyaddr(addr, alen, AF_INET); + + exit(0); +} +EOCP + for xxx in "void *" "char *"; do + for yyy in Size_t int; do + if $cc $ccflags -c -DGethbadd_addr_t="$xxx" -DGethbadd_alen_t="$yyy" try.c >/dev/null 2>&1 ; then + gethbadd_addr_type="$xxx" + gethbadd_alen_type="$yyy" + $cat >&4 <&4 <try.c < +#ifdef HAS_SOCKET +#include /* Might include */ +#endif +#ifdef I_NIIN +#include +#endif +#ifdef I_NETDB +#include +#endif +main() +{ + Getnbadd_net_t net; + struct netent* nent; + + extern struct netent *getnetbyaddr(Getnbadd_net_t, int); + + /* We do not execute this so the contents of the net matter not. */ + nent = getnetbyaddr(net, AF_INET); + + exit(0); +} +EOCP + for xxx in in_addr_t long int; do + if $cc $ccflags -c -DGetnbadd_net_t="$xxx" try.c >/dev/null 2>&1 ; then + getnbadd_net_type="$xxx" + echo "Your system uses $xxx for the 1st argument to getnetbyaddr." >&4 + break + fi + done + if test "X$getnbadd_net_type" = X; then + rp='What is the type for the 1st argument to getnetbyaddr?' + dflt="long" + . ./myread + getnbadd_net_type="$ans" + fi + $rm -f try.[co] + else + echo "Your system uses $getnbadd_net_type for the 1st argument to getnetbyaddr." >&4 + fi + ;; +*) getnbadd_net_type='long' + ;; +esac : see what type of char stdio uses. echo " " @@ -8100,30 +9551,6 @@ eval $inhdr set math.h i_math eval $inhdr -: see if memory.h is available. -val='' -set memory.h val -eval $inhdr - -: See if it conflicts with string.h -case "$val" in -$define) - case "$strings" in - '') ;; - *) - $cppstdin $cppflags $cppminus < $strings > mem.h - if $contains 'memcpy' mem.h >/dev/null 2>&1; then - echo " " - echo "We won't be including ." - val="$undef" - fi - $rm -f mem.h - ;; - esac -esac -set i_memory -eval $setvar - : see if ndbm.h is available set ndbm.h t_ndbm eval $inhdr @@ -8383,6 +9810,7 @@ va_dcl } EOP $cat > varargs </dev/null 2>&1; then echo "true" else @@ -8461,6 +9889,10 @@ eval $setvar set sys/param.h i_sysparam eval $inhdr +: see if sys/resource.h has to be included +set sys/resource.h i_sysresrc +eval $inhdr + : see if sys/stat.h is available set sys/stat.h i_sysstat eval $inhdr @@ -8473,14 +9905,18 @@ eval $inhdr set sys/un.h i_sysun eval $inhdr -: see if this is a unistd.h system -set unistd.h i_unistd +: see if this is a syswait system +set sys/wait.h i_syswait eval $inhdr : see if this is an utime system set utime.h i_utime eval $inhdr +: see if this is a values.h system +set values.h i_values +eval $inhdr + : see if this is a vfork system case "$d_vfork" in "$define") @@ -8512,6 +9948,89 @@ val="$t_gdbm" set i_gdbm eval $setvar +: test whether pthreads are created in joinable -- aka undetached -- state +if test "X$usethreads" != X; then + if test "X$d_pthreads_created_joinable" = X; then + echo >&4 "Checking whether pthreads are created joinable." + $cat >try.c < +#include +int main() { + pthread_attr_t attr; + int detachstate; + printf("%s\n", + pthread_attr_init(&attr) == 0 && + pthread_attr_getdetachstate(&attr, &detachstate) == 0 && + detachstate == PTHREAD_CREATE_DETACHED ? + "detached" : "joinable"); + exit(0); +} +EOCP + if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then + yyy=`./try` + case "$yyy" in + detached) + echo "Nope, they aren't." + ;; + *) + echo "Yup, they are." + ;; + esac + else + echo "(I can't execute the test program--assuming they are.)" + yyy=joinable + fi + case "$yyy" in + detached) + val="$undef" + ;; + *) + val="$define" + ;; + esac + set d_pthreads_created_joinable + eval $setvar + $rm -f try try.* + fi +else + d_pthreads_created_joinable="$undef" +fi + +: see whether the various POSIXish _yields exist within given cccmd +$cat >try.c < +main() { + YIELD(); + exit(0); +} +EOP +: see if pthread_yield exists within given cccmd, +: if we do not usethreads this may well end up undef. +if $cc $ccflags -DYIELD=pthread_yield $ldflags -o try try.c $libs > /dev/null 2>&1; then + val="$define" + echo 'pthread_yield() found.' >&4 +else + val="$undef" + echo 'pthread_yield() NOT found.' >&4 +fi +set d_pthread_yield +eval $setvar + +: see if sched_yield exists within given cccmd, +: if we do not usethreads this may well end up undef. +if $cc $ccflags -DYIELD=sched_yield $ldflags -o try try.c $libs > /dev/null 2>&1; then + val="$define" + echo 'sched_yield() found.' >&4 +else + val="$undef" + echo 'sched_yield() NOT found.' >&4 +fi +set d_sched_yield +eval $setvar + +: common to both the pthread_yield and sched_yield tests +rm -f try try.* + echo " " echo "Looking for extensions..." >&4 cd ../ext @@ -8523,19 +10042,22 @@ known_extensions='' : some additional extensions into the source tree and expect them : to be built. for xxx in * ; do - if $test -f $xxx/$xxx.xs; then - known_extensions="$known_extensions $xxx" + case "$xxx" in + DynaLoader) ;; + *) if $test -f $xxx/$xxx.xs; then + known_extensions="$known_extensions $xxx" else - if $test -d $xxx; then - cd $xxx - for yyy in * ; do - if $test -f $yyy/$yyy.xs; then - known_extensions="$known_extensions $xxx/$yyy" - fi - done - cd .. - fi - fi + if $test -d $xxx; then + cd $xxx + for yyy in * ; do + if $test -f $yyy/$yyy.xs; then + known_extensions="$known_extensions $xxx/$yyy" + fi + done + cd .. + fi + fi ;; + esac done set X $known_extensions shift @@ -8546,27 +10068,35 @@ cd ../UU avail_ext='' for xxx in $known_extensions ; do case "$xxx" in - DB_File) case "$i_db" in + DB_File|db_file) case "$i_db" in $define) avail_ext="$avail_ext $xxx" ;; esac ;; - GDBM_File) case "$i_gdbm" in + GDBM_File|gdbm_fil) case "$i_gdbm" in $define) avail_ext="$avail_ext $xxx" ;; esac ;; - NDBM_File) case "$i_ndbm" in + NDBM_File|ndbm_fil) case "$i_ndbm" in $define) avail_ext="$avail_ext $xxx" ;; esac ;; - ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in + ODBM_File|odbm_fil) case "${i_dbm}${i_rpcsvcdbm}" in *"${define}"*) avail_ext="$avail_ext $xxx" ;; esac ;; - POSIX) case "$useposix" in + POSIX|posix) case "$useposix" in + true|define|y) avail_ext="$avail_ext $xxx" ;; + esac + ;; + Opcode|opcode) case "$useopcode" in true|define|y) avail_ext="$avail_ext $xxx" ;; esac ;; - Socket) case "$d_socket" in + Socket|socket) case "$d_socket" in + $define) avail_ext="$avail_ext $xxx" ;; + esac + ;; + Thread|thread) case "$usethreads" in $define) avail_ext="$avail_ext $xxx" ;; esac ;; @@ -8657,58 +10187,6 @@ set X $dynamic_ext $static_ext shift extensions="$*" -$cat <&4 $spitshell <config.sh $startsh # -# This file was produced by running the Configure script. It holds all the -# definitions figured out by Configure. Should you modify one of these values, -# do not forget to propagate your changes by running "Configure -der". You may -# instead choose to run each of the .SH files by yourself, or "Configure -S". +# This file was produced by running the Configure script. It holds all +# the definitions figured out by Configure. Should you modify any of +# these values, do not forget to propagate your changes by running +# "Configure -S"; or, equivalently, you may run each .SH file yourself. # # Configuration time: $cf_time @@ -8796,6 +10274,7 @@ awk='$awk' baserev='$baserev' bash='$bash' bin='$bin' +bincompat3='$bincompat3' binexp='$binexp' bison='$bison' byacc='$byacc' @@ -8835,8 +10314,11 @@ d_archlib='$d_archlib' d_attribut='$d_attribut' d_bcmp='$d_bcmp' d_bcopy='$d_bcopy' +d_bincompat3='$d_bincompat3' d_bsd='$d_bsd' +d_bsdgetpgrp='$d_bsdgetpgrp' d_bsdpgrp='$d_bsdpgrp' +d_bsdsetpgrp='$d_bsdsetpgrp' d_bzero='$d_bzero' d_casti32='$d_casti32' d_castneg='$d_castneg' @@ -8871,16 +10353,27 @@ d_flock='$d_flock' d_fork='$d_fork' d_fpathconf='$d_fpathconf' d_fsetpos='$d_fsetpos' +d_ftime='$d_ftime' d_getgrps='$d_getgrps' +d_setgrps='$d_setgrps' +d_gethbadd='$d_gethbadd' +gethbadd_addr_type='$gethbadd_addr_type' +gethbadd_alen_type='$gethbadd_alen_type' d_gethent='$d_gethent' d_gethname='$d_gethname' d_getlogin='$d_getlogin' +d_getnbadd='$d_getnbadd' +getnbadd_net_type='$getnbadd_net_type' +d_getpgid='$d_getpgid' d_getpgrp2='$d_getpgrp2' d_getpgrp='$d_getpgrp' d_getppid='$d_getppid' d_getprior='$d_getprior' +d_gettimeod='$d_gettimeod' +d_gnulibc='$d_gnulibc' d_htonl='$d_htonl' d_index='$d_index' +d_inetaton='$d_inetaton' d_isascii='$d_isascii' d_killpg='$d_killpg' d_link='$d_link' @@ -8913,6 +10406,8 @@ d_phostname='$d_phostname' d_pipe='$d_pipe' d_poll='$d_poll' d_portable='$d_portable' +d_pthread_yield='$d_pthread_yield' +d_pthreads_created_joinable='$d_pthreads_created_joinable' d_pwage='$d_pwage' d_pwchange='$d_pwchange' d_pwclass='$d_pwclass' @@ -8926,6 +10421,8 @@ d_rewinddir='$d_rewinddir' d_rmdir='$d_rmdir' d_safebcpy='$d_safebcpy' d_safemcpy='$d_safemcpy' +d_sanemcmp='$d_sanemcmp' +d_sched_yield='$d_sched_yield' d_seekdir='$d_seekdir' d_select='$d_select' d_sem='$d_sem' @@ -8947,13 +10444,15 @@ d_setreuid='$d_setreuid' d_setrgid='$d_setrgid' d_setruid='$d_setruid' d_setsid='$d_setsid' +d_sfio='$d_sfio' d_shm='$d_shm' d_shmat='$d_shmat' d_shmatprototype='$d_shmatprototype' d_shmctl='$d_shmctl' d_shmdt='$d_shmdt' d_shmget='$d_shmget' -d_shrplib='$d_shrplib' +d_sigaction='$d_sigaction' +d_sigsetjmp='$d_sigsetjmp' d_socket='$d_socket' d_sockpair='$d_sockpair' d_statblks='$d_statblks' @@ -8966,6 +10465,9 @@ d_strcoll='$d_strcoll' d_strctcpy='$d_strctcpy' d_strerrm='$d_strerrm' d_strerror='$d_strerror' +d_strtod='$d_strtod' +d_strtol='$d_strtol' +d_strtoul='$d_strtoul' d_strxfrm='$d_strxfrm' d_suidsafe='$d_suidsafe' d_symlink='$d_symlink' @@ -9024,6 +10526,7 @@ glibpth='$glibpth' grep='$grep' groupcat='$groupcat' groupstype='$groupstype' +gzip='$gzip' h_fcntl='$h_fcntl' h_sysfile='$h_sysfile' hint='$hint' @@ -9045,10 +10548,12 @@ i_malloc='$i_malloc' i_math='$i_math' i_memory='$i_memory' i_ndbm='$i_ndbm' +i_netdb='$i_netdb' i_neterrno='$i_neterrno' i_niin='$i_niin' i_pwd='$i_pwd' i_rpcsvcdbm='$i_rpcsvcdbm' +i_sfio='$i_sfio' i_sgtty='$i_sgtty' i_stdarg='$i_stdarg' i_stddef='$i_stddef' @@ -9061,6 +10566,7 @@ i_sysin='$i_sysin' i_sysioctl='$i_sysioctl' i_sysndir='$i_sysndir' i_sysparam='$i_sysparam' +i_sysresrc='$i_sysresrc' i_sysselct='$i_sysselct' i_syssockio='$i_syssockio' i_sysstat='$i_sysstat' @@ -9069,11 +10575,13 @@ i_systimek='$i_systimek' i_systimes='$i_systimes' i_systypes='$i_systypes' i_sysun='$i_sysun' +i_syswait='$i_syswait' i_termio='$i_termio' i_termios='$i_termios' i_time='$i_time' i_unistd='$i_unistd' i_utime='$i_utime' +i_values='$i_values' i_varargs='$i_varargs' i_varhdr='$i_varhdr' i_vfork='$i_vfork' @@ -9097,6 +10605,7 @@ ldflags='$ldflags' less='$less' lib_ext='$lib_ext' libc='$libc' +libperl='$libperl' libpth='$libpth' libs='$libs' libswanted='$libswanted' @@ -9107,6 +10616,7 @@ ln='$ln' lns='$lns' locincpth='$locincpth' loclibpth='$loclibpth' +longsize='$longsize' lp='$lp' lpr='$lpr' ls='$ls' @@ -9114,6 +10624,7 @@ lseektype='$lseektype' mail='$mail' mailx='$mailx' make='$make' +make_set_make='$make_set_make' mallocobj='$mallocobj' mallocsrc='$mallocsrc' malloctype='$malloctype' @@ -9137,6 +10648,7 @@ myhostname='$myhostname' myuname='$myuname' n='$n' nm_opt='$nm_opt' +nm_so_opt='$nm_so_opt' nroff='$nroff' o_nonblock='$o_nonblock' obj_ext='$obj_ext' @@ -9147,6 +10659,7 @@ orderlib='$orderlib' osname='$osname' osvers='$osvers' package='$package' +pager='$pager' passcat='$passcat' patchlevel='$patchlevel' path_sep='$path_sep' @@ -9178,7 +10691,8 @@ sh='$sh' shar='$shar' sharpbang='$sharpbang' shmattype='$shmattype' -shrpdir='$shrpdir' +shortsize='$shortsize' +shrpenv='$shrpenv' shsharp='$shsharp' sig_name='$sig_name' sig_num='$sig_num' @@ -9209,6 +10723,7 @@ stdio_cnt='$stdio_cnt' stdio_ptr='$stdio_ptr' strings='$strings' submit='$submit' +subversion='$subversion' sysman='$sysman' tail='$tail' tar='$tar' @@ -9225,7 +10740,11 @@ uniq='$uniq' usedl='$usedl' usemymalloc='$usemymalloc' usenm='$usenm' +useopcode='$useopcode' +useperlio='$useperlio' useposix='$useposix' +usesfio='$usesfio' +useshrplib='$useshrplib' usevfork='$usevfork' usrinc='$usrinc' uuname='$uuname' @@ -9233,6 +10752,7 @@ vi='$vi' voidflags='$voidflags' xlibpth='$xlibpth' zcat='$zcat' +zip='$zip' EOT : add special variables