Configure updates for intsize and ssizetype
[p5sagit/p5-mst-13.2.git] / Configure
index e74287d..c5fbe4e 100755 (executable)
--- 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 Wed Feb 21 14:26:18 EST 1996 [metaconfig 3.0 PL60]
+# Generated on Sat Feb  1 00:26:40 EST 1997 [metaconfig 3.0 PL60]
 
 cat >/tmp/c1$$ <<EOF
 ARGGGHHHH!!!!!
@@ -58,7 +58,7 @@ esac
 : Proper PATH separator
 p_=:
 : On OS/2 this directory should exist if this is not floppy only system :-]
-if test -d c:/.; then
+if test -d c:/. -a -n "$OS2_SHELL"; then
        p_=\;
        PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
        OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
@@ -107,7 +107,8 @@ else
        (PATH=.; alias -x) >/dev/null 2>&1 && \
                cat <<EOM
 (I see you are using the Korn shell.  Some ksh's blow up on $me,
-especially on exotic machines.  If yours does, try the Bourne shell instead.)
+especially on older exotic systems.  If yours does, try the Bourne 
+shell instead.)
 EOM
 fi
 
@@ -119,8 +120,8 @@ dynamic_ext=''
 extensions=''
 known_extensions=''
 static_ext=''
+useopcode=''
 useposix=''
-usesafe=''
 d_bsd=''
 d_eunice=''
 d_xenix=''
@@ -149,6 +150,7 @@ find=''
 flex=''
 gcc=''
 grep=''
+gzip=''
 inews=''
 ksh=''
 less=''
@@ -160,7 +162,6 @@ lpr=''
 ls=''
 mail=''
 mailx=''
-make=''
 mkdir=''
 more=''
 mv=''
@@ -173,7 +174,6 @@ rm=''
 rmail=''
 sed=''
 sendmail=''
-sh=''
 shar=''
 sleep=''
 smail=''
@@ -191,6 +191,7 @@ uniq=''
 uuname=''
 vi=''
 zcat=''
+zip=''
 full_sed=''
 libswanted=''
 hint=''
@@ -226,12 +227,13 @@ baserev=''
 bin=''
 binexp=''
 installbin=''
+bincompat3=''
+d_bincompat3=''
 byteorder=''
 cc=''
 gccversion=''
 ccflags=''
 cppflags=''
-mab=''
 ldflags=''
 lkflags=''
 locincpth=''
@@ -284,6 +286,8 @@ d_flexfnam=''
 d_flock=''
 d_fork=''
 d_fsetpos=''
+d_ftime=''
+d_gettimeod=''
 d_Gconvert=''
 d_getgrps=''
 d_gethent=''
@@ -292,11 +296,15 @@ d_gethname=''
 d_phostname=''
 d_uname=''
 d_getlogin=''
+d_getpgid=''
 d_getpgrp2=''
+d_bsdgetpgrp=''
 d_getpgrp=''
 d_getppid=''
 d_getprior=''
+d_gnulibc=''
 d_htonl=''
+d_inetaton=''
 d_isascii=''
 d_killpg=''
 d_link=''
@@ -335,6 +343,7 @@ d_rename=''
 d_rmdir=''
 d_safebcpy=''
 d_safemcpy=''
+d_sanemcmp=''
 d_select=''
 d_sem=''
 d_semctl=''
@@ -347,6 +356,7 @@ d_setlocale=''
 d_setpgid=''
 d_setpgrp2=''
 d_bsdpgrp=''
+d_bsdsetpgrp=''
 d_setpgrp=''
 d_setprior=''
 d_setregid=''
@@ -356,6 +366,8 @@ d_setreuid=''
 d_setrgid=''
 d_setruid=''
 d_setsid=''
+d_sfio=''
+usesfio=''
 d_shm=''
 d_shmat=''
 d_shmatprototype=''
@@ -363,11 +375,8 @@ shmattype=''
 d_shmctl=''
 d_shmdt=''
 d_shmget=''
-d_sigsetjmp=''
 d_sigaction=''
-d_sigintrp=''
-d_sigvec=''
-d_sigvectr=''
+d_sigsetjmp=''
 d_oldsock=''
 d_socket=''
 d_sockpair=''
@@ -390,6 +399,9 @@ d_strerrm=''
 d_strerror=''
 d_sysernlst=''
 d_syserrlst=''
+d_strtod=''
+d_strtol=''
+d_strtoul=''
 d_strxfrm=''
 d_symlink=''
 d_syscall=''
@@ -418,11 +430,9 @@ d_wctomb=''
 dlext=''
 cccdlflags=''
 ccdlflags=''
-d_shrplib=''
 dlsrc=''
 ld=''
 lddlflags=''
-shrpdir=''
 usedl=''
 fpostype=''
 gidtype=''
@@ -459,6 +469,7 @@ d_pwcomment=''
 d_pwexpire=''
 d_pwquota=''
 i_pwd=''
+i_sfio=''
 i_stddef=''
 i_stdlib=''
 i_string=''
@@ -472,11 +483,13 @@ i_sysioctl=''
 i_syssockio=''
 i_sysndir=''
 i_sysparam=''
+i_sysresrc=''
 i_sysselct=''
 i_sysstat=''
 i_systimes=''
 i_systypes=''
 i_sysun=''
+i_syswait=''
 i_sgtty=''
 i_termio=''
 i_termios=''
@@ -486,12 +499,18 @@ i_time=''
 timeincl=''
 i_unistd=''
 i_utime=''
+i_values=''
 i_stdarg=''
 i_varargs=''
 i_varhdr=''
 i_vfork=''
 intsize=''
+longsize=''
+shortsize=''
 libc=''
+libperl=''
+shrpenv=''
+useshrplib=''
 glibpth=''
 libpth=''
 loclibpth=''
@@ -500,6 +519,8 @@ xlibpth=''
 libs=''
 lns=''
 lseektype=''
+make=''
+make_set_make=''
 d_mymalloc=''
 freetype=''
 mallocobj=''
@@ -542,6 +563,7 @@ package=''
 spackage=''
 pager=''
 patchlevel=''
+subversion=''
 perladmin=''
 perlpath=''
 prefix=''
@@ -555,6 +577,7 @@ installscript=''
 scriptdir=''
 scriptdirexp=''
 selecttype=''
+sh=''
 sig_name=''
 sig_num=''
 installsitearch=''
@@ -572,13 +595,13 @@ ssizetype=''
 startperl=''
 startsh=''
 stdchar=''
-subversion=''
 sysman=''
 uidtype=''
 nm_opt=''
 nm_so_opt=''
 runnm=''
 usenm=''
+useperlio=''
 incpath=''
 mips=''
 mips_type=''
@@ -672,8 +695,8 @@ i_whoami=''
 libswanted=''
 : set useposix=false in your hint file to disable the POSIX extension.
 useposix=true
-: set usesafe=false in your hint if you want to skip the Safe extension.
-usesafe=true
+: set useopcode=false in your hint file to disable the Opcode extension.
+useopcode=true
 : Define several unixisms.  These can be used in hint files.
 exe_ext='' 
 : Extra object files, if any, needed on this platform.
@@ -694,9 +717,10 @@ loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
 
 : general looking path for locating libraries
-glibpth="/lib/pa1.1 /usr/shlib /usr/lib/large /lib /usr/lib"
-glibpth="$glibpth $xlibpth /lib/large /usr/lib/small /lib/small"
-glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/shlib"
+glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
+glibpth="$glibpth /lib /usr/lib $xlibpth"
+glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
+glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
 
 : Private path used by Configure to find libraries.  Its value
 : is prepended to libpth. This variable takes care of special
@@ -707,7 +731,7 @@ plibpth=''
 defvoidused=15
 
 : List of libraries we want.
-libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl'
+libswanted='sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl'
 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
 libswanted="$libswanted ucb bsd BSD PW x"
 : We probably want to search /usr/shlib before most other libraries.
@@ -717,8 +741,117 @@ glibpth="/usr/shlib $glibpth"
 : Do not use vfork unless overridden by a hint file.
 usevfork=false
 
+: Find the basic shell for Bourne shell scripts
+case "$sh" in
+'')
+       : SYSTYPE is for some older MIPS systems. 
+       : I do not know if it is still needed.
+       case "$SYSTYPE" in
+       *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
+       *) xxx='/bin/sh';;
+       esac
+       if test -f "$xxx"; then
+               sh="$xxx"
+       else
+               : Build up a list and do a single loop so we can 'break' out.
+               pth=`echo $PATH | sed -e "s/$p_/ /g"`
+               for xxx in sh bash ksh pdksh ash; do
+                       for p in $pth; do
+                               try="$try ${p}/${xxx}"
+                       done
+               done
+               for xxx in $try; do
+                       if test -f "$xxx"; then
+                               sh="$xxx";
+                               echo "Your Bourne shell appears to be in $sh."
+                               break
+                       elif test -f "$xxx.exe"; then
+                               sh="$xxx";
+                               echo "Hmm.  Your Bourne shell appears to be in $sh."
+                               break
+                       fi
+               done
+       fi
+       ;;
+esac
+
+case "$sh" in
+'')    cat <<EOM >&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@atlantic.net 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 <<EOSS
+$startsh
+set abc
+test "$?abc" != 1
+EOSS
+
+chmod +x try
+$eunicefix try
+if ./try; then
+       : echo "Yup, it does."
+else
+       echo "Hmm.  '$startsh' didn't work."
+       echo "You may have to fix up the shell scripts to make sure sh runs them."
+fi
+rm -f try
+
 : script used to extract .SH files with variable substitutions
-cat >extract <<'EOS'
+cat >extract <<EOS
+$startsh
+EOS
+cat >>extract <<'EOS'
 CONFIG=true
 echo "Doing variable substitutions on .SH files..."
 if test -f MANIFEST; then
@@ -826,7 +959,11 @@ silent=''
 extractsh=''
 override=''
 knowitall=''
+
 rm -f optdef.sh
+cat >optdef.sh <<EOS
+$startsh
+EOS
 
 : option parsing
 while test $# -gt 0; do
@@ -887,7 +1024,7 @@ done
 case "$error" in
 true)
        cat >&2 <<EOM
-Usage: $me [-dehrEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
+Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
                  [-U symbol] [-U symbol=]
   -d : use defaults for all answers.
   -e : go on without questioning past the production of config.sh.
@@ -1014,7 +1151,7 @@ THIS PACKAGE SEEMS TO BE INCOMPLETE.
 You have the option of continuing the configuration process, despite the
 distinct possibility that your kit is damaged, by typing 'y'es.  If you
 do, don't blame me if something goes wrong.  I advise you to type 'n'o
-and contact the author (doughera@lafcol.lafayette.edu).
+and contact the author (chip@atlantic.net).
 
 EOM
                echo $n "Continue? [n] $c" >&4
@@ -1060,6 +1197,7 @@ esac"
 
 : now set up to do reads with possible shell escape and default assignment
 cat <<EOSC >myread
+$startsh
 xxxm=\$dflt
 $myecho
 ans='!'
@@ -1155,7 +1293,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 " "
@@ -1211,7 +1352,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 (doughera@lafcol.lafayette.edu) know how I blew it.
+have, let me (chip@atlantic.net) know how I blew it.
 
 This installation script affects things in two ways:
 
@@ -1232,74 +1373,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 <<EOSS
-$startsh
-set abc
-test "$?abc" != 1
-EOSS
-
-chmod +x try
-$eunicefix try
-if ./try; then
-       echo "Yup, it does."
-else
-echo "Nope.  You may have to fix up the shell scripts to make sure sh runs them."
-fi
-rm -f try
-
 : find out where common programs are
 echo " "
 echo "Locating common programs..." >&4
@@ -1349,7 +1422,6 @@ echo
 expr
 find
 grep
-ln
 ls
 mkdir
 rm
@@ -1366,8 +1438,10 @@ cpp
 csh
 date
 egrep
+gzip
 less
 line
+ln
 more
 nroff
 perl
@@ -1375,6 +1449,7 @@ pg
 sendmail
 test
 uname
+zip
 "
 pth=`echo $PATH | sed -e "s/$p_/ /g"`
 pth="$pth /lib /usr/lib"
@@ -1422,6 +1497,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."
@@ -1538,10 +1619,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
@@ -1555,13 +1642,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 doughera@lafcol.lafayette.edu
+       : tests or hints, please send them to chip@atlantic.net
        : 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
@@ -1619,6 +1708,9 @@ EOM
                        *) osvers=$tmp;;
                        esac
                        ;;
+               *dc.osx) osname=dcosx
+                       osvers="$3"
+                       ;;
                dnix) osname=dnix
                        osvers="$3"
                        ;;
@@ -1628,6 +1720,9 @@ EOM
                dgux) osname=dgux 
                        osvers="$3"
                        ;;
+               dynixptx*) osname=dynixptx
+                       osvers="$3"
+                       ;;
                freebsd) osname=freebsd 
                        osvers="$3" ;;
                genix) osname=genix ;;
