This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Extend 25579 to cover vc64 too
[perl5.git] / Configure
index 4157d43..8991f1a 100755 (executable)
--- a/Configure
+++ b/Configure
 # comp.sources.misc and is available on CPAN under authors/id/RAM so
 # you may fetch it yourself from your nearest archive site.)
 #
+#
+# Though this script was generated by metaconfig, it is OK to send
+# patches against it. It's up to the Configure pumpkin to backport
+# the patch to the metaunits if it is accepted.
+# See Porting/pumpkin.pod for more information on metaconfig.
+#
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Tue Jul  1 10:09:27 EEST 2003 [metaconfig 3.0 PL70]
+# Generated on Mon Sep 12 15:44:06 CEST 2005 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by perlbug@perl.org)
 
 cat >c1$$ <<EOF
@@ -91,7 +97,7 @@ paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
-paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
+paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
 paths="$paths /sbin /usr/sbin /usr/libexec"
 paths="$paths /system/gnu_library/bin"
@@ -339,7 +345,13 @@ d_aintl=''
 d_alarm=''
 asctime_r_proto=''
 d_asctime_r=''
-d_attribut=''
+d_attribute_format=''
+d_attribute_malloc=''
+d_attribute_nonnull=''
+d_attribute_noreturn=''
+d_attribute_pure=''
+d_attribute_unused=''
+d_attribute_warn_unused_result=''
 d_bcmp=''
 d_bcopy=''
 d_bzero=''
@@ -525,6 +537,7 @@ d_isnanl=''
 d_killpg=''
 d_lchown=''
 d_ldbl_dig=''
+d_libm_lib_version=''
 d_link=''
 d_localtime_r=''
 localtime_r_proto=''
@@ -537,6 +550,8 @@ longlongsize=''
 d_lseekproto=''
 d_lstat=''
 d_madvise=''
+d_malloc_good_size=''
+d_malloc_size=''
 d_mblen=''
 d_mbstowcs=''
 d_mbtowc=''
@@ -663,6 +678,7 @@ d_shmget=''
 d_sigaction=''
 d_sigprocmask=''
 d_sigsetjmp=''
+usesitecustomize=''
 d_sockatmark=''
 d_sockatmarkproto=''
 d_msg_ctrunc=''
@@ -712,6 +728,8 @@ d_syserrlst=''
 d_strerror_r=''
 strerror_r_proto=''
 d_strftime=''
+d_strlcat=''
+d_strlcpy=''
 d_strtod=''
 d_strtol=''
 d_strtold=''
@@ -942,6 +960,7 @@ freetype=''
 mallocobj=''
 mallocsrc=''
 malloctype=''
+usemallocwrap=''
 usemymalloc=''
 installman1dir=''
 man1dir=''
@@ -991,6 +1010,7 @@ perl5=''
 perladmin=''
 perlpath=''
 d_nv_preserves_uv=''
+d_nv_zero_is_allbits_zero=''
 i16size=''
 i16type=''
 i32size=''
@@ -1072,22 +1092,22 @@ sitearchexp=''
 installsitebin=''
 sitebin=''
 sitebinexp=''
-installsitehtml1=''
-sitehtml1=''
-sitehtml1exp=''
-installsitehtml3=''
-sitehtml3=''
-sitehtml3exp=''
+installsitehtml1dir=''
+sitehtml1dir=''
+sitehtml1direxp=''
+installsitehtml3dir=''
+sitehtml3dir=''
+sitehtml3direxp=''
 installsitelib=''
 sitelib=''
 sitelib_stem=''
 sitelibexp=''
-installsiteman1=''
-siteman1=''
-siteman1exp=''
-installsiteman3=''
-siteman3=''
-siteman3exp=''
+installsiteman1dir=''
+siteman1dir=''
+siteman1direxp=''
+installsiteman3dir=''
+siteman3dir=''
+siteman3direxp=''
 siteprefix=''
 siteprefixexp=''
 installsitescript=''
@@ -1129,6 +1149,7 @@ nm_so_opt=''
 runnm=''
 usenm=''
 useperlio=''
+userelocatableinc=''
 usesocks=''
 d_oldpthreads=''
 use5005threads=''
@@ -1146,23 +1167,23 @@ d_vendorbin=''
 installvendorbin=''
 vendorbin=''
 vendorbinexp=''
-installvendorhtml1=''
-vendorhtml1=''
-vendorhtml1exp=''
-installvendorhtml3=''
-vendorhtml3=''
-vendorhtml3exp=''
+installvendorhtml1dir=''
+vendorhtml1dir=''
+vendorhtml1direxp=''
+installvendorhtml3dir=''
+vendorhtml3dir=''
+vendorhtml3direxp=''
 d_vendorlib=''
 installvendorlib=''
 vendorlib=''
 vendorlib_stem=''
 vendorlibexp=''
-installvendorman1=''
-vendorman1=''
-vendorman1exp=''
-installvendorman3=''
-vendorman3=''
-vendorman3exp=''
+installvendorman1dir=''
+vendorman1dir=''
+vendorman1direxp=''
+installvendorman3dir=''
+vendorman3dir=''
+vendorman3direxp=''
 usevendorprefix=''
 vendorprefix=''
 vendorprefixexp=''
@@ -1173,8 +1194,6 @@ vendorscriptexp=''
 versiononly=''
 defvoidused=''
 voidflags=''
-pm_apiversion=''
-xs_apiversion=''
 yacc=''
 yaccflags=''
 CONFIG=''
@@ -1209,6 +1228,17 @@ elif test -d c:/. -o -n "$is_os2" ; then
 fi
 
 i_whoami=''
+ccname=''
+ccversion=''
+perllibs=''
+: set useposix=false in your hint file to disable the POSIX extension.
+useposix=true
+: set useopcode=false in your hint file to disable the Opcode extension.
+useopcode=true
+: Trailing extension.  Override this in a hint file, if needed.
+: Extra object files, if any, needed on this platform.
+archobjs=''
+archname=''
 : Possible local include directories to search.
 : Set locincpth to "" in a hint file to defeat local include searches.
 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
@@ -1217,12 +1247,6 @@ locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
 : no include file wanted by default
 inclwanted=''
 
-siteman1=''
-siteman3=''
-sitescript=''
-: Trailing extension.  Override this in a hint file, if needed.
-: Extra object files, if any, needed on this platform.
-archobjs=''
 groupstype=''
 libnames=''
 : change the next line if compiling for Xenix/286 on Xenix/386
@@ -1246,25 +1270,20 @@ plibpth=''
 libswanted=''
 : some systems want to use only the non-versioned libso:s
 ignore_versioned_solibs=''
-: full support for void wanted by default
-defvoidused=15
-
-ccname=''
-ccversion=''
-perllibs=''
-: set useposix=false in your hint file to disable the POSIX extension.
-useposix=true
-: set useopcode=false in your hint file to disable the Opcode extension.
-useopcode=true
+siteman1dir=''
+siteman3dir=''
+sitescript=''
 archname64=''
 ccflags_uselargefiles=''
 ldflags_uselargefiles=''
 libswanted_uselargefiles=''
 : set usemultiplicity on the Configure command line to enable multiplicity.
 : set usesocks on the Configure command line to enable socks.
-archname=''
 : set usethreads on the Configure command line to enable threads.
 usereentrant='undef'
+: full support for void wanted by default
+defvoidused=15
+
 : List of libraries we want.
 : If anyone needs extra -lxxx, put those in a hint file.
 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
@@ -2876,37 +2895,37 @@ ABYZ)
        up='[:upper:]'
        low='[:lower:]'
        ;;
