Add an idea/question from Damian.
[p5sagit/p5-mst-13.2.git] / Configure
index 2413173..011cdc0 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -20,7 +20,7 @@
 
 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
 #
-# Generated on Sun Mar 24 20:31:34 EET 2002 [metaconfig 3.0 PL70]
+# Generated on Wed Apr 24 03:05:12 EET DST 2002 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by perlbug@perl.org)
 
 cat >c1$$ <<EOF
@@ -3075,6 +3075,9 @@ EOM
                        ;;
                next*) osname=next ;;
                nonstop-ux) osname=nonstopux ;;
+               openbsd) osname=openbsd
+                       osvers="$3"
+                       ;;
                POSIX-BC | posix-bc ) osname=posix-bc
                        osvers="$3"
                        ;;
@@ -3421,7 +3424,13 @@ esac'
 
 case "$usethreads" in
 $define|true|[yY]*)     dflt='y';;
-*) dflt='n';;
+*)     # Catch case where user specified ithreads or 5005threads but
+       # forgot -Dusethreads (A.D. 4/2002)
+       case "$useithreads$use5005threads" in
+       *$define*)      dflt='y' ;;
+       *)      dflt='n';;
+       esac
+       ;;
 esac
 cat <<EOM
 
@@ -8387,6 +8396,12 @@ esac
 set versiononly
 eval $setvar
 
+case "$versiononly" in
+"$define") inc_version_list=''
+           inc_version_list_init=0
+           ;;
+esac
+
 : figure out how to guarantee perl startup
 case "$startperl" in
 '')
@@ -9075,6 +9090,10 @@ eval $inlibc
 set alarm d_alarm
 eval $inlibc
 
+: see if POSIX threads are available
+set pthread.h i_pthread
+eval $inhdr
+
 : define a fucntion to check prototypes
 $cat > protochk <<EOSH
 $startsh
@@ -9084,6 +9103,9 @@ ccflags="$ccflags"
 prototype="$prototype"
 define="$define"
 rm=$rm
+usethreads=$usethreads
+i_pthread=$i_pthread
+pthread_h_first=$pthread_h_first
 EOSH
 
 $cat >> protochk <<'EOSH'
@@ -9096,6 +9118,14 @@ while test $# -ge 2; do
                $define) echo "#include <$2>" >> try.c ;;
                literal) echo "$2" >> try.c ;;
        esac
+    # Extra magic for the benefit of systems that need pthread.h
+    # to be included early to correctly detect threadsafe functions.
+    # Such functions must guarantee themselves, though, that the usethreads
+    # and i_pthread have been defined, before calling protochk.
+    if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
+       echo "#include <pthread.h>" >> try.c
+       pthread_h_done=yes
+    fi
     shift 2
 done
 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
@@ -9284,12 +9314,7 @@ set asctime_r d_asctime_r
 eval $inlibc
 case "$d_asctime_r" in
 "$define")
-       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
-       case "time" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
+       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
        case "$d_asctime_r_proto:$usethreads" in
        ":define")      d_asctime_r_proto=define
                set d_asctime_r_proto asctime_r $hdrs
@@ -9948,11 +9973,6 @@ eval $inlibc
 case "$d_crypt_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
-       case "crypt" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_crypt_r_proto:$usethreads" in
        ":define")      d_crypt_r_proto=define
                set d_crypt_r_proto crypt_r $hdrs
@@ -10010,11 +10030,6 @@ eval $inlibc
 case "$d_ctermid_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h "
-       case "stdio" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_ctermid_r_proto:$usethreads" in
        ":define")      d_ctermid_r_proto=define
                set d_ctermid_r_proto ctermid_r $hdrs
@@ -10055,12 +10070,7 @@ set ctime_r d_ctime_r
 eval $inlibc
 case "$d_ctime_r" in
 "$define")
-       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
-       case "time" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
+       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
        case "$d_ctime_r_proto:$usethreads" in
        ":define")      d_ctime_r_proto=define
                set d_ctime_r_proto ctime_r $hdrs
@@ -10434,11 +10444,6 @@ eval $inlibc
 case "$d_drand48_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
-       case "stdlib" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_drand48_r_proto:$usethreads" in
        ":define")      d_drand48_r_proto=define
                set d_drand48_r_proto drand48_r $hdrs
