X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/9802685f01199cb057aa21dd571a78932fb81070..d3383c753168a06bd659309ea5abfd8c6dcc7a08:/Configure?ds=sidebyside diff --git a/Configure b/Configure index a4b4887..29604dd 100755 --- a/Configure +++ b/Configure @@ -11,11 +11,10 @@ # Yes, you may rip this off to use in other distribution packages. This # script belongs to the public domain and cannot be copyrighted. # -# (Note: this Configure script was generated automatically. Rather than +# Note: this Configure script was generated automatically. Rather than # working with this copy of Configure, you may wish to get metaconfig. -# The dist-3.0 package (which contains metaconfig) was posted in -# comp.sources.misc and is available on CPAN under authors/id/RAM so -# you may fetch it yourself from your nearest archive site.) +# The dist package (which contains metaconfig) is available via SVN: +# svn co https://svn.sourceforge.net/svnroot/dist/trunk/dist # # # Though this script was generated by metaconfig, it is OK to send @@ -24,9 +23,9 @@ # See Porting/pumpkin.pod for more information on metaconfig. # -# $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $ +# $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $ # -# Generated on Mon Apr 17 14:14:39 CEST 2006 [metaconfig 3.0 PL70] +# Generated on Mon Sep 15 10:06:16 CEST 2008 [metaconfig 3.5 PL0] # (with additional metaconfig patches by perlbug@perl.org) cat >c1$$ <&4 <&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]'` @@ -133,9 +144,9 @@ if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then fi if test -f /osf_boot -a -f /usr/sbin/setld; then if test X`/usr/bin/uname -s` = XOSF1; then - avoidksh="to avoid Digital UNIX' ksh" - newsh=/bin/sh - unset BIN_SH # if this is 'xpg4' sh will start up ksh + avoidksh="to avoid Digital UNIX' ksh" + newsh=/bin/sh + unset BIN_SH fi fi case "$inksh/$needksh" in @@ -169,17 +180,19 @@ true) esac ;; esac +test -x "${newsh}" || unset newsh -: if needed set CDPATH to a harmless value that is not chatty +: if needed, set CDPATH to a harmless value that is not chatty : avoid bash 2.02 problems with empty CDPATH. case "$CDPATH" in '') ;; *) case "$SHELL" in - *bash*) CDPATH='.' ;; - *) CDPATH='' ;; + *bash*) CDPATH='.' ;; + *) CDPATH='' ;; esac ;; esac + : Configure runs within the UU subdirectory test -d UU || mkdir UU cd UU && rm -f ./* @@ -208,7 +221,6 @@ d_bsd='' d_eunice='' d_xenix='' eunicefix='' -Mcc='' ar='' awk='' bash='' @@ -304,6 +316,7 @@ firstmakefile='' lib_ext='' obj_ext='' path_sep='' +rm_try='' afs='' afsroot='' alignbytes='' @@ -333,7 +346,6 @@ optimize='' cf_email='' cf_by='' cf_time='' -charsize='' contains='' cpp_stuff='' cpplast='' @@ -354,11 +366,13 @@ d_attribute_noreturn='' 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='' @@ -372,21 +386,23 @@ d_void_closedir='' 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='' @@ -547,6 +563,7 @@ d_ldbl_dig='' d_libm_lib_version='' d_link='' d_localtime_r='' +d_localtime_r_needs_tzset='' localtime_r_proto='' d_locconv='' d_lockf='' @@ -683,6 +700,7 @@ d_shmctl='' d_shmdt='' d_shmget='' d_sigaction='' +d_signbit='' d_sigprocmask='' d_sigsetjmp='' usesitecustomize='' @@ -759,6 +777,7 @@ d_tcsetpgrp='' d_telldirproto='' d_time='' timetype='' +d_timegm='' clocktype='' d_times='' d_tmpnam_r='' @@ -778,6 +797,7 @@ d_unsetenv='' d_usleep='' d_usleepproto='' d_ustat='' +d_pseudofork='' d_vfork='' usevfork='' d_voidsig='' @@ -820,6 +840,7 @@ html3dir='' html3direxp='' installhtml3dir='' i_arpainet='' +i_assert='' i_crypt='' db_hashtype='' db_prefixtype='' @@ -849,9 +870,13 @@ i_limits='' 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='' @@ -892,6 +917,7 @@ i_sysmode='' i_sysmount='' i_sysndir='' i_sysparam='' +i_syspoll='' i_sysresrc='' i_syssecrt='' i_sysselct='' @@ -1037,6 +1063,7 @@ i8size='' i8type='' ivsize='' ivtype='' +nv_overflows_integers_at='' nv_preserves_uv_bits='' nvsize='' nvtype='' @@ -1145,6 +1172,10 @@ stdchar='' d_stdio_stream_array='' stdio_stream_array='' sysman='' +sGMTIME_max='' +sGMTIME_min='' +sLOCALTIME_max='' +sLOCALTIME_min='' trnl='' uidformat='' uidsign='' @@ -1153,6 +1184,8 @@ uidtype='' archname64='' use64bitall='' use64bitint='' +dtrace='' +usedtrace='' usefaststdio='' ccflags_uselargefiles='' ldflags_uselargefiles='' @@ -1214,6 +1247,7 @@ yacc='' yaccflags='' CONFIG='' +: Detect odd OSs define='define' undef='undef' smallmach='pdp11 i8086 z8000 i80286 iAPX286' @@ -1243,31 +1277,12 @@ elif test -d c:/. -o -n "$is_os2" ; then _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' @@ -1280,6 +1295,7 @@ glibpth="/lib /usr/lib $xlibpth" 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 @@ -1290,20 +1306,36 @@ plibpth='' 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" @@ -1381,14 +1413,14 @@ if `$sh -c '#' >/dev/null 2>&1`; then 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 @@ -1431,11 +1463,10 @@ else fi rm -f sharp - : Save command line options in file UU/cmdline.opt for later use in : generating config.sh. cat > cmdline.opt <>cmdline.opt < cmdl.opt $arg EOC @@ -1456,8 +1486,6 @@ EOC argn=`expr $argn + 1` args_sep=' ' done -# args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@" -# used by ./hints/os2.sh rm -f cmdl.opt : produce awk script to parse command line options @@ -1545,6 +1573,7 @@ while test $# -gt 0; do fi cd UU shift;; + --help|\ -h) shift; error=true;; -r) shift; reuseval=true;; -s) shift; silent=true; realsilent=true;; @@ -1588,7 +1617,7 @@ while test $# -gt 0; do case "$zzz" in *:*) zzz='' ;; *) xxx=append - zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` + zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'` yyy=`echo "$yyy"|sed 's!=.*!!'` ;; esac ;; @@ -1602,7 +1631,7 @@ while test $# -gt 0; do *) xxx=`echo "$yyy"|sed 's!:.*!!'` yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;; esac - ;; + ;; esac case "$xxx" in append) @@ -1627,7 +1656,7 @@ while test $# -gt 0; do 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;; @@ -1649,6 +1678,14 @@ Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value] -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. @@ -1656,16 +1693,19 @@ Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value] -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 @@ -1700,7 +1740,7 @@ touch optdef.sh 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 @@ -1746,11 +1786,11 @@ case "$src" 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 @@ -1904,11 +1944,13 @@ rm -f .echotmp 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 @@ -1942,8 +1984,8 @@ else fi rm -f missing x?? -echo " " : Find the appropriate value for a newline for tr +echo " " if test -n "$DJGPP"; then trnl='\012' fi @@ -2087,6 +2129,7 @@ persist across sessions for $package. You may safely delete it if you wish. EOF +: See if we are using a devel version and want that xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h` case "$usedevel" in $define|true|[yY]*) ;; @@ -2247,14 +2290,13 @@ for dir in \$*; do 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 @@ -2285,7 +2327,6 @@ tr uniq " trylist=" -Mcc ar bison byacc @@ -2385,7 +2426,7 @@ ln) ;; esac case "$make" in -make) +make) case "$gmake" in gmake) echo "I can't find make or gmake, and my life depends on it." >&4 @@ -2394,7 +2435,7 @@ make) ;; esac ;; -esac +esac case "$gmake" in gmake) ;; *) # We can't have osname yet. @@ -2450,6 +2491,20 @@ FOO ;; esac +# This question was auctioned at YAPC::Europe-2007 in Vienna +# I never promised you could answer it. I only auctioned the question. +cat <trygcc $startsh EOS @@ -2471,15 +2526,36 @@ EOM 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 <&4 </dev/null` $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 @@ -3385,8 +3452,13 @@ EOM $cat <filexp <>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 @@ -3937,7 +4022,7 @@ y) td=$was; tu=$was;; 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";; @@ -3945,6 +4030,7 @@ $undef$define) . ./whoa; eval "$var=\$tu";; *) eval "$var=$val";; esac' +: Check is we will use socks case "$usesocks" in $define|true|[yY]*) dflt='y';; *) dflt='n';; @@ -3960,7 +4046,7 @@ EOM rp='Build Perl for SOCKS?' . ./myread case "$ans" in -y|Y) val="$define" ;; +y|Y) val="$define" ;; *) val="$undef" ;; esac set usesocks @@ -3970,6 +4056,7 @@ case "$usesocks" in $define|true|[yY]*) useperlio="$define";; esac +: Check if we want perlio case "$useperlio" in $define|true|[yY]*|'') dflt='y';; *) dflt='n';; @@ -3988,16 +4075,16 @@ EOM 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]*) @@ -4014,13 +4101,69 @@ EOM ;; 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' ;; @@ -4051,8 +4194,9 @@ esac set usethreads eval $setvar -case "$usethreads" in -$define) +if $test $patchlevel -lt 9; then + case "$usethreads" in + $define) $cat <&4 <&4 <&4 <&4 $cat >try.c < int main() { -#ifdef __GNUC__ +#if defined(__GNUC__) && !defined(__INTEL_COMPILER) #ifdef __VERSION__ printf("%s\n", __VERSION__); #else @@ -4685,11 +4849,14 @@ lib_ext=$_a 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 @@ -4766,7 +4933,7 @@ for thislib in $libswanted; do xxx=$thisdir/lib$thislib.$so $test -f "$xxx" && eval $libscheck $test -f "$xxx" && libstyle=shared - fi + fi if test ! -f "$xxx"; then xxx=$thisdir/lib$thislib$_a $test -f "$xxx" && eval $libscheck @@ -4808,7 +4975,7 @@ for thislib in $libswanted; do ;; esac break - fi + fi done if $test ! -f "$xxx"; then echo "No -l$thislib." @@ -4873,7 +5040,7 @@ case "$EBUGGING" in esac case "$DEBUGGING" in --g|$define) +-g|both|$define) case "$optimize" in *-g*) ;; *) optimize="$optimize -g" ;; @@ -4892,6 +5059,32 @@ case "$DEBUGGING" in both|$define) dflt='-DDEBUGGING' esac +: argument order is deliberate, as the flag will start with - which set could +: think is an option +checkccflag='check=$1; flag=$2; callback=$3; +echo " "; +echo "Checking if your compiler accepts $flag" 2>&1; +echo "int main(void) { return 0; }" > gcctest.c; +if $cc -O2 $flag -o gcctest gcctest.c 2>gcctest.out && ./gcctest; then + echo "Yes, it does." 2>&1; + if $test -s gcctest.out ; then + echo "But your platform does not like it:"; + cat gcctest.out; + else + case "$ccflags" in + *$check*) + echo "Leaving current flags $ccflags alone." 2>&1 + ;; + *) dflt="$dflt $flag"; + eval $callback + ;; + esac + fi +else + echo "Nope, it does not, but that is ok." 2>&1; +fi +' + : We will not override a previous value, but we might want to : augment a hint file case "$hint" in @@ -4903,7 +5096,7 @@ default|recommended) *-g*:old) dflt="$dflt -DDEBUGGING";; esac case "$gccversion" in - 2*) if test -d /etc/conf/kconfig.d && + 2*) if $test -d /etc/conf/kconfig.d && $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 then # Interactive Systems (ISC) POSIX mode. @@ -4914,54 +5107,28 @@ default|recommended) case "$gccversion" in 1*) ;; 2.[0-8]*) ;; - ?*) echo " " - echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1 - echo 'int main(void) { return 0; }' > gcctest.c - if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then - echo "Yes, it does." 2>&1 - case "$ccflags" in - *strict-aliasing*) - echo "Leaving current flags $ccflags alone." 2>&1 - ;; - *) dflt="$dflt -fno-strict-aliasing" ;; - esac - else - echo "Nope, it doesn't, but that's ok." 2>&1 - fi + ?*) set strict-aliasing -fno-strict-aliasing + eval $checkccflag ;; esac # For gcc, adding -pipe speeds up compilations for some, but apparently # some assemblers can't read from stdin. (It also slows down compilations # in other cases, but those are apparently rarer these days.) AD 5/2004. case "$gccversion" in - ?*) echo " " - echo "Checking if your compiler accepts -pipe" 2>&1 - echo 'int main(void) { return 0; }' > gcctest.c - if $cc -pipe -o gcctest gcctest.c; then - echo "Yes, it does." 2>&1 - case "$ccflags" in - *-pipe*) - echo "Leaving current flags $ccflags alone." 2>&1 - ;; - *) dflt="$dflt -pipe" ;; - esac - else - echo "Nope, it doesn't, but that's ok." 2>&1 - fi + ?*) set pipe -pipe + eval $checkccflag + ;; + esac - 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 ;; @@ -5102,6 +5269,15 @@ case "$ldflags" in ;; *) 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 @@ -5168,7 +5344,7 @@ and I got the following output: EOM dflt=y if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then - if $sh -c "$run ./try" >>try.msg 2>&1; then + if $sh -c "$run ./try " >>try.msg 2>&1; then xxx=`$run ./try` case "$xxx" in "Ok") dflt=n ;; @@ -5217,12 +5393,17 @@ y) ;; 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=' @@ -5392,7 +5573,7 @@ EOM fi ;; esac -$rm -f try try.* +$rm_try : check for long long echo " " @@ -5406,7 +5587,7 @@ else val="$undef" echo "You do not have long long." fi -$rm try.* +$rm_try set d_longlong eval $setvar @@ -5437,10 +5618,10 @@ EOCP 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 @@ -5460,7 +5641,7 @@ else echo " NOT found." >&4 val="$undef" fi -$rm -f try.c try +$rm_try set i_inttypes eval $setvar @@ -5483,11 +5664,11 @@ else 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 @@ -5546,7 +5727,7 @@ case "$quadtype" in ;; esac - +: Do we want 64bit support case "$uselonglong" in "$define"|true|[yY]*) cat <&4 @@ -5555,7 +5736,7 @@ case "$uselonglong" in EOM use64bitint="$define" ;; -esac +esac case "$use64bits" in "$define"|true|[yY]*) cat <&4 @@ -5564,7 +5745,7 @@ case "$use64bits" in EOM use64bitint="$define" ;; -esac +esac case "$use64bitints" in "$define"|true|[yY]*) cat <&4 @@ -5573,7 +5754,7 @@ case "$use64bitints" in EOM use64bitint="$define" ;; -esac +esac case "$use64bitsint" in "$define"|true|[yY]*) cat <&4 @@ -5582,7 +5763,7 @@ case "$use64bitsint" in EOM use64bitint="$define" ;; -esac +esac case "$uselonglongs" in "$define"|true|[yY]*) cat <&4 @@ -5591,7 +5772,7 @@ case "$uselonglongs" in EOM use64bitint="$define" ;; -esac +esac case "$use64bitsall" in "$define"|true|[yY]*) cat <&4 @@ -5600,7 +5781,7 @@ case "$use64bitsall" in EOM use64bitall="$define" ;; -esac +esac case "$ccflags" in *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";; @@ -5651,7 +5832,7 @@ case "$use64bitall" in *) dflt='n' ;; esac ;; -esac +esac cat <&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. @@ -6046,6 +6171,8 @@ if $test "X$ansexp" != "X$binexp"; then fi 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 . ./setprefixvar case "$userelocatableinc" in @@ -6070,10 +6197,10 @@ esac 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=".../.." @@ -6277,6 +6404,7 @@ case "$perl5" in *) echo "Using $perl5." ;; esac +: Set the siteprefix variables $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 { @@ -6441,6 +6573,10 @@ case "$inc_version_list" in 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 @@ -6448,6 +6584,11 @@ echo " " $cat >try.c < #include +#$i_mallocmalloc I_MALLOCMALLOC +#ifdef I_MALLOCMALLOC +# include +#endif + int main () { return 0; } EOCP set try @@ -6458,7 +6599,7 @@ else echo " NOT found." >&4 val="$undef" fi -$rm -f try.c try +$rm_try set i_malloc eval $setvar @@ -6556,7 +6697,7 @@ EOM voidflags="$ans" ;; esac -$rm -f try.* .out +$rm_try : check for length of pointer echo " " @@ -6593,7 +6734,7 @@ EOCP fi ;; esac -$rm -f try.c try +$rm_try case "$use64bitall" in "$define"|true|[yY]*) case "$ptrsize" in @@ -6754,6 +6895,7 @@ else d_sitearch="$define" fi +: Set the vendorprefix variables $cat </dev/null 2>&1 \ + && rm -f perldtrace.tmp + then + echo " " + echo "Good: your $dtrace knows about the -h flag." + else + cat >&2 <&2 <&4 cat >try.c <<'EOCP' @@ -7100,7 +7329,7 @@ int main(void) { #ifdef __GLIBC__ # ifdef __GLIBC_MINOR__ -# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 +# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus) # include printf("%s\n", gnu_get_libc_version()); # else @@ -7125,7 +7354,7 @@ 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 @@ -7220,6 +7449,7 @@ case "$nm_so_opt" in ;; esac +: Figure out where the libc is located case "$runnm" in true) : get list of predefined functions in a handy place @@ -7449,31 +7679,31 @@ else 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 | \ @@ -7498,7 +7728,8 @@ define) *) 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 @@ -7510,6 +7741,32 @@ $rm -f libnames libpath set dld.h i_dld eval $inhdr +: Check if we are using C++ +echo " " +echo "Checking for C++..." >&4 +$cat >try.c <<'EOCP' +#include +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 @@ -7525,19 +7782,22 @@ esac; 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; ;; *) @@ -7578,10 +7838,24 @@ esac' : 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 " " @@ -7595,7 +7869,7 @@ $undef|n|false) dflt='n' usedl="$undef" ;; -*) +*) dflt='n' case "$d_dlopen" in $define) dflt='y' ;; @@ -7658,7 +7932,7 @@ EOM ;; *) case "$osname" in darwin) dflt='none' ;; - svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;; + linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;; *) dflt='-fpic' ;; esac ;; esac ;; @@ -7686,10 +7960,14 @@ EOM #ifdef I_STDLIB #include #endif +#$i_unistd I_UNISTD +#ifdef I_UNISTD +#include +#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) */ @@ -7706,7 +7984,7 @@ EOM echo "I'll use ld to build dynamic libraries." dflt='ld' fi - rm -f try.c a.out + $rm_try ;; *) dflt="$ld" ;; @@ -7732,8 +8010,8 @@ EOM 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' ;; @@ -7764,6 +8042,16 @@ EOM ''|' ') 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 @@ -7802,6 +8090,7 @@ EOM ;; esac +: Do we want a shared libperl? also='' case "$usedl" in $undef) @@ -7864,9 +8153,9 @@ true) # 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 @@ -7880,8 +8169,12 @@ true) 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 @@ -7954,7 +8247,7 @@ shrpdir=$archlibexp/CORE xxx='' tmp_shrpenv='' if "$useshrplib"; then - case "$osname" in + case "$osname" in aix) # We'll set it in Makefile.SH... ;; @@ -7977,13 +8270,16 @@ if "$useshrplib"; then # 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 "*) ;; @@ -7991,7 +8287,7 @@ if "$useshrplib"; then cat <&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 @@ -8131,7 +8427,7 @@ You can't have filenames longer than 14 chars. You can't even think about them! EOM val="$undef" -fi +fi set d_flexfnam eval $setvar $rm -rf 123456789abcde* @@ -8416,11 +8712,11 @@ case "$myhostname" in 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 @@ -8489,6 +8785,7 @@ case "$phostname" in ;; esac +: determine the e-mail address of the user who is running us $cat <try.c <&4 +echo "Checking the size of $zzz..." >&4 cat > try.c < #include @@ -8918,6 +9221,7 @@ else fpossize="$ans" fi +: Check for large file support # Backward compatibility (uselfs is deprecated). case "$uselfs" in "$define"|true|[yY]*) @@ -8927,7 +9231,7 @@ case "$uselfs" in EOM uselargefiles="$define" ;; -esac +esac case "$lseeksize:$fpossize" in 8:8) cat <&4 + $echo $n "Rechecking the size of $zzz...$c" >&4 $cat > try.c < #include @@ -9026,11 +9330,12 @@ EOCP . ./myread fpossize="$ans" fi - $rm -f try.c try + $rm_try fi ;; esac +: Set the vendorbin variables case "$vendorprefix" in '') d_vendorbin="$undef" vendorbin='' @@ -9052,6 +9357,7 @@ esac prefixvar=vendorbin . ./installprefix +: Set the vendorhtml1dir variables case "$vendorprefix" in '') vendorhtml1dir='' vendorhtml1direxp='' @@ -9079,6 +9385,7 @@ $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' ' prefixvar=vendorhtml1dir . ./installprefix +: Set the vendorhtml3dir variables case "$vendorprefix" in '') vendorhtml3dir='' vendorhtml3direxp='' @@ -9106,6 +9413,7 @@ $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' ' prefixvar=vendorhtml3dir . ./installprefix +: Set the vendorman1dir variables case "$vendorprefix" in '') vendorman1dir='' vendorman1direxp='' @@ -9130,6 +9438,7 @@ $test X"$vendorman1dir" = "X" && vendorman1dir=' ' prefixvar=vendorman1dir . ./installprefix +: Set the vendorman3dir variables case "$vendorprefix" in '') vendorman3dir='' vendorman3direxp='' @@ -9154,6 +9463,7 @@ $test X"$vendorman3dir" = "X" && vendorman3dir=' ' prefixvar=vendorman3dir . ./installprefix +: Set the vendorscript variables case "$vendorprefix" in '') d_vendorscript="$undef" vendorscript='' @@ -9186,6 +9496,7 @@ prefixvar=vendorscript set qgcvt d_qgcvt eval $inlibc +: Check print/scan long double stuff echo " " if $test X"$d_longdbl" = X"$define"; then @@ -9286,17 +9597,17 @@ else 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 @@ -9372,8 +9683,8 @@ char *got; } int main() -{ - char buf[64]; +{ + char buf[64]; buf[63] = '\0'; /* This must be 1st test on (which?) platform */ @@ -9381,13 +9692,13 @@ int main() 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); @@ -9396,42 +9707,42 @@ int main() 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. */ @@ -9456,14 +9767,14 @@ for xxx_convert in $gconvert_preference; do 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 @@ -9498,7 +9809,7 @@ esac 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 @@ -9531,10 +9842,11 @@ qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;; 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 @@ -9616,7 +9928,7 @@ optimize="$optimize" ccflags="$ccflags" prototype="$prototype" define="$define" -rm=$rm +rm_try="$rm_try" usethreads=$usethreads i_pthread=$i_pthread pthread_h_first=$pthread_h_first @@ -9624,7 +9936,7 @@ EOSH $cat >> protochk <<'EOSH' -$rm -f try.c +$rm_try foo="$1" shift while test $# -ge 2; do @@ -9654,12 +9966,13 @@ echo "$foo" >> try.c 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 @@ -9677,7 +9990,7 @@ else 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 @@ -9687,6 +10000,7 @@ eval $inhdr 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 @@ -9703,7 +10017,7 @@ else 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 " " @@ -9790,11 +10104,11 @@ EOCP echo "We'll include ." >&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 @@ -9811,7 +10125,7 @@ case "$d_tm_tm_zone" in 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 @@ -9916,6 +10230,50 @@ set d_attribute_format 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 < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#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 '') @@ -10092,10 +10450,6 @@ eval $inlibc 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 @@ -10160,7 +10514,7 @@ EOP esac set d_bsdgetpgrp eval $setvar -$rm -f try try.* +$rm_try : see if setpgrp exists set setpgrp d_setpgrp @@ -10226,7 +10580,8 @@ EOP 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 '') @@ -10250,7 +10605,7 @@ int main(void) { EOCP set try - if eval $compile; then + if eval $compile && $run ./try; then echo "Your C compiler supports __builtin_choose_expr." val="$define" else @@ -10263,25 +10618,27 @@ esac 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 ;; @@ -10290,61 +10647,201 @@ esac 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 " 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 " 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 " found." >&4 +else + echo " NOT found, but that's ok (I hope)." >&4 +fi + +: set up the varargs testing programs +$cat > varargs.c < +#endif +#ifdef I_VARARGS +#include +#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 </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 and , so checking for C99 variadic macros." >&4 + $cat >try.c < +#include + +#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 and , 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 @@ -10356,7 +10853,7 @@ $cat >try.c < #include -$signal_t blech(s) int s; { exit(3); } +$signal_t blech(int s) { exit(3); } int main() { $xxx i32; @@ -10365,7 +10862,7 @@ int main() 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"); @@ -10401,7 +10898,7 @@ case "$yyy" in esac set d_casti32 eval $setvar -$rm -f try try.* +$rm_try : check for ability to cast negative floats to unsigned echo " " @@ -10414,11 +10911,11 @@ $cat >try.c < #include -$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; @@ -10427,12 +10924,12 @@ int main() 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"); @@ -10501,7 +10998,7 @@ case "$castflags" in esac set d_castneg eval $setvar -$rm -f try.* +$rm_try : see if vprintf exists echo " " @@ -10509,38 +11006,75 @@ if set vprintf val -f d_vprintf; eval $csym; $val; then echo 'vprintf() found.' >&4 val="$define" $cat >try.c < +#$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 +#else /* I_VARARGS */ +# include +#endif + +#ifdef I_UNISTD +# include +#endif + #ifdef I_STDLIB -#include +# include #endif -int main() { xxx("foo"); } +#include /* 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 @@ -10567,6 +11101,7 @@ eval $inlibc 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 @@ -10583,11 +11118,11 @@ else 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 @@ -10624,7 +11159,7 @@ else 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 @@ -10665,14 +11200,14 @@ EOF 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 @@ -10691,7 +11226,7 @@ typedef struct spug { int drokk; } spug; int main() { const char *foo; - const spug y; + const spug y = { 0 }; } EOCP if $cc -c $ccflags const.c >/dev/null 2>&1 ; then @@ -10808,6 +11343,10 @@ case "$full_csh" in '') 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 @@ -11017,7 +11556,7 @@ case "$guess1" in '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 @@ -11031,8 +11570,7 @@ else . ./myread direntrytype="$ans" fi -$rm -f try.c - +$rm_try : see if the directory entry stores field length echo " " @@ -11046,7 +11584,43 @@ else 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 < +#endif +#include + +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 , 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 @@ -11121,6 +11695,7 @@ runnm="$xxx_runnm" set dlfcn.h i_dlfcn eval $inhdr +: Check what extension to use for shared libs case "$usedl" in $define|y|true) $cat << EOM @@ -11205,9 +11780,9 @@ int main() } EOM : Call the object file tmp-dyna.o in case dlext=o. - if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && - mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && - $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && + if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && + mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && + $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then xxx=`$run ./fred` case $xxx in @@ -11225,7 +11800,7 @@ EOM fi ;; esac - + $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.* set d_dlsymun @@ -11748,7 +12323,25 @@ else fi set d_open3 eval $setvar -$rm -f try try.* +$rm_try + +: script used to emit important warnings +cat >warn <msg +else + cat >msg +fi +echo "*** WARNING:" >&4 +sed -e 's/^/*** /' &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 " " @@ -11762,7 +12355,7 @@ else if $test "$strings" && $test -r "$strings"; then echo "Using instead of ." >&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 @@ -11825,6 +12418,14 @@ esac 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 " > head.c;; @@ -11879,18 +12480,20 @@ EOCP ;; *) 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 < #include #include -#include +#include #$i_stdlib I_STDLIB #ifdef I_STDLIB #include @@ -11913,7 +12516,7 @@ extern int errno; #else #include #endif -$signal_t blech(x) int x; { exit(3); } +$signal_t blech(int x) { exit(3); } EOCP $cat >> try.c <<'EOCP' int main() @@ -12017,6 +12620,12 @@ EOCP 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 ;; @@ -12033,7 +12642,7 @@ EOCP 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 " " @@ -12132,7 +12741,7 @@ if eval $compile && $to try.c; then 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 @@ -12232,7 +12841,7 @@ int main() { if (cnt == FILE_cnt(fp)) { puts("Pass_unchanged"); exit (0); - } + } if (FILE_cnt(fp) == (cnt - 42)) { puts("Pass_changed"); exit (0); @@ -12259,7 +12868,7 @@ EOP else echo "It seems we can't set ptr in your stdio. Nevermind." >&4 fi - $rm -f try.c try + $rm_try ;; esac @@ -12297,7 +12906,7 @@ EOP else echo "However, it seems to be lacking the _base field." fi - $rm -f try.c try + $rm_try ;; esac set d_stdiobase @@ -12336,8 +12945,8 @@ eval $inlibc set fcntl d_fcntl eval $inlibc -echo " " : See if fcntl-based locking works. +echo " " $cat >try.c <try.c < #include #include -$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; @@ -12400,8 +13009,7 @@ EOM esac set d_fcntl_can_lock eval $setvar -$rm -f try* - +$rm_try : check for fd_set items $cat <&4 @@ -12549,7 +13152,7 @@ else 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 @@ -12565,7 +13168,7 @@ eval $inhdr 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 @@ -12586,12 +13189,10 @@ esac 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 @@ -12612,10 +13213,10 @@ case "$longsize" in 8) echo "(Your long is 64 bits, so you could use ftell.)" ;; esac -d_futimes="$undef" : check for a working futimes +d_futimes="$undef" echo " " -echo "Checking for a working futimes()" >&4 +echo "Checking if you have a working futimes()" >&4 $cat >try.c < #include @@ -12636,16 +13237,16 @@ if eval $compile; then `$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 @@ -12655,7 +13256,6 @@ eval $inlibc set getespwnam d_getespwnam eval $inlibc - : see if getfsstat exists set getfsstat d_getfsstat eval $inlibc @@ -12890,7 +13490,7 @@ case "$d_uname$d_gethname" in *define*) dflt=n cat <&4 $cat >try.c <&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 @@ -14327,6 +14929,59 @@ case "$d_localtime_r" in ;; esac +: see if localtime_r calls tzset +case "$localtime_r_proto" in +REENTRANT_PROTO*) + $cat >try.c < +#include +#include +#include +#include +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 @@ -14464,12 +15119,12 @@ $define$define) Checking to see whether your modfl() is okay for large values... EOM $cat >try.c < +#include #include EOCP if $test "X$d_modflproto" != "X$define"; then $cat >>try.c <>try.c <&4 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h @@ -14641,40 +15296,6 @@ eval $inhdr set nl_langinfo d_nl_langinfo eval $inlibc -: check for length of character -echo " " -case "$charsize" in -'') - echo "Checking to see how big your characters are (hey, you never know)..." >&4 - $cat >try.c < -#$i_stdlib I_STDLIB -#ifdef I_STDLIB -#include -#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 @@ -14704,9 +15325,9 @@ else 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 @@ -14763,38 +15384,10 @@ int main() { } EOCP -case "$i8type" in -'') case "$charsize" in - 1) i8type=char - u8type="unsigned char" - i8size=$charsize - u8size=$charsize - ;; - esac - ;; -esac -case "$i8type" in -'') set try -DINT8 - if eval $compile; then - case "`$run ./try`" in - int8_t) i8type=int8_t - u8type=uint8_t - i8size=1 - u8size=1 - ;; - esac - fi - ;; -esac -case "$i8type" in -'') if $test $charsize -ge 1; then - i8type=char - u8type="unsigned char" - i8size=$charsize - u8size=$charsize - fi - ;; -esac +i8type="signed char" +u8type="unsigned char" +i8size=1 +u8size=1 case "$i16type" in '') case "$shortsize" in @@ -14899,7 +15492,7 @@ $cat <try.c #include #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; @@ -14921,10 +15514,9 @@ int main() { if (($uvtype)d != (u - 1)) break; #ifdef SIGFPE - if (bletched) { + if (bletched) break; #endif - } } printf("%d\n", ((i == n) ? -n : i)); exit(0); @@ -14937,7 +15529,7 @@ if eval $compile; then 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" @@ -14945,10 +15537,92 @@ case "$nv_preserves_uv_bits" in [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 <try.c +#include + +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 -$rm -f try.* try +nv_overflows_integers_at='0' +if eval $compile; then + xxx="`$run ./try`" + case "$?" in + 0) + case "$xxx" in + 2*) cat >&4 <&4 <&4 <&4 : volatile so that the compiler has to store it out to memory. @@ -14971,7 +15645,7 @@ $cat <try.c #include #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) { @@ -15027,7 +15701,7 @@ int main(int argc, char **argv) { printf("(gives %g)\n", d); return 1; } - + #ifdef SIGFPE if (bletched) { printf("No - something bleched\n"); @@ -15069,9 +15743,7 @@ EOM ;; esac fi - -$rm -f try.* try - +$rm_try : check for off64_t echo " " @@ -15092,14 +15764,14 @@ else 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 int main() { @@ -15125,7 +15797,7 @@ EOCP 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 @@ -15146,7 +15818,7 @@ EOCP fi fi fi - $rm -f try try.* + $rm_try else d_old_pthread_create_joinable="$undef" old_pthread_create_joinable="" @@ -15156,10 +15828,6 @@ fi 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 @@ -15168,6 +15836,7 @@ eval $inlibc set readlink d_readlink eval $inlibc +: Check if exe is symlink to abs path of executing program echo " " procselfexe='' val="$undef" @@ -15195,6 +15864,54 @@ $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 +set d_vfork +eval $setvar +case "$d_vfork" in +$define) usevfork='true';; +*) usevfork='false';; +esac + : see whether the pthread_atfork exists $cat >try.c < @@ -15227,7 +15944,6 @@ eval $setvar set pthread_attr_setscope d_pthread_attr_setscope eval $inlibc - : see whether the various POSIXish _yields exist $cat >try.c < @@ -15292,12 +16008,10 @@ $define) 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 @@ -15547,7 +16261,7 @@ exit(0); 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 @@ -15558,7 +16272,7 @@ EOCP fi ;; esac - $rm -f try.* try core + $rm_try ;; esac set d_safebcpy @@ -15623,7 +16337,7 @@ exit(0); 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 @@ -15634,7 +16348,7 @@ EOCP fi ;; esac - $rm -f try.* try core + $rm_try ;; esac set d_safemcpy @@ -15690,7 +16404,7 @@ EOCP fi ;; esac -$rm -f try.* try core +$rm_try set d_sanemcmp eval $setvar @@ -15765,7 +16479,7 @@ else echo "You do not have union semun in ." >&4 val="$undef" fi -$rm -f try try.c +$rm_try set d_union_semun eval $setvar @@ -15773,7 +16487,7 @@ eval $setvar case "$d_sem" in $define) echo " " - $cat > try.h < tryh.h < #include #include -#include "try.h" +#include "tryh.h" #ifndef errno extern int errno; #endif @@ -15854,7 +16568,7 @@ END semun) val="$define" ;; esac fi - $rm -f try try.c + $rm_try set d_semctl_semun eval $setvar ;; @@ -15878,7 +16592,7 @@ END #include #include #include -#include "try.h" +#include "tryh.h" #include #include #ifndef errno @@ -15916,7 +16630,7 @@ END semid_ds) val="$define" ;; esac fi - $rm -f try try.c + $rm_try set d_semctl_semid_ds eval $setvar ;; @@ -15928,7 +16642,6 @@ END *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4 ;; esac - $rm -f try.h ;; *) val="$undef" @@ -15942,6 +16655,7 @@ END eval $setvar ;; esac +$rm_try tryh.h : see if sendmsg exists set sendmsg d_sendmsg @@ -16354,7 +17068,6 @@ eval $inlibc set sfio.h i_sfio eval $inhdr - : see if sfio library is available case "$i_sfio" in $define) @@ -16504,8 +17217,8 @@ fi set d_shm eval $setvar -echo " " : see if we have sigaction +echo " " if set sigaction val -f d_sigaction; eval $csym; $val; then echo 'sigaction() found.' >&4 $cat > try.c <&4 +$cat >try.c < +#endif +#ifdef I_SUNMATH /* Solaris special math library */ +# include +#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 @@ -16590,7 +17348,7 @@ EOM esac set d_sigsetjmp eval $setvar -$rm -f try.c try +$rm_try : see if snprintf exists set snprintf d_snprintf @@ -16653,7 +17411,7 @@ EOM d_snprintf="$undef" d_vsnprintf="$undef" fi - $rm -f try.* try core core.try.* + $rm_try ;; esac @@ -16713,7 +17471,6 @@ int main(int argc, char **argv) { EOP set try -d_sprintf_returns_strlen="$undef" if eval $compile; then xxx="`$run ./try`" case "$?" in @@ -16728,9 +17485,11 @@ EOM 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 @@ -16828,24 +17587,21 @@ eval $hasproto 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 @@ -16856,10 +17612,9 @@ case "$d_statfs_s" in 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 @@ -16875,6 +17630,7 @@ case "$d_statfs_f_flags" in *) echo "No, it doesn't." ;; esac +: Check stream access $cat >&4 <&4 < -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; @@ -17125,7 +17881,7 @@ EOM $cat >try.c <<'EOCP' #include #include -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; @@ -17186,6 +17942,9 @@ EOM d_strtoul="$undef" ;; esac + else + echo "(I can't seem to compile the test program--assuming it doesn't)" + d_strtoul="$undef" fi ;; esac @@ -17205,7 +17964,7 @@ EOM #define strtoull __strtoull #endif #include -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; @@ -17240,6 +17999,9 @@ EOM d_strtoull="$undef" ;; esac + else + echo "(I can't seem to compile the test program--assuming it doesn't)" + d_strtoull="$undef" fi ;; esac @@ -17256,7 +18018,7 @@ EOM $cat >try.c <<'EOCP' #include #include -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; @@ -17292,6 +18054,9 @@ EOM d_strtouq="$undef" ;; esac + else + echo "(I can't seem to compile the test program--assuming it doesn't)" + d_strtouq="$undef" fi ;; esac @@ -17352,6 +18117,10 @@ if test "X$d_time" = X -o X"$timetype" = X; then 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 @@ -17480,6 +18249,7 @@ fi set d_tzname eval $setvar +: Check if is a multiplatform env case "$osname" in next|rhapsody|darwin) multiarch="$define" ;; esac @@ -17538,7 +18308,7 @@ int main() 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) @@ -17566,11 +18336,11 @@ EOM esac ;; esac - $rm -f try.c try + $rm_try ;; esac - +: Checking 32bit aligndness $cat < #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 @@ -17670,7 +18440,7 @@ else *) d_u32align="$define" ;; esac fi -$rm -f core core.try.* try.core +$rm_try ;; esac @@ -17703,52 +18473,6 @@ eval $hasproto 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 @@ -17783,7 +18507,7 @@ case "$d_closedir" in #endif #endif #endif -#endif +#endif int main() { return closedir(opendir(".")); } EOM set try @@ -17806,7 +18530,8 @@ EOM 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 @@ -17885,7 +18610,7 @@ EOCP rp="Doubles must be aligned on a how-many-byte boundary?" . ./myread alignbytes="$ans" - $rm -f try.c try + $rm_try ;; esac @@ -17964,7 +18689,7 @@ int main(int argc, char *argv[]) /* 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") ; @@ -17976,7 +18701,7 @@ int main(int argc, char *argv[]) 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); @@ -18015,13 +18740,13 @@ EOCP ;; 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 <&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 @@ -18066,7 +18791,7 @@ EOCP 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 <&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 @@ -18216,7 +18940,7 @@ EOCP 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 @@ -18241,6 +18965,7 @@ EOCP esac done +: Determine if this is an EBCDIC system echo " " echo "Determining whether or not we are on an EBCDIC system..." >&4 $cat >try.c <<'EOM' @@ -18264,10 +18989,11 @@ else 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 < 0) { long i; @@ -18336,7 +19062,7 @@ int main() { STDIO_STREAM_ARRAY[i]._file < open_max && STDIO_STREAM_ARRAY[i]._flag) fflush(&STDIO_STREAM_ARRAY[i]); - } + } } # endif #endif @@ -18505,7 +19231,7 @@ EOM fflushall="`$cat try.out`" fi fi - $rm -f core try.core core.try.* + $rm_try case "$fflushall" in x) $cat >&4 <&4 +echo "Checking the size of $zzz..." >&4 cat > try.c < #include @@ -18625,12 +19352,13 @@ else fi +: Check if GID is signed echo " " case "$gidtype" in *_t) zzz="$gidtype" ;; *) zzz="gid" ;; esac -echo "Checking the sign of $zzz..." >&4 +echo "Checking the sign of $zzz..." >&4 cat > try.c < #include @@ -18662,6 +19390,7 @@ else fi +: Check 64bit sizes echo " " if $test X"$quadtype" != X; then @@ -18804,21 +19533,20 @@ fi 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 @@ -18877,6 +19605,7 @@ case "$ivdformat" in ;; esac +: Check format string for GID echo " " $echo "Checking the format string to be used for gids..." >&4 @@ -18924,7 +19653,6 @@ eval $inlibc set setgroups d_setgrps eval $inlibc - : Find type of 2nd arg to 'getgroups()' and 'setgroups()' echo " " case "$d_getgrps$d_setgrps" in @@ -18945,6 +19673,7 @@ EOM *) groupstype="$gidtype";; esac +: MAD = Misc Attribute Definition if $test $patchlevel -lt 9; then : MAD is not available in 5.8.x or earlier. @@ -18978,6 +19707,7 @@ esac set mad eval $setvar +: check whether make sets MAKE echo " " echo "Checking if your $make program sets \$(MAKE)..." >&4 case "$make_set_make" in @@ -19003,104 +19733,6 @@ 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 " found." >&4 - valstd="$define" -else - echo " NOT found." >&4 - valstd="$undef" -fi - -: see if varags is available -echo " " -if $test `./findhdr varargs.h`; then - echo " found." >&4 -else - echo " NOT found, but that's ok (I hope)." >&4 -fi - -: set up the varargs testing programs -$cat > varargs.c < -#endif -#ifdef I_VARARGS -#include -#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 </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 we need va_copy echo " " case "$i_stdarg" in @@ -19119,90 +19751,50 @@ ivfprintf(FILE *f, const char *fmt, va_list *valp) { 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 if eval $compile && $run ./try 2>&1 >/dev/null; then case "`$run ./try`" in "that's all right, then") - okay=yes - ;; - esac - fi - case "$okay" in - yes) echo "It seems that you don't need va_copy()." >&4 - need_va_copy="$undef" - ;; - *) echo "It seems that va_copy() or similar will be needed." >&4 - need_va_copy="$define" - ;; - esac - $rm -f try.* core core.* *.core *.core.* - ;; -*) echo "You don't have , 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 and , so checking for C99 variadic macros." >&4 - $cat >try.c < -#include - -#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" - ;; + okay=yes + ;; + esac + fi + case "$okay" in + yes) echo "It seems that you don't need va_copy()." >&4 + need_va_copy="$undef" + ;; + *) echo "It seems that va_copy() or similar will be needed." >&4 + need_va_copy="$define" + ;; 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 and , so not checking for C99 variadic macros." >&4 - d_c99_variadic_macros="$undef" - ;; + $rm_try + ;; +*) echo "You don't have , not checking for va_copy()." >&4 + ;; esac : see what type is used for size_t @@ -19359,9 +19951,6 @@ case "$pager" in esac ;; *) dflt="$pager" - : Instruct ./getfile to trust the hinted or previous pager value, - : even if it does not begin with a slash. For example, on os2, - : pager might be cmd /c more. See comments in UU/getfile. fn="f/($pager)" ;; esac @@ -19430,7 +20019,162 @@ else 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 and localtime accept +echo "Checking max offsets that gmtime () accepts" + +case $i_values in + define) yyy="#include " ;; + *) yyy="" ;; + esac + +$cat >try.c < +#include +#include +$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); + } /* check_max */ + +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); + } /* check_min */ + +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 + eval `$run ./try` +else + echo "Cannot determine sGMTIME_max and sGMTIME_min." >&4 + fi +$rm_try + +echo "Checking max offsets that localtime () accepts" + +$cat >try.c < +#include +#include +$yyy + +int i; +struct tm *tmp; +time_t pt; + +void local_check (time_t t) +{ + tmp = localtime (&t); + if (tmp == NULL || tmp->tm_year < -1900) + tmp = NULL; + else + pt = t; + } /* local_check */ + +int check_max () +{ + tmp = NULL; + pt = 0; +#ifdef MAXLONG + local_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; + local_check (x); + } + } + printf ("sLOCALTIME_max=%ld\n", pt); + return (0); + } /* check_max */ + +int check_min () +{ + tmp = NULL; + pt = 0; +#ifdef MINLONG + local_check (MINLONG); +#endif + if (tmp == NULL) { + for (i = 36; i >= 0; i--) { + time_t x = pt - ((time_t)1 << i); + if (x > 0) continue; + local_check (x); + } + } + printf ("sLOCALTIME_min=%ld\n", pt); + return (0); + } /* check_min */ + +int main (int argc, char *argv[]) +{ + check_max (); + check_min (); + return (0); + } /* main */ +EOCP +set try +if eval $compile; then + eval `$run ./try` +else + echo "Cannot determine sLOCALTIME_max and sLOCALTIME_min." >&4 + fi +$rm_try + +: check for type of arguments to select. case "$selecttype" in '') case "$d_select" in $define) @@ -19439,7 +20183,7 @@ case "$selecttype" in Checking to see what type of arguments are accepted by select(). EOM hdrs="$define sys/types.h - $i_systime sys/time.h + $i_systime sys/time.h $i_sysselct sys/select.h $d_socket sys/socket.h" : The first arg can be int, unsigned, or size_t @@ -19525,7 +20269,7 @@ $selecttype b; #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; @@ -19578,7 +20322,7 @@ EOM val=$ans selectminbits="$val" fi - $rm -f try.* try + $rm_try ;; *) : no select, so pick a harmless default selectminbits=$safebits @@ -19588,28 +20332,20 @@ EOM 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 ' | $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 @@ -19720,14 +20456,14 @@ $1 ~ /^NSIG$/ { nsig = $2 } if (sig_name[$2]) { dup_name[ndups] = $1 dup_num[ndups] = $2 - ndups++ + ndups++ } else { sig_name[$2] = $1 sig_num[$2] = $2 } } -END { +END { if (nsig == 0) { nsig = maxsig + 1 } @@ -19737,7 +20473,7 @@ END { printf("%s %d\n", sig_name[n], sig_num[n]) } else { - printf("NUM%d %d\n", n, n) + printf("NUM%d %d\n", n, n) } } for (n = 0; n < ndups; n++) { @@ -19757,7 +20493,8 @@ $cat >>signal_cmd <<'EOS' 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 @@ -19857,14 +20594,15 @@ echo $sig_name | $awk \ printf "\n" }' sig_size=`echo $sig_name | awk '{print NF}'` -$rm -f signal signal.c signal.awk signal.lst signal_cmd +$rm -f signal signal.c signal.awk signal.lst signal_cmd +: Check size of size echo " " case "$sizetype" in *_t) zzz="$sizetype" ;; *) zzz="filesize" ;; esac -echo "Checking the size of $zzz..." >&4 +echo "Checking the size of $zzz..." >&4 cat > try.c < #include @@ -19916,7 +20654,7 @@ else 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 @@ -19988,7 +20726,7 @@ int main() printf("$dflt\n"); else if (sizeof(Size_t) == sizeof(int)) printf("int\n"); - else + else printf("long\n"); exit(0); } @@ -20012,12 +20750,11 @@ EOM . ./myread ssizetype="$ans" fi -$rm -f try try.* +$rm_try : see what type of char stdio uses. echo " " -echo '#include ' > stdio.c -$cppstdin $cppminus < stdio.c > stdioh +echo '#include ' | $cppstdin $cppminus > stdioh if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then echo "Your stdio uses unsigned chars." >&4 stdchar="unsigned char" @@ -20025,7 +20762,7 @@ else 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 " " @@ -20051,12 +20788,13 @@ uid_t) echo "uid_t found." ;; ;; esac +: Check size of UID echo " " case "$uidtype" in *_t) zzz="$uidtype" ;; *) zzz="uid" ;; esac -echo "Checking the size of $zzz..." >&4 +echo "Checking the size of $zzz..." >&4 cat > try.c < #include @@ -20085,6 +20823,7 @@ else echo "(I can't compile the test program--guessing $uidsize.)" >&4 fi +: Check if UID is signed echo " " case "$uidtype" in *_t) zzz="$uidtype" ;; @@ -20122,7 +20861,7 @@ else fi - +: Check format string for UID echo " " $echo "Checking the format string to be used for uids..." >&4 @@ -20161,7 +20900,7 @@ case "$uidsign" in ;; esac - +: Check if site customization support was requested case "$usesitecustomize" in $define|true|[Yy]*) usesitecustomize="$define" @@ -20202,6 +20941,10 @@ case "$yacc" in ;; esac +: see if this is a assert.h system +set assert.h i_assert +eval $inhdr + : see if this is a fp.h system set fp.h i_fp eval $inhdr @@ -20210,6 +20953,55 @@ 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 " + ;; + 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 " + 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 @@ -20229,46 +21021,10 @@ else 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 ' 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 " - ;; - esac - ;; -esac -val="$t_ndbm" -set i_ndbm -eval $setvar - : see if net/errno.h is available val='' set net/errno.h val @@ -20292,7 +21048,7 @@ EOM echo "We won't be including ." >&4 val="$undef" fi - $rm -f try.* try + $rm_try ;; esac set i_neterrno @@ -20310,6 +21066,7 @@ eval $inhdr set prot.h i_prot eval $inhdr +: Preprocessor symbols echo " " $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 $cat <<'EOSH' > Cppsym.know @@ -20335,7 +21092,7 @@ IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64 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 @@ -20354,7 +21111,7 @@ pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc 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 @@ -20474,7 +21231,7 @@ do -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 @@ -20550,14 +21307,14 @@ case "$val3" in echo " found." >&4 else echo "System is pyramid with BSD universe." - echo " not found--you could have problems." >&4 + ./warn " not found--you could have problems." fi;; *) if $test `./findhdr termio.h`; then val="$define" echo " found." >&4 else echo "System is pyramid with USG universe." - echo " not found--you could have problems." >&4 + ./warn " not found--you could have problems." fi;; esac elif ./usg; then @@ -20568,7 +21325,7 @@ case "$val3" in echo " found." >&4 val2="$define" else -echo "Neither nor found--you could have problems." >&4 + ./warn "Neither nor found--cross fingers!" fi else if $test `./findhdr sgtty.h`; then @@ -20578,7 +21335,7 @@ echo "Neither nor found--you could have problems." >&4 echo " found." >&4 val="$define" else -echo "Neither nor found--you could have problems." >&4 + ./warn "Neither nor found--cross fingers!" fi fi;; esac @@ -20590,10 +21347,6 @@ val=$val3; set i_termios; eval $setvar 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 @@ -20639,16 +21392,18 @@ fi 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 @@ -20665,7 +21420,6 @@ 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 @@ -20682,10 +21436,6 @@ 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") @@ -20697,26 +21447,7 @@ case "$d_vfork" in ;; 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 " - ;; - 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 @@ -20732,40 +21463,42 @@ nonxs_extensions='' : 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. @@ -20778,15 +21511,21 @@ for xxx in $known_extensions ; do 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) @@ -20801,32 +21540,36 @@ for xxx in $known_extensions ; do ;; 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 @@ -20837,31 +21580,18 @@ for xxx in $known_extensions ; do ;; 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 @@ -20876,10 +21606,22 @@ for xxx in $known_extensions ; do # --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" @@ -20968,11 +21710,11 @@ EOM previous) if test X"$dynamic_ext" != X"$avail_ext"; then $cat <&4 . ./config.arch fi @@ -21185,13 +21927,16 @@ $startsh # Configured by : $cf_by # Target system : $myuname +EOT +$test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh +$spitshell <>config.sh + Author='$Author' Date='$Date' Header='$Header' Id='$Id' Locker='$Locker' Log='$Log' -Mcc='$Mcc' RCSfile='$RCSfile' Revision='$Revision' Source='$Source' @@ -21237,7 +21982,6 @@ ccversion='$ccversion' cf_by='$cf_by' cf_email='$cf_email' cf_time='$cf_time' -charsize='$charsize' chgrp='$chgrp' chmod='$chmod' chown='$chown' @@ -21299,6 +22043,7 @@ d_bsdsetpgrp='$d_bsdsetpgrp' 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' @@ -21311,16 +22056,18 @@ d_closedir='$d_closedir' 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' @@ -21454,6 +22201,7 @@ d_ldbl_dig='$d_ldbl_dig' 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' @@ -21496,6 +22244,7 @@ d_msgsnd='$d_msgsnd' 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' @@ -21512,7 +22261,9 @@ d_phostname='$d_phostname' 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' @@ -21592,6 +22343,7 @@ d_shmctl='$d_shmctl' 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' @@ -21650,6 +22402,7 @@ d_tcsetpgrp='$d_tcsetpgrp' 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' @@ -21697,6 +22450,7 @@ dlsrc='$dlsrc' doublesize='$doublesize' drand01='$drand01' drand48_r_proto='$drand48_r_proto' +dtrace='$dtrace' dynamic_ext='$dynamic_ext' eagain='$eagain' ebcdic='$ebcdic' @@ -21778,6 +22532,7 @@ i64type='$i64type' i8size='$i8size' i8type='$i8type' i_arpainet='$i_arpainet' +i_assert='$i_assert' i_bsdioctl='$i_bsdioctl' i_crypt='$i_crypt' i_db='$i_db' @@ -21790,6 +22545,8 @@ i_float='$i_float' 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' @@ -21799,6 +22556,7 @@ i_limits='$i_limits' 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' @@ -21833,6 +22591,7 @@ i_sysmode='$i_sysmode' 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' @@ -21976,6 +22735,7 @@ nroff='$nroff' 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' @@ -22026,9 +22786,14 @@ readdir64_r_proto='$readdir64_r_proto' 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' +sLOCALTIME_max='$sLOCALTIME_max' +sLOCALTIME_min='$sLOCALTIME_min' sPRIEUldbl='$sPRIEUldbl' sPRIFUldbl='$sPRIFUldbl' sPRIGUldbl='$sPRIGUldbl' @@ -22155,6 +22920,7 @@ use64bitall='$use64bitall' use64bitint='$use64bitint' usecrosscompile='$usecrosscompile' usedl='$usedl' +usedtrace='$usedtrace' usefaststdio='$usefaststdio' useithreads='$useithreads' uselargefiles='$uselargefiles' @@ -22227,8 +22993,9 @@ echo "PERL_CONFIG_SH=true" >>config.sh : propagate old symbols if $test -f UU/config.sh; then 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 @@ -22237,7 +23004,7 @@ if $test -f UU/config.sh; then cat <>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}"'"'