perldoc pod update
[p5sagit/p5-mst-13.2.git] / Configure
index c2ca701..450c8a6 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 Fri Sep 11 21:59:48 EET DST 1998 [metaconfig 3.0 PL70]
+# Generated on Wed Oct 14 17:00:29 EET DST 1998 [metaconfig 3.0 PL70]
 # (with additional metaconfig patches by jhi@iki.fi)
 
 cat >/tmp/c1$$ <<EOF
@@ -317,6 +317,7 @@ d_dlopen=''
 d_dlsymun=''
 d_dosuid=''
 d_suidsafe=''
+d_drand48proto=''
 d_dup2=''
 d_eaccess=''
 d_endgrent=''
@@ -410,6 +411,7 @@ d_poll=''
 d_portable=''
 d_pthread_yield=''
 d_sched_yield=''
+sched_yield=''
 d_pthreads_created_joinable=''
 d_readdir=''
 d_rewinddir=''
@@ -638,6 +640,7 @@ libpth=''
 loclibpth=''
 plibpth=''
 xlibpth=''
+ignore_versioned_solibs=''
 libs=''
 lns=''
 lseeksize=''
@@ -698,8 +701,13 @@ installprivlib=''
 privlib=''
 privlibexp=''
 prototype=''
+pthread_setdetachstate_pointer=''
 ptrsize=''
+drand01=''
 randbits=''
+randfunc=''
+randseedtype=''
+seedfunc=''
 installscript=''
 scriptdir=''
 scriptdirexp=''
@@ -737,7 +745,9 @@ d_tmpfile64=''
 sysman=''
 trnl=''
 uidtype=''
+archname64=''
 use64bits=''
+usemultiplicity=''
 nm_opt=''
 nm_so_opt=''
 runnm=''
@@ -786,8 +796,6 @@ glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
 : machines, like the mips.  Usually, it should be empty.
 plibpth=''
 
-: default library list
-libswanted=''
 : 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"
@@ -866,6 +874,9 @@ _exe=''
 : Extra object files, if any, needed on this platform.
 archobjs=''
 groupstype=''
+: default library list
+libswanted=''
+ignore_versioned_solibs=''
 : full support for void wanted by default
 defvoidused=15
 
@@ -873,6 +884,7 @@ defvoidused=15
 useposix=true
 : set useopcode=false in your hint file to disable the Opcode extension.
 useopcode=true
+: set usemultiplicity on the Configure command line to enable multiplicity.
 : set usethreads on the Configure command line to enable threads.
 : List of libraries we want.
 : If anyone needs -lnet, put it in a hint file.
@@ -1257,7 +1269,7 @@ cat >extract <<'EOS'
 CONFIG=true
 echo "Doing variable substitutions on .SH files..."
 if test -f $src/MANIFEST; then
-       set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH'`
+       set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
 else
        echo "(Looking for .SH files under the source directory.)"
        set x `(cd $src; find . -name "*.SH" -print)`
@@ -1687,7 +1699,6 @@ comm
 cp
 echo
 expr
-find
 grep
 ls
 make
@@ -1709,14 +1720,11 @@ date
 egrep
 gzip
 less
-line
 ln
 more
 nm
 nroff
-perl
 pg
-sendmail
 tee
 test
 uname
@@ -2009,12 +2017,12 @@ EOM
                        osvers="$2.$3"
                fi
        fi
-       $test -f /sys/posix.dll &&
-               $test -f /usr/bin/what &&
-               set X `/usr/bin/what /sys/posix.dll` &&
-               $test "$3" = UWIN &&
-               osname=uwin &&
-               osvers="$5"
+       $test -f /sys/posix.dll &&
+              $test -f /usr/bin/what &&
+              set X `/usr/bin/what /sys/posix.dll` &&
+              $test "$3" = UWIN &&
+              osname=uwin &&
+              osvers="$5"
        if $test -f $uname; then
                set X $myuname
                shift
@@ -2461,6 +2469,54 @@ esac
 set d_oldpthreads
 eval $setvar
 