@@ -10522,11 +10527,6 @@ eval $inlibc
 case "$d_endgrent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
-       case "grp" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_endgrent_r_proto:$usethreads" in
        ":define")      d_endgrent_r_proto=define
                set d_endgrent_r_proto endgrent_r $hdrs
@@ -10580,11 +10580,6 @@ eval $inlibc
 case "$d_endhostent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_endhostent_r_proto:$usethreads" in
        ":define")      d_endhostent_r_proto=define
                set d_endhostent_r_proto endhostent_r $hdrs
@@ -10634,11 +10629,6 @@ eval $inlibc
 case "$d_endnetent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_endnetent_r_proto:$usethreads" in
        ":define")      d_endnetent_r_proto=define
                set d_endnetent_r_proto endnetent_r $hdrs
@@ -10688,11 +10678,6 @@ eval $inlibc
 case "$d_endprotoent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_endprotoent_r_proto:$usethreads" in
        ":define")      d_endprotoent_r_proto=define
                set d_endprotoent_r_proto endprotoent_r $hdrs
@@ -10830,11 +10815,6 @@ eval $inlibc
 case "$d_endpwent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
-       case "pwd" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_endpwent_r_proto:$usethreads" in
        ":define")      d_endpwent_r_proto=define
                set d_endpwent_r_proto endpwent_r $hdrs
@@ -10884,11 +10864,6 @@ eval $inlibc
 case "$d_endservent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_endservent_r_proto:$usethreads" in
        ":define")      d_endservent_r_proto=define
                set d_endservent_r_proto endservent_r $hdrs
@@ -11565,11 +11540,6 @@ eval $inlibc
 case "$d_getgrent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
-       case "grp" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getgrent_r_proto:$usethreads" in
        ":define")      d_getgrent_r_proto=define
                set d_getgrent_r_proto getgrent_r $hdrs
@@ -11631,11 +11601,6 @@ eval $inlibc
 case "$d_getgrgid_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
-       case "grp" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getgrgid_r_proto:$usethreads" in
        ":define")      d_getgrgid_r_proto=define
                set d_getgrgid_r_proto getgrgid_r $hdrs
@@ -11689,11 +11654,6 @@ eval $inlibc
 case "$d_getgrnam_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
-       case "grp" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getgrnam_r_proto:$usethreads" in
        ":define")      d_getgrnam_r_proto=define
                set d_getgrnam_r_proto getgrnam_r $hdrs
@@ -11848,11 +11808,6 @@ eval $inlibc
 case "$d_gethostbyaddr_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_gethostbyaddr_r_proto:$usethreads" in
        ":define")      d_gethostbyaddr_r_proto=define
                set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
@@ -11930,11 +11885,6 @@ eval $inlibc
 case "$d_gethostbyname_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_gethostbyname_r_proto:$usethreads" in
        ":define")      d_gethostbyname_r_proto=define
                set d_gethostbyname_r_proto gethostbyname_r $hdrs
@@ -11984,11 +11934,6 @@ eval $inlibc
 case "$d_gethostent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_gethostent_r_proto:$usethreads" in
        ":define")      d_gethostent_r_proto=define
                set d_gethostent_r_proto gethostent_r $hdrs
@@ -12063,11 +12008,6 @@ eval $inlibc
 case "$d_getlogin_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
-       case "unistd" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getlogin_r_proto:$usethreads" in
        ":define")      d_getlogin_r_proto=define
                set d_getlogin_r_proto getlogin_r $hdrs
@@ -12141,11 +12081,6 @@ eval $inlibc
 case "$d_getnetbyaddr_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getnetbyaddr_r_proto:$usethreads" in
        ":define")      d_getnetbyaddr_r_proto=define
                set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
@@ -12211,11 +12146,6 @@ eval $inlibc
 case "$d_getnetbyname_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getnetbyname_r_proto:$usethreads" in
        ":define")      d_getnetbyname_r_proto=define
                set d_getnetbyname_r_proto getnetbyname_r $hdrs
@@ -12269,11 +12199,6 @@ eval $inlibc
 case "$d_getnetent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getnetent_r_proto:$usethreads" in
        ":define")      d_getnetent_r_proto=define
                set d_getnetent_r_proto getnetent_r $hdrs