@@ -1684,7 +1779,7 @@ 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]//'`
@@ -1696,10 +1791,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}*)
@@ -1898,13 +1996,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_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 " "
@@ -1912,7 +2036,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
@@ -1938,12 +2063,20 @@ 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.
@@ -1993,7 +2126,10 @@ chmod +x filexp
 $eunicefix filexp
 
 : now set up to get a file name
-cat <<'EOSC' >getfile
+cat <<EOS >getfile
+$startsh
+EOS
+cat <<'EOSC' >>getfile
 tilde=''
 fullpath=''
 already=''
@@ -2308,13 +2444,20 @@ baserev=5.0
 echo " "
 echo "Getting the current patchlevel..." >&4
 if $test -r ../patchlevel.h;then
-       patchlevel=`awk '/PATCHLEVEL/ {print $3}' < ../patchlevel.h`
-       subversion=`awk '/SUBVERSION/ {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 sub$subversion.)"
+$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
@@ -2327,20 +2470,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=`LC_ALL=C;export LC_ALL;\
-                   echo $baserev $patchlevel $subversion | \
-                   $awk '{print $1 + $2/1000.0 + $3/100000.0}'`
-               dflt="$privlib/$archname/$version"
-               ;;
-       esac
+    case "$privlib" in
+    '')        dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
+       set dflt
+       eval $prefixup
        ;;
-*) dflt="$archlib";;
+    *) 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"
+       ;;
+    esac
+    ;;
+*)
+    dflt="$archlib"
+    ;;
 esac
 cat <<EOM
 
@@ -2382,7 +2532,10 @@ else
 fi
 
 : set up the script used to warn in case of inconsistency
-cat <<'EOSC' >whoa
+cat <<EOS >whoa
+$startsh
+EOS
+cat <<'EOSC' >>whoa
 dflt=y
 echo " "
 echo "*** WHOA THERE!!! ***" >&4
@@ -2402,6 +2555,33 @@ $undef$define) . ./whoa; eval "$var=\$tu";;
 *) eval "$var=$val";;
 esac'
 
+$cat <<EOM
+
+Perl 5.004 can be compiled for binary compatibility with 5.003.
+If you decide to do so, you will be able to continue using any
+extensions that were compiled for Perl 5.003.  However, binary
+compatibility forces Perl to expose some of its internal symbols
+in the same way that 5.003 did.  So you may have symbol conflicts
+if you embed a binary-compatible Perl in other programs.
+
+EOM
+case "$d_bincompat3" in
+"$undef") dflt=n ;;
+*) dflt=y ;;
+esac
+rp='Binary compatibility with Perl 5.003?'
+. ./myread
+case "$ans" in
+y*) val="$define" ;;
+*)  val="$undef" ;;
+esac
+set d_bincompat3
+eval $setvar
+case "$d_bincompat3" in
+"$define") bincompat3=y ;;
+*) bincompat3=n ;;
+esac
+
 : make some quick guesses about what we are up against
 echo " "
 $echo $n "Hmm...  $c"
@@ -2412,6 +2592,7 @@ 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
@@ -2456,6 +2637,17 @@ EOI
        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
@@ -2478,8 +2670,8 @@ 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
+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
@@ -2551,6 +2743,7 @@ EOM
        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
@@ -2693,12 +2886,13 @@ if $test ! -d "$dflt/auto"; then
 fi
 cat <<EOM
 
-In 5.001, Perl stored architecture-dependent library files in a library
+In 5.001, Perl stored architecture-dependent library files in a directory
 with a name such as $privlib/$archname, 
 and this directory contained files from the standard extensions and 
 files from any additional extensions you might have added.  Starting 
 with version 5.002, all the architecture-dependent standard extensions 
-will go into $archlib, 
+will go into a version-specific directory such as
+$archlib, 
 while locally-added extensions will go into
 $sitearch.
 
        echo "Could not find manual pages in source form." >&4
 fi
 
-: determine where manual pages go
-set man1dir man1dir none
-eval $prefixit
+: see what memory models we can support
+case "$models" 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'
+       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 <<EOM
+Some systems have different model sizes.  On most systems they are called
+small, medium, large, and huge.  On the PDP11 they are called unsplit and
+split.  If your system doesn't support different memory models, say "none".
+If you wish to force everything to one memory model, say "none" here and
+put the appropriate flags later when it asks you for other cc and ld flags.
+Venix systems may wish to put "none" and let the compiler figure things out.
+(In the following question multiple model names should be space separated.)
 
-$spackage has manual pages available in source form.
 EOM
-case "$nroff" in
-nroff)
-       echo "However, you don't have nroff, so they're probably useless to you."
-       case "$man1dir" in
-       '') man1dir="none";;
-       esac;;
-esac
-echo "If you don't want the manual sources installed, answer 'none'."
-case "$man1dir" in
-' ') dflt=none
+rp="Which memory models are supported?"
+. ./myread
+models="$ans"
+
+case "$models" in
+none)
+       small=''
+       medium=''
+       large=''
+       huge=''
+       unsplit=''
+       split=''
        ;;
-'')
-       lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
-       lookpath="$lookpath $prefixexp/man/p_man/man1"
-       lookpath="$lookpath $prefixexp/man/u_man/man1"
-       lookpath="$lookpath $prefixexp/man/man.1"
-       : If prefix contains 'perl' then we want to keep the man pages
-       : under the prefix directory.  Otherwise, look in a variety of
-       : other possible places.  This is debatable, but probably a
-       : good compromise.  Well, apparently not.
-       : Experience has shown people expect man1dir to be under prefix,
-       : so we now always put it there.  Users who want other behavior
-       : can answer interactively or use a command line option.
-       : Does user have System V-style man paths.
-       case "$sysman" in
-       */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
-       *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
+*split)
+       case "$split" in
+       '') if $contains '\-i' $sysman/ld.1 >/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";;
+               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
-       set dflt
-       eval $prefixup
        ;;
-*)  dflt="$man1dir"
+*)
+       echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
        ;;
 esac
-echo " "
-fn=dn+~
-rp="Where do the main $spackage manual pages (source) go?"
-. ./getfile
-if $test "X$man1direxp" != "X$ansexp"; then
-       installman1dir=''
-fi
-man1dir="$ans"
-man1direxp="$ansexp"
-case "$man1dir" in
-'') man1dir=' '
-       installman1dir='';;
-esac
-if $afs; then
-       $cat <<EOM
 
-Since you are running AFS, I need to distinguish the directory in which
-manual pages reside from the directory in which they are installed (and from
-which they are presumably copied to the former directory by occult means).
+: 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.
 
 EOM
-       case "$installman1dir" in
-       '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
-       *) dflt="$installman1dir";;
-       esac
-       fn=de~
-       rp='Where will man pages be installed?'
-       . ./getfile
-       installman1dir="$ans"
+       rp="What command will force resolution on this system?"
+       . ./myread
+       cc="$ans"
 else
-       installman1dir="$man1direxp"
+       case "$cc" in
+       '') dflt=cc;;
+       *) dflt="$cc";;
+       esac
+       rp="Use which C compiler?"
+       . ./myread
+       cc="$ans"
 fi
-
-: What suffix to use on installed man pages
-
-case "$man1dir" in
-' ')
-       man1ext='0'
-       ;;
-*)
-       rp="What suffix should be used for the main $spackage man pages?"
-       case "$man1ext" in
-       '')     case "$man1dir" in
-               *1)  dflt=1 ;;
-               *1p) dflt=1p ;;
-               *1pm) dflt=1pm ;;
-               *l) dflt=l;;
-               *n) dflt=n;;
-               *o) dflt=o;;
-               *p) dflt=p;;
-               *C) dflt=C;;
-               *L) dflt=L;;
-               *L1) dflt=L1;;
-               *) dflt=1;;
-               esac
+echo " "
+echo "Checking for GNU cc in disguise and/or its version number..." >&4
+$cat >gccvers.c <<EOM
+#include <stdio.h>
+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
                ;;
-       *)      dflt="$man1ext";;
        esac
-       . ./myread
-       man1ext="$ans"
-       ;;
+fi
+$rm -f gccvers*
+case "$gccversion" in
+1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
 esac
 
-: see if we can have long filenames
+: What should the include directory be ?
 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.
-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
+$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
-       $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*
+       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"
+       ;;
+esac
 
-: determine where library module manual pages go
-set man3dir man3dir none
-eval $prefixit
-$cat <<EOM
+: 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
 
-$spackage has manual pages for many of the library modules.
-EOM
+: Now check and see which directories actually exist, avoiding duplicates
+libpth=''
+for xxx in $dlist
+do
+    if $test -d $xxx; then
+               case " $libpth " in
+               *" $xxx "*) ;;
+               *) libpth="$libpth $xxx";;
+               esac
+    fi
+done
+$cat <<'EOM'
 
-case "$nroff" in
-nroff)
-       $cat <<'EOM'
-However, you don't have nroff, so they're probably useless to you.
-You can use the supplied perldoc script instead.
-EOM
-       case "$man3dir" in
-       '') man3dir="none";;
-       esac;;
-esac
+Some systems have incompatible or broken versions of libraries.  Among
+the directories listed in the question below, please remove any you
+know not to be holding relevant libraries, and add any that are needed.
+Say "none" for none.
 
-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;;
-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 -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
-       *)      dflt="$privlib/man/man3" ;;
-       esac
+case "$libpth" in
+'') dflt='none';;
+*)
+       set X $libpth
+       shift
+       dflt=${1+"$@"}
        ;;
-' ') dflt=none;;
-*)     dflt="$man3dir" ;;
 esac
-echo " "
+rp="Directories to use for library searches?"
+. ./myread
+case "$ans" in
+none) libpth=' ';;
+*) libpth="$ans";;
+esac
 
-fn=dn+~
-rp="Where do the $spackage library man pages (source) go?"
-. ./getfile
-if test "X$man3direxp" != "X$ansexp"; then
-       installman3dir=''
-fi
+: Define several unixisms. Hints files or command line options
+: can be used to override them.
+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
 
-man3dir="$ans"
-man3direxp="$ansexp"
-case "$man3dir" in
-'') man3dir=' '
-       installman3dir='';;
+: 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
-if $afs; then
-       $cat <<EOM
+$cat <<EOM
 
-Since you are running AFS, I need to distinguish the directory in which
-manual pages reside from the directory in which they are installed (and from
-which they are presumably copied to the former directory by occult means).
+On some systems, shared libraries may be available.  Answer 'none' if
+you want to suppress searching of shared libraries for the remaining
+of this configuration.
 
 EOM
-       case "$installman3dir" in
-       '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
-       *) dflt="$installman3dir";;
-       esac
-       fn=de~
-       rp='Where will man pages be installed?'
-       . ./getfile
-       installman3dir="$ans"
-else
-       installman3dir="$man3direxp"
-fi
-
-: What suffix to use on installed man pages
+rp='What is the file extension used for shared libraries?'
+. ./myread
+so="$ans"
 
-case "$man3dir" in
-' ')
-       man3ext='0'
-       ;;
-*)
-       rp="What suffix should be used for the $spackage library man pages?"
-       case "$man3ext" in
-       '')     case "$man3dir" in
-               *3)  dflt=3 ;;
-               *3p) dflt=3p ;;
-               *3pm) dflt=3pm ;;
-               *l) dflt=l;;
-               *n) dflt=n;;
-               *o) dflt=o;;
-               *p) dflt=p;;
-               *C) dflt=C;;
-               *L) dflt=L;;
-               *L3) dflt=L3;;
-               *) dflt=3;;
-               esac
-               ;;
-       *)      dflt="$man3ext";;
-       esac
-       . ./myread
-       man3ext="$ans"
-       ;;
+: Looking for optional libraries
+echo " "
+echo "Checking for optional libraries..." >&4
+case "$libs" in
+' '|'') dflt='';;
+*) dflt="$libs";;
 esac
-
-: see what memory models we can support
-case "$models" 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'
-       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";;
+case "$libswanted" in
+'') libswanted='c_s';;
 esac
-$cat <<EOM
-Some systems have different model sizes.  On most systems they are called
-small, medium, large, and huge.  On the PDP11 they are called unsplit and
-split.  If your system doesn't support different memory models, say "none".
-If you wish to force everything to one memory model, say "none" here and
-put the appropriate flags later when it asks you for other cc and ld flags.
-Venix systems may wish to put "none" and let the compiler figure things out.
-(In the following question multiple model names should be space separated.)
-
-EOM
-rp="Which memory models are supported?"
-. ./myread
-models="$ans"
-
-case "$models" in
-none)
-       small=''
-       medium=''
-       large=''
-       huge=''
-       unsplit=''
-       split=''
-       ;;
-*split)
-       case "$split" in
-       '') if $contains '\-i' $sysman/ld.1 >/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";;
+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
-       ;;
+       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
 
-: 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 <<EOM
+Some versions of Unix support shared libraries, which make executables smaller
+but make load time slightly longer.
 
+On some systems, mostly System V Release 3's, the shared library is included
+by putting the option "-lc_s" as the last thing on the cc command line when
+linking.  Other systems use shared libraries by default.  There may be other
+libraries needed to compile $package on your machine as well.  If your system
+needs the "-lc_s" option, include it here.  Include any other special libraries
+here as well.  Say "none" for none.
 EOM
-       rp="What command will force resolution on this system?"
-       . ./myread
-       cc="$ans"
-else
-       case "$cc" in
-       '') dflt=cc;;
-       *) dflt="$cc";;
-       esac
-       rp="Use which C compiler?"
-       . ./myread
-       cc="$ans"
-fi
+
 echo " "
-echo "Checking for GNU cc in disguise and/or its version number..." >&4
-$cat >gccvers.c <<EOM
-#include <stdio.h>
-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` ;;
+rp="Any additional libraries?"
+. ./myread
+case "$ans" in
+none) libs=' ';;
+*) libs="$ans";;
 esac
 
