# 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 Tue May 31 08:06:05 CEST 2005 [metaconfig 3.0 PL70]
+# Generated on Tue Jan 1 21:34:35 CET 2008 [metaconfig 3.0 PL70]
# (with additional metaconfig patches by perlbug@perl.org)
cat >c1$$ <<EOF
exit 1
fi
+if test ! -c /dev/null ; then
+ cat >&4 <<EOF
+***
+*** I'm sorry, but /dev/null appears to be a file rather than a device.
+*** Please consult your operating sytem's notes for making a device
+*** in /dev.
+*** Cannot continue, aborting.
+***
+EOF
+ exit 1
+fi
+
: compute my invocation name
me=$0
case "$0" in
esac
;;
esac
+test -x "${newsh}" || unset newsh
: if needed set CDPATH to a harmless value that is not chatty
: avoid bash 2.02 problems with empty CDPATH.
lib_ext=''
obj_ext=''
path_sep=''
+rm_try=''
afs=''
afsroot=''
alignbytes=''
baserev=''
bin=''
binexp=''
+initialinstalllocation=''
installbin=''
+userelocatableinc=''
byteorder=''
cc=''
ccflags=''
cf_email=''
cf_by=''
cf_time=''
-charsize=''
contains=''
cpp_stuff=''
cpplast=''
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=''
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=''
d_dbl_dig=''
d_dbminitproto=''
d_difftime=''
+d_dir_dd_fd=''
d_dirfd=''
d_dlerror=''
d_dlopen=''
d_ftello=''
d_ftime=''
d_gettimeod=''
+d_futimes=''
d_Gconvert=''
d_getcwd=''
d_getespwnam=''
d_libm_lib_version=''
d_link=''
d_localtime_r=''
+d_localtime_r_needs_tzset=''
localtime_r_proto=''
d_locconv=''
d_lockf=''
d_lseekproto=''
d_lstat=''
d_madvise=''
+d_malloc_good_size=''
+d_malloc_size=''
d_mblen=''
d_mbstowcs=''
d_mbtowc=''
d_shmdt=''
d_shmget=''
d_sigaction=''
+d_signbit=''
d_sigprocmask=''
d_sigsetjmp=''
usesitecustomize=''
+d_snprintf=''
+d_vsnprintf=''
d_sockatmark=''
d_sockatmarkproto=''
d_msg_ctrunc=''
socketlib=''
d_socklen_t=''
d_socks5_init=''
+d_sprintf_returns_strlen=''
d_sqrtl=''
d_srand48_r=''
srand48_r_proto=''
d_semctl_semun=''
d_union_semun=''
d_unordered=''
+d_unsetenv=''
d_usleep=''
d_usleepproto=''
d_ustat=''
+d_pseudofork=''
d_vfork=''
usevfork=''
d_voidsig=''
html3direxp=''
installhtml3dir=''
i_arpainet=''
+i_assert=''
i_crypt=''
db_hashtype=''
db_prefixtype=''
i_varargs=''
i_varhdr=''
i_vfork=''
+d_inc_version_list=''
inc_version_list=''
inc_version_list_init=''
installprefix=''
sSCNfldbl=''
lseeksize=''
lseektype=''
+mad=''
+madlyh=''
+madlyobj=''
+madlysrc=''
make_set_make=''
d_mymalloc=''
freetype=''
perladmin=''
perlpath=''
d_nv_preserves_uv=''
+d_nv_zero_is_allbits_zero=''
i16size=''
i16type=''
i32size=''
sig_num=''
sig_num_init=''
sig_size=''
+d_sitearch=''
installsitearch=''
sitearch=''
sitearchexp=''
runnm=''
usenm=''
useperlio=''
-userelocatableinc=''
usesocks=''
d_oldpthreads=''
use5005threads=''
fi
i_whoami=''
-ccname=''
-ccversion=''
-perllibs=''
-: set useposix=false in your hint file to disable the POSIX extension.
-useposix=true
-: set useopcode=false in your hint file to disable the Opcode extension.
-useopcode=true
: Trailing extension. Override this in a hint file, if needed.
: Extra object files, if any, needed on this platform.
archobjs=''
archname=''
-: Possible local include directories to search.
-: Set locincpth to "" in a hint file to defeat local include searches.
-locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
-locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
-:
-: no include file wanted by default
-inclwanted=''
-
groupstype=''
libnames=''
: change the next line if compiling for Xenix/286 on Xenix/386
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
siteman1dir=''
siteman3dir=''
sitescript=''
+: set usethreads on the Configure command line to enable threads.
+usereentrant='undef'
+: full support for void wanted by default
+defvoidused=15
+
+: Possible local include directories to search.
+: Set locincpth to "" in a hint file to defeat local include searches.
+locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
+locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
+:
+: no include file wanted by default
+inclwanted=''
+
+: Enable -DEBUGGING and -DDEBUGGING from the command line
+EBUGGING=''
+DEBUGGING=old
+
+ccname=''
+ccversion=''
+perllibs=''
+: set useposix=false in your hint file to disable the POSIX extension.
+useposix=true
+: set useopcode=false in your hint file to disable the Opcode extension.
+useopcode=true
archname64=''
ccflags_uselargefiles=''
ldflags_uselargefiles=''
libswanted_uselargefiles=''
: set usemultiplicity on the Configure command line to enable multiplicity.
: set usesocks on the Configure command line to enable socks.
-: set usethreads on the Configure command line to enable threads.
-usereentrant='undef'
-: full support for void wanted by default
-defvoidused=15
-
: List of libraries we want.
: If anyone needs extra -lxxx, put those in a hint file.
libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
fi
cd UU
shift;;
+ --help|\
-h) shift; error=true;;
-r) shift; reuseval=true;;
-s) shift; silent=true; realsilent=true;;
-D : define symbol to have some value:
-D symbol symbol gets the value 'define'
-D symbol=value symbol gets the value 'value'
+ common used examples (see INSTALL for more info):
+ -Duse64bitint use 64bit integers
+ -Duse64bitall use 64bit integers and pointers
+ -Dusethreads use thread support
+ -Dinc_version_list=none do not include older perl trees in @INC
+ -DEBUGGING=none DEBUGGING options
+ -Dcc=gcc choose your compiler
+ -Dprefix=/opt/perl5 choose your destination
-E : stop at the end of questions, after having produced config.sh.
-K : do not use unless you know what you are doing.
-O : let -D and -U override definitions from loaded configuration file.
-U : undefine symbol:
-U symbol symbol gets the value 'undef'
-U symbol= symbol gets completely empty
+ e.g.: -Uversiononly
-A : manipulate symbol after the platform specific hints have been applied:
- -A symbol=value append " "value to symbol
- -A append:symbol=value append value to symbol
- -A define:symbol=value define symbol to have value
- -A clear:symbol define symbol to be ''
- -A define:symbol define symbol to be 'define'
- -A eval:symbol=value define symbol to be eval of value
- -A prepend:symbol=value prepend value to symbol
- -A undef:symbol define symbol to be 'undef'
- -A undef:symbol= define symbol to be ''
+ -A append:symbol=value append value to symbol
+ -A symbol=value like append:, but with a separating space
+ -A define:symbol=value define symbol to have value
+ -A clear:symbol define symbol to be ''
+ -A define:symbol define symbol to be 'define'
+ -A eval:symbol=value define symbol to be eval of value
+ -A prepend:symbol=value prepend value to symbol
+ -A undef:symbol define symbol to be 'undef'
+ -A undef:symbol= define symbol to be ''
+ e.g.: -A prepend:libswanted='cl pthread '
+ -A ccflags=-DSOME_MACRO
-V : print version number and exit (with a zero status).
EOM
exit 1
;;
esac
+# This question was auctioned at YAPC::Europe-2007 in Vienna
+# I never promised you could answer it. I only auctioned the question.
+cat <<FOO
+The following message is sponsored by
+
+ Dresden.pm<--The stars should be here.
+
+Dear Perl user, system administrator or package
+maintainer, the Perl community sends greetings to
+you. Do you (emblematical) greet back [Y/n]? n
+
+FOO
+
cat <<EOS >trygcc
$startsh
EOS
case "$cc" in
*gcc*) trygcc=no ;;
esac
- case "`$cc -v -c try.c 2>&1`" in
- *gcc*) trygcc=no ;;
- esac
+ # Skip this test because it gives a false match on output like:
+ # ./trygcc: line 23: cc: command not found
+ # case "`$cc -v -c try.c 2>&1`" in
+ # *gcc*) trygcc=no ;;
+ # esac
if $test X"$trygcc" = Xyes; then
if gcc -o try -c try.c; then
echo " "
echo "You seem to have a working gcc, though." >&4
- rp="Would you like to use it?"
- dflt=y
+ # Switching compilers may undo the work of hints files.
+ # The most common problem is -D_REENTRANT for threads.
+ # This heuristic catches that case, but gets false positives
+ # if -Dusethreads was not actually specified. Better to
+ # bail out here with a useful message than fail
+ # mysteriously later. Should we perhaps just try to
+ # re-invoke Configure -Dcc=gcc config_args ?
+ if $test -f usethreads.cbu; then
+ $cat >&4 <<EOM
+
+*** However, any setting of the C compiler flags (e.g. for thread support)
+*** will be lost. It may be necessary for you to restart Configure and
+*** add -Dcc=gcc to your Configure command line.
+
+EOM
+ rp="Would you like to go ahead and try gcc anyway?"
+ dflt=n
+ else
+ rp="Would you like to use it?"
+ dflt=y
+ fi
if $test -f myread; then
. ./myread
else
fi
case "$ans" in
[yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
- if $test -f usethreads.cbu; then
- $cat >&4 <<EOM
-
-*** However, any setting of the C compiler flags (e.g. for thread support)
-*** has been lost. It may be necessary to pass -Dcc=gcc to Configure
-*** (together with e.g. -Dusethreads).
-
-EOM
- fi;;
esac
fi
fi
$test -z "$myuname" && myuname=`hostname 2>/dev/null`
# tr '[A-Z]' '[a-z]' would not work in EBCDIC
# because the A-Z/a-z are not consecutive.
-myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
+myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e "s,['/],,g" | \
./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
newmyuname="$myuname"
dflt=n
domainos) osname=apollo
osvers="$3"
;;
- dgux) osname=dgux
+ dgux) osname=dgux
+ osvers="$3"
+ ;;
+ dragonfly) osname=dragonfly
osvers="$3"
;;
dynixptx*) osname=dynixptx
osvers=`echo "$4"|sed 's/^v//'`
;;
- freebsd) osname=freebsd
+ freebsd) osname=freebsd
osvers="$3" ;;
genix) osname=genix ;;
gnu) osname=gnu
osvers="$3" ;;
- hp*) osname=hpux
+ hp*) osname=hpux
osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
;;
irix*) osname=irix
*freebsd*) ;;
svr*)
: svr4.x or possibly later
- case "svr$3" in
+ case "svr$3" in
${osname}*)
osname=svr$3
osvers=$4
osvers="$5"
fi
fi
-
+
case "$targetarch" in
'') ;;
*) hostarch=$osname
$cat <<EOM
You may give one or more space-separated answers, or "none" if appropriate.
-A well-behaved OS will have no hints, so answering "none" or just "Policy"
-is a good thing. DO NOT give a wrong version or a wrong OS.
+If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
+previous run of Configure, you may specify it as well as or instead of
+OS-specific hints. If hints are provided for your OS, you should use them:
+although Perl can probably be built without hints on many platforms, using
+hints often improve performance and may enable features that Configure can't
+set up on its own. If there are no hints that match your OS, specify "none";
+DO NOT give a wrong version or a wrong OS.
EOM
esac ;;
esac
-: set up the script used to warn in case of inconsistency
-cat <<EOS >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 <<EOSS
+$startsh
+: expand filename
+case "\$1" in
+ ~/*|~)
+ echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
+ ;;
+ ~*)
+ if $test -f /bin/csh; then
+ /bin/csh -f -c "glob \$1"
+ failed=\$?
+ echo ""
+ exit \$failed
+ else
+ name=\`$expr x\$1 : '..\([^/]*\)'\`
+ dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
+ if $test ! -d "\$dir"; then
+ me=\`basename \$0\`
+ echo "\$me: can't locate home directory for: \$name" >&2
+ exit 1
+ fi
+ case "\$1" in
+ */*)
+ echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
+ ;;
+ *)
+ echo \$dir
+ ;;
+ esac
+ fi
+ ;;
+*)
+ echo \$1
+ ;;
esac
-cat <<EOM
-
-Perl can be built to use the SOCKS proxy protocol library. To do so,
-Configure must be run with -Dusesocks. If you use SOCKS you also need
-to use the PerlIO abstraction layer, this will be implicitly selected.
+EOSS
+chmod +x filexp
+$eunicefix filexp
-If this doesn't make any sense to you, just accept the default '$dflt'.
-EOM
-rp='Build Perl for SOCKS?'
-. ./myread
-case "$ans" in
-y|Y) val="$define" ;;
-*) val="$undef" ;;
+: now set up to get a file name
+cat <<EOS >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 <<EOM
-
-Previous version of $package used the standard IO mechanisms as
-defined in <stdio.h>. 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 <<EOM
+case "$fn" in
+*f*) type='File';;
+*d*) type='Directory';;
+*l*) type='Locate';;
+esac
-You are using the SOCKS proxy protocol library which means that you
-should also use the PerlIO layer. You may be headed for trouble.
+what="$type"
+case "$what" in
+Locate) what='File';;
+esac
-EOM
- ;;
+case "$exp_file" in
+'')
+ case "$d_portable" in
+ "$define") ;;
+ *) exp_file=true;;
esac
;;
esac
-
-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' ;;
+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
;;
- *) dflt='n';;
- esac
- ;;
-esac
-cat <<EOM
+ *)
+ 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
-Perl can be built to take advantage of threads on some systems.
-To do so, Configure can be run with -Dusethreads.
+ case "$skip" in
+ true) type='';
+ esac
-Note that Perl built with threading support runs slightly slower
-and uses more memory than plain Perl. The current implementation
-is believed to be stable, but it is fairly new, and so should be
-treated with caution.
+ case "$type" in
+ '') ;;
+ *)
+ if test "$fastread" = yes; then
+ dflt=y
+ else
+ dflt=n
+ fi
+ rp="$what $value doesn't exist. Use that name anyway?"
+ . UU/myread
+ dflt=''
+ case "$ans" in
+ y*) type='';;
+ *) echo " ";;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+done
+cd UU
+ans="$value"
+rp="$orig_rp"
+dflt="$orig_dflt"
+rm -f getfile.ok
+test "X$gfpthkeep" != Xy && gfpth=""
+EOSC
-If this doesn't make any sense to you, just accept the default '$dflt'.
-EOM
-rp='Build a threading Perl?'
-. ./myread
-case "$ans" in
-y|Y) val="$define" ;;
-*) val="$undef" ;;
+: determine root of directory hierarchy where package will be installed.
+case "$prefix" in
+'')
+ dflt=`./loc . /usr/local /usr/local /local /opt /usr`
+ ;;
+*?/)
+ dflt=`echo "$prefix" | sed 's/.$//'`
+ ;;
+*)
+ dflt="$prefix"
+ ;;
esac
-set usethreads
-eval $setvar
-
-case "$usethreads" in
-$define)
- $cat <<EOM
+$cat <<EOM
-Since release 5.6, Perl has had two different threading implementations,
-the newer interpreter-based version (ithreads) with one interpreter per
-thread, and the older 5.005 version (5005threads).
-The 5005threads version is effectively unmaintained and will probably be
-removed in Perl 5.10, so there should be no need to build a Perl using it
-unless needed for backwards compatibility with some existing 5.005threads
-code.
+By default, $package will be installed in $dflt/bin, manual pages
+under $dflt/man, etc..., i.e. with $dflt as prefix for all
+installation directories. Typically this is something like /usr/local.
+If you wish to have binaries under /usr/bin but other parts of the
+installation under /usr/local, that's ok: you will be prompted
+separately for each of the installation directories, the prefix being
+only used to set the defaults.
EOM
- : Default to ithreads unless overridden on command line or with
- : old config.sh
- dflt='y'
- case "$use5005threads" in
- $define|true|[yY]*) dflt='n';;
- esac
- case "$useithreads" in
- $undef|false|[nN]*) dflt='n';;
- esac
- rp='Use the newer interpreter-based ithreads?'
- . ./myread
+fn=d~
+rp='Installation prefix to use?'
+. ./getfile
+oldprefix=''
+case "$prefix" in
+'') ;;
+*)
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" ;;
+ "$prefix") ;;
+ *) oldprefix="$prefix";;
esac
- set use5005threads
- eval $setvar
- ;;
-*)
- useithreads="$undef"
- use5005threads="$undef"
;;
esac
+prefix="$ans"
+prefixexp="$ansexp"
-case "$useithreads$use5005threads" in
-"$define$define")
- $cat >&4 <<EOM
+case "$afsroot" in
+'') afsroot=/afs ;;
+*) afsroot=$afsroot ;;
+esac
-You cannot have both the ithreads and the 5.005 threads enabled
-at the same time. Disabling the 5.005 threads since they are
-much less stable than the ithreads.
-
-EOM
- use5005threads="$undef"
+: is AFS running?
+echo " "
+case "$afs" in
+$define|true) afs=true ;;
+$undef|false) afs=false ;;
+*) if test -d $afsroot; then
+ afs=true
+ else
+ afs=false
+ fi
;;
esac
-
-if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
- cat >&4 <<EOF
-***
-*** To build with ithreads you must also use the PerlIO layer.
-*** Cannot continue, aborting.
-***
-EOF
- exit 1
+if $afs; then
+ echo "AFS may be running... I'll be extra cautious then..." >&4
+else
+ echo "AFS does not seem to be running..." >&4
fi
-case "$d_oldpthreads" in
-'') : Configure tests would be welcome here. For now, assume undef.
- val="$undef" ;;
-*) val="$d_oldpthreads" ;;
-esac
-set d_oldpthreads
-eval $setvar
+: determine installation prefix for where package is to be installed.
+if $afs; then
+$cat <<EOM
+Since you are running AFS, I need to distinguish the directory in which
+files will reside from the directory in which they are installed (and from
+which they are presumably copied to the former directory by occult means).
-: Look for a hint-file generated 'call-back-unit'. If the
-: user has specified that a threading perl is to be built,
-: we may need to set or change some other defaults.
-if $test -f usethreads.cbu; then
- echo "Your platform has some specific hints regarding threaded builds, using them..."
- . ./usethreads.cbu
+EOM
+ case "$installprefix" in
+ '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
+ *) dflt="$installprefix";;
+ esac
else
- case "$usethreads" in
- "$define"|true|[yY]*)
- $cat <<EOM
-(Your platform does not have any specific hints for threaded builds.
- Assuming POSIX threads, then.)
+$cat <<EOM
+
+In some special cases, particularly when building $package for distribution,
+it is convenient to distinguish the directory in which files should be
+installed from the directory ($prefix) in which they will
+eventually reside. For most users, these two directories are the same.
+
EOM
- ;;
- esac
+ case "$installprefix" in
+ '') dflt=$prefix ;;
+ *) dflt=$installprefix;;
+ esac
+fi
+fn=d~
+rp='What installation prefix should I use for installing files?'
+. ./getfile
+installprefix="$ans"
+installprefixexp="$ansexp"
+
+: Perform the prefixexp/installprefixexp correction if necessary
+cat <<EOS >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 <<EOS >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 <<EOS >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 <<EOM
-Perl can be built so that multiple Perl interpreters can coexist
-within the same Perl executable.
+Perl can be built to use the SOCKS proxy protocol library. To do so,
+Configure must be run with -Dusesocks. If you use SOCKS you also need
+to use the PerlIO abstraction layer, this will be implicitly selected.
+
+If this doesn't make any sense to you, just accept the default '$dflt'.
EOM
+rp='Build Perl for SOCKS?'
+. ./myread
+case "$ans" in
+y|Y) val="$define" ;;
+*) val="$undef" ;;
+esac
+set usesocks
+eval $setvar
-case "$useithreads" in
-$define)
- cat <<EOM
-This multiple interpreter support is required for interpreter-based threads.
+case "$usesocks" in
+$define|true|[yY]*) useperlio="$define";;
+esac
+
+case "$useperlio" in
+$define|true|[yY]*|'') dflt='y';;
+*) dflt='n';;
+esac
+cat <<EOM
+
+Previous version of $package used the standard IO mechanisms as
+defined in <stdio.h>. 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 <<EOM
-case "$usemorebits" in
-"$define"|true|[yY]*)
- use64bitint="$define"
- uselongdouble="$define"
- usemorebits="$define"
- ;;
-*) usemorebits="$undef"
+You are using the SOCKS proxy protocol library which means that you
+should also use the PerlIO layer. You may be headed for trouble.
+
+EOM
+ ;;
+ esac
;;
esac
-: make some quick guesses about what we are up against
+
+: get the patchlevel
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
+echo "Getting the current patchlevel..." >&4
+if $test -r $rsrc/patchlevel.h;then
+ revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
+ patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
+ subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
+ api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
+ api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
+ api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
+ perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'`
else
- echo "Looks kind of like a Version 7 system, but we'll see..."
- echo exit 0 >v7
+ revision=0
+ patchlevel=0
+ subversion=0
+ api_revision=0
+ api_version=0
+ api_subversion=0
+ perl_patchlevel=0
+ $echo "(You do not have patchlevel.h. Eek.)"
fi
-case "$eunicefix" in
-*unixtovms*)
- $cat <<'EOI'
+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
+
+$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
+
+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
+cat <<EOM
+
+Perl can be built to take advantage of threads on some systems.
+To do so, Configure can be run with -Dusethreads.
+
+Note that Perl built with threading support runs slightly slower
+and uses more memory than plain Perl. The current implementation
+is believed to be stable, but it is fairly new, and so should be
+treated with caution.
+
+If this doesn't make any sense to you, just accept the default '$dflt'.
+EOM
+rp='Build a threading Perl?'
+. ./myread
+case "$ans" in
+y|Y) val="$define" ;;
+*) val="$undef" ;;
+esac
+set usethreads
+eval $setvar
+
+if $test $patchlevel -lt 9; then
+ case "$usethreads" in
+ $define)
+ $cat <<EOM
+
+Since release 5.6, Perl has had two different threading implementations,
+the newer interpreter-based version (ithreads) with one interpreter per
+thread, and the older 5.005 version (5005threads).
+The 5005threads version is effectively unmaintained and will probably be
+removed in Perl 5.10, so there should be no need to build a Perl using it
+unless needed for backwards compatibility with some existing 5.005threads
+code.
+
+EOM
+ : Default to ithreads unless overridden on command line or with
+ : old config.sh
+ dflt='y'
+ case "$use5005threads" in
+ $define|true|[yY]*) dflt='n';;
+ esac
+ case "$useithreads" in
+ $undef|false|[nN]*) dflt='n';;
+ esac
+ 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
+
+ case "$useithreads$use5005threads" in
+ "$define$define")
+ $cat >&4 <<EOM
+
+You cannot have both the ithreads and the 5.005 threads enabled
+at the same time. Disabling the 5.005 threads since they are
+much less stable than the ithreads.
+
+EOM
+ use5005threads="$undef"
+ ;;
+ esac
+
+else
+: perl-5.9.x and later
+
+ if test X"$usethreads" = "X$define"; then
+ case "$use5005threads" in
+ $define|true|[yY]*)
+ $cat >&4 <<EOM
+
+5.005 threads has been removed for 5.10. Perl will be built using ithreads.
+
+EOM
+ ;;
+ esac
+ fi
+
+ use5005threads="$undef"
+ useithreads="$usethreads"
+fi
+
+if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
+ cat >&4 <<EOF
+***
+*** To build with ithreads you must also use the PerlIO layer.
+*** Cannot continue, aborting.
+***
+EOF
+ exit 1
+fi
+
+case "$d_oldpthreads" in
+'') : Configure tests would be welcome here. For now, assume undef.
+ val="$undef" ;;
+*) val="$d_oldpthreads" ;;
+esac
+set d_oldpthreads
+eval $setvar
+
+
+: Look for a hint-file generated 'call-back-unit'. If the
+: user has specified that a threading perl is to be built,
+: we may need to set or change some other defaults.
+if $test -f usethreads.cbu; then
+ echo "Your platform has some specific hints regarding threaded builds, using them..."
+ . ./usethreads.cbu
+else
+ case "$usethreads" in
+ "$define"|true|[yY]*)
+ $cat <<EOM
+(Your platform does not have any specific hints for threaded builds.
+ Assuming POSIX threads, then.)
+EOM
+ ;;
+ esac
+fi
+
+cat <<EOM
+
+Perl can be built so that multiple Perl interpreters can coexist
+within the same Perl executable.
+EOM
+
+case "$useithreads" in
+$define)
+ cat <<EOM
+This multiple interpreter support is required for interpreter-based threads.
+EOM
+ 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
+ ;;
+esac
+set usemultiplicity
+eval $setvar
+
+
+case "$usemorebits" in
+"$define"|true|[yY]*)
+ use64bitint="$define"
+ uselongdouble="$define"
+ usemorebits="$define"
+ ;;
+*) usemorebits="$undef"
+ ;;
+esac
+
+: 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
. ./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
-
-echo " "
-echo "Checking for GNU cc in disguise and/or its version number..." >&4
-$cat >try.c <<EOM
-#include <stdio.h>
-int main() {
-#ifdef __GNUC__
-#ifdef __VERSION__
- printf("%s\n", __VERSION__);
-#else
- printf("%s\n", "1");
-#endif
-#endif
- return(0);
-}
-EOM
-if $cc -o try $ccflags $ldflags try.c; then
- gccversion=`$run ./try`
- case "$gccversion" in
- '') echo "You are not using GNU cc." ;;
- *) echo "You are using GNU cc $gccversion."
- ccname=gcc
- ;;
- esac
-else
- echo " "
- echo "*** WHOA THERE!!! ***" >&4
- echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
- case "$knowitall" in
- '')
- echo " You'd better start hunting for one and let me know about it." >&4
- exit 1
- ;;
- esac
-fi
-$rm -f try try.*
-case "$gccversion" in
-1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
-esac
-case "$gccversion" in
-'') gccosandvers='' ;;
-*) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
- gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
- gccshortvers=''
- case "$gccosandvers" in
- $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
- $osname$osvers) ;; # looking good
- $osname*) cat <<EOM >&4
-
-*** WHOA THERE!!! ***
-
- 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
-
-: decide how portable to be. Allow command line overrides.
-case "$d_portable" in
-"$undef") ;;
-*) d_portable="$define" ;;
-esac
-
-: set up shell script to do ~ expansion
-cat >filexp <<EOSS
-$startsh
-: expand filename
-case "\$1" in
- ~/*|~)
- echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
- ;;
- ~*)
- if $test -f /bin/csh; then
- /bin/csh -f -c "glob \$1"
- failed=\$?
- echo ""
- exit \$failed
- else
- name=\`$expr x\$1 : '..\([^/]*\)'\`
- dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
- if $test ! -d "\$dir"; then
- me=\`basename \$0\`
- echo "\$me: can't locate home directory for: \$name" >&2
- exit 1
- fi
- case "\$1" in
- */*)
- echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
- ;;
- *)
- echo \$dir
- ;;
- esac
- fi
- ;;
-*)
- echo \$1
- ;;
-esac
-EOSS
-chmod +x filexp
-$eunicefix filexp
-
-: now set up to get a file name
-cat <<EOS >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/(.*)//'`
- ;;
-esac
-
-case "$fn" in
-*:*)
- loc_file=`expr $fn : '.*:\(.*\)'`
- fn=`expr $fn : '\(.*\):.*'`
- ;;
-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;;
-esac
-
-case "$fn" in
-*f*) type='File';;
-*d*) type='Directory';;
-*l*) type='Locate';;
-esac
-
-what="$type"
-case "$what" in
-Locate) what='File';;
-esac
-
-case "$exp_file" in
-'')
- case "$d_portable" in
- "$define") ;;
- *) exp_file=true;;
- esac
- ;;
-esac
-
-cd ..
-while test "$type"; do
- redo=''
- rp="$orig_rp"
- dflt="$orig_dflt"
- case "$tilde" in
- true) rp="$rp (~name ok)";;
- esac
- . UU/myread
- if test -f UU/getfile.ok && \
- $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
- then
- value="$ans"
- ansexp="$ans"
- break
- fi
- case "$ans" in
- none)
- value=''
- ansexp=''
- case "$none_ok" in
- true) type='';;
- esac
- ;;
- *)
- case "$tilde" in
- '') value="$ans"
- ansexp="$ans";;
- *)
- value=`UU/filexp $ans`
- case $? in
- 0)
- if test "$ans" != "$value"; then
- echo "(That expands to $value on this system.)"
- fi
- ;;
- *) value="$ans";;
- esac
- ansexp="$value"
- case "$exp_file" in
- '') value="$ans";;
- esac
- ;;
- esac
- case "$fullpath" in
- true)
- case "$ansexp" in
- /*) value="$ansexp" ;;
- [a-zA-Z]:/*) value="$ansexp" ;;
- *)
- redo=true
- case "$already" in
- true)
- echo "I shall only accept a full path name, as in /bin/ls." >&4
- echo "Use a ! shell escape if you wish to check pathnames." >&4
- ;;
- *)
- echo "Please give a full path name, starting with slash." >&4
- case "$tilde" in
- true)
- echo "Note that using ~name is ok provided it expands well." >&4
- already=true
- ;;
- esac
- esac
- ;;
- esac
- ;;
- esac
- case "$redo" in
- '')
- case "$type" in
- File)
- for fp in $gfpth; do
- if test "X$fp" = X.; then
- pf="$ansexp"
- else
- pf="$fp/$ansexp"
- fi
- if test -f "$pf"; then
- type=''
- elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
- then
- echo "($value is not a plain file, but that's ok.)"
- type=''
- fi
- if test X"$type" = X; then
- value="$pf"
- break
- fi
- done
- ;;
- Directory)
- for fp in $gfpth; do
- if test "X$fp" = X.; then
- dir="$ans"
- direxp="$ansexp"
- else
- dir="$fp/$ansexp"
- direxp="$fp/$ansexp"
- fi
- if test -d "$direxp"; then
- type=''
- value="$dir"
- break
- fi
- done
- ;;
- Locate)
- if test -d "$ansexp"; then
- echo "(Looking for $loc_file in directory $value.)"
- value="$value/$loc_file"
- ansexp="$ansexp/$loc_file"
- fi
- if test -f "$ansexp"; then
- type=''
- fi
- case "$nopath_ok" in
- true) case "$value" in
- */*) ;;
- *) echo "Assuming $value will be in people's path."
- type=''
- ;;
- esac
- ;;
- esac
- ;;
- esac
-
- case "$skip" in
- true) type='';
- esac
+: other defaults.
+if $test -f cc.cbu; then
+ . ./cc.cbu
+fi
+. ./checkcc
- 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
+echo " "
+echo "Checking for GNU cc in disguise and/or its version number..." >&4
+$cat >try.c <<EOM
+#include <stdio.h>
+int main() {
+#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
+#ifdef __VERSION__
+ printf("%s\n", __VERSION__);
+#else
+ printf("%s\n", "1");
+#endif
+#endif
+ return(0);
+}
+EOM
+if $cc -o try $ccflags $ldflags try.c; then
+ gccversion=`$run ./try`
+ case "$gccversion" in
+ '') echo "You are not using GNU cc." ;;
+ *) echo "You are using GNU cc $gccversion."
+ ccname=gcc
+ ;;
+ esac
+else
+ echo " "
+ echo "*** WHOA THERE!!! ***" >&4
+ echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
+ case "$knowitall" in
+ '')
+ echo " You'd better start hunting for one and let me know about it." >&4
+ exit 1
;;
esac
-done
-cd UU
-ans="$value"
-rp="$orig_rp"
-dflt="$orig_dflt"
-rm -f getfile.ok
-test "X$gfpthkeep" != Xy && gfpth=""
-EOSC
+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 <<EOM >&4
+
+*** WHOA THERE!!! ***
+
+ 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 " "
obj_ext=$_o
path_sep=$p_
+rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
+
: Which makefile gets called first. This is used by make depend.
case "$firstmakefile" in
'') firstmakefile='makefile';;
'none') optimize=" ";;
esac
+: Check what DEBUGGING is required from the command line
+: -DEBUGGING or -DDEBUGGING or
+: -DEBUGGING=both = -g + -DDEBUGGING
+: -DEBUGGING=-g or -Doptimize=-g = -g
+: -DEBUGGING=none or -UDEBUGGING =
+: -DEBUGGING=old or -DEBUGGING=default = ? $optimize
+case "$EBUGGING" in
+'') ;;
+*) DEBUGGING=$EBUGGING ;;
+esac
+
+case "$DEBUGGING" in
+-g|both|$define)
+ case "$optimize" in
+ *-g*) ;;
+ *) optimize="$optimize -g" ;;
+ esac ;;
+none|$undef)
+ case "$optimize" in
+ *-g*) set `echo "X $optimize " | sed 's/ -g / /'`
+ shift
+ optimize="$*"
+ ;;
+ esac ;;
+esac
+
dflt=''
+case "$DEBUGGING" in
+both|$define) dflt='-DDEBUGGING'
+esac
+
+: argument order is deliberate, as the flag will start with - which set could
+: think is an option
+checkccflag='check=$1; flag=$2; callback=$3;
+echo " ";
+echo "Checking if your compiler accepts $flag" 2>&1;
+echo "int main(void) { return 0; }" > gcctest.c;
+if $cc -O2 $flag -o gcctest gcctest.c 2>gcctest.out && ./gcctest; then
+ echo "Yes, it does." 2>&1;
+ if $test -s gcctest.out ; then
+ echo "But your platform does not like it:";
+ cat gcctest.out;
+ else
+ case "$ccflags" in
+ *$check*)
+ echo "Leaving current flags $ccflags alone." 2>&1
+ ;;
+ *) dflt="$dflt $flag";
+ eval $callback
+ ;;
+ esac
+ fi
+else
+ echo "Nope, it does not, but that is ok." 2>&1;
+fi
+'
+
: We will not override a previous value, but we might want to
: augment a hint file
case "$hint" in
default|recommended)
case "$gccversion" in
- 1*) dflt='-fpcc-struct-return' ;;
+ 1*) dflt="$dflt -fpcc-struct-return" ;;
esac
- case "$optimize" in
- *-g*) dflt="$dflt -DDEBUGGING";;
+ case "$optimize:$DEBUGGING" in
+ *-g*:old) dflt="$dflt -DDEBUGGING";;
esac
case "$gccversion" in
- 2*) if test -d /etc/conf/kconfig.d &&
+ 2*) if $test -d /etc/conf/kconfig.d &&
$contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
then
# Interactive Systems (ISC) POSIX mode.
case "$gccversion" in
1*) ;;
2.[0-8]*) ;;
- ?*) echo " "
- echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
- echo 'int main(void) { return 0; }' > gcctest.c
- if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
- echo "Yes, it does." 2>&1
- case "$ccflags" in
- *strict-aliasing*)
- echo "Leaving current flags $ccflags alone." 2>&1
- ;;
- *) dflt="$dflt -fno-strict-aliasing" ;;
- esac
- else
- echo "Nope, it doesn't, but that's ok." 2>&1
- fi
+ ?*) set strict-aliasing -fno-strict-aliasing
+ eval $checkccflag
;;
esac
# For gcc, adding -pipe speeds up compilations for some, but apparently
# some assemblers can't read from stdin. (It also slows down compilations
# in other cases, but those are apparently rarer these days.) AD 5/2004.
case "$gccversion" in
- ?*) echo " "
- echo "Checking if your compiler accepts -pipe" 2>&1
- echo 'int main(void) { return 0; }' > gcctest.c
- if $cc -pipe -o gcctest gcctest.c; then
- echo "Yes, it does." 2>&1
- case "$ccflags" in
- *-pipe*)
- echo "Leaving current flags $ccflags alone." 2>&1
- ;;
- *) dflt="$dflt -pipe" ;;
- esac
- else
- echo "Nope, it doesn't, but that's ok." 2>&1
- fi
+ ?*) set pipe -pipe
+ eval $checkccflag
+ ;;
+ esac
- echo "Checking if your compiler accepts -Wdeclaration-after-statement" 2>&1
- echo 'int main(void) { return 0; }' > gcctest.c
- if $cc -Wdeclaration-after-statement -o gcctest gcctest.c; then
- echo "Yes, it does." 2>&1
- case "$ccflags" in
- *-Wdeclaration-after-statement*)
- echo "Leaving current flags $ccflags alone." 2>&1
- ;;
- *) dflt="$dflt -Wdeclaration-after-statement" ;;
- esac
- else
- echo "Nope, it doesn't, but that's ok." 2>&1
- fi
+ # on x86_64 (at least) we require an extra library (libssp) in the
+ # link command line. This library is not named, so I infer that it is
+ # an implementation detail that may change. Hence the safest approach
+ # is to add the flag to the flags passed to the compiler at link time,
+ # as that way the compiler can do the right implementation dependant
+ # thing. (NWC)
+ case "$gccversion" in
+ ?*) set stack-protector -fstack-protector 'ldflags="$ldflags -fstack-protector"'
+ eval $checkccflag
;;
esac
;;
;;
n) echo "OK, that should do.";;
esac
-$rm -f try try.* core
+$rm_try gcctest.out
: define a shorthand compile call
compile='
fi
;;
esac
-$rm -f try try.*
+$rm_try
: check for long long
echo " "
val="$undef"
echo "You do not have long long."
fi
-$rm try.*
+$rm_try
set d_longlong
eval $setvar
fi
if $test "X$longsize" = "X$longlongsize"; then
echo "(That isn't any different from an ordinary long.)"
- fi
+ fi
;;
esac
-$rm -f try.* try
+$rm_try
: see if inttypes.h is available
: we want a real compile instead of Inhdr because some systems
echo "<inttypes.h> NOT found." >&4
val="$undef"
fi
-$rm -f try.c try
+$rm_try
set i_inttypes
eval $setvar
val="$undef"
echo "You do not have int64_t."
fi
-$rm -f try try.*
+$rm_try
set d_int64_t
eval $setvar
fi
;;
esac
-$rm -f try.c try
+$rm_try
: check for long doubles
echo " "
val="$undef"
echo "You do not have long double."
fi
-$rm try.*
+$rm_try
set d_longdbl
eval $setvar
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
+ fi
;;
esac
-$rm -f try.* try
+$rm_try
: determine the architecture name
echo " "
*)
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
-
-: determine root of directory hierarchy where package will be installed.
-case "$prefix" in
-'')
- dflt=`./loc . /usr/local /usr/local /local /opt /usr`
- ;;
-*?/)
- dflt=`echo "$prefix" | sed 's/.$//'`
- ;;
-*)
- dflt="$prefix"
- ;;
-esac
-$cat <<EOM
-
-By default, $package will be installed in $dflt/bin, manual pages
-under $dflt/man, etc..., i.e. with $dflt as prefix for all
-installation directories. Typically this is something like /usr/local.
-If you wish to have binaries under /usr/bin but other parts of the
-installation under /usr/local, that's ok: you will be prompted
-separately for each of the installation directories, the prefix being
-only used to set the defaults.
-
-EOM
-fn=d~
-rp='Installation prefix to use?'
-. ./getfile
-oldprefix=''
-case "$prefix" in
-'') ;;
-*)
- case "$ans" in
- "$prefix") ;;
- *) oldprefix="$prefix";;
- esac
- ;;
-esac
-prefix="$ans"
-prefixexp="$ansexp"
-
-case "$afsroot" in
-'') afsroot=/afs ;;
-*) afsroot=$afsroot ;;
-esac
-
-: is AFS running?
-echo " "
-case "$afs" in
-$define|true) afs=true ;;
-$undef|false) afs=false ;;
-*) if test -d $afsroot; then
- afs=true
- else
- afs=false
- fi
- ;;
-esac
-if $afs; then
- echo "AFS may be running... I'll be extra cautious then..." >&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 <<EOM
-
-Since you are running AFS, I need to distinguish the directory in which
-files will reside from the directory in which they are installed (and from
-which they are presumably copied to the former directory by occult means).
-
-EOM
- case "$installprefix" in
- '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
- *) dflt="$installprefix";;
- esac
-else
-$cat <<EOM
-
-In some special cases, particularly when building $package for distribution,
-it is convenient to distinguish the directory in which files should be
-installed from the directory ($prefix) in which they will
-eventually reside. For most users, these two directories are the same.
-
-EOM
- case "$installprefix" in
- '') dflt=$prefix ;;
- *) dflt=$installprefix;;
- esac
+ *-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
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.
: 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 <<EOM
+
+Would you like to build Perl so that the installation is relocatable, so that
+library paths in @INC are determined relative to the path of the perl binary?
+This is not advised for system Perl installs, or if you need to run setid
+scripts or scripts under taint mode.
+
+If this doesn't make any sense to you, just accept the default '$dflt'.
+EOM
+rp='Use relocatable @INC?'
+. ./myread
+case "$ans" in
+y|Y) val="$define" ;;
+*) val="$undef" ;;
+esac
+set userelocatableinc
+eval $setvar
+
+initialinstalllocation="$binexp"
+: Default prefix is now "up one level from where the binaries are"
+case "$userelocatableinc" in
+$define|true|[yY]*)
+ bin=".../"
+ binexp=".../"
+ prefix=".../.."
+ prefixexp=".../.."
+ installprefixexp=".../.."
+ ;;
+esac
+
: determine where private library files go
: Usual default is /usr/local/lib/perl5/$version.
-: Also allow things like /opt/perl/lib/$version, since
+: Also allow things like /opt/perl/lib/$version, since
: /opt/perl/lib/perl5... would be redundant.
: The default "style" setting is made in installstyle.U
case "$installstyle" in
private library directory that is accessible by everyone.
EOM
+fn=$binexp
fn=d~+
rp='Pathname where the private library files will reside?'
. ./getfile
-privlib="$ans"
-privlibexp="$ansexp"
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
-else
- installprivlib="$privlibexp"
-fi
+prefixvar=privlib
+. ./setprefixvar
: set the prefixup variable, to restore leading tilda escape
prefixup='case "$prefixexp" in
them with the rest of the public library files.
EOM
+fn=$binexp
fn=d+~
rp='Where do you want to put the public architecture-dependent libraries?'
. ./getfile
-archlib="$ans"
-archlibexp="$ansexp"
+prefixvar=archlib
+. ./setprefixvar
if $test X"$archlib" = X"$privlib"; then
d_archlib="$undef"
else
d_archlib="$define"
fi
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
-else
- installarchlib="$archlibexp"
-fi
: see if setuid scripts can be secure
$cat <<EOM
esac
;;
esac
-set d_dosuid
-eval $setvar
+set d_dosuid
+eval $setvar
+
+: 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;
+ fi
+ done
+ ;;
+*) perl5="$perl5"
+ ;;
+esac
+case "$perl5" in
+'') echo "None found. That's ok.";;
+*) echo "Using $perl5." ;;
+esac
+
+$cat <<EOM
+
+After $package is installed, you may wish to install various
+add-on modules and utilities. Typically, these add-ons will
+be installed under $prefix with the rest
+of this package. However, you may wish to install such add-ons
+elsewhere under a different prefix.
+
+If you do not wish to put everything under a single prefix, that's
+ok. You will be prompted for the individual locations; this siteprefix
+is only used to suggest the defaults.
+
+The default should be fine for most people.
+
+EOM
+fn=d~+
+rp='Installation prefix to use for add-on modules and utilities?'
+: XXX Here might be another good place for an installstyle setting.
+case "$siteprefix" in
+'') dflt=$prefix ;;
+*) dflt=$siteprefix ;;
+esac
+. ./getfile
+: XXX Prefixit unit does not yet support siteprefix and vendorprefix
+oldsiteprefix=''
+case "$siteprefix" in
+'') ;;
+*) case "$ans" in
+ "$prefix") ;;
+ *) oldsiteprefix="$prefix";;
+ esac
+ ;;
+esac
+siteprefix="$ans"
+siteprefixexp="$ansexp"
+
+: determine where site specific libraries go.
+: Usual default is /usr/local/lib/perl5/site_perl/$version
+: The default "style" setting is made in installstyle.U
+: XXX No longer works with Prefixit stuff.
+prog=`echo $package | $sed 's/-*[0-9.]*$//'`
+case "$sitelib" in
+'') case "$installstyle" in
+ *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
+ *) dflt=$siteprefix/lib/site_$prog/$version ;;
+ esac
+ ;;
+*) dflt="$sitelib"
+ ;;
+esac
+$cat <<EOM
+
+The installation process will create a directory for
+site-specific extensions and modules. Most users find it convenient
+to place all site-specific files in this directory rather than in the
+main distribution directory.
+
+EOM
+fn=d~+
+rp='Pathname for the site-specific library files?'
+. ./getfile
+prefixvar=sitelib
+. ./setprefixvar
+sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
+
+: Determine list of previous versions to include in @INC
+$cat > getverlist <<EOPL
+#!$perl5 -w
+use File::Basename;
+\$api_versionstring = "$api_versionstring";
+\$version = "$version";
+\$stem = "$sitelib_stem";
+\$archname = "$archname";
+EOPL
+ $cat >> getverlist <<'EOPL'
+# The list found is store twice for each entry: the original name, and
+# the binary broken down version as pack "sss", so sorting is easy and
+# unambiguous. This will work for all versions that have a maximum of
+# three digit groups, separate by '.'s or '_'s. Names are extended with
+# ".0.0" to ensure at least three elements for the pack.
+# -- H.Merijn Brand (m)'06 23-10-2006
+
+# Can't have leading @ because metaconfig interprets it as a command!
+;@inc_version_list=();
+# XXX Redo to do opendir/readdir?
+if (-d $stem) {
+ chdir($stem);
+ ;@candidates = map {
+ [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*");
+}
+else {
+ ;@candidates = ();
+}
+
+($pversion, $aversion, $vsn5005) = map {
+ pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005";
+foreach $d (@candidates) {
+ if ($d->[1] lt $pversion) {
+ if ($d->[1] ge $aversion) {
+ unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]);
+ }
+ elsif ($d->[1] ge $vsn5005) {
+ unshift(@inc_version_list, grep { -d } $d->[0]);
+ }
+ }
+ else {
+ # Skip newer version. I.e. don't look in
+ # 5.7.0 if we're installing 5.6.1.
+ }
+}
+
+if (@inc_version_list) {
+ print join(' ', @inc_version_list);
+}
+else {
+ # Blank space to preserve value for next Configure run.
+ print " ";
+}
+EOPL
+chmod +x getverlist
+case "$inc_version_list" in
+'') if test -x "$perl5$exe_ext"; then
+ dflt=`$perl5 getverlist`
+ else
+ dflt='none'
+ 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 <<EOM
+
+In order to ease the process of upgrading, this version of perl
+can be configured to use modules built and installed with earlier
+versions of perl that were installed under $prefix. Specify here
+the list of earlier versions that this version of perl should check.
+If Configure detected no earlier versions of perl installed under
+$prefix, then the list will be empty. Answer 'none' to tell perl
+to not search earlier versions.
+
+The default should almost always be sensible, so if you're not sure,
+just accept the default.
+EOM
+
+rp='List of earlier versions to include in @INC?'
+. ./myread
+case "$ans" in
+[Nn]one|''|' '|$undef) inc_version_list=' ' ;;
+*) inc_version_list="$ans" ;;
+esac
+case "$inc_version_list" in
+''|' ')
+ inc_version_list_init='0'
+ d_inc_version_list="$undef"
+ ;;
+*) inc_version_list_init=`echo $inc_version_list |
+ $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
+ d_inc_version_list="$define"
+ ;;
+esac
+$rm -f getverlist
: see if this is a malloc.h system
: we want a real compile instead of Inhdr because some systems have a
echo "<malloc.h> NOT found." >&4
val="$undef"
fi
-$rm -f try.c try
+$rm_try
set i_malloc
eval $setvar
voidflags="$ans"
;;
esac
-$rm -f try.* .out
+$rm_try
: check for length of pointer
echo " "
fi
;;
esac
-$rm -f try.c try
+$rm_try
case "$use64bitall" in
"$define"|true|[yY]*)
case "$ptrsize" in
esac
echo "Your system uses $freetype free(), it would seem." >&4
$rm -f malloc.[co]
-$cat <<EOM
-
-After $package is installed, you may wish to install various
-add-on modules and utilities. Typically, these add-ons will
-be installed under $prefix with the rest
-of this package. However, you may wish to install such add-ons
-elsewhere under a different prefix.
-
-If you do not wish to put everything under a single prefix, that's
-ok. You will be prompted for the individual locations; this siteprefix
-is only used to suggest the defaults.
-
-The default should be fine for most people.
-
-EOM
-fn=d~+
-rp='Installation prefix to use for add-on modules and utilities?'
-: XXX Here might be another good place for an installstyle setting.
-case "$siteprefix" in
-'') dflt=$prefix ;;
-*) dflt=$siteprefix ;;
-esac
-. ./getfile
-: XXX Prefixit unit does not yet support siteprefix and vendorprefix
-oldsiteprefix=''
-case "$siteprefix" in
-'') ;;
-*) case "$ans" in
- "$prefix") ;;
- *) oldsiteprefix="$prefix";;
- esac
- ;;
-esac
-siteprefix="$ans"
-siteprefixexp="$ansexp"
-
-: determine where site specific libraries go.
-: Usual default is /usr/local/lib/perl5/site_perl/$version
-: The default "style" setting is made in installstyle.U
-: XXX No longer works with Prefixit stuff.
-prog=`echo $package | $sed 's/-*[0-9.]*$//'`
-case "$sitelib" in
-'') case "$installstyle" in
- *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
- *) dflt=$siteprefix/lib/site_$prog/$version ;;
- esac
- ;;
-*) dflt="$sitelib"
- ;;
-esac
-$cat <<EOM
-
-The installation process will create a directory for
-site-specific extensions and modules. Most users find it convenient
-to place all site-specific files in this directory rather than in the
-main distribution directory.
-
-EOM
-fn=d~+
-rp='Pathname for the site-specific library files?'
-. ./getfile
-sitelib="$ans"
-sitelibexp="$ansexp"
-sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
-else
- installsitelib="$sitelibexp"
-fi
-
: 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
fn=d~+
rp='Pathname for the site-specific architecture-dependent library files?'
. ./getfile
-sitearch="$ans"
-sitearchexp="$ansexp"
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
+prefixvar=sitearch
+. ./setprefixvar
+if $test X"$sitearch" = X"$sitelib"; then
+ d_sitearch="$undef"
else
- installsitearch="$sitearchexp"
+ d_sitearch="$define"
fi
$cat <<EOM
;;
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
+prefixvar=vendorlib
+. ./installprefix
case "$vendorprefix" in
'') d_vendorarch="$undef"
vendorarchexp="$ansexp"
;;
esac
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
-else
- installvendorarch="$vendorarchexp"
-fi
+prefixvar=vendorarch
+. ./installprefix
: Final catch-all directories to search
$cat <<EOM
;;
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
-
echo " "
case "$extras" in
'') dflt='n';;
eval $prefixit
$cat <<EOM
-If you wish to install html files for programs in $spackage, indicate
+If you wish to install html files for programs in $spackage, indicate
the appropriate directory here. To skip installing html files,
answer "none".
EOM
fn=dn+~
rp="Directory for the main $spackage html pages?"
. ./getfile
-html1dir="$ans"
-html1direxp="$ansexp"
+prefixvar=html1dir
+. ./setprefixvar
: Use ' ' for none so value is preserved next time through Configure
$test X"$html1dir" = "X" && html1dir=' '
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
-else
- installhtml1dir="$html1direxp"
-fi
: determine where html pages for libraries and modules go
set html3dir html3dir none
fn=dn+~
rp="Directory for the $spackage module html pages?"
. ./getfile
-html3dir="$ans"
-html3direxp="$ansexp"
+prefixvar=html3dir
+. ./setprefixvar
: Use ' ' for none so value is preserved next time through Configure
$test X"$html3dir" = "X" && html3dir=' '
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
-else
- installhtml3dir="$html3direxp"
-fi
-
-: 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;
- fi
- done
- ;;
-*) perl5="$perl5"
- ;;
-esac
-case "$perl5" in
-'') echo "None found. That's ok.";;
-*) echo "Using $perl5." ;;
-esac
-
-: Determine list of previous versions to include in @INC
-$cat > getverlist <<EOPL
-#!$perl5 -w
-use File::Basename;
-\$api_versionstring = "$api_versionstring";
-\$version = "$version";
-\$stem = "$sitelib_stem";
-\$archname = "$archname";
-EOPL
- $cat >> getverlist <<'EOPL'
-# Can't have leading @ because metaconfig interprets it as a command!
-;@inc_version_list=();
-# XXX Redo to do opendir/readdir?
-if (-d $stem) {
- chdir($stem);
- ;@candidates = glob("5.*");
-}
-else {
- ;@candidates = ();
-}
-
-# XXX ToDo: These comparisons must be reworked when two-digit
-# subversions come along, so that 5.7.10 compares as greater than
-# 5.7.3! By that time, hope that 5.6.x is sufficiently
-# widespread that we can use the built-in version vectors rather
-# than reinventing them here. For 5.6.0, however, we must
-# assume this script will likely be run by 5.005_0x. --AD 1/2000.
-foreach $d (@candidates) {
- if ($d lt $version) {
- if ($d ge $api_versionstring) {
- unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
- }
- elsif ($d ge "5.005") {
- unshift(@inc_version_list, grep { -d } $d);
- }
- }
- else {
- # Skip newer version. I.e. don't look in
- # 5.7.0 if we're installing 5.6.1.
- }
-}
-
-if (@inc_version_list) {
- print join(' ', @inc_version_list);
-}
-else {
- # Blank space to preserve value for next Configure run.
- print " ";
-}
-EOPL
-chmod +x getverlist
-case "$inc_version_list" in
-'') if test -x "$perl5$exe_ext"; then
- dflt=`$perl5 getverlist`
- else
- dflt='none'
- fi
- ;;
-$undef) dflt='none' ;;
-*) eval dflt=\"$inc_version_list\" ;;
-esac
-case "$dflt" in
-''|' ') dflt=none ;;
-esac
-case "$dflt" in
-5.005) dflt=none ;;
-esac
-$cat <<EOM
-
-In order to ease the process of upgrading, this version of perl
-can be configured to use modules built and installed with earlier
-versions of perl that were installed under $prefix. Specify here
-the list of earlier versions that this version of perl should check.
-If Configure detected no earlier versions of perl installed under
-$prefix, then the list will be empty. Answer 'none' to tell perl
-to not search earlier versions.
-
-The default should almost always be sensible, so if you're not sure,
-just accept the default.
-EOM
-
-rp='List of earlier versions to include in @INC?'
-. ./myread
-case "$ans" in
-[Nn]one|''|' '|$undef) inc_version_list=' ' ;;
-*) inc_version_list="$ans" ;;
-esac
-case "$inc_version_list" in
-''|' ')
- inc_version_list_init='0';;
-*) inc_version_list_init=`echo $inc_version_list |
- $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
- ;;
-esac
-$rm -f getverlist
: determine whether to install perl also as /usr/bin/perl
{
#ifdef __GLIBC__
# ifdef __GLIBC_MINOR__
-# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
+# if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus)
# include <gnu/libc-version.h>
printf("%s\n", gnu_get_libc_version());
# else
gnulibc_version=''
echo "You are not using the GNU C Library"
fi
-$rm -f try try.* glibc.ver
+$rm_try glibc.ver
set d_gnulibc
eval $setvar
set dld.h i_dld
eval $inhdr
+
+echo " "
+echo "Checking for C++..." >&4
+$cat >try.c <<'EOCP'
+#include <stdio.h>
+int main(void)
+{
+#ifdef __cplusplus
+ return 0;
+#else
+ return 1;
+#endif
+}
+EOCP
+set try
+if eval $compile_ok && $run ./try; then
+ val="$define"
+ echo "You are using a C++ compiler."
+else
+ val="$undef"
+ echo "You are not using a C++ compiler."
+fi
+$rm_try cplusplus$$
+set d_cplusplus
+eval $setvar
+
: is a C symbol defined?
csym='tlook=$1;
case "$3" in
case "$tx" in
yes)
tval=false;
+ case "$d_cplusplus" in
+ $define) extern_C=\"C\";;
+ esac;
if $test "$runnm" = true; then
if $contains $tlook $tf >/dev/null 2>&1; then
tval=true;
elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
- echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
+ echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
$cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
$test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
- $rm -f try$_exe try.c core core.* try.core;
+ $rm_try;
fi;
else
- echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
+ echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
$cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
- $rm -f try$_exe try.c;
+ $rm_try;
fi;
;;
*)
: 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 " "
dflt='n'
usedl="$undef"
;;
-*)
+*)
dflt='n'
case "$d_dlopen" in
$define) dflt='y' ;;
;;
*) case "$osname" in
darwin) dflt='none' ;;
- svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
+ linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
*) dflt='-fpic' ;;
esac ;;
esac ;;
#ifdef I_STDLIB
#include <stdlib.h>
#endif
+#$i_unistd I_UNISTD
+#ifdef I_UNISTD
+#include <unistd.h>
+#endif
int main() {
char b[4];
int i = open("a.out",O_RDONLY);
- if(i == -1)
+ if(i == -1)
exit(1); /* fail */
if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
exit(0); /* succeed (yes, it's ELF) */
echo "I'll use ld to build dynamic libraries."
dflt='ld'
fi
- rm -f try.c a.out
+ $rm_try
;;
*) dflt="$ld"
;;
case "$gccversion" in
'') dflt="$dflt +vnocompatwarnings" ;;
esac
- ;;
- linux|irix*|gnu*) dflt='-shared' ;;
+ ;;
+ linux|irix*|gnu*) dflt="-shared $optimize" ;;
next) dflt='none' ;;
solaris) dflt='-G' ;;
sunos) dflt='-assert nodefinitions' ;;
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
solaris)
xxx="-R $shrpdir"
;;
- freebsd|netbsd|openbsd|interix)
+ freebsd|netbsd|openbsd|interix|dragonfly)
xxx="-Wl,-R$shrpdir"
;;
bsdos|linux|irix*|dec_osf|gnu*)
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
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";;
cat <<EOM >&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'
fn=dn+~
rp="Where do the $package library man pages (source) go?"
. ./getfile
-man3dir="$ans"
-man3direxp="$ansexp"
+prefixvar=man3dir
+. ./setprefixvar
+
case "$man3dir" in
'') man3dir=' '
installman3dir='';;
esac
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
-else
- installman3dir="$man3direxp"
-fi
-
: What suffix to use on installed man pages
case "$man3dir" in
' ')
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
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
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
*!*) ;;
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"
;;
esac
$cat <<EOM
-
+
Some installations have a separate directory just for executable scripts so
that they can mount it across multiple architectures but keep the scripts in
one spot. You might, for example, have a subdirectory of /usr/share for this.
Or you might just lump your scripts in with all your other executables.
-
+
EOM
fn=d~
rp='Where do you keep publicly executable scripts?'
if $test "X$ansexp" != "X$scriptdirexp"; then
installscript=''
fi
-scriptdir="$ans"
-scriptdirexp="$ansexp"
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
-else
- installscript="$scriptdirexp"
-fi
+installscriptdir=''
+prefixvar=scriptdir
+. ./setprefixvar
+: A little fix up for an irregularly named variable.
+installscript="$installscriptdir"
: determine where add-on public executables go
case "$sitebin" in
fn=d~
rp='Pathname where the add-on public executables should be installed?'
. ./getfile
-sitebin="$ans"
-sitebinexp="$ansexp"
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
-else
- installsitebin="$sitebinexp"
-fi
+prefixvar=sitebin
+. ./setprefixvar
: determine where add-on html pages go
: There is no standard location, so try to copy the previously-selected
fn=dn+~
rp='Pathname where the site-specific html pages should be installed?'
. ./getfile
-sitehtml1dir="$ans"
-sitehtml1direxp="$ansexp"
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
-else
- installsitehtml1dir="$sitehtml1direxp"
-fi
+prefixvar=sitehtml1dir
+. ./setprefixvar
: determine where add-on library html pages go
: There is no standard location, so try to copy the previously-selected
fn=dn+~
rp='Pathname where the site-specific library html pages should be installed?'
. ./getfile
-sitehtml3dir="$ans"
-sitehtml3direxp="$ansexp"
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
-else
- installsitehtml3dir="$sitehtml3direxp"
-fi
+prefixvar=sitehtml3dir
+. ./setprefixvar
: determine where add-on manual pages go
case "$siteman1dir" in
'') dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
-*) dflt=$siteman1dir ;;
+*) dflt=$siteman1dir ;;
esac
case "$dflt" in
''|' ') dflt=none ;;
fn=dn+~
rp='Pathname where the site-specific manual pages should be installed?'
. ./getfile
-siteman1dir="$ans"
-siteman1direxp="$ansexp"
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
-else
- installsiteman1dir="$siteman1direxp"
-fi
+prefixvar=siteman1dir
+. ./setprefixvar
: determine where add-on library man pages go
case "$siteman3dir" in
'') dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
-*) dflt=$siteman3dir ;;
+*) dflt=$siteman3dir ;;
esac
case "$dflt" in
''|' ') dflt=none ;;
fn=dn+~
rp='Pathname where the site-specific library manual pages should be installed?'
. ./getfile
-siteman3dir="$ans"
-siteman3direxp="$ansexp"
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
-else
- installsiteman3dir="$siteman3direxp"
-fi
+prefixvar=siteman3dir
+. ./setprefixvar
: determine where add-on public executable scripts go
case "$sitescript" in
fn=d~+
rp='Pathname where add-on public executable scripts should be installed?'
. ./getfile
-sitescript="$ans"
-sitescriptexp="$ansexp"
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
-else
- installsitescript="$sitescriptexp"
-fi
+prefixvar=sitescript
+. ./setprefixvar
case "$usefaststdio" in
$define|true|[yY]*|'')
int main()
{
printf("%d\n", (int)sizeof($lseektype));
- return(0);
+ return(0);
}
EOCP
set try
. ./myread
lseeksize="$ans"
fi
-$rm -f try.c try
+$rm_try
: see what type file positions are declared as in the library
rp="What is the type for file position used by fsetpos()?"
EOM
uselargefiles="$define"
;;
-esac
+esac
case "$lseeksize:$fpossize" in
8:8) cat <<EOM
int main()
{
printf("%d\n", (int)sizeof($lseektype));
- return(0);
+ return(0);
}
EOCP
set try
*_t) zzz="$fpostype" ;;
*) zzz="fpos_t" ;;
esac
- $echo $n "Rechecking the size of $zzz...$c" >&4
+ $echo $n "Rechecking the size of $zzz...$c" >&4
$cat > try.c <<EOCP
#include <sys/types.h>
#include <stdio.h>
. ./myread
fpossize="$ans"
fi
- $rm -f try.c try
+ $rm_try
fi
;;
esac
-# probably will refer to
-# $archlib $privlib $sitearch $sitelib $vendorarch $vendorlib
-need_relocation=0
-userelocatableinc=undef
-
case "$vendorprefix" in
'') d_vendorbin="$undef"
vendorbin=''
vendorbinexp="$ansexp"
;;
esac
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
-else
- installvendorbin="$vendorbinexp"
-fi
+prefixvar=vendorbin
+. ./installprefix
case "$vendorprefix" in
'') vendorhtml1dir=''
esac
: Use ' ' for none so value is preserved next time through Configure
$test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
-else
- installvendorhtml1dir="$vendorhtml1direxp"
-fi
+prefixvar=vendorhtml1dir
+. ./installprefix
case "$vendorprefix" in
'') vendorhtml3dir=''
esac
: Use ' ' for none so value is preserved next time through Configure
$test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
-else
- installvendorhtml3dir="$vendorhtml3direxp"
-fi
+prefixvar=vendorhtml3dir
+. ./installprefix
case "$vendorprefix" in
'') vendorman1dir=''
esac
: Use ' ' for none so value is preserved next time through Configure
$test X"$vendorman1dir" = "X" && vendorman1dir=' '
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
-else
- installvendorman1dir="$vendorman1direxp"
-fi
+prefixvar=vendorman1dir
+. ./installprefix
case "$vendorprefix" in
'') vendorman3dir=''
esac
: Use ' ' for none so value is preserved next time through Configure
$test X"$vendorman3dir" = "X" && vendorman3dir=' '
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
-else
- installvendorman3dir="$vendorman3direxp"
-fi
+prefixvar=vendorman3dir
+. ./installprefix
case "$vendorprefix" in
'') d_vendorscript="$undef"
esac
$cat <<EOM
-The installation process will create a directory for
+The installation process will create a directory for
vendor-supplied scripts.
EOM
vendorscriptexp="$ansexp"
;;
esac
-: Change installation prefix, if necessary.
-if $test X"$prefix" != X"$installprefix"; then
- installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
-else
- installvendorscript="$vendorscriptexp"
-fi
+prefixvar=vendorscript
+. ./installprefix
: see if qgcvt exists
set qgcvt d_qgcvt
sSCNfldbl=$sPRIfldbl # expect consistency
fi
-$rm -f try try.*
+$rm_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_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_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
+ d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
d_SCNfldbl="$define";
;;
esac
}
int main()
-{
- char buf[64];
+{
+ char buf[64];
buf[63] = '\0';
/* This must be 1st test on (which?) platform */
Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
checkit("0.1", buf);
- Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
+ Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
checkit("0.01", buf);
- Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
+ Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
checkit("0.001", buf);
- Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
+ Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
checkit("0.0001", buf);
Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
else
checkit("9e-05", buf);
- Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
+ Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
checkit("1", buf);
- Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
+ Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
checkit("1.1", buf);
- Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
+ Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
checkit("1.01", buf);
- Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
+ Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
checkit("1.001", buf);
- Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
+ Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
checkit("1.0001", buf);
- Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
+ Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
checkit("1.00001", buf);
- Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
+ Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
checkit("1.000001", buf);
- Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
+ Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
checkit("0", buf);
- Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
+ Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
checkit("-1", buf);
/* Some Linux gcvt's give 1.e+5 here. */
- Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
+ Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
checkit("100000", buf);
-
+
/* Some Linux gcvt's give -1.e+5 here. */
- Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
+ Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
checkit("-100000", buf);
- Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
+ Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
checkit("123.456", buf);
/* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
case $xxx_convert in
gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
*) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
- esac
+ esac
done
: then add any others
for xxx_convert in gconvert gcvt sprintf; do
case "$xxx_list" in
*$xxx_convert*) ;;
*) xxx_list="$xxx_list $xxx_convert" ;;
- esac
+ esac
done
case "$d_longdbl$uselongdouble" in
for xxx_convert in $xxx_list; do
echo "Trying $xxx_convert..."
- $rm -f try try$_o
+ $rm -f try try$_o core
set try -DTRY_$xxx_convert
if eval $compile; then
echo "$xxx_convert() found." >&4
d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
*) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
esac
- ;;
+ ;;
esac
fi
+$rm_try
: see if _fwalk exists
set fwalk d__fwalk
ccflags="$ccflags"
prototype="$prototype"
define="$define"
-rm=$rm
+rm_try="$rm_try"
usethreads=$usethreads
i_pthread=$i_pthread
pthread_h_first=$pthread_h_first
$cat >> protochk <<'EOSH'
-$rm -f try.c
+$rm_try
foo="$1"
shift
while test $# -ge 2; do
echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
$cc $optimize $ccflags -c try.c > /dev/null 2>&1
status=$?
-$rm -f try.[co]
+$rm_try
exit $status
EOSH
chmod +x protochk
fi;
set $varname;
eval $setvar;
-$rm -f try.c tryout.c'
+$rm_try tryout.c'
: see if sys/types.h has to be included
set sys/types.h i_systypes
fi;
set $varname;
eval $setvar;
-$rm -f try.c try.o'
+$rm_try'
: see if we should include time.h, sys/time.h, or both
echo " "
echo "We'll include <sys/time.h>." >&4;;
*) i_systime="$undef";;
esac
- $rm -f try.c try
+ $rm_try
fi
: see if struct tm knows about tm_zone
case "$i_systime$i_time" in
-*$define*)
+*$define*)
echo " "
echo "Checking to see if your struct tm has tm_zone field..." >&4
set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
esac
: see if struct tm knows about tm_gmtoff
case "$i_systime$i_time" in
-*$define*)
+*$define*)
echo " "
echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
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 <<EOCP
+#include <stdio.h>
+#$i_stdlib I_STDLIB
+#ifdef I_STDLIB
+#include <stdlib.h>
+#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
'')
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
esac
set d_bsdgetpgrp
eval $setvar
-$rm -f try try.*
+$rm_try
: see if setpgrp exists
set setpgrp d_setpgrp
;;
*) val="$undef";;
esac
-set d_bsdsetpgrp
-eval $setvar
-$rm -f try try.*
-: see if bzero exists
-set bzero d_bzero
-eval $inlibc
+set d_bsdsetpgrp
+eval $setvar
+$rm_try
+
+: Look for GCC-style __builtin_choose_expr
+case "$d_builtin_choose_expr" in
+'')
+ echo " "
+ echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4
+ $cat >try.c <<'EOCP'
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) )
+
+int main(void) {
+ assert( SYRINX(1) == 2112 );
+ assert( SYRINX(1) != 5150 );
+ assert( SYRINX(0) == 5150 );
+ assert( SYRINX(0) != 2112 );
+ puts( "All good!" );
+ exit(0);
+}
+
+EOCP
+ set try
+ if eval $compile; then
+ echo "Your C compiler supports __builtin_choose_expr."
+ val="$define"
+ else
+ echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
+ val="$undef"
+ fi
+;;
+*) val="$d_builtin_choose_expr" ;;
+esac
+
+set d_builtin_choose_expr
+eval $setvar
+$rm_try
+
+: Look for GCC-style __builtin_expect
+case "$d_builtin_expect" in
+'')
+ echo " "
+ echo "Checking whether your compiler can handle __builtin_expect ..." >&4
+ $cat >builtin.c <<'EOCP'
+int main(void) {
+ int n = 50;
+ if ( __builtin_expect(n, 0) ) n = 1;
+}
+EOCP
+ set try
+ if eval $compile; then
+ echo "Your C compiler supports __builtin_choose_expr."
+ val="$define"
+ else
+ echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
+ val="$undef"
+ fi
+ ;;
+*) val="$d_builtin_expect" ;;
+esac
+
+set d_builtin_expect
+eval $setvar
+$rm_try
+
+: see if bzero exists
+set bzero d_bzero
+eval $inlibc
+
+: see if stdarg is available
+echo " "
+if $test `./findhdr stdarg.h`; then
+ echo "<stdarg.h> found." >&4
+ valstd="$define"
+else
+ echo "<stdarg.h> NOT found." >&4
+ valstd="$undef"
+fi
+
+: see if varags is available
+echo " "
+if $test `./findhdr varargs.h`; then
+ echo "<varargs.h> found." >&4
+else
+ echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
+fi
+
+: set up the varargs testing programs
+$cat > varargs.c <<EOP
+#ifdef I_STDARG
+#include <stdarg.h>
+#endif
+#ifdef I_VARARGS
+#include <varargs.h>
+#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 <<EOP
+$startsh
+if $cc -c $ccflags -D\$1 varargs.c >/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 <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros." >&4
+ $cat >try.c <<EOCP
+#include <stdio.h>
+#include <stdarg.h>
+
+#define foo(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__)
+
+int main() {
+ char buf[20];
+ foo(buf, "%d %g %.*s", 123, 456.0, (int)3, "789fail");
+ puts(buf);
+ return 0;
+}
+EOCP
+ set try
+ if eval $compile && $run ./try 2>&1 >/dev/null; then
+ case "`$run ./try`" in
+ "123 456 789")
+ echo "You have C99 variadic macros." >&4
+ d_c99_variadic_macros="$define"
+ ;;
+ *)
+ echo "You don't have functional C99 variadic macros." >&4
+ d_c99_variadic_macros="$undef"
+ ;;
+ esac
+ else
+ echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
+ d_c99_variadic_macros="$undef"
+ fi
+ $rm_try
+ ;;
+ *)
+ echo "You don't have <stdarg.h> and <stdlib.h>, 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 " "
#endif
#include <sys/types.h>
#include <signal.h>
-$signal_t blech(s) int s; { exit(3); }
+$signal_t blech(int s) { exit(3); }
int main()
{
$xxx i32;
char str[16];
signal(SIGFPE, blech);
- /* Don't let compiler optimize the test away. Store the number
+ /* Don't let compiler optimize the test away. Store the number
in a writable string for gcc to pass to sscanf under HP/UX.
*/
sprintf(str, "2147483647");
esac
set d_casti32
eval $setvar
-$rm -f try try.*
+$rm_try
: check for ability to cast negative floats to unsigned
echo " "
#endif
#include <sys/types.h>
#include <signal.h>
-$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;
unsigned short ashort;
int result = 0;
char str[16];
-
+
/* Frustrate gcc-2.7.2's optimizer which failed this test with
a direct f = -123. assignment. gcc-2.8.0 reportedly
optimized the whole file away
*/
- /* Store the number in a writable string for gcc to pass to
+ /* Store the number in a writable string for gcc to pass to
sscanf under HP/UX.
*/
sprintf(str, "-123");
esac
set d_castneg
eval $setvar
-$rm -f try.*
+$rm_try
: see if vprintf exists
echo " "
echo 'vprintf() found.' >&4
val="$define"
$cat >try.c <<EOF
-#include <varargs.h>
+#$i_stdarg I_STDARG /* Only one of these can be defined by i_varhrd */
+#$i_varargs I_VARARGS
+
#$i_stdlib I_STDLIB
+#$i_unistd I_UNISTD
+
+#ifdef I_STDARG
+# include <stdarg.h>
+#else /* I_VARARGS */
+# include <varargs.h>
+#endif
+
+#ifdef I_UNISTD
+# include <unistd.h>
+#endif
+
#ifdef I_STDLIB
-#include <stdlib.h>
+# include <stdlib.h>
#endif
-int main() { xxx("foo"); }
+#include <stdio.h> /* vsprintf prototype */
+
+#ifdef I_STDARG
+void xxx(int n, ...)
+{
+ va_list args;
+ char buf[10];
+ va_start(args, n);
+ exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
+}
+int main() { xxx(1, "foo"); }
+
+#else /* I_VARARGS */
xxx(va_alist)
va_dcl
{
- va_list args;
- char buf[10];
-
- va_start(args);
- exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
+ va_list args;
+ char buf[10];
+ va_start(args);
+ exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
}
+int main() { xxx("foo"); }
+
+#endif
+
EOF
set try
- if eval $compile && $run ./try; then
- echo "Your vsprintf() returns (int)." >&4
- val2="$undef"
+ if eval $compile_ok; then
+ if $run ./try; then
+ echo "Your vsprintf() returns (int)." >&4
+ val2="$undef"
+ else
+ echo "Your vsprintf() returns (char*)." >&4
+ val2="$define"
+ fi
else
- echo "Your vsprintf() returns (char*)." >&4
- val2="$define"
+ echo 'I am unable to compile the vsprintf() test program.' >&4
+ # We shouldn't get here. If we do, assume the standard signature,
+ # not the old BSD one.
+ echo 'Guessing that vsprintf() returns (int).' >&4
+ val2="$undef"
fi
else
echo 'vprintf() NOT found.' >&4
- val="$undef"
- val2="$undef"
+ val="$undef"
+ val2="$undef"
fi
-$rm -f try try.*
+$rm_try
set d_vprintf
eval $setvar
val=$val2
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
fi;
set $varname;
eval $setvar;
-$rm -f try.c try.o'
+$rm_try'
socketlib=''
sockethdr=''
sockethdr="-I/usr/netinclude"
;;
esac
- echo "Found Berkeley sockets interface in lib$net." >&4
+ echo "Found Berkeley sockets interface in lib$net." >&4
if $contains setsockopt libc.list >/dev/null 2>&1; then
d_oldsock="$undef"
else
val="$define"
fi
set d_${enum}; eval $setvar
- $rm -f try.c try
+ $rm_try
done
: see if this is a sys/uio.h system
int main()
{
const char *foo;
- const spug y;
+ const spug y = { 0 };
}
EOCP
if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
'') 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
'struct dirent') guess2='struct direct' ;;
*) guess2='struct dirent' ;;
esac
-
+
if $contains "$guess1" try.c >/dev/null 2>&1; then
direntrytype="$guess1"
echo "Your directory entries are $direntrytype." >&4
. ./myread
direntrytype="$ans"
fi
-$rm -f try.c
-
+$rm_try
: see if the directory entry stores field length
echo " "
fi
set d_dirnamlen
eval $setvar
-$rm -f try.c
+$rm_try
+
+: Look for DIR.dd_fd
+case "$i_dirent" in
+"$define")
+ echo "Checking to see if DIR has a dd_fd member variable" >&4
+ $cat >try.c <<EOCP
+#$i_stdlib I_STDLIB
+#ifdef I_STDLIB
+#include <stdlib.h>
+#endif
+#include <dirent.h>
+
+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 <dirent.h>, so not checking for dd_fd." >&4
+ val="$undef"
+ ;;
+esac
+set d_dir_dd_fd
+eval $setvar
+$rm_try
: see if this is an sysdir system
set sys/dir.h i_sysdir
exit(1);
}
EOM
+val=$undef
set dirfd
if eval $compile; then
val="$define"
fi
set d_open3
eval $setvar
-$rm -f try try.*
+$rm_try
: see which of string.h or strings.h is needed
echo " "
set i_fcntl
eval $setvar
+: see if fork exists
+set fork d_fork
+eval $inlibc
+
+: see if pipe exists
+set pipe d_pipe
+eval $inlibc
+
: check for non-blocking I/O stuff
case "$h_sysfile" in
true) echo "#include <sys/file.h>" > head.c;;
;;
*) echo "Using $hint value $o_nonblock.";;
esac
-$rm -f try try.* .out core
+$rm_try
echo " "
echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
case "$eagain" in
'')
+ case "$d_fork:$d_pipe" in
+ define:define)
$cat head.c > try.c
$cat >>try.c <<EOCP
#include <errno.h>
#include <sys/types.h>
#include <signal.h>
-#include <stdio.h>
+#include <stdio.h>
#$i_stdlib I_STDLIB
#ifdef I_STDLIB
#include <stdlib.h>
#else
#include <strings.h>
#endif
-$signal_t blech(x) int x; { exit(3); }
+$signal_t blech(int x) { exit(3); }
EOCP
$cat >> try.c <<'EOCP'
int main()
echo "I can't compile the test program--assuming errno EAGAIN will do."
eagain=EAGAIN
fi
+ ;;
+ *) echo "Can't figure out how to test this--assuming errno EAGAIN will do."
+ eagain=EAGAIN
+ val="$define"
+ ;;
+ esac
set d_eofnblk
eval $setvar
;;
esac
;;
esac
-$rm -f try try.* .out core head.c mtry
+$rm_try head.c mtry
: see if _ptr and _cnt from stdio act std
echo " "
else
echo "Your stdio doesn't appear very std."
fi
-$rm -f try.c try
+$rm_try
# glibc 2.2.90 and above apparently change stdio streams so Perl's
# direct buffer manipulation no longer works. The Configure tests
if (cnt == FILE_cnt(fp)) {
puts("Pass_unchanged");
exit (0);
- }
+ }
if (FILE_cnt(fp) == (cnt - 42)) {
puts("Pass_changed");
exit (0);
else
echo "It seems we can't set ptr in your stdio. Nevermind." >&4
fi
- $rm -f try.c try
+ $rm_try
;;
esac
else
echo "However, it seems to be lacking the _base field."
fi
- $rm -f try.c try
+ $rm_try
;;
esac
set d_stdiobase
#include <unistd.h>
#include <fcntl.h>
#include <signal.h>
-$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;
esac
set d_fcntl_can_lock
eval $setvar
-$rm -f try*
-
+$rm_try
: check for fd_set items
$cat <<EOM
d_fd_macros="$undef"
fi
fi
-$rm -f try try.*
+$rm_try
: see if fgetpos exists
set fgetpos d_fgetpos
set d_flockproto flock $i_sysfile sys/file.h
eval $hasproto
-: see if fork exists
-set fork d_fork
-eval $inlibc
-
: see if fp_class exists
set fp_class d_fp_class
eval $inlibc
8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
esac
fi
-$rm -f try.* try
+$rm_try
set d_fpos64_t
eval $setvar
8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
esac
+d_futimes="$undef"
+: check for a working futimes
+echo " "
+echo "Checking if you have a working futimes()" >&4
+$cat >try.c <<EOCP
+#include <stdio.h>
+#include <sys/time.h>
+#include <errno.h>
+#include <fcntl.h>
+
+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, you have" >&4
+ d_futimes="$define"
+ ;;
+ *) echo "No, you have futimes, but it isn't working ($rc) (probably harmless)" >&4
+ ;;
+ esac
+else
+ echo "No, it does not (probably harmless)" >&4
+fi
+$rm_try
+
: see if getcwd exists
set getcwd d_getcwd
eval $inlibc
echo "Yes, it does ($foo)" >&4
d_libm_lib_version="$define"
else
- echo "No, it does not (probably harmless)\n" >&4
+ echo "No, it does not (probably harmless)" >&4
fi
- $rm -f try.* try core core.try.*
+ $rm_try
;;
esac
;;
esac
+: see if localtime_r calls tzset
+case "$localtime_r_proto" in
+REENTRANT_PROTO*)
+ $cat >try.c <<EOCP
+/* Does our libc's localtime_r call tzset ?
+ * return 0 if so, 1 otherwise.
+ */
+#include <sys/types.h>
+#include <unistd.h>
+#include <time.h>
+#include <string.h>
+#include <malloc.h>
+int main()
+{
+ time_t t = time(0L);
+ char w_tz[]="TZ" "=GMT+5",
+ e_tz[]="TZ" "=GMT-5",
+ *tz_e = (char*)malloc(16),
+ *tz_w = (char*)malloc(16);
+ struct tm tm_e, tm_w;
+ memset(&tm_e,'\0',sizeof(struct tm));
+ memset(&tm_w,'\0',sizeof(struct tm));
+ strcpy(tz_e,e_tz);
+ strcpy(tz_w,w_tz);
+
+ putenv(tz_e);
+ localtime_r(&t, &tm_e);
+
+ putenv(tz_w);
+ localtime_r(&t, &tm_w);
+
+ if( memcmp(&tm_e, &tm_w, sizeof(struct tm)) == 0 )
+ return 1;
+ return 0;
+}
+EOCP
+ set try
+ if eval $compile; then
+ if $run ./try; then
+ d_localtime_r_needs_tzset=undef;
+ else
+ d_localtime_r_needs_tzset=define;
+ fi;
+ else
+ d_localtime_r_needs_tzset=undef;
+ fi;
+ ;;
+ *)
+ d_localtime_r_needs_tzset=undef;
+ ;;
+esac
+$rm_try
+
: see if localeconv exists
set localeconv d_locconv
eval $inlibc
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
Checking to see whether your modfl() is okay for large values...
EOM
$cat >try.c <<EOCP
-#include <math.h>
+#include <math.h>
#include <stdio.h>
EOCP
if $test "X$d_modflproto" != "X$define"; then
$cat >>try.c <<EOCP
-/* Sigh. many current glibcs provide the function, but do not prototype it. */
+/* Sigh. many current glibcs provide the function, but do not prototype it. */
long double modfl (long double, long double *);
EOCP
fi
int main() {
long double nv = 4294967303.15;
long double v, w;
- v = modfl(nv, &w);
+ v = modfl(nv, &w);
#ifdef __GLIBC__
printf("glibc");
#endif
d_modfl="$undef"
;;
esac
- $rm -f try.* try core core.try.*
+ $rm_try
else
echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
d_modfl="$undef"
set nl_langinfo d_nl_langinfo
eval $inlibc
-: check for length of character
-echo " "
-case "$charsize" in
-'')
- echo "Checking to see how big your characters are (hey, you never know)..." >&4
- $cat >try.c <<EOCP
-#include <stdio.h>
-#$i_stdlib I_STDLIB
-#ifdef I_STDLIB
-#include <stdlib.h>
-#endif
-int main()
-{
- printf("%d\n", (int)sizeof(char));
- exit(0);
-}
-EOCP
- set try
- if eval $compile_ok; then
- dflt=`$run ./try`
- else
- dflt='1'
- echo "(I can't seem to compile the test program. Guessing...)"
- fi
- ;;
-*)
- dflt="$charsize"
- ;;
-esac
-rp="What is the size of a character (in bytes)?"
-. ./myread
-charsize="$ans"
-$rm -f try.c try
-
: check for volatile keyword
echo " "
echo 'Checking to see if your C compiler knows about "volatile"...' >&4
fi
set d_volatile
eval $setvar
-$rm -f try.*
+$rm_try
echo " "
}
EOCP
-case "$i8type" in
-'') case "$charsize" in
- 1) i8type=char
- u8type="unsigned char"
- i8size=$charsize
- u8size=$charsize
- ;;
- esac
- ;;
-esac
-case "$i8type" in
-'') set try -DINT8
- if eval $compile; then
- case "`$run ./try`" in
- int8_t) i8type=int8_t
- u8type=uint8_t
- i8size=1
- u8size=1
- ;;
- esac
- fi
- ;;
-esac
-case "$i8type" in
-'') if $test $charsize -ge 1; then
- i8type=char
- u8type="unsigned char"
- i8size=$charsize
- u8size=$charsize
- fi
- ;;
-esac
+i8type="signed char"
+u8type="unsigned char"
+i8size=1
+u8size=1
case "$i16type" in
'') case "$shortsize" in
#include <signal.h>
#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;
signal(SIGFPE, blech);
#endif
- for (i = 0; i < n; i++) {
- u = u << 1 | ($uvtype)1;
- d = ($nvtype)u;
- if (($uvtype)d != u)
- break;
- if (d <= 0)
- break;
- d = ($nvtype)(u - 1);
- if (($uvtype)d != (u - 1))
- break;
+ for (i = 0; i < n; i++) {
+ u = u << 1 | ($uvtype)1;
+ d = ($nvtype)u;
+ if (($uvtype)d != u)
+ break;
+ if (d <= 0)
+ break;
+ d = ($nvtype)(u - 1);
+ if (($uvtype)d != (u - 1))
+ break;
+#ifdef SIGFPE
+ if (bletched)
+ break;
+#endif
+ }
+ printf("%d\n", ((i == n) ? -n : i));
+ exit(0);
+}
+EOP
+set try
+
+d_nv_preserves_uv="$undef"
+if eval $compile; then
+ nv_preserves_uv_bits="`$run ./try`"
+fi
+case "$nv_preserves_uv_bits" in
+\-[1-9]*)
+ nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
+ $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs." 2>&1
+ d_nv_preserves_uv="$define"
+ ;;
+[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="0" ;;
+esac
+$rm_try
+
+$echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
+: volatile so that the compiler has to store it out to memory.
+if test X"$d_volatile" = X"$define"; then
+ volatile=volatile
+fi
+$cat <<EOP >try.c
+#include <stdio.h>
+#$i_stdlib I_STDLIB
+#ifdef I_STDLIB
+#include <stdlib.h>
+#endif
+#$i_string I_STRING
+#ifdef I_STRING
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+#include <sys/types.h>
+#include <signal.h>
+#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) {
- break;
+ if (bletched) {
+ printf("No - something bleched\n");
+ return 1;
+ }
#endif
- }
+ if (fail) {
+ printf("No - %d fail(s)\n", fail);
+ return 1;
}
- printf("%d\n", ((i == n) ? -n : i));
- exit(0);
+ printf("Yes\n");
+ return 0;
}
EOP
set try
-d_nv_preserves_uv="$undef"
+d_nv_zero_is_allbits_zero="$undef"
if eval $compile; then
- nv_preserves_uv_bits="`$run ./try`"
+ xxx="`$run ./try`"
+ case "$?" in
+ 0)
+ case "$xxx" in
+ Yes) cat >&4 <<EOM
+0.0 is represented as all bits zero in memory
+EOM
+ d_nv_zero_is_allbits_zero="$define"
+ ;;
+ *) cat >&4 <<EOM
+0.0 is not represented as all bits zero in memory
+EOM
+ d_nv_zero_is_allbits_zero="$undef"
+ ;;
+ esac
+ ;;
+ *) cat >&4 <<EOM
+0.0 is not represented as all bits zero in memory
+EOM
+ d_nv_zero_is_allbits_zero="$undef"
+ ;;
+ esac
fi
-case "$nv_preserves_uv_bits" in
-\-[1-9]*)
- nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
- $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs." 2>&1
- d_nv_preserves_uv="$define"
- ;;
-[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" ;;
-esac
-
-$rm -f try.* try
-
+$rm_try
: check for off64_t
echo " "
8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
esac
fi
-$rm -f try.* try
+$rm_try
set d_off64_t
eval $setvar
: how to create joinable pthreads
if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
echo " "
- echo "Checking what constant to use for creating joinable pthreads..." >&4
+ echo "Checking what constant to use for creating joinable pthreads..." >&4
$cat >try.c <<'EOCP'
#include <pthread.h>
int main() {
val=PTHREAD_CREATE_UNDETACHED
set old_pthread_create_joinable
eval $setvar
- else
+ else
set try -DJOINABLE=__UNDETACHED
if eval $compile; then
echo "You seem to use __UNDETACHED." >&4
fi
fi
fi
- $rm -f try try.*
+ $rm_try
else
d_old_pthread_create_joinable="$undef"
old_pthread_create_joinable=""
set pause d_pause
eval $inlibc
-: see if pipe exists
-set pipe d_pipe
-eval $inlibc
-
: see if poll exists
set poll d_poll
eval $inlibc
set d_procselfexe
eval $setvar
+: backward compatibility for d_hvfork
+if test X$d_hvfork != X; then
+ d_vfork="$d_hvfork"
+ d_hvfork=''
+fi
+: see if there is a vfork
+val=''
+set vfork val
+eval $inlibc
+
+d_pseudofork=$undef
+
+: Ok, but do we want to use it. vfork is reportedly unreliable in
+: perl on Solaris 2.x, and probably elsewhere.
+case "$val" in
+$define)
+ echo " "
+ case "$usevfork" in
+ false) dflt='n';;
+ *) dflt='y';;
+ esac
+ cat <<'EOM'
+
+Perl can only use a vfork() that doesn't suffer from strict
+restrictions on calling functions or modifying global data in
+the child. For example, glibc-2.1 contains such a vfork()
+that is unsuitable. If your system provides a proper fork()
+call, chances are that you do NOT want perl to use vfork().
+
+EOM
+ rp="Do you still want to use vfork()?"
+ . ./myread
+ case "$ans" in
+ y|Y) ;;
+ *)
+ echo "Ok, we won't use vfork()."
+ val="$undef"
+ ;;
+ esac
+ ;;
+esac
+set d_vfork
+eval $setvar
+case "$d_vfork" in
+$define) usevfork='true';;
+*) usevfork='false';;
+esac
+
: see whether the pthread_atfork exists
$cat >try.c <<EOP
#include <pthread.h>
esac
set d_pthread_yield
eval $setvar
-
case "$sched_yield" in
'') sched_yield=undef ;;
esac
-
-$rm -f try try.*
+$rm_try
: see if random_r exists
set random_r d_random_r
EOCP
set try
if eval $compile_ok; then
- if ./try 2>/dev/null; then
+ if $run ./try 2>/dev/null; then
echo "Yes, it can."
val="$define"
else
fi
;;
esac
- $rm -f try.* try core
+ $rm_try
;;
esac
set d_safebcpy
EOCP
set try
if eval $compile_ok; then
- if ./try 2>/dev/null; then
+ if $run ./try 2>/dev/null; then
echo "Yes, it can."
val="$define"
else
fi
;;
esac
- $rm -f try.* try core
+ $rm_try
;;
esac
set d_safemcpy
fi
;;
esac
-$rm -f try.* try core
+$rm_try
set d_sanemcmp
eval $setvar
echo "You do not have union semun in <sys/sem.h>." >&4
val="$undef"
fi
-$rm -f try try.c
+$rm_try
set d_union_semun
eval $setvar
case "$d_sem" in
$define)
echo " "
- $cat > try.h <<END
+ $cat > tryh.h <<END
#ifndef S_IRUSR
# ifdef S_IREAD
# define S_IRUSR S_IREAD
#endif
END
: see whether semctl IPC_STAT can use union semun
- val="$undef"
case "$d_semctl_semun" in
'')
+ val="$undef"
$cat > try.c <<END
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/stat.h>
#include <stdio.h>
#include <errno.h>
-#include "try.h"
+#include "tryh.h"
#ifndef errno
extern int errno;
#endif
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 && ... */
semun) val="$define" ;;
esac
fi
- $rm -f try try.c
+ $rm_try
+ set d_semctl_semun
+ eval $setvar
;;
esac
- set d_semctl_semun
- eval $setvar
case "$d_semctl_semun" in
$define)
echo "You can use union semun for semctl IPC_STAT." >&4
esac
: see whether semctl IPC_STAT can use struct semid_ds pointer
- val="$undef"
case "$d_semctl_semid_ds" in
'')
+ val="$undef"
$cat > try.c <<'END'
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/stat.h>
-#include "try.h"
+#include "tryh.h"
#include <stdio.h>
#include <errno.h>
#ifndef errno
semid_ds) val="$define" ;;
esac
fi
- $rm -f try try.c
+ $rm_try
+ set d_semctl_semid_ds
+ eval $setvar
;;
esac
- set d_semctl_semid_ds
- eval $setvar
case "$d_semctl_semid_ds" in
$define)
echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
*) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
;;
esac
- $rm -f try.h
;;
*) val="$undef"
eval $setvar
;;
esac
+$rm_try tryh.h
: see if sendmsg exists
set sendmsg d_sendmsg
val="$undef"
fi
set d_sigaction; eval $setvar
-$rm -f try try$_o try.c
+$rm_try
+
+: 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 <<EOCP
+#$i_math I_MATH
+#$i_sunmath I_SUNMATH
+#ifdef I_MATH
+# include <math.h>
+#endif
+#ifdef I_SUNMATH /* Solaris special math library */
+# include <sunmath.h>
+#endif
+#define NV $nvtype
+int main(int argc, char **argv)
+{
+ NV x = 0.0;
+ NV y = -0.0;
+ if ((signbit(x) == 0) && (signbit(y) != 0))
+ return 0;
+ else
+ return 1;
+}
+EOCP
+val="$undef"
+set try
+if eval $compile; then
+ if $run ./try; then
+ $echo "Yes." >&4
+ val="$define"
+ else
+ $echo "Signbit seems to be available, but doesn't work as I expected."
+ $echo "I won't use it." >&4
+ val="$undef"
+ fi
+else
+ $echo "Nope." >&4
+ dflt="$undef"
+fi
+set d_signbit
+eval $setvar
+$rm_try
: see if sigprocmask exists
set sigprocmask d_sigprocmask
esac
set d_sigsetjmp
eval $setvar
-$rm -f try.c try
+$rm_try
+
+: see if snprintf exists
+set snprintf d_snprintf
+eval $inlibc
+
+: see if vsnprintf exists
+set vsnprintf d_vsnprintf
+eval $inlibc
+
+case "$d_snprintf-$d_vsnprintf" in
+"$define-$define")
+ $cat <<EOM
+Checking whether your snprintf() and vsnprintf() work okay...
+EOM
+ $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 <stdio.h>
+#include <stdarg.h>
+
+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 <<EOM >&4
+Your snprintf() and snprintf() don't seem to be working okay.
+EOM
+ d_snprintf="$undef"
+ d_vsnprintf="$undef"
+ ;;
+ esac
+ else
+ echo "(I can't seem to compile the test program--assuming they don't)"
+ d_snprintf="$undef"
+ d_vsnprintf="$undef"
+ fi
+ $rm_try
+ ;;
+esac
: see if sockatmark exists
set sockatmark d_sockatmark
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 <<EOP >try.c
+#include <stdio.h>
+#$i_stdlib I_STDLIB
+#ifdef I_STDLIB
+#include <stdlib.h>
+#endif
+#$i_string I_STRING
+#ifdef I_STRING
+# include <string.h>
+#else
+# include <strings.h>
+#endif
+#$i_math I_MATH
+#ifdef I_MATH
+#include <math.h>
+#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 <<EOM
+sprintf returns the length of the string (as ANSI says it should)
+EOM
+ d_sprintf_returns_strlen="$define"
+ ;;
+ *) cat >&4 <<EOM
+sprintf does not return the length of the string (how old is this system?)
+EOM
+ d_sprintf_returns_strlen="$undef"
+ ;;
+ esac
+fi
+$rm_try
+
: see if srand48_r exists
set srand48_r d_srand48_r
eval $inlibc
esac
fi
done
- $rm -f try.* try$exe_ext
+ $rm_try
esac
case "$stdio_stream_array" in
'') $cat >&4 <<EOM
fi
set d_strctcpy
eval $setvar
-$rm -f try.*
+$rm_try
: see if strerror and/or sys_errlist[] exist
echo " "
d_strtoul="$undef"
;;
esac
+ else
+ echo "(I can't seem to compile the test program--assuming it doesn't)"
+ d_strtoul="$undef"
fi
;;
esac
d_strtoull="$undef"
;;
esac
+ else
+ echo "(I can't seem to compile the test program--assuming it doesn't)"
+ d_strtoull="$undef"
fi
;;
esac
d_strtouq="$undef"
;;
esac
+ else
+ echo "(I can't seem to compile the test program--assuming it doesn't)"
+ d_strtouq="$undef"
fi
;;
esac
EOCP
xxx_prompt=y
set try
- if eval $compile && ./try > /dev/null; then
+ if eval $compile && $run ./try > /dev/null; then
dflt=`$run ./try`
case "$dflt" in
[1-4][1-4][1-4][1-4]|12345678|87654321)
esac
;;
esac
- $rm -f try.c try
+ $rm_try
;;
esac
-
$cat <<EOM
Checking to see whether you can access character data unalignedly...
#define U8 $u8type
#include <signal.h>
#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
*) d_u32align="$define" ;;
esac
fi
-$rm -f core core.try.* try.core
+$rm_try
;;
esac
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
: see if ustat exists
set ustat d_ustat
-eval $inlibc
-
-: backward compatibility for d_hvfork
-if test X$d_hvfork != X; then
- d_vfork="$d_hvfork"
- d_hvfork=''
-fi
-: see if there is a vfork
-val=''
-set vfork val
-eval $inlibc
-
-: Ok, but do we want to use it. vfork is reportedly unreliable in
-: perl on Solaris 2.x, and probably elsewhere.
-case "$val" in
-$define)
- echo " "
- case "$usevfork" in
- false) dflt='n';;
- *) dflt='y';;
- esac
- cat <<'EOM'
-
-Perl can only use a vfork() that doesn't suffer from strict
-restrictions on calling functions or modifying global data in
-the child. For example, glibc-2.1 contains such a vfork()
-that is unsuitable. If your system provides a proper fork()
-call, chances are that you do NOT want perl to use vfork().
-
-EOM
- rp="Do you still want to use vfork()?"
- . ./myread
- case "$ans" in
- y|Y) ;;
- *)
- echo "Ok, we won't use vfork()."
- val="$undef"
- ;;
- esac
- ;;
-esac
-set d_vfork
-eval $setvar
-case "$d_vfork" in
-$define) usevfork='true';;
-*) usevfork='false';;
-esac
+eval $inlibc
: see if closedir exists
set closedir d_closedir
#endif
#endif
#endif
-#endif
+#endif
int main() { return closedir(opendir(".")); }
EOM
set try
esac
set d_void_closedir
eval $setvar
-$rm -f try try.*
+$rm_try
+
: see if there is a wait4
set wait4 d_wait4
eval $inlibc
rp="Doubles must be aligned on a how-many-byte boundary?"
. ./myread
alignbytes="$ans"
- $rm -f try.c try
+ $rm_try
;;
esac
/* check that db.h & libdb are compatible */
if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
printf("db.h and libdb are incompatible.\n") ;
- exit(3);
+ exit(3);
}
printf("db.h and libdb are compatible.\n") ;
if (Version < 2003004) {
/* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
- exit(2);
+ exit(2);
}
exit(0);
;;
esac
fi
- $rm -f try.*
+ $rm_try
;;
esac
case "$i_db" in
define)
- : Check the return type needed for hash
+ : Check the return type needed for hash
echo " "
echo "Checking return type needed for hash for Berkeley DB ..." >&4
$cat >try.c <<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_try
echo "Your version of Berkeley DB uses $db_hashtype for hash."
;;
*) db_hashtype=u_int32_t
esac
case "$i_db" in
define)
- : Check the return type needed for prefix
+ : Check the return type needed for prefix
echo " "
echo "Checking return type needed for prefix for Berkeley DB ..." >&4
cat >try.c <<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_try
echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
;;
*) db_prefixtype='size_t'
;;
esac
-
: How can we generate normalized random numbers ?
echo " "
echo "Looking for a random number function..." >&4
rp="How many bits does your $randfunc() function produce?"
. ./myread
randbits="$ans"
- $rm -f try.c try
+ $rm_try
drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
seedfunc="s$randfunc"
randseedtype=unsigned
echo "I'm unable to compile the test program." >&4
echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
fi
-$rm -f try try.*
+$rm_try
set ebcdic
eval $setvar
# endif
# endif
# endif
-# endif
+# endif
# ifdef HAS_STDIO_STREAM_ARRAY
if (open_max > 0) {
long i;
STDIO_STREAM_ARRAY[i]._file < open_max &&
STDIO_STREAM_ARRAY[i]._flag)
fflush(&STDIO_STREAM_ARRAY[i]);
- }
+ }
}
# endif
#endif
fi
fi
fi
- $rm -f core try.core core.try.*
+ $rm_try
case "$fflushNULL" in
x) $cat >&4 <<EOM
Your fflush(NULL) works okay for output streams.
fflushall="`$cat try.out`"
fi
fi
- $rm -f core try.core core.try.*
+ $rm_try
case "$fflushall" in
x) $cat >&4 <<EOM
Whew. Flushing explicitly all the stdio streams works.
EOM
;;
esac
-$rm -f try.* try$exe_ext
+$rm_try
: Store the full pathname to the ar program for use in the C program
: Respect a hint or command line value for full_ar.
if $test X"$sPRId64" = X; then
echo "Cannot figure out how to print 64-bit integers." >&4
fi
-
-$rm -f try try.*
+$rm_try
fi
case "$sPRId64" in
-'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
- d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
+'') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
+ d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
;;
-*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
- d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
+*) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
+ d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
;;
esac
*) 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 <<EOM
+
+Would you like to build with Misc Attribute Decoration? This is development
+work leading to a Perl 5 to Perl 6 convertor, which imposes a space and speed
+overhead on the interpreter.
+
+If this doesn't make any sense to you, just accept the default '$dflt'.
+EOM
+ rp='Build Perl with MAD?'
+ . ./myread
+fi
+case "$ans" in
+y|Y) val="$define"
+ madlyh='madly.h madly.act madly.tab'
+ madlysrc='madly.c'
+ madlyobj="madly$_o" ;;
+*) val="$undef"
+ madlyh=''
+ madlysrc=''
+ madlyobj='' ;;
+esac
+set mad
+eval $setvar
+
echo " "
echo "Checking if your $make program sets \$(MAKE)..." >&4
case "$make_set_make" in
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 "<stdarg.h> found." >&4
- valstd="$define"
-else
- echo "<stdarg.h> NOT found." >&4
- valstd="$undef"
-fi
-
-: see if varags is available
-echo " "
-if $test `./findhdr varargs.h`; then
- echo "<varargs.h> found." >&4
-else
- echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
-fi
-
-: set up the varargs testing programs
-$cat > varargs.c <<EOP
-#ifdef I_STDARG
-#include <stdarg.h>
-#endif
-#ifdef I_VARARGS
-#include <varargs.h>
-#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 <<EOP
-$startsh
-if $cc -c $ccflags -D\$1 varargs.c >/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
{
return vfprintf(f, fmt, *valp);
}
-
-int
+
+int
myvfprintf(FILE *f, const char *fmt, va_list val)
{
return ivfprintf(f, fmt, &val);
}
-
+
int
-myprintf(char *fmt, ...)
+myprintf(char *fmt, ...)
{
va_list val;
va_start(val, fmt);
- return myvfprintf(stdout, fmt, val);
-}
+ return myvfprintf(stdout, fmt, val);
+}
int
main(int ac, char **av)
{
signal(SIGSEGV, exit);
- myprintf("%s%cs all right, then\n", "that", '\'');
- exit(0);
+ myprintf("%s%cs all right, then\n", "that", '\'');
+ exit(0);
}
EOCP
set try
need_va_copy="$define"
;;
esac
- $rm -f try.* core core.* *.core *.core.*
+ $rm_try
;;
*) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
;;
$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
ranlib=":"
fi
fi
-$rm -f foo* bar*
+$rm -f foo* bar*
-: check for type of arguments to select.
+: check for type of arguments to select.
case "$selecttype" in
'') case "$d_select" in
$define)
Checking to see what type of arguments are accepted by select().
EOM
hdrs="$define sys/types.h
- $i_systime sys/time.h
+ $i_systime sys/time.h
$i_sysselct sys/select.h
$d_socket sys/socket.h"
: The first arg can be int, unsigned, or size_t
#define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
#define NBITS (NBYTES * 8)
int main() {
- char *s = malloc(NBYTES);
+ char *s = (char *)malloc(NBYTES);
struct timeval t;
int i;
FILE* fp;
val=$ans
selectminbits="$val"
fi
- $rm -f try.* try
+ $rm_try
;;
*) : no select, so pick a harmless default
selectminbits=$safebits
#endif
#ifndef NSIG
+# ifdef _SIG_MAX
+# define NSIG (_SIG_MAX+1)
+# endif
+#endif
+
+#ifndef NSIG
# ifdef MAXSIG
# define NSIG (MAXSIG+1)
# endif
#ifndef NSIG
# ifdef SIGARRAYSIZE
-# define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
+# define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
# endif
#endif
printf "\n"
}'
sig_size=`echo $sig_name | awk '{print NF}'`
-$rm -f signal signal.c signal.awk signal.lst signal_cmd
+$rm -f signal signal.c signal.awk signal.lst signal_cmd
echo " "
case "$sizetype" in
size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
esac
fi
-$rm -f try try.*
+$rm_try
set d_socklen_t
eval $setvar
printf("$dflt\n");
else if (sizeof(Size_t) == sizeof(int))
printf("int\n");
- else
+ else
printf("long\n");
exit(0);
}
. ./myread
ssizetype="$ans"
fi
-$rm -f try try.*
+$rm_try
: see what type of char stdio uses.
echo " "
-echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
+echo '#include <stdio.h>' > 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"
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 " "
;;
esac
+
+: see if this is a assert.h system
+set assert.h i_assert
+eval $inhdr
+
: see if this is a fp.h system
set fp.h i_fp
eval $inhdr
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 <gdbm.h>"
+ ;;
+ 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
echo "We won't be including <net/errno.h>." >&4
val="$undef"
fi
- $rm -f try.* try
+ $rm_try
;;
esac
set i_neterrno
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
INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
-Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
+LIBCATAMOUNT Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
pc532 pdp11 PGC PIC plexus PORTAR posix
POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
POSIX_C_SOURCE POSIX_SOURCE POWER
-PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
+PROTOTYPES PWB pyr QNX QK_USER R3000 REENTRANT RES Rhapsody RISC6000
riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
sony sony_news sonyrisc sparc sparclite spectrum
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
$startsh
cat <<'EOCP' > try.c
#include <stdio.h>
+#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
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
-A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
esac
done
-$rm -f try.c
+$rm_try
EOS
postprocess_cc_v=''
chmod +x ccsym
$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
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
;;
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 <gdbm.h>"
- ;;
- 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
: NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
find_extensions='
for xxx in *; do
- case "$xxx" in
- DynaLoader|dynaload) ;;
- *)
- if $test -f $xxx/$xxx.xs; then
- known_extensions="$known_extensions $1$xxx";
- elif $test -f $xxx/Makefile.PL; then
- nonxs_extensions="$nonxs_extensions $1$xxx";
- else
- if $test -d $xxx -a $# -lt 10; then
- set $1$xxx/ $*;
- cd "$xxx";
- eval $find_extensions;
- cd ..;
- shift;
- fi;
- fi
- ;;
- esac;
+ case "$xxx" in
+ DynaLoader|dynaload) ;;
+ *)
+ if $test -f $xxx/$xxx.xs -o -f $xxx/$xxx.c; then
+ known_extensions="$known_extensions $1$xxx";
+ elif $test -f $xxx/Makefile.PL; then
+ nonxs_extensions="$nonxs_extensions $1$xxx";
+ else
+ if $test -d $xxx -a $# -lt 10; then
+ set $1$xxx/ $*;
+ cd "$xxx";
+ eval $find_extensions;
+ cd ..;
+ shift;
+ fi;
+ fi
+ ;;
+ esac;
done'
tdir=`pwd`
cd "$rsrc/ext"
set X
shift
eval $find_extensions
-# Special case: Add in threads/shared since it is not picked up by the
-# recursive find above (and adding in general recursive finding breaks
-# SDBM_File/sdbm). A.D. 10/25/2001.
-known_extensions="$known_extensions threads/shared"
-set X $nonxs_extensions
-shift
-nonxs_extensions="$*"
+# Special case: Add in modules that nest beyond the first level.
+# Currently threads/shared and Hash/Util/FieldHash, since they are
+# not picked up by the recursive find above (and adding in general
+# recursive finding breaks SDBM_File/sdbm).
+# A.D. 20011025 (SDBM), ajgough 20071008 (FieldHash)
+known_extensions="$known_extensions threads/shared Hash/Util/FieldHash"
set X $known_extensions
shift
known_extensions="$*"
+set X $nonxs_extensions
+shift
+nonxs_extensions="$*"
cd "$tdir"
: Now see which are supported on this system.
esac
;;
GDBM_File|gdbm_fil)
- case "$i_gdbm" in
+ case "$i_gdbm" in
$define) avail_ext="$avail_ext $xxx" ;;
esac
;;
I18N/Langinfo|i18n_lan)
- case "$i_langinfo$d_nl_langinfo" in
+ case "$i_langinfo$d_nl_langinfo" in
$define$define) avail_ext="$avail_ext $xxx" ;;
esac
;;
+ IPC/SysV|ipc/sysv)
+ : XXX Do we need a useipcsysv variable here
+ case "${d_msg}${d_sem}${d_shm}" in
+ *"${define}"*) avail_ext="$avail_ext $xxx" ;;
+ esac
+ ;;
NDBM_File|ndbm_fil)
case "$i_ndbm" in
$define)
;;
esac
;;
- ODBM_File|odbm_fil)
+ ODBM_File|odbm_fil)
case "${i_dbm}${i_rpcsvcdbm}" in
*"${define}"*)
- case "$osname-$use64bitint" in
- hpux-define)
- case "$libs" in
- *-ldbm*) avail_ext="$avail_ext $xxx" ;;
+ case "$d_cplusplus" in
+ define) ;; # delete as a function name will not work
+ *) case "$osname-$use64bitint" in
+ hpux-define)
+ case "$libs" in
+ *-ldbm*) avail_ext="$avail_ext $xxx" ;;
+ esac
+ ;;
+ *) avail_ext="$avail_ext $xxx" ;;
esac
;;
- *) avail_ext="$avail_ext $xxx" ;;
esac
;;
esac
;;
- POSIX|posix)
- case "$useposix" in
+ Opcode|opcode)
+ case "$useopcode" in
true|define|y) avail_ext="$avail_ext $xxx" ;;
esac
;;
- Opcode|opcode)
- case "$useopcode" in
+ POSIX|posix)
+ case "$useposix" in
true|define|y) avail_ext="$avail_ext $xxx" ;;
esac
;;
Socket|socket)
- case "$d_socket" in
+ case "$d_socket" in
true|$define|y)
case "$osname" in
beos) ;; # not unless BONE
;;
Sys/Syslog|sys/syslog)
: XXX syslog requires socket
- case "$d_socket" in
+ case "$d_socket" in
true|$define|y) avail_ext="$avail_ext $xxx" ;;
esac
;;
Thread|thread)
case "$usethreads" in
true|$define|y)
- case "$useithreads" in
- $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
+ case "$use5005threads" in
+ $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
esac
esac
;;
- XS/APItest|xs/apitest)
- # This is just for testing. Skip it unless we have dynamic loading.
-
- case "$usedl" in
- $define) avail_ext="$avail_ext $xxx" ;;
- esac
- ;;
- XS/Typemap|xs/typemap)
- # This is just for testing. Skip it unless we have dynamic loading.
- case "$usedl" in
- $define) avail_ext="$avail_ext $xxx" ;;
- esac
- ;;
threads|threads/shared)
# threads and threads::shared are special cases.
# To stop people from asking "Perl 5.8.0 was supposed
# --jhi
avail_ext="$avail_ext $xxx"
;;
- IPC/SysV|ipc/sysv)
- : XXX Do we need a useipcsysv variable here
- case "${d_msg}${d_sem}${d_shm}" in
- *"${define}"*) avail_ext="$avail_ext $xxx" ;;
+ Win32*)
+ case "$osname" in
+ cygwin) avail_ext="$avail_ext $xxx" ;;
+ esac
+ ;;
+ XS/APItest|xs/apitest)
+ # This is just for testing. Skip it unless we have dynamic loading.
+
+ case "$usedl" in
+ $define) avail_ext="$avail_ext $xxx" ;;
+ esac
+ ;;
+ XS/Typemap|xs/typemap)
+ # This is just for testing. Skip it unless we have dynamic loading.
+ case "$usedl" in
+ $define) avail_ext="$avail_ext $xxx" ;;
esac
;;
*) avail_ext="$avail_ext $xxx"
previous)
if test X"$dynamic_ext" != X"$avail_ext"; then
$cat <<EOM
-NOTICE: Your previous config.sh list may be incorrect.
-The extensions now available to you are
+NOTICE: Your previous config.sh list may be incorrect.
+The extensions now available to you are
${avail_ext}
but the default list from your previous config.sh is
- ${dynamic_ext}
+ ${dynamic_ext}
EOM
fi
shift
dflt="$*"
;;
- *) dflt="$static_ext"
+ *) dflt="$static_ext"
;;
esac
;;
*)
$cat <<EOM
-A number of extensions are supplied with $package. Answer "none"
-to include no extensions.
+A number of extensions are supplied with $package. Answer "none"
+to include no extensions.
Note that DynaLoader is always built and need not be mentioned here.
EOM
previous)
if test X"$static_ext" != X"$avail_ext"; then
$cat <<EOM
-NOTICE: Your previous config.sh list may be incorrect.
-The extensions now available to you are
+NOTICE: Your previous config.sh list may be incorrect.
+The extensions now available to you are
${avail_ext}
but the default list from your previous config.sh is
- ${static_ext}
+ ${static_ext}
EOM
fi
esac
;;
esac
-#
+#
# Encode is a special case. If we are building Encode as a static
# extension, we need to explicitly list its subextensions as well.
# For other nested extensions, this is handled automatically by
cf_by='$cf_by'
cf_email='$cf_email'
cf_time='$cf_time'
-charsize='$charsize'
chgrp='$chgrp'
chmod='$chmod'
chown='$chown'
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'
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'
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'
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'
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'
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'
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'
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_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'
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_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'
i8size='$i8size'
i8type='$i8type'
i_arpainet='$i_arpainet'
+i_assert='$i_assert'
i_bsdioctl='$i_bsdioctl'
i_crypt='$i_crypt'
i_db='$i_db'
inc_version_list_init='$inc_version_list_init'
incpath='$incpath'
inews='$inews'
+initialinstalllocation='$initialinstalllocation'
installarchlib='$installarchlib'
installbin='$installbin'
installhtml1dir='$installhtml1dir'
ls='$ls'
lseeksize='$lseeksize'
lseektype='$lseektype'
+mad='$mad'
+madlyh='$madlyh'
+madlyobj='$madlyobj'
+madlysrc='$madlysrc'
mail='$mail'
mailx='$mailx'
make='$make'
readdir_r_proto='$readdir_r_proto'
revision='$revision'
rm='$rm'
+rm_try='$rm_try'
rmail='$rmail'
run='$run'
runnm='$runnm'