# 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
# 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 Apr 17 14:14:39 CEST 2006 [metaconfig 3.0 PL70]
+# Generated on Fri Aug 22 17:08:28 CEST 2008 [metaconfig 3.5 PL0]
# (with additional metaconfig patches by perlbug@perl.org)
cat >c1$$ <<EOF
exit 1
fi
+if test ! -c /dev/null ; then
+ cat >&4 <<EOF
+***
+*** I'm sorry, but /dev/null appears to be a file rather than a device.
+*** Please consult your operating sytem's notes for making a device
+*** in /dev.
+*** Cannot continue, aborting.
+***
+EOF
+ exit 1
+fi
+
: compute my invocation name
me=$0
case "$0" in
: 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]'`
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
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 ./*
d_eunice=''
d_xenix=''
eunicefix=''
-Mcc=''
ar=''
awk=''
bash=''
lib_ext=''
obj_ext=''
path_sep=''
+rm_try=''
afs=''
afsroot=''
alignbytes=''
cf_email=''
cf_by=''
cf_time=''
-charsize=''
contains=''
cpp_stuff=''
cpplast=''
d_attribute_pure=''
d_attribute_unused=''
d_attribute_warn_unused_result=''
+d_printf_format_null=''
d_bcmp=''
d_bcopy=''
d_builtin_choose_expr=''
d_builtin_expect=''
d_bzero=''
+d_c99_variadic_macros=''
d_casti32=''
castflags=''
d_castneg=''
d_cmsghdr_s=''
d_const=''
d_copysignl=''
+d_cplusplus=''
cryptlib=''
d_crypt=''
crypt_r_proto=''
d_crypt_r=''
d_csh=''
full_csh=''
+d_ctermid=''
ctermid_r_proto=''
d_ctermid_r=''
ctime_r_proto=''
d_ctime_r=''
d_cuserid=''
-d_c99_variadic_macros=''
d_dbl_dig=''
d_dbminitproto=''
d_difftime=''
+d_dir_dd_fd=''
d_dirfd=''
d_dlerror=''
d_dlopen=''
d_libm_lib_version=''
d_link=''
d_localtime_r=''
+d_localtime_r_needs_tzset=''
localtime_r_proto=''
d_locconv=''
d_lockf=''
d_shmdt=''
d_shmget=''
d_sigaction=''
+d_signbit=''
d_sigprocmask=''
d_sigsetjmp=''
usesitecustomize=''
d_telldirproto=''
d_time=''
timetype=''
+d_timegm=''
clocktype=''
d_times=''
d_tmpnam_r=''
d_usleep=''
d_usleepproto=''
d_ustat=''
+d_pseudofork=''
d_vfork=''
usevfork=''
d_voidsig=''
html3direxp=''
installhtml3dir=''
i_arpainet=''
+i_assert=''
i_crypt=''
db_hashtype=''
db_prefixtype=''
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=''
yaccflags=''
CONFIG=''
+: Detect odd OSs
define='define'
undef='undef'
smallmach='pdp11 i8086 z8000 i80286 iAPX286'
_exe=".exe"
fi
+groupstype=''
i_whoami=''
-ccname=''
-ccversion=''
-perllibs=''
-: set useposix=false in your hint file to disable the POSIX extension.
-useposix=true
-: set useopcode=false in your hint file to disable the Opcode extension.
-useopcode=true
: Trailing extension. Override this in a hint file, if needed.
: Extra object files, if any, needed on this platform.
archobjs=''
archname=''
-: Possible local include directories to search.
-: Set locincpth to "" in a hint file to defeat local include searches.
-locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
-locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
-:
-: no include file wanted by default
-inclwanted=''
-
-: Enable -DEBUGGING and -DDEBUGGING from the command line
-EBUGGING=''
-DEBUGGING=old
-
-groupstype=''
libnames=''
: change the next line if compiling for Xenix/286 on Xenix/386
xlibpth='/usr/lib/386 /lib/386'
glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
test -f /shlib/libc.so && glibpth="/shlib $glibpth"
+test -d /usr/lib64 && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
: Private path used by Configure to find libraries. Its value
: is prepended to libpth. This variable takes care of special
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
+defvoidused=15
+
+: 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"
+locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
+:
+: no include file wanted by default
+inclwanted=''
+
+: Enable -DEBUGGING and -DDEBUGGING from the command line
+EBUGGING=''
+DEBUGGING=old
+
+ccname=''
+ccversion=''
+perllibs=''
+: set useposix=false in your hint file to disable the POSIX extension.
+useposix=true
+: set useopcode=false in your hint file to disable the Opcode extension.
+useopcode=true
archname64=''
ccflags_uselargefiles=''
ldflags_uselargefiles=''
libswanted_uselargefiles=''
: set usemultiplicity on the Configure command line to enable multiplicity.
: set usesocks on the Configure command line to enable socks.
-: set usethreads on the Configure command line to enable threads.
-usereentrant='undef'
-: full support for void wanted by default
-defvoidused=15
-
: List of libraries we want.
: If anyone needs extra -lxxx, put those in a hint file.
libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
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
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=$#
cat >>cmdline.opt <<EOSH
config_arg$argn='$arg'
EOSH
- # Extreme backslashitis: replace each ' by '"'"'
cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
$arg
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
fi
cd UU
shift;;
+ --help|\
-h) shift; error=true;;
-r) shift; reuseval=true;;
-s) shift; silent=true; realsilent=true;;
case "$zzz" in
*:*) zzz='' ;;
*) xxx=append
- zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
+ zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
esac
;;
*) xxx=`echo "$yyy"|sed 's!:.*!!'`
yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
esac
- ;;
+ ;;
esac
case "$xxx" in
append)
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;;
-D : define symbol to have some value:
-D symbol symbol gets the value 'define'
-D symbol=value symbol gets the value 'value'
+ common used examples (see INSTALL for more info):
+ -Duse64bitint use 64bit integers
+ -Duse64bitall use 64bit integers and pointers
+ -Dusethreads use thread support
+ -Dinc_version_list=none do not include older perl trees in @INC
+ -DEBUGGING=none DEBUGGING options
+ -Dcc=gcc choose your compiler
+ -Dprefix=/opt/perl5 choose your destination
-E : stop at the end of questions, after having produced config.sh.
-K : do not use unless you know what you are doing.
-O : let -D and -U override definitions from loaded configuration file.
-U : undefine symbol:
-U symbol symbol gets the value 'undef'
-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
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
fi
rm -f missing x??
-echo " "
: Find the appropriate value for a newline for tr
+echo " "
if test -n "$DJGPP"; then
trnl='\012'
fi
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]*) ;;
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
case "$make" in
-make)
+make)
case "$gmake" in
gmake)
echo "I can't find make or gmake, and my life depends on it." >&4
;;
esac
;;
-esac
+esac
case "$gmake" in
gmake) ;;
*) # We can't have osname yet.
;;
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
case "$cc" in
*gcc*) trygcc=no ;;
esac
- case "`$cc -v -c try.c 2>&1`" in
- *gcc*) trygcc=no ;;
- esac
+ # Skip this test because it gives a false match on output like:
+ # ./trygcc: line 23: cc: command not found
+ # case "`$cc -v -c try.c 2>&1`" in
+ # *gcc*) trygcc=no ;;
+ # esac
if $test X"$trygcc" = Xyes; then
if gcc -o try -c try.c; then
echo " "
echo "You seem to have a working gcc, though." >&4
- rp="Would you like to use it?"
- dflt=y
+ # Switching compilers may undo the work of hints files.
+ # The most common problem is -D_REENTRANT for threads.
+ # This heuristic catches that case, but gets false positives
+ # if -Dusethreads was not actually specified. Better to
+ # bail out here with a useful message than fail
+ # mysteriously later. Should we perhaps just try to
+ # re-invoke Configure -Dcc=gcc config_args ?
+ if $test -f usethreads.cbu; then
+ $cat >&4 <<EOM
+
+*** However, any setting of the C compiler flags (e.g. for thread support)
+*** will be lost. It may be necessary for you to restart Configure and
+*** add -Dcc=gcc to your Configure command line.
+
+EOM
+ rp="Would you like to go ahead and try gcc anyway?"
+ dflt=n
+ else
+ rp="Would you like to use it?"
+ dflt=y
+ fi
if $test -f myread; then
. ./myread
else
fi
case "$ans" in
[yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
- if $test -f usethreads.cbu; then
- $cat >&4 <<EOM
-
-*** However, any setting of the C compiler flags (e.g. for thread support)
-*** has been lost. It may be necessary to pass -Dcc=gcc to Configure
-*** (together with e.g. -Dusethreads).
-
-EOM
- fi;;
esac
fi
fi
esac
echo " "
-
+: Make symlinks util
case "$mksymlinks" in
$define|true|[yY]*)
case "$src" in
;;
esac
-
+: Check for Cross-Compilation
case "$usecrosscompile" in
$define|true|[yY]*)
$echo "Cross-compiling..."
$test -z "$myuname" && myuname=`hostname 2>/dev/null`
# tr '[A-Z]' '[a-z]' would not work in EBCDIC
# because the A-Z/a-z are not consecutive.
-myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
+myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e "s,['/],,g" | \
./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
newmyuname="$myuname"
dflt=n
$cat <<EOM
You may give one or more space-separated answers, or "none" if appropriate.
-A well-behaved OS will have no hints, so answering "none" or just "Policy"
-is a good thing. DO NOT give a wrong version or a wrong OS.
+If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
+previous run of Configure, you may specify it as well as or instead of
+OS-specific hints. If hints are provided for your OS, you should use them:
+although Perl can probably be built without hints on many platforms, using
+hints often improve performance and may enable features that Configure can't
+set up on its own. If there are no hints that match your OS, specify "none";
+DO NOT give a wrong version or a wrong OS.
EOM
$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
EOS
cat <<'EOSC' >>whoa
dflt=y
-echo " "
-echo "*** WHOA THERE!!! ***" >&4
-echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
+case "$hint" in
+ recommended)
+ case "$hintfile" in
+ '') echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
+ ;;
+ *) echo "Hmm. Based on the hints in hints/$hintfile.sh, " >&4
+ echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
+ ;;
+ esac
+ ;;
+ *) echo " "
+ echo "*** WHOA THERE!!! ***" >&4
+ echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
+ ;;
+esac
rp=" Keep the $hint value?"
. ./myread
case "$ans" in
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';;
rp='Build Perl for SOCKS?'
. ./myread
case "$ans" in
-y|Y) val="$define" ;;
+y|Y) val="$define" ;;
*) val="$undef" ;;
esac
set usesocks
$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
+if $test -r $rsrc/patchlevel.h;then
+ revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
+ patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
+ subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
+ api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
+ api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
+ api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
+ perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'`
+else
+ revision=0
+ patchlevel=0
+ subversion=0
+ api_revision=0
+ api_version=0
+ api_subversion=0
+ perl_patchlevel=0
+ $echo "(You do not have patchlevel.h. Eek.)"
+fi
+if $test -r $rsrc/.patch ; then
+ if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
+ perl_patchlevel=`cat $rsrc/.patch`
+ fi
+fi
+: Define a handy string here to avoid duplication in myconfig.SH and configpm.
+version_patchlevel_string="version $patchlevel subversion $subversion"
+case "$perl_patchlevel" in
+0|'') ;;
+*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
+esac
+
+$echo "(You have $package $version_patchlevel_string.)"
+
+case "$osname" in
+dos|vms)
+ : XXX Should be a Configure test for double-dots in filenames.
+ version=`echo $revision $patchlevel $subversion | \
+ $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
+ api_versionstring=`echo $api_revision $api_version $api_subversion | \
+ $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
+ ;;
+*)
+ version=`echo $revision $patchlevel $subversion | \
+ $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
+ api_versionstring=`echo $api_revision $api_version $api_subversion | \
+ $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
+ ;;
+esac
+: Special case the 5.005_xx maintenance series, which used 5.005
+: without any subversion label as a subdirectory in $sitelib
+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' ;;
set usethreads
eval $setvar
-case "$usethreads" in
-$define)
+if $test $patchlevel -lt 9; then
+ case "$usethreads" in
+ $define)
$cat <<EOM
Since release 5.6, Perl has had two different threading implementations,
set use5005threads
eval $setvar
;;
-*)
+ *)
useithreads="$undef"
use5005threads="$undef"
;;
-esac
+ esac
-case "$useithreads$use5005threads" in
-"$define$define")
+ case "$useithreads$use5005threads" in
+ "$define$define")
$cat >&4 <<EOM
You cannot have both the ithreads and the 5.005 threads enabled
EOM
use5005threads="$undef"
;;
-esac
+ esac
+
+else
+: perl-5.9.x and later
+
+ if test X"$usethreads" = "X$define"; then
+ case "$use5005threads" in
+ $define|true|[yY]*)
+ $cat >&4 <<EOM
+
+5.005 threads has been removed for 5.10. Perl will be built using ithreads.
+
+EOM
+ ;;
+ esac
+ fi
+
+ use5005threads="$undef"
+ useithreads="$usethreads"
+fi
if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
cat >&4 <<EOF
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
$cat >try.c <<EOM
#include <stdio.h>
int main() {
-#ifdef __GNUC__
+#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
#ifdef __VERSION__
printf("%s\n", __VERSION__);
#else
obj_ext=$_o
path_sep=$p_
+rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
+
: Which makefile gets called first. This is used by make depend.
case "$firstmakefile" in
'') firstmakefile='makefile';;
esac
+: Check for uselongdouble support
case "$ccflags" in
*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
esac
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
;;
esac
break
- fi
+ fi
done
if $test ! -f "$xxx"; then
echo "No -l$thislib."
esac
case "$DEBUGGING" in
--g|$define)
+-g|both|$define)
case "$optimize" in
*-g*) ;;
*) optimize="$optimize -g" ;;
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
*-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.
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
- echo "Checking if your compiler accepts -Wdeclaration-after-statement" 2>&1
- echo 'int main(void) { return 0; }' > gcctest.c
- if $cc -Wdeclaration-after-statement -o gcctest gcctest.c; then
- echo "Yes, it does." 2>&1
- case "$ccflags" in
- *-Wdeclaration-after-statement*)
- echo "Leaving current flags $ccflags alone." 2>&1
- ;;
- *) dflt="$dflt -Wdeclaration-after-statement" ;;
- esac
- else
- echo "Nope, it doesn't, but that's ok." 2>&1
- fi
+ # 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
+ 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
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 ;;
;;
n) echo "OK, that should do.";;
esac
-$rm -f try try.* core
+$rm_try gcctest gcctest.out
: define a shorthand compile call
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='
fi
;;
esac
-$rm -f try try.*
+$rm_try
: check for long long
echo " "
val="$undef"
echo "You do not have long long."
fi
-$rm try.*
+$rm_try
set d_longlong
eval $setvar
fi
if $test "X$longsize" = "X$longlongsize"; then
echo "(That isn't any different from an ordinary long.)"
- fi
+ fi
;;
esac
-$rm -f try.* try
+$rm_try
: see if inttypes.h is available
: we want a real compile instead of Inhdr because some systems
echo "<inttypes.h> NOT found." >&4
val="$undef"
fi
-$rm -f try.c try
+$rm_try
set i_inttypes
eval $setvar
val="$undef"
echo "You do not have int64_t."
fi
-$rm -f try try.*
+$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
;;
esac
-
+: Do we want 64bit support
case "$uselonglong" in
"$define"|true|[yY]*)
cat <<EOM >&4
EOM
use64bitint="$define"
;;
-esac
+esac
case "$use64bits" in
"$define"|true|[yY]*)
cat <<EOM >&4
EOM
use64bitint="$define"
;;
-esac
+esac
case "$use64bitints" in
"$define"|true|[yY]*)
cat <<EOM >&4
EOM
use64bitint="$define"
;;
-esac
+esac
case "$use64bitsint" in
"$define"|true|[yY]*)
cat <<EOM >&4
EOM
use64bitint="$define"
;;
-esac
+esac
case "$uselonglongs" in
"$define"|true|[yY]*)
cat <<EOM >&4
EOM
use64bitint="$define"
;;
-esac
+esac
case "$use64bitsall" in
"$define"|true|[yY]*)
cat <<EOM >&4
EOM
use64bitall="$define"
;;
-esac
+esac
case "$ccflags" in
*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
*) dflt='n' ;;
esac
;;
-esac
+esac
cat <<EOM
You may also choose to try maximal 64-bitness. It means using as much
fi
;;
esac
-$rm -f try.c try
+$rm_try
: check for long doubles
echo " "
val="$undef"
echo "You do not have long double."
fi
-$rm try.*
+$rm_try
set d_longdbl
eval $setvar
echo "That isn't any different from an ordinary double."
echo "I'll keep your setting anyway, but you may see some"
echo "harmless compilation warnings."
- fi
+ fi
;;
esac
-$rm -f try.* try
+$rm_try
: determine the architecture name
echo " "
esac;;
esac'
-: get the patchlevel
-echo " "
-echo "Getting the current patchlevel..." >&4
-if $test -r $rsrc/patchlevel.h;then
- revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
- patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
- subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
- api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
- api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
- api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
- perl_patchlevel=`egrep 'define PERL_PATCHNUM [0-9][0-9]|,"MAINT[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
-else
- revision=0
- patchlevel=0
- subversion=0
- api_revision=0
- api_version=0
- api_subversion=0
- perl_patchlevel=0
- $echo "(You do not have patchlevel.h. Eek.)"
-fi
-if $test -r $rsrc/.patch ; then
- if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
- perl_patchlevel=`cat $rsrc/.patch`
- fi
-fi
-: Define a handy string here to avoid duplication in myconfig.SH and configpm.
-version_patchlevel_string="version $patchlevel subversion $subversion"
-case "$perl_patchlevel" in
-0|'') ;;
-*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
-esac
-
-$echo "(You have $package $version_patchlevel_string.)"
-
-case "$osname" in
-dos|vms)
- : XXX Should be a Configure test for double-dots in filenames.
- version=`echo $revision $patchlevel $subversion | \
- $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
- api_versionstring=`echo $api_revision $api_version $api_subversion | \
- $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
- ;;
-*)
- version=`echo $revision $patchlevel $subversion | \
- $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
- api_versionstring=`echo $api_revision $api_version $api_subversion | \
- $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
- ;;
-esac
-: Special case the 5.005_xx maintenance series, which used 5.005
-: without any subversion label as a subdirectory in $sitelib
-if test "${api_revision}${api_version}${api_subversion}" = "550"; then
- api_versionstring='5.005'
-fi
-
: determine installation style
: For now, try to deduce it from prefix unless it is already set.
: Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
prefixvar=bin
: XXX Bug? -- ignores Configure -Dinstallprefix setting.
: XXX If this is fixed, also fix the "start perl" hunk below, which relies on
-: this via initialinstalllocation
+: this via initialinstalllocation
. ./setprefixvar
case "$userelocatableinc" in
set userelocatableinc
eval $setvar
+initialinstalllocation="$binexp"
: Default prefix is now "up one level from where the binaries are"
case "$userelocatableinc" in
$define|true|[yY]*)
- initialinstalllocation="$binexp"
bin=".../"
binexp=".../"
prefix=".../.."
*) echo "Using $perl5." ;;
esac
+: Set the siteprefix variables
$cat <<EOM
After $package is installed, you may wish to install various
\$archname = "$archname";
EOPL
$cat >> getverlist <<'EOPL'
+# The list found is store twice for each entry: the original name, and
+# the binary broken down version as pack "sss", so sorting is easy and
+# unambiguous. This will work for all versions that have a maximum of
+# three digit groups, separate by '.'s or '_'s. Names are extended with
+# ".0.0" to ensure at least three elements for the pack.
+# -- H.Merijn Brand (m)'06 23-10-2006
+
# Can't have leading @ because metaconfig interprets it as a command!
;@inc_version_list=();
# XXX Redo to do opendir/readdir?
if (-d $stem) {
chdir($stem);
- ;@candidates = glob("5.*");
+ ;@candidates = map {
+ [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*");
}
else {
;@candidates = ();
}
-# XXX ToDo: These comparisons must be reworked when two-digit
-# subversions come along, so that 5.7.10 compares as greater than
-# 5.7.3! By that time, hope that 5.6.x is sufficiently
-# widespread that we can use the built-in version vectors rather
-# than reinventing them here. For 5.6.0, however, we must
-# assume this script will likely be run by 5.005_0x. --AD 1/2000.
+($pversion, $aversion, $vsn5005) = map {
+ pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005";
foreach $d (@candidates) {
- if ($d lt $version) {
- if ($d ge $api_versionstring) {
- unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
+ if ($d->[1] lt $pversion) {
+ if ($d->[1] ge $aversion) {
+ unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]);
}
- elsif ($d ge "5.005") {
- unshift(@inc_version_list, grep { -d } $d);
+ elsif ($d->[1] ge $vsn5005) {
+ unshift(@inc_version_list, grep { -d } $d->[0]);
}
}
else {
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
echo "<malloc.h> NOT found." >&4
val="$undef"
fi
-$rm -f try.c try
+$rm_try
set i_malloc
eval $setvar
voidflags="$ans"
;;
esac
-$rm -f try.* .out
+$rm_try
: check for length of pointer
echo " "
fi
;;
esac
-$rm -f try.c try
+$rm_try
case "$use64bitall" in
"$define"|true|[yY]*)
case "$ptrsize" in
d_sitearch="$define"
fi
+: Set the vendorprefix variables
$cat <<EOM
The installation process will also create a directory for
;;
esac
+: Set the vendorlib variables
case "$vendorprefix" in
'') d_vendorlib="$undef"
vendorlib=''
prefixvar=vendorlib
. ./installprefix
+: Set the vendorarch variables
case "$vendorprefix" in
'') d_vendorarch="$undef"
vendorarch=''
eval $setvar
$rm -f prototype*
+: Check if ansi2knr is required
case "$prototype" in
"$define") ;;
*) ansi2knr='ansi2knr'
;;
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
'') dflt='n';;
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'
{
#ifdef __GLIBC__
# ifdef __GLIBC_MINOR__
-# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
+# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus)
# include <gnu/libc-version.h>
printf("%s\n", gnu_get_libc_version());
# else
gnulibc_version=''
echo "You are not using the GNU C Library"
fi
-$rm -f try try.* glibc.ver
+$rm_try glibc.ver
set d_gnulibc
eval $setvar
;;
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
set dld.h i_dld
eval $inhdr
+: Check if we are using C++
+echo " "
+echo "Checking for C++..." >&4
+$cat >try.c <<'EOCP'
+#include <stdio.h>
+int main(void)
+{
+#ifdef __cplusplus
+ return 0;
+#else
+ return 1;
+#endif
+}
+EOCP
+set try
+if eval $compile_ok && $run ./try; then
+ val="$define"
+ echo "You are using a C++ compiler."
+else
+ val="$undef"
+ echo "You are not using a C++ compiler."
+fi
+$rm_try cplusplus$$
+set d_cplusplus
+eval $setvar
+
: is a C symbol defined?
csym='tlook=$1;
case "$3" in
case "$tx" in
yes)
tval=false;
+ case "$d_cplusplus" in
+ $define) extern_C=\"C\";;
+ esac;
if $test "$runnm" = true; then
if $contains $tlook $tf >/dev/null 2>&1; then
tval=true;
elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
- echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
+ echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
$cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
$test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
- $rm -f try$_exe try.c core core.* try.core;
+ $rm_try;
fi;
else
- echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
+ echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
$cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
- $rm -f try$_exe try.c;
+ $rm_try;
fi;
;;
*)
: see if dlopen exists
xxx_runnm="$runnm"
+xxx_ccflags="$ccflags"
runnm=false
+: with g++ one needs -shared to get is-in-libc to work for dlopen
+case "$gccversion" in
+'') ;;
+*) case "$d_cplusplus" in
+ "$define") ccflags="$ccflags -shared" ;;
+ esac
+ ;;
+esac
set dlopen d_dlopen
eval $inlibc
runnm="$xxx_runnm"
+ccflags="$xxx_ccflags"
+
+: see if this is a unistd.h system
+set unistd.h i_unistd
+eval $inhdr
: determine which dynamic loading, if any, to compile in
echo " "
dflt='n'
usedl="$undef"
;;
-*)
+*)
dflt='n'
case "$d_dlopen" in
$define) dflt='y' ;;
;;
*) case "$osname" in
darwin) dflt='none' ;;
- svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
+ linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
*) dflt='-fpic' ;;
esac ;;
esac ;;
#ifdef I_STDLIB
#include <stdlib.h>
#endif
+#$i_unistd I_UNISTD
+#ifdef I_UNISTD
+#include <unistd.h>
+#endif
int main() {
char b[4];
int i = open("a.out",O_RDONLY);
- if(i == -1)
+ if(i == -1)
exit(1); /* fail */
if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
exit(0); /* succeed (yes, it's ELF) */
echo "I'll use ld to build dynamic libraries."
dflt='ld'
fi
- rm -f try.c a.out
+ $rm_try
;;
*) dflt="$ld"
;;
case "$gccversion" in
'') dflt="$dflt +vnocompatwarnings" ;;
esac
- ;;
- linux|irix*|gnu*) dflt='-shared' ;;
+ ;;
+ linux|irix*|gnu*) dflt="-shared $optimize" ;;
next) dflt='none' ;;
solaris) dflt='-G' ;;
sunos) dflt='-assert nodefinitions' ;;
''|' ') 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)
# a version-specific architecture-dependent library, the version
# number isn't really that important, except for making cc/ld happy.
#
- # A name such as libperl.so.3.1
+ # A name such as libperl.so.10.1
majmin="libperl.$so.$patchlevel.$subversion"
- # A name such as libperl.so.301
+ # A name such as libperl.so.100
majonly=`echo $patchlevel $subversion |
$awk '{printf "%d%02d", $1, $2}'`
majonly=libperl.$so.$majonly
linux*|gnu*) # ld won't link with a bare -lperl otherwise.
dflt=libperl.$so
;;
- cygwin*) # ld links against an importlib
- dflt=libperl$lib_ext
+ cygwin*) # ld links now against the dll directly
+ majmin="cygperl5_${patchlevel}_${subversion}.${so}"
+ majonly=`echo $patchlevel $subversion |
+ $awk '{printf "%03d%03d", $1, $2}'`
+ majonly=cygperl5.$majonly.$so
+ dflt=$majmin
;;
*) # Try to guess based on whether libc has major.minor.
case "$libc" in
xxx=''
tmp_shrpenv=''
if "$useshrplib"; then
- case "$osname" in
+ case "$osname" in
aix)
# We'll set it in Makefile.SH...
;;
# hpux doesn't like the default, either.
tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
;;
+ cygwin)
+ # cygwin needs only ldlibpth
+ ;;
*)
tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
;;
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
: figure out how to guarantee perl startup
: XXX Note that this currently takes advantage of the bug that binexp ignores
-: the Configure -Dinstallprefix setting, which in turn means that under
-: relocatable @INC, initialinstalllocation is what binexp started as.
+: the Configure -Dinstallprefix setting, which in turn means that under
+: relocatable @INC, initialinstalllocation is what binexp started as.
case "$startperl" in
'')
case "$sharpbang" in
I can use the #! construct to start perl on your system. This will
make startup of perl scripts faster, but may cause problems if you
want to share those scripts and perl is not in a standard place
-($initialinstalllocation/perl) on all your platforms. The alternative is to force
-a shell by starting the script with a single ':' character.
+($initialinstalllocation/perl) on all your platforms. The alternative
+is to force a shell by starting the script with a single ':' character.
EOH
case "$versiononly" in
- "$define") dflt="$initialinstalllocation/perl$version";;
+ "$define") dflt="$initialinstalllocation/perl$version";;
*) dflt="$initialinstalllocation/perl";;
esac
rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
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
int main()
{
printf("%d\n", (int)sizeof($lseektype));
- return(0);
+ return(0);
}
EOCP
set try
. ./myread
lseeksize="$ans"
fi
-$rm -f try.c try
+$rm_try
: see what type file positions are declared as in the library
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>
fpossize="$ans"
fi
+: Check for large file support
# Backward compatibility (uselfs is deprecated).
case "$uselfs" in
"$define"|true|[yY]*)
EOM
uselargefiles="$define"
;;
-esac
+esac
case "$lseeksize:$fpossize" in
8:8) cat <<EOM
int main()
{
printf("%d\n", (int)sizeof($lseektype));
- return(0);
+ return(0);
}
EOCP
set try
*_t) zzz="$fpostype" ;;
*) zzz="fpos_t" ;;
esac
- $echo $n "Rechecking the size of $zzz...$c" >&4
+ $echo $n "Rechecking the size of $zzz...$c" >&4
$cat > try.c <<EOCP
#include <sys/types.h>
#include <stdio.h>
. ./myread
fpossize="$ans"
fi
- $rm -f try.c try
+ $rm_try
fi
;;
esac
+: Set the vendorbin variables
case "$vendorprefix" in
'') d_vendorbin="$undef"
vendorbin=''
prefixvar=vendorbin
. ./installprefix
+: Set the vendorhtml1dir variables
case "$vendorprefix" in
'') vendorhtml1dir=''
vendorhtml1direxp=''
prefixvar=vendorhtml1dir
. ./installprefix
+: Set the vendorhtml3dir variables
case "$vendorprefix" in
'') vendorhtml3dir=''
vendorhtml3direxp=''
prefixvar=vendorhtml3dir
. ./installprefix
+: Set the vendorman1dir variables
case "$vendorprefix" in
'') vendorman1dir=''
vendorman1direxp=''
prefixvar=vendorman1dir
. ./installprefix
+: Set the vendorman3dir variables
case "$vendorprefix" in
'') vendorman3dir=''
vendorman3direxp=''
prefixvar=vendorman3dir
. ./installprefix
+: Set the vendorscript variables
case "$vendorprefix" in
'') d_vendorscript="$undef"
vendorscript=''
set qgcvt d_qgcvt
eval $inlibc
+: Check print/scan long double stuff
echo " "
if $test X"$d_longdbl" = X"$define"; then
sSCNfldbl=$sPRIfldbl # expect consistency
fi
-$rm -f try try.*
+$rm_try
fi # d_longdbl
case "$sPRIfldbl" in
-'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
- d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
+'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
+ d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
d_SCNfldbl="$undef";
;;
-*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
- d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
+*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
+ d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
d_SCNfldbl="$define";
;;
esac
}
int main()
-{
- char buf[64];
+{
+ char buf[64];
buf[63] = '\0';
/* This must be 1st test on (which?) platform */
Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
checkit("0.1", buf);
- Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
+ Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
checkit("0.01", buf);
- Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
+ Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
checkit("0.001", buf);
- Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
+ Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
checkit("0.0001", buf);
Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
else
checkit("9e-05", buf);
- Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
+ Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
checkit("1", buf);
- Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
+ Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
checkit("1.1", buf);
- Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
+ Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
checkit("1.01", buf);
- Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
+ Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
checkit("1.001", buf);
- Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
+ Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
checkit("1.0001", buf);
- Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
+ Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
checkit("1.00001", buf);
- Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
+ Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
checkit("1.000001", buf);
- Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
+ Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
checkit("0", buf);
- Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
+ Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
checkit("-1", buf);
/* Some Linux gcvt's give 1.e+5 here. */
- Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
+ Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
checkit("100000", buf);
-
+
/* Some Linux gcvt's give -1.e+5 here. */
- Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
+ Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
checkit("-100000", buf);
- Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
+ Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
checkit("123.456", buf);
/* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
case $xxx_convert in
gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
*) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
- esac
+ esac
done
: then add any others
for xxx_convert in gconvert gcvt sprintf; do
case "$xxx_list" in
*$xxx_convert*) ;;
*) xxx_list="$xxx_list $xxx_convert" ;;
- esac
+ esac
done
case "$d_longdbl$uselongdouble" in
for xxx_convert in $xxx_list; do
echo "Trying $xxx_convert..."
- $rm -f try try$_o
+ $rm -f try try$_o core
set try -DTRY_$xxx_convert
if eval $compile; then
echo "$xxx_convert() found." >&4
d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
*) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
esac
- ;;
+ ;;
esac
fi
+$rm_try
: see if _fwalk exists
set fwalk d__fwalk
ccflags="$ccflags"
prototype="$prototype"
define="$define"
-rm=$rm
+rm_try="$rm_try"
usethreads=$usethreads
i_pthread=$i_pthread
pthread_h_first=$pthread_h_first
$cat >> protochk <<'EOSH'
-$rm -f try.c
+$rm_try
foo="$1"
shift
while test $# -ge 2; do
echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
$cc $optimize $ccflags -c try.c > /dev/null 2>&1
status=$?
-$rm -f try.[co]
+$rm_try
exit $status
EOSH
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
fi;
set $varname;
eval $setvar;
-$rm -f try.c tryout.c'
+$rm_try tryout.c'
: see if sys/types.h has to be included
set sys/types.h i_systypes
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
fi;
set $varname;
eval $setvar;
-$rm -f try.c try.o'
+$rm_try'
: see if we should include time.h, sys/time.h, or both
echo " "
echo "We'll include <sys/time.h>." >&4;;
*) i_systime="$undef";;
esac
- $rm -f try.c try
+ $rm_try
fi
: see if struct tm knows about tm_zone
case "$i_systime$i_time" in
-*$define*)
+*$define*)
echo " "
echo "Checking to see if your struct tm has tm_zone field..." >&4
set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
esac
: see if struct tm knows about tm_gmtoff
case "$i_systime$i_time" in
-*$define*)
+*$define*)
echo " "
echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
eval $setvar
$rm -f attrib*
+: Look for GCC-style attribute format with null format allowed
+case "$d_printf_format_null" in
+'') case "$d_attribute_format" in
+ $define)
+ echo " "
+ echo "Checking whether your compiler allows __printf__ format to be null ..." >&4
+$cat >attrib.c <<EOCP
+#include <stdio.h>
+#$i_stdlib I_STDLIB
+#ifdef I_STDLIB
+#include <stdlib.h>
+#endif
+int null_printf (char* pat,...) __attribute__((__format__(__printf__,1,2)));
+int null_printf (char* pat,...) { return (int)pat; }
+int main () { exit(null_printf(NULL)); }
+EOCP
+ if $cc $ccflags -o attrib attrib.c >attrib.out 2>&1 ; then
+ : run the executable in case it produces a run-time warning
+ if $run ./attrib >>attrib.out 2>&1; then
+ if $contains 'warning' attrib.out >/dev/null 2>&1; then
+ echo "Your C compiler doesn't allow __printf__ format to be null."
+ val="$undef"
+ else
+ echo "Your C compiler allows __printf__ format to be null."
+ val="$define"
+ fi
+ else
+ echo "Your C compiler executable failed with __printf__ format null."
+ val="$undef"
+ fi
+ else
+ echo "Your C compiler fails with __printf__ format null."
+ val="$undef"
+ fi
+ ;;
+ *) val="$undef" ;;
+ esac
+;;
+*) val="$d_printf_format_null" ;;
+esac
+set d_printf_format_null
+eval $setvar
+$rm -f attrib*
+
: Look for GCC-style attribute malloc
case "$d_attribute_malloc" in
'')
set bcopy d_bcopy
eval $inlibc
-: see if this is a unistd.h system
-set unistd.h i_unistd
-eval $inhdr
-
: see if getpgrp exists
set getpgrp d_getpgrp
eval $inlibc
esac
set d_bsdgetpgrp
eval $setvar
-$rm -f try try.*
+$rm_try
: see if setpgrp exists
set setpgrp d_setpgrp
esac
set d_bsdsetpgrp
eval $setvar
-$rm -f try try.*
+$rm_try
+
: Look for GCC-style __builtin_choose_expr
case "$d_builtin_choose_expr" 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
set d_builtin_choose_expr
eval $setvar
-$rm -f try.* try core core.try.*
+$rm_try
: Look for GCC-style __builtin_expect
case "$d_builtin_expect" in
'')
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 d_builtin_expect
eval $setvar
-$rm -f try.* try core core.try.*
+$rm_try
: see if bzero exists
set bzero d_bzero
eval $inlibc
-: see if signal is declared as pointer to function returning int or void
+: see if stdarg is available
echo " "
-xxx=`./findhdr signal.h`
-$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
-if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
- echo "You have int (*signal())() instead of void." >&4
- val="$undef"
-elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
- echo "You have void (*signal())()." >&4
- val="$define"
-elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
- echo "You have int (*signal())() instead of void." >&4
- val="$undef"
-elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
- echo "You have void (*signal())()." >&4
- val="$define"
+if $test `./findhdr stdarg.h`; then
+ echo "<stdarg.h> found." >&4
+ valstd="$define"
else
- case "$d_voidsig" in
- '')
- echo "I can't determine whether signal handler returns void or int..." >&4
- dflt=void
- rp="What type does your signal handler return?"
- . ./myread
- case "$ans" in
- v*) val="$define";;
- *) val="$undef";;
- esac;;
- "$define")
- echo "As you already told me, signal handler returns void." >&4
- val="$define"
- ;;
- *) echo "As you already told me, signal handler returns int." >&4
- val="$undef"
- ;;
- esac
+ echo "<stdarg.h> NOT found." >&4
+ valstd="$undef"
fi
-set d_voidsig
-eval $setvar
-case "$d_voidsig" in
-"$define") signal_t="void";;
-*) signal_t="int";;
-esac
-$rm -f $$.tmp
-: check for ability to cast large floats to 32-bit ints.
+: see if varags is available
echo " "
-echo 'Checking whether your C compiler can cast large floats to int32.' >&4
-if $test "$intsize" -ge 4; then
- xxx=int
+if $test `./findhdr varargs.h`; then
+ echo "<varargs.h> found." >&4
+else
+ echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
+fi
+
+: set up the varargs testing programs
+$cat > varargs.c <<EOP
+#ifdef I_STDARG
+#include <stdarg.h>
+#endif
+#ifdef I_VARARGS
+#include <varargs.h>
+#endif
+
+#ifdef I_STDARG
+int f(char *p, ...)
+#else
+int f(va_alist)
+va_dcl
+#endif
+{
+ va_list ap;
+#ifndef I_STDARG
+ char *p;
+#endif
+#ifdef I_STDARG
+ va_start(ap,p);
+#else
+ va_start(ap);
+ p = va_arg(ap, char *);
+#endif
+ va_end(ap);
+ return 0;
+}
+EOP
+$cat > varargs <<EOP
+$startsh
+if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
+ echo "true"
+else
+ echo "false"
+fi
+$rm -f varargs$_o
+EOP
+chmod +x varargs
+
+: now check which varargs header should be included
+echo " "
+i_varhdr=''
+case "$valstd" in
+"$define")
+ if `./varargs I_STDARG`; then
+ val='stdarg.h'
+ elif `./varargs I_VARARGS`; then
+ val='varargs.h'
+ fi
+ ;;
+*)
+ if `./varargs I_VARARGS`; then
+ val='varargs.h'
+ fi
+ ;;
+esac
+case "$val" in
+'')
+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
+ stdarg.h)
+ val="$define"; set i_stdarg; eval $setvar
+ val="$undef"; set i_varargs; eval $setvar
+ ;;
+ varargs.h)
+ val="$undef"; set i_stdarg; eval $setvar
+ val="$define"; set i_varargs; eval $setvar
+ ;;
+ esac
+ echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
+esac
+$rm -f varargs*
+
+: see if the Compiler supports C99 variadic macros
+case "$i_stdarg$i_stdlib" in
+ "$define$define")
+ echo "You have <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros." >&4
+ $cat >try.c <<EOCP
+#include <stdio.h>
+#include <stdarg.h>
+
+#define foo(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__)
+
+int main() {
+ char buf[20];
+ foo(buf, "%d %g %.*s", 123, 456.0, (int)3, "789fail");
+ puts(buf);
+ return 0;
+}
+EOCP
+ set try
+ if eval $compile && $run ./try 2>&1 >/dev/null; then
+ case "`$run ./try`" in
+ "123 456 789")
+ echo "You have C99 variadic macros." >&4
+ d_c99_variadic_macros="$define"
+ ;;
+ *)
+ echo "You don't have functional C99 variadic macros." >&4
+ d_c99_variadic_macros="$undef"
+ ;;
+ esac
+ else
+ echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
+ d_c99_variadic_macros="$undef"
+ fi
+ $rm_try
+ ;;
+ *)
+ echo "You don't have <stdarg.h> and <stdlib.h>, so not checking for C99 variadic macros." >&4
+ d_c99_variadic_macros="$undef"
+ ;;
+esac
+
+: see if signal is declared as pointer to function returning int or void
+echo " "
+xxx=`./findhdr signal.h`
+$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
+if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
+ echo "You have int (*signal())() instead of void." >&4
+ val="$undef"
+elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
+ echo "You have void (*signal())()." >&4
+ val="$define"
+elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
+ echo "You have int (*signal())() instead of void." >&4
+ val="$undef"
+elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
+ echo "You have void (*signal())()." >&4
+ val="$define"
+else
+ case "$d_voidsig" in
+ '')
+ echo "I can't determine whether signal handler returns void or int..." >&4
+ dflt=void
+ rp="What type does your signal handler return?"
+ . ./myread
+ case "$ans" in
+ v*) val="$define";;
+ *) val="$undef";;
+ esac;;
+ "$define")
+ echo "As you already told me, signal handler returns void." >&4
+ val="$define"
+ ;;
+ *) echo "As you already told me, signal handler returns int." >&4
+ val="$undef"
+ ;;
+ esac
+fi
+set d_voidsig
+eval $setvar
+case "$d_voidsig" in
+"$define") signal_t="void";;
+*) signal_t="int";;
+esac
+$rm -f $$.tmp
+
+: check for ability to cast large floats to 32-bit ints.
+echo " "
+echo 'Checking whether your C compiler can cast large floats to int32.' >&4
+if $test "$intsize" -ge 4; then
+ xxx=int
else
xxx=long
fi
#endif
#include <sys/types.h>
#include <signal.h>
-$signal_t blech(s) int s; { exit(3); }
+$signal_t blech(int s) { exit(3); }
int main()
{
$xxx i32;
char str[16];
signal(SIGFPE, blech);
- /* Don't let compiler optimize the test away. Store the number
+ /* Don't let compiler optimize the test away. Store the number
in a writable string for gcc to pass to sscanf under HP/UX.
*/
sprintf(str, "2147483647");
esac
set d_casti32
eval $setvar
-$rm -f try try.*
+$rm_try
: check for ability to cast negative floats to unsigned
echo " "
#endif
#include <sys/types.h>
#include <signal.h>
-$signal_t blech(s) int s; { exit(7); }
-$signal_t blech_in_list(s) int s; { exit(4); }
-unsigned long dummy_long(p) unsigned long p; { return p; }
-unsigned int dummy_int(p) unsigned int p; { return p; }
-unsigned short dummy_short(p) unsigned short p; { return p; }
+$signal_t blech(int s) { exit(7); }
+$signal_t blech_in_list(int s) { exit(4); }
+unsigned long dummy_long(unsigned long p) { return p; }
+unsigned int dummy_int(unsigned int p) { return p; }
+unsigned short dummy_short(unsigned short p) { return p; }
int main()
{
double f;
unsigned short ashort;
int result = 0;
char str[16];
-
+
/* Frustrate gcc-2.7.2's optimizer which failed this test with
a direct f = -123. assignment. gcc-2.8.0 reportedly
optimized the whole file away
*/
- /* Store the number in a writable string for gcc to pass to
+ /* Store the number in a writable string for gcc to pass to
sscanf under HP/UX.
*/
sprintf(str, "-123");
esac
set d_castneg
eval $setvar
-$rm -f try.*
+$rm_try
: see if vprintf exists
echo " "
echo 'vprintf() found.' >&4
val="$define"
$cat >try.c <<EOF
-#include <varargs.h>
+#$i_stdarg I_STDARG /* Only one of these can be defined by i_varhrd */
+#$i_varargs I_VARARGS
+
#$i_stdlib I_STDLIB
+#$i_unistd I_UNISTD
+
+#ifdef I_STDARG
+# include <stdarg.h>
+#else /* I_VARARGS */
+# include <varargs.h>
+#endif
+
+#ifdef I_UNISTD
+# include <unistd.h>
+#endif
+
#ifdef I_STDLIB
-#include <stdlib.h>
+# include <stdlib.h>
#endif
-int main() { xxx("foo"); }
+#include <stdio.h> /* vsprintf prototype */
+
+#ifdef I_STDARG
+void xxx(int n, ...)
+{
+ va_list args;
+ char buf[10];
+ va_start(args, n);
+ exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
+}
+int main() { xxx(1, "foo"); }
+
+#else /* I_VARARGS */
xxx(va_alist)
va_dcl
{
- va_list args;
- char buf[10];
-
- va_start(args);
- exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
+ va_list args;
+ char buf[10];
+ va_start(args);
+ exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
}
+int main() { xxx("foo"); }
+
+#endif
+
EOF
set try
- if eval $compile && $run ./try; then
- echo "Your vsprintf() returns (int)." >&4
- val2="$undef"
+ if eval $compile_ok; then
+ if $run ./try; then
+ echo "Your vsprintf() returns (int)." >&4
+ val2="$undef"
+ else
+ echo "Your vsprintf() returns (char*)." >&4
+ val2="$define"
+ fi
else
- echo "Your vsprintf() returns (char*)." >&4
- val2="$define"
+ echo 'I am unable to compile the vsprintf() test program.' >&4
+ # We shouldn't get here. If we do, assume the standard signature,
+ # not the old BSD one.
+ echo 'Guessing that vsprintf() returns (int).' >&4
+ val2="$undef"
fi
else
echo 'vprintf() NOT found.' >&4
- val="$undef"
- val2="$undef"
+ val="$undef"
+ val2="$undef"
fi
-$rm -f try try.*
+$rm_try
set d_vprintf
eval $setvar
val=$val2
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
fi;
set $varname;
eval $setvar;
-$rm -f try.c try.o'
+$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
sockethdr="-I/usr/netinclude"
;;
esac
- echo "Found Berkeley sockets interface in lib$net." >&4
+ echo "Found Berkeley sockets interface in lib$net." >&4
if $contains setsockopt libc.list >/dev/null 2>&1; then
d_oldsock="$undef"
else
val="$define"
fi
set d_${enum}; eval $setvar
- $rm -f try.c try
+ $rm_try
done
: see if this is a sys/uio.h system
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
int main()
{
const char *foo;
- const spug y;
+ const spug y = { 0 };
}
EOCP
if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
'') full_csh=$csh ;;
esac
+: see if ctermid exists
+set ctermid d_ctermid
+eval $inlibc
+
: see if ctermid_r exists
set ctermid_r d_ctermid_r
eval $inlibc
'struct dirent') guess2='struct direct' ;;
*) guess2='struct dirent' ;;
esac
-
+
if $contains "$guess1" try.c >/dev/null 2>&1; then
direntrytype="$guess1"
echo "Your directory entries are $direntrytype." >&4
. ./myread
direntrytype="$ans"
fi
-$rm -f try.c
-
+$rm_try
: see if the directory entry stores field length
echo " "
fi
set d_dirnamlen
eval $setvar
-$rm -f try.c
+$rm_try
+
+: Look for DIR.dd_fd
+case "$i_dirent" in
+"$define")
+ echo "Checking to see if DIR has a dd_fd member variable" >&4
+ $cat >try.c <<EOCP
+#$i_stdlib I_STDLIB
+#ifdef I_STDLIB
+#include <stdlib.h>
+#endif
+#include <dirent.h>
+
+int main() {
+ DIR dir;
+ dir.dd_fd = 1;
+ return 0;
+}
+EOCP
+ val=$undef
+ set try
+ if eval $compile; then
+ echo "Yes, it does."
+ val="$define"
+ else
+ echo "No, it does not."
+ val="$undef"
+ fi
+ ;;
+*)
+ echo "You don't have a <dirent.h>, so not checking for dd_fd." >&4
+ val="$undef"
+ ;;
+esac
+set d_dir_dd_fd
+eval $setvar
+$rm_try
: see if this is an sysdir system
set sys/dir.h i_sysdir
set dlfcn.h i_dlfcn
eval $inhdr
+: Check what extension to use for shared libs
case "$usedl" in
$define|y|true)
$cat << EOM
}
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
fi
;;
esac
-
+
$rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
set d_dlsymun
fi
set d_open3
eval $setvar
-$rm -f try try.*
+$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 " "
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 i_fcntl
eval $setvar
+: see if fork exists
+set fork d_fork
+eval $inlibc
+
+: see if pipe exists
+set pipe d_pipe
+eval $inlibc
+
: check for non-blocking I/O stuff
case "$h_sysfile" in
true) echo "#include <sys/file.h>" > head.c;;
;;
*) echo "Using $hint value $o_nonblock.";;
esac
-$rm -f try try.* .out core
+$rm_try
echo " "
echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
case "$eagain" in
'')
+ case "$d_fork:$d_pipe" in
+ define:define)
$cat head.c > try.c
$cat >>try.c <<EOCP
#include <errno.h>
#include <sys/types.h>
#include <signal.h>
-#include <stdio.h>
+#include <stdio.h>
#$i_stdlib I_STDLIB
#ifdef I_STDLIB
#include <stdlib.h>
#else
#include <strings.h>
#endif
-$signal_t blech(x) int x; { exit(3); }
+$signal_t blech(int x) { exit(3); }
EOCP
$cat >> try.c <<'EOCP'
int main()
echo "I can't compile the test program--assuming errno EAGAIN will do."
eagain=EAGAIN
fi
+ ;;
+ *) echo "Can't figure out how to test this--assuming errno EAGAIN will do."
+ eagain=EAGAIN
+ val="$define"
+ ;;
+ esac
set d_eofnblk
eval $setvar
;;
esac
;;
esac
-$rm -f try try.* .out core head.c mtry
+$rm_try head.c mtry
: see if _ptr and _cnt from stdio act std
echo " "
else
echo "Your stdio doesn't appear very std."
fi
-$rm -f try.c try
+$rm_try
# glibc 2.2.90 and above apparently change stdio streams so Perl's
# direct buffer manipulation no longer works. The Configure tests
if (cnt == FILE_cnt(fp)) {
puts("Pass_unchanged");
exit (0);
- }
+ }
if (FILE_cnt(fp) == (cnt - 42)) {
puts("Pass_changed");
exit (0);
else
echo "It seems we can't set ptr in your stdio. Nevermind." >&4
fi
- $rm -f try.c try
+ $rm_try
;;
esac
else
echo "However, it seems to be lacking the _base field."
fi
- $rm -f try.c try
+ $rm_try
;;
esac
set d_stdiobase
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
#include <unistd.h>
#include <fcntl.h>
#include <signal.h>
-$signal_t blech(x) int x; { exit(3); }
+$signal_t blech(int x) { exit(3); }
int main() {
#if defined(F_SETLK) && defined(F_SETLKW)
struct flock flock;
esac
set d_fcntl_can_lock
eval $setvar
-$rm -f try*
-
+$rm_try
: check for fd_set items
$cat <<EOM
d_fd_macros="$undef"
fi
fi
-$rm -f try try.*
+$rm_try
: see if fgetpos exists
set fgetpos d_fgetpos
set d_flockproto flock $i_sysfile sys/file.h
eval $hasproto
-: see if fork exists
-set fork d_fork
-eval $inlibc
-
: see if fp_class exists
set fp_class d_fp_class
eval $inlibc
set fpclassl d_fpclassl
eval $inlibc
-
: check for fpos64_t
echo " "
echo "Checking to see if you have fpos64_t..." >&4
8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
esac
fi
-$rm -f try.* try
+$rm_try
set d_fpos64_t
eval $setvar
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
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 for a working futimes()" >&4
+echo "Checking if you have a working futimes()" >&4
$cat >try.c <<EOCP
#include <stdio.h>
#include <sys/time.h>
`$run ./try`
rc=$?
case "$rc" in
- 0) echo "Yes, it does" >&4
+ 0) echo "Yes, you have" >&4
d_futimes="$define"
;;
- *) echo "No, it has futimes, but it isn't working ($rc) (probably harmless)\n" >&4
+ *) echo "No, you have futimes, but it isn't working ($rc) (probably harmless)" >&4
;;
esac
else
- echo "No, it does not (probably harmless)\n" >&4
+ echo "No, it does not (probably harmless)" >&4
fi
-$rm -f try.* try core core.try.*
+$rm_try
: see if getcwd exists
set getcwd d_getcwd
set getespwnam d_getespwnam
eval $inlibc
-
: see if getfsstat exists
set getfsstat d_getfsstat
eval $inlibc
*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
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 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
echo "Yes, it does ($foo)" >&4
d_libm_lib_version="$define"
else
- echo "No, it does not (probably harmless)\n" >&4
+ echo "No, it does not (probably harmless)" >&4
fi
- $rm -f try.* try core core.try.*
+ $rm_try
;;
esac
;;
esac
+: see if localtime_r calls tzset
+case "$localtime_r_proto" in
+REENTRANT_PROTO*)
+ $cat >try.c <<EOCP
+/* Does our libc's localtime_r call tzset ?
+ * return 0 if so, 1 otherwise.
+ */
+#include <sys/types.h>
+#include <unistd.h>
+#include <time.h>
+#include <string.h>
+#include <malloc.h>
+int main()
+{
+ time_t t = time(0L);
+ char w_tz[]="TZ" "=GMT+5",
+ e_tz[]="TZ" "=GMT-5",
+ *tz_e = (char*)malloc(16),
+ *tz_w = (char*)malloc(16);
+ struct tm tm_e, tm_w;
+ memset(&tm_e,'\0',sizeof(struct tm));
+ memset(&tm_w,'\0',sizeof(struct tm));
+ strcpy(tz_e,e_tz);
+ strcpy(tz_w,w_tz);
+
+ putenv(tz_e);
+ localtime_r(&t, &tm_e);
+
+ putenv(tz_w);
+ localtime_r(&t, &tm_w);
+
+ if( memcmp(&tm_e, &tm_w, sizeof(struct tm)) == 0 )
+ return 1;
+ return 0;
+}
+EOCP
+ set try
+ if eval $compile; then
+ if $run ./try; then
+ d_localtime_r_needs_tzset=undef;
+ else
+ d_localtime_r_needs_tzset=define;
+ fi;
+ else
+ d_localtime_r_needs_tzset=undef;
+ fi;
+ ;;
+ *)
+ d_localtime_r_needs_tzset=undef;
+ ;;
+esac
+$rm_try
+
: see if localeconv exists
set localeconv d_locconv
eval $inlibc
Checking to see whether your modfl() is okay for large values...
EOM
$cat >try.c <<EOCP
-#include <math.h>
+#include <math.h>
#include <stdio.h>
EOCP
if $test "X$d_modflproto" != "X$define"; then
$cat >>try.c <<EOCP
-/* Sigh. many current glibcs provide the function, but do not prototype it. */
+/* Sigh. many current glibcs provide the function, but do not prototype it. */
long double modfl (long double, long double *);
EOCP
fi
int main() {
long double nv = 4294967303.15;
long double v, w;
- v = modfl(nv, &w);
+ v = modfl(nv, &w);
#ifdef __GLIBC__
printf("glibc");
#endif
d_modfl="$undef"
;;
esac
- $rm -f try.* try core core.try.*
+ $rm_try
else
echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
d_modfl="$undef"
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
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 -f try.c try
-
: check for volatile keyword
echo " "
echo 'Checking to see if your C compiler knows about "volatile"...' >&4
fi
set d_volatile
eval $setvar
-$rm -f try.*
-
+$rm_try
+: Check basic sizes
echo " "
$echo "Choosing the C types to be used for Perl's internal types..." >&4
}
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
#include <signal.h>
#ifdef SIGFPE
$volatile int bletched = 0;
-$signal_t blech(s) int s; { bletched = 1; }
+$signal_t blech(int s) { bletched = 1; }
#endif
int main() {
$uvtype u = 0;
if (($uvtype)d != (u - 1))
break;
#ifdef SIGFPE
- if (bletched) {
+ if (bletched)
break;
#endif
- }
}
printf("%d\n", ((i == n) ? -n : i));
exit(0);
nv_preserves_uv_bits="`$run ./try`"
fi
case "$nv_preserves_uv_bits" in
-\-[1-9]*)
+\-[1-9]*)
nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
$echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs." 2>&1
d_nv_preserves_uv="$define"
[1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs." 2>&1
d_nv_preserves_uv="$undef" ;;
*) $echo "Can't figure out how many bits your NVs preserve." 2>&1
- nv_preserves_uv_bits="$undef" ;;
+ nv_preserves_uv_bits="0" ;;
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>
-$rm -f try.* try
+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.
#include <signal.h>
#ifdef SIGFPE
$volatile int bletched = 0;
-$signal_t blech(s) int s; { bletched = 1; }
+$signal_t blech(int s) { bletched = 1; }
#endif
int checkit($nvtype d, char *where) {
printf("(gives %g)\n", d);
return 1;
}
-
+
#ifdef SIGFPE
if (bletched) {
printf("No - something bleched\n");
;;
esac
fi
-
-$rm -f try.* try
-
+$rm_try
: check for off64_t
echo " "
8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
esac
fi
-$rm -f try.* try
+$rm_try
set d_off64_t
eval $setvar
: how to create joinable pthreads
if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
echo " "
- echo "Checking what constant to use for creating joinable pthreads..." >&4
+ echo "Checking what constant to use for creating joinable pthreads..." >&4
$cat >try.c <<'EOCP'
#include <pthread.h>
int main() {
val=PTHREAD_CREATE_UNDETACHED
set old_pthread_create_joinable
eval $setvar
- else
+ else
set try -DJOINABLE=__UNDETACHED
if eval $compile; then
echo "You seem to use __UNDETACHED." >&4
fi
fi
fi
- $rm -f try try.*
+ $rm_try
else
d_old_pthread_create_joinable="$undef"
old_pthread_create_joinable=""
set pause d_pause
eval $inlibc
-: see if pipe exists
-set pipe d_pipe
-eval $inlibc
-
: see if poll exists
set poll d_poll
eval $inlibc
set readlink d_readlink
eval $inlibc
-echo " "
-procselfexe=''
-val="$undef"
-case "$d_readlink" in
-"$define")
- if $issymlink /proc/self/exe ; then
- $ls -l /proc/self/exe > reflect
- if $contains /`basename $ls` reflect >/dev/null 2>&1; then
- echo "You have Linux-like /proc/self/exe."
- procselfexe='"/proc/self/exe"'
- val="$define"
- fi
- fi
- if $issymlink /proc/curproc/file ; then
- $ls -l /proc/curproc/file > reflect
- if $contains /`basename $ls` reflect >/dev/null 2>&1; then
- echo "You have BSD-like /proc/curproc/file."
- procselfexe='"/proc/curproc/file"'
- val="$define"
- fi
- fi
+: Check if exe is symlink to abs path of executing program
+echo " "
+procselfexe=''
+val="$undef"
+case "$d_readlink" in
+"$define")
+ if $issymlink /proc/self/exe ; then
+ $ls -l /proc/self/exe > reflect
+ if $contains /`basename $ls` reflect >/dev/null 2>&1; then
+ echo "You have Linux-like /proc/self/exe."
+ procselfexe='"/proc/self/exe"'
+ val="$define"
+ fi
+ fi
+ if $issymlink /proc/curproc/file ; then
+ $ls -l /proc/curproc/file > reflect
+ if $contains /`basename $ls` reflect >/dev/null 2>&1; then
+ echo "You have BSD-like /proc/curproc/file."
+ procselfexe='"/proc/curproc/file"'
+ val="$define"
+ fi
+ fi
+ ;;
+esac
+$rm -f reflect
+set d_procselfexe
+eval $setvar
+
+: backward compatibility for d_hvfork
+if test X$d_hvfork != X; then
+ d_vfork="$d_hvfork"
+ d_hvfork=''
+fi
+: see if there is a vfork
+val=''
+set vfork val
+eval $inlibc
+
+d_pseudofork=$undef
+
+: Ok, but do we want to use it. vfork is reportedly unreliable in
+: perl on Solaris 2.x, and probably elsewhere.
+case "$val" in
+$define)
+ echo " "
+ case "$usevfork" in
+ false) dflt='n';;
+ *) dflt='y';;
+ esac
+ cat <<'EOM'
+
+Perl can only use a vfork() that doesn't suffer from strict
+restrictions on calling functions or modifying global data in
+the child. For example, glibc-2.1 contains such a vfork()
+that is unsuitable. If your system provides a proper fork()
+call, chances are that you do NOT want perl to use vfork().
+
+EOM
+ rp="Do you still want to use vfork()?"
+ . ./myread
+ case "$ans" in
+ y|Y) ;;
+ *)
+ echo "Ok, we won't use vfork()."
+ val="$undef"
+ ;;
+ esac
;;
esac
-$rm -f reflect
-set d_procselfexe
+set d_vfork
eval $setvar
+case "$d_vfork" in
+$define) usevfork='true';;
+*) usevfork='false';;
+esac
: see whether the pthread_atfork exists
$cat >try.c <<EOP
set pthread_attr_setscope d_pthread_attr_setscope
eval $inlibc
-
: see whether the various POSIXish _yields exist
$cat >try.c <<EOP
#include <pthread.h>
esac
set d_pthread_yield
eval $setvar
-
case "$sched_yield" in
'') sched_yield=undef ;;
esac
-
-$rm -f try try.*
+$rm_try
: see if random_r exists
set random_r d_random_r
EOCP
set try
if eval $compile_ok; then
- if ./try 2>/dev/null; then
+ if $run ./try 2>/dev/null; then
echo "Yes, it can."
val="$define"
else
fi
;;
esac
- $rm -f try.* try core
+ $rm_try
;;
esac
set d_safebcpy
EOCP
set try
if eval $compile_ok; then
- if ./try 2>/dev/null; then
+ if $run ./try 2>/dev/null; then
echo "Yes, it can."
val="$define"
else
fi
;;
esac
- $rm -f try.* try core
+ $rm_try
;;
esac
set d_safemcpy
fi
;;
esac
-$rm -f try.* try core
+$rm_try
set d_sanemcmp
eval $setvar
echo "You do not have union semun in <sys/sem.h>." >&4
val="$undef"
fi
-$rm -f try try.c
+$rm_try
set d_union_semun
eval $setvar
case "$d_sem" in
$define)
echo " "
- $cat > try.h <<END
+ $cat > tryh.h <<END
#ifndef S_IRUSR
# ifdef S_IREAD
# define S_IRUSR S_IREAD
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>
-#include "try.h"
+#include "tryh.h"
#ifndef errno
extern int errno;
#endif
semun) val="$define" ;;
esac
fi
- $rm -f try try.c
+ $rm_try
set d_semctl_semun
eval $setvar
;;
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/stat.h>
-#include "try.h"
+#include "tryh.h"
#include <stdio.h>
#include <errno.h>
#ifndef errno
semid_ds) val="$define" ;;
esac
fi
- $rm -f try try.c
+ $rm_try
set d_semctl_semid_ds
eval $setvar
;;
*) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
;;
esac
- $rm -f try.h
;;
*) val="$undef"
eval $setvar
;;
esac
+$rm_try tryh.h
: see if sendmsg exists
set sendmsg d_sendmsg
set sfio.h i_sfio
eval $inhdr
-
: see if sfio library is available
case "$i_sfio" in
$define)
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
val="$undef"
fi
set d_sigaction; eval $setvar
-$rm -f try try$_o try.c
+$rm_try
+
+: see if this is a sunmath.h system
+set sunmath.h i_sunmath
+eval $inhdr
+
+: see if signbit exists
+$echo $n "Checking to see if you have signbit() available to work on $nvtype... $c" >&4
+$cat >try.c <<EOCP
+#$i_math I_MATH
+#$i_sunmath I_SUNMATH
+#ifdef I_MATH
+# include <math.h>
+#endif
+#ifdef I_SUNMATH /* Solaris special math library */
+# include <sunmath.h>
+#endif
+#define NV $nvtype
+int main(int argc, char **argv)
+{
+ NV x = 0.0;
+ NV y = -0.0;
+ if ((signbit(x) == 0) && (signbit(y) != 0))
+ return 0;
+ else
+ return 1;
+}
+EOCP
+val="$undef"
+set try
+if eval $compile; then
+ if $run ./try; then
+ $echo "Yes." >&4
+ val="$define"
+ else
+ $echo "Signbit seems to be available, but doesn't work as I expected."
+ $echo "I won't use it." >&4
+ val="$undef"
+ fi
+else
+ $echo "Nope." >&4
+ dflt="$undef"
+fi
+set d_signbit
+eval $setvar
+$rm_try
: see if sigprocmask exists
set sigprocmask d_sigprocmask
esac
set d_sigsetjmp
eval $setvar
-$rm -f try.c try
+$rm_try
: see if snprintf exists
set snprintf d_snprintf
d_snprintf="$undef"
d_vsnprintf="$undef"
fi
- $rm -f try.* try core core.try.*
+ $rm_try
;;
esac
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 -f try.* try
+$rm_try
: see if srand48_r exists
set srand48_r d_srand48_r
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
*) echo "No, it doesn't." ;;
esac
+: Check stream access
$cat >&4 <<EOM
Checking how to access stdio streams by file descriptor number...
EOM
esac
fi
done
- $rm -f try.* try$exe_ext
+ $rm_try
esac
case "$stdio_stream_array" in
'') $cat >&4 <<EOM
fi
set d_strctcpy
eval $setvar
-$rm -f try.*
+$rm_try
: see if strerror and/or sys_errlist[] exist
echo " "
#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;
$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;
d_strtoul="$undef"
;;
esac
+ else
+ echo "(I can't seem to compile the test program--assuming it doesn't)"
+ d_strtoul="$undef"
fi
;;
esac
#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;
d_strtoull="$undef"
;;
esac
+ else
+ echo "(I can't seem to compile the test program--assuming it doesn't)"
+ d_strtoull="$undef"
fi
;;
esac
$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;
d_strtouq="$undef"
;;
esac
+ else
+ echo "(I can't seem to compile the test program--assuming it doesn't)"
+ d_strtouq="$undef"
fi
;;
esac
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
set d_tzname
eval $setvar
+: Check if is a multiplatform env
case "$osname" in
next|rhapsody|darwin) multiarch="$define" ;;
esac
EOCP
xxx_prompt=y
set try
- if eval $compile && ./try > /dev/null; then
+ if eval $compile && $run ./try > /dev/null; then
dflt=`$run ./try`
case "$dflt" in
[1-4][1-4][1-4][1-4]|12345678|87654321)
esac
;;
esac
- $rm -f try.c try
+ $rm_try
;;
esac
-
+: Checking 32bit aligndness
$cat <<EOM
Checking to see whether you can access character data unalignedly...
#define U8 $u8type
#include <signal.h>
#ifdef SIGBUS
-$signal_t bletch(s) int s; { exit(4); }
+$signal_t bletch(int s) { exit(4); }
#endif
int main() {
#if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
*) d_u32align="$define" ;;
esac
fi
-$rm -f core core.try.* try.core
+$rm_try
;;
esac
set ustat d_ustat
eval $inlibc
-: backward compatibility for d_hvfork
-if test X$d_hvfork != X; then
- d_vfork="$d_hvfork"
- d_hvfork=''
-fi
-: see if there is a vfork
-val=''
-set vfork val
-eval $inlibc
-
-: Ok, but do we want to use it. vfork is reportedly unreliable in
-: perl on Solaris 2.x, and probably elsewhere.
-case "$val" in
-$define)
- echo " "
- case "$usevfork" in
- false) dflt='n';;
- *) dflt='y';;
- esac
- cat <<'EOM'
-
-Perl can only use a vfork() that doesn't suffer from strict
-restrictions on calling functions or modifying global data in
-the child. For example, glibc-2.1 contains such a vfork()
-that is unsuitable. If your system provides a proper fork()
-call, chances are that you do NOT want perl to use vfork().
-
-EOM
- rp="Do you still want to use vfork()?"
- . ./myread
- case "$ans" in
- y|Y) ;;
- *)
- echo "Ok, we won't use vfork()."
- val="$undef"
- ;;
- esac
- ;;
-esac
-set d_vfork
-eval $setvar
-case "$d_vfork" in
-$define) usevfork='true';;
-*) usevfork='false';;
-esac
-
: see if closedir exists
set closedir d_closedir
eval $inlibc
#endif
#endif
#endif
-#endif
+#endif
int main() { return closedir(opendir(".")); }
EOM
set try
esac
set d_void_closedir
eval $setvar
-$rm -f try try.*
+$rm_try
+
: see if there is a wait4
set wait4 d_wait4
eval $inlibc
rp="Doubles must be aligned on a how-many-byte boundary?"
. ./myread
alignbytes="$ans"
- $rm -f try.c try
+ $rm_try
;;
esac
/* check that db.h & libdb are compatible */
if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
printf("db.h and libdb are incompatible.\n") ;
- exit(3);
+ exit(3);
}
printf("db.h and libdb are compatible.\n") ;
if (Version < 2003004) {
/* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
- exit(2);
+ exit(2);
}
exit(0);
;;
esac
fi
- $rm -f try.*
+ $rm_try
;;
esac
case "$i_db" in
define)
- : Check the return type needed for hash
+ : Check the return type needed for hash
echo " "
echo "Checking return type needed for hash for Berkeley DB ..." >&4
$cat >try.c <<EOCP
echo "Help: I can't seem to compile the db test program." >&4
echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
fi
- $rm -f try.*
+ $rm_try
echo "Your version of Berkeley DB uses $db_hashtype for hash."
;;
*) db_hashtype=u_int32_t
esac
case "$i_db" in
define)
- : Check the return type needed for prefix
+ : Check the return type needed for prefix
echo " "
echo "Checking return type needed for prefix for Berkeley DB ..." >&4
cat >try.c <<EOCP
echo "Help: I can't seem to compile the db test program." >&4
echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
fi
- $rm -f try.*
+ $rm_try
echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
;;
*) db_prefixtype='size_t'
;;
esac
-
: How can we generate normalized random numbers ?
echo " "
echo "Looking for a random number function..." >&4
rp="How many bits does your $randfunc() function produce?"
. ./myread
randbits="$ans"
- $rm -f try.c try
+ $rm_try
drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
seedfunc="s$randfunc"
randseedtype=unsigned
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'
echo "I'm unable to compile the test program." >&4
echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
fi
-$rm -f try try.*
+$rm_try
set ebcdic
eval $setvar
+: Check how to flush
echo " "
$cat >&4 <<EOM
Checking how to flush all pending stdio output...
# endif
# endif
# endif
-# endif
+# endif
# ifdef HAS_STDIO_STREAM_ARRAY
if (open_max > 0) {
long i;
STDIO_STREAM_ARRAY[i]._file < open_max &&
STDIO_STREAM_ARRAY[i]._flag)
fflush(&STDIO_STREAM_ARRAY[i]);
- }
+ }
}
# endif
#endif
fflushall="`$cat try.out`"
fi
fi
- $rm -f core try.core core.try.*
+ $rm_try
case "$fflushall" in
x) $cat >&4 <<EOM
Whew. Flushing explicitly all the stdio streams works.
EOM
;;
esac
-$rm -f try.* try$exe_ext
+$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 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>
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>
fi
+: Check 64bit sizes
echo " "
if $test X"$quadtype" != X; then
if $test X"$sPRId64" = X; then
echo "Cannot figure out how to print 64-bit integers." >&4
fi
-
-$rm -f try try.*
+$rm_try
fi
case "$sPRId64" in
-'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
- d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
+'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
+ d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
;;
-*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
- d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
+*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
+ d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
;;
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
*) groupstype="$gidtype";;
esac
+: MAD = Misc Attribute Definition
if $test $patchlevel -lt 9; then
: MAD is not available in 5.8.x or earlier.
set mad
eval $setvar
+: check whether make sets MAKE
echo " "
echo "Checking if your $make program sets \$(MAKE)..." >&4
case "$make_set_make" in
*maketemp=*) make_set_make='#' ;;
*) make_set_make="MAKE=$make" ;;
esac
- $rm -f testmake.mak
- ;;
-esac
-case "$make_set_make" in
-'#') echo "Yup, it does.";;
-*) echo "Nope, it doesn't.";;
-esac
-
-: see what type is used for mode_t
-rp="What is the type used for file modes for system calls (e.g. fchmod())?"
-set mode_t modetype int stdio.h sys/types.h
-eval $typedef_ask
-
-: see if stdarg is available
-echo " "
-if $test `./findhdr stdarg.h`; then
- echo "<stdarg.h> found." >&4
- valstd="$define"
-else
- echo "<stdarg.h> NOT found." >&4
- valstd="$undef"
-fi
-
-: see if varags is available
-echo " "
-if $test `./findhdr varargs.h`; then
- echo "<varargs.h> found." >&4
-else
- echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
-fi
-
-: set up the varargs testing programs
-$cat > varargs.c <<EOP
-#ifdef I_STDARG
-#include <stdarg.h>
-#endif
-#ifdef I_VARARGS
-#include <varargs.h>
-#endif
-
-#ifdef I_STDARG
-int f(char *p, ...)
-#else
-int f(va_alist)
-va_dcl
-#endif
-{
- va_list ap;
-#ifndef I_STDARG
- char *p;
-#endif
-#ifdef I_STDARG
- va_start(ap,p);
-#else
- va_start(ap);
- p = va_arg(ap, char *);
-#endif
- va_end(ap);
-}
-EOP
-$cat > varargs <<EOP
-$startsh
-if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
- echo "true"
-else
- echo "false"
-fi
-$rm -f varargs$_o
-EOP
-chmod +x varargs
-
-: now check which varargs header should be included
-echo " "
-i_varhdr=''
-case "$valstd" in
-"$define")
- if `./varargs I_STDARG`; then
- val='stdarg.h'
- elif `./varargs I_VARARGS`; then
- val='varargs.h'
- fi
- ;;
-*)
- if `./varargs I_VARARGS`; then
- val='varargs.h'
- fi
- ;;
-esac
-case "$val" in
-'')
-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
- stdarg.h)
- val="$define"; set i_stdarg; eval $setvar
- val="$undef"; set i_varargs; eval $setvar
- ;;
- varargs.h)
- val="$undef"; set i_stdarg; eval $setvar
- val="$define"; set i_varargs; eval $setvar
- ;;
- esac
- echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
+ $rm -f testmake.mak
+ ;;
esac
-$rm -f varargs*
+case "$make_set_make" in
+'#') echo "Yup, it does.";;
+*) echo "Nope, it doesn't.";;
+esac
+
+: see what type is used for mode_t
+rp="What is the type used for file modes for system calls (e.g. fchmod())?"
+set mode_t modetype int stdio.h sys/types.h
+eval $typedef_ask
: see if we need va_copy
echo " "
{
return vfprintf(f, fmt, *valp);
}
-
-int
+
+int
myvfprintf(FILE *f, const char *fmt, va_list val)
{
return ivfprintf(f, fmt, &val);
}
-
+
int
-myprintf(char *fmt, ...)
+myprintf(char *fmt, ...)
{
va_list val;
va_start(val, fmt);
- return myvfprintf(stdout, fmt, val);
-}
+ return myvfprintf(stdout, fmt, val);
+}
int
main(int ac, char **av)
{
signal(SIGSEGV, exit);
- myprintf("%s%cs all right, then\n", "that", '\'');
- exit(0);
+ myprintf("%s%cs all right, then\n", "that", '\'');
+ exit(0);
}
EOCP
set try
need_va_copy="$define"
;;
esac
- $rm -f try.* core core.* *.core *.core.*
+ $rm_try
;;
*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
;;
esac
-: see if the Compiler supports C99 variadic macros
-case "$i_stdarg$i_stdlib" in
- "$define$define")
- echo "You have <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros." >&4
- $cat >try.c <<EOCP
-#include <stdio.h>
-#include <stdarg.h>
-
-#define foo(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__)
-
-int main() {
- char buf[20];
- foo(buf, "%d %g %.*s", 123, 456.0, (int)3, "789fail");
- puts(buf);
- return 0;
-}
-EOCP
- set try
- if eval $compile && $run ./try 2>&1 >/dev/null; then
- case "`$run ./try`" in
- "123 456 789")
- echo "You have C99 variadic macros." >&4
- d_c99_variadic_macros="$define"
- ;;
- *)
- echo "You don't have functional C99 variadic macros." >&4
- d_c99_variadic_macros="$undef"
- ;;
- esac
- else
- echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
- d_c99_variadic_macros="$undef"
- fi
- ;;
- *)
- echo "You don't have <stdarg.h> and <stdlib.h>, so not checking for C99 variadic macros." >&4
- d_c99_variadic_macros="$undef"
- ;;
-esac
-
: see what type is used for size_t
rp="What is the type used for the length parameter for string functions?"
set size_t sizetype 'unsigned int' stdio.h sys/types.h
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*
-: check for type of arguments to select.
+: 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
$define)
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
#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
#define NBITS (NBYTES * 8)
int main() {
- char *s = malloc(NBYTES);
+ char *s = (char *)malloc(NBYTES);
struct timeval t;
int i;
FILE* fp;
val=$ans
selectminbits="$val"
fi
- $rm -f try.* try
+ $rm_try
;;
*) : no select, so pick a harmless default
selectminbits=$safebits
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'
else
xxx=`echo '#include <signal.h>' |
$cppstdin $cppminus $cppflags 2>/dev/null |
- $grep '^[ ]*#.*include' |
- $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
+ $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
-: 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
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
}
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++) {
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
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>
size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
esac
fi
-$rm -f try try.*
+$rm_try
set d_socklen_t
eval $setvar
printf("$dflt\n");
else if (sizeof(Size_t) == sizeof(int))
printf("int\n");
- else
+ else
printf("long\n");
exit(0);
}
. ./myread
ssizetype="$ans"
fi
-$rm -f try try.*
+$rm_try
: 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 " "
;;
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>
echo "(I can't compile the test program--guessing $uidsize.)" >&4
fi
+: Check if UID is signed
echo " "
case "$uidtype" in
*_t) zzz="$uidtype" ;;
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
+
: see if this is a fp.h system
set fp.h i_fp
eval $inhdr
set fp_class.h i_fp_class
eval $inhdr
+: see if gdbm.h is available
+set gdbm.h t_gdbm
+eval $inhdr
+case "$t_gdbm" in
+$define)
+ : see if gdbm_open exists
+ set gdbm_open d_gdbm_open
+ eval $inlibc
+ case "$d_gdbm_open" in
+ $undef)
+ t_gdbm="$undef"
+ echo "We won't be including <gdbm.h>"
+ ;;
+ esac
+ ;;
+esac
+val="$t_gdbm"
+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
i_machcthr="$undef"
fi
-
-
: see if this is a mntent.h system
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 "We won't be including <net/errno.h>." >&4
val="$undef"
fi
- $rm -f try.* try
+ $rm_try
;;
esac
set i_neterrno
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
INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
-Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
+LIBCATAMOUNT Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
pc532 pdp11 PGC PIC plexus PORTAR posix
POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
POSIX_C_SOURCE POSIX_SOURCE POWER
-PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
+PROTOTYPES PWB pyr QNX QK_USER R3000 REENTRANT RES Rhapsody RISC6000
riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
sony sony_news sonyrisc sparc sparclite spectrum
-A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
esac
done
-$rm -f try.c
+$rm_try
EOS
postprocess_cc_v=''
chmod +x ccsym
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 stddef.h i_stddef
eval $inhdr
-: see if this is a sunmath.h system
-set sunmath.h i_sunmath
-eval $inhdr
-
: see if sys/access.h is available
set sys/access.h i_sysaccess
eval $inhdr
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")
;;
esac
-: see if gdbm.h is available
-set gdbm.h t_gdbm
-eval $inhdr
-case "$t_gdbm" in
-$define)
- : see if gdbm_open exists
- set gdbm_open d_gdbm_open
- eval $inlibc
- case "$d_gdbm_open" in
- $undef)
- t_gdbm="$undef"
- echo "We won't be including <gdbm.h>"
- ;;
- esac
- ;;
-esac
-val="$t_gdbm"
-set i_gdbm
-eval $setvar
-
+: Check extensions
echo " "
echo "Looking for extensions..." >&4
: If we are using the old config.sh, known_extensions may contain
: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
find_extensions='
for xxx in *; do
- case "$xxx" in
- DynaLoader|dynaload) ;;
- *)
- if $test -f $xxx/$xxx.xs; then
- known_extensions="$known_extensions $1$xxx";
- elif $test -f $xxx/Makefile.PL; then
- nonxs_extensions="$nonxs_extensions $1$xxx";
- else
- if $test -d $xxx -a $# -lt 10; then
- set $1$xxx/ $*;
- cd "$xxx";
- eval $find_extensions;
- cd ..;
- shift;
- fi;
- fi
- ;;
- esac;
+ case "$xxx" in
+ DynaLoader|dynaload) ;;
+ *)
+ if $test -f $xxx/$xxx.xs -o -f $xxx/$xxx.c; then
+ known_extensions="$known_extensions $1$xxx";
+ elif $test -f $xxx/Makefile.PL; then
+ nonxs_extensions="$nonxs_extensions $1$xxx";
+ else
+ if $test -d $xxx -a $# -lt 10; then
+ set $1$xxx/ $*;
+ cd "$xxx";
+ eval $find_extensions;
+ cd ..;
+ shift;
+ fi;
+ fi
+ ;;
+ esac;
done'
tdir=`pwd`
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"
-set X $nonxs_extensions
-shift
-nonxs_extensions="$*"
+# 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="$*"
+set X $nonxs_extensions
+shift
+nonxs_extensions="$*"
cd "$tdir"
: Now see which are supported on this system.
esac
;;
GDBM_File|gdbm_fil)
- case "$i_gdbm" in
+ case "$i_gdbm" in
$define) avail_ext="$avail_ext $xxx" ;;
esac
;;
I18N/Langinfo|i18n_lan)
- case "$i_langinfo$d_nl_langinfo" in
+ case "$i_langinfo$d_nl_langinfo" in
$define$define) avail_ext="$avail_ext $xxx" ;;
esac
;;
+ IPC/SysV|ipc/sysv)
+ : XXX Do we need a useipcsysv variable here
+ case "${d_msg}${d_sem}${d_shm}" in
+ *"${define}"*) avail_ext="$avail_ext $xxx" ;;
+ esac
+ ;;
NDBM_File|ndbm_fil)
case "$i_ndbm" in
$define)
;;
esac
;;
- ODBM_File|odbm_fil)
+ ODBM_File|odbm_fil)
case "${i_dbm}${i_rpcsvcdbm}" in
*"${define}"*)
- case "$osname-$use64bitint" in
- hpux-define)
- case "$libs" in
- *-ldbm*) avail_ext="$avail_ext $xxx" ;;
+ case "$d_cplusplus" in
+ define) ;; # delete as a function name will not work
+ *) case "$osname-$use64bitint" in
+ hpux-define)
+ case "$libs" in
+ *-ldbm*) avail_ext="$avail_ext $xxx" ;;
+ esac
+ ;;
+ *) avail_ext="$avail_ext $xxx" ;;
esac
;;
- *) avail_ext="$avail_ext $xxx" ;;
esac
;;
esac
;;
- POSIX|posix)
- case "$useposix" in
+ Opcode|opcode)
+ case "$useopcode" in
true|define|y) avail_ext="$avail_ext $xxx" ;;
esac
;;
- Opcode|opcode)
- case "$useopcode" in
+ POSIX|posix)
+ case "$useposix" in
true|define|y) avail_ext="$avail_ext $xxx" ;;
esac
;;
Socket|socket)
- case "$d_socket" in
+ case "$d_socket" in
true|$define|y)
case "$osname" in
beos) ;; # not unless BONE
;;
Sys/Syslog|sys/syslog)
: XXX syslog requires socket
- case "$d_socket" in
+ case "$d_socket" in
true|$define|y) avail_ext="$avail_ext $xxx" ;;
esac
;;
Thread|thread)
case "$usethreads" in
true|$define|y)
- case "$useithreads" in
- $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
+ case "$use5005threads" in
+ $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
esac
esac
;;
- XS/APItest|xs/apitest)
- # This is just for testing. Skip it unless we have dynamic loading.
-
- case "$usedl" in
- $define) avail_ext="$avail_ext $xxx" ;;
- esac
- ;;
- XS/Typemap|xs/typemap)
- # This is just for testing. Skip it unless we have dynamic loading.
- case "$usedl" in
- $define) avail_ext="$avail_ext $xxx" ;;
- esac
- ;;
threads|threads/shared)
# threads and threads::shared are special cases.
# To stop people from asking "Perl 5.8.0 was supposed
# --jhi
avail_ext="$avail_ext $xxx"
;;
- IPC/SysV|ipc/sysv)
- : XXX Do we need a useipcsysv variable here
- case "${d_msg}${d_sem}${d_shm}" in
- *"${define}"*) avail_ext="$avail_ext $xxx" ;;
+ Win32*)
+ case "$osname" in
+ cygwin) avail_ext="$avail_ext $xxx" ;;
+ esac
+ ;;
+ XS/APItest|xs/apitest)
+ # This is just for testing. Skip it unless we have dynamic loading.
+
+ case "$usedl" in
+ $define) avail_ext="$avail_ext $xxx" ;;
+ esac
+ ;;
+ XS/Typemap|xs/typemap)
+ # This is just for testing. Skip it unless we have dynamic loading.
+ case "$usedl" in
+ $define) avail_ext="$avail_ext $xxx" ;;
esac
;;
*) avail_ext="$avail_ext $xxx"
previous)
if test X"$dynamic_ext" != X"$avail_ext"; then
$cat <<EOM
-NOTICE: Your previous config.sh list may be incorrect.
-The extensions now available to you are
+NOTICE: Your previous config.sh list may be incorrect.
+The extensions now available to you are
${avail_ext}
but the default list from your previous config.sh is
- ${dynamic_ext}
+ ${dynamic_ext}
EOM
fi
shift
dflt="$*"
;;
- *) dflt="$static_ext"
+ *) dflt="$static_ext"
;;
esac
;;
*)
$cat <<EOM
-A number of extensions are supplied with $package. Answer "none"
-to include no extensions.
+A number of extensions are supplied with $package. Answer "none"
+to include no extensions.
Note that DynaLoader is always built and need not be mentioned here.
EOM
previous)
if test X"$static_ext" != X"$avail_ext"; then
$cat <<EOM
-NOTICE: Your previous config.sh list may be incorrect.
-The extensions now available to you are
+NOTICE: Your previous config.sh list may be incorrect.
+The extensions now available to you are
${avail_ext}
but the default list from your previous config.sh is
- ${static_ext}
+ ${static_ext}
EOM
fi
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
;;
*) 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'
cf_by='$cf_by'
cf_email='$cf_email'
cf_time='$cf_time'
-charsize='$charsize'
chgrp='$chgrp'
chmod='$chmod'
chown='$chown'
d_builtin_choose_expr='$d_builtin_choose_expr'
d_builtin_expect='$d_builtin_expect'
d_bzero='$d_bzero'
+d_c99_variadic_macros='$d_c99_variadic_macros'
d_casti32='$d_casti32'
d_castneg='$d_castneg'
d_charvspr='$d_charvspr'
d_cmsghdr_s='$d_cmsghdr_s'
d_const='$d_const'
d_copysignl='$d_copysignl'
+d_cplusplus='$d_cplusplus'
d_crypt='$d_crypt'
d_crypt_r='$d_crypt_r'
d_csh='$d_csh'
+d_ctermid='$d_ctermid'
d_ctermid_r='$d_ctermid_r'
d_ctime_r='$d_ctime_r'
d_cuserid='$d_cuserid'
-d_c99_variadic_macros='$d_c99_variadic_macros'
d_dbl_dig='$d_dbl_dig'
d_dbminitproto='$d_dbminitproto'
d_difftime='$d_difftime'
+d_dir_dd_fd='$d_dir_dd_fd'
d_dirfd='$d_dirfd'
d_dirnamlen='$d_dirnamlen'
d_dlerror='$d_dlerror'
d_libm_lib_version='$d_libm_lib_version'
d_link='$d_link'
d_localtime_r='$d_localtime_r'
+d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
d_locconv='$d_locconv'
d_lockf='$d_lockf'
d_longdbl='$d_longdbl'
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_pipe='$d_pipe'
d_poll='$d_poll'
d_portable='$d_portable'
+d_printf_format_null='$d_printf_format_null'
d_procselfexe='$d_procselfexe'
+d_pseudofork='$d_pseudofork'
d_pthread_atfork='$d_pthread_atfork'
d_pthread_attr_setscope='$d_pthread_attr_setscope'
d_pthread_yield='$d_pthread_yield'
d_shmdt='$d_shmdt'
d_shmget='$d_shmget'
d_sigaction='$d_sigaction'
+d_signbit='$d_signbit'
d_sigprocmask='$d_sigprocmask'
d_sigsetjmp='$d_sigsetjmp'
d_sitearch='$d_sitearch'
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'
doublesize='$doublesize'
drand01='$drand01'
drand48_r_proto='$drand48_r_proto'
+dtrace='$dtrace'
dynamic_ext='$dynamic_ext'
eagain='$eagain'
ebcdic='$ebcdic'
i8size='$i8size'
i8type='$i8type'
i_arpainet='$i_arpainet'
+i_assert='$i_assert'
i_bsdioctl='$i_bsdioctl'
i_crypt='$i_crypt'
i_db='$i_db'
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'
readdir_r_proto='$readdir_r_proto'
revision='$revision'
rm='$rm'
+rm_try='$rm_try'
rmail='$rmail'
run='$run'
runnm='$runnm'
+sGMTIME_max='$sGMTIME_max'
+sGMTIME_min='$sGMTIME_min'
sPRIEUldbl='$sPRIEUldbl'
sPRIFUldbl='$sPRIFUldbl'
sPRIGUldbl='$sPRIGUldbl'
use64bitint='$use64bitint'
usecrosscompile='$usecrosscompile'
usedl='$usedl'
+usedtrace='$usedtrace'
usefaststdio='$usefaststdio'
useithreads='$useithreads'
uselargefiles='$uselargefiles'
: 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}"'"'