-: What should the include directory be ?
+: see how we invoke the C preprocessor
 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'
+echo "Now, how can we feed standard input to your C preprocessor..." >&4
+cat <<'EOT' >testcpp.c
+#define ABC abc
+#define XYZ xyz
+ABC.XYZ
+EOT
+cd ..
+echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
+chmod 755 cppstdin
+wrapper=`pwd`/cppstdin
+ok='false'
+cd UU
+
+if $test "X$cppstdin" != "X" && \
+       $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
+then
+       echo "You used to use $cppstdin $cppminus so we'll use that again."
+       case "$cpprun" in
+       '') echo "But let's see if we can live without a wrapper..." ;;
+       *)
+               if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
+                       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
+               then
+                       echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
+                       ok='true'
+               else
+                       echo "(However, $cpprun $cpplast does not work, let's see...)"
+               fi
+               ;;
+       esac
+else
+       case "$cppstdin" in
+       '') ;;
+       *)
+               echo "Good old $cppstdin $cppminus does not seem to be of any help..."
+               ;;
+       esac
+fi
+
+if $ok; then
+       : nothing
+elif echo 'Maybe "'"$cc"' -E" will work...'; \
+       $cc -E <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "Yup, it does."
+       x_cpp="$cc -E"
+       x_minus='';
+elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
+       $cc -E - <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "Yup, it does."
+       x_cpp="$cc -E"
+       x_minus='-';
+elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
+       $cc -P <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "Yipee, that works!"
+       x_cpp="$cc -P"
+       x_minus='';
+elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
+       $cc -P - <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "At long last!"
+       x_cpp="$cc -P"
+       x_minus='-';
+elif echo 'No such luck, maybe "'$cpp'" will work...'; \
+       $cpp <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "It works!"
+       x_cpp="$cpp"
+       x_minus='';
+elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
+       $cpp - <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       echo "Hooray, it works!  I was beginning to wonder."
+       x_cpp="$cpp"
+       x_minus='-';
+elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
+       $wrapper <testcpp.c >testcpp.out 2>&1; \
+       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+       x_cpp="$wrapper"
+       x_minus=''
+       echo "Eureka!"
+else
+       dflt=''
+       rp="No dice.  I can't find a C preprocessor.  Name one:"
+       . ./myread
+       x_cpp="$ans"
+       x_minus=''
+       $x_cpp <testcpp.c >testcpp.out 2>&1
+       if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
+               echo "OK, that will do." >&4
        else
-               mips_type='System V'
+echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
+               exit 1
        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
+fi
+
+case "$ok" in
+false)
+       cppstdin="$x_cpp"
+       cppminus="$x_minus"
+       cpprun="$x_cpp"
+       cpplast="$x_minus"
+       set X $x_cpp
+       shift
+       case "$1" in
+       "$cpp")
+               echo "Perhaps can we force $cc -E using a wrapper..."
+               if $wrapper <testcpp.c >testcpp.out 2>&1; \
+                       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
+               then
+                       echo "Yup, we can."
+                       cppstdin="$wrapper"
+                       cppminus='';
+               else
+                       echo "Nope, we'll have to live without it..."
+               fi
+               ;;
+       esac
+       case "$cpprun" in
+       "$wrapper")
+               cpprun=''
+               cpplast=''
+               ;;
+       esac
+       ;;
+esac
+
+case "$cppstdin" in
+"$wrapper") ;;
+*) $rm -f $wrapper;;
+esac
+$rm -f testcpp.c testcpp.out
+
+: determine optimize, if desired, or use for debug flag also
+case "$optimize" in
+' ') dflt='none';;
+'') dflt='-O';;
+*) dflt="$optimize";;
+esac
+$cat <<EOH
+
+Some C compilers have problems with their optimizers.  By default, $package
+compiles with the -O flag to use the optimizer.  Alternately, you might want
+to use the symbolic debugger, which uses the -g flag (on traditional Unix
+systems).  Either flag can be specified here.  To use neither flag, specify
+the word "none".
+
+EOH
+rp="What optimizer/debugger flag should be used?"
+. ./myread
+optimize="$ans"
+case "$optimize" in
+'none') optimize=" ";;
+esac
+
+dflt=''
+: We will not override a previous value, but we might want to
+: augment a hint file
+case "$hint" in
+none|recommended)
+       case "$gccversion" in
+       1*) dflt='-fpcc-struct-return' ;;
+       esac
+       case "$optimize" in
+       *-g*) dflt="$dflt -DDEBUGGING";;
+       esac
+       case "$gccversion" in
+       2*) if test -d /etc/conf/kconfig.d &&
+                       $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
+               then
+                       dflt="$dflt -posix"
+               fi
+               ;;
+       esac
+       ;;
+esac
+
+case "$mips_type" in
+*BSD*|'') inclwanted="$locincpth $usrinc";;
+*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
+esac
+for thisincl in $inclwanted; do
+       if $test -d $thisincl; then
+               if $test x$thisincl != x$usrinc; then
+                       case "$dflt" in
+                       *$thisincl*);;
+                       *) dflt="$dflt -I$thisincl";;
+                       esac
+               fi
+       fi
+done
+
+inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
+       xxx=true;
+elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
+       xxx=true;
 else
-       echo "Doesn't look like a MIPS system."
-       xxx_prompt=n
-       echo "exit 1" >mips
+       xxx=false;
+fi;
+if $xxx; then
+       case "$dflt" in
+       *$2*);;
+       *) dflt="$dflt -D$2";;
+       esac;
+fi'
+
+if ./osf1; then
+       set signal.h __LANGUAGE_C__; eval $inctest
+else
+       set signal.h LANGUAGE_C; eval $inctest
 fi
-chmod +x mips
-$eunicefix mips
+
+case "$hint" in
+none|recommended) dflt="$ccflags $dflt" ;;
+*) dflt="$ccflags";;
+esac
+
+case "$dflt" in
+''|' ') dflt=none;;
+esac
+$cat <<EOH
+
+Your C compiler may want other flags.  For this question you should include
+-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
+but you should NOT include libraries or ld flags like -lwhatever.  If you
+want $package to honor its debug switch, you should include -DDEBUGGING here.
+Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
+-DHIDEMYMALLOC or -DCRIPPLED_CC.
+
+To use no flags, specify the word "none".
+
+EOH
+set X $dflt
+shift
+dflt=${1+"$@"}
+rp="Any additional cc flags?"
+. ./myread
+case "$ans" in
+none) ccflags='';;
+*) ccflags="$ans";;
+esac
+
+: the following weeds options from ccflags that are of no interest to cpp
+cppflags="$ccflags"
+case "$gccversion" in
+1*) cppflags="$cppflags -D__GNUC__"
+esac
+case "$mips_type" in
+'');;
+*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
+esac
+case "$cppflags" in
+'');;
+*)
+       echo " "
+       echo "Let me guess what the preprocessor flags are..." >&4
+       set X $cppflags
+       shift
+       cppflags=''
+       $cat >cpp.c <<'EOM'
+#define BLURFL foo
+
+BLURFL xx LFRULB
+EOM
+       previous=''
+       for flag in $*
+       do
+               case "$flag" in
+               -*) ftry="$flag";;
+               *) ftry="$previous $flag";;
+               esac
+               if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
+                       >cpp1.out 2>/dev/null && \
+                       $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
+                       >cpp2.out 2>/dev/null && \
+                       $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
+                       $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
+               then
+                       cppflags="$cppflags $ftry"
+                       previous=''
+               else
+                       previous="$flag"
+               fi
+       done
+       set X $cppflags
+       shift
+       cppflags=${1+"$@"}
+       case "$cppflags" in
+       *-*)  echo "They appear to be: $cppflags";;
+       esac
+       $rm -f cpp.c cpp?.out
+       ;;
+esac
+
+: flags used in final linking phase
+
+case "$ldflags" in
+'') if ./venix; then
+               dflt='-i -z'
+       else
+               dflt=''
+       fi
+       case "$ccflags" in
+       *-posix*) dflt="$dflt -posix" ;;
+       esac
+       ;;
+*) dflt="$ldflags";;
+esac
+
+: Try to guess additional flags to pick up local libraries.
+for thislibdir in $libpth; do
+       case " $loclibpth " in
+       *" $thislibdir "*)
+               case "$dflt " in 
+               *"-L$thislibdir "*) ;;
+               *)  dflt="$dflt -L$thislibdir" ;;
+               esac
+               ;;
+       esac
+done
+
+case "$dflt" in
+'') dflt='none' ;;
+esac
+
+$cat <<EOH
+
+Your C linker may need flags.  For this question you should
+include -L/whatever and any other flags used by the C linker, but you
+should NOT include libraries like -lwhatever.
+
+Make sure you include the appropriate -L/path flags if your C linker
+does not normally search all of the directories you specified above,
+namely
+       $libpth
+To use no flags, specify the word "none".
+
+EOH
+
+rp="Any additional ld flags (NOT including libraries)?"
+. ./myread
+case "$ans" in
+none) ldflags='';;
+*) ldflags="$ans";;
+esac
+rmlist="$rmlist pdp11"
+
+: coherency check
 echo " "
-case "$usrinc" in
-'') ;;
-*) dflt="$usrinc";;
+echo "Checking your choice of C compiler and flags for coherency..." >&4
+set X $cc $optimize $ccflags $ldflags try.c -o try
+shift
+$cat >try.msg <<EOM
+I've tried to compile and run a simple program with:
+
+       $*
+       ./try
+
+and I got the following output:
+
+EOM
+$cat > try.c <<'EOF'
+#include <stdio.h>
+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 './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"
+               dflt=y
+       fi
+else
+       echo "I can't compile the test program." >>try.msg
+       rp="You have a BIG problem.  Shall I abort Configure"
+       dflt=y
+fi
+case "$dflt" in
+y)
+       $cat try.msg
+       case "$knowitall" in
+       '')
+               echo "(The supplied flags might be incorrect with this C compiler.)"
+               ;;
+       *) dflt=n;;
+       esac
+       echo " "
+       . ./myread
+       case "$ans" in
+       n*|N*) ;;
+       *)      echo "Ok.  Stopping Configure." >&4
+               exit 1
+               ;;
+       esac
+       ;;
+n) echo "OK, that should do.";;
 esac
-case "$xxx_prompt" in
-y)     fn=d/
-       rp='Where are the include files you want to use?'
-       . ./getfile
-       usrinc="$ans"
+$rm -f try try.* core
+
+echo " "
+echo "Checking for GNU C Library..." >&4
+cat >gnulibc.c <<EOM
+int
+main()
+{
+  return __libc_main();
+}
+EOM
+if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/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
+'')
+       case "$d_gnulibc" in
+       $define)
+               dflt=n
+               ;;
+       *)
+               dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
+               if $test $dflt -gt 20; then
+                       dflt=y
+               else
+                       dflt=n
+               fi
+               ;;
+       esac
        ;;
-*)     usrinc="$dflt"
+*)
+       case "$usenm" in
+       true) dflt=y;;
+       *) dflt=n;;
+       esac
        ;;
 esac
+$cat <<EOM
 
-: 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
+I can use 'nm' to extract the symbols from your C libraries. This is a time
+consuming task which may generate huge output on the disk (up to 3 megabytes)
+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?'
+. ./myread
+case "$ans" in
+n|N) usenm=false;;
+*) usenm=true;;
+esac
+
+runnm=$usenm
+case "$reuseval" in
+true) runnm=false;;
+esac
+
+: nm options which may be necessary
+case "$nm_opt" in
+'') if $test -f /mach_boot; then
+               nm_opt=''
+       elif $test -d /usr/ccs/lib; then
+               nm_opt='-p'
+       elif $test -f /dgux; then
+               nm_opt='-p'
+       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
-fi
+       ;;
+esac
 
-: now get the host name
+case "$runnm" in
+true)
+: get list of predefined functions in a handy place
 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
+case "$libc" in
+'') libc=unknown
+       case "$libs" in
+       *-lc_s*) libc=`./loc libc_s$lib_ext $libc $libpth`
+       esac
        ;;
-*) 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=''
+libnames='';
+case "$libs" in
+'') ;;
+*)  for thislib in $libs; do
+       case "$thislib" in
+       -lc|-lc_s)
+               : Handle C library specially below.
+               ;;
+       -l*)
+               thislib=`echo $thislib | $sed -e 's/^-l//'`
+               if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
+                       :
+               elif try=`./loc lib$thislib.$so 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$lib_ext X $xlibpth`; $test -f "$try"; then
+                       :
+               else
+                       try=''
                fi
