# $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
#
-# Generated on Wed Jan 9 22:02:14 CET 2008 [metaconfig 3.0 PL70]
+# Generated on Fri Aug 8 16:16:43 CEST 2008 [metaconfig 3.5 PL0]
# (with additional metaconfig patches by perlbug@perl.org)
cat >c1$$ <<EOF
d_eunice=''
d_xenix=''
eunicefix=''
-Mcc=''
ar=''
awk=''
bash=''
cpp=''
csh=''
date=''
-dtrace=''
echo=''
egrep=''
emacs=''
d_telldirproto=''
d_time=''
timetype=''
+d_timegm=''
clocktype=''
d_times=''
d_tmpnam_r=''
i_locale=''
i_machcthr=''
i_malloc=''
+i_mallocmalloc=''
i_math=''
i_memory=''
i_mntent=''
+d_ndbm=''
+i_gdbm_ndbm=''
+i_gdbmndbm=''
i_ndbm=''
i_netdb=''
i_neterrno=''
i_sysmount=''
i_sysndir=''
i_sysparam=''
+i_syspoll=''
i_sysresrc=''
i_syssecrt=''
i_sysselct=''
i8type=''
ivsize=''
ivtype=''
+nv_overflows_integers_at=''
nv_preserves_uv_bits=''
nvsize=''
nvtype=''
d_stdio_stream_array=''
stdio_stream_array=''
sysman=''
+sGMTIME_max=''
+sGMTIME_min=''
trnl=''
uidformat=''
uidsign=''
archname64=''
use64bitall=''
use64bitint=''
+dtrace=''
+usedtrace=''
usefaststdio=''
ccflags_uselargefiles=''
ldflags_uselargefiles=''
useithreads=''
usereentrant=''
usethreads=''
-usedtrace=''
incpath=''
mips_type=''
usrinc=''
yaccflags=''
CONFIG=''
+: Detect odd OSs
define='define'
undef='undef'
smallmach='pdp11 i8086 z8000 i80286 iAPX286'
_exe=".exe"
fi
+groupstype=''
i_whoami=''
: Trailing extension. Override this in a hint file, if needed.
: Extra object files, if any, needed on this platform.
archobjs=''
archname=''
-groupstype=''
libnames=''
: change the next line if compiling for Xenix/286 on Xenix/386
xlibpth='/usr/lib/386 /lib/386'
libswanted=''
: some systems want to use only the non-versioned libso:s
ignore_versioned_solibs=''
-siteman1dir=''
-siteman3dir=''
-sitescript=''
: set usethreads on the Configure command line to enable threads.
usereentrant='undef'
: full support for void wanted by default
echo "#!$xcat" >sharp
$eunicefix sharp
chmod +x sharp
- ./sharp > today
+ ./sharp > today 2>/dev/null
if test -s today; then
sharpbang='#!'
else
echo "#! $xcat" > sharp
$eunicefix sharp
chmod +x sharp
- ./sharp > today
+ ./sharp > today 2>/dev/null
if test -s today; then
sharpbang='#! '
else
esac
shift
;;
- -V) echo "$me generated by metaconfig 3.0 PL70." >&2
+ -V) echo "$me generated by metaconfig 3.5 PL0." >&2
exit 0;;
--) break;;
-*) echo "$me: unknown option $1" >&2; shift; error=true;;
touch posthint.sh
: set package name
-package=perl5
+package='perl5'
first=`echo $package | sed -e 's/^\(.\).*/\1/'`
last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
'') src=/
rsrc=/
;;
-/*) rsrc="$src";;
-*) rsrc="../$src";;
+/*) rsrc="$src";;
+*) rsrc="../$src";;
esac
if test -f $rsrc/Configure && \
- $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
+ $contains "^package='$package'\$" $rsrc/Configure >/dev/null 2>&1
then
: found it, so we are ok.
else
echo " "
if test -f "$rsrc/MANIFEST"; then
echo "First let's make sure your kit is complete. Checking..." >&4
- awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
+ awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | \
+ (split -l 50 2>/dev/null || split -50)
rm -f missing
tmppwd=`pwd`
for filelist in x??; do
- (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
+ (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` \
+ >/dev/null 2>>"$tmppwd/missing")
done
if test -s missing; then
cat missing >&4
exit 0
elif test "X$_exe" != X -a -f \$thisthing$_exe; then
echo \$thisthing
- exit 0
+ exit 0
elif test -f \$dir/\$thing.exe; then
if test -n "$DJGPP"; then
echo \$dir/\$thing.exe
elif test "$eunicefix" != ":"; then
: on Eunice apparently
echo \$dir/\$thing
- exit 0
fi
exit 0
fi
uniq
"
trylist="
-Mcc
ar
bison
byacc
esac
echo " "
-
+: Make symlinks util
case "$mksymlinks" in
$define|true|[yY]*)
case "$src" in
$startsh
: expand filename
case "\$1" in
- ~/*|~)
+ \~/*|\~)
echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
;;
- ~*)
+ \~*)
if $test -f /bin/csh; then
/bin/csh -f -c "glob \$1"
failed=\$?
prefix="$ans"
prefixexp="$ansexp"
+: allow them to override the AFS root
case "$afsroot" in
'') afsroot=/afs ;;
*) afsroot=$afsroot ;;
case "$afs" in
$define|true) afs=true ;;
$undef|false) afs=false ;;
-*) if test -d $afsroot; then
+*) if $test -d $afsroot; then
afs=true
else
afs=false
esac
EOSC
-: function used to set $1 to $val
+: function used to set '$1' to '$val'
setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
case "$val$was" in
$define$undef) . ./whoa; eval "$var=\$td";;
*) eval "$var=$val";;
esac'
+: Check is we will use socks
case "$usesocks" in
$define|true|[yY]*) dflt='y';;
*) dflt='n';;
$define|true|[yY]*) useperlio="$define";;
esac
+: Check if we want perlio
case "$useperlio" in
$define|true|[yY]*|'') dflt='y';;
*) dflt='n';;
rp='Use the PerlIO abstraction layer?'
. ./myread
case "$ans" in
-y|Y)
+y|Y)
val="$define"
;;
-*)
+*)
echo "Ok, doing things the stdio way."
val="$undef"
;;
esac
set useperlio
-eval $setvar
+eval $setvar
case "$usesocks" in
$define|true|[yY]*)
;;
esac
-
: get the patchlevel
echo " "
echo "Getting the current patchlevel..." >&4
esac
fi
+: Check if multiplicity is required
cat <<EOM
Perl can be built so that multiple Perl interpreters can coexist
set usemultiplicity
eval $setvar
-
+: Check if morebits is requested
case "$usemorebits" in
"$define"|true|[yY]*)
use64bitint="$define"
;;
esac
+: Determine the C compiler to be used
+echo " "
+case "$cc" in
+'') dflt=cc;;
+*) dflt="$cc";;
+esac
+rp="Use which C compiler?"
+. ./myread
+cc="$ans"
+
+: See whether they have no cc but they do have gcc
+. ./trygcc
+if $test -f cc.cbu; then
+ . ./cc.cbu
+fi
+. ./checkcc
+
: make some quick guesses about what we are up against
echo " "
$echo $n "Hmm... $c"
$eunicefix bsd usg v7 osf1 eunice xenix venix os2
$rm -f foo
-case "$cc" in
-'') dflt=cc;;
-*) dflt="$cc";;
-esac
-rp="Use which C compiler?"
-. ./myread
-cc="$ans"
-
-: See if they have not cc but they do have gcc
-. ./trygcc
-: Look for a hint-file generated 'call-back-unit'. Now that the
-: user has specified the compiler, we may need to set or change some
-: other defaults.
-if $test -f cc.cbu; then
- . ./cc.cbu
-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
'') firstmakefile='makefile';;
esac
+: Check for uselongdouble support
case "$ccflags" in
*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
esac
# 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"'
+ ?*) set stack-protector -fstack-protector
eval $checkccflag
;;
esac
;;
*) dflt="$ldflags";;
esac
+# See note above about -fstack-protector
+case "$ccflags" in
+*-fstack-protector*)
+ case "$dflt" in
+ *-fstack-protector*) ;; # Don't add it again
+ *) dflt="$dflt -fstack-protector" ;;
+ esac
+ ;;
+esac
: Try to guess additional flags to pick up local libraries.
for thislibdir in $libpth; do
compile='
mc_file=$1;
shift;
+case "$usedevel" in $define|true|[yY]*) if $test ! -f "${mc_file}.c"; then
+echo "Internal Configure script bug - compiler test file ${mc_file}.c is missing. Please report this to perlbug@perl.org" >&4;
+exit 1;
+fi;
+esac;
$cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
: define a shorthand compile call for compilations that should be ok.
compile_ok='
;;
esac
-
+: Do we want 64bit support
case "$uselonglong" in
"$define"|true|[yY]*)
cat <<EOM >&4
esac
$rm -f getverlist
+: see if malloc/malloc.h has to be included
+set malloc/malloc.h i_mallocmalloc
+eval $inhdr
+
: see if this is a malloc.h system
: we want a real compile instead of Inhdr because some systems have a
: malloc.h that just gives a compile error saying to use stdlib.h instead
$cat >try.c <<EOCP
#include <stdlib.h>
#include <malloc.h>
+#$i_mallocmalloc I_MALLOCMALLOC
+#ifdef I_MALLOCMALLOC
+# include <malloc/malloc.h>
+#endif
+
int main () { return 0; }
EOCP
set try
;;
esac
+: 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
+ echo " "
+ echo "Good: your $dtrace knows about the -h flag."
+ else
+ 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
+
+ case "$fastread" in
+ yes)
+ cat >&2 <<EOM
+
+*** $me: Fatal Error: $dtrace not found.
+*** Can't continue.
+
+EOM
+ exit 1
+ ;;
+ *)
+ echo "*** $dtrace was not found."
+ echo " "
+ ;;
+ esac
+done
+
: See if we want extra modules installed
echo " "
case "$extras" in
;;
esac
+: Figure out where the libc is located
case "$runnm" in
true)
: get list of predefined functions in a handy place
echo " "
echo "$nm didn't seem to work right. Trying $ar instead..." >&4
com=''
- if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
+ if $ar t $libc > libc.tmp && \
+ $contains '^fprintf$' libc.tmp >/dev/null 2>&1
+ then
for thisname in $libnames $libc; do
$ar t $thisname >>libc.tmp
done
$sed -e "s/\\$_o\$//" < libc.tmp > libc.list
echo "Ok." >&4
elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
- # Repeat libc to extract forwarders to DLL entries too
for thisname in $libnames $libc; do
$ar tv $thisname >>libc.tmp
- # Revision 50 of EMX has bug in $ar.
- # it will not extract forwarders to DLL entries
- # Use emximp which will extract exactly them.
emximp -o tmp.imp $thisname \
2>/dev/null && \
$sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
< tmp.imp >>libc.tmp
- $rm tmp.imp
+ $rm -f tmp.imp
done
$sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
echo "Ok." >&4
else
echo "$ar didn't seem to work right." >&4
echo "Maybe this is a Cray...trying bld instead..." >&4
- if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
+ if bld t $libc | \
+ $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list &&
+ $test -s libc.list
then
for thisname in $libnames; do
bld t $libnames | \
*) if $test -f /lib/syscalls.exp; then
echo " "
echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
- $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
+ $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' \
+ /lib/syscalls.exp >>libc.list
fi
;;
esac
''|' ') dflt='none' ;;
esac
+ case "$ldflags" in
+ *-fstack-protector*)
+ case "$dflt" in
+ *-fstack-protector*) ;; # Don't add it again
+ *) dflt="$dflt -fstack-protector" ;;
+ esac
+ ;;
+ esac
+
+
rp="Any special flags to pass to $ld to create a dynamically loaded library?"
. ./myread
case "$ans" in
;;
esac
+: Do we want a shared libperl?
also=''
case "$usedl" in
$undef)
xxx=''
tmp_shrpenv=''
if "$useshrplib"; then
- case "$osname" in
+ case "$osname" in
aix)
# We'll set it in Makefile.SH...
;;
esac
case "$xxx" in
'') ;;
- *)
+ *)
# Only add $xxx if it isn't already in ccdlflags.
case " $ccdlflags " in
*" $xxx "*) ;;
cat <<EOM >&4
Adding $xxx to the flags
-passed to $ld so that the perl executable will find the
+passed to $ld so that the perl executable will find the
installed shared $libperl.
EOM
You can't even think about them!
EOM
val="$undef"
-fi
+fi
set d_flexfnam
eval $setvar
$rm -rf 123456789abcde*
echo "(Attempting domain name extraction from $tans)"
dflt=.`$sed -n -e 's/ / /g' \
-e 's/^search *\([^ ]*\).*/\1/p' $tans \
- | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
+ -e 1q 2>/dev/null`
case "$dflt" in
.) dflt=.`$sed -n -e 's/ / /g' \
-e 's/^domain *\([^ ]*\).*/\1/p' $tans \
- | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
+ -e 1q 2>/dev/null`
;;
esac
fi
;;
esac
+: determine the e-mail address of the user who is running us
$cat <<EOM
I need to get your e-mail address in Internet format if possible, i.e.
esac
done
+: Ask e-mail of administrator
$cat <<EOM
If you or somebody else will be maintaining perl at your site, please
prefixvar=sitescript
. ./setprefixvar
+: Check if faststdio is requested and available
case "$usefaststdio" in
$define|true|[yY]*|'')
xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
rp='Use the "fast stdio" if available?'
. ./myread
case "$ans" in
-y|Y) val="$define" ;;
+y|Y) val="$define" ;;
*) val="$undef" ;;
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=$@;
chmod +x protochk
$eunicefix protochk
+: Define hasproto macro for Configure internal use
hasproto='varname=$1; func=$2; shift; shift;
while $test $# -ge 2; do
case "$1" in
set sys/select.h i_sysselct
eval $inhdr
+: Define hasfield macro for Configure internal use
hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
while $test $# -ge 2; do
case "$1" in
EOCP
set try
- if eval $compile; then
+ if eval $compile && $run ./try; then
echo "Your C compiler supports __builtin_choose_expr."
val="$define"
else
'')
echo " "
echo "Checking whether your compiler can handle __builtin_expect ..." >&4
- $cat >builtin.c <<'EOCP'
+ $cat >try.c <<'EOCP'
int main(void) {
int n = 50;
if ( __builtin_expect(n, 0) ) n = 1;
+ /* Remember shell exit code truth is 0, C truth is non-zero */
+ return !(n == 1);
}
EOCP
set try
- if eval $compile; then
- echo "Your C compiler supports __builtin_choose_expr."
+ if eval $compile && $run ./try; then
+ echo "Your C compiler supports __builtin_expect."
val="$define"
else
- echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
+ echo "Your C compiler doesn't seem to understand __builtin_expect."
val="$undef"
fi
;;
set clearenv d_clearenv
eval $inlibc
+: Define hasstruct macro for Configure internal use
hasstruct='varname=$1; struct=$2; shift; shift;
while $test $# -ge 2; do
case "$1" in
eval $setvar;
$rm_try'
+: see whether socket exists
socketlib=''
sockethdr=''
-: see whether socket exists
echo " "
$echo $n "Hmm... $c" >&4
if set socket val -f d_socket; eval $csym; $val; then
set sys/uio.h i_sysuio
eval $inhdr
-
+: Check for cmsghdr support
echo " "
echo "Checking to see if your system supports struct cmsghdr..." >&4
set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
set dlfcn.h i_dlfcn
eval $inhdr
+: Check what extension to use for shared libs
case "$usedl" in
$define|y|true)
$cat << EOM
eval $setvar
$rm_try
+: script used to emit important warnings
+cat >warn <<EOS
+$startsh
+if test \$# -gt 0; then
+ echo "\$@" >msg
+else
+ cat >msg
+fi
+echo "*** WARNING:" >&4
+sed -e 's/^/*** /' <msg >&4
+echo "*** " >&4
+cat msg >>config.msg
+echo " " >>config.msg
+rm -f msg
+EOS
+chmod +x warn
+$eunicefix warn
+
: see which of string.h or strings.h is needed
echo " "
strings=`./findhdr string.h`
if $test "$strings" && $test -r "$strings"; then
echo "Using <strings.h> instead of <string.h>." >&4
else
- echo "No string header found -- You'll surely have problems." >&4
+ ./warn "No string header found -- You'll surely have problems."
fi
fi
set i_string
set fpclassl d_fpclassl
eval $inlibc
-
: check for fpos64_t
echo " "
echo "Checking to see if you have fpos64_t..." >&4
set sys/mount.h i_sysmount
eval $inhdr
-
+: Check for fs_data_s
echo " "
echo "Checking to see if your system supports struct fs_data..." >&4
set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
set fsetpos d_fsetpos
eval $inlibc
-
: see if fstatfs exists
set fstatfs d_fstatfs
eval $inlibc
-
: see if statvfs exists
set statvfs d_statvfs
eval $inlibc
set getespwnam d_getespwnam
eval $inlibc
-
: see if getfsstat exists
set getfsstat d_getfsstat
eval $inlibc
set getpagesize d_getpagsz
eval $inlibc
+: Optional checks for getprotobyname and getprotobynumber
: see if getprotobyname exists
set getprotobyname d_getpbyname
;;
esac
+: Optional checks for getsbyname and getsbyport
: see if getservbyname exists
set getservbyname d_getsbyname
set d_msg
eval $setvar
-
+: Check for msghdr_s
echo " "
echo "Checking to see if your system supports struct msghdr..." >&4
set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
esac
$rm_try
+$echo "Checking to find the largest integer value your NVs can hold..." >&4
+: volatile so that the compiler has to store it out to memory.
+if test X"$d_volatile" = X"$define"; then
+ volatile=volatile
+fi
+$cat <<EOP >try.c
+#include <stdio.h>
+
+typedef $nvtype NV;
+
+int
+main() {
+ NV value = 2;
+ int count = 1;
+
+ while(count < 256) {
+ $volatile NV up = value + 1.0;
+ $volatile NV negated = -value;
+ $volatile NV down = negated - 1.0;
+ $volatile NV got_up = up - value;
+ int up_good = got_up == 1.0;
+ int got_down = down - negated;
+ int down_good = got_down == -1.0;
+
+ if (down_good != up_good) {
+ fprintf(stderr,
+ "Inconsistency - up %d %f; down %d %f; for 2**%d (%.20f)\n",
+ up_good, (double) got_up, down_good, (double) got_down,
+ count, (double) value);
+ return 1;
+ }
+ if (!up_good) {
+ while (1) {
+ if (count > 8) {
+ count -= 8;
+ fputs("256.0", stdout);
+ } else {
+ count--;
+ fputs("2.0", stdout);
+ }
+ if (!count) {
+ puts("");
+ return 0;
+ }
+ fputs("*", stdout);
+ }
+ }
+ value *= 2;
+ ++count;
+ }
+ fprintf(stderr, "Cannot overflow integer range, even at 2**%d (%.20f)\n",
+ count, (double) value);
+ return 1;
+}
+EOP
+set try
+
+nv_overflows_integers_at='0'
+if eval $compile; then
+ xxx="`$run ./try`"
+ case "$?" in
+ 0)
+ case "$xxx" in
+ 2*) cat >&4 <<EOM
+The largest integer your NVs can preserve is equal to $xxx
+EOM
+ nv_overflows_integers_at="$xxx"
+ ;;
+ *) cat >&4 <<EOM
+Cannot determine the largest integer value your NVs can hold, unexpected output
+'$xxx'
+EOM
+ ;;
+ esac
+ ;;
+ *) cat >&4 <<EOM
+Cannot determine the largest integer value your NVs can hold
+EOM
+ ;;
+ esac
+fi
+$rm_try
+
$echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
: volatile so that the compiler has to store it out to memory.
if test X"$d_volatile" = X"$define"; then
set pthread_attr_setscope d_pthread_attr_setscope
eval $inlibc
-
: see whether the various POSIXish _yields exist
$cat >try.c <<EOP
#include <pthread.h>
set sfio.h i_sfio
eval $inhdr
-
: see if sfio library is available
case "$i_sfio" in
$define)
EOP
set try
-d_sprintf_returns_strlen="$undef"
if eval $compile; then
xxx="`$run ./try`"
case "$?" in
d_sprintf_returns_strlen="$undef"
;;
esac
+else
+ echo "(I can't seem to compile the test program--assuming it doesn't)" >&4
+ d_sprintf_returns_strlen="$undef"
fi
$rm_try
set sys/stat.h i_sysstat
eval $inhdr
-
: see if stat knows about block sizes
echo " "
echo "Checking to see if your struct stat has st_blocks field..." >&4
set d_statblks stat st_blocks $i_sysstat sys/stat.h
eval $hasfield
-
: see if this is a sys/vfs.h system
set sys/vfs.h i_sysvfs
eval $inhdr
-
: see if this is a sys/statfs.h system
set sys/statfs.h i_sysstatfs
eval $inhdr
-
+: Check for statfs_s
echo " "
echo "Checking to see if your system supports struct statfs..." >&4
set d_statfs_s statfs $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
esac
-
: see if struct statfs knows about f_flags
case "$d_statfs_s" in
-define)
+define)
echo " "
echo "Checking to see if your struct statfs has f_flags field..." >&4
set d_statfs_f_flags statfs f_flags $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
eval $setvar
fi
+: see if timegm exists
+set timegm d_timegm
+eval $inlibc
+
: see if this is a sys/times.h system
set sys/times.h i_systimes
eval $inhdr
fi
fi
fi
- $rm_try
+ $rm -f core try.core core.try.*
case "$fflushNULL" in
x) $cat >&4 <<EOM
Your fflush(NULL) works okay for output streams.
EOM
;;
esac
-$rm_try
+$rm_try tryp
: Store the full pathname to the ar program for use in the C program
: Respect a hint or command line value for full_ar.
;;
esac
-
+: Check format strings for internal types
echo " "
$echo "Checking the format strings to be used for Perl's internal types..." >&4
;;
esac
+: Check format string for GID
echo " "
$echo "Checking the format string to be used for gids..." >&4
set setgroups d_setgrps
eval $inlibc
-
: Find type of 2nd arg to 'getgroups()' and 'setgroups()'
echo " "
case "$d_getgrps$d_setgrps" in
set mad
eval $setvar
+: check whether make sets MAKE
echo " "
echo "Checking if your $make program sets \$(MAKE)..." >&4
case "$make_set_make" in
esac
;;
*) dflt="$pager"
- : Instruct ./getfile to trust the hinted or previous pager value,
- : even if it does not begin with a slash. For example, on os2,
- : pager might be cmd /c more. See comments in UU/getfile.
fn="f/($pager)"
;;
esac
fi
$rm -f foo* bar*
+: see if this is a values.h system
+set values.h i_values
+eval $inhdr
+
+: Check the max offset that gmtime accepts
+echo "Checking max offsets that gmtime () accepts"
+
+case $i_values in
+ define) yyy="#include <values.h>" ;;
+ *) yyy="" ;;
+ esac
+
+$cat >try.c <<EOCP
+#include <sys/types.h>
+#include <stdio.h>
+#include <time.h>
+$yyy
+
+int i;
+struct tm *tmp;
+time_t pt;
+
+void gm_check (time_t t)
+{
+ tmp = gmtime (&t);
+ if (tmp == NULL || tmp->tm_year < -1900)
+ tmp = NULL;
+ else
+ pt = t;
+ } /* gm_check */
+
+int check_max ()
+{
+ tmp = NULL;
+ pt = 0;
+#ifdef MAXLONG
+ gm_check (MAXLONG);
+#endif
+ if (tmp == NULL || tmp->tm_year < 0) {
+ for (i = 63; i >= 0; i--) {
+ time_t x = pt | ((time_t)1 << i);
+ if (x < 0) continue;
+ gm_check (x);
+ }
+ }
+ printf ("sGMTIME_max=%ld\n", pt);
+ return (0);
+ }
+
+int check_min ()
+{
+ tmp = NULL;
+ pt = 0;
+#ifdef MINLONG
+ gm_check (MINLONG);
+#endif
+ if (tmp == NULL) {
+ for (i = 36; i >= 0; i--) {
+ time_t x = pt - ((time_t)1 << i);
+ if (x > 0) continue;
+ gm_check (x);
+ }
+ }
+ printf ("sGMTIME_min=%ld\n", pt);
+ return (0);
+ }
+
+int main (int argc, char *argv[])
+{
+ fprintf (stderr, "Sizeof time_t = %ld\n", sizeof (time_t));
+ check_max ();
+ check_min ();
+ return (0);
+ } /* main */
+EOCP
+set try
+if eval $compile; then
+ yyy=`$run ./try`
+ eval $yyy
+else
+ echo "Cannot determine sGMTIME_max and sGMTIME_min." >&4
+ fi
+$rm_try
+
: check for type of arguments to select.
case "$selecttype" in
'') case "$d_select" in
esac
: Trace out the files included by signal.h, then look for SIGxxx names.
-: Remove SIGARRAYSIZE used by HPUX.
-: Remove SIGSTKSIZE used by Linux.
-: Remove SIGSTKSZ used by Posix.
-: Remove SIGTYP void lines used by OS2.
-: Some cpps, like os390, dont give the file name anywhere
if [ "X$fieldn" = X ]; then
: Just make some guesses. We check them later.
xxx='/usr/include/signal.h /usr/include/sys/signal.h'
xxx=`echo '#include <signal.h>' |
$cppstdin $cppminus $cppflags 2>/dev/null |
$grep '^[ ]*#.*include' |
- $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
+ $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
-: as ../foo/bar.h
xxxfiles=''
for xx in $xxx /dev/null ; do
$test -f "$xx" && xxxfiles="$xxxfiles $xx"
done
-: If we have found no files, at least try signal.h
case "$xxxfiles" in
'') xxxfiles=`./findhdr signal.h` ;;
esac
set signal
if eval $compile_ok; then
- $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
+ $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) |\
+ $uniq | $awk -f signal.awk >signal.lst
else
echo "(I can't seem be able to compile the whole test program)" >&4
echo "(I'll try it in little pieces.)" >&4
: see what type of char stdio uses.
echo " "
-echo '#include <stdio.h>' > stdio.c
-$cppstdin $cppminus < stdio.c > stdioh
+echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
echo "Your stdio uses unsigned chars." >&4
stdchar="unsigned char"
echo "Your stdio uses signed chars." >&4
stdchar="char"
fi
-$rm -f stdio.* stdioh
+$rm -f stdioh
: see what type uids are declared as in the kernel
echo " "
fi
-
+: Check format string for UID
echo " "
$echo "Checking the format string to be used for uids..." >&4
;;
esac
-
+: Check if site customization support was requested
case "$usesitecustomize" in
$define|true|[Yy]*)
usesitecustomize="$define"
;;
esac
-
: see if this is a assert.h system
set assert.h i_assert
eval $inhdr
set i_gdbm
eval $setvar
+: see if ndbm.h is available
+set ndbm.h i_ndbm
+eval $inhdr
+: Compatibility location for RedHat 7.1
+set gdbm/ndbm.h i_gdbmndbm
+eval $inhdr
+: Compatibility location for Debian 4.0
+set gdbm-ndbm.h i_gdbm_ndbm
+eval $inhdr
+
+if $test "$i_ndbm" = "$define" -o "$i_gdbmndbm" = "$define" -o "$i_gdbm_ndbm" = "$define"; then
+ : see if dbm_open exists
+ set dbm_open d_dbm_open
+ eval $inlibc
+ case "$d_dbm_open" in
+ $undef)
+ i_ndbm="$undef"
+ i_gdbmndbm="$undef"
+ i_gdbm_ndbm="$undef"
+ echo "We won't be including <ndbm.h>"
+ val="$undef"
+ ;;
+ *) val="$define"
+ ;;
+ esac
+fi
+set d_ndbm
+eval $setvar
+
: see if this is a ieeefp.h system
case "$i_ieeefp" in
'' ) set ieeefp.h i_ieeefp
set mntent.h i_mntent
eval $inhdr
-: see if ndbm.h is available
-set ndbm.h t_ndbm
-eval $inhdr
-
-case "$t_ndbm" in
-$undef)
- # Some Linux distributions such as RedHat 7.1 put the
- # ndbm.h header in /usr/include/gdbm/ndbm.h.
- if $test -f /usr/include/gdbm/ndbm.h; then
- echo '<gdbm/ndbm.h> found.'
- ccflags="$ccflags -I/usr/include/gdbm"
- cppflags="$cppflags -I/usr/include/gdbm"
- t_ndbm=$define
- fi
- ;;
-esac
-
-case "$t_ndbm" in
-$define)
- : see if dbm_open exists
- set dbm_open d_dbm_open
- eval $inlibc
- case "$d_dbm_open" in
- $undef)
- t_ndbm="$undef"
- echo "We won't be including <ndbm.h>"
- ;;
- esac
- ;;
-esac
-val="$t_ndbm"
-set i_ndbm
-eval $setvar
-
: see if net/errno.h is available
val=''
set net/errno.h val
echo "<sgtty.h> found." >&4
else
echo "System is pyramid with BSD universe."
- echo "<sgtty.h> not found--you could have problems." >&4
+ ./warn "<sgtty.h> not found--you could have problems."
fi;;
*) if $test `./findhdr termio.h`; then
val="$define"
echo "<termio.h> found." >&4
else
echo "System is pyramid with USG universe."
- echo "<termio.h> not found--you could have problems." >&4
+ ./warn "<termio.h> not found--you could have problems."
fi;;
esac
elif ./usg; then
echo "<sgtty.h> found." >&4
val2="$define"
else
-echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
+ ./warn "Neither <termio.h> nor <sgtty.h> found--cross fingers!"
fi
else
if $test `./findhdr sgtty.h`; then
echo "<termio.h> found." >&4
val="$define"
else
-echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
+ ./warn "Neither <sgtty.h> nor <termio.h> found--cross fingers!"
fi
fi;;
esac
set i_syssockio
eval $setvar
-
: see if this is a syslog.h system
set syslog.h i_syslog
eval $inhdr
-
: see if this is a sys/mode.h system
set sys/mode.h i_sysmode
eval $inhdr
+: see if there is a sys/poll.h file
+set sys/poll.h i_syspoll
+eval $inhdr
+
: see if sys/resource.h has to be included
set sys/resource.h i_sysresrc
eval $inhdr
set sys/un.h i_sysun
eval $inhdr
-
: see if this is a sys/utsname.h system
set sys/utsname.h i_sysutsname
eval $inhdr
set utime.h i_utime
eval $inhdr
-: see if this is a values.h system
-set values.h i_values
-eval $inhdr
-
: see if this is a vfork system
case "$d_vfork" in
"$define")
;;
*) case "$usedl" in
$define|true|[yY]*)
- set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
+ set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -lgdbm_compat @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
shift
perllibs="$*"
;;
cd ..
fi
-: configuration may be patched via a 'config.arch' file
+: configuration may be unconditionally patched via a 'config.arch' file
if $test -f config.arch; then
- echo "I see a config.arch file, loading it."
+ echo "I see a config.arch file, loading it." >&4
. ./config.arch
fi
# Configured by : $cf_by
# Target system : $myuname
+EOT
+$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
+$spitshell <<EOT >>config.sh
+
Author='$Author'
Date='$Date'
Header='$Header'
Id='$Id'
Locker='$Locker'
Log='$Log'
-Mcc='$Mcc'
RCSfile='$RCSfile'
Revision='$Revision'
Source='$Source'
d_msync='$d_msync'
d_munmap='$d_munmap'
d_mymalloc='$d_mymalloc'
+d_ndbm='$d_ndbm'
d_nice='$d_nice'
d_nl_langinfo='$d_nl_langinfo'
d_nv_preserves_uv='$d_nv_preserves_uv'
d_telldir='$d_telldir'
d_telldirproto='$d_telldirproto'
d_time='$d_time'
+d_timegm='$d_timegm'
d_times='$d_times'
d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
d_tm_tm_zone='$d_tm_tm_zone'
i_fp='$i_fp'
i_fp_class='$i_fp_class'
i_gdbm='$i_gdbm'
+i_gdbm_ndbm='$i_gdbm_ndbm'
+i_gdbmndbm='$i_gdbmndbm'
i_grp='$i_grp'
i_ieeefp='$i_ieeefp'
i_inttypes='$i_inttypes'
i_locale='$i_locale'
i_machcthr='$i_machcthr'
i_malloc='$i_malloc'
+i_mallocmalloc='$i_mallocmalloc'
i_math='$i_math'
i_memory='$i_memory'
i_mntent='$i_mntent'
i_sysmount='$i_sysmount'
i_sysndir='$i_sysndir'
i_sysparam='$i_sysparam'
+i_syspoll='$i_syspoll'
i_sysresrc='$i_sysresrc'
i_syssecrt='$i_syssecrt'
i_sysselct='$i_sysselct'
nvEUformat='$nvEUformat'
nvFUformat='$nvFUformat'
nvGUformat='$nvGUformat'
+nv_overflows_integers_at='$nv_overflows_integers_at'
nv_preserves_uv_bits='$nv_preserves_uv_bits'
nveformat='$nveformat'
nvfformat='$nvfformat'
rmail='$rmail'
run='$run'
runnm='$runnm'
+sGMTIME_max='$sGMTIME_max'
+sGMTIME_min='$sGMTIME_min'
sPRIEUldbl='$sPRIEUldbl'
sPRIFUldbl='$sPRIFUldbl'
sPRIGUldbl='$sPRIGUldbl'
: propagate old symbols
if $test -f UU/config.sh; then
<UU/config.sh $sort | $uniq >UU/oldconfig.sh
- sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
- $sort | $uniq -u >UU/oldsyms
+ $sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' \
+ config.sh config.sh UU/oldconfig.sh |\
+ $sort | $uniq -u >UU/oldsyms
set X `cat UU/oldsyms`
shift
case $# in
cat <<EOM
Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
EOM
- echo "# Variables propagated from previous config.sh file." >>config.sh
+ echo ": Variables propagated from previous config.sh file." >>config.sh
for sym in `cat UU/oldsyms`; do
echo " Propagating $hint variable "'$'"$sym..."
eval 'tmp="$'"${sym}"'"'