This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Rename PERL_MAX_SUB_DEPTH to PERL_SUB_DEPTH_WARN, per Tim Bunce's
[perl5.git] / Configure
index 0d612fc..0704273 100755 (executable)
--- a/Configure
+++ b/Configure
 # Yes, you may rip this off to use in other distribution packages. This
 # script belongs to the public domain and cannot be copyrighted.
 #
-# (Note: this Configure script was generated automatically. Rather than
+# Note: this Configure script was generated automatically. Rather than
 # working with this copy of Configure, you may wish to get metaconfig.
-# The dist-3.0 package (which contains metaconfig) was posted in
-# comp.sources.misc and is available on CPAN under authors/id/RAM so
-# you may fetch it yourself from your nearest archive site.)
+# The dist package (which contains metaconfig) is available via SVN:
+#     svn co https://svn.sourceforge.net/svnroot/dist/trunk/dist
 #
 #
 # Though this script was generated by metaconfig, it is OK to send
@@ -24,9 +23,9 @@
 # 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 $
+# $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
 #
-# Generated on Mon Jul  9 16:19:23 CEST 2007 [metaconfig 3.0 PL70]
+# Generated on Wed Jan  9 22:02:14 CET 2008 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by perlbug@perl.org)
 
 cat >c1$$ <<EOF
@@ -88,9 +87,9 @@ esac
 
 : Proper separator for the PATH environment variable
 p_=:
-: On OS/2 this directory should exist if this is not floppy only system :-]
+: On OS/2 this directory should exist if this is not floppy only system ":-]"
 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
-    if test -n "$OS2_SHELL"; then
+       if test -n "$OS2_SHELL"; then
                p_=\;
                PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
                OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
@@ -145,9 +144,9 @@ if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
 fi
 if test -f /osf_boot -a -f /usr/sbin/setld; then
        if test X`/usr/bin/uname -s` = XOSF1; then
-               avoidksh="to avoid Digital UNIX' ksh"
-               newsh=/bin/sh
-               unset BIN_SH # if this is 'xpg4' sh will start up ksh
+               avoidksh="to avoid Digital UNIX' ksh"
+               newsh=/bin/sh
+               unset BIN_SH
        fi
 fi
 case "$inksh/$needksh" in
@@ -181,17 +180,19 @@ true)
        esac
        ;;
 esac
+test -x "${newsh}" || unset newsh
 
-: if needed set CDPATH to a harmless value that is not chatty
+: if needed, set CDPATH to a harmless value that is not chatty
 : avoid bash 2.02 problems with empty CDPATH.
 case "$CDPATH" in
 '')    ;;
 *)     case "$SHELL" in
-       *bash*) CDPATH='.' ;;
-       *)              CDPATH='' ;;
+       *bash*) CDPATH='.' ;;
+       *) CDPATH='' ;;
        esac
        ;;
 esac