-*)     # There is a discontinuity in EBCDIC between 'I' and 'J'
-        # (0xc9 and 0xd1), therefore that is a nice testing point.
-        if test "X$up" = X -o "X$low" = X; then
-           case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
-           ij) up='[A-Z]'
-               low='[a-z]'
+*)     # There is a discontinuity in EBCDIC between 'R' and 'S'
+       # (0xd9 and 0xe2), therefore that is a nice testing point.
+       if test "X$up" = X -o "X$low" = X; then
+           case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
+           rs) up='[A-Z]'
+               low='[a-z]'
                ;;
            esac
-        fi
+       fi
        if test "X$up" = X -o "X$low" = X; then
-           case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
-           ij) up='A-Z'
+           case "`echo RS | $tr R-S r-s 2>/dev/null`" in
+           rs) up='A-Z'
                low='a-z'
                ;;
            esac
-        fi
+       fi
        if test "X$up" = X -o "X$low" = X; then
-           case "`echo IJ | od -x 2>/dev/null`" in
-           *C9D1*|*c9d1*)
+           case "`echo RS | od -x 2>/dev/null`" in
+           *D9E2*|*d9e2*)
                echo "Hey, this might be EBCDIC." >&4
                if test "X$up" = X -o "X$low" = X; then
-                   case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
-                   ij) up='[A-IJ-RS-Z]'
-                       low='[a-ij-rs-z]'
+                   case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
+                   rs) up='[A-IJ-RS-Z]'
+                       low='[a-ij-rs-z]'
                        ;;
                    esac
                fi
                if test "X$up" = X -o "X$low" = X; then
-                   case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
-                   ij) up='A-IJ-RS-Z'
-                       low='a-ij-rs-z'
+                   case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
+                   rs) up='A-IJ-RS-Z'
+                       low='a-ij-rs-z'
                        ;;
                    esac
                fi
@@ -2914,8 +2933,8 @@ ABYZ)
            esac
        fi
 esac
-case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
-ij)
+case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
+rs)
     echo "Using $up and $low to convert case." >&4
     ;;
 *)
@@ -3081,7 +3100,9 @@ EOM
                aix) osname=aix
                        tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
                        case "$tmp" in
-                       'not found') osvers="$4"."$3" ;;
+                       # oslevel can fail with:
+                       # oslevel: Unable to acquire lock.
+                       *not\ found) osvers="$4"."$3" ;;
                        '<3240'|'<>3240') osvers=3.2.0 ;;
                        '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
                        '=3250'|'>3250') osvers=3.2.5 ;;
@@ -3103,7 +3124,7 @@ EOM
                domainos) osname=apollo
                        osvers="$3"
                        ;;
-               dgux) osname=dgux 
+               dgux)   osname=dgux 
                        osvers="$3"
                        ;;
                dynixptx*) osname=dynixptx
@@ -3111,23 +3132,25 @@ EOM
                        ;;
                freebsd) osname=freebsd 
                        osvers="$3" ;;
-               genix) osname=genix ;;
-               hp*) osname=hpux 
+               genix)  osname=genix ;;
+               gnu)    osname=gnu
+                       osvers="$3" ;;
+               hp*)    osname=hpux 
                        osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
                        ;;
-               irix*) osname=irix
+               irix*)  osname=irix
                        case "$3" in
                        4*) osvers=4 ;;
                        5*) osvers=5 ;;
                        *)      osvers="$3" ;;
                        esac
                        ;;
-               linux) osname=linux
+               linux)  osname=linux
                        case "$3" in
                        *)      osvers="$3" ;;
                        esac
                        ;;
-               MiNT) osname=mint
+               MiNT)   osname=mint
                        ;;
                netbsd*) osname=netbsd
                        osvers="$3"
@@ -3458,12 +3481,15 @@ esac
 
 : who configured the system
 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
-cf_by=`(logname) 2>/dev/null`
 case "$cf_by" in
 "")
-       cf_by=`(whoami) 2>/dev/null`
+       cf_by=`(logname) 2>/dev/null`
        case "$cf_by" in
-       "") cf_by=unknown ;;
+       "")
+               cf_by=`(whoami) 2>/dev/null`
+               case "$cf_by" in
+               "") cf_by=unknown ;;
+               esac ;;
        esac ;;
 esac
 
@@ -3673,22 +3699,22 @@ set d_oldpthreads
 eval $setvar
 
 
-case "$usethreads" in
-"$define"|true|[yY]*)
 : Look for a hint-file generated 'call-back-unit'.  If the
 : user has specified that a threading perl is to be built,
 : we may need to set or change some other defaults.
-       if $test -f usethreads.cbu; then
-               echo "Your platform has some specific hints for threaded builds, using them..."
-               . ./usethreads.cbu
-       else
+if $test -f usethreads.cbu; then
+    echo "Your platform has some specific hints regarding threaded builds, using them..."
+    . ./usethreads.cbu
+else
+    case "$usethreads" in
+       "$define"|true|[yY]*)
                $cat <<EOM
-(Your platform doesn't have any specific hints for threaded builds.
+(Your platform does not have any specific hints for threaded builds.
  Assuming POSIX threads, then.)
 EOM
-       fi
        ;;
-esac
+    esac
+fi
 
 cat <<EOM
 
@@ -4546,21 +4572,21 @@ case "$uselongdouble" in
 true|[yY]*) uselongdouble="$define" ;;
 esac
 
-case "$uselongdouble" in
-$define)
 : Look for a hint-file generated 'call-back-unit'.  If the
 : user has specified that long doubles should be used,
 : we may need to set or change some other defaults.
-       if $test -f uselongdouble.cbu; then
-               echo "Your platform has some specific hints for long doubles, using them..."
-               . ./uselongdouble.cbu
-       else
+if $test -f uselongdouble.cbu; then
+    echo "Your platform has some specific hints regarding long doubles, using them..."
+    . ./uselongdouble.cbu
+else
+    case "$uselongdouble" in
+       $define)
                $cat <<EOM
-(Your platform doesn't have any specific hints for long doubles.)
+(Your platform does not have any specific hints for long doubles.)
 EOM
-       fi
        ;;
-esac
+    esac
+fi
 
 : Looking for optional libraries
 echo " "
@@ -4704,6 +4730,7 @@ default|recommended)
        2*) if test -d /etc/conf/kconfig.d &&
                        $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
                then
+                       # Interactive Systems (ISC) POSIX mode.
                        dflt="$dflt -posix"
                fi
                ;;
@@ -4717,7 +4744,7 @@ default|recommended)
                if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
                        echo "Yes, it does." 2>&1
                        case "$ccflags" in
-                       *strict-aliasing*) 
+                       *strict-aliasing*)
                                echo "Leaving current flags $ccflags alone." 2>&1
                                ;;
                        *) dflt="$dflt -fno-strict-aliasing" ;;
@@ -4727,6 +4754,40 @@ default|recommended)
                fi
                ;;
        esac