+cat <<EOM
+
+Perl can be built so that multiple Perl interpreters can coexist
+within the same Perl executable.  To do so, Configure must be run with
+-Dusemultiplicity.
+
+Normally you do not need this and you should answer no.
+
+EOM
+case "$usemultiplicity" in
+$define|true|[yY]*)    dflt='y';;
+*) dflt='n';;
+esac
+rp='Build Perl for multiplicity?'
+. ./myread
+case "$ans" in
+y|Y)   val="$define" ;;     
+*)      val="$undef" ;;
+esac
+set usemultiplicity
+eval $setvar 
+
+cat <<EOM
+
+Perl can be built to take advantage of explicit 64-bit interfaces,
+on some systems.  To do so, Configure must be run with -Duse64bits.
+
+If this doesn't make any sense to you, just accept the default 'n'.
+EOM
+case "$use64bits" in
+$define|true|[yY]*)    dflt='y';;
+*) dflt='n';;
+esac
+rp='Try to use explicit 64-bit interfaces, if available?'
+. ./myread
+case "$ans" in
+y|Y) 
+       val="$define"
+       ;;     
+*)      
+       val="$undef"
+       ;;
+esac
+set use64bits
+eval $setvar
+
+archname64=''
+
 : determine the architecture name
 echo " "
 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
@@ -2483,26 +2539,56 @@ case "$myarchname" in
        archname=''
        ;;
 esac
+myarchname="$tarch"
 case "$archname" in
 '') dflt="$tarch";;
 *) dflt="$archname";;
 esac
 rp='What is your architecture name'
 . ./myread
+archname="$ans"
 case "$usethreads" in
-$define)  echo "Threads selected." >&4
-          case "$ans" in
-          *-thread) echo "...and architecture name already ends in -thread." >&4
-                    archname="$ans"
-                    ;;
-          *)        archname="$ans-thread"
-                    echo "...setting architecture name to $archname." >&4
-                    ;;
-          esac
-          ;;
-*)        archname="$ans" ;;
+$define)
+       echo "Threads selected." >&4
+       case "$archname" in
+        *-thread*) echo "...and architecture name already has -thread." >&4
+                ;;
+        *)      archname="$archname-thread"
+                echo "...setting architecture name to $archname." >&4
+                ;;
+        esac
+       ;;
 esac
-myarchname="$tarch"
+case "$usemultiplicity" in
+$define)
+       echo "Multiplicity selected." >&4
+       case "$archname" in
+        *-multi*) echo "...and architecture name already has -multi." >&4
+                ;;
+        *)      archname="$archname-multi"
+                echo "...setting architecture name to $archname." >&4
+                ;;
+        esac
+       ;;
+esac
+case "$use64bits" in
+$define)
+       echo "Explicit 64-bitness selected." >&4
+       case "$archname64" in
+       '')
+               ;;
+       *)
+               case "$archname" in
+               *-$archname64*) echo "...and architecture name already has $archname64." >&4
+                       ;;
+               *)      archname="$archname-$archname64"
+                       echo "...setting architecture name to $archname." >&4
+                       ;;
+               esac
+               ;;
+       esac
+esac
+
 : is AFS running?
 echo " "
 case "$afs" in
@@ -3489,7 +3575,11 @@ cat <<'EOT' >testcpp.c
 ABC.XYZ
 EOT
 cd ..
-echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
+if test ! -f cppstdin; then
+       echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
+else
+       echo "Keeping your $hint cppstdin wrapper."
+fi
 chmod 755 cppstdin
 wrapper=`pwd`/cppstdin
 ok='false'
@@ -3740,7 +3830,8 @@ case "$libswanted" in
 esac
 for thislib in $libswanted; do
        
-       if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
+       if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
+               $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
                echo "Found -l$thislib (shared)."
                case " $dflt " in
                *"-l$thislib "*);;
@@ -6001,30 +6092,6 @@ fi
 
 cat <<EOM
 
