X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Configure;h=cde7635708a1ea99eafc138cacc711d6731ea691;hb=2a551100939323428e5b071089d183aafb961137;hp=f7a40505e0d66103dd6a89983c12ea1a3309ed36;hpb=09b58c7bbebaf0de2d064711b4d278b13c4fa811;p=p5sagit%2Fp5-mst-13.2.git diff --git a/Configure b/Configure index f7a4050..cde7635 100755 --- a/Configure +++ b/Configure @@ -20,7 +20,7 @@ # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $ # -# Generated on Sun Apr 20 11:44:59 EET DST 2003 [metaconfig 3.0 PL70] +# Generated on Fri May 2 23:30:45 EET DST 2003 [metaconfig 3.0 PL70] # (with additional metaconfig patches by perlbug@perl.org) cat >c1$$ </dev/null 2>&1 ; then + echo "(Looks like you have stdio.h from BSD.)" + case "$stdio_ptr" in + '') stdio_ptr='((fp)->_p)' + ptr_lval=$define + ;; + *) ptr_lval=$d_stdio_ptr_lval;; + esac + case "$stdio_cnt" in + '') stdio_cnt='((fp)->_r)' + cnt_lval=$define + ;; + *) cnt_lval=$d_stdio_cnt_lval;; + esac + case "$stdio_base" in + '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';; + esac + case "$stdio_bufsiz" in + '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';; + esac +elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then + echo "(Looks like you have stdio.h from Linux.)" + case "$stdio_ptr" in + '') stdio_ptr='((fp)->_IO_read_ptr)' + ptr_lval=$define + ;; + *) ptr_lval=$d_stdio_ptr_lval;; + esac + case "$stdio_cnt" in + '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)' + cnt_lval=$undef + ;; + *) cnt_lval=$d_stdio_cnt_lval;; + esac + case "$stdio_base" in + '') stdio_base='((fp)->_IO_read_base)';; + esac + case "$stdio_bufsiz" in + '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';; + esac +else + case "$stdio_ptr" in + '') stdio_ptr='((fp)->_ptr)' + ptr_lval=$define + ;; + *) ptr_lval=$d_stdio_ptr_lval;; + esac + case "$stdio_cnt" in + '') stdio_cnt='((fp)->_cnt)' + cnt_lval=$define + ;; + *) cnt_lval=$d_stdio_cnt_lval;; + esac + case "$stdio_base" in + '') stdio_base='((fp)->_base)';; + esac + case "$stdio_bufsiz" in + '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';; + esac +fi + +: test whether _ptr and _cnt really work +echo "Checking how std your stdio is..." >&4 +$cat >try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif +#define FILE_ptr(fp) $stdio_ptr +#define FILE_cnt(fp) $stdio_cnt +int main() { + FILE *fp = fopen("try.c", "r"); + char c = getc(fp); + if ( + 18 <= FILE_cnt(fp) && + strncmp(FILE_ptr(fp), "include \n", 18) == 0 + ) + exit(0); + exit(1); +} +EOP +val="$undef" +set try +if eval $compile && $to try.c; then + if $run ./try; then + echo "Your stdio acts pretty std." + val="$define" + else + echo "Your stdio isn't very std." + fi +else + echo "Your stdio doesn't appear very std." +fi +$rm -f try.c try + +# glibc 2.2.90 and above apparently change stdio streams so Perl's +# direct buffer manipulation no longer works. The Configure tests +# should be changed to correctly detect this, but until then, +# the following check should at least let perl compile and run. +# (This quick fix should be updated before 5.8.1.) +# To be defensive, reject all unknown versions, and all versions > 2.2.9. +# A. Dougherty, June 3, 2002. +case "$d_gnulibc" in +$define) + case "$gnulibc_version" in + 2.[01]*) ;; + 2.2) ;; + 2.2.[0-9]) ;; + *) echo "But I will not snoop inside glibc $gnulibc_version stdio buffers." + val="$undef" + ;; + esac + ;; +esac +set d_stdstdio +eval $setvar + +: Can _ptr be used as an lvalue? +case "$d_stdstdio$ptr_lval" in +$define$define) val=$define ;; +*) val=$undef ;; +esac +set d_stdio_ptr_lval +eval $setvar + +: Can _cnt be used as an lvalue? +case "$d_stdstdio$cnt_lval" in +$define$define) val=$define ;; +*) val=$undef ;; +esac +set d_stdio_cnt_lval +eval $setvar + + +: test whether setting _ptr sets _cnt as a side effect +d_stdio_ptr_lval_sets_cnt="$undef" +d_stdio_ptr_lval_nochange_cnt="$undef" +case "$d_stdio_ptr_lval$d_stdstdio" in +$define$define) + echo "Checking to see what happens if we set the stdio ptr..." >&4 +$cat >try.c < +/* Can we scream? */ +/* Eat dust sed :-) */ +/* In the buffer space, no one can hear you scream. */ +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif +#define FILE_ptr(fp) $stdio_ptr +#define FILE_cnt(fp) $stdio_cnt +#include +int main() { + FILE *fp = fopen("try.c", "r"); + int c; + char *ptr; + size_t cnt; + if (!fp) { + puts("Fail even to read"); + exit(1); + } + c = getc(fp); /* Read away the first # */ + if (c == EOF) { + puts("Fail even to read"); + exit(1); + } + if (!( + 18 <= FILE_cnt(fp) && + strncmp(FILE_ptr(fp), "include \n", 18) == 0 + )) { + puts("Fail even to read"); + exit (1); + } + ptr = (char*) FILE_ptr(fp); + cnt = (size_t)FILE_cnt(fp); + + FILE_ptr(fp) += 42; + + if ((char*)FILE_ptr(fp) != (ptr + 42)) { + printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42)); + exit (1); + } + if (FILE_cnt(fp) <= 20) { + printf ("Fail (<20 chars to test)"); + exit (1); + } + if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) { + puts("Fail compare"); + exit (1); + } + if (cnt == FILE_cnt(fp)) { + puts("Pass_unchanged"); + exit (0); + } + if (FILE_cnt(fp) == (cnt - 42)) { + puts("Pass_changed"); + exit (0); + } + printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp)); + return 1; + +} +EOP + set try + if eval $compile && $to try.c; then + case `$run ./try` in + Pass_changed) + echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4 + d_stdio_ptr_lval_sets_cnt="$define" ;; + Pass_unchanged) + echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4 + d_stdio_ptr_lval_nochange_cnt="$define" ;; + Fail*) + echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;; + *) + echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;; + esac + else + echo "It seems we can't set ptr in your stdio. Nevermind." >&4 + fi + $rm -f try.c try + ;; +esac + +: see if _base is also standard +val="$undef" +case "$d_stdstdio" in +$define) + $cat >try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif +#define FILE_base(fp) $stdio_base +#define FILE_bufsiz(fp) $stdio_bufsiz +int main() { + FILE *fp = fopen("try.c", "r"); + char c = getc(fp); + if ( + 19 <= FILE_bufsiz(fp) && + strncmp(FILE_base(fp), "#include \n", 19) == 0 + ) + exit(0); + exit(1); +} +EOP + set try + if eval $compile && $to try.c; then + if $run ./try; then + echo "And its _base field acts std." + val="$define" + else + echo "But its _base field isn't std." + fi + else + echo "However, it seems to be lacking the _base field." + fi + $rm -f try.c try + ;; +esac +set d_stdiobase +eval $setvar + +: see if fast_stdio exists +val="$undef" +case "$d_stdstdio:$d_stdio_ptr_lval" in +"$define:$define") + case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in + *$define*) + echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4 + val="$define" + ;; + esac + ;; +esac +set d_faststdio +eval $setvar + + + : see if fchdir exists set fchdir d_fchdir eval $inlibc @@ -15826,349 +16144,81 @@ case "$d_srandom_r" in REENTRANT_PROTO*) ;; *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;; esac - echo "Prototype: $try" ;; - esac - ;; - *) case "$usethreads" in - define) echo "srandom_r has no prototype, not using it." >&4 ;; - esac - d_srandom_r=undef - srandom_r_proto=0 - ;; - esac - ;; -*) srandom_r_proto=0 - ;; -esac - -: see if prototype for setresgid is available -echo " " -set d_sresgproto setresgid $i_unistd unistd.h -eval $hasproto - -: see if prototype for setresuid is available -echo " " -set d_sresuproto setresuid $i_unistd unistd.h -eval $hasproto - -: see if sys/stat.h is available -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 - - -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 -eval $hasstruct -case "$d_statfs_s" in -"$define") echo "Yes, it does." ;; -*) echo "No, it doesn't." ;; -esac - - - -: see if struct statfs knows about f_flags -case "$d_statfs_s" in -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 - eval $hasfield - ;; -*) val="$undef" - set d_statfs_f_flags - eval $setvar - ;; -esac -case "$d_statfs_f_flags" in -"$define") echo "Yes, it does." ;; -*) echo "No, it doesn't." ;; -esac - -: see if _ptr and _cnt from stdio act std -echo " " - -if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then - echo "(Looks like you have stdio.h from BSD.)" - case "$stdio_ptr" in - '') stdio_ptr='((fp)->_p)' - ptr_lval=$define - ;; - *) ptr_lval=$d_stdio_ptr_lval;; - esac - case "$stdio_cnt" in - '') stdio_cnt='((fp)->_r)' - cnt_lval=$define - ;; - *) cnt_lval=$d_stdio_cnt_lval;; - esac - case "$stdio_base" in - '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';; - esac - case "$stdio_bufsiz" in - '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';; - esac -elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then - echo "(Looks like you have stdio.h from Linux.)" - case "$stdio_ptr" in - '') stdio_ptr='((fp)->_IO_read_ptr)' - ptr_lval=$define - ;; - *) ptr_lval=$d_stdio_ptr_lval;; - esac - case "$stdio_cnt" in - '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)' - cnt_lval=$undef - ;; - *) cnt_lval=$d_stdio_cnt_lval;; - esac - case "$stdio_base" in - '') stdio_base='((fp)->_IO_read_base)';; - esac - case "$stdio_bufsiz" in - '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';; - esac -else - case "$stdio_ptr" in - '') stdio_ptr='((fp)->_ptr)' - ptr_lval=$define - ;; - *) ptr_lval=$d_stdio_ptr_lval;; - esac - case "$stdio_cnt" in - '') stdio_cnt='((fp)->_cnt)' - cnt_lval=$define - ;; - *) cnt_lval=$d_stdio_cnt_lval;; - esac - case "$stdio_base" in - '') stdio_base='((fp)->_base)';; - esac - case "$stdio_bufsiz" in - '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';; - esac -fi - -: test whether _ptr and _cnt really work -echo "Checking how std your stdio is..." >&4 -$cat >try.c < -#$i_stdlib I_STDLIB -#ifdef I_STDLIB -#include -#endif -#define FILE_ptr(fp) $stdio_ptr -#define FILE_cnt(fp) $stdio_cnt -int main() { - FILE *fp = fopen("try.c", "r"); - char c = getc(fp); - if ( - 18 <= FILE_cnt(fp) && - strncmp(FILE_ptr(fp), "include \n", 18) == 0 - ) - exit(0); - exit(1); -} -EOP -val="$undef" -set try -if eval $compile && $to try.c; then - if $run ./try; then - echo "Your stdio acts pretty std." - val="$define" - else - echo "Your stdio isn't very std." - fi -else - echo "Your stdio doesn't appear very std." -fi -$rm -f try.c try - -# glibc 2.2.90 and above apparently change stdio streams so Perl's -# direct buffer manipulation no longer works. The Configure tests -# should be changed to correctly detect this, but until then, -# the following check should at least let perl compile and run. -# (This quick fix should be updated before 5.8.1.) -# To be defensive, reject all unknown versions, and all versions > 2.2.9. -# A. Dougherty, June 3, 2002. -case "$d_gnulibc" in -$define) - case "$gnulibc_version" in - 2.[01]*) ;; - 2.2) ;; - 2.2.[0-9]) ;; - *) echo "But I will not snoop inside glibc $gnulibc_version stdio buffers." - val="$undef" + echo "Prototype: $try" ;; + esac + ;; + *) case "$usethreads" in + define) echo "srandom_r has no prototype, not using it." >&4 ;; + esac + d_srandom_r=undef + srandom_r_proto=0 ;; esac ;; +*) srandom_r_proto=0 + ;; esac -set d_stdstdio -eval $setvar -: Can _ptr be used as an lvalue? -case "$d_stdstdio$ptr_lval" in -$define$define) val=$define ;; -*) val=$undef ;; -esac -set d_stdio_ptr_lval -eval $setvar +: see if prototype for setresgid is available +echo " " +set d_sresgproto setresgid $i_unistd unistd.h +eval $hasproto -: Can _cnt be used as an lvalue? -case "$d_stdstdio$cnt_lval" in -$define$define) val=$define ;; -*) val=$undef ;; -esac -set d_stdio_cnt_lval -eval $setvar +: see if prototype for setresuid is available +echo " " +set d_sresuproto setresuid $i_unistd unistd.h +eval $hasproto +: see if sys/stat.h is available +set sys/stat.h i_sysstat +eval $inhdr -: test whether setting _ptr sets _cnt as a side effect -d_stdio_ptr_lval_sets_cnt="$undef" -d_stdio_ptr_lval_nochange_cnt="$undef" -case "$d_stdio_ptr_lval$d_stdstdio" in -$define$define) - echo "Checking to see what happens if we set the stdio ptr..." >&4 -$cat >try.c < -/* Can we scream? */ -/* Eat dust sed :-) */ -/* In the buffer space, no one can hear you scream. */ -#$i_stdlib I_STDLIB -#ifdef I_STDLIB -#include -#endif -#define FILE_ptr(fp) $stdio_ptr -#define FILE_cnt(fp) $stdio_cnt -#include -int main() { - FILE *fp = fopen("try.c", "r"); - int c; - char *ptr; - size_t cnt; - if (!fp) { - puts("Fail even to read"); - exit(1); - } - c = getc(fp); /* Read away the first # */ - if (c == EOF) { - puts("Fail even to read"); - exit(1); - } - if (!( - 18 <= FILE_cnt(fp) && - strncmp(FILE_ptr(fp), "include \n", 18) == 0 - )) { - puts("Fail even to read"); - exit (1); - } - ptr = (char*) FILE_ptr(fp); - cnt = (size_t)FILE_cnt(fp); - FILE_ptr(fp) += 42; +: 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 - if ((char*)FILE_ptr(fp) != (ptr + 42)) { - printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42)); - exit (1); - } - if (FILE_cnt(fp) <= 20) { - printf ("Fail (<20 chars to test)"); - exit (1); - } - if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) { - puts("Fail compare"); - exit (1); - } - if (cnt == FILE_cnt(fp)) { - puts("Pass_unchanged"); - exit (0); - } - if (FILE_cnt(fp) == (cnt - 42)) { - puts("Pass_changed"); - exit (0); - } - printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp)); - return 1; -} -EOP - set try - if eval $compile && $to try.c; then - case `$run ./try` in - Pass_changed) - echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4 - d_stdio_ptr_lval_sets_cnt="$define" ;; - Pass_unchanged) - echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4 - d_stdio_ptr_lval_nochange_cnt="$define" ;; - Fail*) - echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;; - *) - echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;; - esac - else - echo "It seems we can't set ptr in your stdio. Nevermind." >&4 - fi - $rm -f try.c try - ;; +: 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 + + +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 +eval $hasstruct +case "$d_statfs_s" in +"$define") echo "Yes, it does." ;; +*) echo "No, it doesn't." ;; esac -: see if _base is also standard -val="$undef" -case "$d_stdstdio" in -$define) - $cat >try.c < -#$i_stdlib I_STDLIB -#ifdef I_STDLIB -#include -#endif -#define FILE_base(fp) $stdio_base -#define FILE_bufsiz(fp) $stdio_bufsiz -int main() { - FILE *fp = fopen("try.c", "r"); - char c = getc(fp); - if ( - 19 <= FILE_bufsiz(fp) && - strncmp(FILE_base(fp), "#include \n", 19) == 0 - ) - exit(0); - exit(1); -} -EOP - set try - if eval $compile && $to try.c; then - if $run ./try; then - echo "And its _base field acts std." - val="$define" - else - echo "But its _base field isn't std." - fi - else - echo "However, it seems to be lacking the _base field." - fi - $rm -f try.c try + + +: see if struct statfs knows about f_flags +case "$d_statfs_s" in +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 + eval $hasfield + ;; +*) val="$undef" + set d_statfs_f_flags + eval $setvar ;; esac -set d_stdiobase -eval $setvar +case "$d_statfs_f_flags" in +"$define") echo "Yes, it does." ;; +*) echo "No, it doesn't." ;; +esac $cat >&4 <&4 + for i in $onlyextensions; do + case " $avail_ext " in + *" $i "*) + echo "Keeping extension $i." + keepextensions="$keepextensions $i" + ;; + *) echo "Ignoring extension $i." ;; + esac + done + avail_ext="$keepextensions" + ;; +esac + +case "$noextensions" in +'') ;; +*) keepextensions='' + echo "You have requested that certain extensions be ignored..." >&4 + for i in $avail_ext; do + case " $i " in + " $noextensions ") echo "Ignoring extension $i." ;; + *) echo "Keeping extension $i."; + keepextensions="$keepextensions $i" + ;; + esac + done + avail_ext="$keepextensions" + ;; +esac + : Now see which nonxs extensions are supported on this system. : For now assume all are. nonxs_ext='' @@ -20217,41 +20300,17 @@ set X $dynamic_ext $static_ext $nonxs_ext shift extensions="$*" -case "$onlyextensions" in -'') ;; -*) keepextensions='' - echo "You have requested that only certains extensions be included..." >&4 - for i in $onlyextensions; do - case " $extensions " in - *" $i "*) - echo "Keeping extension $i." - keepextensions="$keepextensions $i" - ;; - *) echo "Ignoring extension $i." ;; - esac - done - extensions="$keepextensions" - ;; -esac - -case "$noextensions" in -'') ;; -*) keepextensions='' - echo "You have requested that certain extensions be ignored..." >&4 - for i in $extensions; do - case " $i " in - " $noextensions ") echo "Ignoring extension $i." ;; - *) echo "Keeping extension $i."; - keepextensions="$keepextensions $i" - ;; - esac - done - extensions="$keepextensions" - ;; -esac - +# Sanity check: We require an extension suitable for use with +# AnyDBM_File, as well as Fcntl and IO. (Failure to have these +# should show up as failures in the test suite, but it's helpful to +# catch them now.) The 'extensions' list is normally sorted +# alphabetically, so we need to accept either +# DB_File ... Fcntl ... IO .... +# or something like +# Fcntl ... NDBM_File ... IO .... case "$extensions" in *"_File "*" Fcntl "*" IO "*) ;; +*" Fcntl "*"_File "*" IO "*) ;; *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4 echo "WARNING: The Perl you are building will be quite crippled." >& 4 ;; @@ -20499,6 +20558,7 @@ d_endsent='$d_endsent' d_endservent_r='$d_endservent_r' d_eofnblk='$d_eofnblk' d_eunice='$d_eunice' +d_faststdio='$d_faststdio' d_fchdir='$d_fchdir' d_fchmod='$d_fchmod' d_fchown='$d_fchown' @@ -21290,6 +21350,7 @@ use64bitall='$use64bitall' use64bitint='$use64bitint' usecrosscompile='$usecrosscompile' usedl='$usedl' +usefaststdio='$usefaststdio' useithreads='$useithreads' uselargefiles='$uselargefiles' uselongdouble='$uselongdouble'