+       # For gcc, adding -pipe speeds up compilations for some, but apparently
+       # some assemblers can't read from stdin.  (It also slows down compilations
+       # in other cases, but those are apparently rarer these days.)  AD 5/2004.
+       case "$gccversion" in
+       ?*)     echo " "
+               echo "Checking if your compiler accepts -pipe" 2>&1
+               echo 'int main(void) { return 0; }' > gcctest.c
+               if $cc -pipe -o gcctest gcctest.c; then
+                       echo "Yes, it does." 2>&1
+                       case "$ccflags" in
+                       *-pipe*)
+                               echo "Leaving current flags $ccflags alone." 2>&1
+                               ;;
+                       *) dflt="$dflt -pipe" ;;
+                       esac
+               else
+                       echo "Nope, it doesn't, but that's ok." 2>&1
+               fi
+
+               echo "Checking if your compiler accepts -Wdeclaration-after-statement" 2>&1
+               echo 'int main(void) { return 0; }' > gcctest.c
+               if $cc -Wdeclaration-after-statement -o gcctest gcctest.c; then
+                       echo "Yes, it does." 2>&1
+                       case "$ccflags" in
+                       *-Wdeclaration-after-statement*)
+                               echo "Leaving current flags $ccflags alone." 2>&1
+                               ;;
+                       *) dflt="$dflt -Wdeclaration-after-statement" ;;
+                       esac
+               else
+                       echo "Nope, it doesn't, but that's ok." 2>&1
+               fi
+               ;;
+       esac
        ;;
 esac
 
@@ -4738,8 +4799,8 @@ for thisincl in $inclwanted; do
        if $test -d $thisincl; then
                if $test x$thisincl != x$usrinc; then
                        case "$dflt" in
-                        *" -I$thisincl "*);;
-                        *) dflt="$dflt -I$thisincl ";;
+                       *" -I$thisincl "*);;
+                       *) dflt="$dflt -I$thisincl ";;
                        esac
                fi
        fi
@@ -4870,7 +4931,7 @@ esac
 for thislibdir in $libpth; do
        case " $loclibpth " in
        *" $thislibdir "*)
-               case "$dflt " in 
+               case "$dflt " in
                *"-L$thislibdir "*) ;;
                *)  dflt="$dflt -L$thislibdir" ;;
                esac
@@ -5447,15 +5508,15 @@ EOM
        ;;
 esac
 
-case "$use64bitint" in
-"$define"|true|[yY]*)
 : Look for a hint-file generated 'call-back-unit'.  If the
 : user has specified that a 64-bit perl is to be built,
 : we may need to set or change some other defaults.
-       if $test -f use64bitint.cbu; then
-               echo "Your platform has some specific hints for 64-bit integers, using them..."
-               . ./use64bitint.cbu
-       fi
+if $test -f use64bitint.cbu; then
+       echo "Your platform has some specific hints regarding 64-bit integers, using them..."
+       . ./use64bitint.cbu
+fi
+case "$use64bitint" in
+"$define"|true|[yY]*)
        case "$longsize" in
        4) case "$archname64" in
           '') archname64=64int ;;
@@ -5465,15 +5526,15 @@ case "$use64bitint" in
        ;;
 esac
 
-case "$use64bitall" in
-"$define"|true|[yY]*)
 : Look for a hint-file generated 'call-back-unit'.  If the
 : user has specified that a maximally 64-bit perl is to be built,
 : we may need to set or change some other defaults.
-       if $test -f use64bitall.cbu; then
-               echo "Your platform has some specific hints for 64-bit builds, using them..."
-               . ./use64bitall.cbu
-       fi
+if $test -f use64bitall.cbu; then
+       echo "Your platform has some specific hints regarding 64-bit builds, using them..."
+       . ./use64bitall.cbu
+fi
+case "$use64bitall" in
+"$define"|true|[yY]*)
        case "$longsize" in
        4) case "$archname64" in
           ''|64int) archname64=64all ;;
@@ -5488,7 +5549,7 @@ $undef:$define)
        cat >&4 <<EOF
 
 *** You have chosen to use 64-bit integers,
-*** but none cannot be found.
+*** but none can be found.
 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
 *** Cannot continue, aborting.
 
@@ -5571,7 +5632,9 @@ EOCP
                longdblsize="$ans"
        fi
        if $test "X$doublesize" = "X$longdblsize"; then
-               echo "(That isn't any different from an ordinary double.)"
+               echo "That isn't any different from an ordinary double."
+               echo "I'll keep your setting anyway, but you may see some"
+               echo "harmless compilation warnings."
        fi      
        ;;
 esac
@@ -6254,6 +6317,27 @@ EOM
 esac
 
 
+: determine whether to use malloc wrapping
+echo " "
+case "$usemallocwrap" in
+[yY]*|true|$define)    dflt='y' ;;
+[nN]*|false|$undef)    dflt='n' ;;
+*)     case "$usedevel" in
+       [yY]*|true|$define)     dflt='y' ;;
+       *) dflt='n' ;;
+       esac
+       ;;
+esac
+rp="Do you wish to wrap malloc calls to protect against potential overflows?"
+. ./myread
+usemallocwrap="$ans"
+case "$ans" in
+y*|true)
+       usemallocwrap="$define" ;;
+*)
+       usemallocwrap="$undef" ;;
+esac
+
 : determine which malloc to compile in
 echo " "
 case "$usemymalloc" in
@@ -6871,7 +6955,7 @@ EOM
 rp='List of earlier versions to include in @INC?'
 . ./myread
 case "$ans" in
-[Nn]one|''|' ') inc_version_list=' ' ;;
+[Nn]one|''|' '|$undef) inc_version_list=' ' ;;
 *) inc_version_list="$ans" ;;
 esac
 case "$inc_version_list" in
@@ -7052,7 +7136,7 @@ esac
 : for archive libraries.  Thank you, Linux.
 case "$nm_so_opt" in
 '')    case "$myuname" in
-       *linux*)
+       *linux*|gnu*)
                if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
                        nm_so_opt='--dynamic'
                fi
@@ -7354,9 +7438,9 @@ eval $inhdr
 : is a C symbol defined?
 csym='tlook=$1;
 case "$3" in
--v) tf=libc.tmp; tc=""; tdc="";;
--a) tf=libc.tmp; tc="[0]"; tdc="[]";;
-*) tlook="^$1\$"; tf=libc.list; tc=""; tdc="()";;
+-v) tf=libc.tmp; tdc="";;
+-a) tf=libc.tmp; tdc="[]";;
+*) tlook="^$1\$"; tf=libc.list; tdc="()";;
 esac;
 tx=yes;
 case "$reuseval-$4" in
@@ -7370,16 +7454,15 @@ yes)
                if $contains $tlook $tf >/dev/null 2>&1; then
                        tval=true;
                elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
-                       echo "int main() { extern void *$1$tdc; if (&$1$tc) return(0); else return(1); }" > try.c;
+                       echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
                        $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
-                       $test "$mistrustnm" = run -a -x try && { $run ./try >/dev/null 2>&1 || tval=false; };
-                       $rm -f try try.c core;
+                       $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
+                       $rm -f try$_exe try.c core core.* try.core;
                fi;
        else
-               echo "#include <stdio.h>" > try.c;
-               echo "int main() { extern void *$1$tdc; if(&$1$tc) return(0); else return(1); }" > try.c;
+               echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
                $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
-               $rm -f try try.c;
+               $rm -f try$_exe try.c;
        fi;
        ;;
 *)
@@ -7575,7 +7658,7 @@ EOM
                              '') dflt="$dflt +vnocompatwarnings" ;;
                              esac
                              ;;        
-                       linux|irix*)    dflt='-shared' ;;
+                       linux|irix*|gnu*)       dflt='-shared' ;;
                        next)  dflt='none' ;;
                        solaris) dflt='-G' ;;
                        sunos) dflt='-assert nodefinitions' ;;
@@ -7622,11 +7705,9 @@ say "none".
 EOM
     case "$ccdlflags" in
     '') case "$osname" in
-               hpux)   dflt='-Wl,-E' ;;
-               linux)  dflt='-rdynamic' ;;
-               next)   dflt='none' ;;
-               sunos)  dflt='none' ;;
-               *)      dflt='none' ;;
+           linux|hpux|gnu*)    dflt='-Wl,-E' ;;
+           next|sunos) dflt='none' ;;
+           *)          dflt='none' ;;
            esac ;;
     ' ')  dflt='none' ;;
     *)  dflt="$ccdlflags" ;;