@@ -12373,11 +12298,6 @@ eval $inlibc
 case "$d_getprotobyname_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getprotobyname_r_proto:$usethreads" in
        ":define")      d_getprotobyname_r_proto=define
                set d_getprotobyname_r_proto getprotobyname_r $hdrs
@@ -12427,11 +12347,6 @@ eval $inlibc
 case "$d_getprotobynumber_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getprotobynumber_r_proto:$usethreads" in
        ":define")      d_getprotobynumber_r_proto=define
                set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
@@ -12481,11 +12396,6 @@ eval $inlibc
 case "$d_getprotoent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getprotoent_r_proto:$usethreads" in
        ":define")      d_getprotoent_r_proto=define
                set d_getprotoent_r_proto getprotoent_r $hdrs
@@ -12552,11 +12462,6 @@ eval $inlibc
 case "$d_getpwent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
-       case "pwd" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getpwent_r_proto:$usethreads" in
        ":define")      d_getpwent_r_proto=define
                set d_getpwent_r_proto getpwent_r $hdrs
@@ -12618,11 +12523,6 @@ eval $inlibc
 case "$d_getpwnam_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
-       case "pwd" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getpwnam_r_proto:$usethreads" in
        ":define")      d_getpwnam_r_proto=define
                set d_getpwnam_r_proto getpwnam_r $hdrs
@@ -12676,11 +12576,6 @@ eval $inlibc
 case "$d_getpwuid_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
-       case "pwd" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getpwuid_r_proto:$usethreads" in
        ":define")      d_getpwuid_r_proto=define
                set d_getpwuid_r_proto getpwuid_r $hdrs
@@ -12747,11 +12642,6 @@ eval $inlibc
 case "$d_getservbyname_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getservbyname_r_proto:$usethreads" in
        ":define")      d_getservbyname_r_proto=define
                set d_getservbyname_r_proto getservbyname_r $hdrs
@@ -12801,11 +12691,6 @@ eval $inlibc
 case "$d_getservbyport_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getservbyport_r_proto:$usethreads" in
        ":define")      d_getservbyport_r_proto=define
                set d_getservbyport_r_proto getservbyport_r $hdrs
@@ -12855,11 +12740,6 @@ eval $inlibc
 case "$d_getservent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getservent_r_proto:$usethreads" in
        ":define")      d_getservent_r_proto=define
                set d_getservent_r_proto getservent_r $hdrs
@@ -12926,11 +12806,6 @@ eval $inlibc
 case "$d_getspnam_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
-       case "shadow" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_getspnam_r_proto:$usethreads" in
        ":define")      d_getspnam_r_proto=define
                set d_getspnam_r_proto getspnam_r $hdrs
@@ -12994,12 +12869,7 @@ set gmtime_r d_gmtime_r
 eval $inlibc
 case "$d_gmtime_r" in
 "$define")
-       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
-       case "time" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
+       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
        case "$d_gmtime_r_proto:$usethreads" in
        ":define")      d_gmtime_r_proto=define
                set d_gmtime_r_proto gmtime_r $hdrs
@@ -13239,12 +13109,7 @@ set localtime_r d_localtime_r
 eval $inlibc
 case "$d_localtime_r" in
 "$define")
-       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
-       case "time" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
+       hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
        case "$d_localtime_r_proto:$usethreads" in
        ":define")      d_localtime_r_proto=define
                set d_localtime_r_proto localtime_r $hdrs
@@ -13800,13 +13665,6 @@ $rm -f try.* try
 set d_off64_t
 eval $setvar
 
-: see if POSIX threads are available
-set pthread.h i_pthread
-eval $inhdr
-
-
-
-
 : how to create joinable pthreads
 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
        echo " "
@@ -14012,11 +13870,6 @@ eval $inlibc
 case "$d_random_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
-       case "stdlib" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_random_r_proto:$usethreads" in
        ":define")      d_random_r_proto=define
                set d_random_r_proto random_r $hdrs
@@ -14068,11 +13921,6 @@ eval $inlibc
 case "$d_readdir64_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
-       case "dirent" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_readdir64_r_proto:$usethreads" in
        ":define")      d_readdir64_r_proto=define
                set d_readdir64_r_proto readdir64_r $hdrs
@@ -14118,11 +13966,6 @@ eval $inlibc
 case "$d_readdir_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
