perl 5.003_06: hv.c
[p5sagit/p5-mst-13.2.git] / Configure
index 34c39ce..5859e51 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 Fri Oct  4 15:07:00 EDT 1996 [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=''
@@ -291,7 +292,9 @@ d_gethname=''
 d_phostname=''
 d_uname=''
 d_getlogin=''
+d_getpgid=''
 d_getpgrp2=''
+d_bsdgetpgrp=''
 d_getpgrp=''
 d_getppid=''
 d_getprior=''
@@ -346,6 +349,7 @@ d_setlocale=''
 d_setpgid=''
 d_setpgrp2=''
 d_bsdpgrp=''
+d_bsdsetpgrp=''
 d_setpgrp=''
 d_setprior=''
 d_setregid=''
@@ -355,6 +359,8 @@ d_setreuid=''
 d_setrgid=''
 d_setruid=''
 d_setsid=''
+d_sfio=''
+usesfio=''
 d_shm=''
 d_shmat=''
 d_shmatprototype=''
@@ -362,11 +368,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=''
@@ -380,6 +383,7 @@ d_stdstdio=''
 stdio_base=''
 stdio_bufsiz=''
 stdio_cnt=''
+stdio_filbuf=''
 stdio_ptr=''
 d_index=''
 d_strchr=''
@@ -417,11 +421,9 @@ d_wctomb=''
 dlext=''
 cccdlflags=''
 ccdlflags=''
-d_shrplib=''
 dlsrc=''
 ld=''
 lddlflags=''
-shrpdir=''
 usedl=''
 fpostype=''
 gidtype=''
@@ -458,6 +460,7 @@ d_pwcomment=''
 d_pwexpire=''
 d_pwquota=''
 i_pwd=''
+i_sfio=''
 i_stddef=''
 i_stdlib=''
 i_string=''
@@ -471,11 +474,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=''
@@ -485,12 +490,16 @@ i_time=''
 timeincl=''
 i_unistd=''
 i_utime=''
+i_values=''
 i_stdarg=''
 i_varargs=''
 i_varhdr=''
 i_vfork=''
 intsize=''
 libc=''
+libperl=''
+shrpenv=''
+useshrplib=''
 glibpth=''
 libpth=''
 loclibpth=''
@@ -499,6 +508,8 @@ xlibpth=''
 libs=''
 lns=''
 lseektype=''
+make=''
+make_set_make=''
 d_mymalloc=''
 freetype=''
 mallocobj=''
@@ -541,6 +552,7 @@ package=''
 spackage=''
 pager=''
 patchlevel=''
+subversion=''
 perladmin=''
 perlpath=''
 prefix=''
@@ -554,6 +566,7 @@ installscript=''
 scriptdir=''
 scriptdirexp=''
 selecttype=''
+sh=''
 sig_name=''
 sig_num=''
 installsitearch=''
@@ -571,13 +584,13 @@ ssizetype=''
 startperl=''
 startsh=''
 stdchar=''
-subversion=''
 sysman=''
 uidtype=''
 nm_opt=''
 nm_so_opt=''
 runnm=''
 usenm=''
+useperlio=''
 incpath=''
 mips=''
 mips_type=''
@@ -671,8 +684,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.
@@ -693,9 +706,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
@@ -706,7 +720,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.
@@ -716,8 +730,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 (Andy Dougherty) at doughera@lafcol.lafayette.edu 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
@@ -886,7 +1009,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.
@@ -1154,7 +1277,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 " "
@@ -1231,74 +1357,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
@@ -1348,7 +1406,6 @@ echo
 expr
 find
 grep
-ln
 ls
 mkdir
 rm
@@ -1365,8 +1422,10 @@ cpp
 csh
 date
 egrep
+gzip
 less
 line
+ln
 more
 nroff
 perl
@@ -1374,6 +1433,7 @@ pg
 sendmail
 test
 uname
+zip
 "
 pth=`echo $PATH | sed -e "s/$p_/ /g"`
 pth="$pth /lib /usr/lib"
@@ -1421,6 +1481,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."
@@ -1537,10 +1603,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
@@ -1627,6 +1699,9 @@ EOM
                dgux) osname=dgux 
                        osvers="$3"
                        ;;
+               dynixptx*) osname=dynixptx
+                       osvers="$3"
+                       ;;
                freebsd) osname=freebsd 
                        osvers="$3" ;;
                genix) osname=genix ;;