-       elif $test -r /etc/systemid; then
-               echo "(What is a non-Xenix system doing with /etc/systemid?)"
+               libnames="$libnames $try"
+               ;;
+       *) libnames="$libnames $thislib" ;;
+       esac
+       done
+       ;;
+esac
+xxx=normal
+case "$libc" in
+unknown)
+       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
+       ;;
+esac
+if $test -r "$1"; then
+       echo "Your (shared) C library seems to be in $1."
+       libc="$1"
+elif $test -r /lib/libc && $test -r /lib/clib; then
+       echo "Your C library seems to be in both /lib/clib and /lib/libc."
+       xxx=apollo
+       libc='/lib/clib /lib/libc'
+       if $test -r /lib/syslib; then
+               echo "(Your math library is in /lib/syslib.)"
+               libc="$libc /lib/syslib"
+       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$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$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$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$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
+               :
+       elif tans=`./loc Mlibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
+               :
+       else
+               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."
+               libc=$tans
+       else
+               libc='blurfl'
        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'
+if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
+       dflt="$libc"
+       cat <<EOM
+
+If the guess above is wrong (which it might be if you're using a strange
+compiler, or your machine supports multiple models), you can override it here.
+
+EOM
+else
+       dflt=''
+       echo $libpth | tr ' ' '\012' | sort | uniq > libpath
+       cat >&4 <<EOM
+I can't seem to find your C library.  I've looked in the following places:
+
+EOM
+       $sed 's/^/      /' libpath
+       cat <<EOM
+
+None of these seems to contain your C library. I need to get its name...
+
+EOM
+fi
+fn=f
+rp='Where is your C library?'
+. ./getfile
+libc="$ans"
+
+echo " "
+echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
+set X `cat libnames`
+shift
+xxx=files
+case $# in 1) xxx=file; esac
+echo "Extracting names from the following $xxx for later perusal:" >&4
+echo " "
+$sed 's/^/     /' libnames >&4
+echo " "
+$echo $n "This may take a while...$c" >&4
+
+: 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.ptf $com >libc.list"; $echo $n ".$c" >&4'
+xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
+xxx='[ADTSIW]'
+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
+elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
+                               -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+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 '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
+       eval $xscan;\
+       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
+               eval $xrun
+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
+       if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
+               eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
+       then
+               nm_opt='-p'
+               eval $xrun
        else
-               echo 'Strange.  Maybe "uname -n" will work...'
-               if tans=`sh -c 'uname -n' 2>&1` ; then
-                       myhostname=$tans
-                       phostname='uname -n'
+               echo " "
+               echo "nm didn't seem to work right. Trying ar instead..." >&4
+               com=''
+               if ar t $libc > libc.tmp; then
+                       for thisname in $libnames; do
+                               ar t $thisname >>libc.tmp
+                       done
+                       $sed -e 's/\.o$//' < libc.tmp > libc.list
+                       echo "Ok." >&4
                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"
+                       echo "ar didn't seem to work right." >&4
+                       echo "Maybe this is a Cray...trying bld instead..." >&4
+                       if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
+                       then
+                               for thisname in $libnames; do
+                                       bld t $libnames | \
+                                       $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
+                                       ar t $thisname >>libc.tmp
+                               done
+                               echo "Ok." >&4
                        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
+                               echo "That didn't work either.  Giving up." >&4
+                               exit 1
                        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
+nm_extract="$com"
+if $test -f /lib/syscalls.exp; then
+       echo " "
+       echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
+       $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
 fi
+;;
+esac
+$rm -f libnames libpath
 
-: 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"
+: determine filename position in cpp output
+echo " "
+echo "Computing filename position in cpp output for #include directives..." >&4
+echo '#include <stdio.h>' > foo.c
+$cat >fieldn <<EOF
+$startsh
+$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
+$grep '^[      ]*#.*stdio\.h' | \
+while read cline; do
+       pos=1
+       set \$cline
+       while $test \$# -gt 0; do
+               if $test -r \`echo \$1 | $tr -d '"'\`; then
+                       echo "\$pos"
+                       exit 0
+               fi
+               shift
+               pos=\`expr \$pos + 1\`
+       done
 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]'`
-       ;;
+EOF
+chmod +x fieldn
+fieldn=`./fieldn`
+$rm -f foo.c fieldn
+case $fieldn in
+'') pos='???';;
+1) pos=first;;
+2) pos=second;;
+3) pos=third;;
+*) pos="${fieldn}th";;
 esac
+echo "Your cpp writes the filename in the $pos field of the line."
 
-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
-echo " "
-rp="What is your domain name?"
-. ./myread
-tans="$ans"
-case "$ans" in
-'') ;;
-.*) ;;
-*) tans=".$tans";;
+: locate header file
+$cat >findhdr <<EOF
+$startsh
+wanted=\$1
+name=''
+if test -f $usrinc/\$wanted; then
+       echo "$usrinc/\$wanted"
+       exit 0
+fi
+awkprg='{ print \$$fieldn }'
+echo "#include <\$wanted>" > foo\$\$.c
+$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
+$grep "^[      ]*#.*\$wanted" | \
+while read cline; do
+       name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
+       case "\$name" in
+       */\$wanted) echo "\$name"; exit 0;;
+       *) name='';;
+       esac;
+done;
+$rm -f foo\$\$.c;
+case "\$name" in
+'') exit 1;;
 esac
-mydomain="$tans"
+EOF
+chmod +x findhdr
+
+: 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'
 
-: 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
+: see if dld is available
+set dld.h i_dld
+eval $inhdr
 
-: a little sanity check here
-case "$phostname" in
-'') ;;
+: 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 `$phostname | ./tr '[A-Z]' '[a-z]'` in
-       $myhostname$mydomain|$myhostname) ;;
+       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";;
        *)
-               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
+               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"
+
+: 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
-
-$cat <<EOM
-
-I need to get your e-mail address in Internet format if possible, i.e.
-something like user@host.domain. Please answer accurately since I have
-no easy means to double check it. The default value provided below
-is most probably close to the reality but may not be valid from outside
-your organization...
-
-EOM
-cont=x
-while test "$cont"; do
-       case "$cf_email" in
-       '') dflt="$cf_by@$myhostname$mydomain";;
-       *) dflt="$cf_email";;
-       esac
-       rp='What is your e-mail address?'
-       . ./myread
-       cf_email="$ans"
-       case "$cf_email" in
-       *@*.*) cont='' ;;
-       *)
-               rp='Address does not look like an Internet one.  Use it anyway?'
-               case "$fastread" in
-               yes) dflt=y ;;
-               *) dflt=n ;;
-               esac
-               . ./myread
-               case "$ans" in
-               y*) cont='' ;;
-               *) echo " " ;;
-               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
-done
-
-$cat <<EOM
+    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@'`
 
-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.
+    $cat << EOM
 
-EOM
-case "$perladmin" in
-'') dflt="$cf_email";;
-*) dflt="$perladmin";;
-esac
-rp='Perl administrator e-mail address'
-. ./myread
-perladmin="$ans"
+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".
 
-: 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 <<EOM
-Some installations have a separate directory just for executable scripts so
-that they can mount it across multiple architectures but keep the scripts in
-one spot.  You might, for example, have a subdirectory of /usr/share for this.
-Or you might just lump your scripts in with all your other executables.
 EOM
-fn=d~
-rp='Where do you keep publicly executable scripts?'
-. ./getfile
-if $test "X$ansexp" != "X$scriptdirexp"; then
-       installscript=''
-fi
-scriptdir="$ans"
-scriptdirexp="$ansexp"
-if $afs; then
-       $cat <<EOM
+    case "$cccdlflags" in
+    '')        case "$gccversion" in
+               '') case "$osname" in
+                       hpux)   dflt='+z' ;;
+                       next)   dflt='none' ;;
+                       solaris|svr4*|esix*) dflt='-Kpic' ;;
+                       irix*)  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
 
-Since you are running AFS, I need to distinguish the directory in which
-scripts reside from the directory in which they are installed (and from
-which they are presumably copied to the former directory by occult means).
+    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 "$installscript" in
-       '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
-       *) dflt="$installscript";;
+       case "$ld" in
+       '')     $cat >try.c <<'EOM'
+/* Test for whether ELF binaries are produced */
+#include <fcntl.h>
+#include <stdlib.h>
+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 */
+}
+EOM
+               if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
+                       cat <<EOM
+You appear to have ELF support.  I'll use $cc to build dynamic libraries.
+EOM
+                       dflt="$cc"
+               else
+                       echo "I'll use ld to build dynamic libraries."
+                       dflt='ld'
+               fi
+               rm -f try.c a.out
+               ;;
+       *)      dflt="$ld"
+               ;;
        esac
-       fn=de~
-       rp='Where will public scripts be installed?'
-       . ./getfile
-       installscript="$ans"
-else
-       installscript="$scriptdirexp"
-fi
 
-: determine perl absolute location
-case "$perlpath" in
-'')    perlpath=$binexp/perl ;;
-esac
+    rp="What command should be used to create dynamic libraries?"
+    . ./myread
+       ld="$ans"
 
-: figure out how to guarantee perl startup
-case "$startperl" in
-'')
-       case "$sharpbang" in
-       *!)
-               $cat <<EOH
+    cat << EOM
 
-I can use the #! construct to start perl on your system. This will
-make startup of perl scripts faster, but may cause problems if you
-want to share those scripts and perl is not in a standard place
-($perlpath) on all your platforms. The alternative is to force
-a shell by starting the script with a single ':' character.
+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".
 
-EOH
-               dflt=$perlpath
-               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";;
+EOM
+    case "$lddlflags" in
+    '') case "$osname" in
+                       hpux)  dflt='-b' ;;
+                       linux|irix*)    dflt='-shared' ;;
+                       next)  dflt='none' ;;
+                       solaris) dflt='-G' ;;
+                       sunos) dflt='-assert nodefinitions' ;;
+                       svr4*|esix*) dflt="-G $ldflags" ;;
+               *)     dflt='none' ;;
+                       esac
+                       ;;
+    *) dflt="$lddlflags" ;;
+    esac
+
+: 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
                ;;
-       *) startperl=": # use perl"
-               ;;
        esac
-       ;;
+done
+
+case "$dflt" in
+'') dflt='none' ;;
 esac
-echo "I'll use $startperl to start perl scripts."
 
-: see how we invoke the C preprocessor
-echo " "
-echo "Now, how can we feed standard input to your C preprocessor..." >&4
-cat <<'EOT' >testcpp.c
-#define ABC abc
-#define XYZ xyz
-ABC.XYZ
-EOT
-cd ..
-echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
-chmod 755 cppstdin
-wrapper=`pwd`/cppstdin
-ok='false'
-cd UU
+    rp="Any special flags to pass to $ld to create a dynamically loaded library?"
+    . ./myread
+    case "$ans" in
+    none) lddlflags=' ' ;;
+    *) lddlflags="$ans" ;;
+    esac
 
-if $test "X$cppstdin" != "X" && \
-       $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
-then
-       echo "You used to use $cppstdin $cppminus so we'll use that again."
-       case "$cpprun" in
-       '') echo "But let's see if we can live without a wrapper..." ;;
-       *)
-               if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
-                       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
-               then
-                       echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
-                       ok='true'
-               else
-                       echo "(However, $cpprun $cpplast does not work, let's see...)"
-               fi
-               ;;
-       esac
-else
-       case "$cppstdin" in
-       '') ;;
-       *)
-               echo "Good old $cppstdin $cppminus does not seem to be of any help..."
-               ;;
-       esac
-fi
+       cat <<EOM
 
-if $ok; then
-       : nothing
-elif echo 'Maybe "'"$cc"' -E" will work...'; \
-       $cc -E <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "Yup, it does."
-       x_cpp="$cc -E"
-       x_minus='';
-elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
-       $cc -E - <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "Yup, it does."
-       x_cpp="$cc -E"
-       x_minus='-';
-elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
-       $cc -P <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "Yipee, that works!"
-       x_cpp="$cc -P"
-       x_minus='';
-elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
-       $cc -P - <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "At long last!"
-       x_cpp="$cc -P"
-       x_minus='-';
-elif echo 'No such luck, maybe "'$cpp'" will work...'; \
-       $cpp <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "It works!"
-       x_cpp="$cpp"
-       x_minus='';
-elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
-       $cpp - <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       echo "Hooray, it works!  I was beginning to wonder."
-       x_cpp="$cpp"
-       x_minus='-';
-elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
-       $wrapper <testcpp.c >testcpp.out 2>&1; \
-       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-       x_cpp="$wrapper"
-       x_minus=''
-       echo "Eureka!"
-else
-       dflt=''
-       rp="No dice.  I can't find a C preprocessor.  Name one:"
-       . ./myread
-       x_cpp="$ans"
-       x_minus=''
-       $x_cpp <testcpp.c >testcpp.out 2>&1
-       if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
-               echo "OK, that will do." >&4
-       else
-echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
-               exit 1
-       fi
-fi
+Some systems may require passing special flags to $cc to indicate that
+the resulting executable will use dynamic linking.  To use no flags,
+say "none".
 