-       case "dirent" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_readdir_r_proto:$usethreads" in
        ":define")      d_readdir_r_proto=define
                set d_readdir_r_proto readdir_r $hdrs
@@ -14672,11 +14515,6 @@ eval $inlibc
 case "$d_setgrent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
-       case "grp" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_setgrent_r_proto:$usethreads" in
        ":define")      d_setgrent_r_proto=define
                set d_setgrent_r_proto setgrent_r $hdrs
@@ -14726,11 +14564,6 @@ eval $inlibc
 case "$d_sethostent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_sethostent_r_proto:$usethreads" in
        ":define")      d_sethostent_r_proto=define
                set d_sethostent_r_proto sethostent_r $hdrs
@@ -14792,11 +14625,6 @@ eval $inlibc
 case "$d_setlocale_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
-       case "locale" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_setlocale_r_proto:$usethreads" in
        ":define")      d_setlocale_r_proto=define
                set d_setlocale_r_proto setlocale_r $hdrs
@@ -14842,11 +14670,6 @@ eval $inlibc
 case "$d_setnetent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_setnetent_r_proto:$usethreads" in
        ":define")      d_setnetent_r_proto=define
                set d_setnetent_r_proto setnetent_r $hdrs
@@ -14912,11 +14735,6 @@ eval $inlibc
 case "$d_setprotoent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_setprotoent_r_proto:$usethreads" in
        ":define")      d_setprotoent_r_proto=define
                set d_setprotoent_r_proto setprotoent_r $hdrs
@@ -14966,11 +14784,6 @@ eval $inlibc
 case "$d_setpwent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
-       case "pwd" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_setpwent_r_proto:$usethreads" in
        ":define")      d_setpwent_r_proto=define
                set d_setpwent_r_proto setpwent_r $hdrs
@@ -15040,11 +14853,6 @@ eval $inlibc
 case "$d_setservent_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
-       case "netdb" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_setservent_r_proto:$usethreads" in
        ":define")      d_setservent_r_proto=define
                set d_setservent_r_proto setservent_r $hdrs
@@ -15345,11 +15153,6 @@ eval $inlibc
 case "$d_srand48_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
-       case "stdlib" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_srand48_r_proto:$usethreads" in
        ":define")      d_srand48_r_proto=define
                set d_srand48_r_proto srand48_r $hdrs
@@ -15391,11 +15194,6 @@ eval $inlibc
 case "$d_srandom_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
-       case "stdlib" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_srandom_r_proto:$usethreads" in
        ":define")      d_srandom_r_proto=define
                set d_srandom_r_proto srandom_r $hdrs
@@ -15836,11 +15634,6 @@ eval $inlibc
 case "$d_strerror_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
-       case "string" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_strerror_r_proto:$usethreads" in
        ":define")      d_strerror_r_proto=define
                set d_strerror_r_proto strerror_r $hdrs
@@ -16184,6 +15977,24 @@ echo " "
 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
 eval $hasproto
 
+: see if time exists
+echo " "
+if test "X$d_time" = X -o X"$timetype" = X; then
+    if set time val -f d_time; eval $csym; $val; then
+               echo 'time() found.' >&4
+               val="$define"
+               rp="What is the type returned by time() on this system?"
+               set time_t timetype long stdio.h sys/types.h
+               eval $typedef_ask
+    else
+               echo 'time() not found, hope that will do.' >&4
+               val="$undef"
+               timetype='int';
+    fi
+    set d_time
+    eval $setvar
+fi
+
 : see if this is a sys/times.h system
 set sys/times.h i_systimes
 eval $inhdr
@@ -16212,11 +16023,6 @@ eval $inlibc
 case "$d_tmpnam_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h "
-       case "stdio" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_tmpnam_r_proto:$usethreads" in
        ":define")      d_tmpnam_r_proto=define
                set d_tmpnam_r_proto tmpnam_r $hdrs
@@ -16262,11 +16068,6 @@ eval $inlibc
 case "$d_ttyname_r" in
 "$define")
        hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
-       case "unistd" in
-       time)
-               hdrs="$hdrs $i_systime sys/time.h"
-               ;;
-       esac
        case "$d_ttyname_r_proto:$usethreads" in
        ":define")      d_ttyname_r_proto=define
                set d_ttyname_r_proto ttyname_r $hdrs