-Perl can be built to take advantage of 64-bit interfaces, on some systems.
-To do so, Configure must be run with -Dusethreads.
-
-If this doesn't make any sense to you, just accept the default 'n'.
-EOM
-case "$use64bits" in
-$define|true|[yY]*)    dflt='y';;
-*) dflt='n';;
-esac
-rp='Try to use 64-bit APIs, if available?'
-. ./myread
-case "$ans" in
-y|Y) 
-       val="$define"
-       ;;     
-*)      
-       val="$undef"
-       ;;
-esac
-set use64bits
-eval $setvar 
-
-cat <<EOM
-
 Previous version of $package used the standard IO mechanisms as defined
 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
@@ -6876,17 +6943,14 @@ while $test $# -ge 2; do
     shift 2;
 done > try.c;
 echo "int main () { struct $struct foo; foo.$field = 0; }" >> try.c;
-set try;
-if eval $cc $optimize $ccflags -c try.c; then
-       echo "Your struct $struct has field $field."; >&4
+if eval $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
        val="$define";
 else
-       echo "Your struct $struct does not have field $field."; >&4
        val="$undef";
 fi;
 set $varname;
 eval $setvar;
-$rm -f try.c try'
+$rm -f try.c try.o'
 
 
 if $test X"$use64bits" = X"$define"; then
@@ -6983,15 +7047,34 @@ EOCP
 
        : check for struct flock64
        echo " "
+       echo "Checking to see if your system supports struct flock64..." >&4
        if $h_fcntl; then
                set d_flock64s flock64 l_len define fcntl.h
                eval $hasfield
+       else
+               val="$undef"
+               set d_flock64s
+               eval $setvar
        fi
+       case "$d_flock64s" in
+       "$define")      echo "Yup, it does." >&4
+                       ;;
+       *)              echo "Nope, it doesn't." >&4
+                       ;;
+       esac
 
        : check for struct dirent64
        echo " "
+       echo "Checking to see if your system supports struct dirent64..." >&4
        set d_dirent64s dirent64 d_off $i_dirent dirent.h
        eval $hasfield
+       case "$d_flock64s" in
+       "$define")      echo "Yup, it does." >&4
+                       ;;
+       *)              echo "Nope, it doesn't." >&4
+                       ;;
+       esac
+
 else
        val="$undef"
        for xxx in d_fstat64 d_ftruncate64 d_lockf64 d_lseek64 d_lstat64 d_open64 d_opendir64 d_readdir64 d_seekdir64 d_stat64 d_telldir64 d_truncate64 d_off64t d_ino64t d_flock64s d_dirent64s
@@ -7117,6 +7200,30 @@ $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
 set d_dlsymun
 eval $setvar
 
+hasproto='varname=$1; func=$2; shift; shift;
+while $test $# -ge 2; do
+       case "$1" in
+       $define) echo "#include <$2>";;
+       esac ;
+    shift 2;
+done > try.c;
+$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
+if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
+       echo "$func() prototype found.";
+       val="$define";
+else
+       echo "$func() prototype NOT found.";
+       val="$undef";
+fi;
+set $varname;
+eval $setvar;
+$rm -f try.c tryout.c'
+
+: see if prototype for drand48 is available
+echo " "
+set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
+eval $hasproto
+
 : see if dup2 exists
 set dup2 d_dup2
 eval $inlibc
@@ -7482,25 +7589,6 @@ eval $inlibc
 set gethostent d_gethent
 eval $inlibc
 
-hasproto='varname=$1; func=$2; shift; shift;
-while $test $# -ge 2; do
-       case "$1" in
-       $define) echo "#include <$2>";;
-       esac ;
-    shift 2;
-done > try.c;
-$cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
-if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
-       echo "$func() prototype found.";
-       val="$define";
-else
-       echo "$func() prototype NOT found.";
-       val="$undef";
-fi;
-set $varname;
-eval $setvar;
-$rm -f try.c tryout.c'
-
 : see if this is a netdb.h system
 set netdb.h i_netdb
 eval $inhdr
@@ -7740,9 +7828,11 @@ eval $inlibc
 set inttypes.h i_inttypes
 eval $inhdr
 : check for int64_t