-case "$ok" in
-false)
-       cppstdin="$x_cpp"
-       cppminus="$x_minus"
-       cpprun="$x_cpp"
-       cpplast="$x_minus"
-       set X $x_cpp
-       shift
-       case "$1" in
-       "$cpp")
-               echo "Perhaps can we force $cc -E using a wrapper..."
-               if $wrapper <testcpp.c >testcpp.out 2>&1; \
-                       $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
-               then
-                       echo "Yup, we can."
-                       cppstdin="$wrapper"
-                       cppminus='';
-               else
-                       echo "Nope, we'll have to live without it..."
-               fi
+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
+
+also=''
+case "$usedl" in
+$undef)
+       # No dynamic loading being used, so don't bother even to prompt.
+       useshrplib='false'
+       ;;
+*)     case "$useshrplib" in
+       '')     case "$osname" in
+               svr4|dgux|dynixptx|esix|powerux)
+                       dflt='yes'
+                       also='Building a shared libperl is required for dynamic loading to work on your system.'
+                       ;;
+               next*)
+                       case "$osvers" in
+                       4*)     dflt='yes'
+                               also='Building a shared libperl is needed for MAB support.'
+                               ;;
+                       *)      dflt='no'
+                               ;;
+                       esac
+                       ;;
+               sunos)
+                       dflt='no'
+                       also='Building a shared libperl will definitely not work on SunOS 4.'
+                       ;;
+               *)      dflt='no'
+                       ;;
+               esac
                ;;
-       esac
-       case "$cpprun" in
-       "$wrapper")
-               cpprun=''
-               cpplast=''
+       $define|true|[Yy]*)
+               dflt='yes'
+               ;;
+       *)      dflt='no'
                ;;
        esac
-       ;;
-esac
-
-case "$cppstdin" in
-"$wrapper") ;;
-*) $rm -f $wrapper;;
-esac
-$rm -f testcpp.c testcpp.out
+       $cat << EOM
 
-: 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
+The perl executable is normally obtained by linking perlmain.c with
+libperl${lib_ext}, any static extensions (usually just DynaLoader), and
+any other libraries needed on this system (such as -lm, etc.).  Since
+your system supports dynamic loading, it is probably possible to build
+a shared libperl.$so.  If you will have more than one executable linked
+to libperl.$so, this will significantly reduce the size of each
+executable, but it may have a noticeable affect on performance.  The
+default is probably sensible for your system.
+$also
 
-: Now check and see which directories actually exist, avoiding duplicates
-libpth=''
-for xxx in $dlist
-do
-    if $test -d $xxx; then
-               case " $libpth " in
-               *" $xxx "*) ;;
-               *) libpth="$libpth $xxx";;
+EOM
+       rp="Build a shared libperl.$so (y/n)"
+       . ./myread
+       case "$ans" in
+       true|$define|[Yy]*)
+               useshrplib='true'
+               # Why does next4 have to be so different?
+               case "${osname}${osvers}" in
+               next4*) xxx='DYLD_LIBRARY_PATH' ;;
+               *)              xxx='LD_LIBRARY_PATH' ;;
                esac
-    fi
-done
-$cat <<'EOM'
+               $cat <<EOM >&4
 
-Some systems have incompatible or broken versions of libraries.  Among
-the directories listed in the question below, please remove any you
-know not to be holding relevant libraries, and add any that are needed.
-Say "none" for none.
+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
-case "$libpth" in
-'') dflt='none';;
-*)
-       set X $libpth
-       shift
-       dflt=${1+"$@"}
+               ;;
+       *)      useshrplib='false' ;;
+       esac
        ;;
 esac
-rp="Directories to use for library searches?"
-. ./myread
-case "$ans" in
-none) libpth=' ';;
-*) libpth="$ans";;
-esac
 
-: determine optimize, if desired, or use for debug flag also
-case "$optimize" in
-' ') dflt='none';;
-'') dflt='-O';;
-*) dflt="$optimize";;
-esac
-$cat <<EOH
+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
 
-Some C compilers have problems with their optimizers, by default, $package
-compiles with the -O flag to use the optimizer.  Alternately, you might want
-to use the symbolic debugger, which uses the -g flag (on traditional Unix
-systems).  Either flag can be specified here.  To use neither flag, specify
-the word "none".
+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.
 
-EOH
-rp="What optimizer/debugger flag should be used?"
-. ./myread
-optimize="$ans"
-case "$optimize" in
-'none') optimize=" ";;
+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
 
-dflt=''
-: We will not override a previous value, but we might want to
-: augment a hint file
-case "$hint" in
-none|recommended)
-       case "$gccversion" in
-       1*) dflt='-fpcc-struct-return' ;;
-       esac
-       case "$optimize" in
-       *-g*) dflt="$dflt -DDEBUGGING";;
-       esac
-       case "$gccversion" in
-       2*) if test -d /etc/conf/kconfig.d &&
-                       $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
-               then
-                       dflt="$dflt -posix"
-               fi
+# Detect old use of shrpdir via undocumented Configure -Dshrpdir
+case "$shrpdir" in
+'') ;;
+*)     $cat >&4 <<EOM
+WARNING:  Use of the shrpdir variable for the installation location of
+the shared $libperl is not supported.  It was never documented and
+will not work in this version.  Let me (chip@atlantic.net)
+know of any problems this may cause.
+
+EOM
+       case "$shrpdir" in
+       "$archlibexp/CORE")
+               $cat >&4 <<EOM
+But your current setting of $shrpdir is
+the default anyway, so it's harmless.
+EOM
+               ;;
+       *)
+               $cat >&4 <<EOM
+Further, your current attempted setting of $shrpdir
+conflicts with the value of $archlibexp/CORE
+that installperl will use.
+EOM
                ;;
        esac
        ;;
 esac
 
-case "$mips_type" in
-*BSD*|'') inclwanted="$locincpth $usrinc";;
-*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
-esac
-for thisincl in $inclwanted; do
-       if $test -d $thisincl; then
-               if $test x$thisincl != x$usrinc; then
-                       case "$dflt" in
-                       *$thisincl*);;
-                       *) dflt="$dflt -I$thisincl";;
-                       esac
-               fi
-       fi
-done
+# How will the perl executable find the installed shared $libperl?
+# Add $xxx to ccdlflags.
+# If we can't figure out a command-line option, use $shrpenv to
+# set env LD_RUN_PATH.  The main perl makefile uses this.
+shrpdir=$archlibexp/CORE
+xxx=''
+tmp_shrpenv=''
+if "$useshrplib"; then
+    case "$osname" in 
+       solaris|netbsd)
+               xxx="-R $shrpdir"
+               ;;
+       freebsd)
+               xxx="-Wl,-R$shrpdir"
+               ;;
+       linux|irix*)
+               xxx="-Wl,-rpath,$shrpdir"
+               ;;
+       *)
+               tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
+               ;;
+       esac
+       case "$xxx" in
+       '') ;;
+       *)      ccdlflags="$ccdlflags $xxx"
+               cat <<EOM >&4
 
-inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
-       xxx=true;
-elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
-       xxx=true;
-else
-       xxx=false;
-fi;
-if $xxx; then
-       case "$dflt" in
-       *$2*);;
-       *) dflt="$dflt -D$2";;
-       esac;
-fi'
+Adding $xxx to the flags
+passed to $ld so that the perl executable will find the 
+installed shared $libperl.
 
-if ./osf1; then
-       set signal.h __LANGUAGE_C__; eval $inctest
-else
-       set signal.h LANGUAGE_C; eval $inctest
+EOM
+               ;;
+       esac
 fi
-set signal.h NO_PROTOTYPE; eval $inctest
-set signal.h _NO_PROTO; eval $inctest
-
-case "$hint" in
-none|recommended) dflt="$ccflags $dflt" ;;
-*) dflt="$ccflags";;
-esac
-
-case "$dflt" in
-''|' ') dflt=none;;
+# Respect a hint or command-line value.
+case "$shrpenv" in
+'') shrpenv="$tmp_shrpenv" ;;
 esac
-$cat <<EOH
 
-Your C compiler may want other flags.  For this question you should include
--I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
-but you should NOT include libraries or ld flags like -lwhatever.  If you
-want $package to honor its debug switch, you should include -DDEBUGGING here.
-Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
--DHIDEMYMALLOC or -DCRIPPLED_CC.
-
-To use no flags, specify the word "none".
+: determine where manual pages go
+set man1dir man1dir none
+eval $prefixit
+$cat <<EOM
 
-EOH
-set X $dflt
-shift
-dflt=${1+"$@"}
-rp="Any additional cc flags?"
-. ./myread
-case "$ans" in
-none) ccflags='';;
-*) ccflags="$ans";;
+$spackage has manual pages available in source form.
+EOM
+case "$nroff" in
+nroff)
+       echo "However, you don't have nroff, so they're probably useless to you."
+       case "$man1dir" in
+       '') man1dir="none";;
+       esac;;
+esac
+echo "If you don't want the manual sources installed, answer 'none'."
+case "$man1dir" in
+' ') dflt=none
+       ;;
+'')
+       lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
+       lookpath="$lookpath $prefixexp/man/p_man/man1"
+       lookpath="$lookpath $prefixexp/man/u_man/man1"
+       lookpath="$lookpath $prefixexp/man/man.1"
+       : If prefix contains 'perl' then we want to keep the man pages
+       : under the prefix directory.  Otherwise, look in a variety of
+       : other possible places.  This is debatable, but probably a
+       : good compromise.  Well, apparently not.
+       : Experience has shown people expect man1dir to be under prefix,
+       : so we now always put it there.  Users who want other behavior
+       : can answer interactively or use a command line option.
+       : Does user have System V-style man paths.
+       case "$sysman" in
+       */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
+       *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
+       esac
+       set dflt
+       eval $prefixup
+       ;;
+*)  dflt="$man1dir"
+       ;;
+esac
+echo " "
+fn=dn+~
+rp="Where do the main $spackage manual pages (source) go?"
+. ./getfile
+if $test "X$man1direxp" != "X$ansexp"; then
+       installman1dir=''
+fi
+man1dir="$ans"
+man1direxp="$ansexp"
+case "$man1dir" in
+'') man1dir=' '
+       installman1dir='';;
 esac
+if $afs; then
+       $cat <<EOM
 
-: the following weeds options from ccflags that are of no interest to cpp
-cppflags="$ccflags"
-case "$gccversion" in
-1*) cppflags="$cppflags -D__GNUC__"
-esac
-case "$mips_type" in
-'');;
-*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
-esac
-case "$cppflags" in
-'');;
-*)
-       echo " "
-       echo "Let me guess what the preprocessor flags are..." >&4
-       set X $cppflags
-       shift
-       cppflags=''
-       $cat >cpp.c <<'EOM'
-#define BLURFL foo
+Since you are running AFS, I need to distinguish the directory in which
+manual pages reside from the directory in which they are installed (and from
+which they are presumably copied to the former directory by occult means).
 
-BLURFL xx LFRULB
 EOM
-       previous=''
-       for flag in $*
-       do
-               case "$flag" in
-               -*) ftry="$flag";;
-               *) ftry="$previous $flag";;
-               esac
-               if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
-                       >cpp1.out 2>/dev/null && \
-                       $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
-                       >cpp2.out 2>/dev/null && \
-                       $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
-                       $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
-               then
-                       cppflags="$cppflags $ftry"
-                       previous=''
-               else
-                       previous="$flag"
-               fi
-       done
-       set X $cppflags
-       shift
-       cppflags=${1+"$@"}
-       case "$cppflags" in
-       *-*)  echo "They appear to be: $cppflags";;
+       case "$installman1dir" in
+       '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
+       *) dflt="$installman1dir";;
        esac
-       $rm -f cpp.c cpp?.out
-       ;;
-esac
+       fn=de~
+       rp='Where will man pages be installed?'
+       . ./getfile
+       installman1dir="$ans"
+else
+       installman1dir="$man1direxp"
+fi
 
-: flags used in final linking phase
+: What suffix to use on installed man pages
 
-case "$ldflags" in
-'') if ./venix; then
-               dflt='-i -z'
-       else
-               dflt=''
-       fi
-       case "$ccflags" in
-       *-posix*) dflt="$dflt -posix" ;;
-       esac
+case "$man1dir" in
+' ')
+       man1ext='0'
        ;;
-*) dflt="$ldflags";;
-esac
-
-: Try to guess additional flags to pick up local libraries.
-for thislibdir in $libpth; do
-       case " $loclibpth " in
-       *" $thislibdir "*)
-               case "$dflt " in 
-               *"-L$thislibdir "*) ;;
-               *)  dflt="$dflt -L$thislibdir" ;;
+*)
+       rp="What suffix should be used for the main $spackage man pages?"
+       case "$man1ext" in
+       '')     case "$man1dir" in
+               *1)  dflt=1 ;;
+               *1p) dflt=1p ;;
+               *1pm) dflt=1pm ;;
+               *l) dflt=l;;
+               *n) dflt=n;;
+               *o) dflt=o;;
+               *p) dflt=p;;
+               *C) dflt=C;;
+               *L) dflt=L;;
+               *L1) dflt=L1;;
+               *) dflt=1;;
                esac
                ;;