@@ -7685,7 +7766,7 @@ 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
+executable, but it may have a noticeable effect on performance.  The
 default is probably sensible for your system.
 $also
 
@@ -7721,7 +7802,7 @@ true)
                        dflt=libperl.5.$so
                        # XXX How handle the --version stuff for MAB?
                        ;;
-               linux*)  # ld won't link with a bare -lperl otherwise.
+               linux*|gnu*)  # ld won't link with a bare -lperl otherwise.
                        dflt=libperl.$so
                        ;;
                cygwin*) # ld links against an importlib
@@ -7805,10 +7886,10 @@ if "$useshrplib"; then
        solaris)
                xxx="-R $shrpdir"
                ;;
-       freebsd|netbsd|openbsd)
+       freebsd|netbsd|openbsd|interix)
                xxx="-Wl,-R$shrpdir"
                ;;
-       bsdos|linux|irix*|dec_osf)
+       bsdos|linux|irix*|dec_osf|gnu*)
                xxx="-Wl,-rpath,$shrpdir"
                ;;
        next)
@@ -8553,11 +8634,11 @@ else
 fi
 
 : determine where add-on html pages go
-: There is no standard location, so try to copy the previously-selected 
+: There is no standard location, so try to copy the previously-selected
 : directory structure for the core html pages.
-case "$sitehtml1" in
-'')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
-*)     dflt=$sitehtml1 ;;
+case "$sitehtml1dir" in
+'')    dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
+*)     dflt=$sitehtml1dir ;;
 esac
 case "$dflt" in
 ''|' ') dflt=none ;;
@@ -8565,23 +8646,21 @@ esac
 fn=dn+~
 rp='Pathname where the site-specific html pages should be installed?'
 . ./getfile
-sitehtml1="$ans"
-sitehtml1exp="$ansexp"
-: Use ' ' for none so value is preserved next time through Configure
-$test X"$sitehtml1" = "X" && sitehtml1=' '
+sitehtml1dir="$ans"
+sitehtml1direxp="$ansexp"
 : Change installation prefix, if necessary.
 if $test X"$prefix" != X"$installprefix"; then
-       installsitehtml1=`echo "$sitehtml1exp" | $sed "s#^$prefix#$installprefix#"`
+       installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
 else
-       installsitehtml1="$sitehtml1exp"
+       installsitehtml1dir="$sitehtml1direxp"
 fi
 
 : determine where add-on library html pages go
 : There is no standard location, so try to copy the previously-selected
 : directory structure for the core html pages.
-case "$sitehtml3" in
-'')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
-*)     dflt=$sitehtml3 ;;
+case "$sitehtml3dir" in
+'')    dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
+*)     dflt=$sitehtml3dir ;;
 esac
 case "$dflt" in
 ''|' ') dflt=none ;;
@@ -8589,21 +8668,19 @@ esac
 fn=dn+~
 rp='Pathname where the site-specific library html pages should be installed?'
 . ./getfile
-sitehtml3="$ans"
-sitehtml3exp="$ansexp"
-: Use ' ' for none so value is preserved next time through Configure
-$test X"$sitehtml3" = "X" && sitehtml3=' '
+sitehtml3dir="$ans"
+sitehtml3direxp="$ansexp"
 : Change installation prefix, if necessary.
 if $test X"$prefix" != X"$installprefix"; then
-       installsitehtml3=`echo "$sitehtml3exp" | $sed "s#^$prefix#$installprefix#"`
+       installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
 else
-       installsitehtml3="$sitehtml3exp"
+       installsitehtml3dir="$sitehtml3direxp"
 fi
 
 : determine where add-on manual pages go
-case "$siteman1" in
-'')    dflt=`echo "$man1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
-*)     dflt=$siteman1 ;;
+case "$siteman1dir" in
+'')    dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
+*)     dflt=$siteman1dir ;;
 esac
 case "$dflt" in
 ''|' ') dflt=none ;;
@@ -8611,21 +8688,19 @@ esac
 fn=dn+~
 rp='Pathname where the site-specific manual pages should be installed?'
 . ./getfile
-siteman1="$ans"
-siteman1exp="$ansexp"
-: Use ' ' for none so value is preserved next time through Configure
-$test X"$siteman1" = "X" && siteman1=' '
+siteman1dir="$ans"
+siteman1direxp="$ansexp"
 : Change installation prefix, if necessary.
 if $test X"$prefix" != X"$installprefix"; then
-       installsiteman1=`echo "$siteman1exp" | $sed "s#^$prefix#$installprefix#"`
+       installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
 else
-       installsiteman1="$siteman1exp"
+       installsiteman1dir="$siteman1direxp"
 fi
 
 : determine where add-on library man pages go
-case "$siteman3" in
-'')    dflt=`echo "$man3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
-*)     dflt=$siteman3 ;;
+case "$siteman3dir" in
+'')    dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
+*)     dflt=$siteman3dir ;;
 esac
 case "$dflt" in
 ''|' ') dflt=none ;;
@@ -8633,15 +8708,13 @@ esac
 fn=dn+~
 rp='Pathname where the site-specific library manual pages should be installed?'
 . ./getfile
-siteman3="$ans"
-siteman3exp="$ansexp"
-: Use ' ' for none so value is preserved next time through Configure
-$test X"$siteman3" = "X" && siteman3=' '
+siteman3dir="$ans"
+siteman3direxp="$ansexp"
 : Change installation prefix, if necessary.
 if $test X"$prefix" != X"$installprefix"; then
-       installsiteman3=`echo "$siteman3exp" | $sed "s#^$prefix#$installprefix#"`
+       installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
 else
-       installsiteman3="$siteman3exp"
+       installsiteman3dir="$siteman3direxp"
 fi
 
 : determine where add-on public executable scripts go
@@ -8859,14 +8932,16 @@ EOM
 esac
 set uselargefiles
 eval $setvar
-case "$uselargefiles" in
-"$define")
 : Look for a hint-file generated 'call-back-unit'.  If the
 : user has specified that a large files perl is to be built,
 : we may need to set or change some other defaults.
+if $test -f uselargefiles.cbu; then
+       echo "Your platform has some specific hints regarding large file builds, using them..."
+       . ./uselargefiles.cbu
+fi
+case "$uselargefiles" in
+"$define")
        if $test -f uselargefiles.cbu; then
-               echo "Your platform has some specific hints for large file builds, using them..."
-               . ./uselargefiles.cbu
                echo " "
                echo "Rechecking to see how big your file offsets are..." >&4
                $cat >try.c <<EOCP
@@ -8932,6 +9007,11 @@ EOCP
        ;;
 esac
 
+# probably will refer to
+#   $archlib $privlib $sitearch $sitelib $vendorarch $vendorlib
+need_relocation=0
+userelocatableinc=undef
+
 case "$vendorprefix" in
 '')    d_vendorbin="$undef"
        vendorbin=''
@@ -8958,16 +9038,16 @@ else
 fi
 
 case "$vendorprefix" in
-'')    vendorhtml1=''
-       vendorhtml1exp=''
+'')    vendorhtml1dir=''
+       vendorhtml1direxp=''
        ;;
 *)     : determine where vendor-supplied html pages go.
        : There is no standard location, so try to copy the previously-selected
        : directory structure for the core html pages.
        : XXX Better default suggestions would be welcome.
-       case "$vendorhtml1" in
+       case "$vendorhtml1dir" in
        '')     dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
