X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/17a6c8e38505fd8d5700febfe392e470c9c5fff8..5b67adb87165fc2a1a93bd8079f144d6390c23c3:/Configure diff --git a/Configure b/Configure index 94805cb..f8982cf 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,9 +28,7 @@ # See Porting/pumpkin.pod for more information on metaconfig. # -# $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $ -# -# Generated on Wed Jun 23 16:03:55 CEST 2010 [metaconfig 3.5 PL0] +# Generated on Mon May 27 09:27:16 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 @@ -334,6 +332,7 @@ d_archlib='' installarchlib='' archname='' myarchname='' +useversionedarchname='' d_atolf='' d_atoll='' baserev='' @@ -567,6 +566,7 @@ d_inetntop='' d_inetpton='' d_int64_t='' d_isascii='' +d_isblank='' d_isfinite='' d_isinf='' d_isnan='' @@ -724,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='' @@ -731,6 +735,9 @@ d_msg_peek='' d_msg_proxy='' d_oldsock='' d_scm_rights='' +d_sin6_scope_id='' +d_sockaddr_in6='' +d_sockaddr_sa_len='' d_socket='' d_sockpair='' sockethdr='' @@ -840,9 +847,11 @@ cccdlflags='' ccdlflags='' dlsrc='' ld='' +ld_can_script='' lddlflags='' usedl='' doublesize='' +bootstrap_charset='' ebcdic='' fflushNULL='' fflushall='' @@ -926,6 +935,7 @@ i_pwd='' i_sfio='' i_shadow='' i_socks='' +i_stdbool='' i_stddef='' i_stdlib='' i_string='' @@ -1194,6 +1204,8 @@ shsharp='' spitshell='' src='' ssizetype='' +st_ino_sign='' +st_ino_size='' startperl='' startsh='' stdchar='' @@ -1215,6 +1227,7 @@ use64bitint='' dtrace='' usedtrace='' usefaststdio='' +usekernprocpathname='' ccflags_uselargefiles='' ldflags_uselargefiles='' libswanted_uselargefiles='' @@ -1226,6 +1239,7 @@ nm_opt='' nm_so_opt='' runnm='' usenm='' +usensgetexecutablepath='' useperlio='' usesocks='' d_oldpthreads='' @@ -1312,6 +1326,18 @@ i_whoami='' : Extra object files, if any, needed on this platform. archobjs='' archname='' +: Possible local include directories to search. +: Set locincpth to "" in a hint file to defeat local include searches. +locincpth="/usr/local/include /opt/local/include /usr/gnu/include" +locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include" +: +: no include file wanted by default +inclwanted='' + +: Enable -DEBUGGING and -DDEBUGGING from the command line +EBUGGING='' +DEBUGGING='' + libnames='' : change the next line if compiling for Xenix/286 on Xenix/386 xlibpth='/usr/lib/386 /lib/386' @@ -1340,18 +1366,6 @@ 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='' @@ -1411,10 +1425,10 @@ esac case "$sh" in '') cat >&2 </dev/null; then @@ -3087,9 +3102,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 @@ -3974,7 +3993,7 @@ else fi : determine installation prefix for where package is to be installed. -if $afs; then +if $afs; then $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" - ;; -esac -set useperlio -eval $setvar - -case "$usesocks" in -$define|true|[yY]*) - case "$useperlio" in - $define|true|[yY]*) ;; - *) cat >&4 <&4 @@ -4162,11 +4110,6 @@ else perl_patchlevel=0 $echo "(You do not have patchlevel.h. Eek.)" fi -if $test -r $rsrc/.patch ; then - if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then - perl_patchlevel=`cat $rsrc/.patch` - fi -fi : Define a handy string here to avoid duplication in myconfig.SH and configpm. version_patchlevel_string="version $patchlevel subversion $subversion" case "$perl_patchlevel" in @@ -4205,13 +4148,8 @@ $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';; + *$define*) dflt='y';; + *) dflt='n';; esac ;; esac @@ -4313,16 +4251,6 @@ EOM useithreads="$usethreads" fi -if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then - cat >&4 <&4 + ;; + *) + archname="$archname-$api_versionstring" + echo "...setting architecture name to $archname." >&4 + ;; + esac + ;; +esac + case "$usethreads" in $define) echo "Threads selected." >&4 @@ -6139,21 +6115,6 @@ $define) esac ;; esac -case "$useperlio" in -$define) - echo "Perlio selected." >&4 - ;; -*) - echo "Perlio not selected, using stdio." >&4 - case "$archname" in - *-stdio*) echo "...and architecture name already has -stdio." >&4 - ;; - *) archname="$archname-stdio" - echo "...setting architecture name to $archname." >&4 - ;; - esac - ;; -esac if $test -f archname.cbu; then echo "Your platform has some specific hints for architecture name, using them..." . ./archname.cbu @@ -6851,6 +6812,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?" @@ -6986,7 +6948,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 @@ -7078,9 +7040,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 ;; @@ -7674,7 +7636,7 @@ $echo $n ".$c" $grep fprintf libc.tmp > libc.ptf xscan='eval "libc.list"; $echo $n ".$c" >&4' xrun='eval "libc.list"; echo "done." >&4' -xxx='[ADTSIW]' +xxx='[ADTSIWi]' if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *//p'";\ eval $xscan;\ $contains '^fprintf$' libc.list >/dev/null 2>&1; then @@ -8019,8 +7981,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 @@ -8037,22 +8000,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 @@ -8168,7 +8176,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.' ;; @@ -8330,7 +8338,7 @@ if "$useshrplib"; then solaris) xxx="-R $shrpdir" ;; - freebsd|netbsd|openbsd|interix|dragonfly) + freebsd|mirbsd|netbsd|openbsd|interix|dragonfly) xxx="-Wl,-R$shrpdir" ;; bsdos|linux|irix*|dec_osf|gnu*) @@ -8339,9 +8347,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. ;; @@ -8393,7 +8398,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" @@ -8876,9 +8881,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 @@ -9414,6 +9429,9 @@ EOCP ;; esac +: Check if we want perlio +useperlio="$define" + : Set the vendorbin variables case "$vendorprefix" in '') d_vendorbin="$undef" @@ -9901,7 +9919,7 @@ done case "$d_longdbl$uselongdouble" in "$define$define") - : again, add prefered functions to our list first + : again, add preferred functions to our list first xxx_ld_list="" for xxx_convert in $gconvert_ld_preference; do case $xxx_convert in @@ -10062,7 +10080,7 @@ eval $inlibc set pthread.h i_pthread eval $inhdr -: define a fucntion to check prototypes +: define a function to check prototypes $cat > protochk < found." >&4 @@ -10885,6 +10903,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 @@ -10901,6 +10920,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 @@ -11355,69 +11383,194 @@ eval $inlibc 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]'` - $cat >try.c <&4 +$cat >try.c < #include int main() { - int i = $ENUM; +struct sockaddr sa; +return (sa.sa_len); } EOF - val="$undef" - set try; if eval $compile; then - val="$define" - fi - set d_${enum}; eval $setvar - $rm_try -done - -: see if this is a sys/uio.h system -set sys/uio.h i_sysuio -eval $inhdr +val="$undef" +set try; if eval $compile; then + val="$define" +fi +set d_sockaddr_sa_len; eval $setvar +$rm_try -: 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 -eval $hasstruct -case "$d_cmsghdr_s" in -"$define") echo "Yes, it does." ;; -*) echo "No, it doesn't." ;; -esac - +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 -: check for const keyword echo " " -echo 'Checking to see if your C compiler knows about "const"...' >&4 -$cat >const.c <<'EOCP' -typedef struct spug { int drokk; } spug; -int main() -{ - const char *foo; - const spug y = { 0 }; +echo "Checking the availability sin6_scope_id in struct sockaddr_in6 ..." >&4 +$cat >try.c < +#include +#include +int main() { +struct sockaddr_in6 sin6; +return (sin6.sin6_scope_id); } -EOCP -if $cc -c $ccflags const.c >/dev/null 2>&1 ; then +EOF +val="$undef" +set try; if eval $compile; then val="$define" - echo "Yup, it does." -else - val="$undef" - echo "Nope, it doesn't." fi -set d_const -eval $setvar +set d_sin6_scope_id; eval $setvar +$rm_try -: see if copysignl exists -set copysignl d_copysignl -eval $inlibc +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 -: see if crypt exists echo " " -set crypt d_crypt -eval $inlibc -case "$d_crypt" in +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]'` + $cat >try.c < +#include +int main() { + int i = $ENUM; +} +EOF + val="$undef" + set try; if eval $compile; then + val="$define" + fi + set d_${enum}; eval $setvar + $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 +eval $hasstruct +case "$d_cmsghdr_s" in +"$define") echo "Yes, it does." ;; +*) echo "No, it doesn't." ;; +esac + + +: check for const keyword +echo " " +echo 'Checking to see if your C compiler knows about "const"...' >&4 +$cat >const.c <<'EOCP' +typedef struct spug { int drokk; } spug; +int main() +{ + const char *foo; + const spug y = { 0 }; +} +EOCP +if $cc -c $ccflags const.c >/dev/null 2>&1 ; then + val="$define" + echo "Yup, it does." +else + val="$undef" + echo "Nope, it doesn't." +fi +set d_const +eval $setvar + +: see if copysignl exists +set copysignl d_copysignl +eval $inlibc + +: see if crypt exists +echo " " +set crypt d_crypt +eval $inlibc +case "$d_crypt" in $define) cryptlib='' ;; *) if set crypt val -f d_crypt; eval $csym; $val; then echo 'crypt() found.' >&4 @@ -11832,7 +11985,7 @@ $cat >dirfd.c <= 0) @@ -12335,7 +12488,7 @@ $define) $rm -f $$.h ;; *) - val="$undef"; + val="$undef"; set d_pwquota; eval $setvar set d_pwage; eval $setvar set d_pwchange; eval $setvar @@ -14969,6 +15122,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 @@ -16087,23 +16264,24 @@ echo " " procselfexe='' val="$undef" case "$d_readlink" in -"$define") - if $issymlink /proc/self/exe ; then - $ls -l /proc/self/exe > reflect + "$define") + : NetBSD first as /proc/self is a symlink to /proc/curproc, and it feels + : more tidy to avoid an extra level of symlink + set NetBSD /proc/curproc/exe Linux /proc/self/exe FreeBSD /proc/curproc/file Solaris /proc/self/path/a.out + while test $# -gt 0; do + type=$1; try=$2 + shift; shift + if $issymlink $try; then + $ls -l $try > reflect if $contains /`basename $ls` reflect >/dev/null 2>&1; then - echo "You have Linux-like /proc/self/exe." - procselfexe='"/proc/self/exe"' - val="$define" - fi - fi - if $issymlink /proc/curproc/file ; then - $ls -l /proc/curproc/file > reflect - if $contains /`basename $ls` reflect >/dev/null 2>&1; then - echo "You have BSD-like /proc/curproc/file." - procselfexe='"/proc/curproc/file"' - val="$define" + echo "You have $type-like $try." + procselfexe='"'$try'"' + val="$define" + : This will break out of the loop + set X; shift fi - fi + fi + done ;; esac $rm -f reflect @@ -17333,17 +17511,10 @@ $define) *) dflt='n';; esac echo "$package can use the sfio library, but it is experimental." - case "$useperlio" in - "$undef") - echo "For sfio also the PerlIO abstraction layer is needed." - echo "Earlier you said you wouldn't want that." - ;; - esac rp="You seem to have sfio available, do you want to try using it?" . ./myread case "$ans" in - y|Y) echo "Ok, turning on both sfio and PerlIO, then." - useperlio="$define" + y|Y) echo "Ok, turning on sfio then." val="$define" ;; *) echo "Ok, avoiding sfio this time. I'll use stdio instead." @@ -17488,7 +17659,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 @@ -17923,7 +18094,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";; @@ -18053,11 +18224,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`; \ @@ -18065,7 +18236,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 @@ -18603,7 +18774,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" ;; @@ -18692,7 +18863,7 @@ EOM ;; esac -: Checking 32bit aligndness +: Checking 32bit alignedness $cat <&4 + fi + ;; + esac ;; *) dflt="$alignbytes" ;; @@ -18970,7 +19151,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 @@ -19250,7 +19464,7 @@ case "$randfunc" in echo "OK, found random()." >&4 else dflt="rand" - echo "Yick, looks like I have to use rand()." >&4 + echo "Yuck, looks like I have to use rand()." >&4 fi echo " " ;; @@ -19314,9 +19528,9 @@ echo "Checking to see how many bits your $randfunc() function produces..." >&4 #endif int main() { - register int i; - register unsigned long tmp; - register unsigned long max = 0L; + int i; + unsigned long tmp; + unsigned long max = 0L; for (i = 1000; i; i--) { tmp = (unsigned long) $randfunc(); @@ -19367,34 +19581,6 @@ 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' -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 - : Check how to flush echo " " $cat >&4 <, not checking for va_copy()." >&4 + need_va_copy="$undef" ;; esac @@ -20353,9 +20540,9 @@ case "$pager" in esac ;; *) dflt="$pager" - fn="f/($pager)" ;; esac +fn="f/($dflt)" echo " " rp='What pager is used on your system?' . ./getfile @@ -21169,6 +21356,74 @@ EOM fi $rm_try +: Check the size of st_ino +$echo " " +$echo "Checking the size of st_ino..." >&4 +$cat > try.c < +#include +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif +int main() { + struct stat st; + printf("%d\n", (int)sizeof(st.st_ino)); + exit(0); +} +EOCP +set try +if eval $compile_ok; then + val=`$run ./try` + case "$val" in + '') st_ino_size=4 + $echo "(I can't execute the test program--guessing $st_ino_size.)" >&4 + ;; + *) st_ino_size=$val + $echo "Your st_ino is $st_ino_size bytes long." + ;; + esac +else + st_ino_size=4 + $echo "(I can't compile the test program--guessing $st_ino_size.)" >&4 +fi +$rm_try + +: Check if st_ino is signed +$echo " " +$echo "Checking the sign of st_ino..." >&4 +$cat > try.c < +#include +int main() { + struct stat foo; + foo.st_ino = -1; + if (foo.st_ino < 0) + printf("-1\n"); + else + printf("1\n"); +} +EOCP +set try +if eval $compile; then + val=`$run ./try` + case "$val" in + '') st_ino_sign=1 + $echo "(I can't execute the test program--guessing unsigned.)" >&4 + ;; + *) st_ino_sign=$val + case "$st_ino_sign" in + 1) $echo "Your st_ino is unsigned." ;; + -1) $echo "Your st_ino is signed." ;; + esac + ;; + esac +else + st_ino_sign=1 + $echo "(I can't compile the test program--guessing unsigned.)" >&4 +fi +$rm_try + : see what type of char stdio uses. echo " " echo '#include ' | $cppstdin $cppminus > stdioh @@ -21317,6 +21572,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]*) @@ -21367,7 +21837,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 ;; @@ -21601,15 +22071,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 @@ -21746,6 +22217,35 @@ set i_termio; eval $setvar val=$val2; set i_sgtty; eval $setvar val=$val3; set i_termios; eval $setvar +: see if stdbool is available +: we want a real compile instead of Inhdr because some Solaris systems +: have stdbool.h, but it can only be used if the compiler indicates it +: is sufficiently c99-compliant. +echo " " +$cat >try.c < +#include +int func(bool x) +{ + return x ? 1 : 0; +} +int main(int argc, char **argv) +{ + return func(0); +} +EOCP +set try +if eval $compile; then + echo " found." >&4 + val="$define" +else + echo " NOT found." >&4 + val="$undef" +fi +$rm_try +set i_stdbool +eval $setvar + : see if stddef is available set stddef.h i_stddef eval $inhdr @@ -21888,6 +22388,25 @@ find_extensions=' fi; fi; else + echo " $known_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 known_extensions="$known_extensions $this_ext"; @@ -22001,12 +22520,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) @@ -22051,13 +22565,6 @@ for xxx in $known_extensions ; do $define) avail_ext="$avail_ext $xxx" ;; esac ;; - XS/APItest/KeywordRPN|xs/apitest/keywordrpn) - # 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 @@ -22076,7 +22583,7 @@ avail_ext="$*" case "$onlyextensions" in '') ;; *) keepextensions='' - echo "You have requested that only certains extensions be included..." >&4 + echo "You have requested that only certain extensions be included..." >&4 for i in $onlyextensions; do case " $avail_ext " in *" $i "*) @@ -22246,7 +22753,7 @@ esac # the appropriate Makefile.PL. case " $static_ext " in *" Encode "*) # Add the subextensions of Encode - cd "$rsrc/ext" + cd "$rsrc/cpan" for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do static_ext="$static_ext Encode/$xxx" done @@ -22284,7 +22791,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="$*" ;; @@ -22409,6 +22916,7 @@ bin='$bin' bin_ELF='$bin_ELF' binexp='$binexp' bison='$bison' +bootstrap_charset='$bootstrap_charset' byacc='$byacc' byteorder='$byteorder' c='$c' @@ -22646,7 +23154,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' @@ -22807,8 +23320,11 @@ d_sigaction='$d_sigaction' d_signbit='$d_signbit' d_sigprocmask='$d_sigprocmask' 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' d_socket='$d_socket' @@ -23038,6 +23554,7 @@ i_sgtty='$i_sgtty' i_shadow='$i_shadow' i_socks='$i_socks' i_stdarg='$i_stdarg' +i_stdbool='$i_stdbool' i_stddef='$i_stddef' i_stdlib='$i_stdlib' i_string='$i_string' @@ -23123,6 +23640,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' @@ -23334,6 +23852,8 @@ srand48_r_proto='$srand48_r_proto' srandom_r_proto='$srandom_r_proto' src='$src' ssizetype='$ssizetype' +st_ino_sign='$st_ino_sign' +st_ino_size='$st_ino_size' startperl='$startperl' startsh='$startsh' static_ext='$static_ext' @@ -23388,6 +23908,7 @@ usedl='$usedl' usedtrace='$usedtrace' usefaststdio='$usefaststdio' useithreads='$useithreads' +usekernprocpathname='$usekernprocpathname' uselargefiles='$uselargefiles' uselongdouble='$uselongdouble' usemallocwrap='$usemallocwrap' @@ -23395,6 +23916,7 @@ usemorebits='$usemorebits' usemultiplicity='$usemultiplicity' usemymalloc='$usemymalloc' usenm='$usenm' +usensgetexecutablepath='$usensgetexecutablepath' useopcode='$useopcode' useperlio='$useperlio' useposix='$useposix' @@ -23406,6 +23928,7 @@ usesitecustomize='$usesitecustomize' usesocks='$usesocks' usethreads='$usethreads' usevendorprefix='$usevendorprefix' +useversionedarchname='$useversionedarchname' usevfork='$usevfork' usrinc='$usrinc' uuname='$uuname' @@ -23459,16 +23982,16 @@ if $test -f UU/config.sh; then $sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' \ config.sh config.sh UU/oldconfig.sh |\ $sort | $uniq -u >UU/oldsyms - set X `cat UU/oldsyms` + set X `$cat UU/oldsyms` shift case $# in 0) ;; *) - cat <>config.sh - for sym in `cat UU/oldsyms`; do + for sym in `$cat UU/oldsyms`; do echo " Propagating $hint variable "'$'"$sym..." eval 'tmp="$'"${sym}"'"' echo "$tmp" | \