@@ -1638,7 +1713,7 @@ EOM
                        *)      osvers="$3" ;;
                        esac
                        ;;
-               irix) osname=irix
+               irix*) osname=irix
                        case "$3" in
                        4*) osvers=4 ;;
                        5*) osvers=5 ;;
@@ -1857,6 +1932,7 @@ cd UU
        tmp_c="$c"
        cd ..
        cp $config_sh config.sh 2>/dev/null
+       chmod +w config.sh
        . ./config.sh
        cd UU
        cp ../config.sh .
@@ -1896,13 +1972,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 " "
@@ -1936,12 +2038,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.
@@ -2306,13 +2416,13 @@ 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 "(You have $package $baserev patchlevel $patchlevel subversion $subversion.)"
 
 : set the prefixup variable, to restore leading tilda escape
 prefixup='case "$prefixexp" in
@@ -2326,13 +2436,13 @@ eval $prefixit
 case "$archlib" in
 '')
        case "$privlib" in
-       '')
-               dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
+       '')     dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
                set dflt
                eval $prefixup
                ;;
-       *)      version=`echo $baserev $patchlevel $subversion | \
-                   $awk '{print $1 + $2/1000.0 + $3/100000.0}'`
+       *)      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
@@ -2409,6 +2519,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
@@ -2453,6 +2564,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
@@ -2475,8 +2597,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
@@ -2548,6 +2670,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
@@ -2690,12 +2813,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"
+$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
-               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
+               mips_type='System V'
        fi
-else
-       $cat <<'EOM'
-You can't have filenames longer than 14 chars.  You can't even think about them!
-EOM
-       val="$undef"
-fi 
-set d_flexfnam
-eval $setvar
-$rm -rf /tmp/cf$$ 123456789abcde*
-
-: determine where library module manual pages go
-set man3dir man3dir none
-eval $prefixit
-$cat <<EOM
-
-$spackage has manual pages for many of the library modules.
-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
-
-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;;
+       $rm -f usr.c usr.out
+       echo "and you're compiling with the $mips_type compiler and libraries."
+       xxx_prompt=y
+       echo "exit 0" >mips
+else
+       echo "Doesn't look like a MIPS system."
+       xxx_prompt=n
+       echo "exit 1" >mips
+fi
+chmod +x mips
+$eunicefix mips
+echo " "
+case "$usrinc" in
+'') ;;
+*) dflt="$usrinc";;
 esac