+
 : Configure runs within the UU subdirectory
 test -d UU || mkdir UU
 cd UU && rm -f ./*
@@ -237,6 +238,7 @@ cpio=''
 cpp=''
 csh=''
 date=''
+dtrace=''
 echo=''
 egrep=''
 emacs=''
@@ -346,7 +348,6 @@ optimize=''
 cf_email=''
 cf_by=''
 cf_time=''
-charsize=''
 contains=''
 cpp_stuff=''
 cpplast=''
@@ -840,6 +841,7 @@ html3dir=''
 html3direxp=''
 installhtml3dir=''
 i_arpainet=''
+i_assert=''
 i_crypt=''
 db_hashtype=''
 db_prefixtype=''
@@ -1192,6 +1194,7 @@ use5005threads=''
 useithreads=''
 usereentrant=''
 usethreads=''
+usedtrace=''
 incpath=''
 mips_type=''
 usrinc=''
@@ -1452,11 +1455,10 @@ else
 fi
 rm -f sharp
 
-
 : Save command line options in file UU/cmdline.opt for later use in
 : generating config.sh.
 cat > cmdline.opt <<EOSH
-# Configure command line arguments.
+: Configure command line arguments.
 config_arg0='$0'
 config_args='$*'
 config_argc=$#
@@ -1468,7 +1470,6 @@ for arg in "$@"; do
        cat >>cmdline.opt <<EOSH
 config_arg$argn='$arg'
 EOSH
-       # Extreme backslashitis: replace each ' by '"'"'
        cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
 $arg
 EOC
@@ -1477,8 +1478,6 @@ EOC
        argn=`expr $argn + 1`
        args_sep=' '
 done
-# args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
-# used by ./hints/os2.sh
 rm -f cmdl.opt
 
 : produce awk script to parse command line options
@@ -1610,7 +1609,7 @@ while test $# -gt 0; do
                  case "$zzz" in
                  *:*) zzz='' ;;
                  *)   xxx=append
-                      zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` 
+                      zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
                  esac
                  ;;
@@ -1624,7 +1623,7 @@ while test $# -gt 0; do
                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
                  esac
-                 ;;       
+                 ;;
             esac
            case "$xxx" in
            append)
@@ -1688,16 +1687,17 @@ Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
          -U symbol=   symbol gets completely empty
        e.g.:  -Uversiononly
   -A : manipulate symbol after the platform specific hints have been applied:
-        -A symbol=value                append " "value to symbol
-        -A append:symbol=value         append value to symbol
-        -A define:symbol=value         define symbol to have value
-         -A clear:symbol               define symbol to be ''
-        -A define:symbol               define symbol to be 'define'
-        -A eval:symbol=value           define symbol to be eval of value
-        -A prepend:symbol=value        prepend value to symbol
-        -A undef:symbol                define symbol to be 'undef'
-        -A undef:symbol=               define symbol to be ''
+         -A append:symbol=value   append value to symbol
+         -A symbol=value          like append:, but with a separating space
+         -A define:symbol=value   define symbol to have value
+         -A clear:symbol          define symbol to be ''
+         -A define:symbol         define symbol to be 'define'
+         -A eval:symbol=value     define symbol to be eval of value
+         -A prepend:symbol=value  prepend value to symbol
+         -A undef:symbol          define symbol to be 'undef'
+         -A undef:symbol=         define symbol to be ''
        e.g.:  -A prepend:libswanted='cl pthread '
+              -A ccflags=-DSOME_MACRO
   -V : print version number and exit (with a zero status).
 EOM
        exit 1
@@ -1974,8 +1974,8 @@ else
 fi
 rm -f missing x??
 
-echo " "
 : Find the appropriate value for a newline for tr
+echo " "
 if test -n "$DJGPP"; then
        trnl='\012'
 fi
@@ -2119,6 +2119,7 @@ persist across sessions for $package.
 You may safely delete it if you wish.
 EOF
 
+: See if we are using a devel version and want that
 xversion=`awk '/define[        ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
 case "$usedevel" in
 $define|true|[yY]*) ;;
@@ -2417,7 +2418,7 @@ ln)
        ;;
 esac
 case "$make" in
-make)  
+make)
        case "$gmake" in
        gmake)
        echo "I can't find make or gmake, and my life depends on it." >&4
@@ -2426,7 +2427,7 @@ make)
        ;;
        esac
        ;;
-esac   
+esac
 case "$gmake" in
 gmake) ;;
 *)     # We can't have osname yet.
@@ -2482,6 +2483,20 @@ FOO
        ;;
 esac
 
+# This question was auctioned at YAPC::Europe-2007 in Vienna
+# I never promised you could answer it. I only auctioned the question.
+cat <<FOO
+The following message is sponsored by
+
+  Dresden.pm<--The stars should be here.
+
+Dear Perl user, system administrator or package
+maintainer, the Perl community sends greetings to
+you. Do you (emblematical) greet back [Y/n]? n
+
+FOO
+
+: Check what type of C compiler we use
 cat <<EOS >trygcc
 $startsh
 EOS
@@ -2707,7 +2722,7 @@ $define|true|[yY]*)
        ;;
 esac
 
-
+: Check for Cross-Compilation
 case "$usecrosscompile" in
 $define|true|[yY]*)
        $echo "Cross-compiling..."
@@ -4021,7 +4036,7 @@ EOM
 rp='Build Perl for SOCKS?'
 . ./myread
 case "$ans" in
-y|Y)   val="$define" ;;     
+y|Y)   val="$define" ;;
 *)      val="$undef" ;;
 esac
 set usesocks
@@ -4132,12 +4147,13 @@ if test "${api_revision}${api_version}${api_subversion}" = "550"; then
        api_versionstring='5.005'
 fi
 
+: Do we want threads support and if so, what type
 case "$usethreads" in
 $define|true|[yY]*)     dflt='y';;
 *)     # Catch case where user specified ithreads or 5005threads but
        # forgot -Dusethreads (A.D. 4/2002)
        case "$useithreads$use5005threads" in
-       *$define*)      
+       *$define*)
                case "$useperlio" in
                "$define")      dflt='y' ;;
                *)              dflt='n' ;;
@@ -4435,6 +4451,7 @@ if $test -f cc.cbu; then
 fi
 . ./checkcc
 
+: Check if we are using GNU gcc and what its version is
 echo " "
 echo "Checking for GNU cc in disguise and/or its version number..." >&4
 $cat >try.c <<EOM
@@ -4905,7 +4922,7 @@ for thislib in $libswanted; do
                xxx=$thisdir/lib$thislib.$so
                $test -f "$xxx" && eval $libscheck
                $test -f "$xxx" && libstyle=shared
-           fi  
+           fi
            if test ! -f "$xxx"; then
                xxx=$thisdir/lib$thislib$_a
                $test -f "$xxx" && eval $libscheck
@@ -4947,7 +4964,7 @@ for thislib in $libswanted; do
                   ;;
                esac
                break
-           fi  
+           fi
        done
        if $test ! -f "$xxx"; then
            echo "No -l$thislib."
@@ -5031,6 +5048,32 @@ case "$DEBUGGING" in
 both|$define) dflt='-DDEBUGGING'
 esac
 
+: argument order is deliberate, as the flag will start with - which set could
+: think is an option
+checkccflag='check=$1; flag=$2; callback=$3;
+echo " ";
+echo "Checking if your compiler accepts $flag" 2>&1;
+echo "int main(void) { return 0; }" > gcctest.c;
+if $cc -O2 $flag -o gcctest gcctest.c 2>gcctest.out && ./gcctest; then
+    echo "Yes, it does." 2>&1;
+    if $test -s gcctest.out ; then
+        echo "But your platform does not like it:";
+        cat gcctest.out;
+    else
+       case "$ccflags" in
+       *$check*)
+           echo "Leaving current flags $ccflags alone." 2>&1
+           ;;
+       *) dflt="$dflt $flag";
+           eval $callback
+           ;;
+       esac
+    fi
+else
+    echo "Nope, it does not, but that is ok." 2>&1;
+fi
+'
+
 : We will not override a previous value, but we might want to
 : augment a hint file
 case "$hint" in
@@ -5042,7 +5085,7 @@ default|recommended)
        *-g*:old) dflt="$dflt -DDEBUGGING";;
        esac
        case "$gccversion" in
-       2*) if test -d /etc/conf/kconfig.d &&
+       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.
@@ -5053,40 +5096,28 @@ default|recommended)
        case "$gccversion" in
        1*) ;;
        2.[0-8]*) ;;
-       ?*)     echo " "
-               echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
-               echo 'int main(void) { return 0; }' > gcctest.c
-               if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
-                       echo "Yes, it does." 2>&1
-                       case "$ccflags" in
-                       *strict-aliasing*)
-                               echo "Leaving current flags $ccflags alone." 2>&1
-                               ;;
-                       *) dflt="$dflt -fno-strict-aliasing" ;;
-                       esac
-               else
-                       echo "Nope, it doesn't, but that's ok." 2>&1
-               fi
+       ?*)     set strict-aliasing -fno-strict-aliasing
+               eval $checkccflag
                ;;
        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
+       ?*)     set pipe -pipe
+               eval $checkccflag
+               ;;
+       esac
+
+       # on x86_64 (at least) we require an extra library (libssp) in the
+       # link command line. This library is not named, so I infer that it is
+       # an implementation detail that may change. Hence the safest approach
+       # is to add the flag to the flags passed to the compiler at link time,
+       # as that way the compiler can do the right implementation dependant
+       # thing. (NWC)
+       case "$gccversion" in
+       ?*)     set stack-protector -fstack-protector 'ldflags="$ldflags -fstack-protector"'
+               eval $checkccflag
                ;;
        esac
        ;;
@@ -5293,7 +5324,7 @@ and I got the following output:
 EOM
 dflt=y
 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
-       if $sh -c "$run ./try" >>try.msg 2>&1; then
+       if $sh -c "$run ./try " >>try.msg 2>&1; then
                xxx=`$run ./try`
                case "$xxx" in
                "Ok") dflt=n ;;
@@ -5342,7 +5373,7 @@ y)
        ;;
 n) echo "OK, that should do.";;
 esac
-$rm_try
+$rm_try gcctest gcctest.out
 
 : define a shorthand compile call
 compile='
@@ -5612,7 +5643,7 @@ $rm_try
 set d_int64_t
 eval $setvar
 
-
+: Check if 64bit ints have a quad type
 echo " "
 echo "Checking which 64-bit integer type we could use..." >&4
 
@@ -5680,7 +5711,7 @@ case "$uselonglong" in
 EOM
        use64bitint="$define"
        ;;
-esac                          
+esac
 case "$use64bits" in
 "$define"|true|[yY]*)
        cat <<EOM >&4
@@ -5689,7 +5720,7 @@ case "$use64bits" in
 EOM
        use64bitint="$define"
        ;;
-esac                          
+esac
 case "$use64bitints" in
 "$define"|true|[yY]*)
        cat <<EOM >&4
@@ -5698,7 +5729,7 @@ case "$use64bitints" in
 EOM
        use64bitint="$define"
        ;;
-esac                          
+esac
 case "$use64bitsint" in
 "$define"|true|[yY]*)
        cat <<EOM >&4
@@ -5707,7 +5738,7 @@ case "$use64bitsint" in
 EOM
        use64bitint="$define"
        ;;
-esac                          
+esac
 case "$uselonglongs" in
 "$define"|true|[yY]*)
        cat <<EOM >&4
@@ -5716,7 +5747,7 @@ case "$uselonglongs" in
 EOM
        use64bitint="$define"
        ;;
-esac                          
+esac
 case "$use64bitsall" in
 "$define"|true|[yY]*)
        cat <<EOM >&4
@@ -5725,7 +5756,7 @@ case "$use64bitsall" in
 EOM
        use64bitall="$define"
        ;;
-esac                          
+esac
 
 case "$ccflags" in
 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
@@ -5776,7 +5807,7 @@ case "$use64bitall" in
    *) dflt='n' ;;
    esac
    ;;
-esac   
+esac
 cat <<EOM
 
 You may also choose to try maximal 64-bitness.  It means using as much
@@ -6348,6 +6379,7 @@ case "$perl5" in
 *)     echo "Using $perl5." ;;
 esac
 
+: Set the siteprefix variables
 $cat <<EOM
 
 After $package is installed, you may wish to install various
@@ -6829,6 +6861,7 @@ else
        d_sitearch="$define"
 fi
 
+: Set the vendorprefix variables
 $cat <<EOM
 
 The installation process will also create a directory for
@@ -6885,6 +6918,7 @@ case "$ans" in
        ;;
 esac
 
+: Set the vendorlib variables
 case "$vendorprefix" in
 '')    d_vendorlib="$undef"
        vendorlib=''
@@ -6915,6 +6949,7 @@ vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
 prefixvar=vendorlib
 . ./installprefix
 
+: Set the vendorarch variables
 case "$vendorprefix" in
 '')    d_vendorarch="$undef"
        vendorarch=''
@@ -6998,6 +7033,7 @@ set prototype
 eval $setvar
 $rm -f prototype*
 
+: Check if ansi2knr is required
 case "$prototype" in
 "$define") ;;
 *)     ansi2knr='ansi2knr'
@@ -7021,6 +7057,7 @@ EOM
        ;;
 esac
 
+: See if we want extra modules installed
 echo " "
 case "$extras" in
 '') dflt='n';;
@@ -7162,6 +7199,7 @@ fi
 set installusrbinperl
 eval $setvar
 
+: Check if we are using the GNU C library
 echo " "
 echo "Checking for GNU C Library..." >&4
 cat >try.c <<'EOCP'
@@ -7585,7 +7623,7 @@ $rm -f libnames libpath
 set dld.h i_dld
 eval $inhdr
 
-
+: Check if we are using C++
 echo " "
 echo "Checking for C++..." >&4
 $cat >try.c <<'EOCP'
@@ -8913,6 +8951,71 @@ esac
 set usefaststdio
 eval $setvar
 
+: DTrace support
+dflt_dtrace='/usr/sbin/dtrace'
+cat <<EOM
+
+Perl can be built to support DTrace on platforms that support it.
+DTrace is a diagnosis and performance analysis tool from Sun.
+
+If this doesn't make any sense to you, just accept the default '$dflt'.
+EOM
+
+while test 1 ; do
+       case "$usedtrace" in
+       $define|true|[yY]*) 
+               dflt='y' 
+               ;;
+       ?*)
+               dflt='y' 
+               dflt_dtrace=$usedtrace
+               ;;
+       *) 
+               dflt='n' 
+               ;;
+       esac
+
+       rp='Support DTrace if available?'
+       . ./myread
+       case "$ans" in
+       y|Y)    val="$define" ;;
+       *)      val="$undef" ;;
+       esac
+       set usedtrace
+       eval $setvar
+
+       test "X$usedtrace" != "X$define" && break
+
+       echo " "
+       rp='Where is the dtrace executable?'
+       dflt=$dflt_dtrace
+       . ./getfile
+       val="$ans"
+       set dtrace
+       eval $setvar
+       
+       if test -f $dtrace
+       then
+               if ! $dtrace -h -s ../perldtrace.d \
+                       -o perldtrace.tmp >/dev/null 2>&1 \
+                       && rm -f perldtrace.tmp
+               then
+                       cat >&2 <<EOM
+
+*** $me:  Fatal Error:  $dtrace doesn't support -h flag
+***
+*** Your installed dtrace doesn't support the -h switch to compile a D
+*** program into a C header. Can't continue.
+
+EOM
+                       exit 1
+               fi
+               break;
+       fi
+
+       echo "$dtrace was not found."
+       echo " "
+done
 
 : define an is-a-typedef? function
 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
@@ -9005,12 +9108,13 @@ rp="What is the type for file position used by fsetpos()?"
 set fpos_t fpostype long stdio.h sys/types.h
 eval $typedef_ask
 
+: Check size for Fpos_t
 echo " "
 case "$fpostype" in
 *_t) zzz="$fpostype"   ;;
 *)   zzz="fpos_t"      ;;
 esac
-echo "Checking the size of $zzz..." >&4 
+echo "Checking the size of $zzz..." >&4
 cat > try.c <<EOCP
 #include <sys/types.h>
 #include <stdio.h>
@@ -9043,6 +9147,7 @@ else
        fpossize="$ans"
 fi
 
+: Check for large file support
 # Backward compatibility (uselfs is deprecated).
 case "$uselfs" in
 "$define"|true|[yY]*)
@@ -9156,6 +9261,7 @@ EOCP
        ;;
 esac
 
+: Set the vendorbin variables
 case "$vendorprefix" in
 '')    d_vendorbin="$undef"
        vendorbin=''
@@ -9177,6 +9283,7 @@ esac
 prefixvar=vendorbin
 . ./installprefix
 
+: Set the vendorhtml1dir variables
 case "$vendorprefix" in
 '')    vendorhtml1dir=''
        vendorhtml1direxp=''
@@ -9204,6 +9311,7 @@ $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
 prefixvar=vendorhtml1dir
 . ./installprefix
 
+: Set the vendorhtml3dir variables
 case "$vendorprefix" in
 '')    vendorhtml3dir=''
        vendorhtml3direxp=''
@@ -9231,6 +9339,7 @@ $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
 prefixvar=vendorhtml3dir
 . ./installprefix
 
+: Set the vendorman1dir variables
 case "$vendorprefix" in
 '')    vendorman1dir=''
        vendorman1direxp=''
@@ -9255,6 +9364,7 @@ $test X"$vendorman1dir" = "X" && vendorman1dir=' '
 prefixvar=vendorman1dir
 . ./installprefix
 
+: Set the vendorman3dir variables
 case "$vendorprefix" in
 '')    vendorman3dir=''
        vendorman3direxp=''
@@ -9279,6 +9389,7 @@ $test X"$vendorman3dir" = "X" && vendorman3dir=' '
 prefixvar=vendorman3dir
 . ./installprefix
 
+: Set the vendorscript variables
 case "$vendorprefix" in
 '')    d_vendorscript="$undef"
        vendorscript=''
@@ -9311,6 +9422,7 @@ prefixvar=vendorscript
 set qgcvt d_qgcvt
 eval $inlibc
 
+: Check print/scan long double stuff
 echo " "
 
 if $test X"$d_longdbl" = X"$define"; then
@@ -10545,7 +10657,7 @@ echo "I could not find the definition for va_dcl... You have problems..." >&4
        val="$undef"; set i_stdarg; eval $setvar
        val="$undef"; set i_varargs; eval $setvar
        ;;
-*) 
+*)
        set i_varhdr
        eval $setvar
        case "$i_varhdr" in
@@ -11588,9 +11700,9 @@ int main()
 }
 EOM
        : Call the object file tmp-dyna.o in case dlext=o.
-       if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
-               mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
-               $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
+       if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
+               mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
+               $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
                $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
                xxx=`$run ./fred`
                case $xxx in
@@ -11608,7 +11720,7 @@ EOM
        fi
        ;;
 esac
-               
+
 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
 
 set d_dlsymun
@@ -12735,8 +12847,8 @@ eval $inlibc
 set fcntl d_fcntl
 eval $inlibc
 
-echo " "
 : See if fcntl-based locking works.
+echo " "
 $cat >try.c <<EOCP
 #$i_stdlib I_STDLIB
 #ifdef I_STDLIB
@@ -13006,8 +13118,8 @@ case "$longsize" in
 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
 esac
 
-d_futimes="$undef"
 : check for a working futimes
+d_futimes="$undef"
 echo " "
 echo "Checking if you have a working futimes()" >&4
 $cat >try.c <<EOCP
@@ -13284,7 +13396,7 @@ case "$d_uname$d_gethname" in
 *define*)
        dflt=n
        cat <<EOM
+
 Every now and then someone has a $call() that lies about the hostname
 but can't be fixed for political or economic reasons.  If you wish, I can
 pretend $call() isn't there and maybe compute hostname at run-time
@@ -14644,10 +14756,10 @@ eval $setvar
 set math.h i_math
 eval $inhdr
 
+: check to see if math.h defines _LIB_VERSION
 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
@@ -15088,40 +15200,6 @@ eval $inhdr
 set nl_langinfo d_nl_langinfo
 eval $inlibc
 
-: check for length of character
-echo " "
-case "$charsize" in
-'')
-       echo "Checking to see how big your characters are (hey, you never know)..." >&4
-       $cat >try.c <<EOCP
-#include <stdio.h>
-#$i_stdlib I_STDLIB
-#ifdef I_STDLIB
-#include <stdlib.h>
-#endif
-int main()
-{
-    printf("%d\n", (int)sizeof(char));
-    exit(0);
-}
-EOCP
-       set try
-       if eval $compile_ok; then
-               dflt=`$run ./try`
-       else
-               dflt='1'
-               echo "(I can't seem to compile the test program.  Guessing...)"
-       fi
-       ;;
-*)
-       dflt="$charsize"
-       ;;
-esac
-rp="What is the size of a character (in bytes)?"
-. ./myread
-charsize="$ans"
-$rm_try
-
 : check for volatile keyword
 echo " "
 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
@@ -15153,7 +15231,7 @@ set d_volatile
 eval $setvar
 $rm_try
 
-
+: Check basic sizes
 echo " "
 $echo "Choosing the C types to be used for Perl's internal types..." >&4
 
@@ -15210,38 +15288,10 @@ int main() {
 }
 EOCP
 
-case "$i8type" in
-'')    case "$charsize" in
-       1)      i8type=char
-               u8type="unsigned char"
-               i8size=$charsize
-               u8size=$charsize
-               ;;
-       esac
-       ;;
-esac
-case "$i8type" in
-'')    set try -DINT8
-       if eval $compile; then
-               case "`$run ./try`" in
-               int8_t) i8type=int8_t
-                       u8type=uint8_t
-                       i8size=1
-                       u8size=1
-                       ;;
-               esac
-       fi
-       ;;
-esac
-case "$i8type" in
-'')    if $test $charsize -ge 1; then
-               i8type=char
-               u8type="unsigned char"
-               i8size=$charsize
-               u8size=$charsize
-       fi
-       ;;
-esac
+i8type="signed char"
+u8type="unsigned char"
+i8size=1
+u8size=1
 
 case "$i16type" in
 '')    case "$shortsize" in
@@ -15607,6 +15657,7 @@ eval $inlibc
 set readlink d_readlink
 eval $inlibc
 
+: Check if exe is symlink to abs path of executing program
 echo " "
 procselfexe=''
 val="$undef"
@@ -16989,8 +17040,8 @@ fi
 set d_shm
 eval $setvar
 
-echo " "
 : see if we have sigaction
+echo " "
 if set sigaction val -f d_sigaction; eval $csym; $val; then
        echo 'sigaction() found.' >&4
        $cat > try.c <<EOP
@@ -17404,6 +17455,7 @@ case "$d_statfs_f_flags" in
 *)              echo "No, it doesn't." ;;
 esac
 
+: Check stream access
 $cat >&4 <<EOM
 Checking how to access stdio streams by file descriptor number...
 EOM
@@ -17597,7 +17649,7 @@ EOM
 #define strtoll _strtoll
 #endif
 #include <stdio.h>
-extern long long int strtoll(char *s, char **, int); 
+extern long long int strtoll(char *s, char **, int);
 static int bad = 0;
 int check(char *s, long long ell, int een) {
        long long gll;
@@ -17654,7 +17706,7 @@ EOM
        $cat >try.c <<'EOCP'
 #include <errno.h>
 #include <stdio.h>
-extern unsigned long int strtoul(char *s, char **, int); 
+extern unsigned long int strtoul(char *s, char **, int);
 static int bad = 0;
 void check(char *s, unsigned long eul, int een) {
        unsigned long gul;
@@ -17737,7 +17789,7 @@ EOM
 #define strtoull __strtoull
 #endif
 #include <stdio.h>
-extern unsigned long long int strtoull(char *s, char **, int); 
+extern unsigned long long int strtoull(char *s, char **, int);
 static int bad = 0;
 int check(char *s, long long eull, int een) {
        long long gull;
@@ -17791,7 +17843,7 @@ EOM
        $cat >try.c <<'EOCP'
 #include <errno.h>
 #include <stdio.h>
-extern unsigned long long int strtouq(char *s, char **, int); 
+extern unsigned long long int strtouq(char *s, char **, int);
 static int bad = 0;
 void check(char *s, unsigned long long eull, int een) {
        unsigned long long gull;
@@ -18018,6 +18070,7 @@ fi
 set d_tzname
 eval $setvar
 
+: Check if is a multiplatform env
 case "$osname" in
 next|rhapsody|darwin) multiarch="$define" ;;
 esac
@@ -18108,6 +18161,7 @@ EOM
        ;;
 esac
 
+: Checking 32bit aligndness
 $cat <<EOM
 
 Checking to see whether you can access character data unalignedly...
@@ -18732,6 +18786,7 @@ EOCP
        esac
 done
 
+: Determine if this is an EBCDIC system
 echo " "
 echo "Determining whether or not we are on an EBCDIC system..." >&4
 $cat >try.c <<'EOM'
@@ -18759,6 +18814,7 @@ $rm_try
 set ebcdic
 eval $setvar
 
+: Check how to flush
 echo " "
 $cat >&4 <<EOM
 Checking how to flush all pending stdio output...
@@ -19081,12 +19137,13 @@ gid_t) echo "gid_t found." ;;
        ;;
 esac
 
+: Check the size of GID
 echo " "
 case "$gidtype" in
 *_t) zzz="$gidtype"    ;;
 *)   zzz="gid"         ;;
 esac
-echo "Checking the size of $zzz..." >&4 
+echo "Checking the size of $zzz..." >&4
 cat > try.c <<EOCP
 #include <sys/types.h>
 #include <stdio.h>
@@ -19116,12 +19173,13 @@ else
 fi
 
 
+: Check if GID is signed
 echo " "
 case "$gidtype" in
 *_t) zzz="$gidtype"    ;;
 *)   zzz="gid"         ;;
 esac
-echo "Checking the sign of $zzz..." >&4 
+echo "Checking the sign of $zzz..." >&4
 cat > try.c <<EOCP
 #include <sys/types.h>
 #include <stdio.h>
@@ -19153,6 +19211,7 @@ else
 fi
 
 
+: Check 64bit sizes
 echo " "
 
 if $test X"$quadtype" != X; then
@@ -19435,6 +19494,7 @@ EOM
 *)  groupstype="$gidtype";;
 esac
 
+: MAD = Misc Attribute Definition
 
 if $test $patchlevel -lt 9; then
 : MAD is not available in 5.8.x or earlier.
@@ -19782,7 +19842,7 @@ else
 fi
 $rm -f foo* bar*
 
-: check for type of arguments to select. 
+: check for type of arguments to select.
 case "$selecttype" in
 '') case "$d_select" in
        $define)
@@ -19791,7 +19851,7 @@ case "$selecttype" in
 Checking to see what type of arguments are accepted by select().
 EOM
                hdrs="$define sys/types.h
-                       $i_systime sys/time.h 
+                       $i_systime sys/time.h
                        $i_sysselct sys/select.h
                        $d_socket sys/socket.h"
                : The first arg can be int, unsigned, or size_t
@@ -19951,11 +20011,11 @@ if [ "X$fieldn" = X ]; then
 else
        xxx=`echo '#include <signal.h>' |
        $cppstdin $cppminus $cppflags 2>/dev/null |
-       $grep '^[       ]*#.*include' | 
+       $grep '^[       ]*#.*include' |
        $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
 fi
 : Check this list of files to be sure we have parsed the cpp output ok.
-: This will also avoid potentially non-existent files, such 
+: This will also avoid potentially non-existent files, such
 : as ../foo/bar.h
 xxxfiles=''
 for xx in $xxx /dev/null ; do
@@ -20072,14 +20132,14 @@ $1 ~ /^NSIG$/ { nsig = $2 }
     if (sig_name[$2]) {
        dup_name[ndups] = $1
        dup_num[ndups] = $2
-       ndups++ 
+       ndups++
     }
     else {
        sig_name[$2] = $1
        sig_num[$2] = $2
     }
 }
-END { 
+END {
     if (nsig == 0) {
        nsig = maxsig + 1
     }
@@ -20089,7 +20149,7 @@ END {
            printf("%s %d\n", sig_name[n], sig_num[n])
        }
        else {
-           printf("NUM%d %d\n", n, n) 
+           printf("NUM%d %d\n", n, n)
        }
     }
     for (n = 0; n < ndups; n++) {
@@ -20209,14 +20269,15 @@ echo $sig_name | $awk \
        printf "\n"
 }'
 sig_size=`echo $sig_name | awk '{print NF}'`
-$rm -f signal signal.c signal.awk signal.lst signal_cmd 
+$rm -f signal signal.c signal.awk signal.lst signal_cmd
 
+: Check size of size
 echo " "
 case "$sizetype" in
 *_t) zzz="$sizetype"   ;;
 *)   zzz="filesize"    ;;
 esac
-echo "Checking the size of $zzz..." >&4 
+echo "Checking the size of $zzz..." >&4
 cat > try.c <<EOCP
 #include <sys/types.h>
 #include <stdio.h>
@@ -20403,12 +20464,13 @@ uid_t)        echo "uid_t found." ;;
        ;;
 esac
 
+: Check size of UID
 echo " "
 case "$uidtype" in
 *_t) zzz="$uidtype"    ;;
 *)   zzz="uid"         ;;
 esac
-echo "Checking the size of $zzz..." >&4 
+echo "Checking the size of $zzz..." >&4
 cat > try.c <<EOCP
 #include <sys/types.h>
 #include <stdio.h>
@@ -20437,6 +20499,7 @@ else
        echo "(I can't compile the test program--guessing $uidsize.)" >&4
 fi
 
+: Check if UID is signed
 echo " "
 case "$uidtype" in
 *_t) zzz="$uidtype"    ;;
@@ -20554,6 +20617,11 @@ case "$yacc" in
        ;;
 esac
 
+
+: see if this is a assert.h system
+set assert.h i_assert
+eval $inhdr
+
 : see if this is a fp.h system
 set fp.h i_fp
 eval $inhdr
@@ -20601,8 +20669,6 @@ else
        i_machcthr="$undef"
 fi
 
-
-
 : see if this is a mntent.h system
 set mntent.h i_mntent
 eval $inhdr
@@ -20682,6 +20748,7 @@ eval $inhdr
 set prot.h i_prot
 eval $inhdr
 
+: Preprocessor symbols
 echo " "
 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
 $cat <<'EOSH' > Cppsym.know
@@ -21065,6 +21132,7 @@ case "$d_vfork" in
        ;;
 esac
 
+: Check extensions
 echo " "
 echo "Looking for extensions..." >&4
 : If we are using the old config.sh, known_extensions may contain
@@ -21104,10 +21172,12 @@ cd "$rsrc/ext"
 set X
 shift
 eval $find_extensions
-# Special case:  Add in threads/shared since it is not picked up by the
-# recursive find above (and adding in general recursive finding breaks
-# SDBM_File/sdbm).  A.D.  10/25/2001.
-known_extensions="$known_extensions threads/shared"
+# Special case:  Add in modules that nest beyond the first level.
+# Currently threads/shared and Hash/Util/FieldHash, since they are
+# not picked up by the recursive find above (and adding in general
+# recursive finding breaks SDBM_File/sdbm).
+# A.D. 20011025 (SDBM), ajgough 20071008 (FieldHash)
+known_extensions="$known_extensions threads/shared Hash/Util/FieldHash"
 set X $known_extensions
 shift
 known_extensions="$*"
@@ -21594,7 +21664,6 @@ ccversion='$ccversion'
 cf_by='$cf_by'
 cf_email='$cf_email'
 cf_time='$cf_time'
-charsize='$charsize'
 chgrp='$chgrp'
 chmod='$chmod'
 chown='$chown'
@@ -22061,6 +22130,7 @@ dlsrc='$dlsrc'
 doublesize='$doublesize'
 drand01='$drand01'
 drand48_r_proto='$drand48_r_proto'
+dtrace='$dtrace'
 dynamic_ext='$dynamic_ext'
 eagain='$eagain'
 ebcdic='$ebcdic'
@@ -22142,6 +22212,7 @@ i64type='$i64type'
 i8size='$i8size'
 i8type='$i8type'
 i_arpainet='$i_arpainet'
+i_assert='$i_assert'
 i_bsdioctl='$i_bsdioctl'
 i_crypt='$i_crypt'
 i_db='$i_db'
@@ -22520,6 +22591,7 @@ use64bitall='$use64bitall'
 use64bitint='$use64bitint'
 usecrosscompile='$usecrosscompile'
 usedl='$usedl'
+usedtrace='$usedtrace'
 usefaststdio='$usefaststdio'
 useithreads='$useithreads'
 uselargefiles='$uselargefiles'