-echo " "
-echo $n "Checking to see if your system supports int64_t...$c" >&4
-$cat >try.c <<EOCP
+case "$use64bits" in
+"$define" )
+       echo " "
+       echo $n "Checking to see if your system supports int64_t...$c" >&4
+       $cat >try.c <<EOCP
 #include <sys/types.h>
 #$i_inttypes I_INTTYPES
 #ifdef I_INTTYPES
@@ -7750,14 +7840,18 @@ $cat >try.c <<EOCP
 #endif
 int64_t foo() { int64_t x; x = 7; return x; }'
 EOCP
-if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
-       val="$define"
-       echo " Yup, it does." >&4
-else
-       val="$undef"
-       echo " Nope, it doesn't." >&4
-fi
-$rm -f try.*
+       if $cc $optimize $ccflags -c try.c >/dev/null 2>&1; then
+               val="$define"
+               echo " Yup, it does." >&4
+       else
+               val="$undef"
+               echo " Nope, it doesn't." >&4
+       fi
+       $rm -f try.*
+       ;;
+*)     val="$undef"
+       ;;
+esac
 set d_int64t
 eval $setvar
 
@@ -7835,6 +7929,33 @@ eval $inlibc
 set lockf d_lockf
 eval $inlibc
 
+: check for length of double
+echo " "
+case "$doublesize" in
+'')
+       $echo $n "Checking to see how big your double precision numbers are...$c" >&4
+       $cat >try.c <<'EOCP'
+#include <stdio.h>
+main()
+{
+       printf("%d\n", sizeof(double));
+}
+EOCP
+       set try
+       if eval $compile_ok; then
+               doublesize=`./try`
+               $echo " $doublesize bytes." >&4
+       else
+               dflt='8'
+               echo "(I can't seem to compile the test program.  Guessing...)"
+               rp="What is the size of a double precision number (in bytes)?"
+               . ./myread
+               doublesize="$ans"
+       fi
+       ;;
+esac
+$rm -f try.c try
+
 : check for long doubles
 echo " "
 echo $n "Checking to see if your system supports long doubles...$c" >&4
@@ -7874,6 +7995,9 @@ EOCP
                . ./myread
                longdblsize="$ans"
        fi
+       if $test "X$doublesize" = "X$longdblsize"; then
+               echo "(That isn't any different from an ordinary double.)"
+       fi      
        ;;
 esac
 $rm -f try.c try
@@ -7917,6 +8041,9 @@ EOCP
                . ./myread
                longlongsize="$ans"
        fi
+       if $test "X$longsize" = "X$longlongsize"; then
+               echo "(That isn't any different from an ordinary long.)"
+       fi      
        ;;
 esac
 $rm -f try.c try
@@ -8033,42 +8160,6 @@ eval $inlibc
 set poll d_poll
 eval $inlibc
 
-
-: see whether the various POSIXish _yields exist within given cccmd
-$cat >try.c <<EOP
-#include <pthread.h>
-main() {
-       YIELD();
-       exit(0);
-}
-EOP
-: see if pthread_yield exists within given cccmd,
-: if we do not usethreads this may well end up undef.
-set try -DYIELD=pthread_yield
-if eval $compile; then
-    val="$define"
-    echo 'pthread_yield() found.' >&4
-else
-    val="$undef"
-    echo 'pthread_yield() NOT found.' >&4
-fi
-set d_pthread_yield
-eval $setvar
-
-: see if sched_yield exists within given cccmd,
-: if we do not usethreads this may well end up undef.
-set try -DYIELD=sched_yield
-if eval $compile; then
-    val="$define"
-    echo 'sched_yield() found.' >&4
-else
-    val="$undef"
-    echo 'sched_yield() NOT found.' >&4
-fi
-set d_sched_yield
-eval $setvar
-$rm -f try try.*
-
 : test whether pthreads are created in joinable -- aka undetached -- state
 if test "X$usethreads" = "X$define"; then
        echo $n "Checking whether pthreads are created joinable. $c" >&4 
@@ -8517,7 +8608,7 @@ else
     echo "You do not have union semun in <sys/sem.h>." >&4
     val="$undef"
 fi
-$rm -f try try.c
+$rm -f try try.c try.h
 set d_union_semun
 eval $setvar
 