-
-echo "If you don't want the manual sources installed, answer 'none'."
-: We dont use /usr/local/man/man3 because some man programs will
-: only show the /usr/local/man/man3 contents, and not the system ones,
-: thus man less will show the perl module less.pm, but not the system
-: less command.  We might also conflict with TCL man pages.
-: However, something like /opt/perl/man/man3 is fine.
-case "$man3dir" in
-'')    case "$prefix" in 
-       *perl*) dflt=`echo $man1dir | 
-                       $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
-       *)      dflt="$privlib/man/man3" ;;
-       esac
+case "$xxx_prompt" in
+y)     fn=d/
+       rp='Where are the include files you want to use?'
+       . ./getfile
+       usrinc="$ans"
+       ;;
+*)     usrinc="$dflt"
        ;;
-' ') dflt=none;;
-*)     dflt="$man3dir" ;;
 esac
-echo " "
-
-fn=dn+~
-rp="Where do the $spackage library man pages (source) go?"
-. ./getfile
-if test "X$man3direxp" != "X$ansexp"; then
-       installman3dir=''
-fi
 
-man3dir="$ans"
-man3direxp="$ansexp"
-case "$man3dir" in
-'') man3dir=' '
-       installman3dir='';;
+: Set private lib path
+case "$plibpth" in
+'') if ./mips; then
+               plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
+       fi;;
+esac
+case "$libpth" in
+' ') dlist='';;
+'') dlist="$loclibpth $plibpth $glibpth";;
+*) dlist="$libpth";;
 esac
-if $afs; then
-       $cat <<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
-       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
+: 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'
 
-: What suffix to use on installed man pages
+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 "$man3dir" in
-' ')
-       man3ext='0'
-       ;;
+EOM
+case "$libpth" in
+'') dflt='none';;
 *)
-       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"
+       set X $libpth
+       shift
+       dflt=${1+"$@"}
        ;;
 esac
+rp="Directories to use for library searches?"
+. ./myread
+case "$ans" in
+none) libpth=' ';;
+*) libpth="$ans";;
+esac
 
-: see what memory models we can support
-case "$models" in
+: compute shared library extension
+case "$so" in
 '')
-       $cat >pdp11.c <<'EOP'
-main() {
-#ifdef pdp11
-       exit(0);
-#else
-       exit(1);
-#endif
-}
-EOP
-       cc -o pdp11 pdp11.c >/dev/null 2>&1
-       if ./pdp11 2>/dev/null; then
-               dflt='unsplit split'
+       if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
+               dflt='sl'
        else
-               tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
-               case "$tans" in
-               X) dflt='none';;
-               *) if $test -d /lib/small || $test -d /usr/lib/small; then
-                               dflt='small'
-                       else
-                               dflt=''
-                       fi
-                       if $test -d /lib/medium || $test -d /usr/lib/medium; then
-                               dflt="$dflt medium"
-                       fi
-                       if $test -d /lib/large || $test -d /usr/lib/large; then
-                               dflt="$dflt large"
-                       fi
-                       if $test -d /lib/huge || $test -d /usr/lib/huge; then
-                               dflt="$dflt huge"
-                       fi
-               esac
-       fi;;
-*) dflt="$models";;
+               dflt='so'
+       fi
+       ;;
+*) dflt="$so";;
 esac
 $cat <<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.)
+
+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
-rp="Which memory models are supported?"
+rp='What is the file extension used for shared libraries?'
 . ./myread
-models="$ans"
+so="$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";;
+: Looking for optional libraries
+echo " "
+echo "Checking for optional libraries..." >&4
+case "$libs" in
+' '|'') dflt='';;
+*) dflt="$libs";;
+esac
+case "$libswanted" in
+'') libswanted='c_s';;
+esac
+for thislib in $libswanted; do
+       
+       if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
+               echo "Found -l$thislib (shared)."
+               case " $dflt " in
+               *"-l$thislib "*);;
+               *) dflt="$dflt -l$thislib";;
                esac
-               rp="What flag indicates huge model?"
-               . ./myread
-               tans="$ans"
-               case "$tans" in
-               none) tans='';
+       elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
+               echo "Found -l$thislib (shared)."
+               case " $dflt " in
+               *"-l$thislib "*);;
+               *) dflt="$dflt -l$thislib";;
                esac
-               huge="$tans";;
-       *) huge="$large";;
-       esac
-       case "$models" in
-       *medium*) case "$medium" in
-               '') dflt='-Mm';;
-               *) dflt="$medium";;
+       elif xxx=`./loc lib$thislib.a 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.a 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.a 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.a 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 ?
-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'
+: 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
-               mips_type='System V'
+               dflt=n
        fi
-       $rm -f usr.c usr.out
-       echo "and you're compiling with the $mips_type compiler and libraries."
-       xxx_prompt=y
-       echo "exit 0" >mips
-else
-       echo "Doesn't look like a MIPS system."
-       xxx_prompt=n
-       echo "exit 1" >mips
-fi
-chmod +x mips
-$eunicefix mips
-echo " "
-case "$usrinc" in
-'') ;;
-*) dflt="$usrinc";;
-esac
-case "$xxx_prompt" in
-y)     fn=d/
-       rp='Where are the include files you want to use?'
-       . ./getfile
-       usrinc="$ans"
        ;;
-*)     usrinc="$dflt"
+*)
+       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.
+
+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.a $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.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
-       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.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
-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'
+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
-               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
+               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
-: you do not want to know about this
-set $myhostname
-myhostname=$1
+if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
+       dflt="$libc"
+       cat <<EOM
 
-: 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
+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.
 
-: bad guess or no guess
-while $test "X$myhostname" = X ; do
+EOM
+else
        dflt=''
-       rp="Please type the (one word) name of your host:"
-       . ./myread
-       myhostname="$ans"
-done
+       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:
 
-: 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]'`
+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
+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
+
+: 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
+
+: 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
+
+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
+echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
+               exit 1
+       fi
+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
+       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
+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;;
+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
 
-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)"
+: 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
        ;;
-*) 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'
-                       ;;
+*) 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
-               $rm -f hosts
                ;;
-       *) dflt="$mydomain";;
-       esac;;
+       esac
+done
+
+case "$dflt" in
+'') dflt='none' ;;
 esac
-echo " "
-rp="What is your domain name?"
+
+$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
-tans="$ans"
 case "$ans" in