-       *)      dflt=$vendorhtml1 ;;
+       *)      dflt=$vendorhtml1dir ;;
        esac
        case "$dflt" in
        ''|' ') dflt=none ;;
@@ -8975,30 +9055,30 @@ case "$vendorprefix" in
        fn=dn+~
        rp='Pathname for the vendor-supplied html pages?'
        . ./getfile
-       vendorhtml1="$ans"
-       vendorhtml1exp="$ansexp"
+       vendorhtml1dir="$ans"
+       vendorhtml1direxp="$ansexp"
        ;;
 esac
 : Use ' ' for none so value is preserved next time through Configure
-$test X"$vendorhtml1" = "X" && vendorhtml1=' '
+$test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
 : Change installation prefix, if necessary.
 if $test X"$prefix" != X"$installprefix"; then
-       installvendorhtml1=`echo $vendorhtml1exp | $sed "s#^$prefix#$installprefix#"`
+       installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
 else
-       installvendorhtml1="$vendorhtml1exp"
+       installvendorhtml1dir="$vendorhtml1direxp"
 fi
 
 case "$vendorprefix" in
-'')    vendorhtml3=''
-       vendorhtml3exp=''
+'')    vendorhtml3dir=''
+       vendorhtml3direxp=''
        ;;
 *)     : determine where vendor-supplied module html pages go.
        : There is no standard location, so try to copy the previously-selected
        : directory structure for the core html pages.
        : XXX Better default suggestions would be welcome.
-       case "$vendorhtml3" in
+       case "$vendorhtml3dir" in
        '')     dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
-       *)      dflt=$vendorhtml3 ;;
+       *)      dflt=$vendorhtml3dir ;;
        esac
        case "$dflt" in
        ''|' ') dflt=none ;;
@@ -9006,27 +9086,27 @@ case "$vendorprefix" in
        fn=dn+~
        rp='Pathname for the vendor-supplied html pages?'
        . ./getfile
-       vendorhtml3="$ans"
-       vendorhtml3exp="$ansexp"
+       vendorhtml3dir="$ans"
+       vendorhtml3direxp="$ansexp"
        ;;
 esac
 : Use ' ' for none so value is preserved next time through Configure
-$test X"$vendorhtml3" = "X" && vendorhtml3=' '
+$test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
 : Change installation prefix, if necessary.
 if $test X"$prefix" != X"$installprefix"; then
-       installvendorhtml3=`echo $vendorhtml3exp | $sed "s#^$prefix#$installprefix#"`
+       installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
 else
-       installvendorhtml3="$vendorhtml3exp"
+       installvendorhtml3dir="$vendorhtml3direxp"
 fi
 
 case "$vendorprefix" in
-'')    vendorman1=''
-       vendorman1exp=''
+'')    vendorman1dir=''
+       vendorman1direxp=''
        ;;
 *)     : determine where vendor-supplied manual pages go.
-       case "$vendorman1" in
+       case "$vendorman1dir" in
        '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
-       *)      dflt=$vendorman1 ;;
+       *)      dflt=$vendorman1dir ;;
        esac
        case "$dflt" in
        ''|' ') dflt=none ;;
@@ -9034,27 +9114,27 @@ case "$vendorprefix" in
        fn=nd~+
        rp='Pathname for the vendor-supplied manual section 1 pages?'
        . ./getfile
-       vendorman1="$ans"
-       vendorman1exp="$ansexp"
+       vendorman1dir="$ans"
+       vendorman1direxp="$ansexp"
        ;;
 esac
 : Use ' ' for none so value is preserved next time through Configure
-$test X"$vendorman1" = "X" && vendorman1=' '
+$test X"$vendorman1dir" = "X" && vendorman1dir=' '
 : Change installation prefix, if necessary.
 if $test X"$prefix" != X"$installprefix"; then
-       installvendorman1=`echo "$vendorman1exp" | $sed "s#^$prefix#$installprefix#"`
+       installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
 else
-       installvendorman1="$vendorman1exp"
+       installvendorman1dir="$vendorman1direxp"
 fi
 
 case "$vendorprefix" in
-'')    vendorman3=''
-       vendorman3exp=''
+'')    vendorman3dir=''
+       vendorman3direxp=''
        ;;
 *)     : determine where vendor-supplied module manual pages go.
-       case "$vendorman3" in
+       case "$vendorman3dir" in
        '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
-       *)      dflt=$vendorman3 ;;
+       *)      dflt=$vendorman3dir ;;
        esac
        case "$dflt" in
        ''|' ') dflt=none ;;
@@ -9062,17 +9142,17 @@ case "$vendorprefix" in
        fn=nd~+
        rp='Pathname for the vendor-supplied manual section 3 pages?'
        . ./getfile
-       vendorman3="$ans"
-       vendorman3exp="$ansexp"
+       vendorman3dir="$ans"
+       vendorman3direxp="$ansexp"
        ;;
 esac
 : Use ' ' for none so value is preserved next time through Configure
-$test X"$vendorman3" = "X" && vendorman3=' '
+$test X"$vendorman3dir" = "X" && vendorman3dir=' '
 : Change installation prefix, if necessary.
 if $test X"$prefix" != X"$installprefix"; then
-       installvendorman3=`echo "$vendorman3exp" | $sed "s#^$prefix#$installprefix#"`
+       installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
 else
-       installvendorman3="$vendorman3exp"
+       installvendorman3dir="$vendorman3direxp"
 fi
 
 case "$vendorprefix" in
@@ -9813,26 +9893,199 @@ eval $inlibc
 set atoll d_atoll
 eval $inlibc
 