@@ -8526,6 +8617,31 @@ case "$d_sem" in
 $define)
     : see whether semctl IPC_STAT can use union semun
     echo " "
+    $cat > try.h <<END
+#ifndef S_IRUSR
+#   ifdef S_IREAD
+#      define S_IRUSR S_IREAD
+#      define S_IWUSR S_IWRITE
+#      define S_IXUSR S_IEXEC
+#   else
+#      define S_IRUSR 0400
+#      define S_IWUSR 0200
+#      define S_IXUSR 0100
+#   endif
+#   define S_IRGRP (S_IRUSR>>3)
+#   define S_IWGRP (S_IWUSR>>3)
+#   define S_IXGRP (S_IXUSR>>3)
+#   define S_IROTH (S_IRUSR>>6)
+#   define S_IWOTH (S_IWUSR>>6)
+#   define S_IXOTH (S_IXUSR>>6)
+#endif
+#ifndef S_IRWXU
+#   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
+#   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
+#   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
+#endif
+END
+
     $cat > try.c <<END
 #include <sys/types.h>
 #include <sys/ipc.h>
@@ -8533,6 +8649,7 @@ $define)
 #include <sys/stat.h>
 #include <stdio.h>
 #include <errno.h>
+#include "try.h"
 #ifndef errno
 extern int errno;
 #endif
@@ -8598,6 +8715,7 @@ END
 #include <sys/ipc.h>
 #include <sys/sem.h>
 #include <sys/stat.h>
+#include "try.h"
 #include <stdio.h>
 #include <errno.h>
 #ifndef errno
@@ -8646,6 +8764,7 @@ END
     *)  echo "You cannot use struct semid_ds * for semctl IPC_STAT." >&4
         ;;
     esac
+    $rm -f try.h
     ;;
 *)  val="$undef"
 
@@ -9919,32 +10038,135 @@ EOM
 esac
 $rm -f try.* .out
 
-: check for length of double
+
+: How can we generate normalized random numbers ?
 echo " "
-case "$doublesize" in
+case "$randfunc" in
 '')
-       $echo $n "Checking to see how big your double precision numbers are...$c" >&4
-       $cat >try.c <<'EOCP'
+       if set drand48 val -f; eval $csym; $val; then
+               dflt="drand48"
+               echo "Good, found drand48()." >&4
+       elif set random val -f; eval $csym; $val; then
+               dflt="random"
+               echo "OK, found random()." >&4
+       else
+               dflt="rand"
+               echo "Yick, looks like I have to use rand()." >&4
+       fi
+       echo " "
+       ;;
+*)
+       dflt="$randfunc"
+       ;;
+esac
+cont=true
+
+case "$ccflags" in
+*-Dmy_rand=*|*-Dmy_srand=*)
+       echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
+       ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
+       ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
+       ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
+       ;;
+esac
+
+while $test "$cont"; do
+       rp="Use which function to generate random numbers?"
+       . ./myread
+       if $test "$ans" = "$dflt"; then
+               : null
+       else
+               randbits=''
+       fi
+       randfunc="$ans"
+       if set $ans val -f; eval $csym; $val; then
+               cont=''
+       else
+               dflt=n
+               rp="Function $ans does not exists. Use that name anyway?"
+               . ./myread
+               dflt=rand
+               case "$ans" in
+                       [yY]*) cont='';;
+               esac
+       fi
+       case "$cont" in
+       '')
+               case "$randfunc" in
+               drand48)
+                       drand01="drand48()"
+                       seedfunc="srand48"
+                       randbits=48
+                       randseedtype=long
+                       ;;
+               rand|random)
+                       case "$randbits" in
+                       '')
+echo "Checking to see how many bits your $randfunc() function produces..." >&4
+                               $cat >try.c <<EOCP
+#$i_unistd I_UNISTD
+#$i_stdlib I_STDLIB
 #include <stdio.h>