-'') ;;
-.*) ;;
-*) tans=".$tans";;
+none) ldflags='';;
+*) ldflags="$ans";;
 esac
-mydomain="$tans"
+rmlist="$rmlist pdp11"
+
+: coherency check
+echo " "
+echo "Checking your choice of C compiler and flags for coherency..." >&4
+set X $cc $optimize $ccflags $ldflags try.c -o try
+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
+$rm -f try try.* core
+
+: 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
+
+: 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 (doughera@lafcol.lafayette.edu)
+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"
+               ;;
+       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";;
+# Respect a hint or command-line value.
+case "$shrpenv" in
+'') shrpenv="$tmp_shrpenv" ;;
 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".
+: 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/^search[   ]*\(.*\)/\1/p' $tans \
+                                       | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
+                               case "$dflt" in
+                               .)      dflt=.`$sed -n -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?"
-. ./myread
-case "$ans" in
-none) libs=' ';;
-*) libs="$ans";;
-esac
-
-: 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
-       ;;
-*)
-       case "$usenm" in
-       true) dflt=y;;
-       *) dflt=n;;
-       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.
-
-EOM
-rp='Shall I use nm to extract C symbols from the libraries?'
+rp="What is your domain name?"
 . ./myread
+tans="$ans"
 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;;
+'') ;;
+.*) ;;
+*) tans=".$tans";;
 esac
+mydomain="$tans"
 
-: 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
+: 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
 
-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
+: a little sanity check here
+case "$phostname" 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" ;;
-       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
+       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
-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
+       esac
+       ;;
+esac
 
-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:
+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
-       $sed 's/^/      /' libpath
-       cat <<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
+               ;;
+       esac
+done
 
-None of these seems to contain your C library. I need to get its name...
+$cat <<EOM
+
+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
-fi
-fn=f
-rp='Where is your C library?'
+case "$perladmin" in
+'') dflt="$cf_email";;
+*) dflt="$perladmin";;
+esac
+rp='Perl administrator e-mail address'
+. ./myread
+perladmin="$ans"
+
+: 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
-libc="$ans"
+if $test "X$ansexp" != "X$scriptdirexp"; then
+       installscript=''
+fi
+scriptdir="$ans"
+scriptdirexp="$ansexp"
+if $afs; then
+       $cat <<EOM
 
-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
+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).
 
-: 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 ;;
+EOM
+       case "$installscript" in
+       '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
+       *) dflt="$installscript";;
        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
+       fn=de~
+       rp='Where will public scripts be installed?'
+       . ./getfile
+       installscript="$ans"
 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
+       installscript="$scriptdirexp"
 fi
-;;
+
+: determine perl absolute location
+case "$perlpath" in
+'')    perlpath=$binexp/perl ;;
 esac
-$rm -f libnames libpath
 
-: is a C symbol defined?
-csym='tlook=$1;
-case "$3" in
--v) tf=libc.tmp; tc=""; tdc="";;
--a) tf=libc.tmp; tc="[0]"; tdc="[]";;
-*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
-esac;
-tx=yes;
-case "$reuseval-$4" in
-true-) ;;
-true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
-esac;
-case "$tx" in
-yes)
-       case "$runnm" in
-       true)
-               if $contains $tlook $tf >/dev/null 2>&1;
-               then tval=true;
-               else tval=false;
-               fi;;
-       *)
-               echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
-               if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
-               then tval=true;
-               else tval=false;
-               fi;
-               $rm -f t t.c;;
-       esac;;
-*)
-       case "$tval" in
-       $define) tval=true;;
-       *) tval=false;;
-       esac;;
-esac;
-eval "$2=$tval"'
+: figure out how to guarantee perl startup
+case "$startperl" in
+'')
+       case "$sharpbang" in
+       *!)
+               $cat <<EOH
+
+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.
+
+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";;
+               esac
+               ;;
+       *) startperl=": # use perl"
+               ;;
+       esac
+       ;;
+esac
+echo "I'll use $startperl to start perl scripts."
+
+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.
 
-: 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'
+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 " "
@@ -4612,24 +5292,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]; 
+       buf[63] = '\0';
+
+       /* This must be 1st test on (which?) platform */
+       /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
+       Gconvert(0.1, 8, 0, buf);
+       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
@@ -4647,11 +5362,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
@@ -4670,66 +5384,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
@@ -4807,51 +5461,134 @@ 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
@@ -5154,47 +5891,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
@@ -5278,292 +5985,37 @@ if $contains "$guess1" try.c >/dev/null 2>&1; then
        echo "Your directory entries are $direntrytype." >&4
 elif $contains "$guess2" try.c >/dev/null 2>&1; then
        direntrytype="$guess2"
-       echo "Your directory entries seem to be $direntrytype." >&4
-else
-       echo "I don't recognize your system's directory entries." >&4
-       rp="What type is used for directory entries on this system?"
-       dflt="$guess1"
-       . ./myread
-       direntrytype="$ans"
-fi
-$rm -f try.c
-
-
-: see if the directory entry stores field length
-echo " "
-$cppstdin $cppflags $cppminus < "$xinc" > try.c
-if $contains 'd_namlen' try.c >/dev/null 2>&1; then
-       echo "Good, your directory entry keeps length information in d_namlen." >&4
-       val="$define"
-else
-       echo "Your directory entry does not know about the d_namlen field." >&4
-       val="$undef"
-fi
-set d_dirnamlen
-eval $setvar
-$rm -f try.c
-
-: see if dlerror exists
-xxx_runnm="$runnm"
-runnm=false
-set dlerror d_dlerror
-eval $inlibc
-runnm="$xxx_runnm"
-
-: see if 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' ;;
-                       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)  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
+       echo "Your directory entries seem to be $direntrytype." >&4
+else
+       echo "I don't recognize your system's directory entries." >&4
+       rp="What type is used for directory entries on this system?"
+       dflt="$guess1"
+       . ./myread
+       direntrytype="$ans"
+fi
+$rm -f try.c
 
-System V Release 4 systems can support dynamic loading
-only if libperl is created as a shared library.
 
-EOM
+: see if the directory entry stores field length
+echo " "
+$cppstdin $cppflags $cppminus < "$xinc" > try.c
+if $contains 'd_namlen' try.c >/dev/null 2>&1; then
+       echo "Good, your directory entry keeps length information in d_namlen." >&4
        val="$define"
-       ;;
-    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`
+else
+       echo "Your directory entry does not know about the d_namlen field." >&4
+       val="$undef"
+fi
+set d_dirnamlen
+eval $setvar
+$rm -f try.c
 