-: Look for GNU-cc style attribute checking
+: Look for GCC-style attribute format
+case "$d_attribute_format" in
+'')
+echo " "
+echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4
+$cat >attrib.c <<'EOCP'
+#include <stdio.h>
+void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2)));
+EOCP
+if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
+       if $contains 'warning' attrib.out >/dev/null 2>&1; then
+               echo "Your C compiler doesn't support __attribute__((format))."
+               val="$undef"
+       else
+               echo "Your C compiler supports __attribute__((format))."
+               val="$define"
+       fi
+else
+       echo "Your C compiler doesn't seem to understand __attribute__ at all."
+       val="$undef"
+fi
+;;
+*) val="$d_attribute_format" ;;
+esac
+set d_attribute_format
+eval $setvar
+$rm -f attrib*
+
+: Look for GCC-style attribute malloc
+case "$d_attribute_malloc" in
+'')
+echo " "
+echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4
+$cat >attrib.c <<'EOCP'
+#include <stdio.h>
+char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc));
+EOCP
+if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
+       if $contains 'warning' attrib.out >/dev/null 2>&1; then
+               echo "Your C compiler doesn't support __attribute__((malloc))."
+               val="$undef"
+       else
+               echo "Your C compiler supports __attribute__((malloc))."
+               val="$define"
+       fi
+else
+       echo "Your C compiler doesn't seem to understand __attribute__ at all."
+       val="$undef"
+fi
+;;
+*) val="$d_attribute_malloc" ;;
+esac
+set d_attribute_malloc
+eval $setvar
+$rm -f attrib*
+
+: Look for GCC-style attribute nonnull
+case "$d_attribute_nonnull" in
+'')
+echo " "
+echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4
+$cat >attrib.c <<'EOCP'
+#include <stdio.h>
+void do_something (char *some_pointer,...) __attribute__((nonnull(1)));
+EOCP
+if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
+       if $contains 'warning' attrib.out >/dev/null 2>&1; then
+               echo "Your C compiler doesn't support __attribute__((nonnull))."
+               val="$undef"
+       else
+               echo "Your C compiler supports __attribute__((nonnull))."
+               val="$define"
+       fi
+else
+       echo "Your C compiler doesn't seem to understand __attribute__ at all."
+       val="$undef"
+fi
+;;
+*) val="$d_attribute_nonnull" ;;
+esac
+set d_attribute_nonnull
+eval $setvar
+$rm -f attrib*
+
+: Look for GCC-style attribute noreturn
+case "$d_attribute_noreturn" in
+'')
+echo " "
+echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4
+$cat >attrib.c <<'EOCP'
+#include <stdio.h>
+void fall_over_dead( void ) __attribute__((noreturn));
+EOCP
+if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
+       if $contains 'warning' attrib.out >/dev/null 2>&1; then
+               echo "Your C compiler doesn't support __attribute__((noreturn))."
+               val="$undef"
+       else
+               echo "Your C compiler supports __attribute__((noreturn))."
+               val="$define"
+       fi
+else
+       echo "Your C compiler doesn't seem to understand __attribute__ at all."
+       val="$undef"
+fi
+;;
+*) val="$d_attribute_noreturn" ;;
+esac
+set d_attribute_noreturn
+eval $setvar
+$rm -f attrib*
+
+: Look for GCC-style attribute pure
+case "$d_attribute_pure" in
+'')
+echo " "
+echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4
+$cat >attrib.c <<'EOCP'
+#include <stdio.h>
+int square( int n ) __attribute__((pure));
+EOCP
+if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
+       if $contains 'warning' attrib.out >/dev/null 2>&1; then
+               echo "Your C compiler doesn't support __attribute__((pure))."
+               val="$undef"
+       else
+               echo "Your C compiler supports __attribute__((pure))."
+               val="$define"
+       fi
+else
+       echo "Your C compiler doesn't seem to understand __attribute__ at all."
+       val="$undef"
+fi
+;;
+*) val="$d_attribute_pure" ;;
+esac
+set d_attribute_pure
+eval $setvar
+$rm -f attrib*
+
+: Look for GCC-style attribute unused
+case "$d_attribute_unused" in
+'')
+echo " "
+echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4
+$cat >attrib.c <<'EOCP'
+#include <stdio.h>
+int do_something( int dummy __attribute__((unused)), int n );
+EOCP
+if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
+       if $contains 'warning' attrib.out >/dev/null 2>&1; then
+               echo "Your C compiler doesn't support __attribute__((unused))."
+               val="$undef"
+       else
+               echo "Your C compiler supports __attribute__((unused))."
+               val="$define"
+       fi
+else
+       echo "Your C compiler doesn't seem to understand __attribute__ at all."
+       val="$undef"
+fi
+;;
+*) val="$d_attribute_unused" ;;
+esac
+set d_attribute_unused
+eval $setvar
+$rm -f attrib*
+
+: Look for GCC-style attribute warn_unused_result
+case "$d_attribute_warn_unused_result" in
+'')
 echo " "
-echo "Checking whether your compiler can handle __attribute__ ..." >&4
+echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4
 $cat >attrib.c <<'EOCP'
 #include <stdio.h>
-void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
+int I_will_not_be_ignored(void) __attribute__((warn_unused_result));
 EOCP
 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
        if $contains 'warning' attrib.out >/dev/null 2>&1; then
-               echo "Your C compiler doesn't fully support __attribute__."
+               echo "Your C compiler doesn't support __attribute__((warn_unused_result))."
                val="$undef"
        else
-               echo "Your C compiler supports __attribute__."
+               echo "Your C compiler supports __attribute__((warn_unused_result))."
                val="$define"
        fi
 else
        echo "Your C compiler doesn't seem to understand __attribute__ at all."
        val="$undef"
 fi
-set d_attribut
+;;
+*) val="$d_attribute_warn_unused_result" ;;
+esac
+set d_attribute_warn_unused_result
 eval $setvar
 $rm -f attrib*
 
@@ -10061,7 +10314,7 @@ int main()
        i32  = ($xxx) g;
 
        /* x86 processors will probably give 0x8000 0000, which is a
-       sign change.  We don't want that.  We want to mimic SPARC
+          sign change.  We don't want that.  We want to mimic SPARC
           behavior here, which is to preserve the sign and give
           back 0x7fff ffff.
        */
@@ -10780,6 +11033,7 @@ int main() {
                exit(1);
 }
 EOM
+val=$undef
 set dirfd
 if eval $compile; then
        val="$define"
@@ -13893,6 +14147,38 @@ $rm -f ldbl_dig.?
 set d_ldbl_dig
 eval $setvar
 
+: see if this is a math.h system
+set math.h i_math
+eval $inhdr
+
+d_libm_lib_version="$undef"
+case $i_math in
+    $define)
+       : check to see if math.h defines _LIB_VERSION
+       echo " "
+       echo "Checking to see if your libm supports _LIB_VERSION..." >&4
+       $cat >try.c <<EOCP
+#include <unistd.h>
+#include <math.h>
+int main (int argc, char *argv[])
+{
+    printf ("%d\n", _LIB_VERSION);
+    return (0);
+    } /* main */
+EOCP
+       set try
+       if eval $compile; then
+           foo=`$run ./try`
+           echo "Yes, it does ($foo)" >&4
+           d_libm_lib_version="$define"
+       else
+           echo "No, it does not (probably harmless)\n" >&4
+           fi
+       $rm -f try.* try core core.try.*
+       ;;
+
+    esac
+
 : see if link exists
 set link d_link
 eval $inlibc
@@ -13963,6 +14249,14 @@ eval $inlibc
 set madvise d_madvise
 eval $inlibc
 
+: see if malloc_size exists
+set malloc_size d_malloc_size
+eval $inlibc
+
+: see if malloc_size_good exists
+set malloc_good_size d_malloc_good_size
+eval $inlibc
+
 : see if mblen exists
 set mblen d_mblen
 eval $inlibc
@@ -14060,7 +14354,7 @@ eval $inlibc
 
 : see if prototype for modfl is available
 echo " "
-set d_modflproto modfl math.h
+set d_modflproto modfl $i_math math.h
 eval $hasproto
 
 d_modfl_pow32_bug="$undef"
@@ -14557,6 +14851,128 @@ esac
 
 $rm -f try.* try
 