+       *)      dflt="$man1ext";;
        esac
-done
-
-case "$dflt" in
-'') dflt='none' ;;
+       . ./myread
+       man1ext="$ans"
+       ;;
 esac
 
-$cat <<EOH
+: see if we can have long filenames
+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.
+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*
 
-Your C linker may need flags.  For this question you should
-include -L/whatever and any other flags used by the C linker, but you
-should NOT include libraries like -lwhatever.
+: determine where library module manual pages go
+set man3dir man3dir none
+eval $prefixit
+$cat <<EOM
 
-Make sure you include the appropriate -L/path flags if your C linker
-does not normally search all of the directories you specified above,
-namely
-       $libpth
-To use no flags, specify the word "none".
+$spackage has manual pages for many of the library modules.
+EOM
 
-EOH
+case "$nroff" in
+nroff)
+       $cat <<'EOM'
+However, you don't have nroff, so they're probably useless to you.
+You can use the supplied perldoc script instead.
+EOM
+       case "$man3dir" in
+       '') man3dir="none";;
+       esac;;
+esac
 
-rp="Any additional ld flags (NOT including libraries)?"
-. ./myread
-case "$ans" in
-none) ldflags='';;
-*) ldflags="$ans";;
+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;;
 esac
-rmlist="$rmlist pdp11"
 
-: coherency check
+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 -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
+       *)      dflt="$privlib/man/man3" ;;
+       esac
+       ;;
+' ') dflt=none;;
+*)     dflt="$man3dir" ;;
+esac
 echo " "
-echo "Checking your choice of C compiler and flags for coherency..." >&4
-set X $cc $optimize $ccflags $ldflags try.c -o try
-shift
-$cat >try.msg <<EOM
-I've tried to compile and run a simple program with:
 
-       $*
-       ./try
+fn=dn+~
+rp="Where do the $spackage library man pages (source) go?"
+. ./getfile
+if test "X$man3direxp" != "X$ansexp"; then
+       installman3dir=''
+fi
 
-and I got the following output:
+man3dir="$ans"
+man3direxp="$ansexp"
+case "$man3dir" in
+'') man3dir=' '
+       installman3dir='';;
+esac
+if $afs; then
+       $cat <<EOM
+
+Since you are running AFS, I need to distinguish the directory in which
+manual pages reside from the directory in which they are installed (and from
+which they are presumably copied to the former directory by occult means).
 
 EOM
-$cat > try.c <<'EOF'
-#include <stdio.h>
-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 './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"
-               dflt=y
-       fi
+       case "$installman3dir" in
+       '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
+       *) dflt="$installman3dir";;
+       esac
+       fn=de~
+       rp='Where will man pages be installed?'
+       . ./getfile
+       installman3dir="$ans"
 else
-       echo "I can't compile the test program." >>try.msg
-       rp="You have a BIG problem.  Shall I abort Configure"
-       dflt=y
+       installman3dir="$man3direxp"
 fi
-case "$dflt" in
-y)
-       $cat try.msg
-       case "$knowitall" in
-       '')
-               echo "(The supplied flags might be incorrect with this C compiler.)"
+
+: What suffix to use on installed man pages
+
+case "$man3dir" in
+' ')
+       man3ext='0'
+       ;;
+*)
+       rp="What suffix should be used for the $spackage library man pages?"
+       case "$man3ext" in
+       '')     case "$man3dir" in
+               *3)  dflt=3 ;;
+               *3p) dflt=3p ;;
+               *3pm) dflt=3pm ;;
+               *l) dflt=l;;
+               *n) dflt=n;;
+               *o) dflt=o;;
+               *p) dflt=p;;
+               *C) dflt=C;;
+               *L) dflt=L;;
+               *L3) dflt=L3;;
+               *) dflt=3;;
+               esac
                ;;
-       *) dflt=n;;
+       *)      dflt="$man3ext";;
        esac
-       echo " "
        . ./myread
-       case "$ans" in
-       n*|N*) ;;
-       *)      echo "Ok.  Stopping Configure." >&4
-               exit 1
-               ;;
-       esac
+       man3ext="$ans"
        ;;
-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'
+: 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
        ;;
-*) dflt="$so";;
+*) cont='';;
 esac
-$cat <<EOM
+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
 
-On some systems, shared libraries may be available.  Answer 'none' if
-you want to suppress searching of shared libraries for the remaining
-of this configuration.
+: 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
 
-EOM
-rp='What is the file extension used for shared libraries?'
-. ./myread
-so="$ans"
+: 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
 
-: Looking for optional libraries
-echo " "
-echo "Checking for optional libraries..." >&4
-case "$libs" in
-' '|'') dflt='';;
-*) dflt="$libs";;
-esac
-case "$libswanted" in
-'') libswanted='c_s';;
+: 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
-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";;
+
+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
-       elif xxx=`./loc $thislib.a X $libpth`; $test -f "$xxx"; then
-               echo "Found -l$thislib."
-               case " $dflt " in
-               *"-l$thislib "*);;
-               *) dflt="$dflt -l$thislib";;
+               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
-       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";;
+               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
-       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";;
+               case "$dflt" in
+               .) echo "(Lost all hope -- silly guess then)"
+                       dflt='.uucp'
+                       ;;
                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';;
+               $rm -f hosts
+               ;;
+       *) dflt="$mydomain";;
+       esac;;
 esac
-
-$cat <<EOM
-Some versions of Unix support shared libraries, which make executables smaller
-but make load time slightly longer.
-
-On some systems, mostly newer Unix System V's, the shared library is included
-by putting the option "-lc_s" as the last thing on the cc command line when
-linking.  Other systems use shared libraries by default.  There may be other
-libraries needed to compile $package on your machine as well.  If your system
-needs the "-lc_s" option, include it here.  Include any other special libraries
-here as well.  Say "none" for none.
-EOM
-
 echo " "
-rp="Any additional libraries?"
+rp="What is your domain name?"
 . ./myread
+tans="$ans"
 case "$ans" in
-none) libs=' ';;
-*) libs="$ans";;
+'') ;;
+.*) ;;
+*) tans=".$tans";;
 esac
+mydomain="$tans"
 
-: 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
-               dflt=n
-       fi
+: 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 "$usenm" in
-       true) dflt=y;;
-       *) dflt=n;;
+       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 <<EOM
 
-I can use 'nm' to extract the symbols from your C libraries. This is a time
-consuming task which may generate huge output on the disk (up to 3 megabytes)
-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.
+I need to get your e-mail address in Internet format if possible, i.e.
+something like user@host.domain. Please answer accurately since I have
+no easy means to double check it. The default value provided below
+is most probably close to the reality but may not be valid from outside
+your organization...
 
 EOM
-rp='Shall I use nm to extract C symbols from the libraries?'
-. ./myread
-case "$ans" in
-n|N) usenm=false;;
-*) usenm=true;;
-esac
-
-runnm=$usenm
-case "$reuseval" in
-true) runnm=false;;
-esac
-
-: nm options which may be necessary
-case "$nm_opt" in
-'') if $test -f /mach_boot; then
-               nm_opt=''
-       elif $test -d /usr/ccs/lib; then
-               nm_opt='-p'
-       elif $test -f /dgux; then
-               nm_opt='-p'
-       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
-echo " "
-case "$libc" in
-'') libc=unknown
-       case "$libs" in
-       *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
-       esac
-       ;;
-esac
-libnames='';
-case "$libs" in
-'') ;;
-*)  for thislib in $libs; do
-       case "$thislib" in
-       -lc|-lc_s)
-               : Handle C library specially below.
-               ;;
-       -l*)
-               thislib=`echo $thislib | $sed -e 's/^-l//'`
-               if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
-                       :
-               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 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
-                       :
-               else
-                       try=''
-               fi
-               libnames="$libnames $try"
-               ;;
-       *) libnames="$libnames $thislib" ;;
+cont=x
+while test "$cont"; do
+       case "$cf_email" in
+       '') dflt="$cf_by@$myhostname$mydomain";;
+       *) dflt="$cf_email";;
        esac
-       done
-       ;;
-esac
-xxx=normal
-case "$libc" in
-unknown)
-       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.a
-       ;;
-*)
-       set blurfl
-       ;;
-esac
-if $test -r "$1"; then
-       echo "Your (shared) C library seems to be in $1."
-       libc="$1"
-elif $test -r /lib/libc && $test -r /lib/clib; then
-       echo "Your C library seems to be in both /lib/clib and /lib/libc."
-       xxx=apollo
-       libc='/lib/clib /lib/libc'
-       if $test -r /lib/syslib; then
-               echo "(Your math library is in /lib/syslib.)"
-               libc="$libc /lib/syslib"
-       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;
-       echo "Your C library seems to be in $libc.  That's fine."
-elif $test -r /lib/libc.a; then
-       libc=/lib/libc.a;
-       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
-               :
-       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 Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
-               :
-       else
-               tans=`./loc Llibc.a blurfl/dyick $xlibpth`
-       fi
-       if $test -r "$tans"; then
-               echo "Your C library seems to be in $tans, of all places."
-               libc=$tans
-       else
-               libc='blurfl'
-       fi
-fi
-if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
-       dflt="$libc"
-       cat <<EOM
+       rp='What is your e-mail address?'
+       . ./myread
+       cf_email="$ans"
+       case "$cf_email" in
+       *@*.*) cont='' ;;
+       *)
+               rp='Address does not look like an Internet one.  Use it anyway?'
+               case "$fastread" in
+               yes) dflt=y ;;
+               *) dflt=n ;;
+               esac
+               . ./myread
+               case "$ans" in
+               y*) cont='' ;;
+               *) echo " " ;;
+               esac
+               ;;
+       esac
+done
 
-If the guess above is wrong (which it might be if you're using a strange
-compiler, or your machine supports multiple models), you can override it here.
+$cat <<EOM
 
-EOM
-else
-       dflt=''
-       echo $libpth | tr ' ' '\012' | sort | uniq > libpath
-       cat >&4 <<EOM
-I can't seem to find your C library.  I've looked in the following places:
+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.
 
 EOM
-       $sed 's/^/      /' libpath
-       cat <<EOM
-
-None of these seems to contain your C library. I need to get its name...
+case "$perladmin" in
+'') dflt="$cf_email";;
+*) dflt="$perladmin";;
+esac
+rp='Perl administrator e-mail address'
+. ./myread
+perladmin="$ans"
 
-EOM
-fi
-fn=f
-rp='Where is your C library?'
-. ./getfile
-libc="$ans"
+: figure out how to guarantee perl startup
+case "$startperl" in
+'')
+       case "$sharpbang" in
+       *!)
+               $cat <<EOH
 
-echo " "
-echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
-set X `cat libnames`
-shift
-xxx=files
-case $# in 1) xxx=file; esac
-echo "Extracting names from the following $xxx for later perusal:" >&4
-echo " "
-$sed 's/^/     /' libnames >&4
-echo " "
-$echo $n "This may take a while...$c" >&4
+I can use the #! construct to start perl on your system. This will
+make startup of perl scripts faster, but may cause problems if you
+want to share those scripts and perl is not in a standard place
+($binexp/perl) on all your platforms. The alternative is to force
+a shell by starting the script with a single ':' character.
 
-: 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 ;;
+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";;
+               esac
+               ;;
+       *) startperl=": # use perl"
+               ;;
        esac
-done > libc.tmp
-
-$echo $n ".$c"
-$grep fprintf libc.tmp > libc.ptf
-xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
-xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
-xxx='[ADTSIW]'
-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
-elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
-                               -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-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 '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
-       eval $xscan;\
-       $contains '^fprintf$' libc.list >/dev/null 2>&1; then
-               eval $xrun
-elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/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
-       if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
-               eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
-       then
-               nm_opt='-p'
-               eval $xrun
-       else
-               echo " "
-               echo "nm didn't seem to work right. Trying ar instead..." >&4
-               com=''
-               if ar t $libc > libc.tmp; then
-                       for thisname in $libnames; do
-                               ar t $thisname >>libc.tmp
-                       done
-                       $sed -e 's/\.o$//' < libc.tmp > libc.list
-                       echo "Ok." >&4
-               else
-                       echo "ar didn't seem to work right." >&4
-                       echo "Maybe this is a Cray...trying bld instead..." >&4
-                       if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
-                       then
-                               for thisname in $libnames; do
-                                       bld t $libnames | \
-                                       $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
-                                       ar t $thisname >>libc.tmp
-                               done
-                               echo "Ok." >&4
-                       else
-                               echo "That didn't work either.  Giving up." >&4
-                               exit 1
-                       fi
-               fi
-       fi
-fi
-nm_extract="$com"
-if $test -f /lib/syscalls.exp; then
-       echo " "
-       echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
-       $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
-fi
-;;
+       ;;
 esac