@@ -16329,7 +16130,7 @@ case "$multiarch" in
 ''|[nN]*) multiarch="$undef" ;;
 esac
 
-: check for ordering of bytes in a long
+: check for ordering of bytes in a UV
 echo " "
 case "$usecrosscompile$multiarch" in
 *$define*)
@@ -16352,21 +16153,23 @@ an Alpha will report 12345678. If the test program works the default is
 probably right.
 I'm now running the test program...
 EOM
-               $cat >try.c <<'EOCP'
+               $cat >try.c <<EOCP
 #include <stdio.h>
+#include <sys/types.h>
+typedef $uvtype UV;
 int main()
 {
        int i;
        union {
-               unsigned long l;
-               char c[sizeof(long)];
+               UV l;
+               char c[$uvsize];
        } u;
 
-       if (sizeof(long) > 4)
-               u.l = (0x08070605L << 32) | 0x04030201L;
+       if ($uvsize > 4)
+               u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
        else
-               u.l = 0x04030201L;
-       for (i = 0; i < sizeof(long); i++)
+               u.l = (UV)0x04030201;
+       for (i = 0; i < $uvsize; i++)
                printf("%c", u.c[i]+'0');
        printf("\n");
        exit(0);
@@ -16393,7 +16196,7 @@ EOM
                fi
                case "$xxx_prompt" in
                y)
-                       rp="What is the order of bytes in a long?"
+                       rp="What is the order of bytes in $uvtype?"
                        . ./myread
                        byteorder="$ans"
                        ;;
@@ -18736,24 +18539,6 @@ $rm -f stdioh
 
 
 
-: see if time exists
-echo " "
-if test "X$d_time" = X -o X"$timetype" = X; then
-    if set time val -f d_time; eval $csym; $val; then
-               echo 'time() found.' >&4
-               val="$define"
-               rp="What is the type returned by time() on this system?"
-               set time_t timetype long stdio.h sys/types.h
-               eval $typedef_ask
-    else
-               echo 'time() not found, hope that will do.' >&4
-               val="$undef"
-               timetype='int';
-    fi
-    set d_time
-    eval $setvar
-fi
-
 : see what type uids are declared as in the kernel
 echo " "
 echo "Looking for the type for user ids returned by getuid()."
@@ -19453,9 +19238,7 @@ 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.
-# Encode::XX need explicit mentions for the same reason.
-# --jhi 2002-03-04
-known_extensions="$known_extensions threads/shared Encode/CN Encode/JP Encode/KR Encode/TW"
+known_extensions="$known_extensions threads/shared"
 set X $nonxs_extensions
 shift
 nonxs_extensions="$*"
@@ -19546,12 +19329,18 @@ for xxx in $known_extensions ; do
                esac
                ;;
        threads|threads/shared)
-                case "$usethreads" in
-                true|$define|y)
-                        case "$useithreads" in
-                        $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
-                        esac
-               esac
+               # threads and threads::shared are special cases.
+               # To stop people from asking "Perl 5.8.0 was supposed
+               # to have this new fancy threads implementation but my
+               # perl doesn't have it" and from people trying to
+               # (re)install the threads module using CPAN.pm and
+               # CPAN.pm then offering to reinstall Perl 5.8.0,
+               # the threads.pm and threads/shared.pm will always be
+               # there, croaking informatively ("you need to rebuild
+               # all of Perl with threads, sorry") when threads haven't
+               # been compiled in.
+               # --jhi
+               avail_ext="$avail_ext $xxx"
                ;;
        IPC/SysV|ipc/sysv)
                : XXX Do we need a useipcsysv variable here
@@ -19689,6 +19478,20 @@ EOM
        esac
        ;;
 esac
+#        
+# Encode is a special case.  If we are building Encode as a static
+# extension, we need to explicitly list its subextensions as well.
+# For other nested extensions, this is handled automatically by
+# the appropriate Makefile.PL.
+case " $static_ext " in
+       *" Encode "*) # Add the subextensions of Encode
+       cd "$rsrc/ext"
+       for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
+               static_ext="$static_ext Encode/$xxx"
+       done
+       cd "$tdir"
+       ;;
+esac
 
 set X $dynamic_ext $static_ext $nonxs_ext
 shift