-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 dlerror exists
+xxx_runnm="$runnm"
+runnm=false
+set dlerror d_dlerror
+eval $inlibc
+runnm="$xxx_runnm"
 
 : see if dlfcn is available
 set dlfcn.h i_dlfcn
@@ -5645,8 +6097,10 @@ main()
        exit(0);
 }
 EOM
+       : Call the object file tmp-dyna.o in case dlext=o.
        if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
-               $ld $lddlflags -o dyna.$dlext dyna.o > /dev/null 2>&1 && 
+               mv dyna${obj_ext} tmp-dyna${obj_ext} > /dev/null 2>&1 && 
+               $ld $lddlflags -o dyna.$dlext tmp-dyna${obj_ext} > /dev/null 2>&1 && 
                $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
                xxx=`./fred`
                case $xxx in
@@ -5664,7 +6118,7 @@ EOM
        ;;
 esac
                
-$rm -f fred fred.? dyna.$dlext dyna.?
+$rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
 
 set d_dlsymun
 eval $setvar
@@ -5940,8 +6394,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
@@ -6359,13 +6813,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];
@@ -6374,6 +6874,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--) {
@@ -6397,9 +6899,15 @@ EOCP
                        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
@@ -6413,7 +6921,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];
@@ -6422,6 +6952,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--) {
@@ -6445,9 +6977,15 @@ EOCP
                        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
@@ -6540,6 +7078,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
@@ -6602,34 +7188,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;
@@ -6642,25 +7238,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
@@ -6787,7 +7384,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 (
@@ -6829,6 +7426,48 @@ esac
 set d_stdio_cnt_lval
 eval $setvar
 
+: How to access the stdio _filbuf or __filbuf function.
+: If this fails, check how the getc macro in stdio.h works.
+case "${d_stdio_ptr_lval}${d_stdio_cnt_lval}" in
+${define}${define})
+       : Try $hint value, if any, then _filbuf, __filbuf, _fill, then punt.
+       : _fill is for os/2.
+       xxx='notok'
+       for filbuf in $stdio_filbuf '_filbuf(fp)' '__filbuf(fp) ' '_fill(fp)' ; do
+               $cat >try.c <<EOP
+#include <stdio.h>
+#define FILE_ptr(fp)   $stdio_ptr
+#define FILE_cnt(fp)   $stdio_cnt
+#define FILE_filbuf(fp)        $filbuf
+main() {
+       FILE *fp = fopen("try.c", "r");
+       int c;
+       c = getc(fp);
+       c = FILE_filbuf(fp);  /* Just looking for linker errors.*/
+       exit(0);
+}
+EOP
+               if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1 && ./try; then
+                       echo "Your stdio appears to use $filbuf"
+                       stdio_filbuf="$filbuf"
+                       xxx='ok'
+                       break
+               else
+                       echo "Hmm.  $filbuf doesn't seem to work."
+               fi
+               $rm -f try.c try
+       done
+       case "$xxx" in
+       notok)  echo "I can't figure out how to access _filbuf"
+                       echo "I'll just have to work around it."
+                       d_stdio_ptr_lval="$undef"
+                       d_stdio_cnt_lval="$undef"
+                       ;;
+       esac
+       ;;
+esac
+
+
 : see if _base is also standard
 val="$undef"
 case "$d_stdstdio" in