+$echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
+: volatile so that the compiler has to store it out to memory.
+if test X"$d_volatile" = X"$define"; then
+       volatile=volatile
+fi
+$cat <<EOP >try.c
+#include <stdio.h>
+#$i_stdlib I_STDLIB
+#ifdef I_STDLIB
+#include <stdlib.h>
+#endif
+#$i_string I_STRING
+#ifdef I_STRING
+#  include <string.h>
+#else
+#  include <strings.h>
+#endif
+#include <sys/types.h>
+#include <signal.h>
+#ifdef SIGFPE
+$volatile int bletched = 0;
+$signal_t blech(s) int s; { bletched = 1; }
+#endif
+
+int checkit($nvtype d, char *where) {
+    unsigned char *p = (char *)&d;
+    unsigned char *end = p + sizeof(d);
+    int fail = 0;
+
+    while (p < end)
+       fail += *p++;
+
+    if (!fail)
+       return 0;
+
+    p = (char *)&d;
+    printf("No - %s: 0x", where);
+    while (p < end)
+       printf ("%02X", *p++);
+    printf("\n");
+    return 1;
+}
+
+int main(int argc, char **argv) {
+    $nvtype d = 0.0;
+    int fail = 0;
+    fail += checkit(d, "0.0");
+
+    /* The compiler shouldn't be assuming that bletched is 0  */
+    d = bletched;
+
+    fail += checkit(d, "bleched");
+
+#ifdef SIGFPE
+    signal(SIGFPE, blech);
+#endif
+
+    /* Paranoia - the compiler should have no way of knowing that ANSI says
+       that argv[argc] will always be NULL.  Actually, if it did assume this it
+       would be buggy, as this is C and main() can be called from elsewhere in
+       the program.  */
+    d = argv[argc] ? 1 : 0;
+
+    if (d) {
+       printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d);
+    }
+
+    fail += checkit(d, "ternary");
+
+    memset(&d, sizeof(d), argv[argc] ? 1 : 0);
+
+    if (d != 0.0) {
+       printf("No - memset doesn't give 0.0\n");
+       /* This might just blow up:  */
+       printf("(gives %g)\n", d);
+       return 1;
+    }
+    
+#ifdef SIGFPE
+    if (bletched) {
+       printf("No - something bleched\n");
+       return 1;
+    }
+#endif
+    if (fail) {
+      printf("No - %d fail(s)\n", fail);
+      return 1;
+    }
+    printf("Yes\n");
+    return 0;
+}
+EOP
+set try
+
+d_nv_zero_is_allbits_zero="$undef"
+if eval $compile; then
+    xxx="`$run ./try`"
+    case "$?" in
+       0)
+           case "$xxx" in
+               Yes)  cat >&4 <<EOM
+0.0 is represented as all bits zero in memory
+EOM
+                   d_nv_zero_is_allbits_zero="$define"
+                   ;;
+               *)  cat >&4 <<EOM
+0.0 is not represented as all bits zero in memory
+EOM
+                   d_nv_zero_is_allbits_zero="$undef"
+                   ;;
+           esac
+           ;;
+       *)  cat >&4 <<EOM
+0.0 is not represented as all bits zero in memory
+EOM
+           d_nv_zero_is_allbits_zero="$undef"
+           ;;
+    esac
+fi
+
+$rm -f try.* try
+
 
 : check for off64_t
 echo " "
@@ -15250,14 +15666,13 @@ else
     echo "You do not have union semun in <sys/sem.h>." >&4
     val="$undef"
 fi
-$rm -f try try.c try.h
+$rm -f try try.c
 set d_union_semun
 eval $setvar
 
 : see how to do semctl IPC_STAT
 case "$d_sem" in
 $define)
-    : see whether semctl IPC_STAT can use union semun
     echo " "
     $cat > try.h <<END
 #ifndef S_IRUSR
@@ -15283,8 +15698,11 @@ $define)
 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
 #endif
 END
-
-    $cat > try.c <<END
+    : see whether semctl IPC_STAT can use union semun
+    val="$undef"
+    case "$d_semctl_semun" in
+    '')
+      $cat > try.c <<END
 #include <sys/types.h>
 #include <sys/ipc.h>
 #include <sys/sem.h>
@@ -15330,15 +15748,16 @@ int main() {
   return 0;
 }
 END
-    val="$undef"
-    set try
-    if eval $compile; then
-       xxx=`$run ./try`
-        case "$xxx" in
-        semun) val="$define" ;;
-        esac
-    fi
-    $rm -f try try.c
+      set try
+      if eval $compile; then
+         xxx=`$run ./try`
+          case "$xxx" in
+          semun) val="$define" ;;
+          esac
+      fi
+      $rm -f try try.c
+      ;;
+    esac
     set d_semctl_semun
     eval $setvar
     case "$d_semctl_semun" in
@@ -15352,7 +15771,10 @@ END
     esac
 
     : see whether semctl IPC_STAT can use struct semid_ds pointer
-    $cat > try.c <<'END'
+    val="$undef"
+    case "$d_semctl_semid_ds" in
+    '')
+      $cat > try.c <<'END'
 #include <sys/types.h>
 #include <sys/ipc.h>
 #include <sys/sem.h>
@@ -15388,15 +15810,16 @@ int main() {
     return 0;
 }
 END
-    val="$undef"
-    set try
-    if eval $compile; then
-        xxx=`$run ./try`
-        case "$xxx" in
-        semid_ds) val="$define" ;;
-        esac
-    fi
-    $rm -f try try.c
+      set try
+      if eval $compile; then
+          xxx=`$run ./try`
+          case "$xxx" in
+          semid_ds) val="$define" ;;
+          esac
+      fi
+      $rm -f try try.c
+      ;;
+    esac
     set d_semctl_semid_ds
     eval $setvar
     case "$d_semctl_semid_ds" in
@@ -16381,6 +16804,14 @@ esac
 set strftime d_strftime
 eval $inlibc
 
+: see if strlcat exists
+set strlcat d_strlcat
+eval $inlibc
+
+: see if strlcpy exists
+set strlcpy d_strlcpy
+eval $inlibc
+
 : see if strtod exists
 set strtod d_strtod
 eval $inlibc