+#ifdef I_UNISTD
+#  include <unistd.h>
+#endif
+#ifdef I_STDLIB
+#  include <stdlib.h>
+#endif
 main()
 {
-       printf("%d\n", sizeof(double));
+       register int i;
+       register unsigned long tmp;
+       register unsigned long max = 0L;
+
+       for (i = 1000; i; i--) {
+               tmp = (unsigned long) $randfunc();
+               if (tmp > max) max = tmp;
+       }
+       for (i = 0; max; i++)
+               max /= 2;
+       printf("%d\n",i);
 }
 EOCP
-       set try
-       if eval $compile_ok; then
-               doublesize=`./try`
-               $echo " $doublesize bytes." >&4
-       else
-               dflt='8'
-               echo "(I can't seem to compile the test program.  Guessing...)"
-               rp="What is the size of a double precision number (in bytes)?"
-               . ./myread
-               doublesize="$ans"
-       fi
-       ;;
-esac
-$rm -f try.c try
+                               set try
+                               if eval $compile_ok; then
+                                       dflt=`try`
+                               else
+                                       dflt='?'
+                                       echo "(I can't seem to compile the test program...)"
+                               fi
+                               ;;
+                       *)
+                               dflt="$randbits"
+                               ;;
+                       esac
+                       rp="How many bits does your $randfunc() function produce?"
+                       . ./myread
+                       randbits="$ans"
+                       $rm -f try.c try
+                       drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
+                       seedfunc="s$randfunc"
+                       randseedtype=unsigned
+                       ;;
+               *)
+                       dflt="31"
+                       rp="How many bits does your $randfunc() function produce?"
+                       . ./myread
+                       randbits="$ans"
+                       seedfunc="s$randfunc"
+                       drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
+                       if set $seedfunc val -f; eval $csym; $val; then
+                               echo "(Using $seedfunc() to seed random generator)"
+                       else
+                               echo "(Warning: no $seedfunc() to seed random generator)"
+                               seedfunc=rand
+                       fi
+                       randseedtype=unsigned
+                       ;;
+               esac
+               ;;
+       esac
+done
 
 echo " "
 echo "Determining whether or not we are on an EBCDIC system..." >&4
@@ -10303,6 +10525,37 @@ rp="What is the type of process ids on this system?"
 set pid_t pidtype int stdio.h sys/types.h
 eval $typedef_ask
 
+
+: see whether the state of pthread_attr_setdetachstate is an int pointer
+$cat >try.c <<EOP
+#include <pthread.h>
+main() {
+    pthread_attr_t attr;
+    int state = 0;     
+    pthread_attr_init(&attr);
+#ifdef POINTER
+    pthread_attr_setdetachstate(&attr, &state);
+#else
+    pthread_attr_setdetachstate(&attr, state);
+#endif
+}
+EOP
+set try
+if eval $compile; then
+    val="$undef"
+else
+    set try -DPOINTER
+    if eval $compile; then
+        val="$define"
+    else
+        val="$undef"
+    fi
+fi
+set pthread_setdetachstate_pointer
+eval $setvar
+
+$rm -f try try.*
+
 : check for length of pointer
 echo " "
 case "$ptrsize" in
@@ -10336,55 +10589,6 @@ EOCP
 esac
 $rm -f try.c try
 
-: check for size of random number generator
-echo " "
-case "$randbits" in
-'')
-       echo "Checking to see how many bits your rand function produces..." >&4
-       $cat >try.c <<EOCP
-#$i_unistd I_UNISTD
-#$i_stdlib I_STDLIB
-#include <stdio.h>
-#ifdef I_UNISTD
-#  include <unistd.h>
-#endif
-#ifdef I_STDLIB
-#  include <stdlib.h>
-#endif
-EOCP
-       $cat >>try.c <<'EOCP'
-main()
-{
-       register int i;
-       register unsigned long tmp;
-       register unsigned long max = 0L;
-
-       for (i = 1000; i; i--) {
-               tmp = (unsigned long)rand();
-               if (tmp > max) max = tmp;
-       }
-       for (i = 0; max; i++)
-               max /= 2;
-       printf("%d\n",i);
-}
-EOCP
-       set try
-       if eval $compile_ok; then
-               dflt=`./try$_exe`
-       else
-               dflt='?'
-               echo "(I can't seem to compile the test program...)"
-       fi
-       ;;
-*)
-       dflt="$randbits"
-       ;;
-esac
-rp='How many bits does your rand() function produce?'
-. ./myread
-randbits="$ans"
-$rm -f try.* try
-
 : see if ar generates random libraries by itself
 echo " "
 echo "Checking how to generate random libraries on your machine..." >&4