-$rm -f libnames libpath
+echo "I'll use $startperl to start perl scripts."
 
-: 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;;
+: figure best path for perl in scripts
+case "$perlpath" in
+'')
+       perlpath="$binexp/perl"
+       case "$startperl" in
+       *!*) ;;
        *)
-               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"'
+               $cat <<EOH
+
+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
+               perlpath="$ans"
+               ;;
+       esac
+       ;;
+esac
+case "$startperl" in
+*!*)   ;;
+*)     echo "I'll use $perlpath in \"eval 'exec'\"" ;;
+esac
+
+: 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 <<EOM
+Some installations have a separate directory just for executable scripts so
+that they can mount it across multiple architectures but keep the scripts in
+one spot.  You might, for example, have a subdirectory of /usr/share for this.
+Or you might just lump your scripts in with all your other executables.
+EOM
+fn=d~
+rp='Where do you keep publicly executable scripts?'
+. ./getfile
+if $test "X$ansexp" != "X$scriptdirexp"; then
+       installscript=''
+fi
+scriptdir="$ans"
+scriptdirexp="$ansexp"
+if $afs; then
+       $cat <<EOM
 
-: 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'
+Since you are running AFS, I need to distinguish the directory in which
+scripts reside from the directory in which they are installed (and from
+which they are presumably copied to the former directory by occult means).
+
+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
+       installscript="$scriptdirexp"
+fi
+
+cat <<EOM
+
+Previous version of $package used the standard IO mechanisms as defined in
+<stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
+mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
+the default and is the only supported mechanism.  This abstraction
+layer can use AT&T's sfio (if you already have sfio installed) or
+fall back on standard IO.  This PerlIO abstraction layer is
+experimental and may cause problems with some extension modules.
+
+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 useperlio
+eval $setvar 
 
 : Check how to convert floats to strings.
 echo " "
@@ -4615,28 +5426,59 @@ 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() { 
+
+#include <stdio.h>
+
+int
+checkit(expect, got)
+char *expect;
+char *got;
+{
+    if (strcmp(expect, got)) {
+               printf("%s oddity:  Expected %s, got %s\n",
+                       myname, expect, got);
+               exit(1);
+       }
+}
+
+int
+main()
+{ 
        char buf[64]; 
-       /* This test must come first. <AlanBurlison@unn.unisys.com> */
+       buf[63] = '\0';
+
+       /* This must be 1st test on (which?) platform */
+       /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
        Gconvert(0.1, 8, 0, buf);
-       if (buf[0] != '.' || buf[1] != '1' || buf[2] != '\0')
-               exit(1);
+       checkit("0.1", buf);
+
        Gconvert(1.0, 8, 0, buf); 
-       if (buf[0] != '1' || buf[1] != '\0')
-               exit(1);
+       checkit("1", buf);
+
        Gconvert(0.0, 8, 0, buf); 
-       if (buf[0] != '0' || buf[1] != '\0')
-               exit(1);
+       checkit("0", buf);
+
        Gconvert(-1.0, 8, 0, buf); 
-       if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0')
-               exit(1);
+       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);
 }
 EOP
@@ -4654,11 +5496,10 @@ for xxx_convert in $xxx_list; do
                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".
+                       echo "...But $xxx_convert didn't work as I expected."
                fi
        else
                echo "$xxx_convert NOT found." >&4
@@ -4677,66 +5518,6 @@ h_fcntl=false
 : Initialize h_sysfile
 h_sysfile=false
 
-: determine filename position in cpp output
-echo " "
-echo "Computing filename position in cpp output for #include directives..." >&4
-echo '#include <stdio.h>' > foo.c
-$cat >fieldn <<EOF
-$startsh
-$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
-$grep '^[      ]*#.*stdio\.h' | \
-while read cline; do
-       pos=1
-       set \$cline
-       while $test \$# -gt 0; do
-               if $test -r \`echo \$1 | $tr -d '"'\`; then
-                       echo "\$pos"
-                       exit 0
-               fi
-               shift
-               pos=\`expr \$pos + 1\`
-       done
-done
-EOF
-chmod +x fieldn
-fieldn=`./fieldn`
-$rm -f foo.c fieldn
-case $fieldn in
-'') pos='???';;
-1) pos=first;;
-2) pos=second;;
-3) pos=third;;
-*) pos="${fieldn}th";;
-esac
-echo "Your cpp writes the filename in the $pos field of the line."
-
-: locate header file
-$cat >findhdr <<EOF
-$startsh
-wanted=\$1
-name=''
-if test -f $usrinc/\$wanted; then
-       echo "$usrinc/\$wanted"
-       exit 0
-fi
-awkprg='{ print \$$fieldn }'
-echo "#include <\$wanted>" > foo\$\$.c
-$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
-$grep "^[      ]*#.*\$wanted" | \
-while read cline; do
-       name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
-       case "\$name" in
-       */\$wanted) echo "\$name"; exit 0;;
-       *) name='';;
-       esac;
-done;
-$rm -f foo\$\$.c;
-case "\$name" in
-'') exit 1;;
-esac
-EOF
-chmod +x findhdr
-
 : access call always available on UNIX
 set access d_access
 eval $inlibc
@@ -4814,81 +5595,189 @@ eval $inlibc
 set bcopy d_bcopy
 eval $inlibc
 
+: see if this is a unistd.h system
+set unistd.h i_unistd
+eval $inhdr
+
+: see if getpgrp exists
+set getpgrp d_getpgrp
+eval $inlibc
+
+echo "Checking to see which flavor of getpgrp is in use . . . "
+case "$d_getpgrp" in
+"$define")
+       echo " "
+       $cat >set.c <<EOP
+#$i_unistd I_UNISTD
+#include <sys/types.h>
+#ifdef I_UNISTD
+#  include <unistd.h>
+#endif
+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
+       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 setpgrp exists
 set setpgrp d_setpgrp
 eval $inlibc
 
-: see which flavor of setpgrp is in use
+echo "Checking to see which flavor of setpgrp is in use . . . "
 case "$d_setpgrp" in
 "$define")
        echo " "
        $cat >set.c <<EOP
+#$i_unistd I_UNISTD
+#include <sys/types.h>
+#ifdef I_UNISTD
+#  include <unistd.h>
+#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(1);
-       exit(0);
+               exit(0);
+#else
+       if (setpgrp() != -1)
+               exit(0);
+#endif
+       exit(1);
 }
 EOP
-       if $cc $ccflags $ldflags -o set set.c $libs >/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";;
-               esac
+       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
+               echo "I can't seem to compile and run the test program."
                if ./usg; then
-                       xxx="USG one, i.e. you use setpgrp()."
-                       val="$undef"
+                       xxx="a USG one, i.e. you use setpgrp()."
                else
-                       xxx="BSD one, i.e. you use setpgrp(pid, pgrp)."
-                       val="$define"
+                       # 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 a $xxx" >&4
+               echo "Assuming your setpgrp is $xxx" >&4
        fi
        ;;
 *) val="$undef";;
 esac
-set d_bsdpgrp
+set d_bsdsetpgrp
 eval $setvar
+d_bsdpgrp=$d_bsdsetpgrp
 $rm -f set set.c
-
 : see if bzero exists
 set bzero d_bzero
 eval $inlibc
 
-: check for length of integer
+: check for lengths of integral types
 echo " "
 case "$intsize" in
 '')
        echo "Checking to see how big your integers are..." >&4
-       $cat >try.c <<'EOCP'
+       $cat >intsize.c <<'EOCP'
 #include <stdio.h>
 main()
 {
-       printf("%d\n", sizeof(int));
+       printf("intsize=%d;\n", sizeof(int));
+       printf("longsize=%d;\n", sizeof(long));
+       printf("shortsize=%d;\n", sizeof(short));
+       fflush(stdout);
        exit(0);
 }
 EOCP
-       if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
-               intsize=`./try`
+#      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
-               dflt='4'
-               echo "(I can't seem to compile the test program.  Guessing...)"
+               $cat >&4 <<EOM
+
+Help! I can't compile and run the intsize test program: please enlighten me!
+(This is probably a misconfiguration in your system or libraries, and
+you really ought to fix it.  Still, I'll try anyway.)
+
+EOM
+               dflt=4
                rp="What is the size of an integer (in bytes)?"
                . ./myread
                intsize="$ans"
+               dflt=$intsize
+               rp="What is the size of a long integer (in bytes)?"
+               . ./myread
+               longsize="$ans"
+               dflt=2
+               rp="What is the size of a short integer (in bytes)?"
+               . ./myread
+               shortsize="$ans"
        fi
        ;;
 esac
-$rm -f try.c try
+$rm -f intsize intsize.[co] intsize.out
 
 : see if signal is declared as pointer to function returning int or void
 echo " "
@@ -5134,19 +6023,19 @@ if set crypt val -f d_crypt; eval $csym; $val; then
        val="$define"
        cryptlib=''
 else
-       cryptlib=`./loc Slibcrypt.a "" $xlibpth`
+       cryptlib=`./loc Slibcrypt$lib_ext "" $xlibpth`
        if $test -z "$cryptlib"; then
-               cryptlib=`./loc Mlibcrypt.a "" $xlibpth`
+               cryptlib=`./loc Mlibcrypt$lib_ext "" $xlibpth`
        else
                cryptlib=-lcrypt
        fi
        if $test -z "$cryptlib"; then
-               cryptlib=`./loc Llibcrypt.a "" $xlibpth`
+               cryptlib=`./loc Llibcrypt$lib_ext "" $xlibpth`
        else
                cryptlib=-lcrypt
        fi
        if $test -z "$cryptlib"; then
-               cryptlib=`./loc libcrypt.a "" $libpth`
+               cryptlib=`./loc libcrypt$lib_ext "" $libpth`
        else
                cryptlib=-lcrypt
        fi
@@ -5161,47 +6050,17 @@ set d_crypt
 eval $setvar
 
 : get csh whereabouts
-case "$csh" in
-'csh') val="$undef" ;;
-*) val="$define" ;;
-esac
-set d_csh
-eval $setvar
-full_csh=$csh
-
-: see if cuserid exists
-set cuserid d_cuserid
-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'
+case "$csh" in
+'csh') val="$undef" ;;
+*) val="$define" ;;
+esac
+set d_csh
+eval $setvar
+full_csh=$csh
+
+: see if cuserid exists
+set cuserid d_cuserid
+eval $inlibc
 
 : see if this is a limits.h system
 set limits.h i_limits
@@ -5317,262 +6176,6 @@ set dlerror d_dlerror
 eval $inlibc
 runnm="$xxx_runnm"
 
-: see if dld is available
-set dld.h i_dld
-eval $inhdr
-
-: see if dlopen exists
-xxx_runnm="$runnm"
-runnm=false
-set dlopen d_dlopen
-eval $inlibc
-runnm="$xxx_runnm"
-
-: 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' ;;
-                       solaris|svr4*|esix*) dflt='-Kpic' ;;
-                       irix*)  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
-
-    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 <fcntl.h>
-#include <stdlib.h>
-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 */
-}
-EOM
-               if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
-                       cat <<EOM
-You appear to have ELF support.  I'll use $cc to build dynamic libraries.
-EOM
-                       dflt="$cc"
-               else
-                       echo "I'll use ld to build dynamic libraries."
-                       dflt='ld'
-               fi
-               rm -f try.c a.out
-               ;;
-       *)      dflt="$ld"
-               ;;
-       esac
-
-    rp="What command should be used to create dynamic libraries?"
-    . ./myread
-       ld="$ans"
-
-    cat << EOM
-
-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".
-
-EOM
-    case "$lddlflags" in
-    '') case "$osname" in
-                       hpux)  dflt='-b' ;;
-                       linux|irix*)    dflt='-shared' ;;
-                       next)  dflt='none' ;;
-                       solaris) dflt='-G' ;;
-                       sunos) dflt='-assert nodefinitions' ;;
-                       svr4*|esix*) dflt="-G $ldflags" ;;
-               *)     dflt='none' ;;
-                       esac
-                       ;;
-    *) dflt="$lddlflags" ;;
-    esac
-
-: 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
-
-case "$dflt" in
-'') dflt='none' ;;
-esac
-
-    rp="Any special flags to pass to $ld to create a dynamically loaded library?"
-    . ./myread
-    case "$ans" in
-    none) lddlflags=' ' ;;
-    *) lddlflags="$ans" ;;
-    esac
-
-       cat <<EOM
-
-Some systems may require passing special flags to $cc to indicate that
-the resulting executable will use dynamic linking.  To use no flags,
-say "none".
-
-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 <<EOM
-
-System V Release 4 systems can support dynamic loading
-only if libperl is created as a shared library.
-
-EOM
-       val="$define"
-       ;;
-    esac ;;
-esac
-set d_shrplib; eval $setvar
-case "$d_shrplib" in
-$define)
-    cat <<EOM >&4
-
-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`
-
-EOM
-;;
-esac
-case "$d_shrplib" in
-$define)
-       case "$shrpdir" in
-       "")     dflt="$archlib/CORE";;
-       *)      dflt="$shrpdir";;
-       esac
-       rp="What directory should we install the shared libperl into?"
-       fn="d~"
-       . ./getfile
-       shrpdir="$ans"
-       ;;
-*)     shrpdir='none'
-       ;;
-esac
-
 : see if dlfcn is available
 set dlfcn.h i_dlfcn
 eval $inhdr
