X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=Configure;h=d969c3a7a9dd60325872090def2f75c903f90c97;hb=e4c5322dee1b8e87ff0e7aee20effad846301447;hp=03b4c7d65f7d254d0abae2d2abef24f871ae9bf8;hpb=ed423f7afb5038546a92d00ca689992f3e08bc61;p=p5sagit%2Fp5-mst-13.2.git diff --git a/Configure b/Configure index 03b4c7d..d969c3a 100755 --- a/Configure +++ b/Configure @@ -17,10 +17,16 @@ # comp.sources.misc and is available on CPAN under authors/id/RAM so # you may fetch it yourself from your nearest archive site.) # +# +# Though this script was generated by metaconfig, it is OK to send +# patches against it. It's up to the Configure pumpkin to backport +# the patch to the metaunits if it is accepted. +# See Porting/pumpkin.pod for more information on metaconfig. +# # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $ # -# Generated on Thu Aug 1 18:53:48 CEST 2002 [metaconfig 3.0 PL70] +# Generated on Fri Mar 9 20:00:14 CET 2007 [metaconfig 3.0 PL70] # (with additional metaconfig patches by perlbug@perl.org) cat >c1$$ <&4 <&4 <&1 >/dev/null ; then if test -n "$OS2_SHELL"; then p_=\; PATH=`cmd /c "echo %PATH%" | tr '\\\\' / ` OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'` + is_os2=yes elif test -n "$DJGPP"; then case "X${MACHTYPE:-nonesuchmach}" in *cygwin) ;; @@ -78,7 +109,7 @@ paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin" paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin" paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin" paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb" -paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin" +paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin" paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib" paths="$paths /sbin /usr/sbin /usr/libexec" paths="$paths /system/gnu_library/bin" @@ -165,7 +196,6 @@ esac test -d UU || mkdir UU cd UU && rm -f ./* - ccname='' ccversion='' ccsymbols='' @@ -176,6 +206,7 @@ run='' targetarch='' to='' usecrosscompile='' +mistrustnm='' perllibs='' dynamic_ext='' extensions='' @@ -300,7 +331,9 @@ d_atoll='' baserev='' bin='' binexp='' +initialinstalllocation='' installbin='' +userelocatableinc='' byteorder='' cc='' ccflags='' @@ -322,13 +355,24 @@ cppstdin='' d__fwalk='' d_access='' d_accessx='' +d_aintl='' d_alarm='' asctime_r_proto='' d_asctime_r='' -d_attribut='' +d_attribute_format='' +d_attribute_malloc='' +d_attribute_nonnull='' +d_attribute_noreturn='' +d_attribute_pure='' +d_attribute_unused='' +d_attribute_warn_unused_result='' +d_printf_format_null='' d_bcmp='' d_bcopy='' +d_builtin_choose_expr='' +d_builtin_expect='' d_bzero='' +d_c99_variadic_macros='' d_casti32='' castflags='' d_castneg='' @@ -336,16 +380,20 @@ d_chown='' d_chroot='' d_chsize='' d_class='' +d_clearenv='' d_closedir='' d_void_closedir='' d_cmsghdr_s='' d_const='' +d_copysignl='' +d_cplusplus='' cryptlib='' d_crypt='' crypt_r_proto='' d_crypt_r='' d_csh='' full_csh='' +d_ctermid='' ctermid_r_proto='' d_ctermid_r='' ctime_r_proto='' @@ -354,6 +402,7 @@ d_cuserid='' d_dbl_dig='' d_dbminitproto='' d_difftime='' +d_dir_dd_fd='' d_dirfd='' d_dlerror='' d_dlopen='' @@ -383,6 +432,7 @@ endpwent_r_proto='' d_endsent='' d_endservent_r='' endservent_r_proto='' +d_faststdio='' d_fchdir='' d_fchmod='' d_fchown='' @@ -412,6 +462,7 @@ d_fsync='' d_ftello='' d_ftime='' d_gettimeod='' +d_futimes='' d_Gconvert='' d_getcwd='' d_getespwnam='' @@ -498,6 +549,7 @@ d_gnulibc='' gnulibc_version='' d_hasmntopt='' d_htonl='' +d_ilogbl='' d_inetaton='' d_int64_t='' d_isascii='' @@ -508,8 +560,10 @@ d_isnanl='' d_killpg='' d_lchown='' d_ldbl_dig='' +d_libm_lib_version='' d_link='' d_localtime_r='' +d_localtime_r_needs_tzset='' localtime_r_proto='' d_locconv='' d_lockf='' @@ -520,6 +574,8 @@ longlongsize='' d_lseekproto='' d_lstat='' d_madvise='' +d_malloc_good_size='' +d_malloc_size='' d_mblen='' d_mbstowcs='' d_mbtowc='' @@ -538,6 +594,7 @@ d_mmap='' mmaptype='' d_modfl='' d_modfl_pow32_bug='' +d_modflproto='' d_mprotect='' d_msg='' d_msgctl='' @@ -562,6 +619,7 @@ procselfexe='' d_old_pthread_create_joinable='' old_pthread_create_joinable='' d_pthread_atfork='' +d_pthread_attr_setscope='' d_pthread_yield='' d_sched_yield='' sched_yield='' @@ -585,6 +643,7 @@ d_safebcpy='' d_safemcpy='' d_sanemcmp='' d_sbrkproto='' +d_scalbnl='' d_select='' d_sem='' d_semctl='' @@ -641,8 +700,12 @@ d_shmctl='' d_shmdt='' d_shmget='' d_sigaction='' +d_signbit='' d_sigprocmask='' d_sigsetjmp='' +usesitecustomize='' +d_snprintf='' +d_vsnprintf='' d_sockatmark='' d_sockatmarkproto='' d_msg_ctrunc='' @@ -658,6 +721,7 @@ sockethdr='' socketlib='' d_socklen_t='' d_socks5_init='' +d_sprintf_returns_strlen='' d_sqrtl='' d_srand48_r='' srand48_r_proto='' @@ -692,6 +756,8 @@ d_syserrlst='' d_strerror_r='' strerror_r_proto='' d_strftime='' +d_strlcat='' +d_strlcpy='' d_strtod='' d_strtol='' d_strtold='' @@ -726,9 +792,11 @@ d_semctl_semid_ds='' d_semctl_semun='' d_union_semun='' d_unordered='' +d_unsetenv='' d_usleep='' d_usleepproto='' d_ustat='' +d_pseudofork='' d_vfork='' usevfork='' d_voidsig='' @@ -754,6 +822,7 @@ fflushNULL='' fflushall='' fpossize='' fpostype='' +gccansipedantic='' gccosandvers='' gccversion='' gidformat='' @@ -763,6 +832,12 @@ gidtype='' groupstype='' h_fcntl='' h_sysfile='' +html1dir='' +html1direxp='' +installhtml1dir='' +html3dir='' +html3direxp='' +installhtml3dir='' i_arpainet='' i_crypt='' db_hashtype='' @@ -866,6 +941,7 @@ i_stdarg='' i_varargs='' i_varhdr='' i_vfork='' +d_inc_version_list='' inc_version_list='' inc_version_list_init='' installprefix='' @@ -909,12 +985,17 @@ sPRIgldbl='' sSCNfldbl='' lseeksize='' lseektype='' +mad='' +madlyh='' +madlyobj='' +madlysrc='' make_set_make='' d_mymalloc='' freetype='' mallocobj='' mallocsrc='' malloctype='' +usemallocwrap='' usemymalloc='' installman1dir='' man1dir='' @@ -964,6 +1045,7 @@ perl5='' perladmin='' perlpath='' d_nv_preserves_uv='' +d_nv_zero_is_allbits_zero='' i16size='' i16type='' i32size='' @@ -1039,18 +1121,34 @@ sig_name_init='' sig_num='' sig_num_init='' sig_size='' +d_sitearch='' installsitearch='' sitearch='' sitearchexp='' installsitebin='' sitebin='' sitebinexp='' +installsitehtml1dir='' +sitehtml1dir='' +sitehtml1direxp='' +installsitehtml3dir='' +sitehtml3dir='' +sitehtml3direxp='' installsitelib='' sitelib='' sitelib_stem='' sitelibexp='' +installsiteman1dir='' +siteman1dir='' +siteman1direxp='' +installsiteman3dir='' +siteman3dir='' +siteman3direxp='' siteprefix='' siteprefixexp='' +installsitescript='' +sitescript='' +sitescriptexp='' sizesize='' sizetype='' so='' @@ -1074,6 +1172,7 @@ uidtype='' archname64='' use64bitall='' use64bitint='' +usefaststdio='' ccflags_uselargefiles='' ldflags_uselargefiles='' libswanted_uselargefiles='' @@ -1103,19 +1202,33 @@ d_vendorbin='' installvendorbin='' vendorbin='' vendorbinexp='' +installvendorhtml1dir='' +vendorhtml1dir='' +vendorhtml1direxp='' +installvendorhtml3dir='' +vendorhtml3dir='' +vendorhtml3direxp='' d_vendorlib='' installvendorlib='' vendorlib='' vendorlib_stem='' vendorlibexp='' +installvendorman1dir='' +vendorman1dir='' +vendorman1direxp='' +installvendorman3dir='' +vendorman3dir='' +vendorman3direxp='' usevendorprefix='' vendorprefix='' vendorprefixexp='' +d_vendorscript='' +installvendorscript='' +vendorscript='' +vendorscriptexp='' versiononly='' defvoidused='' voidflags='' -pm_apiversion='' -xs_apiversion='' yacc='' yaccflags='' CONFIG='' @@ -1144,23 +1257,16 @@ elif test -f "/system/gnu_library/bin/ar.pm"; then elif test -n "$DJGPP"; then : DOS DJGPP _exe=".exe" -elif test -d c:/. ; then +elif test -d c:/. -o -n "$is_os2" ; then : OS/2 or cygwin _exe=".exe" fi i_whoami='' -: 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='' - : Trailing extension. Override this in a hint file, if needed. : Extra object files, if any, needed on this platform. archobjs='' +archname='' groupstype='' libnames='' : change the next line if compiling for Xenix/286 on Xenix/386 @@ -1174,6 +1280,7 @@ glibpth="/lib /usr/lib $xlibpth" glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib" test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth" test -f /shlib/libc.so && glibpth="/shlib $glibpth" +test -d /usr/lib64 && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64" : Private path used by Configure to find libraries. Its value : is prepended to libpth. This variable takes care of special @@ -1184,9 +1291,26 @@ plibpth='' libswanted='' : some systems want to use only the non-versioned libso:s ignore_versioned_solibs='' +siteman1dir='' +siteman3dir='' +sitescript='' +: set usethreads on the Configure command line to enable threads. +usereentrant='undef' : full support for void wanted by default defvoidused=15 +: Possible local include directories to search. +: Set locincpth to "" in a hint file to defeat local include searches. +locincpth="/usr/local/include /opt/local/include /usr/gnu/include" +locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include" +: +: no include file wanted by default +inclwanted='' + +: Enable -DEBUGGING and -DDEBUGGING from the command line +EBUGGING='' +DEBUGGING=old + ccname='' ccversion='' perllibs='' @@ -1200,15 +1324,10 @@ ldflags_uselargefiles='' libswanted_uselargefiles='' : set usemultiplicity on the Configure command line to enable multiplicity. : set usesocks on the Configure command line to enable socks. -archname='' -: set usethreads on the Configure command line to enable threads. -usereentrant='undef' : List of libraries we want. -: If anyone needs -lnet, put it in a hint file. -libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl' -libswanted="$libswanted dld ld sun m c cposix posix" -libswanted="$libswanted ndir dir crypt sec" -libswanted="$libswanted ucb bsd BSD PW x util" +: 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="$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. glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'` @@ -2152,9 +2271,10 @@ for dir in \$*; do elif test -f \$dir/\$thing.exe; then if test -n "$DJGPP"; then echo \$dir/\$thing.exe - else + elif test "$eunicefix" != ":"; then : on Eunice apparently echo \$dir/\$thing + exit 0 fi exit 0 fi @@ -2815,37 +2935,37 @@ ABYZ) up='[:upper:]' low='[:lower:]' ;; -*) # There is a discontinuity in EBCDIC between 'I' and 'J' - # (0xc9 and 0xd1), therefore that is a nice testing point. - if test "X$up" = X -o "X$low" = X; then - case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in - ij) up='[A-Z]' - low='[a-z]' +*) # There is a discontinuity in EBCDIC between 'R' and 'S' + # (0xd9 and 0xe2), therefore that is a nice testing point. + if test "X$up" = X -o "X$low" = X; then + case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in + rs) up='[A-Z]' + low='[a-z]' ;; esac - fi + fi if test "X$up" = X -o "X$low" = X; then - case "`echo IJ | $tr I-J i-j 2>/dev/null`" in - ij) up='A-Z' + case "`echo RS | $tr R-S r-s 2>/dev/null`" in + rs) up='A-Z' low='a-z' ;; esac - fi + fi if test "X$up" = X -o "X$low" = X; then - case "`echo IJ | od -x 2>/dev/null`" in - *C9D1*|*c9d1*) + case "`echo RS | od -x 2>/dev/null`" in + *D9E2*|*d9e2*) echo "Hey, this might be EBCDIC." >&4 if test "X$up" = X -o "X$low" = X; then - case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in - ij) up='[A-IJ-RS-Z]' - low='[a-ij-rs-z]' + case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in + rs) up='[A-IJ-RS-Z]' + low='[a-ij-rs-z]' ;; esac fi if test "X$up" = X -o "X$low" = X; then - case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in - ij) up='A-IJ-RS-Z' - low='a-ij-rs-z' + case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in + rs) up='A-IJ-RS-Z' + low='a-ij-rs-z' ;; esac fi @@ -2853,8 +2973,8 @@ ABYZ) esac fi esac -case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in -ij) +case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in +rs) echo "Using $up and $low to convert case." >&4 ;; *) @@ -3020,7 +3140,9 @@ EOM aix) osname=aix tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1` case "$tmp" in - 'not found') osvers="$4"."$3" ;; + # oslevel can fail with: + # oslevel: Unable to acquire lock. + *not\ found) osvers="$4"."$3" ;; '<3240'|'<>3240') osvers=3.2.0 ;; '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;; '=3250'|'>3250') osvers=3.2.5 ;; @@ -3042,31 +3164,36 @@ EOM domainos) osname=apollo osvers="$3" ;; - dgux) osname=dgux + dgux) osname=dgux + osvers="$3" + ;; + dragonfly) osname=dragonfly osvers="$3" ;; dynixptx*) osname=dynixptx osvers=`echo "$4"|sed 's/^v//'` ;; - freebsd) osname=freebsd + freebsd) osname=freebsd + osvers="$3" ;; + genix) osname=genix ;; + gnu) osname=gnu osvers="$3" ;; - genix) osname=genix ;; - hp*) osname=hpux + hp*) osname=hpux osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'` ;; - irix*) osname=irix + irix*) osname=irix case "$3" in 4*) osvers=4 ;; 5*) osvers=5 ;; *) osvers="$3" ;; esac ;; - linux) osname=linux + linux) osname=linux case "$3" in *) osvers="$3" ;; esac ;; - MiNT) osname=mint + MiNT) osname=mint ;; netbsd*) osname=netbsd osvers="$3" @@ -3082,6 +3209,9 @@ EOM openbsd) osname=openbsd osvers="$3" ;; + os2) osname=os2 + osvers="$4" + ;; POSIX-BC | posix-bc ) osname=posix-bc osvers="$3" ;; @@ -3120,7 +3250,7 @@ EOM osf1|mls+) case "$5" in alpha) osname=dec_osf - osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'` + osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'` case "$osvers" in [1-9].[0-9]*) ;; *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;; @@ -3130,7 +3260,8 @@ EOM mips) osname=mips_osf1 ;; esac ;; - unixware) osname=svr5 + # UnixWare 7.1.2 is known as Open UNIX 8 + openunix|unixware) osname=svr5 osvers="$4" ;; uts) osname=uts @@ -3143,7 +3274,7 @@ EOM *freebsd*) ;; svr*) : svr4.x or possibly later - case "svr$3" in + case "svr$3" in ${osname}*) osname=svr$3 osvers=$4 @@ -3200,13 +3331,13 @@ EOM osname=news_os fi $rm -f UU/kernel.what - elif test -d c:/.; then + elif test -d c:/. -o -n "$is_os2" ; then set X $myuname osname=os2 osvers="$5" fi fi - + case "$targetarch" in '') ;; *) hostarch=$osname @@ -3274,8 +3405,13 @@ EOM $cat <&1` -cf_by=`(logname) 2>/dev/null` case "$cf_by" in "") - cf_by=`(whoami) 2>/dev/null` + cf_by=`(logname) 2>/dev/null` case "$cf_by" in - "") cf_by=unknown ;; + "") + cf_by=`(whoami) 2>/dev/null` + case "$cf_by" in + "") cf_by=unknown ;; + esac ;; esac ;; esac -: set up the script used to warn in case of inconsistency -cat <whoa -$startsh -EOS -cat <<'EOSC' >>whoa -dflt=y -echo " " -echo "*** WHOA THERE!!! ***" >&4 -echo " The $hint value for \$$var on this machine was \"$was\"!" >&4 -rp=" Keep the $hint value?" -. ./myread -case "$ans" in -y) td=$was; tu=$was;; +: decide how portable to be. Allow command line overrides. +case "$d_portable" in +"$undef") ;; +*) d_portable="$define" ;; esac -EOSC - -: function used to set $1 to $val -setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef; -case "$val$was" in -$define$undef) . ./whoa; eval "$var=\$td";; -$undef$define) . ./whoa; eval "$var=\$tu";; -*) eval "$var=$val";; -esac' -case "$usesocks" in -$define|true|[yY]*) dflt='y';; -*) dflt='n';; +: set up shell script to do ~ expansion +cat >filexp <&2 + exit 1 + fi + case "\$1" in + */*) + echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\` + ;; + *) + echo \$dir + ;; + esac + fi + ;; +*) + echo \$1 + ;; esac -cat <getfile +$startsh +EOS +cat <<'EOSC' >>getfile +tilde='' +fullpath='' +already='' +skip='' +none_ok='' +exp_file='' +nopath_ok='' +orig_rp="$rp" +orig_dflt="$dflt" +case "$gfpth" in +'') gfpth='.' ;; esac -set usesocks -eval $setvar -case "$usesocks" in -$define|true|[yY]*) useperlio="$define";; +case "$fn" in +*\(*) + : getfile will accept an answer from the comma-separated list + : enclosed in parentheses even if it does not meet other criteria. + expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok + fn=`echo $fn | sed 's/(.*)//'` + ;; esac -case "$useperlio" in -$define|true|[yY]*|'') dflt='y';; -*) dflt='n';; +case "$fn" in +*:*) + loc_file=`expr $fn : '.*:\(.*\)'` + fn=`expr $fn : '\(.*\):.*'` + ;; esac -cat <. Versions 5.003_02 and later of $package allow -alternate IO mechanisms via the PerlIO abstraction layer, but the -stdio mechanism is still available if needed. The abstraction layer -can use AT&T's sfio (if you already have sfio installed) or regular stdio. -Using PerlIO with sfio may cause problems with some extension modules. -If this doesn't make any sense to you, just accept the default '$dflt'. -EOM -rp='Use the PerlIO abstraction layer?' -. ./myread -case "$ans" in -y|Y) - val="$define" - ;; -*) - echo "Ok, doing things the stdio way." - val="$undef" - ;; +case "$fn" in +*~*) tilde=true;; +esac +case "$fn" in +*/*) fullpath=true;; +esac +case "$fn" in +*+*) skip=true;; +esac +case "$fn" in +*n*) none_ok=true;; +esac +case "$fn" in +*e*) exp_file=true;; +esac +case "$fn" in +*p*) nopath_ok=true;; esac -set useperlio -eval $setvar -case "$usesocks" in -$define|true|[yY]*) - case "$useperlio" in - $define|true|[yY]*) ;; - *) cat >&4 </dev/null 2>&1 + then + value="$ans" + ansexp="$ans" + break + fi case "$ans" in - y|Y) val="$define" ;; - *) val="$undef" ;; - esac - set useithreads - eval $setvar - : Now set use5005threads to the opposite value. - case "$useithreads" in - $define) val="$undef" ;; - *) val="$define" ;; + none) + value='' + ansexp='' + case "$none_ok" in + true) type='';; + esac + ;; + *) + case "$tilde" in + '') value="$ans" + ansexp="$ans";; + *) + value=`UU/filexp $ans` + case $? in + 0) + if test "$ans" != "$value"; then + echo "(That expands to $value on this system.)" + fi + ;; + *) value="$ans";; + esac + ansexp="$value" + case "$exp_file" in + '') value="$ans";; + esac + ;; + esac + case "$fullpath" in + true) + case "$ansexp" in + /*) value="$ansexp" ;; + [a-zA-Z]:/*) value="$ansexp" ;; + *) + redo=true + case "$already" in + true) + echo "I shall only accept a full path name, as in /bin/ls." >&4 + echo "Use a ! shell escape if you wish to check pathnames." >&4 + ;; + *) + echo "Please give a full path name, starting with slash." >&4 + case "$tilde" in + true) + echo "Note that using ~name is ok provided it expands well." >&4 + already=true + ;; + esac + esac + ;; + esac + ;; + esac + case "$redo" in + '') + case "$type" in + File) + for fp in $gfpth; do + if test "X$fp" = X.; then + pf="$ansexp" + else + pf="$fp/$ansexp" + fi + if test -f "$pf"; then + type='' + elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1 + then + echo "($value is not a plain file, but that's ok.)" + type='' + fi + if test X"$type" = X; then + value="$pf" + break + fi + done + ;; + Directory) + for fp in $gfpth; do + if test "X$fp" = X.; then + dir="$ans" + direxp="$ansexp" + else + dir="$fp/$ansexp" + direxp="$fp/$ansexp" + fi + if test -d "$direxp"; then + type='' + value="$dir" + break + fi + done + ;; + Locate) + if test -d "$ansexp"; then + echo "(Looking for $loc_file in directory $value.)" + value="$value/$loc_file" + ansexp="$ansexp/$loc_file" + fi + if test -f "$ansexp"; then + type='' + fi + case "$nopath_ok" in + true) case "$value" in + */*) ;; + *) echo "Assuming $value will be in people's path." + type='' + ;; + esac + ;; + esac + ;; + esac + + case "$skip" in + true) type=''; + esac + + case "$type" in + '') ;; + *) + if test "$fastread" = yes; then + dflt=y + else + dflt=n + fi + rp="$what $value doesn't exist. Use that name anyway?" + . UU/myread + dflt='' + case "$ans" in + y*) type='';; + *) echo " ";; + esac + ;; + esac + ;; + esac + ;; esac - set use5005threads - eval $setvar +done +cd UU +ans="$value" +rp="$orig_rp" +dflt="$orig_dflt" +rm -f getfile.ok +test "X$gfpthkeep" != Xy && gfpth="" +EOSC + +: determine root of directory hierarchy where package will be installed. +case "$prefix" in +'') + dflt=`./loc . /usr/local /usr/local /local /opt /usr` + ;; +*?/) + dflt=`echo "$prefix" | sed 's/.$//'` ;; *) - useithreads="$undef" - use5005threads="$undef" + dflt="$prefix" ;; esac +$cat <&4 <&4 <&4 +else + echo "AFS does not seem to be running..." >&4 +fi +: determine installation prefix for where package is to be installed. +if $afs; then +$cat <installprefix +$startsh +EOS +cat <<'EOSC' >>installprefix +: Change installation prefix, if necessary. +if $test X"$prefix" != X"$installprefix"; then + eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`" +else + eval "install${prefixvar}=\"\$${prefixvar}exp\"" +fi +EOSC +chmod +x installprefix +$eunicefix installprefix + +: Set variables such as privlib and privlibexp from the output of ./getfile +: performing the prefixexp/installprefixexp correction if necessary. +cat <setprefixvar +$startsh +EOS +cat <<'EOSC' >>setprefixvar +eval "${prefixvar}=\"\$ans\"" +eval "${prefixvar}exp=\"\$ansexp\"" +. ./installprefix +EOSC +chmod +x setprefixvar +$eunicefix setprefixvar + +: set up the script used to warn in case of inconsistency +cat <whoa +$startsh +EOS +cat <<'EOSC' >>whoa +dflt=y +case "$hint" in + recommended) + case "$hintfile" in + '') echo "The $hint value for \$$var on this machine was \"$was\"!" >&4 + ;; + *) echo "Hmm. Based on the hints in hints/$hintfile.sh, " >&4 + echo "the $hint value for \$$var on this machine was \"$was\"!" >&4 + ;; + esac ;; + *) echo " " + echo "*** WHOA THERE!!! ***" >&4 + echo " The $hint value for \$$var on this machine was \"$was\"!" >&4 + ;; +esac +rp=" Keep the $hint value?" +. ./myread +case "$ans" in +y) td=$was; tu=$was;; esac +EOSC + +: function used to set $1 to $val +setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef; +case "$val$was" in +$define$undef) . ./whoa; eval "$var=\$td";; +$undef$define) . ./whoa; eval "$var=\$tu";; +*) eval "$var=$val";; +esac' +case "$usesocks" in +$define|true|[yY]*) dflt='y';; +*) dflt='n';; +esac cat <. Versions 5.003_02 and later of $package allow +alternate IO mechanisms via the PerlIO abstraction layer, but the +stdio mechanism is still available if needed. The abstraction layer +can use AT&T's sfio (if you already have sfio installed) or regular stdio. +Using PerlIO with sfio may cause problems with some extension modules. + +If this doesn't make any sense to you, just accept the default '$dflt'. EOM +rp='Use the PerlIO abstraction layer?' +. ./myread +case "$ans" in +y|Y) val="$define" ;; -*) case "$usemultiplicity" in - $define|true|[yY]*) dflt='y';; - *) dflt='n';; - esac - echo " " - echo "If this doesn't make any sense to you, just accept the default '$dflt'." - rp='Build Perl for multiplicity?' - . ./myread - case "$ans" in - y|Y) val="$define" ;; - *) val="$undef" ;; - esac +*) + echo "Ok, doing things the stdio way." + val="$undef" ;; esac -set usemultiplicity -eval $setvar +set useperlio +eval $setvar +case "$usesocks" in +$define|true|[yY]*) + case "$useperlio" in + $define|true|[yY]*) ;; + *) cat >&4 <bsd -echo exit 1 >usg -echo exit 1 >v7 -echo exit 1 >osf1 -echo exit 1 >eunice -echo exit 1 >xenix -echo exit 1 >venix -echo exit 1 >os2 -d_bsd="$undef" -$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null -if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1 -then - echo "Looks kind of like an OSF/1 system, but we'll see..." - echo exit 0 >osf1 -elif test `echo abc | $tr a-z A-Z` = Abc ; then - xxx=`./loc addbib blurfl $pth` - if $test -f $xxx; then - echo "Looks kind of like a USG system with BSD features, but we'll see..." - echo exit 0 >bsd - echo exit 0 >usg - else - if $contains SIGTSTP foo >/dev/null 2>&1 ; then - echo "Looks kind of like an extended USG system, but we'll see..." - else - echo "Looks kind of like a USG system, but we'll see..." - fi - echo exit 0 >usg - fi -elif $contains SIGTSTP foo >/dev/null 2>&1 ; then - echo "Looks kind of like a BSD system, but we'll see..." - d_bsd="$define" - echo exit 0 >bsd +echo "Getting the current patchlevel..." >&4 +if $test -r $rsrc/patchlevel.h;then + revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h` + patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h` + subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h` + api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h` + api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h` + api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h` + perl_patchlevel=`egrep 'define PERL_PATCHNUM [0-9][0-9]|,"MAINT[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'` else - echo "Looks kind of like a Version 7 system, but we'll see..." - echo exit 0 >v7 + revision=0 + patchlevel=0 + subversion=0 + api_revision=0 + api_version=0 + api_subversion=0 + perl_patchlevel=0 + $echo "(You do not have patchlevel.h. Eek.)" fi -case "$eunicefix" in -*unixtovms*) - $cat <<'EOI' -There is, however, a strange, musty smell in the air that reminds me of -something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit. -EOI - echo exit 0 >eunice - d_eunice="$define" -: it so happens the Eunice I know will not run shell scripts in Unix format - ;; -*) - echo " " - echo "Congratulations. You aren't running Eunice." - d_eunice="$undef" - ;; +if $test -r $rsrc/.patch ; then + if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then + perl_patchlevel=`cat $rsrc/.patch` + fi +fi +: Define a handy string here to avoid duplication in myconfig.SH and configpm. +version_patchlevel_string="version $patchlevel subversion $subversion" +case "$perl_patchlevel" in +0|'') ;; +*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;; esac -: Detect OS2. The p_ variable is set above in the Head.U unit. -: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses -: semicolon as a patch separator -case "$p_" in -:) ;; + +$echo "(You have $package $version_patchlevel_string.)" + +case "$osname" in +dos|vms) + : XXX Should be a Configure test for double-dots in filenames. + version=`echo $revision $patchlevel $subversion | \ + $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'` + api_versionstring=`echo $api_revision $api_version $api_subversion | \ + $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'` + ;; *) - $cat <<'EOI' -I have the feeling something is not exactly right, however...don't tell me... -lemme think...does HAL ring a bell?...no, of course, you're only running OS/2! -(Or you may be running DOS with DJGPP.) -EOI - echo exit 0 >os2 + version=`echo $revision $patchlevel $subversion | \ + $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'` + api_versionstring=`echo $api_revision $api_version $api_subversion | \ + $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'` ;; esac -if test -f /xenix; then - echo "Actually, this looks more like a XENIX system..." - echo exit 0 >xenix - d_xenix="$define" -else - echo " " - echo "It's not Xenix..." - d_xenix="$undef" -fi -chmod +x xenix -$eunicefix xenix -if test -f /venix; then - echo "Actually, this looks more like a VENIX system..." - echo exit 0 >venix -else - echo " " - if ./xenix; then - : null - else - echo "Nor is it Venix..." - fi +: Special case the 5.005_xx maintenance series, which used 5.005 +: without any subversion label as a subdirectory in $sitelib +if test "${api_revision}${api_version}${api_subversion}" = "550"; then + api_versionstring='5.005' fi -chmod +x bsd usg v7 osf1 eunice xenix venix os2 -$eunicefix bsd usg v7 osf1 eunice xenix venix os2 -$rm -f foo -case "$cc" in -'') dflt=cc;; -*) dflt="$cc";; +case "$usethreads" in +$define|true|[yY]*) dflt='y';; +*) # Catch case where user specified ithreads or 5005threads but + # forgot -Dusethreads (A.D. 4/2002) + case "$useithreads$use5005threads" in + *$define*) + case "$useperlio" in + "$define") dflt='y' ;; + *) dflt='n' ;; + esac + ;; + *) dflt='n';; + esac + ;; esac -rp="Use which C compiler?" +cat <&4 -$cat >try.c < -int main() { -#ifdef __GNUC__ -#ifdef __VERSION__ - printf("%s\n", __VERSION__); -#else - printf("%s\n", "1"); -#endif -#endif - exit(0); -} EOM -if $cc -o try $ccflags $ldflags try.c; then - gccversion=`$run ./try` - case "$gccversion" in - '') echo "You are not using GNU cc." ;; - *) echo "You are using GNU cc $gccversion." - ccname=gcc - ;; + : Default to ithreads unless overridden on command line or with + : old config.sh + dflt='y' + case "$use5005threads" in + $define|true|[yY]*) dflt='n';; esac -else - echo " " - echo "*** WHOA THERE!!! ***" >&4 - echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4 - case "$knowitall" in - '') - echo " You'd better start hunting for one and let me know about it." >&4 - exit 1 - ;; + case "$useithreads" in + $undef|false|[nN]*) dflt='n';; esac -fi -$rm -f try try.* -case "$gccversion" in -1*) cpp=`./loc gcc-cpp $cpp $pth` ;; -esac -case "$gccversion" in -'') gccosandvers='' ;; -*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'` - gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"` - gccshortvers='' - case "$gccosandvers" in - $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr - $osname$osvers) ;; # looking good - $osname*) cat <&4 + rp='Use the newer interpreter-based ithreads?' + . ./myread + case "$ans" in + y|Y) val="$define" ;; + *) val="$undef" ;; + esac + set useithreads + eval $setvar + : Now set use5005threads to the opposite value. + case "$useithreads" in + $define) val="$undef" ;; + *) val="$define" ;; + esac + set use5005threads + eval $setvar + ;; + *) + useithreads="$undef" + use5005threads="$undef" + ;; + esac -*** WHOA THERE!!! *** + case "$useithreads$use5005threads" in + "$define$define") + $cat >&4 <try.c - for incdir in `$cc -v -c try.c 2>&1 | \ - sed '1,/^#include <\.\.\.>/d;/^End of search list/,$d;s/^ //'` ; do - locincpth=`echo $locincpth | sed s!$incdir!!` - done - $rm -f try try.* -esac +fi -: decide how portable to be. Allow command line overrides. -case "$d_portable" in -"$undef") ;; -*) d_portable="$define" ;; +if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then + cat >&4 <filexp <&2 - exit 1 - fi - case "\$1" in - */*) - echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\` - ;; - *) - echo \$dir - ;; - esac - fi + esac +fi + +cat <getfile -$startsh -EOS -cat <<'EOSC' >>getfile -tilde='' -fullpath='' -already='' -skip='' -none_ok='' -exp_file='' -nopath_ok='' -orig_rp="$rp" -orig_dflt="$dflt" -case "$gfpth" in -'') gfpth='.' ;; -esac -case "$fn" in -*\(*) - : getfile will accept an answer from the comma-separated list - : enclosed in parentheses even if it does not meet other criteria. - expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok - fn=`echo $fn | sed 's/(.*)//'` +case "$usemorebits" in +"$define"|true|[yY]*) + use64bitint="$define" + uselongdouble="$define" + usemorebits="$define" ;; -esac - -case "$fn" in -*:*) - loc_file=`expr $fn : '.*:\(.*\)'` - fn=`expr $fn : '\(.*\):.*'` +*) usemorebits="$undef" ;; esac -case "$fn" in -*~*) tilde=true;; -esac -case "$fn" in -*/*) fullpath=true;; -esac -case "$fn" in -*+*) skip=true;; -esac -case "$fn" in -*n*) none_ok=true;; -esac -case "$fn" in -*e*) exp_file=true;; -esac -case "$fn" in -*p*) nopath_ok=true;; +: make some quick guesses about what we are up against +echo " " +$echo $n "Hmm... $c" +echo exit 1 >bsd +echo exit 1 >usg +echo exit 1 >v7 +echo exit 1 >osf1 +echo exit 1 >eunice +echo exit 1 >xenix +echo exit 1 >venix +echo exit 1 >os2 +d_bsd="$undef" +$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null +if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1 +then + echo "Looks kind of like an OSF/1 system, but we'll see..." + echo exit 0 >osf1 +elif test `echo abc | $tr a-z A-Z` = Abc ; then + xxx=`./loc addbib blurfl $pth` + if $test -f $xxx; then + echo "Looks kind of like a USG system with BSD features, but we'll see..." + echo exit 0 >bsd + echo exit 0 >usg + else + if $contains SIGTSTP foo >/dev/null 2>&1 ; then + echo "Looks kind of like an extended USG system, but we'll see..." + else + echo "Looks kind of like a USG system, but we'll see..." + fi + echo exit 0 >usg + fi +elif $contains SIGTSTP foo >/dev/null 2>&1 ; then + echo "Looks kind of like a BSD system, but we'll see..." + d_bsd="$define" + echo exit 0 >bsd +else + echo "Looks kind of like a Version 7 system, but we'll see..." + echo exit 0 >v7 +fi +case "$eunicefix" in +*unixtovms*) + $cat <<'EOI' +There is, however, a strange, musty smell in the air that reminds me of +something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit. +EOI + echo exit 0 >eunice + d_eunice="$define" +: it so happens the Eunice I know will not run shell scripts in Unix format + ;; +*) + echo " " + echo "Congratulations. You aren't running Eunice." + d_eunice="$undef" + ;; esac - -case "$fn" in -*f*) type='File';; -*d*) type='Directory';; -*l*) type='Locate';; +: Detect OS2. The p_ variable is set above in the Head.U unit. +: Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses +: semicolon as a patch separator +case "$p_" in +:) ;; +*) + $cat <<'EOI' +I have the feeling something is not exactly right, however...don't tell me... +lemme think...does HAL ring a bell?...no, of course, you're only running OS/2! +(Or you may be running DOS with DJGPP.) +EOI + echo exit 0 >os2 + ;; esac +if test -f /xenix; then + echo "Actually, this looks more like a XENIX system..." + echo exit 0 >xenix + d_xenix="$define" +else + echo " " + echo "It's not Xenix..." + d_xenix="$undef" +fi +chmod +x xenix +$eunicefix xenix +if test -f /venix; then + echo "Actually, this looks more like a VENIX system..." + echo exit 0 >venix +else + echo " " + if ./xenix; then + : null + else + echo "Nor is it Venix..." + fi +fi +chmod +x bsd usg v7 osf1 eunice xenix venix os2 +$eunicefix bsd usg v7 osf1 eunice xenix venix os2 +$rm -f foo -what="$type" -case "$what" in -Locate) what='File';; +case "$cc" in +'') dflt=cc;; +*) dflt="$cc";; esac +rp="Use which C compiler?" +. ./myread +cc="$ans" -case "$exp_file" in -'') - case "$d_portable" in - "$define") ;; - *) exp_file=true;; - esac - ;; -esac +: See if they have not cc but they do have gcc +. ./trygcc +: Look for a hint-file generated 'call-back-unit'. Now that the +: user has specified the compiler, we may need to set or change some +: other defaults. +if $test -f cc.cbu; then + . ./cc.cbu +fi +. ./checkcc -cd .. -while test "$type"; do - redo='' - rp="$orig_rp" - dflt="$orig_dflt" - case "$tilde" in - true) rp="$rp (~name ok)";; - esac - . UU/myread - if test -f UU/getfile.ok && \ - $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1 - then - value="$ans" - ansexp="$ans" - break - fi - case "$ans" in - none) - value='' - ansexp='' - case "$none_ok" in - true) type='';; - esac +echo " " +echo "Checking for GNU cc in disguise and/or its version number..." >&4 +$cat >try.c < +int main() { +#if defined(__GNUC__) && !defined(__INTEL_COMPILER) +#ifdef __VERSION__ + printf("%s\n", __VERSION__); +#else + printf("%s\n", "1"); +#endif +#endif + return(0); +} +EOM +if $cc -o try $ccflags $ldflags try.c; then + gccversion=`$run ./try` + case "$gccversion" in + '') echo "You are not using GNU cc." ;; + *) echo "You are using GNU cc $gccversion." + ccname=gcc + ;; + esac +else + echo " " + echo "*** WHOA THERE!!! ***" >&4 + echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4 + case "$knowitall" in + '') + echo " You'd better start hunting for one and let me know about it." >&4 + exit 1 ;; - *) - case "$tilde" in - '') value="$ans" - ansexp="$ans";; - *) - value=`UU/filexp $ans` - case $? in - 0) - if test "$ans" != "$value"; then - echo "(That expands to $value on this system.)" - fi - ;; - *) value="$ans";; - esac - ansexp="$value" - case "$exp_file" in - '') value="$ans";; - esac - ;; - esac - case "$fullpath" in - true) - case "$ansexp" in - /*) value="$ansexp" ;; - [a-zA-Z]:/*) value="$ansexp" ;; - *) - redo=true - case "$already" in - true) - echo "I shall only accept a full path name, as in /bin/ls." >&4 - echo "Use a ! shell escape if you wish to check pathnames." >&4 - ;; - *) - echo "Please give a full path name, starting with slash." >&4 - case "$tilde" in - true) - echo "Note that using ~name is ok provided it expands well." >&4 - already=true - ;; - esac - esac - ;; - esac - ;; - esac - case "$redo" in - '') - case "$type" in - File) - for fp in $gfpth; do - if test "X$fp" = X.; then - pf="$ansexp" - else - pf="$fp/$ansexp" - fi - if test -f "$pf"; then - type='' - elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1 - then - echo "($value is not a plain file, but that's ok.)" - type='' - fi - if test X"$type" = X; then - value="$pf" - break - fi - done - ;; - Directory) - for fp in $gfpth; do - if test "X$fp" = X.; then - dir="$ans" - direxp="$ansexp" - else - dir="$fp/$ansexp" - direxp="$fp/$ansexp" - fi - if test -d "$direxp"; then - type='' - value="$dir" - break - fi - done - ;; - Locate) - if test -d "$ansexp"; then - echo "(Looking for $loc_file in directory $value.)" - value="$value/$loc_file" - ansexp="$ansexp/$loc_file" - fi - if test -f "$ansexp"; then - type='' - fi - case "$nopath_ok" in - true) case "$value" in - */*) ;; - *) echo "Assuming $value will be in people's path." - type='' - ;; - esac - ;; - esac - ;; - esac + esac +fi +$rm -f try try.* +case "$gccversion" in +1*) cpp=`./loc gcc-cpp $cpp $pth` ;; +esac +case "$gccversion" in +'') gccosandvers='' ;; +*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'` + gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"` + gccshortvers='' + case "$gccosandvers" in + $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr + $osname$osvers) ;; # looking good + $osname*) cat <&4 - case "$skip" in - true) type=''; - esac +*** WHOA THERE!!! *** - case "$type" in - '') ;; - *) - if test "$fastread" = yes; then - dflt=y - else - dflt=n - fi - rp="$what $value doesn't exist. Use that name anyway?" - . UU/myread - dflt='' - case "$ans" in - y*) type='';; - *) echo " ";; - esac - ;; - esac - ;; - esac - ;; - esac -done -cd UU -ans="$value" -rp="$orig_rp" -dflt="$orig_dflt" -rm -f getfile.ok -test "X$gfpthkeep" != Xy && gfpth="" -EOSC + Your gcc has not been compiled for the exact release of + your operating system ($gccosandvers versus $osname$osvers). + + In general it is a good idea to keep gcc synchronized with + the operating system because otherwise serious problems + may ensue when trying to compile software, like Perl. + + I'm trying to be optimistic here, though, and will continue. + If later during the configuration and build icky compilation + problems appear (headerfile conflicts being the most common + manifestation), I suggest reinstalling the gcc to match + your operating system release. + +EOM + ;; + *) gccosandvers='' ;; # failed to parse, better be silent + esac + ;; +esac +case "$ccname" in +'') ccname="$cc" ;; +esac + +# gcc 3.* complain about adding -Idirectories that they already know about, +# so we will take those off from locincpth. +case "$gccversion" in +3*) + echo "main(){}">try.c + for incdir in $locincpth; do + warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \ + grep '^c[cp]p*[01]: warning: changing search order '` + if test "X$warn" != X; then + locincpth=`echo " $locincpth " | sed "s! $incdir ! !"` + fi + done + $rm -f try try.* +esac : What should the include directory be ? echo " " @@ -4450,24 +4812,68 @@ case "$firstmakefile" in '') firstmakefile='makefile';; esac -: Looking for optional libraries -echo " " -echo "Checking for optional libraries..." >&4 -case "$libs" in -' '|'') dflt='';; -*) dflt="$libs";; +case "$ccflags" in +*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;; esac -case "$libswanted" in -'') libswanted='c_s';; + +case "$uselongdouble" in +$define|true|[yY]*) dflt='y';; +*) dflt='n';; esac -case "$usesocks" in -"$define") libswanted="$libswanted socks5 socks5_sh" ;; +cat <&4 +case "$libs" in +' '|'') dflt='';; +*) dflt="$libs";; +esac +case "$libswanted" in +'') libswanted='c_s';; +esac +case "$usesocks" in +"$define") libswanted="$libswanted socks5 socks5_sh" ;; +esac +libsfound='' +libsfiles='' +libsdirs='' +libspath='' +for thisdir in $libpth $xlibpth; do test -d $thisdir && libspath="$libspath $thisdir" done for thislib in $libswanted; do @@ -4577,21 +4983,52 @@ case "$optimize" in 'none') optimize=" ";; esac +: Check what DEBUGGING is required from the command line +: -DEBUGGING or -DDEBUGGING or +: -DEBUGGING=both = -g + -DDEBUGGING +: -DEBUGGING=-g or -Doptimize=-g = -g +: -DEBUGGING=none or -UDEBUGGING = +: -DEBUGGING=old or -DEBUGGING=default = ? $optimize +case "$EBUGGING" in +'') ;; +*) DEBUGGING=$EBUGGING ;; +esac + +case "$DEBUGGING" in +-g|both|$define) + case "$optimize" in + *-g*) ;; + *) optimize="$optimize -g" ;; + esac ;; +none|$undef) + case "$optimize" in + *-g*) set `echo "X $optimize " | sed 's/ -g / /'` + shift + optimize="$*" + ;; + esac ;; +esac + dflt='' +case "$DEBUGGING" in +both|$define) dflt='-DDEBUGGING' +esac + : We will not override a previous value, but we might want to : augment a hint file case "$hint" in default|recommended) case "$gccversion" in - 1*) dflt='-fpcc-struct-return' ;; + 1*) dflt="$dflt -fpcc-struct-return" ;; esac - case "$optimize" in - *-g*) dflt="$dflt -DDEBUGGING";; + case "$optimize:$DEBUGGING" in + *-g*:old) dflt="$dflt -DDEBUGGING";; esac case "$gccversion" in 2*) if test -d /etc/conf/kconfig.d && $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1 then + # Interactive Systems (ISC) POSIX mode. dflt="$dflt -posix" fi ;; @@ -4605,7 +5042,7 @@ default|recommended) if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then echo "Yes, it does." 2>&1 case "$ccflags" in - *strict-aliasing*) + *strict-aliasing*) echo "Leaving current flags $ccflags alone." 2>&1 ;; *) dflt="$dflt -fno-strict-aliasing" ;; @@ -4615,6 +5052,26 @@ default|recommended) fi ;; esac + # For gcc, adding -pipe speeds up compilations for some, but apparently + # some assemblers can't read from stdin. (It also slows down compilations + # in other cases, but those are apparently rarer these days.) AD 5/2004. + case "$gccversion" in + ?*) echo " " + echo "Checking if your compiler accepts -pipe" 2>&1 + echo 'int main(void) { return 0; }' > gcctest.c + if $cc -pipe -o gcctest gcctest.c; then + echo "Yes, it does." 2>&1 + case "$ccflags" in + *-pipe*) + echo "Leaving current flags $ccflags alone." 2>&1 + ;; + *) dflt="$dflt -pipe" ;; + esac + else + echo "Nope, it doesn't, but that's ok." 2>&1 + fi + ;; + esac ;; esac @@ -4626,8 +5083,8 @@ for thisincl in $inclwanted; do if $test -d $thisincl; then if $test x$thisincl != x$usrinc; then case "$dflt" in - *" -I$thisincl "*);; - *) dflt="$dflt -I$thisincl ";; + *" -I$thisincl "*);; + *) dflt="$dflt -I$thisincl ";; esac fi fi @@ -4758,7 +5215,7 @@ esac for thislibdir in $libpth; do case " $loclibpth " in *" $thislibdir "*) - case "$dflt " in + case "$dflt " in *"-L$thislibdir "*) ;; *) dflt="$dflt -L$thislibdir" ;; esac @@ -4797,7 +5254,7 @@ echo " " echo "Checking your choice of C compiler and flags for coherency..." >&4 $cat > try.c <<'EOF' #include -int main() { printf("Ok\n"); exit(0); } +int main() { printf("Ok\n"); return(0); } EOF set X $cc -o try $optimize $ccflags $ldflags try.c $libs shift @@ -4881,100 +5338,6 @@ mc_file=$1; shift; $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;' -: check for lengths of integral types -echo " " -case "$intsize" in -'') - echo "Checking to see how big your integers are..." >&4 - $cat >try.c <<'EOCP' -#include -int main() -{ - printf("intsize=%d;\n", (int)sizeof(int)); - printf("longsize=%d;\n", (int)sizeof(long)); - printf("shortsize=%d;\n", (int)sizeof(short)); - exit(0); -} -EOCP - set try - if eval $compile_ok && $run ./try > /dev/null; then - eval `$run ./try` - echo "Your integers are $intsize bytes long." - echo "Your long integers are $longsize bytes long." - echo "Your short integers are $shortsize bytes long." - else - $cat >&4 <&4 -echo 'int main() { long long x = 7; return 0; }' > try.c -set try -if eval $compile; then - val="$define" - echo "You have long long." -else - val="$undef" - echo "You do not have long long." -fi -$rm try.* -set d_longlong -eval $setvar - -: check for length of long long -case "${d_longlong}${longlongsize}" in -$define) - echo " " - echo "Checking to see how big your long longs are..." >&4 - $cat >try.c <<'EOCP' -#include -int main() -{ - printf("%d\n", (int)sizeof(long long)); - return(0); -} -EOCP - set try - if eval $compile_ok; then - longlongsize=`$run ./try` - echo "Your long longs are $longlongsize bytes long." - else - dflt='8' - echo " " - echo "(I can't seem to compile the test program. Guessing...)" - rp="What is the size of a long long (in bytes)?" - . ./myread - longlongsize="$ans" - fi - if $test "X$longsize" = "X$longlongsize"; then - echo "(That isn't any different from an ordinary long.)" - fi - ;; -esac -$rm -f try.* try - : determine filename position in cpp output echo " " echo "Computing filename position in cpp output for #include directives..." >&4 @@ -5014,6 +5377,7 @@ echo "Your cpp writes the filename in the $pos field of the line." case "$osname" in vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is > +os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \ *) cppfilter='' ;; esac : locate header file @@ -5048,1120 +5412,517 @@ done; status=\$? $rm -f foo\$\$.c; if test \$status -eq 1; then - exit 0; -fi -exit 1 -EOF -chmod +x findhdr - -: define an alternate in-header-list? function -inhdr='echo " "; td=$define; tu=$undef; yyy=$@; -cont=true; xxf="echo \"<\$1> found.\" >&4"; -case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";; -*) xxnf="echo \"<\$1> NOT found, ...\" >&4";; -esac; -case $# in 4) instead=instead;; *) instead="at last";; esac; -while $test "$cont"; do - xxx=`./findhdr $1` - var=$2; eval "was=\$$2"; - if $test "$xxx" && $test -r "$xxx"; - then eval $xxf; - eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td"; - cont=""; - else eval $xxnf; - eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi; - set $yyy; shift; shift; yyy=$@; - case $# in 0) cont="";; - 2) xxf="echo \"but I found <\$1> $instead.\" >&4"; - xxnf="echo \"and I did not find <\$1> either.\" >&4";; - *) xxf="echo \"but I found <\$1\> instead.\" >&4"; - xxnf="echo \"there is no <\$1>, ...\" >&4";; - esac; -done; -while $test "$yyy"; -do set $yyy; var=$2; eval "was=\$$2"; - eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; - set $yyy; shift; shift; yyy=$@; -done' - -: see if inttypes.h is available -: we want a real compile instead of Inhdr because some systems -: have an inttypes.h which includes non-existent headers -echo " " -$cat >try.c < -int main() { - static int32_t foo32 = 0x12345678; -} -EOCP -set try -if eval $compile; then - echo " found." >&4 - val="$define" -else - echo " NOT found." >&4 - val="$undef" -fi -$rm -f try.c try -set i_inttypes -eval $setvar - -: check for int64_t -echo " " -echo "Checking to see if you have int64_t..." >&4 -$cat >try.c < -#$i_inttypes I_INTTYPES -#ifdef I_INTTYPES -#include -#endif -int main() { int64_t x = 7; } -EOCP -set try -if eval $compile; then - val="$define" - echo "You have int64_t." -else - val="$undef" - echo "You do not have int64_t." -fi -$rm -f try try.* -set d_int64_t -eval $setvar - - -echo " " -echo "Checking which 64-bit integer type we could use..." >&4 - -case "$intsize" in -8) val=int - set quadtype - eval $setvar - val='"unsigned int"' - set uquadtype - eval $setvar - quadkind=1 - ;; -*) case "$longsize" in - 8) val=long - set quadtype - eval $setvar - val='"unsigned long"' - set uquadtype - eval $setvar - quadkind=2 - ;; - *) case "$d_longlong:$longlongsize" in - define:8) - val='"long long"' - set quadtype - eval $setvar - val='"unsigned long long"' - set uquadtype - eval $setvar - quadkind=3 - ;; - *) case "$d_int64_t" in - define) - val=int64_t - set quadtype - eval $setvar - val=uint64_t - set uquadtype - eval $setvar - quadkind=4 - ;; - esac - ;; - esac - ;; - esac - ;; -esac - -case "$quadtype" in -'') echo "Alas, no 64-bit integer types in sight." >&4 - d_quad="$undef" - ;; -*) echo "We could use '$quadtype' for 64-bit integers." >&4 - d_quad="$define" - ;; -esac - - -case "$uselonglong" in -"$define"|true|[yY]*) - cat <&4 - -*** Configure -Duselonglong is deprecated, using -Duse64bitint instead. -EOM - use64bitint="$define" - ;; -esac -case "$use64bits" in -"$define"|true|[yY]*) - cat <&4 - -*** Configure -Duse64bits is deprecated, using -Duse64bitint instead. -EOM - use64bitint="$define" - ;; -esac -case "$use64bitints" in -"$define"|true|[yY]*) - cat <&4 - -*** There is no Configure -Duse64bitints, using -Duse64bitint instead. -EOM - use64bitint="$define" - ;; -esac -case "$use64bitsint" in -"$define"|true|[yY]*) - cat <&4 - -*** There is no Configure -Duse64bitsint, using -Duse64bitint instead. -EOM - use64bitint="$define" - ;; -esac -case "$uselonglongs" in -"$define"|true|[yY]*) - cat <&4 - -*** There is no Configure -Duselonglongs, using -Duse64bitint instead. -EOM - use64bitint="$define" - ;; -esac -case "$use64bitsall" in -"$define"|true|[yY]*) - cat <&4 - -*** There is no Configure -Duse64bitsall, using -Duse64bitall instead. -EOM - use64bitall="$define" - ;; -esac - -case "$ccflags" in -*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";; -esac -case "$use64bitall" in -"$define"|true|[yY]*) use64bitint="$define" ;; -esac - -case "$longsize" in -8) cat <&4 -cat >try.c <<'EOCP' -/* Find out version of GNU C library. __GLIBC__ and __GLIBC_MINOR__ - alone are insufficient to distinguish different versions, such as - 2.0.6 and 2.0.7. The function gnu_get_libc_version() appeared in - libc version 2.1.0. A. Dougherty, June 3, 2002. -*/ -#include -int main(void) -{ -#ifdef __GLIBC__ -# ifdef __GLIBC_MINOR__ -# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 -# include - printf("%s\n", gnu_get_libc_version()); -# else - printf("%d.%d\n", __GLIBC__, __GLIBC_MINOR__); -# endif -# else - printf("%d\n", __GLIBC__); -# endif - return 0; -#else - return 1; -#endif -} -EOCP -set try -if eval $compile_ok && $run ./try > glibc.ver; then - val="$define" - gnulibc_version=`$cat glibc.ver` - echo "You are using the GNU C Library version $gnulibc_version" -else - val="$undef" - gnulibc_version='' - echo "You are not using the GNU C Library" -fi -$rm -f try try.* glibc.ver -set d_gnulibc -eval $setvar - -: see if nm is to be used to determine whether a symbol is defined or not -case "$usenm" in -'') - dflt='' - case "$d_gnulibc" in - "$define") - echo " " - echo "nm probably won't work on the GNU C Library." >&4 - dflt=n - ;; - esac - case "$dflt" in - '') - if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then - echo " " - echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4 - echo "'nm' won't be sufficient on this sytem." >&4 - dflt=n - fi - ;; - esac - case "$dflt" in - '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null` - if $test $dflt -gt 20; then - dflt=y - else - dflt=n - fi - ;; - esac - ;; -*) - case "$usenm" in - true|$define) dflt=y;; - *) dflt=n;; - esac - ;; -esac -$cat < /dev/null 2>&1; then - nm_so_opt='--dynamic' - fi - ;; - esac - ;; -esac - -case "$runnm" in -true) -: get list of predefined functions in a handy place -echo " " -case "$libc" in -'') libc=unknown - case "$libs" in - *-lc_s*) libc=`./loc libc_s$_a $libc $libpth` - esac - ;; -esac -case "$libs" in -'') ;; -*) for thislib in $libs; do - case "$thislib" in - -lc|-lc_s) - : Handle C library specially below. - ;; - -l*) - thislib=`echo $thislib | $sed -e 's/^-l//'` - if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then - : - elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then - : - elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then - : - elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then - : - elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then - : - elif try=`./loc $thislib X $libpth`; $test -f "$try"; then - : - elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then - : - else - try='' - fi - libnames="$libnames $try" - ;; - *) libnames="$libnames $thislib" ;; - esac - done - ;; -esac -xxx=normal -case "$libc" in -unknown) - set /lib/libc.$so - for xxx in $libpth; do - $test -r $1 || set $xxx/libc.$so - : The messy sed command sorts on library version numbers. - $test -r $1 || \ - set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \ - tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e ' - h - s/[0-9][0-9]*/0000&/g - s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g - G - s/\n/ /' | \ - $sort | $sed -e 's/^.* //'` - eval set \$$# - done - $test -r $1 || set /usr/ccs/lib/libc.$so - $test -r $1 || set /lib/libsys_s$_a - ;; -*) - set blurfl - ;; -esac -if $test -r "$1"; then - echo "Your (shared) C library seems to be in $1." - libc="$1" -elif $test -r /lib/libc && $test -r /lib/clib; then - echo "Your C library seems to be in both /lib/clib and /lib/libc." - xxx=apollo - libc='/lib/clib /lib/libc' - if $test -r /lib/syslib; then - echo "(Your math library is in /lib/syslib.)" - libc="$libc /lib/syslib" - fi -elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then - echo "Your C library seems to be in $libc, as you said before." -elif $test -r $incpath/usr/lib/libc$_a; then - libc=$incpath/usr/lib/libc$_a; - echo "Your C library seems to be in $libc. That's fine." -elif $test -r /lib/libc$_a; then - libc=/lib/libc$_a; - echo "Your C library seems to be in $libc. You're normal." -else - if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then - : - elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then - libnames="$libnames "`./loc clib blurfl/dyick $libpth` - elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then - : - elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then - : - elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then - : - else - tans=`./loc Llibc$_a blurfl/dyick $xlibpth` - fi - if $test -r "$tans"; then - echo "Your C library seems to be in $tans, of all places." - libc=$tans - else - libc='blurfl' - fi -fi -if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then - dflt="$libc" - cat < libpath - cat >&4 < libnames -set X `cat libnames` -shift -xxx=files -case $# in 1) xxx=file; esac -echo "Extracting names from the following $xxx for later perusal:" >&4 -echo " " -$sed 's/^/ /' libnames >&4 -echo " " -$echo $n "This may take a while...$c" >&4 - -for file in $*; do - case $file in - *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;; - *) $nm $nm_opt $file 2>/dev/null;; - esac -done >libc.tmp - -$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]' -if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun -elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun -elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun -elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun -elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun -elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun -elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \ - -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun -elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun -elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun -elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun -elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun -elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun -elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun -elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\ - eval $xscan;\ - $contains '^fprintf$' libc.list >/dev/null 2>&1; then - eval $xrun -else - $nm -p $* 2>/dev/null >libc.tmp - $grep fprintf libc.tmp > libc.ptf - if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\ - eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1 - then - nm_opt='-p' - eval $xrun - else - echo " " - echo "$nm didn't seem to work right. Trying $ar instead..." >&4 - com='' - if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then - for thisname in $libnames $libc; do - $ar t $thisname >>libc.tmp - done - $sed -e "s/\\$_o\$//" < libc.tmp > libc.list - echo "Ok." >&4 - elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then - # Repeat libc to extract forwarders to DLL entries too - for thisname in $libnames $libc; do - $ar tv $thisname >>libc.tmp - # Revision 50 of EMX has bug in $ar. - # it will not extract forwarders to DLL entries - # Use emximp which will extract exactly them. - emximp -o tmp.imp $thisname \ - 2>/dev/null && \ - $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \ - < tmp.imp >>libc.tmp - $rm tmp.imp - done - $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list - echo "Ok." >&4 - else - echo "$ar didn't seem to work right." >&4 - echo "Maybe this is a Cray...trying bld instead..." >&4 - if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list - then - for thisname in $libnames; do - bld t $libnames | \ - $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list - $ar t $thisname >>libc.tmp - done - echo "Ok." >&4 - else - echo "That didn't work either. Giving up." >&4 - exit 1 - fi - fi - fi -fi -nm_extract="$com" -if $test -f /lib/syscalls.exp; then - echo " " - echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4 - $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list + exit 0; fi -;; -esac -$rm -f libnames libpath - -: is a C symbol defined? -csym='tlook=$1; -case "$3" in --v) tf=libc.tmp; tc=""; tdc="";; --a) tf=libc.tmp; tc="[0]"; tdc="[]";; -*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";; -esac; -tx=yes; -case "$reuseval-$4" in -true-) ;; -true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;; -esac; -case "$tx" in -yes) - case "$runnm" in - true) - if $contains $tlook $tf >/dev/null 2>&1; - then tval=true; - else tval=false; - fi;; - *) - echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c; - if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1; - then tval=true; - else tval=false; - fi; - $rm -f t t.c;; - esac;; -*) - case "$tval" in - $define) tval=true;; - *) tval=false;; - esac;; -esac; -eval "$2=$tval"' +exit 1 +EOF +chmod +x findhdr -: define an is-in-libc? function -inlibc='echo " "; td=$define; tu=$undef; -sym=$1; var=$2; eval "was=\$$2"; -tx=yes; -case "$reuseval$was" in -true) ;; -true*) tx=no;; +: define an alternate in-header-list? function +inhdr='echo " "; td=$define; tu=$undef; yyy=$@; +cont=true; xxf="echo \"<\$1> found.\" >&4"; +case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";; +*) xxnf="echo \"<\$1> NOT found, ...\" >&4";; esac; -case "$tx" in -yes) - set $sym tres -f; - eval $csym; - case "$tres" in - true) - echo "$sym() found." >&4; - case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";; - *) - echo "$sym() NOT found." >&4; - case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";; - esac;; -*) - case "$was" in - $define) echo "$sym() found." >&4;; - *) echo "$sym() NOT found." >&4;; - esac;; -esac' +case $# in 4) instead=instead;; *) instead="at last";; esac; +while $test "$cont"; do + xxx=`./findhdr $1` + var=$2; eval "was=\$$2"; + if $test "$xxx" && $test -r "$xxx"; + then eval $xxf; + eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td"; + cont=""; + else eval $xxnf; + eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi; + set $yyy; shift; shift; yyy=$@; + case $# in 0) cont="";; + 2) xxf="echo \"but I found <\$1> $instead.\" >&4"; + xxnf="echo \"and I did not find <\$1> either.\" >&4";; + *) xxf="echo \"but I found <\$1\> instead.\" >&4"; + xxnf="echo \"there is no <\$1>, ...\" >&4";; + esac; +done; +while $test "$yyy"; +do set $yyy; var=$2; eval "was=\$$2"; + eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; + set $yyy; shift; shift; yyy=$@; +done' -: see if sqrtl exists -set sqrtl d_sqrtl -eval $inlibc +: see if stdlib is available +set stdlib.h i_stdlib +eval $inhdr -: check for length of double +: check for lengths of integral types echo " " -case "$doublesize" in +case "$intsize" in '') - echo "Checking to see how big your double precision numbers are..." >&4 - $cat >try.c <<'EOCP' + echo "Checking to see how big your integers are..." >&4 + $cat >try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif int main() { - printf("%d\n", (int)sizeof(double)); - exit(0); + printf("intsize=%d;\n", (int)sizeof(int)); + printf("longsize=%d;\n", (int)sizeof(long)); + printf("shortsize=%d;\n", (int)sizeof(short)); + exit(0); } EOCP set try - if eval $compile_ok; then - doublesize=`$run ./try` - echo "Your double is $doublesize bytes long." + if eval $compile_ok && $run ./try > /dev/null; then + eval `$run ./try` + echo "Your integers are $intsize bytes long." + echo "Your long integers are $longsize bytes long." + echo "Your short integers are $shortsize bytes long." else - dflt='8' - echo "(I can't seem to compile the test program. Guessing...)" - rp="What is the size of a double precision number (in bytes)?" + $cat >&4 <&4 -echo 'int main() { long double x = 7.0; }' > try.c +echo "Checking to see if you have long long..." >&4 +echo 'int main() { long long x = 7; return 0; }' > try.c set try if eval $compile; then val="$define" - echo "You have long double." + echo "You have long long." else val="$undef" - echo "You do not have long double." + echo "You do not have long long." fi $rm try.* -set d_longdbl +set d_longlong eval $setvar -: check for length of long double -case "${d_longdbl}${longdblsize}" in +: check for length of long long +case "${d_longlong}${longlongsize}" in $define) echo " " - echo "Checking to see how big your long doubles are..." >&4 + echo "Checking to see how big your long longs are..." >&4 $cat >try.c <<'EOCP' #include int main() { - printf("%d\n", sizeof(long double)); + printf("%d\n", (int)sizeof(long long)); + return(0); } EOCP set try - set try - if eval $compile; then - longdblsize=`$run ./try` - echo "Your long doubles are $longdblsize bytes long." + if eval $compile_ok; then + longlongsize=`$run ./try` + echo "Your long longs are $longlongsize bytes long." else dflt='8' echo " " - echo "(I can't seem to compile the test program. Guessing...)" >&4 - rp="What is the size of a long double (in bytes)?" + echo "(I can't seem to compile the test program. Guessing...)" + rp="What is the size of a long long (in bytes)?" . ./myread - longdblsize="$ans" + longlongsize="$ans" fi - if $test "X$doublesize" = "X$longdblsize"; then - echo "(That isn't any different from an ordinary double.)" + if $test "X$longsize" = "X$longlongsize"; then + echo "(That isn't any different from an ordinary long.)" fi ;; esac $rm -f try.* try +: see if inttypes.h is available +: we want a real compile instead of Inhdr because some systems +: have an inttypes.h which includes non-existent headers echo " " - -if $test X"$d_longdbl" = X"$define"; then - -echo "Checking how to print long doubles..." >&4 - -if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then - $cat >try.c <<'EOCP' -#include -#include -int main() { - double d = 123.456; - printf("%.3f\n", d); -} -EOCP - set try - if eval $compile; then - yyy=`$run ./try` - case "$yyy" in - 123.456) - sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"'; - sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"'; - echo "We will use %f." - ;; - esac - fi -fi - -if $test X"$sPRIfldbl" = X; then - $cat >try.c <<'EOCP' -#include -#include -int main() { - long double d = 123.456; - printf("%.3Lf\n", d); -} -EOCP - set try - if eval $compile; then - yyy=`$run ./try` - case "$yyy" in - 123.456) - sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"'; - sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"'; - echo "We will use %Lf." - ;; - esac - fi -fi - -if $test X"$sPRIfldbl" = X; then - $cat >try.c <<'EOCP' -#include -#include +$cat >try.c < int main() { - long double d = 123.456; - printf("%.3llf\n", d); + static int32_t foo32 = 0x12345678; } EOCP - set try - if eval $compile; then - yyy=`$run ./try` - case "$yyy" in - 123.456) - sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"'; - sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"'; - echo "We will use %llf." - ;; - esac - fi +set try +if eval $compile; then + echo " found." >&4 + val="$define" +else + echo " NOT found." >&4 + val="$undef" fi +$rm -f try.c try +set i_inttypes +eval $setvar -if $test X"$sPRIfldbl" = X; then - $cat >try.c <<'EOCP' +: check for int64_t +echo " " +echo "Checking to see if you have int64_t..." >&4 +$cat >try.c < -#include -int main() { - long double d = 123.456; - printf("%.3lf\n", d); -} +#$i_inttypes I_INTTYPES +#ifdef I_INTTYPES +#include +#endif +int main() { int64_t x = 7; } EOCP - set try - if eval $compile; then - yyy=`$run ./try` - case "$yyy" in - 123.456) - sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"'; - sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"'; - echo "We will use %lf." - ;; - esac - fi -fi - -if $test X"$sPRIfldbl" = X; then - echo "Cannot figure out how to print long doubles." >&4 +set try +if eval $compile; then + val="$define" + echo "You have int64_t." else - sSCNfldbl=$sPRIfldbl # expect consistency + val="$undef" + echo "You do not have int64_t." fi - $rm -f try try.* +set d_int64_t +eval $setvar -fi # d_longdbl -case "$sPRIfldbl" in -'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; - d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; - d_SCNfldbl="$undef"; +echo " " +echo "Checking which 64-bit integer type we could use..." >&4 + +case "$intsize" in +8) val=int + set quadtype + eval $setvar + val='"unsigned int"' + set uquadtype + eval $setvar + quadkind=1 + ;; +*) case "$longsize" in + 8) val=long + set quadtype + eval $setvar + val='"unsigned long"' + set uquadtype + eval $setvar + quadkind=2 + ;; + *) case "$d_longlong:$longlongsize" in + define:8) + val='"long long"' + set quadtype + eval $setvar + val='"unsigned long long"' + set uquadtype + eval $setvar + quadkind=3 + ;; + *) case "$d_int64_t" in + define) + val=int64_t + set quadtype + eval $setvar + val=uint64_t + set uquadtype + eval $setvar + quadkind=4 + ;; + esac + ;; + esac + ;; + esac + ;; +esac + +case "$quadtype" in +'') echo "Alas, no 64-bit integer types in sight." >&4 + d_quad="$undef" ;; -*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; - d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; - d_SCNfldbl="$define"; +*) echo "We could use '$quadtype' for 64-bit integers." >&4 + d_quad="$define" ;; esac -: see if modfl exists -set modfl d_modfl -eval $inlibc -d_modfl_pow32_bug="$undef" +case "$uselonglong" in +"$define"|true|[yY]*) + cat <&4 -case "$d_longdbl$d_modfl" in -$define$define) - $cat <try.c < -#include -int main() { - long double nv = 4294967303.15; - long double v, w; - v = modfl(nv, &w); -#ifdef __GLIBC__ - printf("glibc"); -#endif - printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w); - return 0; -} -EOCP - case "$osname:$gccversion" in - aix:) saveccflags="$ccflags" - ccflags="$ccflags -qlongdouble" ;; # to avoid core dump - esac - set try - if eval $compile; then - foo=`$run ./try` - case "$foo" in - *" 4294967303.150000 1.150000 4294967302.000000") - echo >&4 "Your modfl() is broken for large values." - d_modfl_pow32_bug="$define" - case "$foo" in - glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()." - ;; - esac - ;; - *" 4294967303.150000 0.150000 4294967303.000000") - echo >&4 "Your modfl() seems okay for large values." - ;; - *) echo >&4 "I don't understand your modfl() at all." - d_modfl="$undef" - ;; - esac - $rm -f try.* try core core.try.* - else - echo "I cannot figure out whether your modfl() is okay, assuming it isn't." - d_modfl="$undef" - fi - case "$osname:$gccversion" in - aix:) ccflags="$saveccflags" ;; # restore - esac + use64bitint="$define" ;; -esac +esac +case "$use64bits" in +"$define"|true|[yY]*) + cat <&4 + +*** Configure -Duse64bits is deprecated, using -Duse64bitint instead. +EOM + use64bitint="$define" + ;; +esac +case "$use64bitints" in +"$define"|true|[yY]*) + cat <&4 + +*** There is no Configure -Duse64bitints, using -Duse64bitint instead. +EOM + use64bitint="$define" + ;; +esac +case "$use64bitsint" in +"$define"|true|[yY]*) + cat <&4 + +*** There is no Configure -Duse64bitsint, using -Duse64bitint instead. +EOM + use64bitint="$define" + ;; +esac +case "$uselonglongs" in +"$define"|true|[yY]*) + cat <&4 + +*** There is no Configure -Duselonglongs, using -Duse64bitint instead. +EOM + use64bitint="$define" + ;; +esac +case "$use64bitsall" in +"$define"|true|[yY]*) + cat <&4 + +*** There is no Configure -Duse64bitsall, using -Duse64bitall instead. +EOM + use64bitall="$define" + ;; +esac case "$ccflags" in -*-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;; +*-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";; +esac +case "$use64bitall" in +"$define"|true|[yY]*) use64bitint="$define" ;; esac -case "$uselongdouble" in -$define|true|[yY]*) dflt='y';; -*) dflt='n';; +case "$longsize" in +8) cat <&4 +case "$d_quad:$use64bitint" in +$undef:$define) + cat >&4 <&4 + $cat >try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif +int main() +{ + printf("%d\n", (int)sizeof(double)); + exit(0); +} +EOCP + set try + if eval $compile_ok; then + doublesize=`$run ./try` + echo "Your double is $doublesize bytes long." + else + dflt='8' + echo "(I can't seem to compile the test program. Guessing...)" + rp="What is the size of a double precision number (in bytes)?" + . ./myread + doublesize="$ans" + fi + ;; +esac +$rm -f try.c try - uselongdouble=$undef +: check for long doubles +echo " " +echo "Checking to see if you have long double..." >&4 +echo 'int main() { long double x = 7.0; }' > try.c +set try +if eval $compile; then + val="$define" + echo "You have long double." +else + val="$undef" + echo "You do not have long double." fi +$rm try.* +set d_longdbl +eval $setvar + +: check for length of long double +case "${d_longdbl}${longdblsize}" in +$define) + echo " " + echo "Checking to see how big your long doubles are..." >&4 + $cat >try.c <<'EOCP' +#include +int main() +{ + printf("%d\n", sizeof(long double)); +} +EOCP + set try + set try + if eval $compile; then + longdblsize=`$run ./try` + echo "Your long doubles are $longdblsize bytes long." + else + dflt='8' + echo " " + echo "(I can't seem to compile the test program. Guessing...)" >&4 + rp="What is the size of a long double (in bytes)?" + . ./myread + longdblsize="$ans" + fi + if $test "X$doublesize" = "X$longdblsize"; then + echo "That isn't any different from an ordinary double." + echo "I'll keep your setting anyway, but you may see some" + echo "harmless compilation warnings." + fi + ;; +esac +$rm -f try.* try : determine the architecture name echo " " @@ -6254,122 +6015,34 @@ $define) *) case "$archname" in *-ld*) echo "...and architecture name already has -ld." >&4 - ;; - *) archname="$archname-ld" - echo "...setting architecture name to $archname." >&4 - ;; - esac - ;; - 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 - -: determine root of directory hierarchy where package will be installed. -case "$prefix" in -'') - dflt=`./loc . /usr/local /usr/local /local /opt /usr` - ;; -*) - dflt="$prefix" - ;; -esac -$cat <&4 -else - echo "AFS does not seem to be running..." >&4 -fi - -: determine installation prefix for where package is to be installed. -if $afs; then -$cat <&4 + ;; + esac + ;; 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 fi -fn=d~ -rp='What installation prefix should I use for installing files?' -. ./getfile -installprefix="$ans" -installprefixexp="$ansexp" : set the prefixit variable, to compute a suitable default value prefixit='case "$3" in @@ -6397,62 +6070,6 @@ prefixit='case "$3" in esac;; esac' -: get the patchlevel -echo " " -echo "Getting the current patchlevel..." >&4 -if $test -r $rsrc/patchlevel.h;then - revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h` - patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h` - subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h` - api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h` - api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h` - api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h` - perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'` -else - revision=0 - patchlevel=0 - subversion=0 - api_revision=0 - api_version=0 - api_subversion=0 - perl_patchlevel=0 - $echo "(You do not have patchlevel.h. Eek.)" -fi -if $test -r $rsrc/.patch ; then - if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then - perl_patchlevel=`cat $rsrc/.patch` - fi -fi -: Define a handy string here to avoid duplication in myconfig.SH and configpm. -version_patchlevel_string="version $patchlevel subversion $subversion" -case "$perl_patchlevel" in -0|'') ;; -*) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;; -esac - -$echo "(You have $package $version_patchlevel_string.)" - -case "$osname" in -dos|vms) - : XXX Should be a Configure test for double-dots in filenames. - version=`echo $revision $patchlevel $subversion | \ - $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'` - api_versionstring=`echo $api_revision $api_version $api_subversion | \ - $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'` - ;; -*) - version=`echo $revision $patchlevel $subversion | \ - $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'` - api_versionstring=`echo $api_revision $api_version $api_subversion | \ - $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'` - ;; -esac -: Special case the 5.005_xx maintenance series, which used 5.005 -: without any subversion label as a subdirectory in $sitelib -if test "${api_revision}${api_version}${api_subversion}" = "550"; then - api_versionstring='5.005' -fi - : determine installation style : For now, try to deduce it from prefix unless it is already set. : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7. @@ -6469,9 +6086,59 @@ esac : confusing anyway. installstyle=$dflt +: determine where public executables go +echo " " +set dflt bin bin +eval $prefixit +fn=d~ +rp='Pathname where the public executables will reside?' +. ./getfile +if $test "X$ansexp" != "X$binexp"; then + installbin='' +fi +prefixvar=bin +: XXX Bug? -- ignores Configure -Dinstallprefix setting. +: XXX If this is fixed, also fix the "start perl" hunk below, which relies on +: this via initialinstalllocation +. ./setprefixvar + +case "$userelocatableinc" in +$define|true|[yY]*) dflt='y' ;; +*) dflt='n' ;; +esac +cat <&4 + ;; +*) + $cat </dev/null 2>&1; then + perl5=$tdir/perl + break; + elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then + perl5=$tdir/perl5 + break; + fi + done + ;; +*) perl5="$perl5" + ;; +esac +case "$perl5" in +'') echo "None found. That's ok.";; +*) echo "Using $perl5." ;; +esac + +$cat < getverlist <> getverlist <<'EOPL' +# The list found is store twice for each entry: the original name, and +# the binary broken down version as pack "sss", so sorting is easy and +# unambiguous. This will work for all versions that have a maximum of +# three digit groups, separate by '.'s or '_'s. Names are extended with +# ".0.0" to ensure at least three elements for the pack. +# -- H.Merijn Brand (m)'06 23-10-2006 + +# Can't have leading @ because metaconfig interprets it as a command! +;@inc_version_list=(); +# XXX Redo to do opendir/readdir? +if (-d $stem) { + chdir($stem); + ;@candidates = map { + [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*"); +} +else { + ;@candidates = (); +} + +($pversion, $aversion, $vsn5005) = map { + pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005"; +foreach $d (@candidates) { + if ($d->[1] lt $pversion) { + if ($d->[1] ge $aversion) { + unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]); + } + elsif ($d->[1] ge $vsn5005) { + unshift(@inc_version_list, grep { -d } $d->[0]); + } + } + else { + # Skip newer version. I.e. don't look in + # 5.7.0 if we're installing 5.6.1. + } +} -: now see if they want to do setuid emulation -echo " " -val="$undef" -case "$d_suidsafe" in -"$define") - val="$undef" - echo "No need to emulate SUID scripts since they are secure here." >&4 +if (@inc_version_list) { + print join(' ', @inc_version_list); +} +else { + # Blank space to preserve value for next Configure run. + print " "; +} +EOPL +chmod +x getverlist +case "$inc_version_list" in +'') if test -x "$perl5$exe_ext"; then + dflt=`$perl5 getverlist` + else + dflt='none' + fi ;; -*) - $cat <try.c < +#include +int main () { return 0; } +EOCP +set try +if eval $compile; then + echo " found." >&4 + val="$define" +else + echo " NOT found." >&4 + val="$undef" +fi +$rm -f try.c 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 <<'EOCP' + $cat >try.c < +#endif #if TRY & 1 void sub() { #else @@ -6734,686 +6598,1092 @@ echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4 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 +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 -f try try.* .out + +: 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 +#ifdef I_STDLIB +#include +#endif +int main() +{ + printf("%d\n", (int)sizeof(VOID_PTR)); + exit(0); +} +EOCP + set try + if eval $compile_ok; then + ptrsize=`$run ./try` + echo "Your pointers are $ptrsize bytes long." + else + dflt='4' + echo "(I can't seem to compile the test program. Guessing...)" >&4 + rp="What is the size of a pointer (in bytes)?" + . ./myread + ptrsize="$ans" + fi + ;; +esac +$rm -f try.c try +case "$use64bitall" in +"$define"|true|[yY]*) + case "$ptrsize" in + 4) cat <&4 + +*** You have chosen a maximally 64-bit build, +*** but your pointers are only 4 bytes wide. +*** Please rerun Configure without -Duse64bitall. +EOM + case "$d_quad" in + define) + cat <&4 +*** Since you have quads, you could possibly try with -Duse64bitint. +EOM + ;; + esac + cat <&4 +*** Cannot continue, aborting. + +EOM + + exit 1 + ;; + esac + ;; +esac + + +: determine whether to use malloc wrapping +echo " " +case "$usemallocwrap" in +[yY]*|true|$define) dflt='y' ;; +[nN]*|false|$undef) dflt='n' ;; +*) case "$usedevel" in + [yY]*|true|$define) dflt='y' ;; + *) dflt='n' ;; + esac + ;; +esac +rp="Do you wish to wrap malloc calls to protect against potential overflows?" +. ./myread +usemallocwrap="$ans" +case "$ans" in +y*|true) + usemallocwrap="$define" ;; +*) + usemallocwrap="$undef" ;; +esac + +: determine which malloc to compile in +echo " " +case "$usemymalloc" in +[yY]*|true|$define) dflt='y' ;; +[nN]*|false|$undef) dflt='n' ;; +*) case "$ptrsize" in + 4) dflt='y' ;; + *) dflt='n' ;; + esac + ;; +esac +rp="Do you wish to attempt to use the malloc that comes with $package?" +. ./myread +usemymalloc="$ans" +case "$ans" in +y*|true) + usemymalloc='y' + mallocsrc='malloc.c' + mallocobj="malloc$_o" + d_mymalloc="$define" + case "$libs" in + *-lmalloc*) + : Remove malloc from list of libraries to use + echo "Removing unneeded -lmalloc from library list" >&4 + set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'` + shift + libs="$*" + echo "libs = $libs" >&4 + ;; + esac + ;; +*) + usemymalloc='n' + mallocsrc='' + mallocobj='' + d_mymalloc="$undef" + ;; +esac + +: compute the return types of malloc and free +echo " " +$cat >malloc.c < +#include +#ifdef I_MALLOC +#include +#endif +#ifdef I_STDLIB +#include +#endif +#ifdef TRY_MALLOC +void *malloc(); +#endif +#ifdef TRY_FREE +void free(); +#endif +END +case "$malloctype" in +'') + if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then + malloctype='void *' + else + malloctype='char *' + fi ;; esac -$rm -f try.* .out +echo "Your system wants malloc to return '$malloctype', it would seem." >&4 -: check for length of pointer -echo " " -case "$ptrsize" in +case "$freetype" 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 <<'EOCP' -#include -int main() -{ - printf("%d\n", (int)sizeof(VOID_PTR)); - exit(0); -} -EOCP - set try - if eval $compile_ok; then - ptrsize=`$run ./try` - echo "Your pointers are $ptrsize bytes long." + if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then + freetype='void' else - dflt='4' - echo "(I can't seem to compile the test program. Guessing...)" >&4 - rp="What is the size of a pointer (in bytes)?" - . ./myread - ptrsize="$ans" + freetype='int' fi ;; esac -$rm -f try.c try -case "$use64bitall" in -"$define"|true|[yY]*) - case "$ptrsize" in - 4) cat <&4 +echo "Your system uses $freetype free(), it would seem." >&4 +$rm -f malloc.[co] +: determine where site specific architecture-dependent libraries go. +: sitelib default is /usr/local/lib/perl5/site_perl/$version +: sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname +: sitelib may have an optional trailing /share. +case "$sitearch" in +'') dflt=`echo $sitelib | $sed 's,/share$,,'` + dflt="$dflt/$archname" + ;; +*) dflt="$sitearch" + ;; +esac +set sitearch sitearch none +eval $prefixit +$cat <&4 +fn=d~+ +rp='Pathname for the site-specific architecture-dependent library files?' +. ./getfile +prefixvar=sitearch +. ./setprefixvar +if $test X"$sitearch" = X"$sitelib"; then + d_sitearch="$undef" +else + d_sitearch="$define" +fi + +$cat <&4 +$cat >prototype.c < +#endif +int main(int argc, char *argv[]) { + exit(0);} +EOCP +if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then + echo "Your C compiler appears to support function prototypes." + val="$define" +else + echo "Your C compiler doesn't seem to understand function prototypes." + val="$undef" +fi +set prototype +eval $setvar +$rm -f prototype* + +case "$prototype" in +"$define") ;; +*) ansi2knr='ansi2knr' + echo " " + cat <&4 + +$me: FATAL ERROR: +This version of $package can only be compiled by a compiler that +understands function prototypes. Unfortunately, your C compiler + $cc $ccflags +doesn't seem to understand them. Sorry about that. + +If GNU cc is available for your system, perhaps you could try that instead. + +Eventually, we hope to support building Perl with pre-ANSI compilers. +If you would like to help in that effort, please contact . + +Aborting Configure now. +EOM + exit 2 ;; esac - -: determine which malloc to compile in echo " " -case "$usemymalloc" in -[yY]*|true|$define) dflt='y' ;; -[nN]*|false|$undef) dflt='n' ;; -*) case "$ptrsize" in - 4) dflt='y' ;; - *) dflt='n' ;; - esac - ;; +case "$extras" in +'') dflt='n';; +*) dflt='y';; esac -rp="Do you wish to attempt to use the malloc that comes with $package?" +cat <&4 - set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'` - shift - libs="$*" - echo "libs = $libs" >&4 - ;; - esac +y|Y) + cat < ../extras.lst + val="'$extras'" ;; esac - -: compute the return types of malloc and free +set extras +eval $setvar echo " " -$cat >malloc.c < -#include -#ifdef I_MALLOC -#include -#endif -#ifdef I_STDLIB -#include -#endif -#ifdef TRY_MALLOC -void *malloc(); -#endif -#ifdef TRY_FREE -void free(); -#endif -END -case "$malloctype" in -'') - if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then - malloctype='void *' - else - malloctype='char *' - fi - ;; -esac -echo "Your system wants malloc to return '$malloctype', it would seem." >&4 -case "$freetype" in -'') - if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then - freetype='void' - else - freetype='int' - fi - ;; -esac -echo "Your system uses $freetype free(), it would seem." >&4 -$rm -f malloc.[co] +: determine where html pages for programs go +set html1dir html1dir none +eval $prefixit $cat <&4 +cat >try.c <<'EOCP' +/* Find out version of GNU C library. __GLIBC__ and __GLIBC_MINOR__ + alone are insufficient to distinguish different versions, such as + 2.0.6 and 2.0.7. The function gnu_get_libc_version() appeared in + libc version 2.1.0. A. Dougherty, June 3, 2002. +*/ +#include +int main(void) +{ +#ifdef __GLIBC__ +# ifdef __GLIBC_MINOR__ +# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus) +# include + printf("%s\n", gnu_get_libc_version()); +# else + printf("%d.%d\n", __GLIBC__, __GLIBC_MINOR__); +# endif +# else + printf("%d\n", __GLIBC__); +# endif + return 0; +#else + return 1; +#endif +} +EOCP +set try +if eval $compile_ok && $run ./try > glibc.ver; then + val="$define" + gnulibc_version=`$cat glibc.ver` + echo "You are using the GNU C Library version $gnulibc_version" +else + val="$undef" + gnulibc_version='' + echo "You are not using the GNU C Library" +fi +$rm -f try try.* glibc.ver +set d_gnulibc +eval $setvar + +: see if nm is to be used to determine whether a symbol is defined or not +case "$usenm" in +'') + dflt='' + case "$d_gnulibc" in + "$define") + echo " " + echo "nm probably won't work on the GNU C Library." >&4 + dflt=n + ;; + esac + case "$dflt" in + '') + if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then + echo " " + echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4 + echo "'nm' won't be sufficient on this sytem." >&4 + dflt=n + fi + ;; + esac + case "$dflt" in + '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null` + if $test $dflt -gt 20; then + dflt=y + else + dflt=n + fi + ;; esac ;; -*) dflt="$sitelib" +*) + case "$usenm" in + true|$define) dflt=y;; + *) dflt=n;; + esac ;; esac $cat < /dev/null 2>&1; then + nm_so_opt='--dynamic' + fi ;; esac - usevendorprefix="$define" - vendorprefix="$ans" - vendorprefixexp="$ansexp" - ;; -*) usevendorprefix="$undef" - vendorprefix='' - vendorprefixexp='' ;; esac -case "$vendorprefix" in -'') d_vendorlib="$undef" - vendorlib='' - vendorlibexp='' +case "$runnm" in +true) +: get list of predefined functions in a handy place +echo " " +case "$libc" in +'') libc=unknown + case "$libs" in + *-lc_s*) libc=`./loc libc_s$_a $libc $libpth` + esac ;; -*) d_vendorlib="$define" - : determine where vendor-supplied modules go. - : Usual default is /usr/local/lib/perl5/vendor_perl/$version - case "$vendorlib" in - '') - prog=`echo $package | $sed 's/-*[0-9.]*$//'` - case "$installstyle" in - *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;; - *) dflt=$vendorprefix/lib/vendor_$prog/$version ;; - esac +esac +case "$libs" in +'') ;; +*) for thislib in $libs; do + case "$thislib" in + -lc|-lc_s) + : Handle C library specially below. ;; - *) dflt="$vendorlib" + -l*) + thislib=`echo $thislib | $sed -e 's/^-l//'` + if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then + : + elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then + : + elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then + : + elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then + : + elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then + : + elif try=`./loc $thislib X $libpth`; $test -f "$try"; then + : + elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then + : + else + try='' + fi + libnames="$libnames $try" ;; + *) libnames="$libnames $thislib" ;; esac - fn=d~+ - rp='Pathname for the vendor-supplied library files?' - . ./getfile - vendorlib="$ans" - vendorlibexp="$ansexp" + done ;; esac -vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"` -: Change installation prefix, if necessary. -if $test X"$prefix" != X"$installprefix"; then - installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"` -else - installvendorlib="$vendorlibexp" -fi - -case "$vendorprefix" in -'') d_vendorarch="$undef" - vendorarch='' - vendorarchexp='' +xxx=normal +case "$libc" in +unknown) + set /lib/libc.$so + for xxx in $libpth; do + $test -r $1 || set $xxx/libc.$so + : The messy sed command sorts on library version numbers. + $test -r $1 || \ + set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \ + tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e ' + h + s/[0-9][0-9]*/0000&/g + s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g + G + s/\n/ /' | \ + $sort | $sed -e 's/^.* //'` + eval set \$$# + done + $test -r $1 || set /usr/ccs/lib/libc.$so + $test -r $1 || set /lib/libsys_s$_a ;; -*) d_vendorarch="$define" - : determine where vendor-supplied architecture-dependent libraries go. - : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version - : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname - : vendorlib may have an optional trailing /share. - case "$vendorarch" in - '') dflt=`echo $vendorlib | $sed 's,/share$,,'` - dflt="$dflt/$archname" - ;; - *) dflt="$vendorarch" ;; - esac - fn=d~+ - rp='Pathname for vendor-supplied architecture-dependent files?' - . ./getfile - vendorarch="$ans" - vendorarchexp="$ansexp" +*) + set blurfl ;; esac -: Change installation prefix, if necessary. -if $test X"$prefix" != X"$installprefix"; then - installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"` +if $test -r "$1"; then + echo "Your (shared) C library seems to be in $1." + libc="$1" +elif $test -r /lib/libc && $test -r /lib/clib; then + echo "Your C library seems to be in both /lib/clib and /lib/libc." + xxx=apollo + libc='/lib/clib /lib/libc' + if $test -r /lib/syslib; then + echo "(Your math library is in /lib/syslib.)" + libc="$libc /lib/syslib" + fi +elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then + echo "Your C library seems to be in $libc, as you said before." +elif $test -r $incpath/usr/lib/libc$_a; then + libc=$incpath/usr/lib/libc$_a; + echo "Your C library seems to be in $libc. That's fine." +elif $test -r /lib/libc$_a; then + libc=/lib/libc$_a; + echo "Your C library seems to be in $libc. You're normal." else - installvendorarch="$vendorarchexp" + if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then + : + elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then + libnames="$libnames "`./loc clib blurfl/dyick $libpth` + elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then + : + elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then + : + elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then + : + else + tans=`./loc Llibc$_a blurfl/dyick $xlibpth` + fi + if $test -r "$tans"; then + echo "Your C library seems to be in $tans, of all places." + libc=$tans + else + libc='blurfl' + fi fi +if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then + dflt="$libc" + cat <&4 -$cat >prototype.c <<'EOCP' -int main(int argc, char *argv[]) { - exit(0);} -EOCP -if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then - echo "Your C compiler appears to support function prototypes." - val="$define" else - echo "Your C compiler doesn't seem to understand function prototypes." - val="$undef" -fi -set prototype -eval $setvar -$rm -f prototype* - -case "$prototype" in -"$define") ;; -*) ansi2knr='ansi2knr' - echo " " - cat <&4 - -$me: FATAL ERROR: -This version of $package can only be compiled by a compiler that -understands function prototypes. Unfortunately, your C compiler - $cc $ccflags -doesn't seem to understand them. Sorry about that. + dflt='' + echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath + cat >&4 <. +None of these seems to contain your C library. I need to get its name... -Aborting Configure now. EOM - exit 2 - ;; -esac - -: determine where public executables go -echo " " -set dflt bin bin -eval $prefixit -fn=d~ -rp='Pathname where the public executables will reside?' -. ./getfile -if $test "X$ansexp" != "X$binexp"; then - installbin='' -fi -bin="$ans" -binexp="$ansexp" -: Change installation prefix, if necessary. -: XXX Bug? -- ignores Configure -Dinstallprefix setting. -if $test X"$prefix" != X"$installprefix"; then - installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"` -else - installbin="$binexp" fi +fn=f +rp='Where is your C library?' +. ./getfile +libc="$ans" echo " " -case "$extras" in -'') dflt='n';; -*) dflt='y';; -esac -cat < ../extras.lst - val="'$extras'" - ;; -esac -set extras -eval $setvar +echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames +set X `cat libnames` +shift +xxx=files +case $# in 1) xxx=file; esac +echo "Extracting names from the following $xxx for later perusal:" >&4 echo " " +$sed 's/^/ /' libnames >&4 +echo " " +$echo $n "This may take a while...$c" >&4 -: Find perl5.005 or later. -echo "Looking for a previously installed perl5.005 or later... " -case "$perl5" in -'') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do - : Check if this perl is recent and can load a simple module - if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then - perl5=$tdir/perl - break; - elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then - perl5=$tdir/perl5 - break; +for file in $*; do + case $file in + *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;; + *) $nm $nm_opt $file 2>/dev/null;; + esac +done >libc.tmp + +$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]' +if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *//p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun +elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun +elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun +elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun +elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun +elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun +elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \ + -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun +elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun +elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun +elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun +elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun +elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun +elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun +elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\ + eval $xscan;\ + $contains '^fprintf$' libc.list >/dev/null 2>&1; then + eval $xrun +else + $nm -p $* 2>/dev/null >libc.tmp + $grep fprintf libc.tmp > libc.ptf + if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\ + eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1 + then + nm_opt='-p' + eval $xrun + else + echo " " + echo "$nm didn't seem to work right. Trying $ar instead..." >&4 + com='' + if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then + for thisname in $libnames $libc; do + $ar t $thisname >>libc.tmp + done + $sed -e "s/\\$_o\$//" < libc.tmp > libc.list + echo "Ok." >&4 + elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then + # Repeat libc to extract forwarders to DLL entries too + for thisname in $libnames $libc; do + $ar tv $thisname >>libc.tmp + # Revision 50 of EMX has bug in $ar. + # it will not extract forwarders to DLL entries + # Use emximp which will extract exactly them. + emximp -o tmp.imp $thisname \ + 2>/dev/null && \ + $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \ + < tmp.imp >>libc.tmp + $rm tmp.imp + done + $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list + echo "Ok." >&4 + else + echo "$ar didn't seem to work right." >&4 + echo "Maybe this is a Cray...trying bld instead..." >&4 + if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list + then + for thisname in $libnames; do + bld t $libnames | \ + $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list + $ar t $thisname >>libc.tmp + done + echo "Ok." >&4 + else + echo "That didn't work either. Giving up." >&4 + exit 1 + fi fi - done - ;; -*) perl5="$perl5" - ;; + fi +fi +nm_extract="$com" +case "$PASE" in +define) + echo " " + echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4 + dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list + ;; +*) if $test -f /lib/syscalls.exp; then + echo " " + echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4 + $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list + fi + ;; esac -case "$perl5" in -'') echo "None found. That's ok.";; -*) echo "Using $perl5." ;; +;; esac +$rm -f libnames libpath -: Determine list of previous versions to include in @INC -$cat > getverlist <> getverlist <<'EOPL' -# Can't have leading @ because metaconfig interprets it as a command! -;@inc_version_list=(); -# XXX Redo to do opendir/readdir? -if (-d $stem) { - chdir($stem); - ;@candidates = glob("5.*"); -} -else { - ;@candidates = (); -} - -# XXX ToDo: These comparisons must be reworked when two-digit -# subversions come along, so that 5.7.10 compares as greater than -# 5.7.3! By that time, hope that 5.6.x is sufficiently -# widespread that we can use the built-in version vectors rather -# than reinventing them here. For 5.6.0, however, we must -# assume this script will likely be run by 5.005_0x. --AD 1/2000. -foreach $d (@candidates) { - if ($d lt $version) { - if ($d ge $api_versionstring) { - unshift(@inc_version_list, grep { -d } "$d/$archname", $d); - } - elsif ($d ge "5.005") { - unshift(@inc_version_list, grep { -d } $d); - } - } - else { - # Skip newer version. I.e. don't look in - # 5.7.0 if we're installing 5.6.1. - } -} +: see if dld is available +set dld.h i_dld +eval $inhdr -if (@inc_version_list) { - print join(' ', @inc_version_list); -} -else { - # Blank space to preserve value for next Configure run. - print " "; -} -EOPL -chmod +x getverlist -case "$inc_version_list" in -'') if test -x "$perl5$exe_ext"; then - dflt=`$perl5 getverlist` +: is a C symbol defined? +csym='tlook=$1; +case "$3" in +-v) tf=libc.tmp; tdc="";; +-a) tf=libc.tmp; tdc="[]";; +*) tlook="^$1\$"; tf=libc.list; tdc="()";; +esac; +tx=yes; +case "$reuseval-$4" in +true-) ;; +true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;; +esac; +case "$tx" in +yes) + case "$d_cplusplus" in + $define) extern_C=\"C\";; + esac; + tval=false; + if $test "$runnm" = true; then + if $contains $tlook $tf >/dev/null 2>&1; then + tval=true; + elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then + echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c; + $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true; + $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; }; + $rm -f try$_exe try.c core core.* try.core; + fi; else - dflt='none' - fi + echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c; + $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true; + $rm -f try$_exe try.c; + fi; ;; -$undef) dflt='none' ;; -*) eval dflt=\"$inc_version_list\" ;; -esac -case "$dflt" in -''|' ') dflt=none ;; -esac -case "$dflt" in -5.005) dflt=none ;; -esac -$cat <&4 +cat >try.c <<'EOCP' +#include +int main(void) +{ +#ifdef __cplusplus + printf("define\n"); +#else + printf("undef\n"); +#endif + return 0; +} +EOCP +set try +if eval $compile_ok && $run ./try >cplusplus$$; then + val=`$cat cplusplus$$` + echo "You are using a C++ compiler." else val="$undef" + echo "You are not using a C++ compiler." fi -set installusrbinperl +$rm -f try try.* cplusplus$$ +set d_cplusplus eval $setvar -: see if dld is available -set dld.h i_dld -eval $inhdr - : see if dlopen exists xxx_runnm="$runnm" +xxx_ccflags="$ccflags" runnm=false +: with g++ one needs -shared to get is-in-libc to work for dlopen +case "$gccversion" in +'') ;; +*) case "$d_cplusplus" in + "$define") ccflags="$ccflags -shared" ;; + esac + ;; +esac set dlopen d_dlopen eval $inlibc runnm="$xxx_runnm" +ccflags="$xxx_ccflags" + +: see if this is a unistd.h system +set unistd.h i_unistd +eval $inhdr : determine which dynamic loading, if any, to compile in echo " " @@ -7490,7 +7760,7 @@ EOM ;; *) case "$osname" in darwin) dflt='none' ;; - svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;; + linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;; *) dflt='-fpic' ;; esac ;; esac ;; @@ -7511,10 +7781,17 @@ while other systems (such as those using ELF) use $cc. EOM case "$ld" in - '') $cat >try.c <<'EOM' + '') $cat >try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB #include +#endif +#$i_unistd I_UNISTD +#ifdef I_UNISTD +#include +#endif int main() { char b[4]; int i = open("a.out",O_RDONLY); @@ -7562,7 +7839,7 @@ EOM '') dflt="$dflt +vnocompatwarnings" ;; esac ;; - linux|irix*) dflt='-shared' ;; + linux|irix*|gnu*) dflt="-shared $optimize" ;; next) dflt='none' ;; solaris) dflt='-G' ;; sunos) dflt='-assert nodefinitions' ;; @@ -7609,11 +7886,9 @@ say "none". EOM case "$ccdlflags" in '') case "$osname" in - hpux) dflt='-Wl,-E' ;; - linux) dflt='-rdynamic' ;; - next) dflt='none' ;; - sunos) dflt='none' ;; - *) dflt='none' ;; + linux|hpux|gnu*) dflt='-Wl,-E' ;; + next|sunos) dflt='none' ;; + *) dflt='none' ;; esac ;; ' ') dflt='none' ;; *) dflt="$ccdlflags" ;; @@ -7672,7 +7947,7 @@ any other libraries needed on this system (such as -lm, etc.). Since your system supports dynamic loading, it is probably possible to build a shared libperl.$so. If you will have more than one executable linked to libperl.$so, this will significantly reduce the size of each -executable, but it may have a noticeable affect on performance. The +executable, but it may have a noticeable effect on performance. The default is probably sensible for your system. $also @@ -7708,7 +7983,7 @@ true) dflt=libperl.5.$so # XXX How handle the --version stuff for MAB? ;; - linux*) # ld won't link with a bare -lperl otherwise. + linux*|gnu*) # ld won't link with a bare -lperl otherwise. dflt=libperl.$so ;; cygwin*) # ld links against an importlib @@ -7792,10 +8067,10 @@ if "$useshrplib"; then solaris) xxx="-R $shrpdir" ;; - freebsd|netbsd) + freebsd|netbsd|openbsd|interix|dragonfly) xxx="-Wl,-R$shrpdir" ;; - bsdos|linux|irix*|dec_osf) + bsdos|linux|irix*|dec_osf|gnu*) xxx="-Wl,-rpath,$shrpdir" ;; next) @@ -7906,20 +8181,14 @@ rp="Where do the main $spackage manual pages (source) go?" if $test "X$man1direxp" != "X$ansexp"; then installman1dir='' fi -man1dir="$ans" -man1direxp="$ansexp" +prefixvar=man1dir +. ./setprefixvar + case "$man1dir" in '') man1dir=' ' installman1dir='';; esac -: Change installation prefix, if necessary. -if $test X"$prefix" != X"$installprefix"; then - installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"` -else - installman1dir="$man1direxp" -fi - : What suffix to use on installed man pages case "$man1dir" in @@ -7994,7 +8263,7 @@ esac case "$d_flexfnam" in undef) $cat <<'EOM' -However, your system can't handle the long file names like File::Basename.3. +However, your system can't handle the long file names like File::Basename.3. EOM case "$man3dir" in '') man3dir="none";; @@ -8009,8 +8278,8 @@ case "$man3dir" in cat <&4 WARNING: Previous versions of perl installed man3 pages into -$privlib/man/man3. This version will suggest a -new default of $dflt. +$privlib/man/man3. This version will suggest a +new default of $dflt. EOM tdflt=$dflt dflt='n' @@ -8031,19 +8300,13 @@ echo " " fn=dn+~ rp="Where do the $package library man pages (source) go?" . ./getfile -man3dir="$ans" -man3direxp="$ansexp" +prefixvar=man3dir +. ./setprefixvar + case "$man3dir" in '') man3dir=' ' - installman3dir='';; -esac - -: Change installation prefix, if necessary. -if $test X"$prefix" != X"$installprefix"; then - installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"` -else - installman3dir="$man3direxp" -fi + installman3dir='';; +esac : What suffix to use on installed man pages case "$man3dir" in @@ -8410,6 +8673,9 @@ case "$versiononly" in esac : figure out how to guarantee perl startup +: XXX Note that this currently takes advantage of the bug that binexp ignores +: the Configure -Dinstallprefix setting, which in turn means that under +: relocatable @INC, initialinstalllocation is what binexp started as. case "$startperl" in '') case "$sharpbang" in @@ -8419,13 +8685,13 @@ case "$startperl" in I can use the #! construct to start perl on your system. This will make startup of perl scripts faster, but may cause problems if you want to share those scripts and perl is not in a standard place -($binexp/perl) on all your platforms. The alternative is to force -a shell by starting the script with a single ':' character. +($initialinstalllocation/perl) on all your platforms. The alternative +is to force a shell by starting the script with a single ':' character. EOH case "$versiononly" in - "$define") dflt="$binexp/perl$version";; - *) dflt="$binexp/perl";; + "$define") dflt="$initialinstalllocation/perl$version";; + *) dflt="$initialinstalllocation/perl";; esac rp='What shall I put after the #! to start up perl ("none" to not use #!)?' . ./myread @@ -8454,8 +8720,8 @@ echo "I'll use $startperl to start perl scripts." case "$perlpath" in '') case "$versiononly" in - "$define") perlpath="$binexp/perl$version";; - *) perlpath="$binexp/perl";; + "$define") perlpath="$initialinstalllocation/perl$version";; + *) perlpath="$initialinstalllocation/perl";; esac case "$startperl" in *!*) ;; @@ -8465,10 +8731,10 @@ case "$perlpath" in I will use the "eval 'exec'" idiom to start Perl on your system. I can use the full path of your Perl binary for this purpose, but doing so may cause problems if you want to share those scripts and -Perl is not always in a standard place ($binexp/perl). +Perl is not always in a standard place ($initialinstalllocation/perl). EOH - dflt="$binexp/perl" + dflt="$initialinstalllocation/perl" rp="What path shall I use in \"eval 'exec'\"?" . ./myread perlpath="$ans" @@ -8500,12 +8766,12 @@ case "$scriptdir" in ;; esac $cat <&4 $cat >try.c < #include -int main() -{ - printf("%d\n", (int)sizeof($lseektype)); - return(0); +int main() +{ + printf("%d\n", (int)sizeof($lseektype)); + return(0); +} +EOCP + set try + if eval $compile_ok; then + lseeksize=`$run ./try` + $echo "Your file offsets are now $lseeksize bytes long." + else + dflt="$lseeksize" + echo " " + echo "(I can't seem to compile the test program. Guessing...)" + rp="What is the size of your file offsets (in bytes)?" + . ./myread + lseeksize="$ans" + fi + case "$fpostype" in + *_t) zzz="$fpostype" ;; + *) zzz="fpos_t" ;; + esac + $echo $n "Rechecking the size of $zzz...$c" >&4 + $cat > try.c < +#include +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif +int main() { + printf("%d\n", (int)sizeof($fpostype)); + return(0); +} +EOCP + set try + if eval $compile_ok; then + yyy=`$run ./try` + dflt="$lseeksize" + case "$yyy" in + '') echo " " + echo "(I can't execute the test program--guessing $fpossize.)" >&4 + ;; + *) fpossize=$yyy + echo " $fpossize bytes." >&4 + ;; + esac + else + dflt="$fpossize" + echo " " + echo "(I can't compile the test program. Guessing...)" >&4 + rp="What is the size of your file positions (in bytes)?" + . ./myread + fpossize="$ans" + fi + $rm -f try.c try + fi + ;; +esac + +case "$vendorprefix" in +'') d_vendorbin="$undef" + vendorbin='' + vendorbinexp='' + ;; +*) d_vendorbin="$define" + : determine where vendor-supplied executables go. + case "$vendorbin" in + '') dflt=$vendorprefix/bin ;; + *) dflt="$vendorbin" ;; + esac + fn=d~+ + rp='Pathname for the vendor-supplied executables directory?' + . ./getfile + vendorbin="$ans" + vendorbinexp="$ansexp" + ;; +esac +prefixvar=vendorbin +. ./installprefix + +case "$vendorprefix" in +'') vendorhtml1dir='' + vendorhtml1direxp='' + ;; +*) : determine where vendor-supplied html pages go. + : There is no standard location, so try to copy the previously-selected + : directory structure for the core html pages. + : XXX Better default suggestions would be welcome. + case "$vendorhtml1dir" in + '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;; + *) dflt=$vendorhtml1dir ;; + esac + case "$dflt" in + ''|' ') dflt=none ;; + esac + fn=dn+~ + rp='Pathname for the vendor-supplied html pages?' + . ./getfile + vendorhtml1dir="$ans" + vendorhtml1direxp="$ansexp" + ;; +esac +: Use ' ' for none so value is preserved next time through Configure +$test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' ' +prefixvar=vendorhtml1dir +. ./installprefix + +case "$vendorprefix" in +'') vendorhtml3dir='' + vendorhtml3direxp='' + ;; +*) : determine where vendor-supplied module html pages go. + : There is no standard location, so try to copy the previously-selected + : directory structure for the core html pages. + : XXX Better default suggestions would be welcome. + case "$vendorhtml3dir" in + '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;; + *) dflt=$vendorhtml3dir ;; + esac + case "$dflt" in + ''|' ') dflt=none ;; + esac + fn=dn+~ + rp='Pathname for the vendor-supplied html pages?' + . ./getfile + vendorhtml3dir="$ans" + vendorhtml3direxp="$ansexp" + ;; +esac +: Use ' ' for none so value is preserved next time through Configure +$test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' ' +prefixvar=vendorhtml3dir +. ./installprefix + +case "$vendorprefix" in +'') vendorman1dir='' + vendorman1direxp='' + ;; +*) : determine where vendor-supplied manual pages go. + case "$vendorman1dir" in + '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;; + *) dflt=$vendorman1dir ;; + esac + case "$dflt" in + ''|' ') dflt=none ;; + esac + fn=nd~+ + rp='Pathname for the vendor-supplied manual section 1 pages?' + . ./getfile + vendorman1dir="$ans" + vendorman1direxp="$ansexp" + ;; +esac +: Use ' ' for none so value is preserved next time through Configure +$test X"$vendorman1dir" = "X" && vendorman1dir=' ' +prefixvar=vendorman1dir +. ./installprefix + +case "$vendorprefix" in +'') vendorman3dir='' + vendorman3direxp='' + ;; +*) : determine where vendor-supplied module manual pages go. + case "$vendorman3dir" in + '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;; + *) dflt=$vendorman3dir ;; + esac + case "$dflt" in + ''|' ') dflt=none ;; + esac + fn=nd~+ + rp='Pathname for the vendor-supplied manual section 3 pages?' + . ./getfile + vendorman3dir="$ans" + vendorman3direxp="$ansexp" + ;; +esac +: Use ' ' for none so value is preserved next time through Configure +$test X"$vendorman3dir" = "X" && vendorman3dir=' ' +prefixvar=vendorman3dir +. ./installprefix + +case "$vendorprefix" in +'') d_vendorscript="$undef" + vendorscript='' + vendorscriptexp='' + ;; +*) d_vendorscript="$define" + : determine where vendor-supplied scripts go. + case "$vendorscript" in + '') dflt=$vendorprefix/script + $test -d $dflt || dflt=$vendorbin ;; + *) dflt="$vendorscript" ;; + esac + $cat <&4 + +if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then + $cat >try.c <<'EOCP' +#include +#include +int main() { + double d = 123.456; + printf("%.3f\n", d); +} +EOCP + set try + if eval $compile; then + yyy=`$run ./try` + case "$yyy" in + 123.456) + sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"'; + sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"'; + echo "We will use %f." + ;; + esac + fi +fi + +if $test X"$sPRIfldbl" = X; then + $cat >try.c <<'EOCP' +#include +#include +int main() { + long double d = 123.456; + printf("%.3Lf\n", d); +} +EOCP + set try + if eval $compile; then + yyy=`$run ./try` + case "$yyy" in + 123.456) + sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"'; + sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"'; + echo "We will use %Lf." + ;; + esac + fi +fi + +if $test X"$sPRIfldbl" = X; then + $cat >try.c <<'EOCP' +#include +#include +int main() { + long double d = 123.456; + printf("%.3llf\n", d); } EOCP - set try - if eval $compile_ok; then - lseeksize=`$run ./try` - $echo "Your file offsets are now $lseeksize bytes long." - else - dflt="$lseeksize" - echo " " - echo "(I can't seem to compile the test program. Guessing...)" - rp="What is the size of your file offsets (in bytes)?" - . ./myread - lseeksize="$ans" - fi - case "$fpostype" in - *_t) zzz="$fpostype" ;; - *) zzz="fpos_t" ;; + set try + if eval $compile; then + yyy=`$run ./try` + case "$yyy" in + 123.456) + sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"'; + sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"'; + echo "We will use %llf." + ;; esac - $echo $n "Rechecking the size of $zzz...$c" >&4 - $cat > try.c <try.c <<'EOCP' #include #include int main() { - printf("%d\n", (int)sizeof($fpostype)); - exit(0); + long double d = 123.456; + printf("%.3lf\n", d); } EOCP - set try - if eval $compile_ok; then - yyy=`$run ./try` - dflt="$lseeksize" - case "$yyy" in - '') echo " " - echo "(I can't execute the test program--guessing $fpossize.)" >&4 - ;; - *) fpossize=$yyy - echo " $fpossize bytes." >&4 - ;; - esac - else - dflt="$fpossize" - echo " " - echo "(I can't compile the test program. Guessing...)" >&4 - rp="What is the size of your file positions (in bytes)?" - . ./myread - fpossize="$ans" - fi - $rm -f try.c try + set try + if eval $compile; then + yyy=`$run ./try` + case "$yyy" in + 123.456) + sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"'; + sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"'; + echo "We will use %lf." + ;; + esac fi - ;; -esac +fi -case "$vendorprefix" in -'') d_vendorbin="$undef" - vendorbin='' - vendorbinexp='' - ;; -*) d_vendorbin="$define" - : determine where vendor-supplied executables go. - case "$vendorbin" in - '') dflt=$vendorprefix/bin ;; - *) dflt="$vendorbin" ;; - esac - fn=d~+ - rp='Pathname for the vendor-supplied executables directory?' - . ./getfile - vendorbin="$ans" - vendorbinexp="$ansexp" - ;; -esac -: Change installation prefix, if necessary. -if $test X"$prefix" != X"$installprefix"; then - installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"` +if $test X"$sPRIfldbl" = X; then + echo "Cannot figure out how to print long doubles." >&4 else - installvendorbin="$vendorbinexp" + sSCNfldbl=$sPRIfldbl # expect consistency fi -: see if qgcvt exists -set qgcvt d_qgcvt -eval $inlibc +$rm -f try try.* + +fi # d_longdbl + +case "$sPRIfldbl" in +'') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; + d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; + d_SCNfldbl="$undef"; + ;; +*) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; + d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; + d_SCNfldbl="$define"; + ;; +esac : Check how to convert floats to strings. @@ -9055,7 +9663,7 @@ eval $inlibc case "$d_access" in "$define") echo " " - $cat >access.c <<'EOCP' + $cat >access.c < #ifdef I_FCNTL #include @@ -9066,6 +9674,10 @@ case "$d_access" in #ifdef I_UNISTD #include #endif +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif int main() { exit(R_OK); } @@ -9093,6 +9705,10 @@ $rm -f access* set accessx d_accessx eval $inlibc +: see if aintl exists +set aintl d_aintl +eval $inlibc + : see if alarm exists set alarm d_alarm eval $inlibc @@ -9196,14 +9812,14 @@ else fi; set $varname; eval $setvar; -$rm -f try.c try.o' +$rm -f try try.c try.o' : see if we should include time.h, sys/time.h, or both echo " " if test "X$timeincl" = X; then echo "Testing to see if we should include , or both." >&4 $echo $n "I'm now running the test program...$c" - $cat >try.c <<'EOCP' + $cat >try.c < #ifdef I_TIME #include @@ -9217,6 +9833,10 @@ if test "X$timeincl" = X; then #ifdef I_SYSSELECT #include #endif +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif int main() { struct tm foo; @@ -9373,30 +9993,247 @@ esac set atolf d_atolf eval $inlibc -: see if atoll exists -set atoll d_atoll -eval $inlibc +: see if atoll exists +set atoll d_atoll +eval $inlibc + +: Look for GCC-style attribute format +case "$d_attribute_format" in +'') +echo " " +echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4 +$cat >attrib.c <<'EOCP' +#include +void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2))); +EOCP +if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then + if $contains 'warning' attrib.out >/dev/null 2>&1; then + echo "Your C compiler doesn't support __attribute__((format))." + val="$undef" + else + echo "Your C compiler supports __attribute__((format))." + val="$define" + fi +else + echo "Your C compiler doesn't seem to understand __attribute__ at all." + val="$undef" +fi +;; +*) val="$d_attribute_format" ;; +esac +set d_attribute_format +eval $setvar +$rm -f attrib* + +: Look for GCC-style attribute format with null format allowed +case "$d_printf_format_null" in +'') case "$d_attribute_format" in + $define) + echo " " + echo "Checking whether your compiler allows __printf__ format to be null ..." >&4 +$cat >attrib.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif +int null_printf (char* pat,...) __attribute__((__format__(__printf__,1,2))); +int null_printf (char* pat,...) { return (int)pat; } +int main () { exit(null_printf(NULL)); } +EOCP + if $cc $ccflags -o attrib attrib.c >attrib.out 2>&1 ; then + : run the executable in case it produces a run-time warning + if $run ./attrib >>attrib.out 2>&1; then + if $contains 'warning' attrib.out >/dev/null 2>&1; then + echo "Your C compiler doesn't allow __printf__ format to be null." + val="$undef" + else + echo "Your C compiler allows __printf__ format to be null." + val="$define" + fi + else + echo "Your C compiler executable failed with __printf__ format null." + val="$undef" + fi + else + echo "Your C compiler fails with __printf__ format null." + val="$undef" + fi + ;; + *) val="$undef" ;; + esac +;; +*) val="$d_printf_format_null" ;; +esac +set d_printf_format_null +eval $setvar +$rm -f attrib* + +: Look for GCC-style attribute malloc +case "$d_attribute_malloc" in +'') +echo " " +echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4 +$cat >attrib.c <<'EOCP' +#include +char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc)); +EOCP +if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then + if $contains 'warning' attrib.out >/dev/null 2>&1; then + echo "Your C compiler doesn't support __attribute__((malloc))." + val="$undef" + else + echo "Your C compiler supports __attribute__((malloc))." + val="$define" + fi +else + echo "Your C compiler doesn't seem to understand __attribute__ at all." + val="$undef" +fi +;; +*) val="$d_attribute_malloc" ;; +esac +set d_attribute_malloc +eval $setvar +$rm -f attrib* + +: Look for GCC-style attribute nonnull +case "$d_attribute_nonnull" in +'') +echo " " +echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4 +$cat >attrib.c <<'EOCP' +#include +void do_something (char *some_pointer,...) __attribute__((nonnull(1))); +EOCP +if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then + if $contains 'warning' attrib.out >/dev/null 2>&1; then + echo "Your C compiler doesn't support __attribute__((nonnull))." + val="$undef" + else + echo "Your C compiler supports __attribute__((nonnull))." + val="$define" + fi +else + echo "Your C compiler doesn't seem to understand __attribute__ at all." + val="$undef" +fi +;; +*) val="$d_attribute_nonnull" ;; +esac +set d_attribute_nonnull +eval $setvar +$rm -f attrib* + +: Look for GCC-style attribute noreturn +case "$d_attribute_noreturn" in +'') +echo " " +echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4 +$cat >attrib.c <<'EOCP' +#include +void fall_over_dead( void ) __attribute__((noreturn)); +EOCP +if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then + if $contains 'warning' attrib.out >/dev/null 2>&1; then + echo "Your C compiler doesn't support __attribute__((noreturn))." + val="$undef" + else + echo "Your C compiler supports __attribute__((noreturn))." + val="$define" + fi +else + echo "Your C compiler doesn't seem to understand __attribute__ at all." + val="$undef" +fi +;; +*) val="$d_attribute_noreturn" ;; +esac +set d_attribute_noreturn +eval $setvar +$rm -f attrib* + +: Look for GCC-style attribute pure +case "$d_attribute_pure" in +'') +echo " " +echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4 +$cat >attrib.c <<'EOCP' +#include +int square( int n ) __attribute__((pure)); +EOCP +if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then + if $contains 'warning' attrib.out >/dev/null 2>&1; then + echo "Your C compiler doesn't support __attribute__((pure))." + val="$undef" + else + echo "Your C compiler supports __attribute__((pure))." + val="$define" + fi +else + echo "Your C compiler doesn't seem to understand __attribute__ at all." + val="$undef" +fi +;; +*) val="$d_attribute_pure" ;; +esac +set d_attribute_pure +eval $setvar +$rm -f attrib* + +: Look for GCC-style attribute unused +case "$d_attribute_unused" in +'') +echo " " +echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4 +$cat >attrib.c <<'EOCP' +#include +int do_something( int dummy __attribute__((unused)), int n ); +EOCP +if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then + if $contains 'warning' attrib.out >/dev/null 2>&1; then + echo "Your C compiler doesn't support __attribute__((unused))." + val="$undef" + else + echo "Your C compiler supports __attribute__((unused))." + val="$define" + fi +else + echo "Your C compiler doesn't seem to understand __attribute__ at all." + val="$undef" +fi +;; +*) val="$d_attribute_unused" ;; +esac +set d_attribute_unused +eval $setvar +$rm -f attrib* -: Look for GNU-cc style attribute checking +: Look for GCC-style attribute warn_unused_result +case "$d_attribute_warn_unused_result" in +'') echo " " -echo "Checking whether your compiler can handle __attribute__ ..." >&4 +echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4 $cat >attrib.c <<'EOCP' #include -void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn)); +int I_will_not_be_ignored(void) __attribute__((warn_unused_result)); EOCP if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then if $contains 'warning' attrib.out >/dev/null 2>&1; then - echo "Your C compiler doesn't fully support __attribute__." + echo "Your C compiler doesn't support __attribute__((warn_unused_result))." val="$undef" else - echo "Your C compiler supports __attribute__." + echo "Your C compiler supports __attribute__((warn_unused_result))." val="$define" fi else echo "Your C compiler doesn't seem to understand __attribute__ at all." val="$undef" fi -set d_attribut +;; +*) val="$d_attribute_warn_unused_result" ;; +esac +set d_attribute_warn_unused_result eval $setvar $rm -f attrib* @@ -9408,10 +10245,6 @@ eval $inlibc set bcopy d_bcopy eval $inlibc -: see if this is a unistd.h system -set unistd.h i_unistd -eval $inhdr - : see if getpgrp exists set getpgrp d_getpgrp eval $inlibc @@ -9426,6 +10259,10 @@ case "$d_getpgrp" in #ifdef I_UNISTD # include #endif +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif int main() { if (getuid() == 0) { @@ -9488,6 +10325,10 @@ case "$d_setpgrp" in #ifdef I_UNISTD # include #endif +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif int main() { if (getuid() == 0) { @@ -9535,10 +10376,215 @@ esac set d_bsdsetpgrp eval $setvar $rm -f try try.* +: Look for GCC-style __builtin_choose_expr +case "$d_builtin_choose_expr" in +'') + echo " " + echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4 + $cat >try.c <<'EOCP' +#include +#include +#include + +#define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) ) + +int main(void) { + assert( SYRINX(1) == 2112 ); + assert( SYRINX(1) != 5150 ); + assert( SYRINX(0) == 5150 ); + assert( SYRINX(0) != 2112 ); + puts( "All good!" ); + exit(0); +} + +EOCP + set try + if eval $compile; then + echo "Your C compiler supports __builtin_choose_expr." + val="$define" + else + echo "Your C compiler doesn't seem to understand __builtin_choose_expr." + val="$undef" + fi +;; +*) val="$d_builtin_choose_expr" ;; +esac + +set d_builtin_choose_expr +eval $setvar +$rm -f try.* try core core.try.* + +: Look for GCC-style __builtin_expect +case "$d_builtin_expect" in +'') + echo " " + echo "Checking whether your compiler can handle __builtin_expect ..." >&4 + $cat >builtin.c <<'EOCP' +int main(void) { + int n = 50; + if ( __builtin_expect(n, 0) ) n = 1; +} +EOCP + set try + if eval $compile; then + echo "Your C compiler supports __builtin_choose_expr." + val="$define" + else + echo "Your C compiler doesn't seem to understand __builtin_choose_expr." + val="$undef" + fi + ;; +*) val="$d_builtin_expect" ;; +esac + +set d_builtin_expect +eval $setvar +$rm -f try.* try core core.try.* + : see if bzero exists set bzero d_bzero eval $inlibc +: see if stdarg is available +echo " " +if $test `./findhdr stdarg.h`; then + echo " found." >&4 + valstd="$define" +else + echo " NOT found." >&4 + valstd="$undef" +fi + +: see if varags is available +echo " " +if $test `./findhdr varargs.h`; then + echo " found." >&4 +else + echo " NOT found, but that's ok (I hope)." >&4 +fi + +: set up the varargs testing programs +$cat > varargs.c < +#endif +#ifdef I_VARARGS +#include +#endif + +#ifdef I_STDARG +int f(char *p, ...) +#else +int f(va_alist) +va_dcl +#endif +{ + va_list ap; +#ifndef I_STDARG + char *p; +#endif +#ifdef I_STDARG + va_start(ap,p); +#else + va_start(ap); + p = va_arg(ap, char *); +#endif + va_end(ap); + return 0; +} +EOP +$cat > varargs </dev/null 2>&1; then + echo "true" +else + echo "false" +fi +$rm -f varargs$_o +EOP +chmod +x varargs + +: now check which varargs header should be included +echo " " +i_varhdr='' +case "$valstd" in +"$define") + if `./varargs I_STDARG`; then + val='stdarg.h' + elif `./varargs I_VARARGS`; then + val='varargs.h' + fi + ;; +*) + if `./varargs I_VARARGS`; then + val='varargs.h' + fi + ;; +esac +case "$val" in +'') +echo "I could not find the definition for va_dcl... You have problems..." >&4 + val="$undef"; set i_stdarg; eval $setvar + val="$undef"; set i_varargs; eval $setvar + ;; +*) + set i_varhdr + eval $setvar + case "$i_varhdr" in + stdarg.h) + val="$define"; set i_stdarg; eval $setvar + val="$undef"; set i_varargs; eval $setvar + ;; + varargs.h) + val="$undef"; set i_stdarg; eval $setvar + val="$define"; set i_varargs; eval $setvar + ;; + esac + echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;; +esac +$rm -f varargs* + +: see if the Compiler supports C99 variadic macros +case "$i_stdarg$i_stdlib" in + "$define$define") + echo "You have and , so checking for C99 variadic macros." >&4 + $cat >try.c < +#include + +#define foo(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__) + +int main() { + char buf[20]; + foo(buf, "%d %g %.*s", 123, 456.0, (int)3, "789fail"); + puts(buf); + return 0; +} +EOCP + set try + if eval $compile && $run ./try 2>&1 >/dev/null; then + case "`$run ./try`" in + "123 456 789") + echo "You have C99 variadic macros." >&4 + d_c99_variadic_macros="$define" + ;; + *) + echo "You don't have functional C99 variadic macros." >&4 + d_c99_variadic_macros="$undef" + ;; + esac + else + echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4 + d_c99_variadic_macros="$undef" + fi + $rm -f try.* try core core.try.* + ;; + *) + echo "You don't have and , so not checking for C99 variadic macros." >&4 + d_c99_variadic_macros="$undef" + ;; +esac + : see if signal is declared as pointer to function returning int or void echo " " xxx=`./findhdr signal.h` @@ -9593,9 +10639,13 @@ else fi $cat >try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif #include #include -$signal_t blech(s) int s; { exit(3); } +$signal_t blech(int s) { exit(3); } int main() { $xxx i32; @@ -9613,7 +10663,7 @@ int main() i32 = ($xxx) g; /* x86 processors will probably give 0x8000 0000, which is a - sign change. We don't want that. We want to mimic SPARC + sign change. We don't want that. We want to mimic SPARC behavior here, which is to preserve the sign and give back 0x7fff ffff. */ @@ -9647,13 +10697,17 @@ echo " " echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4 $cat >try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif #include #include -$signal_t blech(s) int s; { exit(7); } -$signal_t blech_in_list(s) int s; { exit(4); } -unsigned long dummy_long(p) unsigned long p; { return p; } -unsigned int dummy_int(p) unsigned int p; { return p; } -unsigned short dummy_short(p) unsigned short p; { return p; } +$signal_t blech(int s) { exit(7); } +$signal_t blech_in_list(int s) { exit(4); } +unsigned long dummy_long(unsigned long p) { return p; } +unsigned int dummy_int(unsigned int p) { return p; } +unsigned short dummy_short(unsigned short p) { return p; } int main() { double f; @@ -9736,15 +10790,19 @@ case "$castflags" in esac set d_castneg eval $setvar -$rm -f try.* +$rm -f try try.* : see if vprintf exists echo " " if set vprintf val -f d_vprintf; eval $csym; $val; then echo 'vprintf() found.' >&4 val="$define" - $cat >try.c <<'EOF' + $cat >try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif int main() { xxx("foo"); } @@ -9794,6 +10852,10 @@ eval $inlibc set class d_class eval $inlibc +: see if clearenv exists +set clearenv d_clearenv +eval $inlibc + hasstruct='varname=$1; struct=$2; shift; shift; while $test $# -ge 2; do case "$1" in @@ -9810,7 +10872,7 @@ else fi; set $varname; eval $setvar; -$rm -f try.c try.o' +$rm -f try try.c try.o' socketlib='' sockethdr='' @@ -9915,10 +10977,10 @@ echo " " echo 'Checking to see if your C compiler knows about "const"...' >&4 $cat >const.c <<'EOCP' typedef struct spug { int drokk; } spug; -main() +int main() { const char *foo; - const spug y; + const spug y = { 0 }; } EOCP if $cc -c $ccflags const.c >/dev/null 2>&1 ; then @@ -9931,6 +10993,10 @@ 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 @@ -10031,6 +11097,10 @@ case "$full_csh" in '') full_csh=$csh ;; esac +: see if ctermid exists +set ctermid d_ctermid +eval $inlibc + : see if ctermid_r exists set ctermid_r d_ctermid_r eval $inlibc @@ -10254,7 +11324,7 @@ else . ./myread direntrytype="$ans" fi -$rm -f try.c +$rm -f try try.c : see if the directory entry stores field length @@ -10269,7 +11339,43 @@ else fi set d_dirnamlen eval $setvar -$rm -f try.c +$rm -f try try.c + +: Look for DIR.dd_fd +case "$i_dirent" in +"$define") + echo "Checking to see if DIR has a dd_fd member variable" >&4 + $cat >try.c < +#endif +#include + +int main() { + DIR dir; + dir.dd_fd = 1; + return 0; +} +EOCP + val=$undef + set try + if eval $compile; then + echo "Yes, it does." + val="$define" + else + echo "No, it does not." + val="$undef" + fi + ;; +*) + echo "You don't have a , so not checking for dd_fd." >&4 + val="$undef" + ;; +esac +set d_dir_dd_fd +eval $setvar +$rm -f try try.* : see if this is an sysdir system set sys/dir.h i_sysdir @@ -10283,6 +11389,10 @@ eval $inhdr echo " " $cat >dirfd.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif #$i_dirent I_DIRENT /**/ #$i_sysdir I_SYS_DIR /**/ #$i_sysndir I_SYS_NDIR /**/ @@ -10316,6 +11426,7 @@ int main() { exit(1); } EOM +val=$undef set dirfd if eval $compile; then val="$define" @@ -10375,6 +11486,10 @@ EOM $cat >fred.c< +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif #$i_dlfcn I_DLFCN #ifdef I_DLFCN #include /* the dynamic linker include file for SunOS/Solaris */ @@ -10912,7 +12027,7 @@ esac : Locate the flags for 'open()' echo " " -$cat >try.c <<'EOCP' +$cat >try.c < #ifdef I_FCNTL #include @@ -10920,6 +12035,10 @@ $cat >try.c <<'EOCP' #ifdef I_SYS_FILE #include #endif +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif int main() { if(O_RDONLY); #ifdef O_TRUNC @@ -11052,7 +12171,10 @@ case "$o_nonblock" in $cat head.c > try.c $cat >>try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB #include +#endif #$i_fcntl I_FCNTL #ifdef I_FCNTL #include @@ -11098,7 +12220,10 @@ case "$eagain" in #include #include #include -#include +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif #$i_fcntl I_FCNTL #ifdef I_FCNTL #include @@ -11117,7 +12242,7 @@ extern int errno; #else #include #endif -$signal_t blech(x) int x; { exit(3); } +$signal_t blech(int x) { exit(3); } EOCP $cat >> try.c <<'EOCP' int main() @@ -11167,77 +12292,362 @@ int main() exit(0); } - close(pd[0]); /* We write to pd[1] */ - close(pu[1]); /* We read from pu[0] */ - read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */ - close(pd[1]); /* Pipe pd is now fully closed! */ - exit(0); /* Bye bye, thank you for playing! */ + close(pd[0]); /* We write to pd[1] */ + close(pu[1]); /* We read from pu[0] */ + read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */ + close(pd[1]); /* Pipe pd is now fully closed! */ + exit(0); /* Bye bye, thank you for playing! */ +} +EOCP + set try + if eval $compile_ok; then + echo "$startsh" >mtry + echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry + chmod +x mtry + ./mtry >/dev/null 2>&1 + case $? in + 0) eagain=`$cat try.out`;; + 1) echo "Could not perform non-blocking setting!";; + 2) echo "I did a successful read() for something that was not there!";; + 3) echo "Hmm... non-blocking I/O does not seem to be working!";; + 4) echo "Could not find F_SETFL!";; + *) echo "Something terribly wrong happened during testing.";; + esac + rd_nodata=`$cat try.ret` + echo "A read() system call with no data present returns $rd_nodata." + case "$rd_nodata" in + 0|-1) ;; + *) + echo "(That's peculiar, fixing that to be -1.)" + rd_nodata=-1 + ;; + esac + case "$eagain" in + '') + echo "Forcing errno EAGAIN on read() with no data available." + eagain=EAGAIN + ;; + *) + echo "Your read() sets errno to $eagain when no data is available." + ;; + esac + status=`$cat try.err` + case "$status" in + 0) echo "And it correctly returns 0 to signal EOF.";; + -1) echo "But it also returns -1 to signal EOF, so be careful!";; + *) echo "However, your read() returns '$status' on EOF??";; + esac + val="$define" + if test "$status" = "$rd_nodata"; then + echo "WARNING: you can't distinguish between EOF and no data!" + val="$undef" + fi + else + echo "I can't compile the test program--assuming errno EAGAIN will do." + eagain=EAGAIN + fi + set d_eofnblk + eval $setvar + ;; +*) + echo "Using $hint value $eagain." + echo "Your read() returns $rd_nodata when no data is present." + case "$d_eofnblk" in + "$define") echo "And you can see EOF because read() returns 0.";; + "$undef") echo "But you can't see EOF status from read() returned value.";; + *) + echo "(Assuming you can't see EOF status from read anyway.)" + d_eofnblk=$undef + ;; + esac + ;; +esac +$rm -f try try.* .out core head.c mtry + +: 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" + ;; + 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; + } -EOCP +EOP set try - if eval $compile_ok; then - echo "$startsh" >mtry - echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry - chmod +x mtry - ./mtry >/dev/null 2>&1 - case $? in - 0) eagain=`$cat try.out`;; - 1) echo "Could not perform non-blocking setting!";; - 2) echo "I did a successful read() for something that was not there!";; - 3) echo "Hmm... non-blocking I/O does not seem to be working!";; - 4) echo "Could not find F_SETFL!";; - *) echo "Something terribly wrong happened during testing.";; - esac - rd_nodata=`$cat try.ret` - echo "A read() system call with no data present returns $rd_nodata." - case "$rd_nodata" in - 0|-1) ;; - *) - echo "(That's peculiar, fixing that to be -1.)" - rd_nodata=-1 - ;; - esac - case "$eagain" in - '') - echo "Forcing errno EAGAIN on read() with no data available." - eagain=EAGAIN - ;; + 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 "Your read() sets errno to $eagain when no data is available." - ;; - esac - status=`$cat try.err` - case "$status" in - 0) echo "And it correctly returns 0 to signal EOF.";; - -1) echo "But it also returns -1 to signal EOF, so be careful!";; - *) echo "However, your read() returns '$status' on EOF??";; - esac - val="$define" - if test "$status" = "$rd_nodata"; then - echo "WARNING: you can't distinguish between EOF and no data!" - val="$undef" + 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 "I can't compile the test program--assuming errno EAGAIN will do." - eagain=EAGAIN + echo "However, it seems to be lacking the _base field." fi - set d_eofnblk - eval $setvar + $rm -f try.c try ;; -*) - echo "Using $hint value $eagain." - echo "Your read() returns $rd_nodata when no data is present." - case "$d_eofnblk" in - "$define") echo "And you can see EOF because read() returns 0.";; - "$undef") echo "But you can't see EOF status from read() returned value.";; - *) - echo "(Assuming you can't see EOF status from read anyway.)" - d_eofnblk=$undef +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 -$rm -f try try.* .out core head.c mtry +set d_faststdio +eval $setvar + + : see if fchdir exists set fchdir d_fchdir @@ -11258,11 +12668,14 @@ eval $inlibc echo " " : See if fcntl-based locking works. $cat >try.c < +#endif #include #include #include -$signal_t blech(x) int x; { exit(3); } +$signal_t blech(int x) { exit(3); } int main() { #if defined(F_SETLK) && defined(F_SETLKW) struct flock flock; @@ -11325,6 +12738,10 @@ $cat <try.c < +#endif #$i_systime I_SYS_TIME #$i_sysselct I_SYS_SELECT #$d_socket HAS_SOCKET @@ -11524,6 +12941,41 @@ case "$longsize" in 8) echo "(Your long is 64 bits, so you could use ftell.)" ;; esac +d_futimes="$undef" +: check for a working futimes +echo " " +echo "Checking for a working futimes()" >&4 +$cat >try.c < +#include +#include +#include + +int main () +{ + int fd, rv; + fd = open ("try.c", O_RDWR); + if (-1 == fd) exit (1); + rv = futimes (fd, NULL); + exit (rv == -1 ? errno : 0); +} +EOCP +set try +if eval $compile; then + `$run ./try` + rc=$? + case "$rc" in + 0) echo "Yes, it does" >&4 + d_futimes="$define" + ;; + *) echo "No, it has futimes, but it isn't working ($rc) (probably harmless)\n" >&4 + ;; + esac +else + echo "No, it does not (probably harmless)\n" >&4 +fi +$rm -f try.* try core core.try.* + : see if getcwd exists set getcwd d_getcwd eval $inlibc @@ -11864,6 +13316,10 @@ case "$d_gethostbyaddr_r" in ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;; esac case "$gethostbyaddr_r_proto" in + ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);' + ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;; + esac + case "$gethostbyaddr_r_proto" in ''|0) d_gethostbyaddr_r=undef gethostbyaddr_r_proto=0 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;; @@ -12125,6 +13581,10 @@ case "$d_getnetbyaddr_r" in ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;; esac case "$getnetbyaddr_r_proto" in + ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);' + ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;; + esac + case "$getnetbyaddr_r_proto" in ''|0) d_getnetbyaddr_r=undef getnetbyaddr_r_proto=0 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;; @@ -12966,6 +14426,10 @@ esac set d_htonl eval $setvar +: see if ilogbl exists +set ilogbl d_ilogbl +eval $inlibc + : index or strchr echo " " if set index val -f; eval $csym; $val; then @@ -13005,9 +14469,13 @@ eval $inlibc : Look for isascii echo " " -$cat >isascii.c <<'EOCP' +$cat >isascii.c < #include +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif int main() { int c = 'A'; if (isascii(c)) @@ -13107,6 +14575,38 @@ $rm -f ldbl_dig.? set d_ldbl_dig eval $setvar +: see if this is a math.h system +set math.h i_math +eval $inhdr + +d_libm_lib_version="$undef" +case $i_math in + $define) + : check to see if math.h defines _LIB_VERSION + echo " " + echo "Checking to see if your libm supports _LIB_VERSION..." >&4 + $cat >try.c < +#include +int main (int argc, char *argv[]) +{ + printf ("%d\n", _LIB_VERSION); + return (0); + } /* main */ +EOCP + set try + if eval $compile; then + foo=`$run ./try` + echo "Yes, it does ($foo)" >&4 + d_libm_lib_version="$define" + else + echo "No, it does not (probably harmless)\n" >&4 + fi + $rm -f try.* try core core.try.* + ;; + + esac + : see if link exists set link d_link eval $inlibc @@ -13156,6 +14656,59 @@ case "$d_localtime_r" in ;; esac +: see if localtime_r calls tzset +case "$localtime_r_proto" in +REENTRANT_PROTO*) + $cat >try.c < +#include +#include +#include +#include +int main() +{ + time_t t = time(0L); + char w_tz[]="TZ" "=GMT+5", + e_tz[]="TZ" "=GMT-5", + *tz_e = (char*)malloc(16), + *tz_w = (char*)malloc(16); + struct tm tm_e, tm_w; + memset(&tm_e,'\0',sizeof(struct tm)); + memset(&tm_w,'\0',sizeof(struct tm)); + strcpy(tz_e,e_tz); + strcpy(tz_w,w_tz); + + putenv(tz_e); + localtime_r(&t, &tm_e); + + putenv(tz_w); + localtime_r(&t, &tm_w); + + if( memcmp(&tm_e, &tm_w, sizeof(struct tm)) == 0 ) + return 1; + return 0; +} +EOCP + set try + if eval $compile; then + if ./try; then + d_localtime_r_needs_tzset=undef; + else + d_localtime_r_needs_tzset=define; + fi; + else + d_localtime_r_needs_tzset=undef; + fi; + ;; + *) + d_localtime_r_needs_tzset=undef; + ;; +esac +$rm -f try try.* core + : see if localeconv exists set localeconv d_locconv eval $inlibc @@ -13177,6 +14730,14 @@ eval $inlibc set madvise d_madvise eval $inlibc +: see if malloc_size exists +set malloc_size d_malloc_size +eval $inlibc + +: see if malloc_size_good exists +set malloc_good_size d_malloc_good_size +eval $inlibc + : see if mblen exists set mblen d_mblen eval $inlibc @@ -13252,13 +14813,128 @@ END if $cc $ccflags -c mmap.c >/dev/null 2>&1; then mmaptype='void *' else - mmaptype='caddr_t' + mmaptype='caddr_t' + fi + echo "and it returns ($mmaptype)." >&4 + ;; +esac + + + +: see if sqrtl exists +set sqrtl d_sqrtl +eval $inlibc + +: see if scalbnl exists +set scalbnl d_scalbnl +eval $inlibc + +: see if modfl exists +set modfl d_modfl +eval $inlibc + +: see if prototype for modfl is available +echo " " +set d_modflproto modfl $i_math math.h +eval $hasproto + +d_modfl_pow32_bug="$undef" + +case "$d_longdbl$d_modfl" in +$define$define) + $cat <try.c < +#include +EOCP +if $test "X$d_modflproto" != "X$define"; then + $cat >>try.c <>try.c <&4 "Your modfl() is broken for large values." + d_modfl_pow32_bug="$define" + case "$foo" in + glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()." + ;; + esac + ;; + *" 4294967303.150000 0.150000 4294967303.000000") + echo >&4 "Your modfl() seems okay for large values." + ;; + *) echo >&4 "I don't understand your modfl() at all." + d_modfl="$undef" + ;; + esac + $rm -f try.* try core core.try.* + else + echo "I cannot figure out whether your modfl() is okay, assuming it isn't." + d_modfl="$undef" fi - echo "and it returns ($mmaptype)." >&4 + case "$osname:$gccversion" in + aix:) ccflags="$saveccflags" ;; # restore + esac ;; esac +if $test "$uselongdouble" = "$define"; then + message="" + if $test "$d_sqrtl" != "$define"; then + message="$message sqrtl" + fi + if $test "$d_modfl" != "$define"; then + if $test "$d_aintl:$d_copysignl" = "$define:$define"; then + echo "You have both aintl and copysignl, so I can emulate modfl." + else + message="$message modfl" + fi + fi + if $test "$d_frexpl" != "$define"; then + if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then + echo "You have both ilogbl and scalbnl, so I can emulate frexpl." + else + message="$message frexpl" + fi + fi + + if $test "$message" != ""; then + $cat <&4 + +*** You requested the use of long doubles but you do not seem to have +*** the following mathematical functions needed for long double support: +*** $message +*** Please rerun Configure without -Duselongdouble and/or -Dusemorebits. +*** Cannot continue, aborting. + +EOM + exit 1 + fi +fi : see if mprotect exists set mprotect d_mprotect @@ -13352,8 +15028,12 @@ echo " " case "$charsize" in '') echo "Checking to see how big your characters are (hey, you never know)..." >&4 - $cat >try.c <<'EOCP' + $cat >try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif int main() { printf("%d\n", (int)sizeof(char)); @@ -13381,7 +15061,7 @@ $rm -f try.c try echo " " echo 'Checking to see if your C compiler knows about "volatile"...' >&4 $cat >try.c <<'EOCP' -main() +int main() { typedef struct _goo_struct goo_struct; goo_struct * volatile goo = ((goo_struct *)0); @@ -13406,7 +15086,7 @@ else fi set d_volatile eval $setvar -$rm -f try.* +$rm -f try try.* echo " " @@ -13593,11 +15273,15 @@ if test X"$d_volatile" = X"$define"; then fi $cat <try.c #include +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif #include #include #ifdef SIGFPE $volatile int bletched = 0; -$signal_t blech(s) int s; { bletched = 1; } +$signal_t blech(int s) { bletched = 1; } #endif int main() { $uvtype u = 0; @@ -13619,10 +15303,9 @@ int main() { if (($uvtype)d != (u - 1)) break; #ifdef SIGFPE - if (bletched) { + if (bletched) break; #endif - } } printf("%d\n", ((i == n) ? -n : i)); exit(0); @@ -13643,11 +15326,133 @@ case "$nv_preserves_uv_bits" in [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs." 2>&1 d_nv_preserves_uv="$undef" ;; *) $echo "Can't figure out how many bits your NVs preserve." 2>&1 - nv_preserves_uv_bits="$undef" ;; + nv_preserves_uv_bits="0" ;; esac $rm -f try.* try +$echo "Checking whether NV 0.0 is all bits zero in memory..." >&4 +: volatile so that the compiler has to store it out to memory. +if test X"$d_volatile" = X"$define"; then + volatile=volatile +fi +$cat <try.c +#include +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif +#$i_string I_STRING +#ifdef I_STRING +# include +#else +# include +#endif +#include +#include +#ifdef SIGFPE +$volatile int bletched = 0; +$signal_t blech(int s) { bletched = 1; } +#endif + +int checkit($nvtype d, char *where) { + unsigned char *p = (char *)&d; + unsigned char *end = p + sizeof(d); + int fail = 0; + + while (p < end) + fail += *p++; + + if (!fail) + return 0; + + p = (char *)&d; + printf("No - %s: 0x", where); + while (p < end) + printf ("%02X", *p++); + printf("\n"); + return 1; +} + +int main(int argc, char **argv) { + $nvtype d = 0.0; + int fail = 0; + fail += checkit(d, "0.0"); + + /* The compiler shouldn't be assuming that bletched is 0 */ + d = bletched; + + fail += checkit(d, "bleched"); + +#ifdef SIGFPE + signal(SIGFPE, blech); +#endif + + /* Paranoia - the compiler should have no way of knowing that ANSI says + that argv[argc] will always be NULL. Actually, if it did assume this it + would be buggy, as this is C and main() can be called from elsewhere in + the program. */ + d = argv[argc] ? 1 : 0; + + if (d) { + printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d); + } + + fail += checkit(d, "ternary"); + + memset(&d, sizeof(d), argv[argc] ? 1 : 0); + + if (d != 0.0) { + printf("No - memset doesn't give 0.0\n"); + /* This might just blow up: */ + printf("(gives %g)\n", d); + return 1; + } + +#ifdef SIGFPE + if (bletched) { + printf("No - something bleched\n"); + return 1; + } +#endif + if (fail) { + printf("No - %d fail(s)\n", fail); + return 1; + } + printf("Yes\n"); + return 0; +} +EOP +set try + +d_nv_zero_is_allbits_zero="$undef" +if eval $compile; then + xxx="`$run ./try`" + case "$?" in + 0) + case "$xxx" in + Yes) cat >&4 <&4 <&4 <try.c < @@ -13799,6 +15652,10 @@ esac set d_pthread_atfork eval $setvar +: see if pthread_attr_setscope exists +set pthread_attr_setscope d_pthread_attr_setscope +eval $inlibc + : see whether the various POSIXish _yields exist $cat >try.c <." >&4 val="$undef" fi -$rm -f try try.c try.h +$rm -f try try.c set d_union_semun eval $setvar : see how to do semctl IPC_STAT case "$d_sem" in $define) - : see whether semctl IPC_STAT can use union semun echo " " $cat > try.h < try.c < try.c < #include #include @@ -14401,7 +16268,7 @@ int main() { printf("semctl IPC_STAT failed: errno = %d\n", errno); # ifdef IPC_RMID if (semctl(sem, 0, IPC_RMID, arg) != 0) -# endif /* IPC_RMID */ +# endif /* IPC_RMID */ printf("semctl IPC_RMID failed: errno = %d\n", errno); } else #endif /* IPC_PRIVATE && ... */ @@ -14409,17 +16276,18 @@ int main() { return 0; } END - val="$undef" - set try - if eval $compile; then - xxx=`$run ./try` - case "$xxx" in - semun) val="$define" ;; - esac - fi - $rm -f try try.c - set d_semctl_semun - eval $setvar + set try + if eval $compile; then + xxx=`$run ./try` + case "$xxx" in + semun) val="$define" ;; + esac + fi + $rm -f try try.c + set d_semctl_semun + eval $setvar + ;; + esac case "$d_semctl_semun" in $define) echo "You can use union semun for semctl IPC_STAT." >&4 @@ -14431,7 +16299,10 @@ END esac : see whether semctl IPC_STAT can use struct semid_ds pointer - $cat > try.c <<'END' + case "$d_semctl_semid_ds" in + '') + val="$undef" + $cat > try.c <<'END' #include #include #include @@ -14467,17 +16338,18 @@ int main() { return 0; } END - val="$undef" - set try - if eval $compile; then - xxx=`$run ./try` - case "$xxx" in - semid_ds) val="$define" ;; - esac - fi - $rm -f try try.c - set d_semctl_semid_ds - eval $setvar + set try + if eval $compile; then + xxx=`$run ./try` + case "$xxx" in + semid_ds) val="$define" ;; + esac + fi + $rm -f try try.c + set d_semctl_semid_ds + eval $setvar + ;; + esac case "$d_semctl_semid_ds" in $define) echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4 @@ -15065,10 +16937,14 @@ echo " " : see if we have sigaction if set sigaction val -f d_sigaction; eval $csym; $val; then echo 'sigaction() found.' >&4 - $cat > try.c <<'EOP' + $cat > try.c < #include #include +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif int main() { struct sigaction act, oact; @@ -15089,8 +16965,53 @@ else echo 'sigaction NOT found.' >&4 val="$undef" fi -set d_sigaction; eval $setvar -$rm -f try try$_o try.c +set d_sigaction; eval $setvar +$rm -f try try$_o try.c + +: see if this is a sunmath.h system +set sunmath.h i_sunmath +eval $inhdr + +: see if signbit exists +$echo $n "Checking to see if you have signbit() available to work on $nvtype... $c" >&4 +$cat >try.c < +#endif +#ifdef I_SUNMATH /* Solaris special math library */ +# include +#endif +#define NV $nvtype +int main(int argc, char **argv) +{ + NV x = 0.0; + NV y = -0.0; + if ((signbit(x) == 0) && (signbit(y) != 0)) + return 0; + else + return 1; +} +EOCP +val="$undef" +set try +if eval $compile; then + if $run ./try; then + $echo "Yes." >&4 + val="$define" + else + $echo "Signbit seems to be available, but doesn't work as I expected." + $echo "I won't use it." >&4 + val="$undef" + fi +else + $echo "Nope." >&4 + dflt="$undef" +fi +set d_signbit +eval $setvar +$rm -f try.* try : see if sigprocmask exists set sigprocmask d_sigprocmask @@ -15100,8 +17021,12 @@ eval $inlibc echo " " case "$d_sigsetjmp" in '') - $cat >try.c <<'EOP' + $cat >try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif sigjmp_buf env; int set = 1; int main() @@ -15141,6 +17066,71 @@ set d_sigsetjmp eval $setvar $rm -f try.c try +: see if snprintf exists +set snprintf d_snprintf +eval $inlibc + +: see if vsnprintf exists +set vsnprintf d_vsnprintf +eval $inlibc + +case "$d_snprintf-$d_vsnprintf" in +"$define-$define") + $cat <try.c <<'EOCP' +/* v?snprintf testing logic courtesy of Russ Allbery. + * According to C99: + * - if the buffer is too short it still must be \0-terminated + * - if the buffer is too short the potentially required length + * must be returned and not -1 + * - if the buffer is NULL the potentially required length + * must be returned and not -1 or core dump + */ +#include +#include + +char buf[2]; + +int test (char *format, ...) +{ + va_list args; + int count; + + va_start (args, format); + count = vsnprintf (buf, sizeof buf, format, args); + va_end (args); + return count; +} + +int main () +{ + return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0' + && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1); +} +EOCP + set try + if eval $compile; then + `$run ./try` + case "$?" in + 0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;; + *) cat <&4 +Your snprintf() and snprintf() don't seem to be working okay. +EOM + d_snprintf="$undef" + d_vsnprintf="$undef" + ;; + esac + else + echo "(I can't seem to compile the test program--assuming they don't)" + d_snprintf="$undef" + d_vsnprintf="$undef" + fi + $rm -f try.* try core core.try.* + ;; +esac + : see if sockatmark exists set sockatmark d_sockatmark eval $inlibc @@ -15154,6 +17144,68 @@ eval $hasproto set socks5_init d_socks5_init eval $inlibc +: see if sprintf returns the length of the string in the buffer as per ANSI +$echo "Checking whether sprintf returns the length of the string..." >&4 +$cat <try.c +#include +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif +#$i_string I_STRING +#ifdef I_STRING +# include +#else +# include +#endif +#$i_math I_MATH +#ifdef I_MATH +#include +#endif + +char buffer[256]; + +int check (size_t expect, int test) { + size_t got = strlen(buffer); + if (expect == got) + return 0; + + printf("expected %ld, got %ld in test %d '%s'\n", (long) expect, (long) got, + test, buffer); + exit (test); +} + +int main(int argc, char **argv) { + int test = 0; + + check(sprintf(buffer, ""), ++test); + check(sprintf(buffer, "%s %s", "perl", "rules"), ++test); + check(sprintf(buffer, "I like %g", atan2(0,-1)), ++test); + + return 0; +} +EOP +set try + +d_sprintf_returns_strlen="$undef" +if eval $compile; then + xxx="`$run ./try`" + case "$?" in + 0) cat >&4 <&4 <&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 < -#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" + 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. */ -#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 < -#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 $cat >try.c <<'EOCP' -main() +int main() { struct blurfl { int dyick; @@ -15614,7 +17410,7 @@ else fi set d_strctcpy eval $setvar -$rm -f try.* +$rm -f try try.* : see if strerror and/or sys_errlist[] exist echo " " @@ -15708,6 +17504,14 @@ esac set strftime d_strftime eval $inlibc +: see if strlcat exists +set strlcat d_strlcat +eval $inlibc + +: see if strlcpy exists +set strlcpy d_strlcpy +eval $inlibc + : see if strtod exists set strtod d_strtod eval $inlibc @@ -15856,6 +17660,9 @@ EOM d_strtoul="$undef" ;; esac + else + echo "(I can't seem to compile the test program--assuming it doesn't)" + d_strtoul="$undef" fi ;; esac @@ -15910,6 +17717,9 @@ EOM d_strtoull="$undef" ;; esac + else + echo "(I can't seem to compile the test program--assuming it doesn't)" + d_strtoull="$undef" fi ;; esac @@ -15962,6 +17772,9 @@ EOM d_strtouq="$undef" ;; esac + else + echo "(I can't seem to compile the test program--assuming it doesn't)" + d_strtouq="$undef" fi ;; esac @@ -16182,6 +17995,10 @@ I'm now running the test program... EOM $cat >try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif #include typedef $uvtype UV; int main() @@ -16244,12 +18061,16 @@ EOM case "$d_u32align" in '') $cat >try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif #define U32 $u32type #define BYTEORDER 0x$byteorder #define U8 $u8type #include #ifdef SIGBUS -$signal_t bletch(s) int s; { exit(4); } +$signal_t bletch(int s) { exit(4); } #endif int main() { #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321 @@ -16272,10 +18093,10 @@ int main() { buf[1] = 0; buf[2] = 0; buf[3] = 1; + buf[4] = 0; buf[5] = 0; buf[6] = 0; - buf[7] = 0; - buf[8] = 1; + buf[7] = 1; for (i = 0; i < 4; i++) { up = (U32*)(buf + i); @@ -16348,6 +18169,10 @@ eval $inlibc set unordered d_unordered eval $inlibc +: see if unsetenv exists +set unsetenv d_unsetenv +eval $inlibc + : see if usleep exists set usleep d_usleep eval $inlibc @@ -16361,52 +18186,6 @@ eval $hasproto set ustat d_ustat eval $inlibc -: backward compatibility for d_hvfork -if test X$d_hvfork != X; then - d_vfork="$d_hvfork" - d_hvfork='' -fi -: see if there is a vfork -val='' -set vfork val -eval $inlibc - -: Ok, but do we want to use it. vfork is reportedly unreliable in -: perl on Solaris 2.x, and probably elsewhere. -case "$val" in -$define) - echo " " - case "$usevfork" in - false) dflt='n';; - *) dflt='y';; - esac - cat <<'EOM' - -Perl can only use a vfork() that doesn't suffer from strict -restrictions on calling functions or modifying global data in -the child. For example, glibc-2.1 contains such a vfork() -that is unsuitable. If your system provides a proper fork() -call, chances are that you do NOT want perl to use vfork(). - -EOM - rp="Do you still want to use vfork()?" - . ./myread - case "$ans" in - y|Y) ;; - *) - echo "Ok, we won't use vfork()." - val="$undef" - ;; - esac - ;; -esac -set d_vfork -eval $setvar -case "$d_vfork" in -$define) usevfork='true';; -*) usevfork='false';; -esac - : see if closedir exists set closedir d_closedir eval $inlibc @@ -16551,9 +18330,9 @@ esac : set the base revision baserev=5.0 -: how do we catenate cpp tokens here? +: how do we concatenate cpp tokens here? echo " " -echo "Checking to see how your cpp does stuff like catenate tokens..." >&4 +echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4 $cat >cpp_stuff.c <<'EOCP' #define RCAT(a,b)a/**/b #define ACAT(a,b)a ## b @@ -16572,8 +18351,8 @@ elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then cpp_stuff=1 else $cat >&4 < #include +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif #include int main(int argc, char *argv[]) { @@ -16669,7 +18452,7 @@ EOCP ;; esac fi - $rm -f try.* + $rm -f try try.* ;; esac @@ -16712,7 +18495,7 @@ EOCP echo "Help: I can't seem to compile the db test program." >&4 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4 fi - $rm -f try.* + $rm -f try try.* echo "Your version of Berkeley DB uses $db_hashtype for hash." ;; *) db_hashtype=u_int32_t @@ -16757,7 +18540,7 @@ EOCP echo "Help: I can't seem to compile the db test program." >&4 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4 fi - $rm -f try.* + $rm -f try try.* echo "Your version of Berkeley DB uses $db_prefixtype for prefix." ;; *) db_prefixtype='size_t' @@ -16933,6 +18716,10 @@ sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;; esac $cat >>try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif #$i_unistd I_UNISTD #ifdef I_UNISTD # include @@ -17249,6 +19036,10 @@ echo "Checking the size of $zzz..." >&4 cat > try.c < #include +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif int main() { printf("%d\n", (int)sizeof($gidtype)); exit(0); @@ -17591,6 +19382,39 @@ EOM *) groupstype="$gidtype";; esac + +if $test $patchlevel -lt 9; then +: MAD is not available in 5.8.x or earlier. + ans=n; +else + case "$mad" in + $define|true|[yY]*) dflt='y' ;; + *) dflt='n' ;; + esac + cat <&4 case "$make_set_make" in @@ -17616,104 +19440,6 @@ rp="What is the type used for file modes for system calls (e.g. fchmod())?" set mode_t modetype int stdio.h sys/types.h eval $typedef_ask -: see if stdarg is available -echo " " -if $test `./findhdr stdarg.h`; then - echo " found." >&4 - valstd="$define" -else - echo " NOT found." >&4 - valstd="$undef" -fi - -: see if varags is available -echo " " -if $test `./findhdr varargs.h`; then - echo " found." >&4 -else - echo " NOT found, but that's ok (I hope)." >&4 -fi - -: set up the varargs testing programs -$cat > varargs.c < -#endif -#ifdef I_VARARGS -#include -#endif - -#ifdef I_STDARG -int f(char *p, ...) -#else -int f(va_alist) -va_dcl -#endif -{ - va_list ap; -#ifndef I_STDARG - char *p; -#endif -#ifdef I_STDARG - va_start(ap,p); -#else - va_start(ap); - p = va_arg(ap, char *); -#endif - va_end(ap); -} -EOP -$cat > varargs </dev/null 2>&1; then - echo "true" -else - echo "false" -fi -$rm -f varargs$_o -EOP -chmod +x varargs - -: now check which varargs header should be included -echo " " -i_varhdr='' -case "$valstd" in -"$define") - if `./varargs I_STDARG`; then - val='stdarg.h' - elif `./varargs I_VARARGS`; then - val='varargs.h' - fi - ;; -*) - if `./varargs I_VARARGS`; then - val='varargs.h' - fi - ;; -esac -case "$val" in -'') -echo "I could not find the definition for va_dcl... You have problems..." >&4 - val="$undef"; set i_stdarg; eval $setvar - val="$undef"; set i_varargs; eval $setvar - ;; -*) - set i_varhdr - eval $setvar - case "$i_varhdr" in - stdarg.h) - val="$define"; set i_stdarg; eval $setvar - val="$undef"; set i_varargs; eval $setvar - ;; - varargs.h) - val="$undef"; set i_stdarg; eval $setvar - val="$define"; set i_varargs; eval $setvar - ;; - esac - echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;; -esac -$rm -f varargs* - : see if we need va_copy echo " " case "$i_stdarg" in @@ -17948,18 +19674,16 @@ rp="What is the type of process ids on this system?" set pid_t pidtype int stdio.h sys/types.h eval $typedef_ask -: Find earliest binary compatible site_perl subdirectory perl can use. -xs_apiversion=$version # The current site_perl version. -: Find earliest pure perl site_perl subdirectory perl can use. -: The versioned directories started at 5.005. -pm_apiversion='5.005' - : see if ar generates random libraries by itself echo " " echo "Checking how to generate random libraries on your machine..." >&4 echo 'int bar1() { return bar2(); }' > bar1.c echo 'int bar2() { return 2; }' > bar2.c -$cat > foo.c <<'EOP' +$cat > foo.c < +#endif int main() { printf("%d\n", bar1()); exit(0); } EOP $cc $ccflags -c bar1.c >/dev/null 2>&1 @@ -17970,7 +19694,15 @@ if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 && $run ./foobar >/dev/null 2>&1; then echo "$ar appears to generate random libraries itself." orderlib=false - ranlib=":" + if [ "X$ranlib" = "X" ]; then + ranlib=":" + fi +elif $ar s bar$_a >/dev/null 2>&1 && + $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 && + $run ./foobar >/dev/null 2>&1; then + echo "a table of contents needs to be added with '$ar s'." + orderlib=false + ranlib="$ar s" elif $ar ts bar$_a >/dev/null 2>&1 && $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 && $run ./foobar >/dev/null 2>&1; then @@ -17995,7 +19727,7 @@ else ranlib=":" fi fi -$rm -f foo* bar* +$rm -f foo* bar* : check for type of arguments to select. case "$selecttype" in @@ -18049,7 +19781,8 @@ esac : check for the select 'width' case "$selectminbits" in -'') case "$d_select" in +'') safebits=`expr $ptrsize \* 8` + case "$d_select" in $define) $cat < /* Might include */ #endif #include +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif $selecttype b; #define S sizeof(*(b)) #define MINBITS 64 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8) #define NBITS (NBYTES * 8) int main() { - char s[NBYTES]; + char *s = (char *)malloc(NBYTES); struct timeval t; int i; FILE* fp; int fd; + if (!s) + exit(1); fclose(stdin); fp = fopen("try.c", "r"); if (fp == 0) - exit(1); + exit(2); fd = fileno(fp); if (fd < 0) - exit(2); + exit(3); b = ($selecttype)s; for (i = 0; i < NBITS; i++) FD_SET(i, b); @@ -18107,6 +19846,7 @@ int main() { t.tv_usec = 0; select(fd + 1, b, 0, 0, &t); for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--); + free(s); printf("%d\n", i + 1); return 0; } @@ -18117,10 +19857,10 @@ EOCP case "$selectminbits" in '') cat >&4 < signal.c <<'EOCP' +$cat > signal.c < #include +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif #include int main() { @@ -18212,6 +19957,12 @@ int main() { #endif #ifndef NSIG +# ifdef _SIG_MAX +# define NSIG (_SIG_MAX+1) +# endif +#endif + +#ifndef NSIG # ifdef MAXSIG # define NSIG (MAXSIG+1) # endif @@ -18225,7 +19976,7 @@ int main() { #ifndef NSIG # ifdef SIGARRAYSIZE -# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */ +# define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */ # endif #endif @@ -18263,7 +20014,7 @@ END { $cat >signal.awk <<'EOP' BEGIN { ndups = 0 } $1 ~ /^NSIG$/ { nsig = $2 } -($1 !~ /^NSIG$/) && (NF == 2) { +($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) { if ($2 > maxsig) { maxsig = $2 } if (sig_name[$2]) { dup_name[ndups] = $1 @@ -18416,6 +20167,10 @@ echo "Checking the size of $zzz..." >&4 cat > try.c < #include +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif int main() { printf("%d\n", (int)sizeof($sizetype)); exit(0); @@ -18519,6 +20274,10 @@ eval $typedef dflt="$ssizetype" $cat > try.c < +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif #include #define Size_t $sizetype #define SSize_t $dflt @@ -18556,7 +20315,8 @@ $rm -f try try.* : see what type of char stdio uses. echo " " -echo '#include ' | $cppstdin $cppminus > stdioh +echo '#include ' > stdio.c +$cppstdin $cppminus < stdio.c > stdioh if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then echo "Your stdio uses unsigned chars." >&4 stdchar="unsigned char" @@ -18564,9 +20324,7 @@ else echo "Your stdio uses signed chars." >&4 stdchar="char" fi -$rm -f stdioh - - +$rm -f stdio.* stdioh : see what type uids are declared as in the kernel echo " " @@ -18601,6 +20359,10 @@ echo "Checking the size of $zzz..." >&4 cat > try.c < #include +#$i_stdlib I_STDLIB +#ifdef I_STDLIB +#include +#endif int main() { printf("%d\n", (int)sizeof($uidtype)); exit(0); @@ -18698,6 +20460,16 @@ case "$uidsign" in ;; esac + +case "$usesitecustomize" in + $define|true|[Yy]*) + usesitecustomize="$define" + ;; + *) + usesitecustomize="$undef" + ;; + esac + : determine compiler compiler case "$yacc" in '') @@ -18737,6 +20509,26 @@ eval $inhdr set fp_class.h i_fp_class eval $inhdr +: see if gdbm.h is available +set gdbm.h t_gdbm +eval $inhdr +case "$t_gdbm" in +$define) + : see if gdbm_open exists + set gdbm_open d_gdbm_open + eval $inlibc + case "$d_gdbm_open" in + $undef) + t_gdbm="$undef" + echo "We won't be including " + ;; + esac + ;; +esac +val="$t_gdbm" +set i_gdbm +eval $setvar + : see if this is a ieeefp.h system case "$i_ieeefp" in '' ) set ieeefp.h i_ieeefp @@ -18758,10 +20550,6 @@ fi -: see if this is a math.h system -set math.h i_math -eval $inhdr - : see if this is a mntent.h system set mntent.h i_mntent eval $inhdr @@ -18842,17 +20630,17 @@ set prot.h i_prot eval $inhdr echo " " -$echo "Guessing which symbols your C compiler and preprocessor define..." >&4 +$echo "Guessing which symbols your C compiler and preprocessor define..." >&4 $cat <<'EOSH' > Cppsym.know a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE -alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX +alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi bull c cadmus clipper CMU COFF COMPILER_VERSION concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX -CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO +CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel GLIBC GLIBC_MINOR @@ -18904,7 +20692,7 @@ USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED USGr4 USGr4_2 -Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286 +Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED z8000 @@ -18939,16 +20727,26 @@ cat < Cppsym.try $startsh cat <<'EOCP' > try.c #include +#if cpp_stuff == 1 +#define STRINGIFY(a) "a" +#endif +#if cpp_stuff == 42 +#define StGiFy(a) #a +#define STRINGIFY(a) StGiFy(a) +#endif +#if $cpp_stuff != 1 && $cpp_stuff != 42 +# include "Bletch: How does this C preprocessor stringify macros?" +#endif int main() { EOCP $awk \\ EOSH cat <<'EOSH' >> Cppsym.try 'length($1) > 0 { - printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1 - printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1 - printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1 - printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1 + printf "#ifdef %s\nprintf(\"%s=%%s\\n\", STRINGIFY(%s));\n#endif\n", $1, $1, $1 + printf "#ifdef _%s\nprintf(\"_%s=%%s\\n\", STRINGIFY(_%s));\n#endif\n", $1, $1, $1 + printf "#ifdef __%s\nprintf(\"__%s=%%s\\n\", STRINGIFY(__%s));\n#endif\n", $1, $1, $1 + printf "#ifdef __%s__\nprintf(\"__%s__=%%s\\n\", STRINGIFY(__%s__));\n#endif\n", $1, $1, $1 }' >> try.c echo 'return 0;}' >> try.c EOSH @@ -18958,11 +20756,26 @@ case "$osname-$gccversion" in irix-) ccflags="\$ccflags -woff 1178" ;; os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;; esac -$cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try +$cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $run ./try | $sed 's/ /\\\\ /g' EOSH chmod +x Cppsym.try $eunicefix Cppsym.try ./Cppsym < Cppsym.know > Cppsym.true +: Add in any linux cpp "predefined macros": +case "$osname::$gccversion" in + *linux*::*.*) + tHdrH=_tmpHdr + rm -f $tHdrH'.h' $tHdrH + touch $tHdrH'.h' + if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then + sed 's/#define[\ \ ]*//;s/[\ \ ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real' + if [ -s $tHdrH'_cppsym.real' ]; then + cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true + fi + fi + rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real' + ;; +esac : now check the C compiler for additional symbols postprocess_cc_v='' case "$osname" in @@ -18994,11 +20807,9 @@ fi $awk '/\=/ { print $0; next } { print $0"=1" }' ccsym.raw >ccsym.list -$awk '/\=/ { print $0; next } - { print $0"=1" }' Cppsym.true >ccsym.true -$comm -13 ccsym.true ccsym.list >ccsym.own -$comm -12 ccsym.true ccsym.list >ccsym.com -$comm -23 ccsym.true ccsym.list >ccsym.cpp +$comm -13 Cppsym.true ccsym.list >ccsym.own +$comm -12 Cppsym.true ccsym.list >ccsym.com +$comm -23 Cppsym.true ccsym.list >ccsym.cpp also='' if $test -z ccsym.raw; then echo "Your C compiler doesn't seem to define any symbols!" >&4 @@ -19098,10 +20909,6 @@ val=$val3; set i_termios; eval $setvar set stddef.h i_stddef eval $inhdr -: see if this is a sunmath.h system -set sunmath.h i_sunmath -eval $inhdr - : see if sys/access.h is available set sys/access.h i_sysaccess eval $inhdr @@ -19205,26 +21012,6 @@ case "$d_vfork" in ;; esac -: see if gdbm.h is available -set gdbm.h t_gdbm -eval $inhdr -case "$t_gdbm" in -$define) - : see if gdbm_open exists - set gdbm_open d_gdbm_open - eval $inlibc - case "$d_gdbm_open" in - $undef) - t_gdbm="$undef" - echo "We won't be including " - ;; - esac - ;; -esac -val="$t_gdbm" -set i_gdbm -eval $setvar - echo " " echo "Looking for extensions..." >&4 : If we are using the old config.sh, known_extensions may contain @@ -19240,24 +21027,24 @@ nonxs_extensions='' : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness find_extensions=' for xxx in *; do - case "$xxx" in - DynaLoader|dynaload) ;; - *) - if $test -f $xxx/$xxx.xs; then - known_extensions="$known_extensions $1$xxx"; - elif $test -f $xxx/Makefile.PL; then - nonxs_extensions="$nonxs_extensions $1$xxx"; - else - if $test -d $xxx -a $# -lt 10; then - set $1$xxx/ $*; - cd "$xxx"; - eval $find_extensions; - cd ..; - shift; - fi; - fi - ;; - esac; + case "$xxx" in + DynaLoader|dynaload) ;; + *) + if $test -f $xxx/$xxx.xs -o -f $xxx/$xxx.c; then + known_extensions="$known_extensions $1$xxx"; + elif $test -f $xxx/Makefile.PL; then + nonxs_extensions="$nonxs_extensions $1$xxx"; + else + if $test -d $xxx -a $# -lt 10; then + set $1$xxx/ $*; + cd "$xxx"; + eval $find_extensions; + cd ..; + shift; + fi; + fi + ;; + esac; done' tdir=`pwd` cd "$rsrc/ext" @@ -19268,12 +21055,14 @@ eval $find_extensions # recursive find above (and adding in general recursive finding breaks # SDBM_File/sdbm). A.D. 10/25/2001. known_extensions="$known_extensions threads/shared" -set X $nonxs_extensions -shift -nonxs_extensions="$*" set X $known_extensions shift known_extensions="$*" +# Ditto for IO/Compress/Base and IO/Compress/Zlib +nonxs_extensions="$nonxs_extensions IO/Compress/Base IO/Compress/Zlib" +set X $nonxs_extensions +shift +nonxs_extensions="$*" cd "$tdir" : Now see which are supported on this system. @@ -19286,12 +21075,12 @@ for xxx in $known_extensions ; do esac ;; GDBM_File|gdbm_fil) - case "$i_gdbm" in + case "$i_gdbm" in $define) avail_ext="$avail_ext $xxx" ;; esac ;; I18N/Langinfo|i18n_lan) - case "$i_langinfo$d_nl_langinfo" in + case "$i_langinfo$d_nl_langinfo" in $define$define) avail_ext="$avail_ext $xxx" ;; esac ;; @@ -19309,7 +21098,7 @@ for xxx in $known_extensions ; do ;; esac ;; - ODBM_File|odbm_fil) + ODBM_File|odbm_fil) case "${i_dbm}${i_rpcsvcdbm}" in *"${define}"*) case "$osname-$use64bitint" in @@ -19334,7 +21123,7 @@ for xxx in $known_extensions ; do esac ;; Socket|socket) - case "$d_socket" in + case "$d_socket" in true|$define|y) case "$osname" in beos) ;; # not unless BONE @@ -19345,7 +21134,7 @@ for xxx in $known_extensions ; do ;; Sys/Syslog|sys/syslog) : XXX syslog requires socket - case "$d_socket" in + case "$d_socket" in true|$define|y) avail_ext="$avail_ext $xxx" ;; esac ;; @@ -19357,6 +21146,11 @@ for xxx in $known_extensions ; do esac esac ;; + Win32*) + case "$osname" in + cygwin) avail_ext="$avail_ext $xxx" ;; + esac + ;; XS/APItest|xs/apitest) # This is just for testing. Skip it unless we have dynamic loading. @@ -19386,7 +21180,7 @@ for xxx in $known_extensions ; do ;; IPC/SysV|ipc/sysv) : XXX Do we need a useipcsysv variable here - case "${d_msg}${d_sem}${d_shm}" in + case "${d_msg}${d_sem}${d_shm}" in *"${define}"*) avail_ext="$avail_ext $xxx" ;; esac ;; @@ -19399,6 +21193,39 @@ set X $avail_ext shift avail_ext="$*" +case "$onlyextensions" in +'') ;; +*) keepextensions='' + echo "You have requested that only certains extensions be included..." >&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 " $noextensions " in + *" $i "*) 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='' @@ -19443,11 +21270,11 @@ EOM previous) if test X"$dynamic_ext" != X"$avail_ext"; then $cat <&4 + echo "WARNING: The Perl you are building will be quite crippled." >& 4 + ;; +esac + : Remove libraries needed only for extensions : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary. : The exception is SunOS 4.x, which needs them. @@ -19736,18 +21580,28 @@ d_SCNfldbl='$d_SCNfldbl' d__fwalk='$d__fwalk' d_access='$d_access' d_accessx='$d_accessx' +d_aintl='$d_aintl' d_alarm='$d_alarm' d_archlib='$d_archlib' d_asctime_r='$d_asctime_r' d_atolf='$d_atolf' d_atoll='$d_atoll' -d_attribut='$d_attribut' +d_attribute_format='$d_attribute_format' +d_attribute_malloc='$d_attribute_malloc' +d_attribute_nonnull='$d_attribute_nonnull' +d_attribute_noreturn='$d_attribute_noreturn' +d_attribute_pure='$d_attribute_pure' +d_attribute_unused='$d_attribute_unused' +d_attribute_warn_unused_result='$d_attribute_warn_unused_result' d_bcmp='$d_bcmp' d_bcopy='$d_bcopy' d_bsd='$d_bsd' d_bsdgetpgrp='$d_bsdgetpgrp' d_bsdsetpgrp='$d_bsdsetpgrp' +d_builtin_choose_expr='$d_builtin_choose_expr' +d_builtin_expect='$d_builtin_expect' d_bzero='$d_bzero' +d_c99_variadic_macros='$d_c99_variadic_macros' d_casti32='$d_casti32' d_castneg='$d_castneg' d_charvspr='$d_charvspr' @@ -19755,18 +21609,23 @@ d_chown='$d_chown' d_chroot='$d_chroot' d_chsize='$d_chsize' d_class='$d_class' +d_clearenv='$d_clearenv' d_closedir='$d_closedir' d_cmsghdr_s='$d_cmsghdr_s' d_const='$d_const' +d_copysignl='$d_copysignl' +d_cplusplus='$d_cplusplus' d_crypt='$d_crypt' d_crypt_r='$d_crypt_r' d_csh='$d_csh' +d_ctermid='$d_ctermid' d_ctermid_r='$d_ctermid_r' d_ctime_r='$d_ctime_r' d_cuserid='$d_cuserid' d_dbl_dig='$d_dbl_dig' d_dbminitproto='$d_dbminitproto' d_difftime='$d_difftime' +d_dir_dd_fd='$d_dir_dd_fd' d_dirfd='$d_dirfd' d_dirnamlen='$d_dirnamlen' d_dlerror='$d_dlerror' @@ -19791,6 +21650,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' @@ -19821,6 +21681,7 @@ d_fstatvfs='$d_fstatvfs' d_fsync='$d_fsync' d_ftello='$d_ftello' d_ftime='$d_ftime' +d_futimes='$d_futimes' d_getcwd='$d_getcwd' d_getespwnam='$d_getespwnam' d_getfsstat='$d_getfsstat' @@ -19882,6 +21743,8 @@ d_gnulibc='$d_gnulibc' d_grpasswd='$d_grpasswd' d_hasmntopt='$d_hasmntopt' d_htonl='$d_htonl' +d_ilogbl='$d_ilogbl' +d_inc_version_list='$d_inc_version_list' d_index='$d_index' d_inetaton='$d_inetaton' d_int64_t='$d_int64_t' @@ -19893,8 +21756,10 @@ d_isnanl='$d_isnanl' d_killpg='$d_killpg' d_lchown='$d_lchown' d_ldbl_dig='$d_ldbl_dig' +d_libm_lib_version='$d_libm_lib_version' d_link='$d_link' d_localtime_r='$d_localtime_r' +d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset' d_locconv='$d_locconv' d_lockf='$d_lockf' d_longdbl='$d_longdbl' @@ -19902,6 +21767,8 @@ d_longlong='$d_longlong' d_lseekproto='$d_lseekproto' d_lstat='$d_lstat' d_madvise='$d_madvise' +d_malloc_good_size='$d_malloc_good_size' +d_malloc_size='$d_malloc_size' d_mblen='$d_mblen' d_mbstowcs='$d_mbstowcs' d_mbtowc='$d_mbtowc' @@ -19919,6 +21786,7 @@ d_mktime='$d_mktime' d_mmap='$d_mmap' d_modfl='$d_modfl' d_modfl_pow32_bug='$d_modfl_pow32_bug' +d_modflproto='$d_modflproto' d_mprotect='$d_mprotect' d_msg='$d_msg' d_msg_ctrunc='$d_msg_ctrunc' @@ -19937,6 +21805,7 @@ d_mymalloc='$d_mymalloc' d_nice='$d_nice' d_nl_langinfo='$d_nl_langinfo' d_nv_preserves_uv='$d_nv_preserves_uv' +d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero' d_off64_t='$d_off64_t' d_old_pthread_create_joinable='$d_old_pthread_create_joinable' d_oldpthreads='$d_oldpthreads' @@ -19949,8 +21818,11 @@ d_phostname='$d_phostname' d_pipe='$d_pipe' d_poll='$d_poll' d_portable='$d_portable' +d_printf_format_null='$d_printf_format_null' d_procselfexe='$d_procselfexe' +d_pseudofork='$d_pseudofork' d_pthread_atfork='$d_pthread_atfork' +d_pthread_attr_setscope='$d_pthread_attr_setscope' d_pthread_yield='$d_pthread_yield' d_pwage='$d_pwage' d_pwchange='$d_pwchange' @@ -19976,6 +21848,7 @@ d_safebcpy='$d_safebcpy' d_safemcpy='$d_safemcpy' d_sanemcmp='$d_sanemcmp' d_sbrkproto='$d_sbrkproto' +d_scalbnl='$d_scalbnl' d_sched_yield='$d_sched_yield' d_scm_rights='$d_scm_rights' d_seekdir='$d_seekdir' @@ -20027,14 +21900,18 @@ d_shmctl='$d_shmctl' d_shmdt='$d_shmdt' d_shmget='$d_shmget' d_sigaction='$d_sigaction' +d_signbit='$d_signbit' d_sigprocmask='$d_sigprocmask' d_sigsetjmp='$d_sigsetjmp' +d_sitearch='$d_sitearch' +d_snprintf='$d_snprintf' d_sockatmark='$d_sockatmark' d_sockatmarkproto='$d_sockatmarkproto' d_socket='$d_socket' d_socklen_t='$d_socklen_t' d_sockpair='$d_sockpair' d_socks5_init='$d_socks5_init' +d_sprintf_returns_strlen='$d_sprintf_returns_strlen' d_sqrtl='$d_sqrtl' d_srand48_r='$d_srand48_r' d_srandom_r='$d_srandom_r' @@ -20058,6 +21935,8 @@ d_strerrm='$d_strerrm' d_strerror='$d_strerror' d_strerror_r='$d_strerror_r' d_strftime='$d_strftime' +d_strlcat='$d_strlcat' +d_strlcpy='$d_strlcpy' d_strtod='$d_strtod' d_strtol='$d_strtol' d_strtold='$d_strtold' @@ -20093,18 +21972,21 @@ d_umask='$d_umask' d_uname='$d_uname' d_union_semun='$d_union_semun' d_unordered='$d_unordered' +d_unsetenv='$d_unsetenv' d_usleep='$d_usleep' d_usleepproto='$d_usleepproto' d_ustat='$d_ustat' d_vendorarch='$d_vendorarch' d_vendorbin='$d_vendorbin' d_vendorlib='$d_vendorlib' +d_vendorscript='$d_vendorscript' d_vfork='$d_vfork' d_void_closedir='$d_void_closedir' d_voidsig='$d_voidsig' d_voidtty='$d_voidtty' d_volatile='$d_volatile' d_vprintf='$d_vprintf' +d_vsnprintf='$d_vsnprintf' d_wait4='$d_wait4' d_waitpid='$d_waitpid' d_wcstombs='$d_wcstombs' @@ -20153,6 +22035,7 @@ from='$from' full_ar='$full_ar' full_csh='$full_csh' full_sed='$full_sed' +gccansipedantic='$gccansipedantic' gccosandvers='$gccosandvers' gccversion='$gccversion' getgrent_r_proto='$getgrent_r_proto' @@ -20191,6 +22074,10 @@ h_fcntl='$h_fcntl' h_sysfile='$h_sysfile' hint='$hint' hostcat='$hostcat' +html1dir='$html1dir' +html1direxp='$html1direxp' +html3dir='$html3dir' +html3direxp='$html3direxp' i16size='$i16size' i16type='$i16type' i32size='$i32size' @@ -20286,8 +22173,11 @@ inc_version_list='$inc_version_list' inc_version_list_init='$inc_version_list_init' incpath='$incpath' inews='$inews' +initialinstalllocation='$initialinstalllocation' installarchlib='$installarchlib' installbin='$installbin' +installhtml1dir='$installhtml1dir' +installhtml3dir='$installhtml3dir' installman1dir='$installman1dir' installman3dir='$installman3dir' installprefix='$installprefix' @@ -20296,12 +22186,22 @@ installprivlib='$installprivlib' installscript='$installscript' installsitearch='$installsitearch' installsitebin='$installsitebin' +installsitehtml1dir='$installsitehtml1dir' +installsitehtml3dir='$installsitehtml3dir' installsitelib='$installsitelib' +installsiteman1dir='$installsiteman1dir' +installsiteman3dir='$installsiteman3dir' +installsitescript='$installsitescript' installstyle='$installstyle' installusrbinperl='$installusrbinperl' installvendorarch='$installvendorarch' installvendorbin='$installvendorbin' +installvendorhtml1dir='$installvendorhtml1dir' +installvendorhtml3dir='$installvendorhtml3dir' installvendorlib='$installvendorlib' +installvendorman1dir='$installvendorman1dir' +installvendorman3dir='$installvendorman3dir' +installvendorscript='$installvendorscript' intsize='$intsize' issymlink='$issymlink' ivdformat='$ivdformat' @@ -20342,6 +22242,10 @@ lpr='$lpr' ls='$ls' lseeksize='$lseeksize' lseektype='$lseektype' +mad='$mad' +madlyh='$madlyh' +madlyobj='$madlyobj' +madlysrc='$madlysrc' mail='$mail' mailx='$mailx' make='$make' @@ -20356,6 +22260,7 @@ man3dir='$man3dir' man3direxp='$man3direxp' man3ext='$man3ext' mips_type='$mips_type' +mistrustnm='$mistrustnm' mkdir='$mkdir' mmaptype='$mmaptype' modetype='$modetype' @@ -20409,7 +22314,6 @@ pg='$pg' phostname='$phostname' pidtype='$pidtype' plibpth='$plibpth' -pm_apiversion='$pm_apiversion' pmake='$pmake' pr='$pr' prefix='$prefix' @@ -20480,11 +22384,21 @@ sitearch='$sitearch' sitearchexp='$sitearchexp' sitebin='$sitebin' sitebinexp='$sitebinexp' +sitehtml1dir='$sitehtml1dir' +sitehtml1direxp='$sitehtml1direxp' +sitehtml3dir='$sitehtml3dir' +sitehtml3direxp='$sitehtml3direxp' sitelib='$sitelib' sitelib_stem='$sitelib_stem' sitelibexp='$sitelibexp' +siteman1dir='$siteman1dir' +siteman1direxp='$siteman1direxp' +siteman3dir='$siteman3dir' +siteman3direxp='$siteman3direxp' siteprefix='$siteprefix' siteprefixexp='$siteprefixexp' +sitescript='$sitescript' +sitescriptexp='$sitescriptexp' sizesize='$sizesize' sizetype='$sizetype' sleep='$sleep' @@ -20550,9 +22464,11 @@ use64bitall='$use64bitall' use64bitint='$use64bitint' usecrosscompile='$usecrosscompile' usedl='$usedl' +usefaststdio='$usefaststdio' useithreads='$useithreads' uselargefiles='$uselargefiles' uselongdouble='$uselongdouble' +usemallocwrap='$usemallocwrap' usemorebits='$usemorebits' usemultiplicity='$usemultiplicity' usemymalloc='$usemymalloc' @@ -20561,8 +22477,10 @@ useopcode='$useopcode' useperlio='$useperlio' useposix='$useposix' usereentrant='$usereentrant' +userelocatableinc='$userelocatableinc' usesfio='$usesfio' useshrplib='$useshrplib' +usesitecustomize='$usesitecustomize' usesocks='$usesocks' usethreads='$usethreads' usevendorprefix='$usevendorprefix' @@ -20579,18 +22497,27 @@ vendorarch='$vendorarch' vendorarchexp='$vendorarchexp' vendorbin='$vendorbin' vendorbinexp='$vendorbinexp' +vendorhtml1dir='$vendorhtml1dir' +vendorhtml1direxp='$vendorhtml1direxp' +vendorhtml3dir='$vendorhtml3dir' +vendorhtml3direxp='$vendorhtml3direxp' vendorlib='$vendorlib' vendorlib_stem='$vendorlib_stem' vendorlibexp='$vendorlibexp' +vendorman1dir='$vendorman1dir' +vendorman1direxp='$vendorman1direxp' +vendorman3dir='$vendorman3dir' +vendorman3direxp='$vendorman3direxp' vendorprefix='$vendorprefix' vendorprefixexp='$vendorprefixexp' +vendorscript='$vendorscript' +vendorscriptexp='$vendorscriptexp' version='$version' version_patchlevel_string='$version_patchlevel_string' versiononly='$versiononly' vi='$vi' voidflags='$voidflags' xlibpth='$xlibpth' -xs_apiversion='$xs_apiversion' yacc='$yacc' yaccflags='$yaccflags' zcat='$zcat'