@@ -10428,6 +10632,69 @@ else
 fi
 $rm -f foo* bar* 
 
+
+: see whether the various POSIXish _yields exist within given cccmd
+$cat >try.c <<EOP
+#include <pthread.h>
+#include <stdio.h>
+main() {
+#ifdef SCHED_YIELD
+       sched_yield();
+#else
+#ifdef PTHREAD_YIELD
+       pthread_yield();
+#else
+#ifdef PTHREAD_YIELD_NULL
+       pthread_yield(NULL);
+#endif
+#endif
+#endif
+}
+EOP
+: see if sched_yield exists
+set try -DSCHED_YIELD
+if eval $compile; then
+    val="$define"
+    echo 'sched_yield() found.' >&4
+    sched_yield='sched_yield()'
+else
+    val="$undef"
+    echo 'sched_yield() NOT found.' >&4
+fi
+set d_sched_yield
+eval $setvar
+
+: see if pthread_yield exists
+set try -DPTHREAD_YIELD
+if eval $compile; then
+    val="$define"
+    case "$sched_yield" in
+    '') sched_yield='pthread_yield()' ;;
+    esac
+else
+    set try -DPTHREAD_YIELD_NULL
+    if eval $compile; then
+       val="$define"
+       case "$sched_yield" in
+       '') sched_yield='pthread_yield(NULL)' ;;
+       esac
+    else
+       val="$undef"
+    fi
+fi
+case "$val" in
+$define) echo 'pthread_yield() found.' >&4     ;;
+*)      echo 'pthread_yield() NOT found.' >&4  ;;
+esac
+set d_pthread_yield
+eval $setvar
+
+case "$sched_yield" in
+'') sched_yield=undef ;;
+esac
+
+$rm -f try try.*
+
 : see if sys/select.h has to be included
 set sys/select.h i_sysselct
 eval $inhdr
@@ -10604,8 +10871,8 @@ EOM
                : The first arg can be int, unsigned, or size_t
                : The last arg may or may not be 'const'
                val=''
-               for xxx in 'fd_set *' 'int *'; do
-                       for nfd in 'int' 'size_t' 'unsigned' ; do
+               for xxx in 'fd_set *' 'int *' 'void *'; do
+                       for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
                                for tmo in 'struct timeval *' 'const struct timeval *'; do
                                        case "$val" in
                                        '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
@@ -10643,7 +10910,7 @@ case "$selectminbits" in
        $define)
                $cat <<EOM
 
-Checking to see how on how many bits at a time your select() operates...
+Checking to see on how many bits at a time your select() operates...
 EOM
                $cat >try.c <<EOCP
 #include <sys/types.h>
@@ -10667,13 +10934,13 @@ EOM
 #include <sys/select.h>
 #endif
 #include <stdio.h>
-#define S sizeof($selecttype)
+$selecttype b;
+#define S sizeof(*(b))
 #define MINBITS        64
 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
 #define NBITS  (NBYTES * 8)
 int main() {
     char s[NBYTES];
-    $selecttype b;
     struct timeval t;
     int i;
     FILE* fp;
@@ -10700,7 +10967,18 @@ EOCP
                set try
                if eval $compile_ok; then
                        selectminbits=`./try`
-                       echo "Your select() operates on $selectminbits bits at a time." >&4
+                       case "$selectminbits" in
+                       '')     cat >&4 <<EOM
+Cannot figure out on how many bits at a time your select() operates.
+I'll play safe and guess it is 32 bits.
+EOM
+                               selectminbits=32
+                               bits="32 bits"
+                               ;;
+                       1)      bits="1 bit" ;;
+                       *)      bits="$selectminbits bits" ;;
+                       esac
+                       echo "Your select() operates on $bits at a time." >&4
                else
                        rp='What is the minimum number of bits your select() operates on?'
                        case "$byteorder" in