@@ -16953,10 +17384,10 @@ int main() {
     buf[1] = 0;
     buf[2] = 0;
     buf[3] = 1;
+    buf[4] = 0;
     buf[5] = 0;
     buf[6] = 0;
-    buf[7] = 0;
-    buf[8] = 1;
+    buf[7] = 1;
 
     for (i = 0; i < 4; i++) {
        up = (U32*)(buf + i);
@@ -18641,12 +19072,6 @@ rp="What is the type of process ids on this system?"
 set pid_t pidtype int stdio.h sys/types.h
 eval $typedef_ask
 
-: Find earliest binary compatible site_perl subdirectory perl can use.
-xs_apiversion=$version # The current site_perl version.
-: Find earliest pure perl site_perl subdirectory perl can use.
-: The versioned directories started at 5.005.
-pm_apiversion='5.005'
-
 : see if ar generates random libraries by itself
 echo " "
 echo "Checking how to generate random libraries on your machine..." >&4
@@ -18667,7 +19092,9 @@ if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
        $run ./foobar >/dev/null 2>&1; then
        echo "$ar appears to generate random libraries itself."
        orderlib=false
-       ranlib=":"
+       if [ "X$ranlib" = "X" ]; then
+           ranlib=":"
+       fi
 elif $ar ts bar$_a >/dev/null 2>&1 &&
        $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
        $run ./foobar >/dev/null 2>&1; then
@@ -18922,6 +19349,12 @@ int main() {
 #endif
 
 #ifndef NSIG
+#  ifdef _SIG_MAX
+#    define NSIG (_SIG_MAX+1)
+#  endif
+#endif
+
+#ifndef NSIG
 #  ifdef MAXSIG
 #    define NSIG (MAXSIG+1)
 #  endif
@@ -18935,7 +19368,7 @@ int main() {
 
 #ifndef NSIG
 #  ifdef SIGARRAYSIZE
-#    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
+#    define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
 #  endif
 #endif
 
@@ -19420,6 +19853,16 @@ case "$uidsign" in
        ;;
 esac
 
+
+case "$usesitecustomize" in
+    $define|true|[Yy]*)
+       usesitecustomize="$define"
+       ;;
+    *)
+       usesitecustomize="$undef"
+       ;;
+    esac
+
 : determine compiler compiler
 case "$yacc" in
 '')
 
 
 
-: see if this is a math.h system
-set math.h i_math
-eval $inhdr
-
 : see if this is a mntent.h system
 set mntent.h i_mntent
 eval $inhdr
@@ -19568,13 +20007,13 @@ $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
 $cat <<'EOSH' > Cppsym.know
 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
-alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
+alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX
 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
 bull c cadmus clipper CMU COFF COMPILER_VERSION
 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
-CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
+CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
 GLIBC GLIBC_MINOR
@@ -19626,7 +20065,7 @@ USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
 USGr4 USGr4_2
-Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
+Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286
 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
 z8000
@@ -20514,7 +20953,13 @@ d_archlib='$d_archlib'
 d_asctime_r='$d_asctime_r'
 d_atolf='$d_atolf'
 d_atoll='$d_atoll'
-d_attribut='$d_attribut'
+d_attribute_format='$d_attribute_format'
+d_attribute_malloc='$d_attribute_malloc'
+d_attribute_nonnull='$d_attribute_nonnull'
+d_attribute_noreturn='$d_attribute_noreturn'
+d_attribute_pure='$d_attribute_pure'
+d_attribute_unused='$d_attribute_unused'
+d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
 d_bcmp='$d_bcmp'
 d_bcopy='$d_bcopy'
 d_bsd='$d_bsd'
@@ -20669,6 +21114,7 @@ d_isnanl='$d_isnanl'
 d_killpg='$d_killpg'
 d_lchown='$d_lchown'
 d_ldbl_dig='$d_ldbl_dig'
+d_libm_lib_version='$d_libm_lib_version'
 d_link='$d_link'
 d_localtime_r='$d_localtime_r'
 d_locconv='$d_locconv'
@@ -20678,6 +21124,8 @@ d_longlong='$d_longlong'
 d_lseekproto='$d_lseekproto'
 d_lstat='$d_lstat'
 d_madvise='$d_madvise'
+d_malloc_good_size='$d_malloc_good_size'
+d_malloc_size='$d_malloc_size'
 d_mblen='$d_mblen'
 d_mbstowcs='$d_mbstowcs'
 d_mbtowc='$d_mbtowc'
@@ -20714,6 +21162,7 @@ d_mymalloc='$d_mymalloc'
 d_nice='$d_nice'
 d_nl_langinfo='$d_nl_langinfo'
 d_nv_preserves_uv='$d_nv_preserves_uv'
+d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero'
 d_off64_t='$d_off64_t'
 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
 d_oldpthreads='$d_oldpthreads'
@@ -20837,6 +21286,8 @@ d_strerrm='$d_strerrm'
 d_strerror='$d_strerror'
 d_strerror_r='$d_strerror_r'
 d_strftime='$d_strftime'
+d_strlcat='$d_strlcat'
+d_strlcpy='$d_strlcpy'
 d_strtod='$d_strtod'
 d_strtol='$d_strtol'
 d_strtold='$d_strtold'
@@ -21083,21 +21534,21 @@ installprivlib='$installprivlib'
 installscript='$installscript'
 installsitearch='$installsitearch'
 installsitebin='$installsitebin'
-installsitehtml1='$installsitehtml1'
-installsitehtml3='$installsitehtml3'
+installsitehtml1dir='$installsitehtml1dir'
+installsitehtml3dir='$installsitehtml3dir'
 installsitelib='$installsitelib'
-installsiteman1='$installsiteman1'
-installsiteman3='$installsiteman3'
+installsiteman1dir='$installsiteman1dir'
+installsiteman3dir='$installsiteman3dir'
 installsitescript='$installsitescript'
 installstyle='$installstyle'
 installusrbinperl='$installusrbinperl'
 installvendorarch='$installvendorarch'
 installvendorbin='$installvendorbin'
-installvendorhtml1='$installvendorhtml1'
-installvendorhtml3='$installvendorhtml3'
+installvendorhtml1dir='$installvendorhtml1dir'
+installvendorhtml3dir='$installvendorhtml3dir'
 installvendorlib='$installvendorlib'
-installvendorman1='$installvendorman1'
-installvendorman3='$installvendorman3'
+installvendorman1dir='$installvendorman1dir'
+installvendorman3dir='$installvendorman3dir'
 installvendorscript='$installvendorscript'
 intsize='$intsize'
 issymlink='$issymlink'
@@ -21207,7 +21658,6 @@ pg='$pg'
 phostname='$phostname'
 pidtype='$pidtype'
 plibpth='$plibpth'
-pm_apiversion='$pm_apiversion'
 pmake='$pmake'
 pr='$pr'
 prefix='$prefix'
@@ -21278,17 +21728,17 @@ sitearch='$sitearch'
 sitearchexp='$sitearchexp'
 sitebin='$sitebin'
 sitebinexp='$sitebinexp'
-sitehtml1='$sitehtml1'
-sitehtml1exp='$sitehtml1exp'
-sitehtml3='$sitehtml3'
-sitehtml3exp='$sitehtml3exp'
+sitehtml1dir='$sitehtml1dir'
+sitehtml1direxp='$sitehtml1direxp'
+sitehtml3dir='$sitehtml3dir'
+sitehtml3direxp='$sitehtml3direxp'
 sitelib='$sitelib'
 sitelib_stem='$sitelib_stem'
 sitelibexp='$sitelibexp'
-siteman1='$siteman1'
-siteman1exp='$siteman1exp'
-siteman3='$siteman3'
-siteman3exp='$siteman3exp'
+siteman1dir='$siteman1dir'
+siteman1direxp='$siteman1direxp'
+siteman3dir='$siteman3dir'
+siteman3direxp='$siteman3direxp'
 siteprefix='$siteprefix'
 siteprefixexp='$siteprefixexp'
 sitescript='$sitescript'
@@ -21362,6 +21812,7 @@ usefaststdio='$usefaststdio'
 useithreads='$useithreads'
 uselargefiles='$uselargefiles'
 uselongdouble='$uselongdouble'
+usemallocwrap='$usemallocwrap'
 usemorebits='$usemorebits'
 usemultiplicity='$usemultiplicity'
 usemymalloc='$usemymalloc'
@@ -21370,8 +21821,10 @@ useopcode='$useopcode'
 useperlio='$useperlio'
 useposix='$useposix'
 usereentrant='$usereentrant'
+userelocatableinc='$userelocatableinc'
 usesfio='$usesfio'
 useshrplib='$useshrplib'
+usesitecustomize='$usesitecustomize'
 usesocks='$usesocks'
 usethreads='$usethreads'
 usevendorprefix='$usevendorprefix'
@@ -21388,17 +21841,17 @@ vendorarch='$vendorarch'
 vendorarchexp='$vendorarchexp'
 vendorbin='$vendorbin'
 vendorbinexp='$vendorbinexp'
-vendorhtml1='$vendorhtml1'
-vendorhtml1exp='$vendorhtml1exp'
-vendorhtml3='$vendorhtml3'
-vendorhtml3exp='$vendorhtml3exp'
+vendorhtml1dir='$vendorhtml1dir'
+vendorhtml1direxp='$vendorhtml1direxp'
+vendorhtml3dir='$vendorhtml3dir'
+vendorhtml3direxp='$vendorhtml3direxp'
 vendorlib='$vendorlib'
 vendorlib_stem='$vendorlib_stem'
 vendorlibexp='$vendorlibexp'
-vendorman1='$vendorman1'
-vendorman1exp='$vendorman1exp'
-vendorman3='$vendorman3'
-vendorman3exp='$vendorman3exp'
+vendorman1dir='$vendorman1dir'
+vendorman1direxp='$vendorman1direxp'
+vendorman3dir='$vendorman3dir'
+vendorman3direxp='$vendorman3direxp'
 vendorprefix='$vendorprefix'
 vendorprefixexp='$vendorprefixexp'
 vendorscript='$vendorscript'
@@ -21409,7 +21862,6 @@ versiononly='$versiononly'
 vi='$vi'
 voidflags='$voidflags'
 xlibpth='$xlibpth'
-xs_apiversion='$xs_apiversion'
 yacc='$yacc'
 yaccflags='$yaccflags'
 zcat='$zcat'