X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Configure;h=3658695029fd3dface2e5b8968fa40cf51ccae91;hb=b3c649451aa23903a1f1aa5b0d54e8244611b239;hp=ae09a0ed07db62d18212219ff7e98b240bd55b75;hpb=bff98e240ae94e05cc03de1adde32b5bee958718;p=p5sagit%2Fp5-mst-13.2.git diff --git a/Configure b/Configure index ae09a0e..3658695 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 Fri Nov 4 17:55:32 CET 2005 [metaconfig 3.0 PL70] +# Generated on Mon Jan 14 17:33:05 CET 2008 [metaconfig 3.0 PL70] # (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 ./* @@ -304,6 +317,7 @@ firstmakefile='' lib_ext='' obj_ext='' path_sep='' +rm_try='' afs='' afsroot='' alignbytes='' @@ -319,7 +333,9 @@ d_atoll='' baserev='' bin='' binexp='' +initialinstalllocation='' installbin='' +userelocatableinc='' byteorder='' cc='' ccflags='' @@ -331,7 +347,6 @@ optimize='' cf_email='' cf_by='' cf_time='' -charsize='' contains='' cpp_stuff='' cpplast='' @@ -352,9 +367,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='' @@ -368,12 +387,14 @@ 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='' @@ -382,6 +403,7 @@ d_cuserid='' d_dbl_dig='' d_dbminitproto='' d_difftime='' +d_dir_dd_fd='' d_dirfd='' d_dlerror='' d_dlopen='' @@ -542,6 +564,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='' @@ -678,9 +701,12 @@ d_shmctl='' d_shmdt='' d_shmget='' d_sigaction='' +d_signbit='' d_sigprocmask='' d_sigsetjmp='' usesitecustomize='' +d_snprintf='' +d_vsnprintf='' d_sockatmark='' d_sockatmarkproto='' d_msg_ctrunc='' @@ -771,6 +797,7 @@ d_unsetenv='' d_usleep='' d_usleepproto='' d_ustat='' +d_pseudofork='' d_vfork='' usevfork='' d_voidsig='' @@ -813,6 +840,7 @@ html3dir='' html3direxp='' installhtml3dir='' i_arpainet='' +i_assert='' i_crypt='' db_hashtype='' db_prefixtype='' @@ -915,6 +943,7 @@ i_stdarg='' i_varargs='' i_varhdr='' i_vfork='' +d_inc_version_list='' inc_version_list='' inc_version_list_init='' installprefix='' @@ -958,6 +987,10 @@ sPRIgldbl='' sSCNfldbl='' lseeksize='' lseektype='' +mad='' +madlyh='' +madlyobj='' +madlysrc='' make_set_make='' d_mymalloc='' freetype='' @@ -1090,6 +1123,7 @@ sig_name_init='' sig_num='' sig_num_init='' sig_size='' +d_sitearch='' installsitearch='' sitearch='' sitearchexp='' @@ -1140,6 +1174,8 @@ uidtype='' archname64='' use64bitall='' use64bitint='' +dtrace='' +usedtrace='' usefaststdio='' ccflags_uselargefiles='' ldflags_uselargefiles='' @@ -1153,7 +1189,6 @@ nm_so_opt='' runnm='' usenm='' useperlio='' -userelocatableinc='' usesocks='' d_oldpthreads='' use5005threads='' @@ -1202,6 +1237,7 @@ yacc='' yaccflags='' CONFIG='' +: Detect odd OSs define='define' undef='undef' smallmach='pdp11 i8086 z8000 i80286 iAPX286' @@ -1232,25 +1268,10 @@ elif test -d c:/. -o -n "$is_os2" ; then fi 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='' - groupstype='' libnames='' : change the next line if compiling for Xenix/286 on Xenix/386 @@ -1264,6 +1285,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 @@ -1277,17 +1299,36 @@ 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" @@ -1415,11 +1456,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 @@ -1440,8 +1479,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 @@ -1529,6 +1566,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;; @@ -1572,7 +1610,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 ;; @@ -1586,7 +1624,7 @@ while test $# -gt 0; do *) xxx=`echo "$yyy"|sed 's!:.*!!'` yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;; esac - ;; + ;; esac case "$xxx" in append) @@ -1633,6 +1671,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. @@ -1640,16 +1686,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 @@ -1684,7 +1733,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 @@ -1730,11 +1779,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 @@ -1926,8 +1975,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 @@ -2071,6 +2120,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]*) ;; @@ -2369,7 +2419,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 @@ -2378,7 +2428,7 @@ make) ;; esac ;; -esac +esac case "$gmake" in gmake) ;; *) # We can't have osname yet. @@ -2434,6 +2484,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 @@ -2455,15 +2519,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 @@ -3128,18 +3204,21 @@ EOM domainos) osname=apollo osvers="$3" ;; - dgux) osname=dgux + dgux) osname=dgux + osvers="$3" + ;; + dragonfly) osname=dragonfly osvers="$3" ;; dynixptx*) osname=dynixptx osvers=`echo "$4"|sed 's/^v//'` ;; - freebsd) osname=freebsd + freebsd) osname=freebsd osvers="$3" ;; genix) osname=genix ;; gnu) osname=gnu osvers="$3" ;; - hp*) osname=hpux + hp*) osname=hpux osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'` ;; irix*) osname=irix @@ -3235,7 +3314,7 @@ EOM *freebsd*) ;; svr*) : svr4.x or possibly later - case "svr$3" in + case "svr$3" in ${osname}*) osname=svr$3 osvers=$4 @@ -3298,7 +3377,7 @@ EOM osvers="$5" fi fi - + case "$targetarch" in '') ;; *) hostarch=$osname @@ -3366,8 +3445,13 @@ EOM $cat <whoa -$startsh -EOS -cat <<'EOSC' >>whoa -dflt=y -echo " " -echo "*** WHOA THERE!!! ***" >&4 -echo " The $hint value for \$$var on this machine was \"$was\"!" >&4 -rp=" Keep the $hint value?" -. ./myread -case "$ans" in -y) td=$was; tu=$was;; +: decide how portable to be. Allow command line overrides. +case "$d_portable" in +"$undef") ;; +*) d_portable="$define" ;; esac -EOSC - -: 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";; -$undef$define) . ./whoa; eval "$var=\$tu";; -*) eval "$var=$val";; -esac' -case "$usesocks" in -$define|true|[yY]*) dflt='y';; -*) dflt='n';; +: set up shell script to do ~ expansion +cat >filexp <&2 + exit 1 + fi + case "\$1" in + */*) + echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\` + ;; + *) + echo \$dir + ;; + esac + fi + ;; +*) + echo \$1 + ;; esac -cat <getfile +$startsh +EOS +cat <<'EOSC' >>getfile +tilde='' +fullpath='' +already='' +skip='' +none_ok='' +exp_file='' +nopath_ok='' +orig_rp="$rp" +orig_dflt="$dflt" +case "$gfpth" in +'') gfpth='.' ;; esac -set usesocks -eval $setvar -case "$usesocks" in -$define|true|[yY]*) useperlio="$define";; +case "$fn" in +*\(*) + : getfile will accept an answer from the comma-separated list + : enclosed in parentheses even if it does not meet other criteria. + expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok + fn=`echo $fn | sed 's/(.*)//'` + ;; esac -case "$useperlio" in -$define|true|[yY]*|'') dflt='y';; -*) dflt='n';; +case "$fn" in +*:*) + loc_file=`expr $fn : '.*:\(.*\)'` + fn=`expr $fn : '\(.*\):.*'` + ;; esac -cat <. Versions 5.003_02 and later of $package allow -alternate IO mechanisms via the PerlIO abstraction layer, but the -stdio mechanism is still available if needed. The abstraction layer -can use AT&T's sfio (if you already have sfio installed) or regular stdio. -Using PerlIO with sfio may cause problems with some extension modules. -If this doesn't make any sense to you, just accept the default '$dflt'. -EOM -rp='Use the PerlIO abstraction layer?' -. ./myread -case "$ans" in -y|Y) - val="$define" - ;; -*) - echo "Ok, doing things the stdio way." - val="$undef" - ;; +case "$fn" in +*~*) tilde=true;; +esac +case "$fn" in +*/*) fullpath=true;; +esac +case "$fn" in +*+*) skip=true;; +esac +case "$fn" in +*n*) none_ok=true;; +esac +case "$fn" in +*e*) exp_file=true;; +esac +case "$fn" in +*p*) nopath_ok=true;; esac -set useperlio -eval $setvar -case "$usesocks" in -$define|true|[yY]*) - case "$useperlio" in - $define|true|[yY]*) ;; - *) cat >&4 </dev/null 2>&1 + then + value="$ans" + ansexp="$ans" + break + fi + case "$ans" in + none) + value='' + ansexp='' + case "$none_ok" in + true) type='';; esac ;; - *) dflt='n';; - esac - ;; -esac -cat <&4 + echo "Use a ! shell escape if you wish to check pathnames." >&4 + ;; + *) + echo "Please give a full path name, starting with slash." >&4 + case "$tilde" in + true) + echo "Note that using ~name is ok provided it expands well." >&4 + already=true + ;; + esac + esac + ;; + esac + ;; + esac + case "$redo" in + '') + case "$type" in + File) + for fp in $gfpth; do + if test "X$fp" = X.; then + pf="$ansexp" + else + pf="$fp/$ansexp" + fi + if test -f "$pf"; then + type='' + elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1 + then + echo "($value is not a plain file, but that's ok.)" + type='' + fi + if test X"$type" = X; then + value="$pf" + break + fi + done + ;; + Directory) + for fp in $gfpth; do + if test "X$fp" = X.; then + dir="$ans" + direxp="$ansexp" + else + dir="$fp/$ansexp" + direxp="$fp/$ansexp" + fi + if test -d "$direxp"; then + type='' + value="$dir" + break + fi + done + ;; + Locate) + if test -d "$ansexp"; then + echo "(Looking for $loc_file in directory $value.)" + value="$value/$loc_file" + ansexp="$ansexp/$loc_file" + fi + if test -f "$ansexp"; then + type='' + fi + case "$nopath_ok" in + true) case "$value" in + */*) ;; + *) echo "Assuming $value will be in people's path." + type='' + ;; + esac + ;; + esac + ;; + esac -Perl can be built to take advantage of threads on some systems. -To do so, Configure can be run with -Dusethreads. + case "$skip" in + true) type=''; + esac -Note that Perl built with threading support runs slightly slower -and uses more memory than plain Perl. The current implementation -is believed to be stable, but it is fairly new, and so should be -treated with caution. + case "$type" in + '') ;; + *) + if test "$fastread" = yes; then + dflt=y + else + dflt=n + fi + rp="$what $value doesn't exist. Use that name anyway?" + . UU/myread + dflt='' + case "$ans" in + y*) type='';; + *) echo " ";; + esac + ;; + esac + ;; + esac + ;; + esac +done +cd UU +ans="$value" +rp="$orig_rp" +dflt="$orig_dflt" +rm -f getfile.ok +test "X$gfpthkeep" != Xy && gfpth="" +EOSC -If this doesn't make any sense to you, just accept the default '$dflt'. -EOM -rp='Build a threading Perl?' -. ./myread -case "$ans" in -y|Y) val="$define" ;; -*) val="$undef" ;; +: determine root of directory hierarchy where package will be installed. +case "$prefix" in +'') + dflt=`./loc . /usr/local /usr/local /local /opt /usr` + ;; +*?/) + dflt=`echo "$prefix" | sed 's/.$//'` + ;; +*) + dflt="$prefix" + ;; esac -set usethreads -eval $setvar - -case "$usethreads" in -$define) - $cat <&4 <&4 <&4 +else + echo "AFS does not seem to be running..." >&4 fi -case "$d_oldpthreads" in -'') : Configure tests would be welcome here. For now, assume undef. - val="$undef" ;; -*) val="$d_oldpthreads" ;; -esac -set d_oldpthreads -eval $setvar +: determine installation prefix for where package is to be installed. +if $afs; then +$cat <installprefix +$startsh +EOS +cat <<'EOSC' >>installprefix +: Change installation prefix, if necessary. +if $test X"$prefix" != X"$installprefix"; then + eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`" +else + eval "install${prefixvar}=\"\$${prefixvar}exp\"" fi +EOSC +chmod +x installprefix +$eunicefix installprefix + +: Set variables such as privlib and privlibexp from the output of ./getfile +: performing the prefixexp/installprefixexp correction if necessary. +cat <setprefixvar +$startsh +EOS +cat <<'EOSC' >>setprefixvar +eval "${prefixvar}=\"\$ans\"" +eval "${prefixvar}exp=\"\$ansexp\"" +. ./installprefix +EOSC +chmod +x setprefixvar +$eunicefix setprefixvar + +: set up the script used to warn in case of inconsistency +cat <whoa +$startsh +EOS +cat <<'EOSC' >>whoa +dflt=y +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 +y) td=$was; tu=$was;; +esac +EOSC + +: 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";; +$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';; +esac cat <. Versions 5.003_02 and later of $package allow +alternate IO mechanisms via the PerlIO abstraction layer, but the +stdio mechanism is still available if needed. The abstraction layer +can use AT&T's sfio (if you already have sfio installed) or regular stdio. +Using PerlIO with sfio may cause problems with some extension modules. + +If this doesn't make any sense to you, just accept the default '$dflt'. EOM +rp='Use the PerlIO abstraction layer?' +. ./myread +case "$ans" in +y|Y) val="$define" ;; -*) case "$usemultiplicity" in - $define|true|[yY]*) dflt='y';; - *) dflt='n';; - esac - echo " " - echo "If this doesn't make any sense to you, just accept the default '$dflt'." - rp='Build Perl for multiplicity?' - . ./myread - case "$ans" in - y|Y) val="$define" ;; - *) val="$undef" ;; - esac +*) + echo "Ok, doing things the stdio way." + val="$undef" ;; esac -set usemultiplicity +set useperlio eval $setvar +case "$usesocks" in +$define|true|[yY]*) + case "$useperlio" in + $define|true|[yY]*) ;; + *) cat >&4 <bsd -echo exit 1 >usg -echo exit 1 >v7 -echo exit 1 >osf1 -echo exit 1 >eunice -echo exit 1 >xenix -echo exit 1 >venix -echo exit 1 >os2 -d_bsd="$undef" -$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null -if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1 -then - echo "Looks kind of like an OSF/1 system, but we'll see..." - echo exit 0 >osf1 -elif test `echo abc | $tr a-z A-Z` = Abc ; then - xxx=`./loc addbib blurfl $pth` - if $test -f $xxx; then - echo "Looks kind of like a USG system with BSD features, but we'll see..." - echo exit 0 >bsd - echo exit 0 >usg - else - if $contains SIGTSTP foo >/dev/null 2>&1 ; then - echo "Looks kind of like an extended USG system, but we'll see..." - else - echo "Looks kind of like a USG system, but we'll see..." - fi - echo exit 0 >usg - fi -elif $contains SIGTSTP foo >/dev/null 2>&1 ; then - echo "Looks kind of like a BSD system, but we'll see..." - d_bsd="$define" - echo exit 0 >bsd +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 - echo "Looks kind of like a Version 7 system, but we'll see..." - echo exit 0 >v7 + 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 -case "$eunicefix" in -*unixtovms*) - $cat <<'EOI' -There is, however, a strange, musty smell in the air that reminds me of -something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit. -EOI - echo exit 0 >eunice - d_eunice="$define" -: it so happens the Eunice I know will not run shell scripts in Unix format - ;; -*) - echo " " - echo "Congratulations. You aren't running Eunice." - d_eunice="$undef" - ;; +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 -: Detect OS2. The p_ variable is set above in the Head.U unit. -: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses -: semicolon as a patch separator -case "$p_" in -:) ;; + +$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 }'` + ;; *) - $cat <<'EOI' -I have the feeling something is not exactly right, however...don't tell me... -lemme think...does HAL ring a bell?...no, of course, you're only running OS/2! -(Or you may be running DOS with DJGPP.) -EOI - echo exit 0 >os2 + 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 -if test -f /xenix; then - echo "Actually, this looks more like a XENIX system..." - echo exit 0 >xenix - d_xenix="$define" -else - echo " " - echo "It's not Xenix..." - d_xenix="$undef" -fi -chmod +x xenix -$eunicefix xenix -if test -f /venix; then - echo "Actually, this looks more like a VENIX system..." - echo exit 0 >venix -else - echo " " - if ./xenix; then - : null - else - echo "Nor is it Venix..." - fi +: 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 -chmod +x bsd usg v7 osf1 eunice xenix venix os2 -$eunicefix bsd usg v7 osf1 eunice xenix venix os2 -$rm -f foo -case "$cc" in -'') dflt=cc;; -*) dflt="$cc";; +: 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*) + case "$useperlio" in + "$define") dflt='y' ;; + *) dflt='n' ;; + esac + ;; + *) dflt='n';; + esac + ;; esac -rp="Use which C compiler?" +cat <&4 -$cat >try.c < -int main() { -#ifdef __GNUC__ -#ifdef __VERSION__ - printf("%s\n", __VERSION__); -#else - printf("%s\n", "1"); -#endif -#endif - return(0); -} EOM -if $cc -o try $ccflags $ldflags try.c; then - gccversion=`$run ./try` - case "$gccversion" in - '') echo "You are not using GNU cc." ;; - *) echo "You are using GNU cc $gccversion." - ccname=gcc - ;; + : Default to ithreads unless overridden on command line or with + : old config.sh + dflt='y' + case "$use5005threads" in + $define|true|[yY]*) dflt='n';; esac -else - echo " " - echo "*** WHOA THERE!!! ***" >&4 - echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4 - case "$knowitall" in - '') - echo " You'd better start hunting for one and let me know about it." >&4 - exit 1 - ;; + case "$useithreads" in + $undef|false|[nN]*) dflt='n';; esac -fi -$rm -f try try.* -case "$gccversion" in -1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -esac -case "$gccversion" in -'') gccosandvers='' ;; -*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'` - gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"` - gccshortvers='' - case "$gccosandvers" in - $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr - $osname$osvers) ;; # looking good - $osname*) cat <&4 + rp='Use the newer interpreter-based ithreads?' + . ./myread + case "$ans" in + y|Y) val="$define" ;; + *) val="$undef" ;; + esac + set useithreads + eval $setvar + : Now set use5005threads to the opposite value. + case "$useithreads" in + $define) val="$undef" ;; + *) val="$define" ;; + esac + set use5005threads + eval $setvar + ;; + *) + useithreads="$undef" + use5005threads="$undef" + ;; + esac -*** WHOA THERE!!! *** + case "$useithreads$use5005threads" in + "$define$define") + $cat >&4 <&4 <try.c - for incdir in $locincpth; do - warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ - grep '^c[cp]p*[01]: warning: changing search order '` - if test "X$warn" != X; then - locincpth=`echo " $locincpth " | sed "s! $incdir ! !"` - fi - done - $rm -f try try.* -esac +5.005 threads has been removed for 5.10. Perl will be built using ithreads. -: decide how portable to be. Allow command line overrides. -case "$d_portable" in -"$undef") ;; -*) d_portable="$define" ;; -esac +EOM + ;; + esac + fi -: set up shell script to do ~ expansion -cat >filexp <&2 - exit 1 - fi - case "\$1" in - */*) - echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\` - ;; - *) - echo \$dir - ;; - esac - fi - ;; -*) - echo \$1 - ;; -esac -EOSS -chmod +x filexp -$eunicefix filexp + use5005threads="$undef" + useithreads="$usethreads" +fi -: now set up to get a file name -cat <getfile -$startsh -EOS -cat <<'EOSC' >>getfile -tilde='' -fullpath='' -already='' -skip='' -none_ok='' -exp_file='' -nopath_ok='' -orig_rp="$rp" -orig_dflt="$dflt" -case "$gfpth" in -'') gfpth='.' ;; +if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then + cat >&4 <getfile.ok - fn=`echo $fn | sed 's/(.*)//'` + +: Look for a hint-file generated 'call-back-unit'. If the +: user has specified that a threading perl is to be built, +: we may need to set or change some other defaults. +if $test -f usethreads.cbu; then + echo "Your platform has some specific hints regarding threaded builds, using them..." + . ./usethreads.cbu +else + case "$usethreads" in + "$define"|true|[yY]*) + $cat <bsd +echo exit 1 >usg +echo exit 1 >v7 +echo exit 1 >osf1 +echo exit 1 >eunice +echo exit 1 >xenix +echo exit 1 >venix +echo exit 1 >os2 +d_bsd="$undef" +$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null +if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1 +then + echo "Looks kind of like an OSF/1 system, but we'll see..." + echo exit 0 >osf1 +elif test `echo abc | $tr a-z A-Z` = Abc ; then + xxx=`./loc addbib blurfl $pth` + if $test -f $xxx; then + echo "Looks kind of like a USG system with BSD features, but we'll see..." + echo exit 0 >bsd + echo exit 0 >usg + else + if $contains SIGTSTP foo >/dev/null 2>&1 ; then + echo "Looks kind of like an extended USG system, but we'll see..." + else + echo "Looks kind of like a USG system, but we'll see..." + fi + echo exit 0 >usg + fi +elif $contains SIGTSTP foo >/dev/null 2>&1 ; then + echo "Looks kind of like a BSD system, but we'll see..." + d_bsd="$define" + echo exit 0 >bsd +else + echo "Looks kind of like a Version 7 system, but we'll see..." + echo exit 0 >v7 +fi +case "$eunicefix" in +*unixtovms*) + $cat <<'EOI' +There is, however, a strange, musty smell in the air that reminds me of +something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit. +EOI + echo exit 0 >eunice + d_eunice="$define" +: it so happens the Eunice I know will not run shell scripts in Unix format + ;; +*) + echo " " + echo "Congratulations. You aren't running Eunice." + d_eunice="$undef" + ;; esac -case "$fn" in -*p*) nopath_ok=true;; +: Detect OS2. The p_ variable is set above in the Head.U unit. +: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses +: semicolon as a patch separator +case "$p_" in +:) ;; +*) + $cat <<'EOI' +I have the feeling something is not exactly right, however...don't tell me... +lemme think...does HAL ring a bell?...no, of course, you're only running OS/2! +(Or you may be running DOS with DJGPP.) +EOI + echo exit 0 >os2 + ;; esac +if test -f /xenix; then + echo "Actually, this looks more like a XENIX system..." + echo exit 0 >xenix + d_xenix="$define" +else + echo " " + echo "It's not Xenix..." + d_xenix="$undef" +fi +chmod +x xenix +$eunicefix xenix +if test -f /venix; then + echo "Actually, this looks more like a VENIX system..." + echo exit 0 >venix +else + echo " " + if ./xenix; then + : null + else + echo "Nor is it Venix..." + fi +fi +chmod +x bsd usg v7 osf1 eunice xenix venix os2 +$eunicefix bsd usg v7 osf1 eunice xenix venix os2 +$rm -f foo -case "$fn" in -*f*) type='File';; -*d*) type='Directory';; -*l*) type='Locate';; +: Checking the C compiler +case "$cc" in +'') dflt=cc;; +*) dflt="$cc";; esac +rp="Use which C compiler?" +. ./myread +cc="$ans" -what="$type" -case "$what" in -Locate) what='File';; -esac +: See if they have not cc but they do have gcc +. ./trygcc +: Look for a hint-file generated 'call-back-unit'. Now that the +: user has specified the compiler, we may need to set or change some +: other defaults. +if $test -f cc.cbu; then + . ./cc.cbu +fi +. ./checkcc -case "$exp_file" in -'') - case "$d_portable" in - "$define") ;; - *) exp_file=true;; +: Check if we are using GNU gcc and what its version is +echo " " +echo "Checking for GNU cc in disguise and/or its version number..." >&4 +$cat >try.c < +int main() { +#if defined(__GNUC__) && !defined(__INTEL_COMPILER) +#ifdef __VERSION__ + printf("%s\n", __VERSION__); +#else + printf("%s\n", "1"); +#endif +#endif + return(0); +} +EOM +if $cc -o try $ccflags $ldflags try.c; then + gccversion=`$run ./try` + case "$gccversion" in + '') echo "You are not using GNU cc." ;; + *) echo "You are using GNU cc $gccversion." + ccname=gcc + ;; esac - ;; +else + echo " " + echo "*** WHOA THERE!!! ***" >&4 + echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4 + case "$knowitall" in + '') + echo " You'd better start hunting for one and let me know about it." >&4 + exit 1 + ;; + esac +fi +$rm -f try try.* +case "$gccversion" in +1*) cpp=`./loc gcc-cpp $cpp $pth` ;; esac +case "$gccversion" in +'') gccosandvers='' ;; +*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'` + gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"` + gccshortvers='' + case "$gccosandvers" in + $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr + $osname$osvers) ;; # looking good + $osname*) cat <&4 -cd .. -while test "$type"; do - redo='' - rp="$orig_rp" - dflt="$orig_dflt" - case "$tilde" in - true) rp="$rp (~name ok)";; - esac - . UU/myread - if test -f UU/getfile.ok && \ - $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1 - then - value="$ans" - ansexp="$ans" - break - fi - case "$ans" in - none) - value='' - ansexp='' - case "$none_ok" in - true) type='';; - esac - ;; - *) - case "$tilde" in - '') value="$ans" - ansexp="$ans";; - *) - value=`UU/filexp $ans` - case $? in - 0) - if test "$ans" != "$value"; then - echo "(That expands to $value on this system.)" - fi - ;; - *) value="$ans";; - esac - ansexp="$value" - case "$exp_file" in - '') value="$ans";; - esac - ;; - esac - case "$fullpath" in - true) - case "$ansexp" in - /*) value="$ansexp" ;; - [a-zA-Z]:/*) value="$ansexp" ;; - *) - redo=true - case "$already" in - true) - echo "I shall only accept a full path name, as in /bin/ls." >&4 - echo "Use a ! shell escape if you wish to check pathnames." >&4 - ;; - *) - echo "Please give a full path name, starting with slash." >&4 - case "$tilde" in - true) - echo "Note that using ~name is ok provided it expands well." >&4 - already=true - ;; - esac - esac - ;; - esac - ;; - esac - case "$redo" in - '') - case "$type" in - File) - for fp in $gfpth; do - if test "X$fp" = X.; then - pf="$ansexp" - else - pf="$fp/$ansexp" - fi - if test -f "$pf"; then - type='' - elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1 - then - echo "($value is not a plain file, but that's ok.)" - type='' - fi - if test X"$type" = X; then - value="$pf" - break - fi - done - ;; - Directory) - for fp in $gfpth; do - if test "X$fp" = X.; then - dir="$ans" - direxp="$ansexp" - else - dir="$fp/$ansexp" - direxp="$fp/$ansexp" - fi - if test -d "$direxp"; then - type='' - value="$dir" - break - fi - done - ;; - Locate) - if test -d "$ansexp"; then - echo "(Looking for $loc_file in directory $value.)" - value="$value/$loc_file" - ansexp="$ansexp/$loc_file" - fi - if test -f "$ansexp"; then - type='' - fi - case "$nopath_ok" in - true) case "$value" in - */*) ;; - *) echo "Assuming $value will be in people's path." - type='' - ;; - esac - ;; - esac - ;; - esac +*** WHOA THERE!!! *** - case "$skip" in - true) type=''; - esac + Your gcc has not been compiled for the exact release of + your operating system ($gccosandvers versus $osname$osvers). - case "$type" in - '') ;; - *) - if test "$fastread" = yes; then - dflt=y - else - dflt=n - fi - rp="$what $value doesn't exist. Use that name anyway?" - . UU/myread - dflt='' - case "$ans" in - y*) type='';; - *) echo " ";; - esac - ;; - esac - ;; - esac - ;; - esac -done -cd UU -ans="$value" -rp="$orig_rp" -dflt="$orig_dflt" -rm -f getfile.ok -test "X$gfpthkeep" != Xy && gfpth="" -EOSC + In general it is a good idea to keep gcc synchronized with + the operating system because otherwise serious problems + may ensue when trying to compile software, like Perl. + + I'm trying to be optimistic here, though, and will continue. + If later during the configuration and build icky compilation + problems appear (headerfile conflicts being the most common + manifestation), I suggest reinstalling the gcc to match + your operating system release. + +EOM + ;; + *) gccosandvers='' ;; # failed to parse, better be silent + esac + ;; +esac +case "$ccname" in +'') ccname="$cc" ;; +esac + +# gcc 3.* complain about adding -Idirectories that they already know about, +# so we will take those off from locincpth. +case "$gccversion" in +3*) + echo "main(){}">try.c + for incdir in $locincpth; do + warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ + grep '^c[cp]p*[01]: warning: changing search order '` + if test "X$warn" != X; then + locincpth=`echo " $locincpth " | sed "s! $incdir ! !"` + fi + done + $rm -f try try.* +esac : What should the include directory be ? echo " " @@ -4543,11 +4843,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 @@ -4624,7 +4927,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 @@ -4666,7 +4969,7 @@ for thislib in $libswanted; do ;; esac break - fi + fi done if $test ! -f "$xxx"; then echo "No -l$thislib." @@ -4719,19 +5022,75 @@ case "$optimize" in 'none') optimize=" ";; esac +: Check what DEBUGGING is required from the command line +: -DEBUGGING or -DDEBUGGING or +: -DEBUGGING=both = -g + -DDEBUGGING +: -DEBUGGING=-g or -Doptimize=-g = -g +: -DEBUGGING=none or -UDEBUGGING = +: -DEBUGGING=old or -DEBUGGING=default = ? $optimize +case "$EBUGGING" in +'') ;; +*) DEBUGGING=$EBUGGING ;; +esac + +case "$DEBUGGING" in +-g|both|$define) + case "$optimize" in + *-g*) ;; + *) optimize="$optimize -g" ;; + esac ;; +none|$undef) + case "$optimize" in + *-g*) set `echo "X $optimize " | sed 's/ -g / /'` + shift + optimize="$*" + ;; + esac ;; +esac + dflt='' +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 default|recommended) case "$gccversion" in - 1*) dflt='-fpcc-struct-return' ;; + 1*) dflt="$dflt -fpcc-struct-return" ;; esac - case "$optimize" in - *-g*) dflt="$dflt -DDEBUGGING";; + case "$optimize:$DEBUGGING" in + *-g*:old) dflt="$dflt -DDEBUGGING";; esac case "$gccversion" in - 2*) if test -d /etc/conf/kconfig.d && + 2*) if $test -d /etc/conf/kconfig.d && $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 then # Interactive Systems (ISC) POSIX mode. @@ -4742,54 +5101,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 'ldflags="$ldflags -fstack-protector"' + eval $checkccflag ;; esac ;; @@ -4996,7 +5329,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 ;; @@ -5045,7 +5378,7 @@ y) ;; n) echo "OK, that should do.";; esac -$rm -f try try.* core +$rm_try gcctest gcctest.out : define a shorthand compile call compile=' @@ -5220,7 +5553,7 @@ EOM fi ;; esac -$rm -f try try.* +$rm_try : check for long long echo " " @@ -5234,7 +5567,7 @@ else val="$undef" echo "You do not have long long." fi -$rm try.* +$rm_try set d_longlong eval $setvar @@ -5265,10 +5598,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 @@ -5288,7 +5621,7 @@ else echo " NOT found." >&4 val="$undef" fi -$rm -f try.c try +$rm_try set i_inttypes eval $setvar @@ -5311,11 +5644,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 @@ -5374,7 +5707,7 @@ case "$quadtype" in ;; esac - +: Do we want 64bit support case "$uselonglong" in "$define"|true|[yY]*) cat <&4 @@ -5383,7 +5716,7 @@ case "$uselonglong" in EOM use64bitint="$define" ;; -esac +esac case "$use64bits" in "$define"|true|[yY]*) cat <&4 @@ -5392,7 +5725,7 @@ case "$use64bits" in EOM use64bitint="$define" ;; -esac +esac case "$use64bitints" in "$define"|true|[yY]*) cat <&4 @@ -5401,7 +5734,7 @@ case "$use64bitints" in EOM use64bitint="$define" ;; -esac +esac case "$use64bitsint" in "$define"|true|[yY]*) cat <&4 @@ -5410,7 +5743,7 @@ case "$use64bitsint" in EOM use64bitint="$define" ;; -esac +esac case "$uselonglongs" in "$define"|true|[yY]*) cat <&4 @@ -5419,7 +5752,7 @@ case "$uselonglongs" in EOM use64bitint="$define" ;; -esac +esac case "$use64bitsall" in "$define"|true|[yY]*) cat <&4 @@ -5428,7 +5761,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";; @@ -5479,7 +5812,7 @@ case "$use64bitall" in *) dflt='n' ;; esac ;; -esac +esac cat <&4 ;; esac - ;; -esac -if $test -f archname.cbu; then - echo "Your platform has some specific hints for architecture name, using them..." - . ./archname.cbu -fi - -: determine root of directory hierarchy where package will be installed. -case "$prefix" in -'') - dflt=`./loc . /usr/local /usr/local /local /opt /usr` - ;; -*?/) - dflt=`echo "$prefix" | sed 's/.$//'` - ;; -*) - dflt="$prefix" - ;; -esac -$cat <&4 -else - echo "AFS does not seem to be running..." >&4 -fi - -: determine installation prefix for where package is to be installed. -if $afs; then -$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=`grep ',"DEVEL[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 "`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' + ;; +esac +if $test -f archname.cbu; then + echo "Your platform has some specific hints for architecture name, using them..." + . ./archname.cbu fi +: set the prefixit variable, to compute a suitable default value +prefixit='case "$3" in +""|none) + case "$oldprefix" in + "") eval "$1=\"\$$2\"";; + *) + case "$3" in + "") eval "$1=";; + none) + eval "tp=\"\$$2\""; + case "$tp" in + ""|" ") eval "$1=\"\$$2\"";; + *) eval "$1=";; + esac;; + esac;; + esac;; +*) + eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\""; + case "$tp" in + --|/*--|\~*--) eval "$1=\"$prefix/$3\"";; + /*-$oldprefix/*|\~*-$oldprefix/*) + eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";; + *) eval "$1=\"\$$2\"";; + esac;; +esac' + : 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. @@ -5957,9 +6139,59 @@ esac : confusing anyway. installstyle=$dflt +: determine where public executables go +echo " " +set dflt bin bin +eval $prefixit +fn=d~ +rp='Pathname where the public executables will reside?' +. ./getfile +if $test "X$ansexp" != "X$binexp"; then + installbin='' +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 +$define|true|[yY]*) dflt='y' ;; +*) dflt='n' ;; +esac +cat <&4 + dflt=n;; + "$undef") + echo "Well, the $hint value is *not* secure." >&4 + dflt=n;; + *) echo "Well, the $hint value *is* secure." >&4 + dflt=y;; + esac + ;; + *) + $rm -f reflect flect + echo "#!$ls" >reflect + chmod +x,u+s reflect + echo >flect + chmod a+w flect + echo '"su" will (probably) prompt you for '"$ans's password." + su $ans -c './reflect >flect' + if $contains "/dev/fd" flect >/dev/null; then + echo "Okay, it looks like setuid scripts are secure." >&4 + dflt=y + else + echo "I don't think setuid scripts are secure." >&4 + dflt=n + fi + ;; + esac + rp='Does your kernel have *secure* setuid scripts?' + . ./myread + case "$ans" in + [yY]*) val="$define";; + *) val="$undef";; + esac + fi +else + echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4 + echo "(That's for file descriptors, not floppy disks.)" + val="$undef" +fi +set d_suidsafe +eval $setvar + +$rm -f reflect flect + +: now see if they want to do setuid emulation +echo " " +val="$undef" +case "$d_suidsafe" in +"$define") + val="$undef" + echo "No need to emulate SUID scripts since they are secure here." >&4 + ;; +*) + $cat </dev/null 2>&1; then + perl5=$tdir/perl + break; + elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then + perl5=$tdir/perl5 + break; + fi + done + ;; +*) perl5="$perl5" + ;; +esac +case "$perl5" in +'') echo "None found. That's ok.";; +*) echo "Using $perl5." ;; +esac + +: Set the siteprefix variables +$cat < getverlist <> 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 = map { + [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*"); +} +else { + ;@candidates = (); +} + +($pversion, $aversion, $vsn5005) = map { + pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005"; +foreach $d (@candidates) { + if ($d->[1] lt $pversion) { + if ($d->[1] ge $aversion) { + unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]); + } + elsif ($d->[1] ge $vsn5005) { + unshift(@inc_version_list, grep { -d } $d->[0]); + } + } + else { + # Skip newer version. I.e. don't look in + # 5.7.0 if we're installing 5.6.1. + } +} + +if (@inc_version_list) { + print join(' ', @inc_version_list); +} +else { + # Blank space to preserve value for next Configure run. + print " "; +} +EOPL +chmod +x getverlist +case "$inc_version_list" in +'') if test -x "$perl5$exe_ext"; then + dflt=`$perl5 getverlist` + else dflt='none' - . ./myread - case "$ans" in - n|none) - case "$d_suidsafe" in - '') echo "I'll assume setuid scripts are *not* secure." >&4 - dflt=n;; - "$undef") - echo "Well, the $hint value is *not* secure." >&4 - dflt=n;; - *) echo "Well, the $hint value *is* secure." >&4 - dflt=y;; - esac - ;; - *) - $rm -f reflect flect - echo "#!$ls" >reflect - chmod +x,u+s reflect - echo >flect - chmod a+w flect - echo '"su" will (probably) prompt you for '"$ans's password." - su $ans -c './reflect >flect' - if $contains "/dev/fd" flect >/dev/null; then - echo "Okay, it looks like setuid scripts are secure." >&4 - dflt=y - else - echo "I don't think setuid scripts are secure." >&4 - dflt=n - fi - ;; - esac - rp='Does your kernel have *secure* setuid scripts?' - . ./myread - case "$ans" in - [yY]*) val="$define";; - *) val="$undef";; - esac fi -else - echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4 - echo "(That's for file descriptors, not floppy disks.)" - val="$undef" -fi -set d_suidsafe -eval $setvar - -$rm -f reflect flect - -: now see if they want to do setuid emulation -echo " " -val="$undef" -case "$d_suidsafe" in -"$define") - val="$undef" - echo "No need to emulate SUID scripts since they are secure here." >&4 ;; -*) - $cat < NOT found." >&4 val="$undef" fi -$rm -f try.c try +$rm_try set i_malloc eval $setvar @@ -6255,7 +6668,7 @@ EOM voidflags="$ans" ;; esac -$rm -f try.* .out +$rm_try : check for length of pointer echo " " @@ -6292,7 +6705,7 @@ EOCP fi ;; esac -$rm -f try.c try +$rm_try case "$use64bitall" in "$define"|true|[yY]*) case "$ptrsize" in @@ -6423,77 +6836,6 @@ case "$freetype" in esac echo "Your system uses $freetype free(), it would seem." >&4 $rm -f malloc.[co] -$cat </dev/null 2>&1 \ + && rm -f perldtrace.tmp + then + echo " " + echo "Good: your $dtrace knows about the -h flag." + else + cat >&2 <&2 </dev/null 2>&1; then - perl5=$tdir/perl - break; - elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then - perl5=$tdir/perl5 - break; - fi - done - ;; -*) perl5="$perl5" - ;; -esac -case "$perl5" in -'') echo "None found. That's ok.";; -*) echo "Using $perl5." ;; -esac - -: Determine list of previous versions to include in @INC -$cat > getverlist <> getverlist <<'EOPL' -# 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.*"); -} -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. -foreach $d (@candidates) { - if ($d lt $version) { - if ($d ge $api_versionstring) { - unshift(@inc_version_list, grep { -d } "$d/$archname", $d); - } - elsif ($d ge "5.005") { - unshift(@inc_version_list, grep { -d } $d); - } - } - else { - # Skip newer version. I.e. don't look in - # 5.7.0 if we're installing 5.6.1. - } -} - -if (@inc_version_list) { - print join(' ', @inc_version_list); -} -else { - # Blank space to preserve value for next Configure run. - print " "; -} -EOPL -chmod +x getverlist -case "$inc_version_list" in -'') if test -x "$perl5$exe_ext"; then - dflt=`$perl5 getverlist` - else - dflt='none' - fi - ;; -$undef) dflt='none' ;; -*) eval dflt=\"$inc_version_list\" ;; -esac -case "$dflt" in -''|' ') dflt=none ;; -esac -case "$dflt" in -5.005) dflt=none ;; -esac -$cat <&4 cat >try.c <<'EOCP' @@ -7029,7 +7300,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 @@ -7054,7 +7325,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 @@ -7149,9 +7420,9 @@ case "$nm_so_opt" in ;; esac +: get list of predefined functions in a handy place case "$runnm" in true) -: get list of predefined functions in a handy place echo " " case "$libc" in '') libc=unknown @@ -7439,6 +7710,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 @@ -7454,19 +7751,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; ;; *) @@ -7507,10 +7807,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 " " @@ -7524,7 +7838,7 @@ $undef|n|false) dflt='n' usedl="$undef" ;; -*) +*) dflt='n' case "$d_dlopen" in $define) dflt='y' ;; @@ -7587,7 +7901,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 ;; @@ -7615,10 +7929,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) */ @@ -7635,7 +7953,7 @@ EOM echo "I'll use ld to build dynamic libraries." dflt='ld' fi - rm -f try.c a.out + $rm_try ;; *) dflt="$ld" ;; @@ -7661,8 +7979,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' ;; @@ -7731,6 +8049,7 @@ EOM ;; esac +: Do we want a shared libperl? also='' case "$usedl" in $undef) @@ -7883,14 +8202,14 @@ shrpdir=$archlibexp/CORE xxx='' tmp_shrpenv='' if "$useshrplib"; then - case "$osname" in + case "$osname" in aix) # We'll set it in Makefile.SH... ;; solaris) xxx="-R $shrpdir" ;; - freebsd|netbsd|openbsd|interix) + freebsd|netbsd|openbsd|interix|dragonfly) xxx="-Wl,-R$shrpdir" ;; bsdos|linux|irix*|dec_osf|gnu*) @@ -7912,7 +8231,7 @@ if "$useshrplib"; then esac case "$xxx" in '') ;; - *) + *) # Only add $xxx if it isn't already in ccdlflags. case " $ccdlflags " in *" $xxx "*) ;; @@ -7920,7 +8239,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 @@ -8004,20 +8323,14 @@ rp="Where do the main $spackage manual pages (source) go?" if $test "X$man1direxp" != "X$ansexp"; then installman1dir='' fi -man1dir="$ans" -man1direxp="$ansexp" +prefixvar=man1dir +. ./setprefixvar + case "$man1dir" in '') man1dir=' ' installman1dir='';; esac -: Change installation prefix, if necessary. -if $test X"$prefix" != X"$installprefix"; then - installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"` -else - installman1dir="$man1direxp" -fi - : What suffix to use on installed man pages case "$man1dir" in @@ -8092,7 +8405,7 @@ esac case "$d_flexfnam" in undef) $cat <<'EOM' -However, your system can't handle the long file names like File::Basename.3. +However, your system can't handle the long file names like File::Basename.3. EOM case "$man3dir" in '') man3dir="none";; @@ -8107,8 +8420,8 @@ case "$man3dir" in cat <&4 WARNING: Previous versions of perl installed man3 pages into -$privlib/man/man3. This version will suggest a -new default of $dflt. +$privlib/man/man3. This version will suggest a +new default of $dflt. EOM tdflt=$dflt dflt='n' @@ -8129,20 +8442,14 @@ echo " " fn=dn+~ rp="Where do the $package library man pages (source) go?" . ./getfile -man3dir="$ans" -man3direxp="$ansexp" +prefixvar=man3dir +. ./setprefixvar + case "$man3dir" in '') man3dir=' ' installman3dir='';; esac -: Change installation prefix, if necessary. -if $test X"$prefix" != X"$installprefix"; then - installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"` -else - installman3dir="$man3direxp" -fi - : What suffix to use on installed man pages case "$man3dir" in ' ') @@ -8430,6 +8737,7 @@ case "$phostname" in ;; esac +: Ask for e-mail $cat <try.c <&4 +echo "Checking the size of $zzz..." >&4 cat > try.c < #include @@ -8898,6 +9173,7 @@ else fpossize="$ans" fi +: Check for large file support # Backward compatibility (uselfs is deprecated). case "$uselfs" in "$define"|true|[yY]*) @@ -8907,7 +9183,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 @@ -9006,16 +9282,12 @@ EOCP . ./myread fpossize="$ans" fi - $rm -f try.c try + $rm_try fi ;; esac -# probably will refer to -# $archlib $privlib $sitearch $sitelib $vendorarch $vendorlib -need_relocation=0 -userelocatableinc=undef - +: Set the vendorbin variables case "$vendorprefix" in '') d_vendorbin="$undef" vendorbin='' @@ -9034,13 +9306,10 @@ case "$vendorprefix" in vendorbinexp="$ansexp" ;; esac -: Change installation prefix, if necessary. -if $test X"$prefix" != X"$installprefix"; then - installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"` -else - installvendorbin="$vendorbinexp" -fi +prefixvar=vendorbin +. ./installprefix +: Set the vendorhtml1dir variables case "$vendorprefix" in '') vendorhtml1dir='' vendorhtml1direxp='' @@ -9065,13 +9334,10 @@ case "$vendorprefix" in esac : Use ' ' for none so value is preserved next time through Configure $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' ' -: Change installation prefix, if necessary. -if $test X"$prefix" != X"$installprefix"; then - installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"` -else - installvendorhtml1dir="$vendorhtml1direxp" -fi +prefixvar=vendorhtml1dir +. ./installprefix +: Set the vendorhtml3dir variables case "$vendorprefix" in '') vendorhtml3dir='' vendorhtml3direxp='' @@ -9096,13 +9362,10 @@ case "$vendorprefix" in esac : Use ' ' for none so value is preserved next time through Configure $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' ' -: Change installation prefix, if necessary. -if $test X"$prefix" != X"$installprefix"; then - installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"` -else - installvendorhtml3dir="$vendorhtml3direxp" -fi +prefixvar=vendorhtml3dir +. ./installprefix +: Set the vendorman1dir variables case "$vendorprefix" in '') vendorman1dir='' vendorman1direxp='' @@ -9124,13 +9387,10 @@ case "$vendorprefix" in esac : Use ' ' for none so value is preserved next time through Configure $test X"$vendorman1dir" = "X" && vendorman1dir=' ' -: Change installation prefix, if necessary. -if $test X"$prefix" != X"$installprefix"; then - installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"` -else - installvendorman1dir="$vendorman1direxp" -fi +prefixvar=vendorman1dir +. ./installprefix +: Set the vendorman3dir variables case "$vendorprefix" in '') vendorman3dir='' vendorman3direxp='' @@ -9152,13 +9412,10 @@ case "$vendorprefix" in esac : Use ' ' for none so value is preserved next time through Configure $test X"$vendorman3dir" = "X" && vendorman3dir=' ' -: Change installation prefix, if necessary. -if $test X"$prefix" != X"$installprefix"; then - installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"` -else - installvendorman3dir="$vendorman3direxp" -fi +prefixvar=vendorman3dir +. ./installprefix +: Set the vendorscript variables case "$vendorprefix" in '') d_vendorscript="$undef" vendorscript='' @@ -9173,7 +9430,7 @@ case "$vendorprefix" in esac $cat <&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 @@ -9507,7 +9761,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 @@ -9540,10 +9794,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 @@ -9625,7 +9880,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 @@ -9633,7 +9888,7 @@ EOSH $cat >> protochk <<'EOSH' -$rm -f try.c +$rm_try foo="$1" shift while test $# -ge 2; do @@ -9663,12 +9918,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 @@ -9686,7 +9942,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 @@ -9696,6 +9952,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 @@ -9712,7 +9969,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 " " @@ -9799,11 +10056,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 @@ -9820,7 +10077,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 @@ -9917,11 +10174,55 @@ if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then else echo "Your C compiler doesn't seem to understand __attribute__ at all." val="$undef" -fi +fi +;; +*) val="$d_attribute_format" ;; +esac +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_attribute_format" ;; +*) val="$d_printf_format_null" ;; esac -set d_attribute_format +set d_printf_format_null eval $setvar $rm -f attrib* @@ -10101,10 +10402,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 @@ -10169,7 +10466,7 @@ EOP esac set d_bsdgetpgrp eval $setvar -$rm -f try try.* +$rm_try : see if setpgrp exists set setpgrp d_setpgrp @@ -10235,11 +10532,217 @@ 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 +'') + echo " " + echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4 + $cat >try.c <<'EOCP' +#include +#include +#include + +#define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) ) + +int main(void) { + assert( SYRINX(1) == 2112 ); + assert( SYRINX(1) != 5150 ); + assert( SYRINX(0) == 5150 ); + assert( SYRINX(0) != 2112 ); + puts( "All good!" ); + exit(0); +} + +EOCP + set try + if eval $compile; then + echo "Your C compiler supports __builtin_choose_expr." + val="$define" + else + echo "Your C compiler doesn't seem to understand __builtin_choose_expr." + val="$undef" + fi +;; +*) val="$d_builtin_choose_expr" ;; +esac + +set d_builtin_choose_expr +eval $setvar +$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' +int main(void) { + int n = 50; + if ( __builtin_expect(n, 0) ) n = 1; +} +EOCP + set try + if eval $compile; then + echo "Your C compiler supports __builtin_choose_expr." + val="$define" + else + echo "Your C compiler doesn't seem to understand __builtin_choose_expr." + val="$undef" + fi + ;; +*) val="$d_builtin_expect" ;; +esac + +set d_builtin_expect +eval $setvar +$rm_try + : see if bzero exists set bzero d_bzero eval $inlibc +: 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); + 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` @@ -10300,7 +10803,7 @@ $cat >try.c < #include -$signal_t blech(s) int s; { exit(3); } +$signal_t blech(int s) { exit(3); } int main() { $xxx i32; @@ -10309,7 +10812,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"); @@ -10345,7 +10848,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 " " @@ -10358,11 +10861,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; @@ -10371,12 +10874,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"); @@ -10445,7 +10948,7 @@ case "$castflags" in esac set d_castneg eval $setvar -$rm -f try.* +$rm_try : see if vprintf exists echo " " @@ -10453,38 +10956,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 @@ -10511,6 +11051,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 @@ -10527,11 +11068,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 @@ -10568,7 +11109,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 @@ -10609,14 +11150,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 @@ -10635,7 +11176,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 @@ -10752,6 +11293,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 @@ -10961,7 +11506,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 @@ -10975,8 +11520,7 @@ else . ./myread direntrytype="$ans" fi -$rm -f try.c - +$rm_try : see if the directory entry stores field length echo " " @@ -10990,7 +11534,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 @@ -11065,6 +11645,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 @@ -11149,9 +11730,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 @@ -11169,7 +11750,7 @@ EOM fi ;; esac - + $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.* set d_dlsymun @@ -11692,7 +12273,7 @@ else fi set d_open3 eval $setvar -$rm -f try try.* +$rm_try : see which of string.h or strings.h is needed echo " " @@ -11769,6 +12350,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;; @@ -11823,18 +12412,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 @@ -11857,7 +12448,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() @@ -11961,6 +12552,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 ;; @@ -11977,7 +12574,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 " " @@ -12076,7 +12673,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 @@ -12176,7 +12773,7 @@ int main() { if (cnt == FILE_cnt(fp)) { puts("Pass_unchanged"); exit (0); - } + } if (FILE_cnt(fp) == (cnt - 42)) { puts("Pass_changed"); exit (0); @@ -12203,7 +12800,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 @@ -12241,7 +12838,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 @@ -12280,8 +12877,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; @@ -12344,8 +12941,7 @@ EOM esac set d_fcntl_can_lock eval $setvar -$rm -f try* - +$rm_try : check for fd_set items $cat <&4 @@ -12493,7 +13084,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 @@ -12509,7 +13100,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 @@ -12530,12 +13121,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 @@ -12556,10 +13145,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 @@ -12580,16 +13169,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 @@ -12599,7 +13188,6 @@ eval $inlibc set getespwnam d_getespwnam eval $inlibc - : see if getfsstat exists set getfsstat d_getfsstat eval $inlibc @@ -12834,7 +13422,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 @@ -14271,6 +14861,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 @@ -14408,12 +15051,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 @@ -14585,40 +15228,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 @@ -14648,9 +15257,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 @@ -14707,38 +15316,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 @@ -14843,7 +15424,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; @@ -14865,10 +15446,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); @@ -14881,7 +15461,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" @@ -14889,10 +15469,9 @@ 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 -f try.* try +$rm_try $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4 : volatile so that the compiler has to store it out to memory. @@ -14915,7 +15494,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) { @@ -14971,7 +15550,7 @@ int main(int argc, char **argv) { printf("(gives %g)\n", d); return 1; } - + #ifdef SIGFPE if (bletched) { printf("No - something bleched\n"); @@ -15013,9 +15592,7 @@ EOM ;; esac fi - -$rm -f try.* try - +$rm_try : check for off64_t echo " " @@ -15036,14 +15613,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() { @@ -15069,7 +15646,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 @@ -15090,7 +15667,7 @@ EOCP fi fi fi - $rm -f try try.* + $rm_try else d_old_pthread_create_joinable="$undef" old_pthread_create_joinable="" @@ -15100,10 +15677,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 @@ -15112,6 +15685,7 @@ eval $inlibc set readlink d_readlink eval $inlibc +: Check if exe is symlink to abs path of executing program echo " " procselfexe='' val="$undef" @@ -15139,6 +15713,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 < @@ -15171,7 +15793,6 @@ eval $setvar set pthread_attr_setscope d_pthread_attr_setscope eval $inlibc - : see whether the various POSIXish _yields exist $cat >try.c < @@ -15236,12 +15857,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 @@ -15491,7 +16110,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 @@ -15502,7 +16121,7 @@ EOCP fi ;; esac - $rm -f try.* try core + $rm_try ;; esac set d_safebcpy @@ -15567,7 +16186,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 @@ -15578,7 +16197,7 @@ EOCP fi ;; esac - $rm -f try.* try core + $rm_try ;; esac set d_safemcpy @@ -15634,7 +16253,7 @@ EOCP fi ;; esac -$rm -f try.* try core +$rm_try set d_sanemcmp eval $setvar @@ -15709,7 +16328,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 @@ -15717,7 +16336,7 @@ eval $setvar case "$d_sem" in $define) echo " " - $cat > try.h < tryh.h < try.c < #include @@ -15752,7 +16371,7 @@ END #include #include #include -#include "try.h" +#include "tryh.h" #ifndef errno extern int errno; #endif @@ -15783,7 +16402,7 @@ int main() { printf("semctl IPC_STAT failed: errno = %d\n", errno); # ifdef IPC_RMID if (semctl(sem, 0, IPC_RMID, arg) != 0) -# endif /* IPC_RMID */ +# endif /* IPC_RMID */ printf("semctl IPC_RMID failed: errno = %d\n", errno); } else #endif /* IPC_PRIVATE && ... */ @@ -15798,11 +16417,11 @@ END semun) val="$define" ;; esac fi - $rm -f try try.c + $rm_try + set d_semctl_semun + eval $setvar ;; esac - set d_semctl_semun - eval $setvar case "$d_semctl_semun" in $define) echo "You can use union semun for semctl IPC_STAT." >&4 @@ -15814,15 +16433,15 @@ END esac : see whether semctl IPC_STAT can use struct semid_ds pointer - val="$undef" case "$d_semctl_semid_ds" in '') + val="$undef" $cat > try.c <<'END' #include #include #include #include -#include "try.h" +#include "tryh.h" #include #include #ifndef errno @@ -15860,11 +16479,11 @@ END semid_ds) val="$define" ;; esac fi - $rm -f try try.c + $rm_try + set d_semctl_semid_ds + eval $setvar ;; esac - set d_semctl_semid_ds - eval $setvar case "$d_semctl_semid_ds" in $define) echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4 @@ -15872,7 +16491,6 @@ END *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4 ;; esac - $rm -f try.h ;; *) val="$undef" @@ -15886,6 +16504,7 @@ END eval $setvar ;; esac +$rm_try tryh.h : see if sendmsg exists set sendmsg d_sendmsg @@ -16298,7 +16917,6 @@ eval $inlibc set sfio.h i_sfio eval $inhdr - : see if sfio library is available case "$i_sfio" in $define) @@ -16448,8 +17066,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 @@ -16534,7 +17197,72 @@ EOM esac set d_sigsetjmp eval $setvar -$rm -f try.c try +$rm_try + +: see if snprintf exists +set snprintf d_snprintf +eval $inlibc + +: see if vsnprintf exists +set vsnprintf d_vsnprintf +eval $inlibc + +case "$d_snprintf-$d_vsnprintf" in +"$define-$define") + $cat <try.c <<'EOCP' +/* v?snprintf testing logic courtesy of Russ Allbery. + * According to C99: + * - if the buffer is too short it still must be \0-terminated + * - if the buffer is too short the potentially required length + * must be returned and not -1 + * - if the buffer is NULL the potentially required length + * must be returned and not -1 or core dump + */ +#include +#include + +char buf[2]; + +int test (char *format, ...) +{ + va_list args; + int count; + + va_start (args, format); + count = vsnprintf (buf, sizeof buf, format, args); + va_end (args); + return count; +} + +int main () +{ + return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0' + && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1); +} +EOCP + set try + if eval $compile; then + `$run ./try` + case "$?" in + 0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;; + *) cat <&4 +Your snprintf() and snprintf() don't seem to be working okay. +EOM + d_snprintf="$undef" + d_vsnprintf="$undef" + ;; + esac + else + echo "(I can't seem to compile the test program--assuming they don't)" + d_snprintf="$undef" + d_vsnprintf="$undef" + fi + $rm_try + ;; +esac : see if sockatmark exists set sockatmark d_sockatmark @@ -16608,8 +17336,7 @@ EOM ;; esac fi - -$rm -f try.* try +$rm_try : see if srand48_r exists set srand48_r d_srand48_r @@ -16707,24 +17434,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 @@ -16735,10 +17459,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 @@ -16754,6 +17477,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; @@ -17004,7 +17728,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; @@ -17065,6 +17789,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 @@ -17084,7 +17811,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; @@ -17119,6 +17846,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 @@ -17135,7 +17865,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; @@ -17171,6 +17901,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 @@ -17359,6 +18092,7 @@ fi set d_tzname eval $setvar +: Check if is a multiplatform env case "$osname" in next|rhapsody|darwin) multiarch="$define" ;; esac @@ -17417,7 +18151,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) @@ -17445,11 +18179,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 @@ -17549,7 +18283,7 @@ else *) d_u32align="$define" ;; esac fi -$rm -f core core.try.* try.core +$rm_try ;; esac @@ -17579,54 +18313,8 @@ set d_usleepproto usleep $i_unistd unistd.h eval $hasproto : see if ustat exists -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 +set ustat d_ustat +eval $inlibc : see if closedir exists set closedir d_closedir @@ -17662,7 +18350,7 @@ case "$d_closedir" in #endif #endif #endif -#endif +#endif int main() { return closedir(opendir(".")); } EOM set try @@ -17685,7 +18373,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 @@ -17764,7 +18453,7 @@ EOCP rp="Doubles must be aligned on a how-many-byte boundary?" . ./myread alignbytes="$ans" - $rm -f try.c try + $rm_try ;; esac @@ -17843,7 +18532,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") ; @@ -17855,7 +18544,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); @@ -17894,13 +18583,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 @@ -17945,7 +18634,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 @@ -18095,7 +18783,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 @@ -18120,6 +18808,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' @@ -18143,10 +18832,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; @@ -18215,7 +18905,7 @@ int main() { STDIO_STREAM_ARRAY[i]._file < open_max && STDIO_STREAM_ARRAY[i]._flag) fflush(&STDIO_STREAM_ARRAY[i]); - } + } } # endif #endif @@ -18266,7 +18956,7 @@ EOM fi fi fi - $rm -f core try.core core.try.* + $rm_try case "$fflushNULL" in x) $cat >&4 <&4 <&4 +echo "Checking the size of $zzz..." >&4 cat > try.c < #include @@ -18504,12 +19195,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 @@ -18541,6 +19233,7 @@ else fi +: Check 64bit sizes echo " " if $test X"$quadtype" != X; then @@ -18683,21 +19376,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 @@ -18756,6 +19448,7 @@ case "$ivdformat" in ;; esac +: Check format string for GID echo " " $echo "Checking the format string to be used for gids..." >&4 @@ -18803,7 +19496,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 @@ -18824,6 +19516,40 @@ EOM *) groupstype="$gidtype";; esac +: MAD = Misc Attribute Definition + +if $test $patchlevel -lt 9; then +: MAD is not available in 5.8.x or earlier. + ans=n; +else + case "$mad" in + $define|true|[yY]*) dflt='y' ;; + *) dflt='n' ;; + esac + cat <&4 case "$make_set_make" in @@ -18849,104 +19575,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 @@ -18965,28 +19593,28 @@ 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 @@ -19005,7 +19633,7 @@ EOCP need_va_copy="$define" ;; esac - $rm -f try.* core core.* *.core *.core.* + $rm_try ;; *) echo "You don't have , not checking for va_copy()." >&4 ;; @@ -19204,6 +19832,12 @@ if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 && if [ "X$ranlib" = "X" ]; then ranlib=":" fi +elif $ar s bar$_a >/dev/null 2>&1 && + $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 && + $run ./foobar >/dev/null 2>&1; then + echo "a table of contents needs to be added with '$ar s'." + orderlib=false + ranlib="$ar s" elif $ar ts bar$_a >/dev/null 2>&1 && $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 && $run ./foobar >/dev/null 2>&1; then @@ -19228,9 +19862,9 @@ else ranlib=":" fi fi -$rm -f foo* bar* +$rm -f foo* bar* -: check for type of arguments to select. +: check for type of arguments to select. case "$selecttype" in '') case "$d_select" in $define) @@ -19239,7 +19873,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 @@ -19325,7 +19959,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; @@ -19378,7 +20012,7 @@ EOM val=$ans selectminbits="$val" fi - $rm -f try.* try + $rm_try ;; *) : no select, so pick a harmless default selectminbits=$safebits @@ -19399,11 +20033,11 @@ if [ "X$fieldn" = X ]; then else xxx=`echo '#include ' | $cppstdin $cppminus $cppflags 2>/dev/null | - $grep '^[ ]*#.*include' | + $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 +: This will also avoid potentially non-existent files, such : as ../foo/bar.h xxxfiles='' for xx in $xxx /dev/null ; do @@ -19520,14 +20154,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 } @@ -19537,7 +20171,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++) { @@ -19657,14 +20291,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 @@ -19716,7 +20351,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 @@ -19788,7 +20423,7 @@ int main() printf("$dflt\n"); else if (sizeof(Size_t) == sizeof(int)) printf("int\n"); - else + else printf("long\n"); exit(0); } @@ -19812,11 +20447,12 @@ EOM . ./myread ssizetype="$ans" fi -$rm -f try try.* +$rm_try : see what type of char stdio uses. echo " " -echo '#include ' | $cppstdin $cppminus > stdioh +echo '#include ' > stdio.c +$cppstdin $cppminus < stdio.c > stdioh if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then echo "Your stdio uses unsigned chars." >&4 stdchar="unsigned char" @@ -19824,9 +20460,7 @@ else echo "Your stdio uses signed chars." >&4 stdchar="char" fi -$rm -f stdioh - - +$rm -f stdio.* stdioh : see what type uids are declared as in the kernel echo " " @@ -19852,12 +20486,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 @@ -19886,6 +20521,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" ;; @@ -19923,7 +20559,7 @@ else fi - +: Check format string for UID echo " " $echo "Checking the format string to be used for uids..." >&4 @@ -19962,7 +20598,7 @@ case "$uidsign" in ;; esac - +: Check if site customization support was requested case "$usesitecustomize" in $define|true|[Yy]*) usesitecustomize="$define" @@ -20003,6 +20639,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 @@ -20011,6 +20651,26 @@ 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 this is a ieeefp.h system case "$i_ieeefp" in '' ) set ieeefp.h i_ieeefp @@ -20030,8 +20690,6 @@ else i_machcthr="$undef" fi - - : see if this is a mntent.h system set mntent.h i_mntent eval $inhdr @@ -20093,7 +20751,7 @@ EOM echo "We won't be including ." >&4 val="$undef" fi - $rm -f try.* try + $rm_try ;; esac set i_neterrno @@ -20111,8 +20769,9 @@ eval $inhdr set prot.h i_prot eval $inhdr +: Preprocessor symbols echo " " -$echo "Guessing which symbols your C compiler and preprocessor define..." >&4 +$echo "Guessing which symbols your C compiler and preprocessor define..." >&4 $cat <<'EOSH' > Cppsym.know a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE @@ -20136,7 +20795,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 @@ -20155,7 +20814,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 @@ -20243,6 +20902,21 @@ EOSH chmod +x Cppsym.try $eunicefix Cppsym.try ./Cppsym < Cppsym.know > Cppsym.true +: Add in any linux cpp "predefined macros": +case "$osname::$gccversion" in + *linux*::*.*) + tHdrH=_tmpHdr + rm -f $tHdrH'.h' $tHdrH + touch $tHdrH'.h' + if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then + sed 's/#define[\ \ ]*//;s/[\ \ ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real' + if [ -s $tHdrH'_cppsym.real' ]; then + cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true + fi + fi + rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real' + ;; +esac : now check the C compiler for additional symbols postprocess_cc_v='' case "$osname" in @@ -20260,7 +20934,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 @@ -20376,10 +21050,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 @@ -20425,12 +21095,10 @@ 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 @@ -20451,7 +21119,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 @@ -20483,26 +21150,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 @@ -20518,40 +21166,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. @@ -20564,15 +21214,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) @@ -20587,32 +21243,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 @@ -20623,31 +21283,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 @@ -20662,10 +21309,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" @@ -20754,11 +21413,11 @@ EOM previous) if test X"$dynamic_ext" != X"$avail_ext"; then $cat <