@@ -5635,27 +6238,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 && 
-               mv dyna.o tmp-dyna.o > /dev/null 2>&1 &&
-               $ld $lddlflags -o dyna.$dlext tmp-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
@@ -5879,7 +6486,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
@@ -5949,8 +6556,8 @@ eval $inlibc
 set getlogin d_getlogin
 eval $inlibc
 
-: see if getpgrp exists
-set getpgrp d_getpgrp
+: see if getpgid exists
+set getpgid d_getpgid
 eval $inlibc
 
 : see if getpgrp2 exists
@@ -5965,6 +6572,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
@@ -6058,6 +6684,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'
@@ -6368,13 +6998,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 <memory.h>."
+                       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 <<EOCP
+#$i_memory I_MEMORY
+#$i_stdlib I_STDLIB
+#$i_string I_STRING
+#$i_unistd I_UNISTD
+EOCP
+       $cat >>foo.c <<'EOCP'
+#include <stdio.h>
+
+#ifdef I_MEMORY
+#  include <memory.h>
+#endif
+#ifdef I_STDLIB
+#  include <stdlib.h>
+#endif
+#ifdef I_STRING
+#  include <string.h>
+#else
+#  include <strings.h>
+#endif
+#ifdef I_UNISTD
+#  include <unistd.h>  /* Needed for NetBSD */
+#endif
 main()
 {
 char buf[128], abc[128];
@@ -6383,6 +7059,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--) {
@@ -6400,15 +7078,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
@@ -6422,7 +7107,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 <<EOCP
+#$i_memory I_MEMORY
+#$i_stdlib I_STDLIB
+#$i_string I_STRING
+#$i_unistd I_UNISTD
+EOCP
+       $cat >>foo.c <<'EOCP'
+#include <stdio.h>
+
+#ifdef I_MEMORY
+#  include <memory.h>
+#endif
+#ifdef I_STDLIB
+#  include <stdlib.h>
+#endif
+#ifdef I_STRING
+#  include <string.h>
+#else
+#  include <strings.h>
+#endif
+#ifdef I_UNISTD
+#  include <unistd.h>  /* Needed for NetBSD */
+#endif
 main()
 {
 char buf[128], abc[128];
@@ -6431,6 +7138,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--) {
@@ -6448,15 +7157,22 @@ for (align = 7; align >= 0; align--) {
 exit(0);
 }
 EOCP
-       if $cc $ccflags $ldflags foo.c -o safemcpy $libs >/dev/null 2>&1; 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
@@ -6464,6 +7180,61 @@ $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 <<EOCP
+#$i_memory I_MEMORY
+#$i_stdlib I_STDLIB
+#$i_string I_STRING
+#$i_unistd I_UNISTD
+EOCP
+       $cat >>foo.c <<'EOCP'
+#include <stdio.h>
+
+#ifdef I_MEMORY
+#  include <memory.h>
+#endif
+#ifdef I_STDLIB
+#  include <stdlib.h>
+#endif
+#ifdef I_STRING
+#  include <string.h>
+#else
+#  include <strings.h>
+#endif
+#ifdef I_UNISTD
+#  include <unistd.h>  /* 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 "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.* sanemcmp core
+set d_sanemcmp
+eval $setvar
+
 : see if select exists
 set select d_select
 eval $inlibc
@@ -6549,6 +7320,54 @@ 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"
+               ;;
+       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
@@ -6611,34 +7430,44 @@ fi
 set d_shm
 eval $setvar
 
-: see if sigvector exists -- since sigvec will match the substring
 echo " "
-if set sigvector val -f d_sigvectr; eval $csym; $val; then
-       echo 'sigvector() found--you must be running HP-UX.' >&4
-       val="$define"; set d_sigvectr; eval $setvar
-       val="$define"; set d_sigvec; eval $setvar
+: see if we have sigaction
+if set sigaction val -f d_sigaction; eval $csym; $val; then
+       echo 'sigaction() found.' >&4
+       val="$define"
 else
-: try the original name
-       d_sigvectr="$undef"
-       if set sigvec val -f d_sigvec; eval $csym; $val; then
-               echo 'sigvec() found.' >&4
-               val="$define"; set d_sigvec; eval $setvar
-       else
-               echo 'sigvec() not found--race conditions with signals may occur.' >&4
-               val="$undef"; set d_sigvec; eval $setvar
-       fi
+       echo 'sigaction NOT found.' >&4
+       val="$undef"
 fi
 
-: see if we have sigaction
-set sigaction d_sigaction
-eval $inlibc
+$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.  <doughera@lafcol.lafayette.edu>
+*/
+#include <stdio.h>
+#include <sys/types.h>
+#include <signal.h>
+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
+       $cat >set.c <<'EOP'
 #include <setjmp.h>
 sigjmp_buf env;
 int set = 1;
@@ -6651,25 +7480,26 @@ main()
        exit(1);
 }
 EOP
-       if $cc $ccflags $ldflags set.c -o set $libs >/dev/null 2>&1; then
+       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 <<EOM
+                       $cat >&4 <<EOM
 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
+I'll ignore them.
 EOM
                        val="$undef"
                fi
        else
-               echo "Sigsetjmp not found." >&4
+               echo "sigsetjmp not found." >&4
                val="$undef"
        fi
        ;;
 *) val="$d_sigsetjmp"
        case "$d_sigsetjmp" in
        $define) echo "POSIX sigsetjmp found." >&4;;
-       $undef) echo "Sigsetjmp not found." >&4;;
+       $undef) echo "sigsetjmp not found." >&4;;
        esac
        ;;
 esac
@@ -6698,10 +7528,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"
@@ -6714,7 +7544,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
@@ -6796,7 +7626,7 @@ $cat >try.c <<EOP
 #include <stdio.h>
 #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 (
@@ -6838,6 +7668,7 @@ esac
 set d_stdio_cnt_lval
 eval $setvar
 
+
 : see if _base is also standard
 val="$undef"
 case "$d_stdstdio" in
@@ -6846,7 +7677,7 @@ $define)
 #include <stdio.h>
 #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 (
@@ -6859,7 +7690,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."
@@ -6938,6 +7769,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
@@ -7252,25 +8095,6 @@ rp="Doubles must be aligned on a how-many-byte boundary?"
 alignbytes="$ans"
 $rm -f try.c try
 
-: Define several unixisms. Hints files or command line options
-: can be used to override them.
-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
 '')
@@ -7462,9 +8286,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 */
@@ -7482,8 +8306,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
@@ -7492,16 +8317,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
@@ -7511,11 +8336,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
@@ -7605,6 +8430,42 @@ rp="What type is lseek's offset on this system declared as?"
 . ./myread
 lseektype="$ans"
 
+echo " "
+case "$make" in
+'')
+       make=`./loc make make $pth`
+       case "$make" in
+       /*)     echo make is in $make.  ;;
+       ?:[\\/]*)       echo make is in $make.  ;;
+       *)      echo "I don't know where 'make' is, and my life depends on it." >&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 is used for mode_t
 set mode_t modetype int stdio.h sys/types.h
 eval $typedef
@@ -7662,8 +8523,18 @@ echo " "
 case "$randbits" in
 '')
        echo "Checking to see how many bits your rand function produces..." >&4
-       $cat >try.c <<'EOCP'
+       $cat >try.c <<EOCP
+#$i_unistd I_UNISTD
+#$i_stdlib I_STDLIB
 #include <stdio.h>
+#ifdef I_UNISTD
+#  include <unistd.h>
+#endif
+#ifdef I_STDLIB
+#  include <stdlib.h>
+#endif
+EOCP
+       $cat >>try.c <<'EOCP'
 main()
 {
        register int i;
@@ -7706,14 +8577,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
@@ -7840,11 +8711,10 @@ $cat >fd_set.c <<EOCP
 #endif
 #ifdef I_SYS_TIME
 #include <sys/time.h>
-#else
+#endif
 #ifdef I_SYS_SELECT
 #include <sys/select.h>
 #endif
-#endif
 main() {
        fd_set fds;
 
@@ -7935,11 +8805,10 @@ EOM
 #endif
 #ifdef I_SYS_TIME
 #include <sys/time.h>
-#else
+#endif
 #ifdef I_SYS_SELECT
 #include <sys/select.h>
 #endif
-#endif
 main()
 {
        int width;
@@ -8004,13 +8873,59 @@ $cat > signal.c <<'EOP'
 #include <sys/types.h>
 #include <signal.h>
 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 '
 {
@@ -8138,25 +9053,36 @@ 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 <<EOM
+       $cat >&4 <<EOM
+
+Help! I can't compile and run the ssize_t test program: please enlighten me!
+(This is probably a misconfiguration in your system or libraries, and
+you really ought to fix it.  Still, I'll try anyway.)
 
 I need a type that is the same size as $sizetype, but is guaranteed to
-be signed.  Common values are int and long.
+be signed.  Common values are ssize_t, int and long.
 
 EOM
        rp="What signed type is the same size as $sizetype?"
        . ./myread
        ssizetype="$ans"
 fi
-$rm -f ssize ssize.[co]
+$rm -f ssize ssize.[co] ssize.out
 
 : see what type of char stdio uses.
 echo " "
@@ -8302,30 +9228,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 <memory.h>."
-                       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
@@ -8664,6 +9566,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
@@ -8676,14 +9582,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")
@@ -8726,19 +9636,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
@@ -8769,7 +9682,7 @@ for xxx in $known_extensions ; do
            true|define|y) avail_ext="$avail_ext $xxx" ;;
            esac
            ;;
-    SAFE) case "$usesafe" in 
+    Opcode) case "$useopcode" in 
            true|define|y) avail_ext="$avail_ext $xxx" ;;
            esac
            ;;
@@ -8951,6 +9864,7 @@ awk='$awk'
 baserev='$baserev'
 bash='$bash'
 bin='$bin'
+bincompat3='$bincompat3'
 binexp='$binexp'
 bison='$bison'
 byacc='$byacc'
@@ -8990,8 +9904,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'
@@ -9026,16 +9943,21 @@ 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_gethent='$d_gethent'
 d_gethname='$d_gethname'
 d_getlogin='$d_getlogin'
+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'
@@ -9081,6 +10003,7 @@ d_rewinddir='$d_rewinddir'
 d_rmdir='$d_rmdir'
 d_safebcpy='$d_safebcpy'
 d_safemcpy='$d_safemcpy'
+d_sanemcmp='$d_sanemcmp'
 d_seekdir='$d_seekdir'
 d_select='$d_select'
 d_sem='$d_sem'
@@ -9102,18 +10025,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_sigintrp='$d_sigintrp'
 d_sigsetjmp='$d_sigsetjmp'
-d_sigvec='$d_sigvec'
-d_sigvectr='$d_sigvectr'
 d_socket='$d_socket'
 d_sockpair='$d_sockpair'
 d_statblks='$d_statblks'
@@ -9126,6 +10046,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'
@@ -9184,6 +10107,7 @@ glibpth='$glibpth'
 grep='$grep'
 groupcat='$groupcat'
 groupstype='$groupstype'
+gzip='$gzip'
 h_fcntl='$h_fcntl'
 h_sysfile='$h_sysfile'
 hint='$hint'
@@ -9209,6 +10133,7 @@ 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'
@@ -9221,6 +10146,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'
@@ -9229,11 +10155,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'
@@ -9257,6 +10185,7 @@ ldflags='$ldflags'
 less='$less'
 lib_ext='$lib_ext'
 libc='$libc'
+libperl='$libperl'
 libpth='$libpth'
 libs='$libs'
 libswanted='$libswanted'
@@ -9267,14 +10196,15 @@ ln='$ln'
 lns='$lns'
 locincpth='$locincpth'
 loclibpth='$loclibpth'
+longsize='$longsize'
 lp='$lp'
 lpr='$lpr'
 ls='$ls'
 lseektype='$lseektype'
-mab='$mab'
 mail='$mail'
 mailx='$mailx'
 make='$make'
+make_set_make='$make_set_make'
 mallocobj='$mallocobj'
 mallocsrc='$mallocsrc'
 malloctype='$malloctype'
@@ -9341,7 +10271,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'
@@ -9389,8 +10320,11 @@ uniq='$uniq'
 usedl='$usedl'
 usemymalloc='$usemymalloc'
 usenm='$usenm'
+useopcode='$useopcode'
+useperlio='$useperlio'
 useposix='$useposix'
-usesafe='$usesafe'
+usesfio='$usesfio'
+useshrplib='$useshrplib'
 usevfork='$usevfork'
 usrinc='$usrinc'
 uuname='$uuname'
@@ -9398,6 +10332,7 @@ vi='$vi'
 voidflags='$voidflags'
 xlibpth='$xlibpth'
 zcat='$zcat'
+zip='$zip'
 EOT
 
 : add special variables