@@ -11463,7 +11741,7 @@ set stddef.h i_stddef
 eval $inhdr
 
 : see if sys/access.h is available
-set sysaccess.h i_sysaccess
+set sys/access.h i_sysaccess
 eval $inhdr
 
 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
@@ -11496,7 +11774,7 @@ set sys/resource.h i_sysresrc
 eval $inhdr
 
 : see if sys/security.h is available
-set syssecrt.h i_syssecrt
+set sys/security.h i_syssecrt
 eval $inhdr
 
 : see if this is a sys/un.h system
@@ -11865,6 +12143,7 @@ apiversion='$apiversion'
 ar='$ar'
 archlib='$archlib'
 archlibexp='$archlibexp'
+archname64='$archname64'
 archname='$archname'
 archobjs='$archobjs'
 awk='$awk'
@@ -11937,6 +12216,7 @@ d_dlerror='$d_dlerror'
 d_dlopen='$d_dlopen'
 d_dlsymun='$d_dlsymun'
 d_dosuid='$d_dosuid'
+d_drand48proto='$d_drand48proto'
 d_dup2='$d_dup2'
 d_eaccess='$d_eaccess'
 d_endgrent='$d_endgrent'
@@ -12169,6 +12449,7 @@ direntrytype='$direntrytype'
 dlext='$dlext'
 dlsrc='$dlsrc'
 doublesize='$doublesize'
+drand01='$drand01'
 dynamic_ext='$dynamic_ext'
 eagain='$eagain'
 ebcdic='$ebcdic'
@@ -12255,6 +12536,7 @@ i_values='$i_values'
 i_varargs='$i_varargs'
 i_varhdr='$i_varhdr'
 i_vfork='$i_vfork'
+ignore_versioned_solibs='$ignore_versioned_solibs'
 incpath='$incpath'
 inews='$inews'
 installarchlib='$installarchlib'
@@ -12354,16 +12636,21 @@ prefixexp='$prefixexp'
 privlib='$privlib'
 privlibexp='$privlibexp'
 prototype='$prototype'
+pthread_setdetachstate_pointer='$pthread_setdetachstate_pointer'
 ptrsize='$ptrsize'
 randbits='$randbits'
+randfunc='$randfunc'
+randseedtype='$randseedtype'
 ranlib='$ranlib'
 rd_nodata='$rd_nodata'
 rm='$rm'
 rmail='$rmail'
 runnm='$runnm'
+sched_yield='$sched_yield'
 scriptdir='$scriptdir'
 scriptdirexp='$scriptdirexp'
 sed='$sed'
+seedfunc='$seedfunc'
 selectminbits='$selectminbits'
 selecttype='$selecttype'
 sendmail='$sendmail'
@@ -12424,6 +12711,7 @@ uname='$uname'
 uniq='$uniq'
 use64bits='$use64bits'
 usedl='$usedl'
+usemultiplicity='$usemultiplicity'
 usemymalloc='$usemymalloc'
 usenm='$usenm'
 useopcode='$useopcode'
@@ -12518,26 +12806,26 @@ if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
        *)
                $cat <<EOM
 
-Now you need to generate make dependencies by running "make depend".
-You might prefer to run it in background: "make depend > makedepend.out &"
+Now you need to generate make dependencies by running "$make depend".
+You might prefer to run it in background: "$make depend > makedepend.out &"
 It can take a while, so you might not want to run it right now.
 
 EOM
                ;;
        esac
-       rp="Run make depend now?"
+       rp="Run $make depend now?"
        . UU/myread
        case "$ans" in
        y*)
-               make depend && echo "Now you must run a make."
+               $make depend && echo "Now you must run a $make."
                ;;
        *)
-               echo "You must run 'make depend' then 'make'."
+               echo "You must run '$make depend' then '$make'."
                ;;
        esac
 elif test -f [Mm]akefile; then
        echo " "
-       echo "Now you must run a make."
+       echo "Now you must run a $make."
 else
        echo "Done."
 fi