X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/9e68546f79174957f317b4b7abcf8be457602a6d..4ae6f81b38ab10f8a43c09b6efd34ae18e93ce42:/Configure diff --git a/Configure b/Configure index fe2fcc9..854ed8f 100755 --- a/Configure +++ b/Configure @@ -14,7 +14,7 @@ # Note: this Configure script was generated automatically. Rather than # working with this copy of Configure, you may wish to get metaconfig. # The dist package (which contains metaconfig) is available via SVN: -# svn co https://svn.sourceforge.net/svnroot/dist/trunk/dist +# svn co https://svn.code.sf.net/p/dist/code/trunk/dist # # Though this script was generated by metaconfig from metaunits, it is # OK to send patches against Configure itself. It's up to the Configure @@ -28,7 +28,7 @@ # See Porting/pumpkin.pod for more information on metaconfig. # -# Generated on Thu Sep 22 17:10:35 CEST 2011 [metaconfig 3.5 PL0] +# Generated on Tue Sep 17 10:34:33 CEST 2013 [metaconfig 3.5 PL0] # (with additional metaconfig patches by perlbug@perl.org) cat >c1$$ <&1 >/dev/null ; then is_os2=yes elif test -n "$DJGPP"; then case "X${MACHTYPE:-nonesuchmach}" in - *cygwin) ;; + *cygwin|*msys) ;; *) p_=\; ;; esac fi @@ -332,6 +332,7 @@ d_archlib='' installarchlib='' archname='' myarchname='' +useversionedarchname='' d_atolf='' d_atoll='' baserev='' @@ -565,6 +566,7 @@ d_inetntop='' d_inetpton='' d_int64_t='' d_isascii='' +d_isblank='' d_isfinite='' d_isinf='' d_isnan='' @@ -722,6 +724,10 @@ d_snprintf='' d_vsnprintf='' d_sockatmark='' d_sockatmarkproto='' +d_ip_mreq='' +d_ip_mreq_source='' +d_ipv6_mreq='' +d_ipv6_mreq_source='' d_msg_ctrunc='' d_msg_dontroute='' d_msg_oob='' @@ -730,6 +736,7 @@ d_msg_proxy='' d_oldsock='' d_scm_rights='' d_sin6_scope_id='' +d_sockaddr_in6='' d_sockaddr_sa_len='' d_socket='' d_sockpair='' @@ -840,9 +847,11 @@ cccdlflags='' ccdlflags='' dlsrc='' ld='' +ld_can_script='' lddlflags='' usedl='' doublesize='' +bootstrap_charset='' ebcdic='' fflushNULL='' fflushall='' @@ -878,7 +887,6 @@ i_rpcsvcdbm='' d_dirnamlen='' direntrytype='' i_dirent='' -i_dld='' i_dlfcn='' i_fcntl='' i_float='' @@ -1218,6 +1226,7 @@ use64bitint='' dtrace='' usedtrace='' usefaststdio='' +usekernprocpathname='' ccflags_uselargefiles='' ldflags_uselargefiles='' libswanted_uselargefiles='' @@ -1235,7 +1244,6 @@ usesocks='' d_oldpthreads='' use5005threads='' useithreads='' -usekernprocpathname='' usereentrant='' usethreads='' incpath='' @@ -1275,8 +1283,6 @@ installvendorscript='' vendorscript='' vendorscriptexp='' versiononly='' -defvoidused='' -voidflags='' yacc='' yaccflags='' CONFIG='' @@ -1306,6 +1312,9 @@ elif test -f "/system/gnu_library/bin/ar.pm"; then elif test -n "$DJGPP"; then : DOS DJGPP _exe=".exe" +elif test -f /kern/cookiejar; then +: MiNT + _exe="" elif test -d c:/. -o -n "$is_os2" ; then : OS/2 or cygwin _exe=".exe" @@ -1354,9 +1363,6 @@ libswanted='' ignore_versioned_solibs='' : set usethreads on the Configure command line to enable threads. usereentrant='undef' -: full support for void wanted by default -defvoidused=15 - ccname='' ccversion='' perllibs='' @@ -1372,7 +1378,7 @@ libswanted_uselargefiles='' : set usesocks on the Configure command line to enable socks. : 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" +libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl ld sun" libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD" : We probably want to search /usr/shlib before most other libraries. : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist. @@ -1416,10 +1422,10 @@ esac case "$sh" in '') cat >&2 </dev/null; then @@ -3093,9 +3099,13 @@ case "$config_sh" in '') myuname=`$uname -a 2>/dev/null` $test -z "$myuname" && myuname=`hostname 2>/dev/null` +# Downcase everything to avoid ambiguity. +# Remove slashes and single quotes so we can use parts of this in +# directory and file names. +# Remove newlines so myuname is sane to use elsewhere. # 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,['/],,g" | \ ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '` newmyuname="$myuname" dflt=n @@ -3242,6 +3252,9 @@ EOM *) osvers=$tmp;; esac ;; + bitrig) osname=bitrig + osvers="$3" + ;; bsd386) osname=bsd386 osvers=`$uname -r` ;; @@ -3980,7 +3993,7 @@ else fi : determine installation prefix for where package is to be installed. -if $afs; then +if $afs; then $cat <&4 + cat >try.c < +typedef $uquadtype myULL; +int main (void) +{ + struct { + double d; + myULL u; + } *p, test[] = { + {4294967303.15, 4294967303ULL}, + {4294967294.2, 4294967294ULL}, + {4294967295.7, 4294967295ULL}, + {0.0, 0ULL} + }; + for (p = test; p->u; p++) { + myULL x = (myULL)p->d; + if (x != p->u) { + printf("buggy\n"); + return 0; + } + } + printf("ok\n"); + return 0; +} +EOCP + set try + if eval $compile_ok; then + libcquad=`./try` + echo "Your C library's 64-bit functions are $libcquad." + else + echo "(I can't seem to compile the test program.)" + echo "Assuming that your C library's 64-bit functions are ok." + libcquad="ok" + fi + $rm_try + + case "$libcquad" in + buggy*) + cat >&4 <&4 + ;; + *) + archname="$archname-$api_versionstring" + echo "...setting architecture name to $archname." >&4 + ;; + esac + ;; +esac + case "$usethreads" in $define) echo "Threads selected." >&4 @@ -6583,112 +6665,11 @@ $rm_try set i_malloc eval $setvar -: check for void type -echo " " -echo "Checking to see how well your C compiler groks the void type..." >&4 -case "$voidflags" in -'') - $cat >try.c < -#endif -#if TRY & 1 -void sub() { -#else -sub() { -#endif - extern void moo(); /* function returning void */ - void (*goo)(); /* ptr to func returning void */ -#if TRY & 8 - void *hue; /* generic ptr */ -#endif -#if TRY & 2 - void (*foo[10])(); -#endif - -#if TRY & 4 - if(goo == moo) { - exit(0); - } -#endif - exit(0); -} -int main() { sub(); } -EOCP - if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then - voidflags=$defvoidused - echo "Good. It appears to support void to the level $package wants.">&4 - if $contains warning .out >/dev/null 2>&1; then - echo "However, you might get some warnings that look like this:" - $cat .out - fi - else -echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4 - if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then - echo "It supports 1..." - if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then - echo "It also supports 2..." - if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then - voidflags=7 - echo "And it supports 4 but not 8 definitely." - else - echo "It doesn't support 4..." - if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then - voidflags=11 - echo "But it supports 8." - else - voidflags=3 - echo "Neither does it support 8." - fi - fi - else - echo "It does not support 2..." - if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then - voidflags=13 - echo "But it supports 4 and 8." - else - if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then - voidflags=5 - echo "And it supports 4 but has not heard about 8." - else - echo "However it supports 8 but not 4." - fi - fi - fi - else - echo "There is no support at all for void." - voidflags=0 - fi - fi -esac -case "$voidflags" in -"$defvoidused") ;; -*) $cat >&4 <<'EOM' - Support flag bits are: - 1: basic void declarations. - 2: arrays of pointers to functions returning void. - 4: operations between pointers to and addresses of void functions. - 8: generic void pointers. -EOM - dflt="$voidflags"; - rp="Your void support flags add up to what?" - . ./myread - voidflags="$ans" - ;; -esac -$rm_try - : check for length of pointer echo " " case "$ptrsize" in '') echo "Checking to see how big your pointers are..." >&4 - if test "$voidflags" -gt 7; then - echo '#define VOID_PTR char *' > try.c - else - echo '#define VOID_PTR void *' > try.c - fi $cat >>try.c < #$i_stdlib I_STDLIB @@ -6697,7 +6678,7 @@ case "$ptrsize" in #endif int main() { - printf("%d\n", (int)sizeof(VOID_PTR)); + printf("%d\n", (int)sizeof(void *)); exit(0); } EOCP @@ -6773,6 +6754,7 @@ case "$usemymalloc" in 4) dflt='y' ;; *) dflt='n' ;; esac + if test "$useithreads" = "$define"; then dflt='n'; fi ;; esac rp="Do you wish to attempt to use the malloc that comes with $package?" @@ -6908,7 +6890,7 @@ case "$ans" in [yY]*) fn=d~+ rp='Installation prefix to use for vendor-supplied add-ons?' case "$vendorprefix" in - '') dflt='' ;; + '') dflt="$prefix" ;; *) dflt=$vendorprefix ;; esac . ./getfile @@ -7000,9 +6982,9 @@ $cat <&4 - echo "'nm' won't be sufficient on this sytem." >&4 + echo "'nm' won't be sufficient on this system." >&4 dflt=n fi ;; @@ -7724,10 +7706,6 @@ esac esac $rm -f libnames libpath -: see if dld is available -set dld.h i_dld -eval $inhdr - : Check if we are using C++ echo " " echo "Checking for C++..." >&4 @@ -7862,9 +7840,6 @@ $undef|n|false) case "$d_dlopen" in $define) dflt='y' ;; esac - case "$i_dld" in - $define) dflt='y' ;; - esac : Does a dl_xxx.xs file exist for this operating system $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y' ;; @@ -7881,8 +7856,6 @@ y*) usedl="$define" dflt="$dldir/dl_${osname}.xs" elif $test "$d_dlopen" = "$define" ; then dflt="$dldir/dl_dlopen.xs" - elif $test "$i_dld" = "$define" ; then - dflt="$dldir/dl_dld.xs" else dflt='' fi @@ -7941,8 +7914,9 @@ Some systems use ld to create libraries that can be dynamically loaded, while other systems (such as those using ELF) use $cc. EOM - case "$ld" in - '') $cat >try.c <try.c < #$i_stdlib I_STDLIB @@ -7959,22 +7933,26 @@ int main() { 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) */ + exit(0); /* succeed (yes, it is ELF) */ else exit(1); /* fail */ } EOM - if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then + if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then + bin_ELF="$define" + fi + $rm_try + + case "$ld" in + '') if $test $bin_ELF = "$define"; then cat <try.c <try.h </dev/null 2>&1 \ + && $test -s a.out ; then + echo "ld supports scripting" >&4 + ld_can_script="$define" + else + echo "ld does not support scripting" >&4 + fi + $rm_try + ;; +esac + : Do we want a shared libperl? also='' case "$usedl" in @@ -8090,7 +8109,7 @@ $undef) ;; *) case "$useshrplib" in '') case "$osname" in - svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|haiku|cygwin*) + svr4*|nonstopux|dgux|dynixptx|esix|powerux|haiku|cygwin*) dflt=y also='Building a shared libperl is required for dynamic loading to work on your system.' ;; @@ -8252,7 +8271,7 @@ if "$useshrplib"; then solaris) xxx="-R $shrpdir" ;; - freebsd|mirbsd|netbsd|openbsd|interix|dragonfly) + freebsd|mirbsd|netbsd|openbsd|interix|dragonfly|bitrig) xxx="-Wl,-R$shrpdir" ;; bsdos|linux|irix*|dec_osf|gnu*) @@ -8261,9 +8280,6 @@ if "$useshrplib"; then next) # next doesn't like the default... ;; - beos) - # beos doesn't like the default, either. - ;; haiku) # Haiku doesn't like the default, either. ;; @@ -8315,7 +8331,7 @@ esac : determine where manual pages are on this system echo " " case "$sysman" in -'') +'') syspath='/usr/share/man/man1 /usr/man/man1' syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1" syspath="$syspath /usr/man/u_man/man1" @@ -8798,9 +8814,19 @@ your organization... EOM cont=x while test "$cont"; do + case "$MAILDOMAIN" in + '') + if $test -s /etc/mailname; then + maildomain=`$cat /etc/mailname` + else + maildomain="$myhostname$mydomain" + fi + ;; + *) maildomain="$MAILDOMAIN";; + esac case "$cf_email" in - '') dflt="$cf_by@$myhostname$mydomain";; - *) dflt="$cf_email";; + '') dflt="$cf_by@$maildomain";; + *) dflt="$cf_email";; esac rp='What is your e-mail address?' . ./myread @@ -10758,7 +10784,7 @@ else valstd="$undef" fi -: see if varags is available +: see if varargs is available echo " " if $test `./findhdr varargs.h`; then echo " found." >&4 @@ -10810,6 +10836,7 @@ chmod +x varargs : now check which varargs header should be included echo " " i_varhdr='' +val='' case "$valstd" in "$define") if `./varargs I_STDARG`; then @@ -10826,6 +10853,15 @@ case "$valstd" in esac case "$val" in '') + echo " " + echo "*** WHOA THERE!!! ***" >&4 + echo " Your C compiler \"$cc\" doesn't seem to support stdarg or varargs!" >&4 + case "$knowitall" in + '') + echo " I'm giving up; maybe you can try again with a different compiler?" >&4 + exit 1 + ;; + esac 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 @@ -11297,6 +11333,24 @@ set d_sockaddr_sa_len; eval $setvar $rm_try echo " " +echo "Checking the availability struct sockaddr_in6 ..." >&4 +$cat >try.c < +#include +#include +int main() { +struct sockaddr_in6 sin6; +return (sin6.sin6_family); +} +EOF +val="$undef" +set try; if eval $compile; then + val="$define" +fi +set d_sockaddr_in6; eval $setvar +$rm_try + +echo " " echo "Checking the availability sin6_scope_id in struct sockaddr_in6 ..." >&4 $cat >try.c < @@ -11315,6 +11369,78 @@ set d_sin6_scope_id; eval $setvar $rm_try echo " " +echo "Checking the availability struct ip_mreq ..." >&4 +$cat >try.c < +#include +#include +int main() { +struct ip_mreq mreq; +return (mreq.imr_multiaddr.s_addr); +} +EOF +val="$undef" +set try; if eval $compile; then + val="$define" +fi +set d_ip_mreq; eval $setvar +$rm_try + +echo " " +echo "Checking the availability struct ip_mreq_source ..." >&4 +$cat >try.c < +#include +#include +int main() { +struct ip_mreq_source mreq; +return (mreq.imr_multiaddr.s_addr); +} +EOF +val="$undef" +set try; if eval $compile; then + val="$define" +fi +set d_ip_mreq_source; eval $setvar +$rm_try + +echo " " +echo "Checking the availability struct ipv6_mreq ..." >&4 +$cat >try.c < +#include +#include +int main() { +struct ipv6_mreq mreq; +return (mreq.ipv6mr_interface); +} +EOF +val="$undef" +set try; if eval $compile; then + val="$define" +fi +set d_ipv6_mreq; eval $setvar +$rm_try + +echo " " +echo "Checking the availability struct ipv6_mreq_source ..." >&4 +$cat >try.c < +#include +#include +int main() { +struct ipv6_mreq_source mreq; +return (mreq.imr_multiaddr.s_addr); +} +EOF +val="$undef" +set try; if eval $compile; then + val="$define" +fi +set d_ipv6_mreq_source; eval $setvar +$rm_try + +echo " " echo "Checking the availability of certain socket constants..." >&4 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'` @@ -11792,7 +11918,7 @@ $cat >dirfd.c <= 0) @@ -12295,7 +12421,7 @@ $define) $rm -f $$.h ;; *) - val="$undef"; + val="$undef"; set d_pwquota; eval $setvar set d_pwage; eval $setvar set d_pwchange; eval $setvar @@ -14929,6 +15055,30 @@ set d_isascii eval $setvar $rm -f isascii* +: Look for isblank +echo " " +$cat >isblank.c <<'EOCP' +#include +#include +int main() { + int c = ' '; + if (isblank(c)) + return 0 ; + else + return 1 ; +} +EOCP +if $cc $ccflags $ldflags -o isblank isblank.c $libs >/dev/null 2>&1 ; then + echo "isblank() found." >&4 + val="$define" +else + echo "isblank() NOT found." >&4 + val="$undef" +fi +set d_isblank +eval $setvar +$rm -f isblank* + : see if isfinite exists set isfinite d_isfinite eval $inlibc @@ -15554,7 +15704,7 @@ int main() { #endif #ifdef INT16 int16_t i = INT16_MAX; - uint16_t i = UINT16_MAX; + uint16_t u = UINT16_MAX; printf("int16_t\n"); #endif #ifdef INT32 @@ -17442,7 +17592,7 @@ EOP if eval $compile_ok; then val="$define" else - echo "But you don't seem to have a useable struct sigaction." >&4 + echo "But you don't seem to have a usable struct sigaction." >&4 val="$undef" fi else @@ -17877,7 +18027,7 @@ EOCP # Respect a hint (or previous) value for perl_static_inline, if there is one. case "$perl_static_inline" in '') # Check the various possibilities, and break out on success. - # For gcc, prefer __inline__, which will still permit + # For gcc, prefer __inline__, which will still permit # cflags.SH to add in -ansi. case "$gccversion" in '') xxx="inline __inline__ __inline _inline";; @@ -18007,11 +18157,11 @@ if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then echo 'strerror() found.' >&4 d_strerror="$define" d_strerrm='strerror(e)' - if set sys_errlist val -a d_syserrlst; eval $csym; $val; then - echo "(You also have sys_errlist[], so we could roll our own strerror.)" + if set sys_errlist val -a d_syserrlst; eval $csym; $val; then + echo "(You also have sys_errlist[], so we could roll our own strerror.)" d_syserrlst="$define" else - echo "(Since you don't have sys_errlist[], sterror() is welcome.)" + echo "(Since you don't have sys_errlist[], strerror() is welcome.)" d_syserrlst="$undef" fi elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \ @@ -18019,7 +18169,7 @@ if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then echo 'strerror() found in string header.' >&4 d_strerror="$define" d_strerrm='strerror(e)' - if set sys_errlist val -a d_syserrlst; eval $csym; $val; then + if set sys_errlist val -a d_syserrlst; eval $csym; $val; then echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)" d_syserrlst="$define" else @@ -18557,7 +18707,7 @@ eval $setvar : Check if is a multiplatform env case "$osname" in -next|rhapsody|darwin) multiarch="$define" ;; +next|darwin) multiarch="$define" ;; esac case "$multiarch" in ''|[nN]*) multiarch="$undef" ;; @@ -18867,11 +19017,10 @@ Revision='$Revision' : check for alignment requirements echo " " -case "$usecrosscompile$multiarch" in +case "$usecrosscompile" in *$define*) $cat <&4 + fi + ;; + esac ;; *) dflt="$alignbytes" ;; @@ -18924,7 +19084,40 @@ esac : set the base revision baserev=5.0 -: length of character in bytes. Is always 1, otherwise it isnt C +: Determine if this is an EBCDIC system +echo " " +echo "Determining whether or not we are on an EBCDIC system..." >&4 +$cat >try.c <<'EOM' +int main() +{ + if ('M'==0xd4) return 0; + return 1; +} +EOM + +case "$BOOTSTRAP_CHARSET" in + Y|y|define) bootstrap_charset=$define ;; + *) bootstrap_charset=$undef ;; +esac + +val=$undef +set try +if eval $compile_ok; then + if $run ./try; then + echo "You seem to speak EBCDIC." >&4 + val="$define" + else + echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4 + fi +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_try +set ebcdic +eval $setvar + +: length of character in bytes. Is always 1, otherwise it is not C : This used to be a test using sizeof charsize=1 @@ -19193,376 +19386,22 @@ esac : How can we generate normalized random numbers ? echo " " -echo "Looking for a random number function..." >&4 -case "$randfunc" in -'') - if set drand48 val -f; eval $csym; $val; then - dflt="drand48" - echo "Good, found drand48()." >&4 - elif set random val -f; eval $csym; $val; then - dflt="random" - echo "OK, found random()." >&4 - else - dflt="rand" - echo "Yick, looks like I have to use rand()." >&4 - fi - echo " " - ;; -*) - dflt="$randfunc" - ;; -esac -cont=true +echo "Using our internal random number implementation..." >&4 case "$ccflags" in -*-Dmy_rand=*|*-Dmy_srand=*) - echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4 - ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`" - ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`" - ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`" - ;; -esac - -while $test "$cont"; do - rp="Use which function to generate random numbers?" - . ./myread - if $test "$ans" = "$dflt"; then - : null - else - randbits='' - fi - randfunc="$ans" - if set $ans val -f; eval $csym; $val; then - cont='' - else - dflt=y - rp="I cannot find function $ans. Use that name anyway?" - . ./myread - dflt=rand - case "$ans" in - [yY]*) cont='';; - esac - fi - case "$cont" in - '') - case "$randfunc" in - drand48) - drand01="drand48()" - seedfunc="srand48" - randbits=48 - randseedtype=long - ;; - rand|random) - case "$randbits" in - '') -echo "Checking to see how many bits your $randfunc() function produces..." >&4 - $cat >try.c < -#ifdef I_UNISTD -# include -#endif -#ifdef I_STDLIB -# include -#endif -int main() -{ - register int i; - register unsigned long tmp; - register unsigned long max = 0L; - - for (i = 1000; i; i--) { - tmp = (unsigned long) $randfunc(); - if (tmp > max) max = tmp; - } - for (i = 0; max; i++) - max /= 2; - printf("%d\n",i); -} -EOCP - set try - if eval $compile_ok; then - dflt=`try` - else - dflt='?' - echo "(I can't seem to compile the test program...)" - fi - ;; - *) - dflt="$randbits" - ;; - esac - rp="How many bits does your $randfunc() function produce?" - . ./myread - randbits="$ans" - $rm_try - drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))" - seedfunc="s$randfunc" - randseedtype=unsigned - ;; - *) - dflt="31" - rp="How many bits does your $randfunc() function produce?" - . ./myread - randbits="$ans" - seedfunc="s$randfunc" - drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))" - if set $seedfunc val -f; eval $csym; $val; then - echo "(Using $seedfunc() to seed random generator)" - else - echo "(Warning: no $seedfunc() to seed random generator)" - seedfunc=rand - fi - randseedtype=unsigned - ;; - esac - ;; - esac -done - -: Determine if this is an EBCDIC system -echo " " -echo "Determining whether or not we are on an EBCDIC system..." >&4 -$cat >try.c <<'EOM' -int main() -{ - if ('M'==0xd4) return 0; - return 1; -} -EOM - -val=$undef -set try -if eval $compile_ok; then - if $run ./try; then - echo "You seem to speak EBCDIC." >&4 - val="$define" - else - echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4 - fi -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_try -set ebcdic -eval $setvar - -: Determine if we can use sysctl with KERN_PROC_PATHNAME to find executing program -echo " " -echo "Determining whether we can use sysctl with KERN_PROC_PATHNAME to find executing program..." >&4 -$cat >try.c <<'EOM' -/* Intentionally a long probe as I'd like to sanity check that the exact - approach is going to work, as thinking it will work, but only having it - part working at runtime is worse than not having it. */ - -#include -#include -#include -#include -#include -#include -#include - -int -main(int argc, char **argv) { - char *buffer; - char *argv_leaf = strrchr(argv[0], '/'); - char *buffer_leaf; - size_t size = 0; - int mib[4]; - - mib[0] = CTL_KERN; - mib[1] = KERN_PROC; - mib[2] = KERN_PROC_PATHNAME; - mib[3] = -1; - - if (!argv_leaf) { - fprintf(stderr, "Can't locate / in '%s'\n", argv[0]); - return 1; - } - - if (sysctl(mib, 4, NULL, &size, NULL, 0)) { - perror("sysctl"); - return 2; - } - - if (size < strlen(argv_leaf) + 1) { - fprintf(stderr, "size %lu is too short for a path\n", - (unsigned long) size); - return 3; - } - - if (size > MAXPATHLEN * MAXPATHLEN) { - fprintf(stderr, "size %lu is too long for a path\n", - (unsigned long) size); - return 4; - } - - buffer = malloc(size); - if (!buffer) { - perror("malloc"); - return 5; - } - - if (sysctl(mib, 4, buffer, &size, NULL, 0)) { - perror("sysctl"); - return 6; - } - - if (strlen(buffer) + 1 != size) { - fprintf(stderr, "size != strlen(buffer) + 1 (%lu != %lu)\n", - (unsigned long)size, (unsigned long)strlen(buffer) + 1); - return 7; - } - - - if (*buffer != '/') { - fprintf(stderr, "Not an absolute path: '%s'\n", buffer); - return 8; - } - - if (strstr(buffer, "/./")) { - fprintf(stderr, "Contains /./: '%s'\n", buffer); - return 9; - } - - if (strstr(buffer, "/../")) { - fprintf(stderr, "Contains /../: '%s'\n", buffer); - return 10; - } - - buffer_leaf = strrchr(buffer, '/'); - if (strcmp(buffer_leaf, argv_leaf) != 0) { - fprintf(stderr, "Leafnames differ: '%s' vs '%s'\n", argv[0], buffer); - return 11; - } - - free(buffer); - - return 0; -} -EOM - -val=$undef -set try -if eval $compile_ok; then - if $run ./try; then - echo "You can use sysctl with KERN_PROC_PATHNAME to find the executing program." >&4 - val="$define" - else - echo "Nope, sysctl with KERN_PROC_PATHNAME doesn't work here." >&4 - val="$undef" - fi -else - echo "I'm unable to compile the test program." >&4 - echo "I'll assume no sysctl with KERN_PROC_PATHNAME here." >&4 - val="$undef" -fi -$rm_try -set usekernprocpathname -eval $setvar - -: Determine if we can use _NSGetExecutablePath to find executing program -echo " " -echo "Determining whether we can use _NSGetExecutablePath to find executing program..." >&4 -$cat >try.c <<'EOM' -/* Intentionally a long probe as I'd like to sanity check that the exact - approach is going to work, as thinking it will work, but only having it - part working at runtime is worse than not having it. */ -#include -#include -#include -#include -#include - -int -main(int argc, char **argv) { - char buf[1]; - uint32_t size = sizeof(buf); - int result; - char *buffer; - char *tidied; - char *argv_leaf = strrchr(argv[0], '/'); - char *tidied_leaf; - - if (!argv_leaf) { - fprintf(stderr, "Can't locate / in '%s'\n", argv[0]); - return 1; - } - - _NSGetExecutablePath(buf, &size); - if (size > MAXPATHLEN * MAXPATHLEN) { - fprintf(stderr, "_NSGetExecutablePath size %u is too long for a path\n", - (unsigned int) size); - return 2; - } - - buffer = malloc(size); - if (!buffer) { - perror("malloc"); - return 3; - } - - result = _NSGetExecutablePath(buffer, &size); - if (result != 0) { - fprintf(stderr, "_NSGetExecutablePath returned %i for a size of %u\n", - result, (unsigned int) size); - return 4; - } - - tidied = realpath(buffer, NULL); - if (!tidied) { - perror("realpath"); - return 5; - } - - free(buffer); - - if (*tidied != '/') { - fprintf(stderr, "Not an absolute path: '%s'\n", tidied); - return 6; - } - - if (strstr(tidied, "/./")) { - fprintf(stderr, "Contains /./: '%s'\n", tidied); - return 7; - } - - if (strstr(tidied, "/../")) { - fprintf(stderr, "Contains /../: '%s'\n", tidied); - return 8; - } - - tidied_leaf = strrchr(tidied, '/'); - if (strcmp(tidied_leaf, argv_leaf) != 0) { - fprintf(stderr, "Leafnames differ: '%s' vs '%s'\n", argv[0], tidied); - return 9; - } - - free(tidied); - - return 0; -} -EOM +*-Dmy_rand=*|*-Dmy_srand=*) + echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4 + ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`" + ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`" + ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`" + ;; +esac -val=$undef -set try -if eval $compile_ok; then - if $run ./try; then - echo "You can use _NSGetExecutablePath to find the executing program." >&4 - val="$define" - else - echo "Nope, _NSGetExecutablePath doesn't work here." >&4 - fi -else - echo "I'm unable to compile the test program." >&4 - echo "I'll assume no _NSGetExecutablePath here." >&4 -fi -$rm_try -set usensgetexecutablepath -eval $setvar +randfunc=Perl_drand48 +drand01="Perl_drand48()" +seedfunc="Perl_drand48_init" +randbits=48 +randseedtype=U32 : Check how to flush echo " " @@ -19667,7 +19506,7 @@ if $test "X$fflushNULL" = X -o "X$fflushall" = X; then ;; esac fi -: check for fflush NULL behaviour +: check for fflush NULL behavior case "$fflushNULL" in '') set try -DTRY_FFLUSH_NULL $output if eval $compile; then @@ -20365,6 +20204,7 @@ EOCP $rm_try ;; *) echo "You don't have , not checking for va_copy()." >&4 + need_va_copy="$undef" ;; esac @@ -20522,9 +20362,9 @@ case "$pager" in esac ;; *) dflt="$pager" - fn="f/($pager)" ;; esac +fn="f/($dflt)" echo " " rp='What pager is used on your system?' . ./getfile @@ -21554,6 +21394,221 @@ case "$uidsign" in ;; esac +: Determine if we can use sysctl with KERN_PROC_PATHNAME to find executing program +echo " " +echo "Determining whether we can use sysctl with KERN_PROC_PATHNAME to find executing program..." >&4 +$cat >try.c <<'EOM' +/* Intentionally a long probe as I'd like to sanity check that the exact + approach is going to work, as thinking it will work, but only having it + part working at runtime is worse than not having it. */ + +#include +#include +#include +#include +#include +#include +#include + +int +main(int argc, char **argv) { + char *buffer; + char *argv_leaf = strrchr(argv[0], '/'); + char *buffer_leaf; + size_t size = 0; + int mib[4]; + + mib[0] = CTL_KERN; + mib[1] = KERN_PROC; + mib[2] = KERN_PROC_PATHNAME; + mib[3] = -1; + + if (!argv_leaf) { + fprintf(stderr, "Can't locate / in '%s'\n", argv[0]); + return 1; + } + + if (sysctl(mib, 4, NULL, &size, NULL, 0)) { + perror("sysctl"); + return 2; + } + + if (size < strlen(argv_leaf) + 1) { + fprintf(stderr, "size %lu is too short for a path\n", + (unsigned long) size); + return 3; + } + + if (size > MAXPATHLEN * MAXPATHLEN) { + fprintf(stderr, "size %lu is too long for a path\n", + (unsigned long) size); + return 4; + } + + buffer = malloc(size); + if (!buffer) { + perror("malloc"); + return 5; + } + + if (sysctl(mib, 4, buffer, &size, NULL, 0)) { + perror("sysctl"); + return 6; + } + + if (strlen(buffer) + 1 != size) { + fprintf(stderr, "size != strlen(buffer) + 1 (%lu != %lu)\n", + (unsigned long)size, (unsigned long)strlen(buffer) + 1); + return 7; + } + + + if (*buffer != '/') { + fprintf(stderr, "Not an absolute path: '%s'\n", buffer); + return 8; + } + + if (strstr(buffer, "/./")) { + fprintf(stderr, "Contains /./: '%s'\n", buffer); + return 9; + } + + if (strstr(buffer, "/../")) { + fprintf(stderr, "Contains /../: '%s'\n", buffer); + return 10; + } + + buffer_leaf = strrchr(buffer, '/'); + if (strcmp(buffer_leaf, argv_leaf) != 0) { + fprintf(stderr, "Leafnames differ: '%s' vs '%s'\n", argv[0], buffer); + return 11; + } + + free(buffer); + + return 0; +} +EOM + +val=$undef +set try +if eval $compile; then + if $run ./try; then + echo "You can use sysctl with KERN_PROC_PATHNAME to find the executing program." >&4 + val="$define" + else + echo "Nope, sysctl with KERN_PROC_PATHNAME doesn't work here." >&4 + val="$undef" + fi +else + echo "I'm unable to compile the test program." >&4 + echo "I'll assume no sysctl with KERN_PROC_PATHNAME here." >&4 + val="$undef" +fi +$rm_try +set usekernprocpathname +eval $setvar + +: Determine if we can use _NSGetExecutablePath to find executing program +echo " " +echo "Determining whether we can use _NSGetExecutablePath to find executing program..." >&4 +$cat >try.c <<'EOM' +/* Intentionally a long probe as I'd like to sanity check that the exact + approach is going to work, as thinking it will work, but only having it + part working at runtime is worse than not having it. */ +#include +#include +#include +#include +#include + +int +main(int argc, char **argv) { + char buf[1]; + uint32_t size = sizeof(buf); + int result; + char *buffer; + char *tidied; + char *argv_leaf = strrchr(argv[0], '/'); + char *tidied_leaf; + + if (!argv_leaf) { + fprintf(stderr, "Can't locate / in '%s'\n", argv[0]); + return 1; + } + + _NSGetExecutablePath(buf, &size); + if (size > MAXPATHLEN * MAXPATHLEN) { + fprintf(stderr, "_NSGetExecutablePath size %u is too long for a path\n", + (unsigned int) size); + return 2; + } + + buffer = malloc(size); + if (!buffer) { + perror("malloc"); + return 3; + } + + result = _NSGetExecutablePath(buffer, &size); + if (result != 0) { + fprintf(stderr, "_NSGetExecutablePath returned %i for a size of %u\n", + result, (unsigned int) size); + return 4; + } + + tidied = realpath(buffer, NULL); + if (!tidied) { + perror("realpath"); + return 5; + } + + free(buffer); + + if (*tidied != '/') { + fprintf(stderr, "Not an absolute path: '%s'\n", tidied); + return 6; + } + + if (strstr(tidied, "/./")) { + fprintf(stderr, "Contains /./: '%s'\n", tidied); + return 7; + } + + if (strstr(tidied, "/../")) { + fprintf(stderr, "Contains /../: '%s'\n", tidied); + return 8; + } + + tidied_leaf = strrchr(tidied, '/'); + if (strcmp(tidied_leaf, argv_leaf) != 0) { + fprintf(stderr, "Leafnames differ: '%s' vs '%s'\n", argv[0], tidied); + return 9; + } + + free(tidied); + + return 0; +} +EOM + +val=$undef +set try +if eval $compile; then + if $run ./try; then + echo "You can use _NSGetExecutablePath to find the executing program." >&4 + val="$define" + else + echo "Nope, _NSGetExecutablePath doesn't work here." >&4 + fi +else + echo "I'm unable to compile the test program." >&4 + echo "I'll assume no _NSGetExecutablePath here." >&4 +fi +$rm_try +set usensgetexecutablepath +eval $setvar + : Check if site customization support was requested case "$usesitecustomize" in $define|true|[Yy]*) @@ -21604,7 +21659,7 @@ case "$yacc" in *-y*) ;; *) yacc="$yacc -y" - echo "(Adding -y option to bison to get yacc-compatible behaviour.)" + echo "(Adding -y option to bison to get yacc-compatible behavior.)" ;; esac ;; @@ -21838,15 +21893,16 @@ $cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $r EOSH chmod +x Cppsym.try $eunicefix Cppsym.try -./Cppsym < Cppsym.know > Cppsym.true -: Add in any linux cpp "predefined macros": +./Cppsym < Cppsym.know | $sort | $uniq > Cppsym.true +: Add in any Linux cpp "predefined macros": case "$osname::$gccversion" in *linux*::*.*|*gnukfreebsd*::*.*|gnu::*.*) tHdrH=_tmpHdr rm -f $tHdrH'.h' $tHdrH touch $tHdrH'.h' + # Filter out macro arguments, such as Linux's __INT8_C(c) if $cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then - sed 's/#define[\ \ ]*//;s/[\ \ ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real' + sed -e 's/#define[\ \ ]*//;s/[\ \ ].*$//' -e '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 @@ -22119,10 +22175,10 @@ esac : Check extensions echo " " echo "Looking for extensions..." >&4 -: If we are using the old config.sh, known_extensions may contain -: old or inaccurate or duplicate values. -known_extensions='' +: If we are using the old config.sh, nonxs_extensions and xs_extensions may +: contain old or inaccurate or duplicate values. nonxs_extensions='' +xs_extensions='' : We do not use find because it might not be available. : We do not just use MANIFEST because the user may have dropped : some additional extensions into the source tree and expect them @@ -22138,32 +22194,38 @@ find_extensions=' DynaLoader|dynaload) ;; *) this_ext=`echo $xxx | $sed -e s/-/\\\//g`; - leaf=`echo $xxx | $sed -e s/.*-//`; - if $test -d File; then - if $test -f $xxx/$leaf.xs -o -f $xxx/$leaf.c; then - known_extensions="$known_extensions $1$this_ext"; - elif $test -f $xxx/Makefile.PL; then - nonxs_extensions="$nonxs_extensions $1$this_ext"; - else - if $test -d $xxx -a $# -lt 10; then - set $1$xxx/ $*; - cd "$xxx"; - eval $find_extensions; - cd ..; - shift; - fi; - fi; - else - $ls -1 $xxx > $$.tmp; - if $contains "\.xs$" $$.tmp > /dev/null 2>&1; then - known_extensions="$known_extensions $this_ext"; - elif $contains "\.c$" $$.tmp > /dev/null 2>&1; then - known_extensions="$known_extensions $this_ext"; - elif $test -d $xxx; then - nonxs_extensions="$nonxs_extensions $this_ext"; - fi; - $rm -f $$.tmp; - fi + case "$this_ext" in + Scalar/List/Utils) this_ext="List/Util";; + PathTools) this_ext="Cwd";; + esac; + echo " $xs_extensions $nonxs_extensions" > $$.tmp; + if $contains " $this_ext " $$.tmp; then + echo >&4; + echo "Duplicate directories detected for extension $xxx" >&4; + echo "Configure cannot correctly recover from this - shall I abort?" >&4; + case "$knowitall" in + "") dflt=y;; + *) dflt=n;; + esac; + . ../UU/myread; + case "$ans" in + n*|N*) ;; + *) echo >&4; + echo "Ok. Stopping Configure." >&4; + echo "Please remove the duplicate directory (e.g. using git clean) and then re-run Configure" >&4; + exit 1;; + esac; + echo "Ok. You will need to correct config.sh before running make." >&4; + fi; + $ls -1 $xxx > $$.tmp; + if $contains "\.xs$" $$.tmp > /dev/null 2>&1; then + xs_extensions="$xs_extensions $this_ext"; + elif $contains "\.c$" $$.tmp > /dev/null 2>&1; then + xs_extensions="$xs_extensions $this_ext"; + elif $test -d $xxx; then + nonxs_extensions="$nonxs_extensions $this_ext"; + fi; + $rm -f $$.tmp; ;; esac; done' @@ -22180,27 +22242,18 @@ cd "$rsrc/ext" set X shift eval $find_extensions -if $test -d File-Glob; then - : All ext/ flattened -else - # 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" -fi -set X $known_extensions +set X $xs_extensions shift -known_extensions=`echo "$*" | tr ' ' $trnl | $sort | tr $trnl ' '` +xs_extensions=`echo "$*" | tr ' ' $trnl | $sort | tr $trnl ' '` set X $nonxs_extensions shift nonxs_extensions=`echo "$*" | tr ' ' $trnl | $sort | tr $trnl ' '` cd "$tdir" +known_extensions=`echo $nonxs_extensions $xs_extensions | tr ' ' $trnl | $sort | tr $trnl ' '` : Now see which are supported on this system. avail_ext='' -for xxx in $known_extensions ; do +for xxx in $xs_extensions ; do case "$xxx" in DB_File|db_file) case "$i_db" in @@ -22267,12 +22320,7 @@ for xxx in $known_extensions ; do ;; Socket|socket) case "$d_socket" in - true|$define|y) - case "$osname" in - beos) ;; # not unless BONE - *) avail_ext="$avail_ext $xxx" ;; - esac - ;; + true|$define|y) avail_ext="$avail_ext $xxx" ;; esac ;; Sys/Syslog|sys/syslog) @@ -22370,6 +22418,8 @@ esac nonxs_ext='' for xxx in $nonxs_extensions ; do case "$xxx" in + VMS*) + ;; *) nonxs_ext="$nonxs_ext $xxx" ;; esac @@ -22508,6 +22558,7 @@ case " $static_ext " in cd "$rsrc/cpan" for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do static_ext="$static_ext Encode/$xxx" + known_extensions="$known_extensions Encode/$xxx" done cd "$tdir" ;; @@ -22543,7 +22594,7 @@ sunos*X4*) ;; *) case "$usedl" in $define|true|[yY]*) - set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -lgdbm_compat @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` + set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -lgdbm_compat @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` shift perllibs="$*" ;; @@ -22668,6 +22719,7 @@ bin='$bin' bin_ELF='$bin_ELF' binexp='$binexp' bison='$bison' +bootstrap_charset='$bootstrap_charset' byacc='$byacc' byteorder='$byteorder' c='$c' @@ -22905,7 +22957,12 @@ d_inetaton='$d_inetaton' d_inetntop='$d_inetntop' d_inetpton='$d_inetpton' d_int64_t='$d_int64_t' +d_ip_mreq='$d_ip_mreq' +d_ip_mreq_source='$d_ip_mreq_source' +d_ipv6_mreq='$d_ipv6_mreq' +d_ipv6_mreq_source='$d_ipv6_mreq_source' d_isascii='$d_isascii' +d_isblank='$d_isblank' d_isfinite='$d_isfinite' d_isinf='$d_isinf' d_isnan='$d_isnan' @@ -23069,6 +23126,7 @@ d_sigsetjmp='$d_sigsetjmp' d_sin6_scope_id='$d_sin6_scope_id' d_sitearch='$d_sitearch' d_snprintf='$d_snprintf' +d_sockaddr_in6='$d_sockaddr_in6' d_sockaddr_sa_len='$d_sockaddr_sa_len' d_sockatmark='$d_sockatmark' d_sockatmarkproto='$d_sockatmarkproto' @@ -23166,7 +23224,6 @@ db_prefixtype='$db_prefixtype' db_version_major='$db_version_major' db_version_minor='$db_version_minor' db_version_patch='$db_version_patch' -defvoidused='$defvoidused' direntrytype='$direntrytype' dlext='$dlext' dlsrc='$dlsrc' @@ -23262,7 +23319,6 @@ i_crypt='$i_crypt' i_db='$i_db' i_dbm='$i_dbm' i_dirent='$i_dirent' -i_dld='$i_dld' i_dlfcn='$i_dlfcn' i_fcntl='$i_fcntl' i_float='$i_float' @@ -23385,6 +23441,7 @@ ivtype='$ivtype' known_extensions='$known_extensions' ksh='$ksh' ld='$ld' +ld_can_script='$ld_can_script' lddlflags='$lddlflags' ldflags='$ldflags' ldflags_uselargefiles='$ldflags_uselargefiles' @@ -23672,6 +23729,7 @@ usesitecustomize='$usesitecustomize' usesocks='$usesocks' usethreads='$usethreads' usevendorprefix='$usevendorprefix' +useversionedarchname='$useversionedarchname' usevfork='$usevfork' usrinc='$usrinc' uuname='$uuname' @@ -23705,7 +23763,6 @@ version='$version' version_patchlevel_string='$version_patchlevel_string' versiononly='$versiononly' vi='$vi' -voidflags='$voidflags' xlibpth='$xlibpth' yacc='$yacc' yaccflags='$yaccflags'