@@ -6837,7 +7476,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 (
@@ -6850,7 +7489,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."
@@ -7243,25 +7882,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
 '')
@@ -7453,9 +8073,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 */
@@ -7473,8 +8093,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
@@ -7483,16 +8104,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
@@ -7502,11 +8123,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
@@ -7596,6 +8217,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
@@ -7653,8 +8310,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;
@@ -7926,11 +8593,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;
@@ -7995,13 +8661,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 '
 {
@@ -8129,14 +8841,16 @@ main()
                printf("int\n");
        else 
                printf("long\n");
+       exit(0);
 }
 EOM
 echo " "
-if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1 ; then
+if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1  &&
+               ./ssize > /dev/null 2>&1 ; then
        ssizetype=`./ssize`
        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!)"
+       echo "(I can't compile and run the test program--please enlighten me!)"
        $cat <<EOM
 
 I need a type that is the same size as $sizetype, but is guaranteed to
@@ -8293,30 +9007,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
@@ -8655,6 +9345,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
@@ -8667,14 +9361,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")
@@ -8760,7 +9458,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
            ;;
@@ -8982,7 +9680,9 @@ d_attribut='$d_attribut'
 d_bcmp='$d_bcmp'
 d_bcopy='$d_bcopy'
 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'
@@ -9021,6 +9721,7 @@ 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'
@@ -9093,18 +9794,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'
@@ -9175,6 +9873,7 @@ glibpth='$glibpth'
 grep='$grep'
 groupcat='$groupcat'
 groupstype='$groupstype'
+gzip='$gzip'
 h_fcntl='$h_fcntl'
 h_sysfile='$h_sysfile'
 hint='$hint'
@@ -9200,6 +9899,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'
@@ -9212,6 +9912,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'
@@ -9220,11 +9921,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'
@@ -9248,6 +9951,7 @@ ldflags='$ldflags'
 less='$less'
 lib_ext='$lib_ext'
 libc='$libc'
+libperl='$libperl'
 libpth='$libpth'
 libs='$libs'
 libswanted='$libswanted'
@@ -9265,6 +9969,7 @@ lseektype='$lseektype'
 mail='$mail'
 mailx='$mailx'
 make='$make'
+make_set_make='$make_set_make'
 mallocobj='$mallocobj'
 mallocsrc='$mallocsrc'
 malloctype='$malloctype'
@@ -9331,7 +10036,7 @@ sh='$sh'
 shar='$shar'
 sharpbang='$sharpbang'
 shmattype='$shmattype'
-shrpdir='$shrpdir'
+shrpenv='$shrpenv'
 shsharp='$shsharp'
 sig_name='$sig_name'
 sig_num='$sig_num'
@@ -9359,6 +10064,7 @@ stdchar='$stdchar'
 stdio_base='$stdio_base'
 stdio_bufsiz='$stdio_bufsiz'
 stdio_cnt='$stdio_cnt'
+stdio_filbuf='$stdio_filbuf'
 stdio_ptr='$stdio_ptr'
 strings='$strings'
 submit='$submit'
@@ -9379,8 +10085,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'
@@ -9388,6 +10097,7 @@ vi='$vi'
 voidflags='$voidflags'
 xlibpth='$xlibpth'
 zcat='$zcat'
+zip='$zip'
 EOT
 
 : add special variables