3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist package (which contains metaconfig) is available via SVN:
17 # svn co https://svn.sourceforge.net/svnroot/dist/trunk/dist
20 # Though this script was generated by metaconfig, it is OK to send
21 # patches against it. It's up to the Configure pumpkin to backport
22 # the patch to the metaunits if it is accepted.
23 # See Porting/pumpkin.pod for more information on metaconfig.
26 # $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
28 # Generated on Sat May 17 16:03:30 CEST 2008 [metaconfig 3.5 PL0]
29 # (with additional metaconfig patches by perlbug@perl.org)
34 SCO csh still thinks true is false. Write to SCO today and tell them that next
35 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
37 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
38 we'd have to do is go in and swap the && and || tokens, wherever they are.)
40 [End of diatribe. We now return you to your regularly scheduled programming...]
44 OOPS! You naughty creature! You didn't run Configure with sh!
45 I will attempt to remedy the situation by running sh for you...
49 true || exec sh $0 $argv:q
51 (exit $?0) || cat c2$$
52 (exit $?0) || exec sh $0 $argv:q
55 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
58 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
59 *** Configure that well. (Plan 9 is close to UNIX but not close enough.)
60 *** Please read the README.plan9 for further instructions.
61 *** Cannot continue, aborting.
67 if test ! -c /dev/null ; then
70 *** I'm sorry, but /dev/null appears to be a file rather than a device.
71 *** Please consult your operating sytem's notes for making a device
73 *** Cannot continue, aborting.
79 : compute my invocation name
83 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
88 : Proper separator for the PATH environment variable
90 : On OS/2 this directory should exist if this is not floppy only system ":-]"
91 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
92 if test -n "$OS2_SHELL"; then
94 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
95 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
97 elif test -n "$DJGPP"; then
98 case "X${MACHTYPE:-nonesuchmach}" in
105 : Proper PATH setting
106 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
107 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
108 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
109 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
110 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
111 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
112 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
113 paths="$paths /sbin /usr/sbin /usr/libexec"
114 paths="$paths /system/gnu_library/bin"
118 case "$p_$PATH$p_" in
120 *) test -d $p && PATH=$PATH$p_$p ;;
127 : shall we be using ksh?
133 if (PATH=.; alias -x) >/dev/null 2>&1; then
136 if test -f /hp-ux -a -f /bin/ksh; then
137 needksh='to avoid sh bug in "here document" expansion'
139 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
140 if test X`/usr/bin/uname -v` = X4; then
141 avoidksh="to avoid AIX 4's /bin/sh"
145 if test -f /osf_boot -a -f /usr/sbin/setld; then
146 if test X`/usr/bin/uname -s` = XOSF1; then
147 avoidksh="to avoid Digital UNIX' ksh"
152 case "$inksh/$needksh" in
159 case "$inksh/$avoidksh" in
165 case "$inksh/$needksh-$avoidksh-" in
168 (I see you are using the Korn shell. Some ksh's blow up on $me,
169 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
176 echo "(Feeding myself to $newsh $reason.)"
178 Configure|*/Configure) exec $newsh $0 "$@";;
179 *) exec $newsh Configure "$@";;
183 test -x "${newsh}" || unset newsh
185 : if needed, set CDPATH to a harmless value that is not chatty
186 : avoid bash 2.02 problems with empty CDPATH.
190 *bash*) CDPATH='.' ;;
196 : Configure runs within the UU subdirectory
197 test -d UU || mkdir UU
335 initialinstalllocation=''
362 d_attribute_format=''
363 d_attribute_malloc=''
364 d_attribute_nonnull=''
365 d_attribute_noreturn=''
367 d_attribute_unused=''
368 d_attribute_warn_unused_result=''
369 d_printf_format_null=''
372 d_builtin_choose_expr=''
375 d_c99_variadic_macros=''
422 endhostent_r_proto=''
428 endprotoent_r_proto=''
434 endservent_r_proto=''
486 gethostbyaddr_r_proto=''
488 gethostbyname_r_proto=''
490 gethostent_r_proto=''
502 getnetbyaddr_r_proto=''
504 getnetbyname_r_proto=''
518 d_getprotobyname_r=''
519 getprotobyname_r_proto=''
520 d_getprotobynumber_r=''
521 getprotobynumber_r_proto=''
523 getprotoent_r_proto=''
535 getservbyname_r_proto=''
537 getservbyport_r_proto=''
539 getservent_r_proto=''
563 d_libm_lib_version=''
566 d_localtime_r_needs_tzset=''
577 d_malloc_good_size=''
619 d_old_pthread_create_joinable=''
620 old_pthread_create_joinable=''
622 d_pthread_attr_setscope=''
661 sethostent_r_proto=''
678 setprotoent_r_proto=''
690 setservent_r_proto=''
724 d_sprintf_returns_strlen=''
739 d_stdio_ptr_lval_nochange_cnt=''
740 d_stdio_ptr_lval_sets_cnt=''
950 d_inc_version_list=''
952 inc_version_list_init=''
971 ignore_versioned_solibs=''
1035 d_perl_otherlibdirs=''
1043 api_versionstring=''
1049 version_patchlevel_string=''
1053 d_nv_preserves_uv=''
1054 d_nv_zero_is_allbits_zero=''
1065 nv_overflows_integers_at=''
1066 nv_preserves_uv_bits=''
1138 installsitehtml1dir=''
1141 installsitehtml3dir=''
1148 installsiteman1dir=''
1151 installsiteman3dir=''
1156 installsitescript=''
1171 d_stdio_stream_array=''
1172 stdio_stream_array=''
1185 ccflags_uselargefiles=''
1186 ldflags_uselargefiles=''
1187 libswanted_uselargefiles=''
1207 installvendorarch=''
1214 installvendorhtml1dir=''
1216 vendorhtml1direxp=''
1217 installvendorhtml3dir=''
1219 vendorhtml3direxp=''
1225 installvendorman1dir=''
1228 installvendorman3dir=''
1235 installvendorscript=''
1248 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1251 : We must find out about Eunice early
1253 if test -f /etc/unixtovms; then
1254 eunicefix=/etc/unixtovms
1256 if test -f /etc/unixtovms.exe; then
1257 eunicefix=/etc/unixtovms.exe
1260 : Set executable suffix now -- needed before hints available
1261 if test -f "/libs/version.library"; then
1264 elif test -f "/system/gnu_library/bin/ar.pm"; then
1267 elif test -n "$DJGPP"; then
1270 elif test -d c:/. -o -n "$is_os2" ; then
1276 : Trailing extension. Override this in a hint file, if needed.
1277 : Extra object files, if any, needed on this platform.
1282 : change the next line if compiling for Xenix/286 on Xenix/386
1283 xlibpth='/usr/lib/386 /lib/386'
1284 : Possible local library directories to search.
1285 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1286 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1288 : general looking path for locating libraries
1289 glibpth="/lib /usr/lib $xlibpth"
1290 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1291 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1292 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1293 test -d /usr/lib64 && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
1295 : Private path used by Configure to find libraries. Its value
1296 : is prepended to libpth. This variable takes care of special
1297 : machines, like the mips. Usually, it should be empty.
1300 : default library list
1302 : some systems want to use only the non-versioned libso:s
1303 ignore_versioned_solibs=''
1304 : set usethreads on the Configure command line to enable threads.
1305 usereentrant='undef'
1306 : full support for void wanted by default
1309 : Possible local include directories to search.
1310 : Set locincpth to "" in a hint file to defeat local include searches.
1311 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1312 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1314 : no include file wanted by default
1317 : Enable -DEBUGGING and -DDEBUGGING from the command line
1324 : set useposix=false in your hint file to disable the POSIX extension.
1326 : set useopcode=false in your hint file to disable the Opcode extension.
1329 ccflags_uselargefiles=''
1330 ldflags_uselargefiles=''
1331 libswanted_uselargefiles=''
1332 : set usemultiplicity on the Configure command line to enable multiplicity.
1333 : set usesocks on the Configure command line to enable socks.
1334 : List of libraries we want.
1335 : If anyone needs extra -lxxx, put those in a hint file.
1336 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1337 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1338 : We probably want to search /usr/shlib before most other libraries.
1339 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1340 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1341 glibpth="/usr/shlib $glibpth"
1342 : Do not use vfork unless overridden by a hint file.
1345 : Find the basic shell for Bourne shell scripts
1349 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1352 if test -f "$xxx"; then
1355 : Build up a list and do a single loop so we can 'break' out.
1356 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1357 for xxx in sh bash ksh pdksh ash; do
1359 try="$try ${p}/${xxx}"
1363 if test -f "$xxx"; then
1366 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1369 elif test -f "$xxx.exe"; then
1380 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1382 Usually it's in /bin/sh. How did you even get this far?
1383 Please contact me (Perl Maintainers) at perlbug@perl.org and
1384 we'll try to straighten this all out.
1390 : see if sh knows # comments
1391 if `$sh -c '#' >/dev/null 2>&1`; then
1395 test -f $xcat$_exe || xcat=/usr/bin/cat
1396 if test ! -f $xcat$_exe; then
1397 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1398 if test -f $p/cat$_exe; then
1403 if test ! -f $xcat$_exe; then
1404 echo "Can't find cat anywhere!"
1408 echo "#!$xcat" >sharp
1412 if test -s today; then
1415 echo "#! $xcat" > sharp
1419 if test -s today; then
1427 echo "Your $sh doesn't grok # comments--I will strip them later on."
1430 echo "exec grep -v '^[ ]*#'" >spitshell
1432 $eunicefix spitshell
1433 spitshell=`pwd`/spitshell
1435 echo "I presume that if # doesn't work, #! won't work either!"
1440 : figure out how to guarantee sh startup
1442 '') startsh=${sharpbang}${sh} ;;
1454 : echo "Yup, it does."
1456 echo "Hmm... '$startsh' does not guarantee sh startup..."
1457 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1461 : Save command line options in file UU/cmdline.opt for later use in
1462 : generating config.sh.
1463 cat > cmdline.opt <<EOSH
1464 : Configure command line arguments.
1473 cat >>cmdline.opt <<EOSH
1474 config_arg$argn='$arg'
1476 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1479 arg_exp=`cat cmdl.opt`
1480 args_exp="$args_exp$args_sep'$arg_exp'"
1481 argn=`expr $argn + 1`
1486 : produce awk script to parse command line options
1487 cat >options.awk <<'EOF'
1489 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1491 len = length(optstr);
1492 for (i = 1; i <= len; i++) {
1493 c = substr(optstr, i, 1);
1494 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1505 if (substr(str, 1, 1) != "-") {
1506 printf("'%s'\n", str);
1510 for (i = 2; i <= len; i++) {
1511 c = substr(str, i, 1);
1513 printf("-%s\n", substr(str, i));
1519 printf("'%s'\n", substr(str, i + 1));
1532 : process the command line options
1533 set X `for arg in "$@"; do echo "X$arg"; done |
1534 sed -e s/X// | awk -f options.awk`
1539 : set up default values
1549 rm -f optdef.sh posthint.sh
1550 cat >optdef.sh <<EOS
1556 while test $# -gt 0; do
1558 -d) shift; fastread=yes;;
1559 -e) shift; alldone=cont;;
1563 if test -r "$1"; then
1566 echo "$me: cannot read config file $1." >&2
1572 -h) shift; error=true;;
1573 -r) shift; reuseval=true;;
1574 -s) shift; silent=true; realsilent=true;;
1575 -E) shift; alldone=exit;;
1576 -K) shift; knowitall=true;;
1577 -O) shift; override=true;;
1578 -S) shift; silent=true; extractsh=true;;
1583 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1584 echo "$me: ignoring -D $1" >&2
1587 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1588 *) echo "$1='define'" >> optdef.sh;;
1595 *=) echo "$1" >> optdef.sh;;
1597 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1598 echo "$me: ignoring -U $1" >&2
1600 *) echo "$1='undef'" >> optdef.sh;;
1611 *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1615 zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1616 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1622 *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1623 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1624 zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1625 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1626 *) xxx=`echo "$yyy"|sed 's!:.*!!'`
1627 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1633 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1635 echo "$yyy=''" >> posthint.sh ;;
1640 echo "$yyy='$zzz'" >> posthint.sh ;;
1642 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1644 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1649 echo "$yyy=$zzz" >> posthint.sh ;;
1650 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1654 -V) echo "$me generated by metaconfig 3.5 PL0." >&2
1657 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1665 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1666 [-U symbol] [-U symbol=] [-A command:symbol...]
1667 -d : use defaults for all answers.
1668 -e : go on without questioning past the production of config.sh.
1669 -f : specify an alternate default configuration file.
1670 -h : print this help message and exit (with an error status).
1671 -r : reuse C symbols value if possible (skips costly nm extraction).
1672 -s : silent mode, only echoes questions and essential information.
1673 -D : define symbol to have some value:
1674 -D symbol symbol gets the value 'define'
1675 -D symbol=value symbol gets the value 'value'
1676 common used examples (see INSTALL for more info):
1677 -Duse64bitint use 64bit integers
1678 -Duse64bitall use 64bit integers and pointers
1679 -Dusethreads use thread support
1680 -Dinc_version_list=none do not include older perl trees in @INC
1681 -DEBUGGING=none DEBUGGING options
1682 -Dcc=gcc choose your compiler
1683 -Dprefix=/opt/perl5 choose your destination
1684 -E : stop at the end of questions, after having produced config.sh.
1685 -K : do not use unless you know what you are doing.
1686 -O : let -D and -U override definitions from loaded configuration file.
1687 -S : perform variable substitutions on all .SH files (can mix with -f)
1688 -U : undefine symbol:
1689 -U symbol symbol gets the value 'undef'
1690 -U symbol= symbol gets completely empty
1692 -A : manipulate symbol after the platform specific hints have been applied:
1693 -A append:symbol=value append value to symbol
1694 -A symbol=value like append:, but with a separating space
1695 -A define:symbol=value define symbol to have value
1696 -A clear:symbol define symbol to be ''
1697 -A define:symbol define symbol to be 'define'
1698 -A eval:symbol=value define symbol to be eval of value
1699 -A prepend:symbol=value prepend value to symbol
1700 -A undef:symbol define symbol to be 'undef'
1701 -A undef:symbol= define symbol to be ''
1702 e.g.: -A prepend:libswanted='cl pthread '
1703 -A ccflags=-DSOME_MACRO
1704 -V : print version number and exit (with a zero status).
1711 case "$fastread$alldone" in
1714 case "$extractsh" in
1717 if test ! -t 0; then
1718 echo "Say 'sh Configure', not 'sh <Configure'"
1728 true) exec 1>/dev/null;;
1731 : run the defines and the undefines, if any, but leave the file out there...
1734 : create the posthint manipulation script and leave the file out there...
1739 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1740 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1741 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1742 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1743 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1746 : Some greps do not return status, grrr.
1747 echo "grimblepritz" >grimble
1748 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1750 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1756 : the following should work in any shell
1760 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1761 cat >contains <<'EOSS'
1762 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1767 : Find the path to the source tree
1770 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1774 *) src=`cd ../$src && pwd` ;;
1787 if test -f $rsrc/Configure && \
1788 $contains "^package='$package'\$" $rsrc/Configure >/dev/null 2>&1
1790 : found it, so we are ok.
1793 for src in . .. ../.. ../../.. ../../../..; do
1794 if test -f ../$src/Configure && \
1795 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1806 Sorry, I can't seem to locate the source dir for $package. Please start
1807 Configure with an explicit path -- i.e. /some/path/Configure.
1815 echo "Sources for $package found in \"$src\"." >&4
1819 : script used to extract .SH files with variable substitutions
1820 cat >extract <<'EOS'
1822 echo "Doing variable substitutions on .SH files..."
1823 if test -f MANIFEST; then
1824 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1826 echo "(Looking for .SH files under the source directory.)"
1827 set x `(cd "$src"; find . -name "*.SH" -print)`
1831 0) set x `(cd "$src"; echo *.SH)`; shift;;
1833 if test ! -f "$src/$1"; then
1839 while test $name; do
1840 if test ! -d "$name"; then
1841 create="$name $create";
1842 name=`echo $name | sed -e "s|^[^/]*$||"`;
1843 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1848 for file in $create; do
1857 dir=`expr X$file : 'X\(.*\)/'`
1858 file=`expr X$file : 'X.*/\(.*\)'`
1859 (cd "$dir" && . ./$file)
1869 dir=`expr X$file : 'X\(.*\)/'`
1870 file=`expr X$file : 'X.*/\(.*\)'`
1871 (set x $dir; shift; eval $mkdir_p)
1872 sh <"$src/$dir/$file"
1881 if test -f "$src/config_h.SH"; then
1882 if test ! -f config.h; then
1883 : oops, they left it out of MANIFEST, probably, so do it anyway.
1884 . "$src/config_h.SH"
1889 : extract files and exit if asked to do so
1890 case "$extractsh" in
1892 case "$realsilent" in
1896 case "$config_sh" in
1897 '') config_sh='config.sh';;
1900 echo "Fetching answers from $config_sh..."
1903 test "$override" && . ./optdef.sh
1907 echo "Extraction done."
1912 : Eunice requires " " instead of "", can you believe it
1915 echo "Beginning of configuration questions for $package."
1917 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1919 : first determine how to suppress newline on echo command
1921 echo "Checking echo to see how to suppress newlines..."
1922 (echo "hi there\c" ; echo " ") >.echotmp
1923 if $contains c .echotmp >/dev/null 2>&1 ; then
1934 echo $n "The star should be here-->$c"
1938 : Now test for existence of everything in MANIFEST
1940 if test -f "$rsrc/MANIFEST"; then
1941 echo "First let's make sure your kit is complete. Checking..." >&4
1942 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" |\
1943 (split -l 50 2>/dev/null || split -50)
1946 for filelist in x??; do
1947 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` \
1948 >/dev/null 2>>"$tmppwd/missing")
1950 if test -s missing; then
1954 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1956 You have the option of continuing the configuration process, despite the
1957 distinct possibility that your kit is damaged, by typing 'y'es. If you
1958 do, don't blame me if something goes wrong. I advise you to type 'n'o
1959 and contact the author (perlbug@perl.org).
1962 echo $n "Continue? [n] $c" >&4
1966 echo "Continuing..." >&4
1970 echo "ABORTING..." >&4
1975 echo "Looks good..."
1978 echo "There is no MANIFEST file. I hope your kit is complete !"
1982 : Find the appropriate value for a newline for tr
1984 if test -n "$DJGPP"; then
1987 if test X"$trnl" = X; then
1988 case "`echo foo|tr '\n' x 2>/dev/null`" in
1992 if test X"$trnl" = X; then
1993 case "`echo foo|tr '\012' x 2>/dev/null`" in
1994 foox) trnl='\012' ;;
1997 if test X"$trnl" = X; then
1998 case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1999 fooxy) trnl='\n\r' ;;
2002 if test X"$trnl" = X; then
2005 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
2011 : compute the number of columns on the terminal for proper question formatting
2016 : set up the echo used in my read
2017 myecho="case \"\$xxxm\" in
2018 '') echo $n \"\$rp $c\" >&4;;
2020 '') echo $n \"[\$xxxm] $c\";;
2022 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
2024 echo $n \"[\$xxxm] $c\" >&4
2026 echo $n \"\$rp [\$xxxm] $c\" >&4
2032 : now set up to do reads with possible shell escape and default assignment
2038 case "\$fastread" in
2039 yes) case "\$dflt" in
2042 case "\$silent-\$rp" in
2047 *) case "\$silent" in
2048 true) case "\$rp" in
2053 while expr "X\$ans" : "X!" >/dev/null; do
2057 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2065 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2074 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2079 echo "(OK, I'll run with -d after this question.)" >&4
2082 echo "*** Sorry, \$1 not supported yet." >&4
2092 echo "*** Substitution done -- please confirm."
2094 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2099 echo "*** Error -- try again."
2106 case "\$ans\$xxxm\$nostick" in
2118 : create .config dir to save info across Configure sessions
2119 test -d ../.config || mkdir ../.config
2120 cat >../.config/README <<EOF
2121 This directory created by Configure to save information that should
2122 persist across sessions for $package.
2124 You may safely delete it if you wish.
2127 : See if we are using a devel version and want that
2128 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2130 $define|true|[yY]*) ;;
2131 *) case "$xversion" in
2134 *** WHOA THERE!!! ***
2136 This is an UNSTABLE DEVELOPMENT release.
2137 The version of this $package distribution is $xversion, that is, odd,
2138 (as opposed to even) and that signifies a development release.
2139 If you want a maintenance release, you want an even-numbered version.
2141 Do ***NOT*** install this into production use.
2142 Data corruption and crashes are possible.
2144 It is most seriously suggested that you do not continue any further
2145 unless you want to help in developing and debugging Perl.
2147 If you *still* want to build perl, you can answer 'y' now,
2148 or pass -Dusedevel to Configure.
2151 rp='Do you really want to continue?'
2155 [yY]) echo >&4 "Okay, continuing."
2156 usedevel="$define" ;;
2157 *) echo >&4 "Okay, bye."
2167 case "$versiononly" in
2168 '') versiononly="$define" ;;
2170 case "$installusrbinperl" in
2171 '') installusrbinperl="$undef" ;;
2176 : general instructions
2179 user=`(logname) 2>/dev/null`
2181 '') user=`whoami 2>&1`;;
2183 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2186 rp='Would you like to see the instructions?'
2197 This installation shell script will examine your system and ask you questions
2198 to determine how the perl5 package should be installed. If you get
2199 stuck on a question, you may use a ! shell escape to start a subshell or
2200 execute a command. Many of the questions will have default answers in square
2201 brackets; typing carriage return will give you the default.
2203 On some of the questions which ask for file or directory names you are allowed
2204 to use the ~name construct to specify the login directory belonging to "name",
2205 even if you don't have a shell which knows about that. Questions where this is
2206 allowed will be marked "(~name ok)".
2210 dflt='Type carriage return to continue'
2214 The prompter used in this script allows you to use shell variables and
2215 backticks in your answers. You may use $1, $2, etc... to refer to the words
2216 in the default answer, as if the default line was a set of arguments given to a
2217 script shell. This means you may also use $* to repeat the whole default line,
2218 so you do not have to re-type everything to add something to the default.
2220 Everytime there is a substitution, you will have to confirm. If there is an
2221 error (e.g. an unmatched backtick), the default answer will remain unchanged
2222 and you will be prompted again.
2224 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
2225 the questions and use the computed defaults (or the previous answers if there
2226 was already a config.sh file). Type 'Configure -h' for a list of options.
2227 You may also start interactively and then answer '& -d' at any prompt to turn
2228 on the non-interactive behaviour for the remainder of the execution.
2234 Much effort has been expended to ensure that this shell script will run on any
2235 Unix system. If despite that it blows up on yours, your best bet is to edit
2236 Configure and run it again. If you can't run Configure for some reason,
2237 you'll have to generate a config.sh file by hand. Whatever problems you
2238 have, let me (perlbug@perl.org) know how I blew it.
2240 This installation script affects things in two ways:
2242 1) it may do direct variable substitutions on some of the files included
2244 2) it builds a config.h file for inclusion in C programs. You may edit
2245 any of these files as the need arises after running this script.
2247 If you make a mistake on a question, there is no easy way to back up to it
2248 currently. The easiest thing to do is to edit config.sh and rerun all the SH
2249 files. Configure will offer to let you do this before it runs the SH files.
2252 dflt='Type carriage return to continue'
2254 case "$firsttime" in
2255 true) echo $user >>../.config/instruct;;
2259 : find out where common programs are
2261 echo "Locating common programs..." >&4
2274 if test -d \$dir/\$thing; then
2280 for thisthing in \$dir/\$thing; do
2281 : just loop through to pick last item
2283 if test -f \$thisthing; then
2286 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2289 elif test -f \$dir/\$thing.exe; then
2290 if test -n "$DJGPP"; then
2291 echo \$dir/\$thing.exe
2292 elif test "$eunicefix" != ":"; then
2293 : on Eunice apparently
2345 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2346 pth="$pth /lib /usr/lib"
2347 for file in $loclist; do
2351 if test -f "$xxx"; then
2354 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2355 xxx=`./loc $file $file $pth`
2358 '') xxx=`./loc $file $file $pth`;;
2359 *) xxx=`./loc $xxx $xxx $pth`;;
2361 eval $file=$xxx$_exe
2365 echo $file is in $xxx.
2368 echo $file is in $xxx.
2371 echo "I don't know where '$file' is, and my life depends on it." >&4
2372 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2378 echo "Don't worry if any of the following aren't found..."
2380 for file in $trylist; do
2384 if test -f "$xxx"; then
2387 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2388 xxx=`./loc $file $file $pth`
2391 '') xxx=`./loc $file $file $pth`;;
2392 *) xxx=`./loc $xxx $xxx $pth`;;
2394 eval $file=$xxx$_exe
2398 echo $file is in $xxx.
2401 echo $file is in $xxx.
2404 echo "I don't see $file out there, $say."
2411 echo "Substituting grep for egrep."
2418 echo "Substituting cp for ln."
2427 echo "I can't find make or gmake, and my life depends on it." >&4
2428 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2436 *) # We can't have osname yet.
2437 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2438 # Assume that gmake, if found, is definitely GNU make
2439 # and prefer it over the system make.
2440 echo "Substituting gmake for make."
2448 echo "Hopefully test is built into your sh."
2451 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2452 echo "Using the test built into your sh."
2460 echo "Hopefully echo is built into your sh."
2465 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2466 $echo $n "hi there$c" >foo1
2467 echo $n "hi there$c" >foo2
2468 if cmp foo1 foo2 >/dev/null 2>&1; then
2469 echo "They are compatible. In fact, they may be identical."
2476 They are not compatible! You are probably running ksh on a non-USG system.
2477 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2478 have echo built in and we may have to run some Bourne shell scripts. That
2479 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2482 $echo $n "The star should be here-->$c"
2489 # This question was auctioned at YAPC::Europe-2007 in Vienna
2490 # I never promised you could answer it. I only auctioned the question.
2492 The following message is sponsored by
2494 Dresden.pm<--The stars should be here.
2496 Dear Perl user, system administrator or package
2497 maintainer, the Perl community sends greetings to
2498 you. Do you (emblematical) greet back [Y/n]? n
2502 : Check what type of C compiler we use
2506 cat <<'EOSC' >>trygcc
2511 int main(int argc, char *argv[]) {
2515 if $cc -o try $ccflags $ldflags try.c; then
2518 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2524 # Skip this test because it gives a false match on output like:
2525 # ./trygcc: line 23: cc: command not found
2526 # case "`$cc -v -c try.c 2>&1`" in
2527 # *gcc*) trygcc=no ;;
2529 if $test X"$trygcc" = Xyes; then
2530 if gcc -o try -c try.c; then
2532 echo "You seem to have a working gcc, though." >&4
2533 # Switching compilers may undo the work of hints files.
2534 # The most common problem is -D_REENTRANT for threads.
2535 # This heuristic catches that case, but gets false positives
2536 # if -Dusethreads was not actually specified. Better to
2537 # bail out here with a useful message than fail
2538 # mysteriously later. Should we perhaps just try to
2539 # re-invoke Configure -Dcc=gcc config_args ?
2540 if $test -f usethreads.cbu; then
2543 *** However, any setting of the C compiler flags (e.g. for thread support)
2544 *** will be lost. It may be necessary for you to restart Configure and
2545 *** add -Dcc=gcc to your Configure command line.
2548 rp="Would you like to go ahead and try gcc anyway?"
2551 rp="Would you like to use it?"
2554 if $test -f myread; then
2557 if $test -f UU/myread; then
2560 echo "Cannot find myread, sorry. Aborting." >&2
2565 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2578 cat <<'EOSC' >>checkcc
2583 int main(int argc, char *argv[]) {
2587 if $cc -o try $ccflags $ldflags try.c; then
2590 if $test X"$despair" = Xyes; then
2591 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2594 You need to find a working C compiler.
2595 Either (purchase and) install the C compiler supplied by your OS vendor,
2596 or for a free C compiler try http://gcc.gnu.org/
2597 I cannot continue any further, aborting.
2606 : determine whether symbolic links are supported
2609 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2610 echo "Symbolic links are supported." >&4
2613 echo "Symbolic links are NOT supported." >&4
2618 : determine whether symbolic links are supported
2622 echo "Checking how to test for symbolic links..." >&4
2624 if $test "X$issymlink" = X; then
2626 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2627 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2629 if test $? = 0; then
2632 echo "Your builtin 'test -h' may be broken." >&4
2635 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2638 if test -f "$p/$test"; then
2647 echo "Trying external '$test -h'." >&4
2648 issymlink="$test -h"
2649 if $test ! -h sym >/dev/null 2>&1; then
2650 echo "External '$test -h' is broken, too." >&4
2658 if $test "X$issymlink" = X; then
2659 if $test -L sym 2>/dev/null; then
2660 issymlink="$test -L"
2661 echo "The builtin '$test -L' worked." >&4
2664 if $test "X$issymlink" != X; then
2665 echo "You can test for symbolic links with '$issymlink'." >&4
2667 echo "I do not know how you can test for symbolic links." >&4
2671 *) echo "No symbolic links, so not testing for their testing..." >&4
2676 : Make symlinks util
2677 case "$mksymlinks" in
2680 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2683 *) case "$lns:$issymlink" in
2684 *"ln"*" -s:"*"test -"?)
2685 echo "Creating the symbolic links..." >&4
2686 echo "(First creating the subdirectories...)" >&4
2688 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2690 test -z "$directory" && break
2694 if test ! -d t/base; then
2695 echo "Failed to create the subdirectories. Aborting." >&4
2698 echo "(Then creating the symlinks...)" >&4
2699 awk '{print $1}' $src/MANIFEST | while true; do
2701 test -z "$filename" && break
2702 if test -f $filename; then
2703 if $issymlink $filename; then
2707 if test -f $filename; then
2708 echo "$filename already exists, not symlinking."
2710 ln -s $src/$filename $filename
2714 if test ! -f t/base/lex.t; then
2715 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
2720 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2728 : Check for Cross-Compilation
2729 case "$usecrosscompile" in
2731 $echo "Cross-compiling..."
2734 *-*-gcc) # A cross-compiling gcc, probably.
2735 targetarch=`$echo $cc|$sed 's/-gcc$//'`
2737 # leave out ld, choosing it is more complex
2739 ranlib=$targetarch-ranlib
2740 $echo 'extern int foo;' > try.c
2741 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2743 if $test $# -gt 0; then
2745 incpth="`$echo $incpth|$sed 's/^ //'`"
2746 echo "Guessing incpth '$incpth'." >&4
2748 j="`$echo $i|$sed 's,/include$,/lib,'`"
2749 if $test -d $j; then
2753 libpth="`$echo $libpth|$sed 's/^ //'`"
2754 echo "Guessing libpth '$libpth'." >&4
2759 case "$targetarch" in
2760 '') echo "Targetarch not defined." >&4; croak=y ;;
2761 *) echo "Using targetarch $targetarch." >&4 ;;
2764 '') echo "Incpth not defined." >&4; croak=y ;;
2765 *) echo "Using incpth '$incpth'." >&4 ;;
2768 '') echo "Libpth not defined." >&4; croak=y ;;
2769 *) echo "Using libpth '$libpth'." >&4 ;;
2772 '') for i in $incpth; do
2773 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2775 echo "Guessing usrinc $usrinc." >&4
2780 '') echo "Usrinc not defined." >&4; croak=y ;;
2783 *) echo "Using usrinc $usrinc." >&4 ;;
2785 case "$targethost" in
2786 '') echo "Targethost not defined." >&4; croak=y ;;
2787 *) echo "Using targethost $targethost." >&4
2792 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2795 /*) run=$src/Cross/run
2796 targetmkdir=$src/Cross/mkdir
2798 from=$src/Cross/from
2800 *) pwd=`$test -f ../Configure & cd ..; pwd`
2802 targetmkdir=$pwd/Cross/mkdir
2804 from=$pwd/Cross/from
2807 case "$targetrun" in
2808 '') targetrun=ssh ;;
2813 case "$targetfrom" in
2814 '') targetfrom=scp ;;
2818 from=$from-$targetfrom
2819 case "$targetdir" in
2821 echo "Guessing targetdir $targetdir." >&4
2824 case "$targetuser" in
2826 echo "Guessing targetuser $targetuser." >&4
2829 case "$targetfrom" in
2833 case "$targetrun" in
2845 '') cwd=$targetdir ;;
2849 if $test ! -f \$exe.xok; then
2853 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2856 *) echo "Unknown targetrun '$targetrun'" >&4
2860 case "$targetmkdir" in
2862 cat >$targetmkdir <<EOF
2864 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2866 $chmod a+rx $targetmkdir
2868 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2880 $targetmkdir \`dirname \$f\`
2881 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2884 $targetmkdir $targetdir/\`dirname \$f\`
2885 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2898 $mkdir -p $targetdir/\`dirname \$f\`
2899 $cp \$f $targetdir/\$f || exit 1
2902 $targetmkdir $targetdir/\`dirname \$f\`
2903 $cp \$f $targetdir/\$f || exit 1
2910 *) echo "Unknown targetto '$targetto'" >&4
2914 case "$targetfrom" in
2921 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2926 cp) cat >$from <<EOF
2931 cp $targetdir/\$f . || exit 1
2936 *) echo "Unknown targetfrom '$targetfrom'" >&4
2940 if $test ! -f $run; then
2941 echo "Target 'run' script '$run' not found." >&4
2945 if $test ! -f $to; then
2946 echo "Target 'to' script '$to' not found." >&4
2950 if $test ! -f $from; then
2951 echo "Target 'from' script '$from' not found." >&4
2955 if $test ! -f $run -o ! -f $to -o ! -f $from; then
2959 Using '$run' for remote execution,
2960 and '$from' and '$to'
2961 for remote file transfer.
2967 usecrosscompile='undef'
2972 : see whether [:lower:] and [:upper:] are supported character classes
2974 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2976 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2980 *) # There is a discontinuity in EBCDIC between 'R' and 'S'
2981 # (0xd9 and 0xe2), therefore that is a nice testing point.
2982 if test "X$up" = X -o "X$low" = X; then
2983 case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2989 if test "X$up" = X -o "X$low" = X; then
2990 case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2996 if test "X$up" = X -o "X$low" = X; then
2997 case "`echo RS | od -x 2>/dev/null`" in
2999 echo "Hey, this might be EBCDIC." >&4
3000 if test "X$up" = X -o "X$low" = X; then
3001 case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
3002 rs) up='[A-IJ-RS-Z]'
3007 if test "X$up" = X -o "X$low" = X; then
3008 case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
3018 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
3020 echo "Using $up and $low to convert case." >&4
3023 echo "I don't know how to translate letters from upper to lower case." >&4
3024 echo "Your tr is not acting any way I know of." >&4
3028 : set up the translation script tr, must be called with ./tr of course
3032 '[A-Z][a-z]') exec $tr '$up' '$low';;
3033 '[a-z][A-Z]') exec $tr '$low' '$up';;
3040 : Try to determine whether config.sh was made on this system
3041 case "$config_sh" in
3043 myuname=`$uname -a 2>/dev/null`
3044 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3045 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3046 # because the A-Z/a-z are not consecutive.
3047 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e "s,['/],,g" | \
3048 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3049 newmyuname="$myuname"
3051 case "$knowitall" in
3053 if test -f ../config.sh; then
3054 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3055 eval "`grep myuname= ../config.sh`"
3057 if test "X$myuname" = "X$newmyuname"; then
3065 : Get old answers from old config file if Configure was run on the
3066 : same system, otherwise use the hints.
3069 if test -f config.sh; then
3071 rp="I see a config.sh file. Shall I use it to set the defaults?"
3074 n*|N*) echo "OK, I'll ignore it."
3075 mv config.sh config.sh.old
3076 myuname="$newmyuname"
3078 *) echo "Fetching default answers from your old config.sh file..." >&4
3086 : Older versions did not always set $sh. Catch re-use of such
3096 if test ! -f config.sh; then
3099 First time through, eh? I have some defaults handy for some systems
3100 that need some extra help getting the Configure answers right:
3103 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
3105 : Half the following guesses are probably wrong... If you have better
3106 : tests or hints, please send them to perlbug@perl.org
3107 : The metaconfig authors would also appreciate a copy...
3108 $test -f /irix && osname=irix
3109 $test -f /xenix && osname=sco_xenix
3110 $test -f /dynix && osname=dynix
3111 $test -f /dnix && osname=dnix
3112 $test -f /lynx.os && osname=lynxos
3113 $test -f /unicos && osname=unicos && osvers=`$uname -r`
3114 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3115 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3116 $test -f /bin/mips && /bin/mips && osname=mips
3117 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3118 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3119 $test -d /usr/apollo/bin && osname=apollo
3120 $test -f /etc/saf/_sactab && osname=svr4
3121 $test -d /usr/include/minix && osname=minix
3122 $test -f /system/gnu_library/bin/ar.pm && osname=vos
3123 if $test -d /MachTen -o -d /MachTen_Folder; then
3125 if $test -x /sbin/version; then
3126 osvers=`/sbin/version | $awk '{print $2}' |
3127 $sed -e 's/[A-Za-z]$//'`
3128 elif $test -x /usr/etc/version; then
3129 osvers=`/usr/etc/version | $awk '{print $2}' |
3130 $sed -e 's/[A-Za-z]$//'`
3136 $test -f /sys/posix.dll &&
3137 $test -f /usr/bin/what &&
3138 set X `/usr/bin/what /sys/posix.dll` &&
3139 $test "$3" = UWIN &&
3143 if $test -f $uname; then
3151 umips) osname=umips ;;
3154 [23]100) osname=mips ;;
3155 next*) osname=next ;;
3157 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3158 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3161 elif $test -f /etc/kconfig; then
3163 if test "$lns" = "$ln -s"; then
3165 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3167 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3174 if test -n "$DJGPP"; then
3183 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3185 # oslevel can fail with:
3186 # oslevel: Unable to acquire lock.
3187 *not\ found) osvers="$4"."$3" ;;
3188 '<3240'|'<>3240') osvers=3.2.0 ;;
3189 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3190 '=3250'|'>3250') osvers=3.2.5 ;;
3194 bsd386) osname=bsd386
3197 cygwin*) osname=cygwin
3200 *dc.osx) osname=dcosx
3206 domainos) osname=apollo
3212 dragonfly) osname=dragonfly
3215 dynixptx*) osname=dynixptx
3216 osvers=`echo "$4"|sed 's/^v//'`
3218 freebsd) osname=freebsd
3220 genix) osname=genix ;;
3224 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3240 netbsd*) osname=netbsd
3243 news-os) osvers="$3"
3245 4*) osname=newsos4 ;;
3249 next*) osname=next ;;
3250 nonstop-ux) osname=nonstopux ;;
3251 openbsd) osname=openbsd
3257 POSIX-BC | posix-bc ) osname=posix-bc
3260 powerux | power_ux | powermax_os | powermaxos | \
3261 powerunix | power_unix) osname=powerux
3267 solaris) osname=solaris
3269 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3276 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3280 titanos) osname=titanos
3289 ultrix) osname=ultrix
3292 osf1|mls+) case "$5" in
3295 osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3298 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3301 hp*) osname=hp_osf1 ;;
3302 mips) osname=mips_osf1 ;;
3305 # UnixWare 7.1.2 is known as Open UNIX 8
3306 openunix|unixware) osname=svr5
3314 $2) case "$osname" in
3318 : svr4.x or possibly later
3328 if test -f /stand/boot ; then
3329 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3330 if test -n "$INITPROG" -a -f "$INITPROG"; then
3331 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3332 if test -n "$isesix"; then
3340 *) if test -f /etc/systemid; then
3342 set `echo $3 | $sed 's/\./ /g'` $4
3343 if $test -f $src/hints/sco_$1_$2_$3.sh; then
3345 elif $test -f $src/hints/sco_$1_$2.sh; then
3347 elif $test -f $src/hints/sco_$1.sh; then
3352 '') : Still unknown. Probably a generic Sys V.
3361 *) case "$osname" in
3362 '') : Still unknown. Probably a generic BSD.
3370 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3371 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3372 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3375 $rm -f UU/kernel.what
3376 elif test -d c:/. -o -n "$is_os2" ; then
3383 case "$targetarch" in
3386 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3391 : Now look for a hint file osname_osvers, unless one has been
3392 : specified already.
3395 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3396 : Also try without trailing minor version numbers.
3397 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3398 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3399 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3400 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3403 *) case "$osvers" in
3406 *) if $test -f $src/hints/$file.sh ; then
3408 elif $test -f $src/hints/$xfile.sh ; then
3410 elif $test -f $src/hints/$xxfile.sh ; then
3412 elif $test -f $src/hints/$xxxfile.sh ; then
3414 elif $test -f $src/hints/$xxxxfile.sh ; then
3416 elif $test -f "$src/hints/${osname}.sh" ; then
3425 if $test -f Policy.sh ; then
3428 none) dflt="Policy" ;;
3429 *) dflt="Policy $dflt" ;;
3434 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3438 if $test -f Policy.sh ; then
3441 There's also a Policy hint file available, which should make the
3442 site-specific (policy) questions easier to answer.
3449 You may give one or more space-separated answers, or "none" if appropriate.
3450 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3451 previous run of Configure, you may specify it as well as or instead of
3452 OS-specific hints. If hints are provided for your OS, you should use them:
3453 although Perl can probably be built without hints on many platforms, using
3454 hints often improve performance and may enable features that Configure can't
3455 set up on its own. If there are no hints that match your OS, specify "none";
3456 DO NOT give a wrong version or a wrong OS.
3460 rp="Which of these apply, if any?"
3463 for file in $tans; do
3464 if $test X$file = XPolicy -a -f Policy.sh; then
3466 $cat Policy.sh >> UU/config.sh
3467 elif $test -f $src/hints/$file.sh; then
3468 . $src/hints/$file.sh
3469 $cat $src/hints/$file.sh >> UU/config.sh
3470 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3473 : Give one chance to correct a possible typo.
3474 echo "$file.sh does not exist"
3476 rp="hint to use instead?"
3478 for file in $ans; do
3479 if $test -f "$src/hints/$file.sh"; then
3480 . $src/hints/$file.sh
3481 $cat $src/hints/$file.sh >> UU/config.sh
3482 elif $test X$ans = X -o X$ans = Xnone ; then
3485 echo "$file.sh does not exist -- ignored."
3492 : Remember our hint file for later.
3493 if $test -f "$src/hints/$file.sh" ; then
3503 echo "Fetching default answers from $config_sh..." >&4
3507 cp $config_sh config.sh 2>/dev/null
3517 test "$override" && . ./optdef.sh
3519 : Restore computed paths
3520 for file in $loclist $trylist; do
3521 eval $file="\$_$file"
3526 Configure uses the operating system name and version to set some defaults.
3527 The default value is probably right if the name rings a bell. Otherwise,
3528 since spelling matters for me, either accept the default or answer "none"
3535 ''|' '|none) dflt=none ;;
3536 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3539 *) dflt="$osname" ;;
3541 rp="Operating system name?"
3545 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3551 ''|' '|none) dflt=none ;;
3552 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3553 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3555 ''|' ') dflt=none ;;
3560 *) dflt="$osvers" ;;
3562 rp="Operating system version?"
3572 : who configured the system
3573 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3576 cf_by=`(logname) 2>/dev/null`
3579 cf_by=`(whoami) 2>/dev/null`
3581 "") cf_by=unknown ;;
3586 : decide how portable to be. Allow command line overrides.
3587 case "$d_portable" in
3589 *) d_portable="$define" ;;
3592 : set up shell script to do ~ expansion
3598 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3601 if $test -f /bin/csh; then
3602 /bin/csh -f -c "glob \$1"
3607 name=\`$expr x\$1 : '..\([^/]*\)'\`
3608 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3609 if $test ! -d "\$dir"; then
3611 echo "\$me: can't locate home directory for: \$name" >&2
3616 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3632 : now set up to get a file name
3636 cat <<'EOSC' >>getfile
3652 : getfile will accept an answer from the comma-separated list
3653 : enclosed in parentheses even if it does not meet other criteria.
3654 expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3655 fn=`echo $fn | sed 's/(.*)//'`
3661 loc_file=`expr $fn : '.*:\(.*\)'`
3662 fn=`expr $fn : '\(.*\):.*'`
3670 */*) fullpath=true;;
3679 *e*) exp_file=true;;
3682 *p*) nopath_ok=true;;
3687 *d*) type='Directory';;
3688 *l*) type='Locate';;
3693 Locate) what='File';;
3698 case "$d_portable" in
3706 while test "$type"; do
3711 true) rp="$rp (~name ok)";;
3714 if test -f UU/getfile.ok && \
3715 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3734 value=`UU/filexp $ans`
3737 if test "$ans" != "$value"; then
3738 echo "(That expands to $value on this system.)"
3752 /*) value="$ansexp" ;;
3753 [a-zA-Z]:/*) value="$ansexp" ;;
3758 echo "I shall only accept a full path name, as in /bin/ls." >&4
3759 echo "Use a ! shell escape if you wish to check pathnames." >&4
3762 echo "Please give a full path name, starting with slash." >&4
3765 echo "Note that using ~name is ok provided it expands well." >&4
3778 for fp in $gfpth; do
3779 if test "X$fp" = X.; then
3784 if test -f "$pf"; then
3786 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3788 echo "($value is not a plain file, but that's ok.)"
3791 if test X"$type" = X; then
3798 for fp in $gfpth; do
3799 if test "X$fp" = X.; then
3804 direxp="$fp/$ansexp"
3806 if test -d "$direxp"; then
3814 if test -d "$ansexp"; then
3815 echo "(Looking for $loc_file in directory $value.)"
3816 value="$value/$loc_file"
3817 ansexp="$ansexp/$loc_file"
3819 if test -f "$ansexp"; then
3822 case "$nopath_ok" in
3823 true) case "$value" in
3825 *) echo "Assuming $value will be in people's path."
3841 if test "$fastread" = yes; then
3846 rp="$what $value doesn't exist. Use that name anyway?"
3865 test "X$gfpthkeep" != Xy && gfpth=""
3868 : determine root of directory hierarchy where package will be installed.
3871 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3874 dflt=`echo "$prefix" | sed 's/.$//'`
3882 By default, $package will be installed in $dflt/bin, manual pages
3883 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3884 installation directories. Typically this is something like /usr/local.
3885 If you wish to have binaries under /usr/bin but other parts of the
3886 installation under /usr/local, that's ok: you will be prompted
3887 separately for each of the installation directories, the prefix being
3888 only used to set the defaults.
3892 rp='Installation prefix to use?'
3900 *) oldprefix="$prefix";;
3907 : allow them to override the AFS root
3910 *) afsroot=$afsroot ;;
3916 $define|true) afs=true ;;
3917 $undef|false) afs=false ;;
3918 *) if $test -d $afsroot; then
3926 echo "AFS may be running... I'll be extra cautious then..." >&4
3928 echo "AFS does not seem to be running..." >&4
3931 : determine installation prefix for where package is to be installed.
3935 Since you are running AFS, I need to distinguish the directory in which
3936 files will reside from the directory in which they are installed (and from
3937 which they are presumably copied to the former directory by occult means).
3940 case "$installprefix" in
3941 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3942 *) dflt="$installprefix";;
3947 In some special cases, particularly when building $package for distribution,
3948 it is convenient to distinguish the directory in which files should be
3949 installed from the directory ($prefix) in which they will
3950 eventually reside. For most users, these two directories are the same.
3953 case "$installprefix" in
3955 *) dflt=$installprefix;;
3959 rp='What installation prefix should I use for installing files?'
3961 installprefix="$ans"
3962 installprefixexp="$ansexp"
3964 : Perform the prefixexp/installprefixexp correction if necessary
3965 cat <<EOS >installprefix
3968 cat <<'EOSC' >>installprefix
3969 : Change installation prefix, if necessary.
3970 if $test X"$prefix" != X"$installprefix"; then
3971 eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
3973 eval "install${prefixvar}=\"\$${prefixvar}exp\""
3976 chmod +x installprefix
3977 $eunicefix installprefix
3979 : Set variables such as privlib and privlibexp from the output of ./getfile
3980 : performing the prefixexp/installprefixexp correction if necessary.
3981 cat <<EOS >setprefixvar
3984 cat <<'EOSC' >>setprefixvar
3985 eval "${prefixvar}=\"\$ans\""
3986 eval "${prefixvar}exp=\"\$ansexp\""
3989 chmod +x setprefixvar
3990 $eunicefix setprefixvar
3992 : set up the script used to warn in case of inconsistency
4001 '') echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
4003 *) echo "Hmm. Based on the hints in hints/$hintfile.sh, " >&4
4004 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
4009 echo "*** WHOA THERE!!! ***" >&4
4010 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
4013 rp=" Keep the $hint value?"
4016 y) td=$was; tu=$was;;
4020 : function used to set '$1' to '$val'
4021 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
4023 $define$undef) . ./whoa; eval "$var=\$td";;
4024 $undef$define) . ./whoa; eval "$var=\$tu";;
4025 *) eval "$var=$val";;
4028 : Check is we will use socks
4030 $define|true|[yY]*) dflt='y';;
4035 Perl can be built to use the SOCKS proxy protocol library. To do so,
4036 Configure must be run with -Dusesocks. If you use SOCKS you also need
4037 to use the PerlIO abstraction layer, this will be implicitly selected.
4039 If this doesn't make any sense to you, just accept the default '$dflt'.
4041 rp='Build Perl for SOCKS?'
4044 y|Y) val="$define" ;;
4051 $define|true|[yY]*) useperlio="$define";;
4054 : Check if we want perlio
4055 case "$useperlio" in
4056 $define|true|[yY]*|'') dflt='y';;
4061 Previous version of $package used the standard IO mechanisms as
4062 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
4063 alternate IO mechanisms via the PerlIO abstraction layer, but the
4064 stdio mechanism is still available if needed. The abstraction layer
4065 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
4066 Using PerlIO with sfio may cause problems with some extension modules.
4068 If this doesn't make any sense to you, just accept the default '$dflt'.
4070 rp='Use the PerlIO abstraction layer?'
4077 echo "Ok, doing things the stdio way."
4086 case "$useperlio" in
4087 $define|true|[yY]*) ;;
4090 You are using the SOCKS proxy protocol library which means that you
4091 should also use the PerlIO layer. You may be headed for trouble.
4099 : get the patchlevel
4101 echo "Getting the current patchlevel..." >&4
4102 if $test -r $rsrc/patchlevel.h;then
4103 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4104 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4105 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4106 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4107 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4108 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4109 perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'`
4118 $echo "(You do not have patchlevel.h. Eek.)"
4120 if $test -r $rsrc/.patch ; then
4121 if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
4122 perl_patchlevel=`cat $rsrc/.patch`
4125 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4126 version_patchlevel_string="version $patchlevel subversion $subversion"
4127 case "$perl_patchlevel" in
4129 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
4132 $echo "(You have $package $version_patchlevel_string.)"
4136 : XXX Should be a Configure test for double-dots in filenames.
4137 version=`echo $revision $patchlevel $subversion | \
4138 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4139 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4140 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4143 version=`echo $revision $patchlevel $subversion | \
4144 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4145 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4146 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4149 : Special case the 5.005_xx maintenance series, which used 5.005
4150 : without any subversion label as a subdirectory in $sitelib
4151 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4152 api_versionstring='5.005'
4155 : Do we want threads support and if so, what type
4156 case "$usethreads" in
4157 $define|true|[yY]*) dflt='y';;
4158 *) # Catch case where user specified ithreads or 5005threads but
4159 # forgot -Dusethreads (A.D. 4/2002)
4160 case "$useithreads$use5005threads" in
4162 case "$useperlio" in
4163 "$define") dflt='y' ;;
4173 Perl can be built to take advantage of threads on some systems.
4174 To do so, Configure can be run with -Dusethreads.
4176 Note that Perl built with threading support runs slightly slower
4177 and uses more memory than plain Perl. The current implementation
4178 is believed to be stable, but it is fairly new, and so should be
4179 treated with caution.
4181 If this doesn't make any sense to you, just accept the default '$dflt'.
4183 rp='Build a threading Perl?'
4186 y|Y) val="$define" ;;
4192 if $test $patchlevel -lt 9; then
4193 case "$usethreads" in
4197 Since release 5.6, Perl has had two different threading implementations,
4198 the newer interpreter-based version (ithreads) with one interpreter per
4199 thread, and the older 5.005 version (5005threads).
4200 The 5005threads version is effectively unmaintained and will probably be
4201 removed in Perl 5.10, so there should be no need to build a Perl using it
4202 unless needed for backwards compatibility with some existing 5.005threads
4206 : Default to ithreads unless overridden on command line or with
4209 case "$use5005threads" in
4210 $define|true|[yY]*) dflt='n';;
4212 case "$useithreads" in
4213 $undef|false|[nN]*) dflt='n';;
4215 rp='Use the newer interpreter-based ithreads?'
4218 y|Y) val="$define" ;;
4223 : Now set use5005threads to the opposite value.
4224 case "$useithreads" in
4225 $define) val="$undef" ;;
4232 useithreads="$undef"
4233 use5005threads="$undef"
4237 case "$useithreads$use5005threads" in
4241 You cannot have both the ithreads and the 5.005 threads enabled
4242 at the same time. Disabling the 5.005 threads since they are
4243 much less stable than the ithreads.
4246 use5005threads="$undef"
4251 : perl-5.9.x and later
4253 if test X"$usethreads" = "X$define"; then
4254 case "$use5005threads" in
4258 5.005 threads has been removed for 5.10. Perl will be built using ithreads.
4265 use5005threads="$undef"
4266 useithreads="$usethreads"
4269 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
4272 *** To build with ithreads you must also use the PerlIO layer.
4273 *** Cannot continue, aborting.
4279 case "$d_oldpthreads" in
4280 '') : Configure tests would be welcome here. For now, assume undef.
4282 *) val="$d_oldpthreads" ;;
4288 : Look for a hint-file generated 'call-back-unit'. If the
4289 : user has specified that a threading perl is to be built,
4290 : we may need to set or change some other defaults.
4291 if $test -f usethreads.cbu; then
4292 echo "Your platform has some specific hints regarding threaded builds, using them..."
4295 case "$usethreads" in
4296 "$define"|true|[yY]*)
4298 (Your platform does not have any specific hints for threaded builds.
4299 Assuming POSIX threads, then.)
4305 : Check if multiplicity is required
4308 Perl can be built so that multiple Perl interpreters can coexist
4309 within the same Perl executable.
4312 case "$useithreads" in
4315 This multiple interpreter support is required for interpreter-based threads.
4319 *) case "$usemultiplicity" in
4320 $define|true|[yY]*) dflt='y';;
4324 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4325 rp='Build Perl for multiplicity?'
4328 y|Y) val="$define" ;;
4336 : Check if morebits is requested
4337 case "$usemorebits" in
4338 "$define"|true|[yY]*)
4339 use64bitint="$define"
4340 uselongdouble="$define"
4341 usemorebits="$define"
4343 *) usemorebits="$undef"
4347 : Determine the C compiler to be used
4353 rp="Use which C compiler?"
4357 : See whether they have no cc but they do have gcc
4359 if $test -f cc.cbu; then
4364 : make some quick guesses about what we are up against
4366 $echo $n "Hmm... $c"
4376 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
4377 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
4379 echo "Looks kind of like an OSF/1 system, but we'll see..."
4381 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4382 xxx=`./loc addbib blurfl $pth`
4383 if $test -f $xxx; then
4384 echo "Looks kind of like a USG system with BSD features, but we'll see..."
4388 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4389 echo "Looks kind of like an extended USG system, but we'll see..."
4391 echo "Looks kind of like a USG system, but we'll see..."
4395 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4396 echo "Looks kind of like a BSD system, but we'll see..."
4400 echo "Looks kind of like a Version 7 system, but we'll see..."
4403 case "$eunicefix" in
4406 There is, however, a strange, musty smell in the air that reminds me of
4407 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4411 : it so happens the Eunice I know will not run shell scripts in Unix format
4415 echo "Congratulations. You aren't running Eunice."
4419 : Detect OS2. The p_ variable is set above in the Head.U unit.
4420 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4421 : semicolon as a patch separator
4426 I have the feeling something is not exactly right, however...don't tell me...
4427 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4428 (Or you may be running DOS with DJGPP.)
4433 if test -f /xenix; then
4434 echo "Actually, this looks more like a XENIX system..."
4439 echo "It's not Xenix..."
4444 if test -f /venix; then
4445 echo "Actually, this looks more like a VENIX system..."
4452 echo "Nor is it Venix..."
4455 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4456 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4459 : Check if we are using GNU gcc and what its version is
4461 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4465 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4467 printf("%s\n", __VERSION__);
4469 printf("%s\n", "1");
4475 if $cc -o try $ccflags $ldflags try.c; then
4476 gccversion=`$run ./try`
4477 case "$gccversion" in
4478 '') echo "You are not using GNU cc." ;;
4479 *) echo "You are using GNU cc $gccversion."
4485 echo "*** WHOA THERE!!! ***" >&4
4486 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
4487 case "$knowitall" in
4489 echo " You'd better start hunting for one and let me know about it." >&4
4495 case "$gccversion" in
4496 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4498 case "$gccversion" in
4499 '') gccosandvers='' ;;
4500 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4501 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4503 case "$gccosandvers" in
4504 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4505 $osname$osvers) ;; # looking good
4506 $osname*) cat <<EOM >&4
4508 *** WHOA THERE!!! ***
4510 Your gcc has not been compiled for the exact release of
4511 your operating system ($gccosandvers versus $osname$osvers).
4513 In general it is a good idea to keep gcc synchronized with
4514 the operating system because otherwise serious problems
4515 may ensue when trying to compile software, like Perl.
4517 I'm trying to be optimistic here, though, and will continue.
4518 If later during the configuration and build icky compilation
4519 problems appear (headerfile conflicts being the most common
4520 manifestation), I suggest reinstalling the gcc to match
4521 your operating system release.
4525 *) gccosandvers='' ;; # failed to parse, better be silent
4533 # gcc 3.* complain about adding -Idirectories that they already know about,
4534 # so we will take those off from locincpth.
4535 case "$gccversion" in
4537 echo "main(){}">try.c
4538 for incdir in $locincpth; do
4539 warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4540 grep '^c[cp]p*[01]: warning: changing search order '`
4541 if test "X$warn" != X; then
4542 locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4548 : What should the include directory be ?
4550 $echo $n "Hmm... $c"
4554 if $test -f /bin/mips && /bin/mips; then
4555 echo "Looks like a MIPS system..."
4556 $cat >usr.c <<'EOCP'
4557 #ifdef SYSTYPE_BSD43
4561 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4562 dflt='/bsd43/usr/include'
4566 mips_type='System V'
4568 $rm -f usr.c usr.out
4569 echo "and you're compiling with the $mips_type compiler and libraries."
4573 echo "Doesn't look like a MIPS system."
4583 case "$xxx_prompt" in
4586 rp='Where are the include files you want to use?'
4594 : see how we invoke the C preprocessor
4596 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4597 cat <<'EOT' >testcpp.c
4603 if test ! -f cppstdin; then
4604 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4605 # AIX cc -E doesn't show the absolute headerfile
4606 # locations but we'll cheat by using the -M flag.
4607 echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
4609 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4612 echo "Keeping your $hint cppstdin wrapper."
4615 wrapper=`pwd`/cppstdin
4619 if $test "X$cppstdin" != "X" && \
4620 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4621 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4623 echo "You used to use $cppstdin $cppminus so we'll use that again."
4625 '') echo "But let's see if we can live without a wrapper..." ;;
4627 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4628 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4630 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4633 echo "(However, $cpprun $cpplast does not work, let's see...)"
4641 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4648 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4649 $cc -E <testcpp.c >testcpp.out 2>&1; \
4650 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4651 echo "Yup, it does."
4654 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4655 $cc -E - <testcpp.c >testcpp.out 2>&1; \
4656 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4657 echo "Yup, it does."
4660 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4661 $cc -P <testcpp.c >testcpp.out 2>&1; \
4662 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4663 echo "Yipee, that works!"
4666 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4667 $cc -P - <testcpp.c >testcpp.out 2>&1; \
4668 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4669 echo "At long last!"
4672 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4673 $cpp <testcpp.c >testcpp.out 2>&1; \
4674 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4678 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4679 $cpp - <testcpp.c >testcpp.out 2>&1; \
4680 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4681 echo "Hooray, it works! I was beginning to wonder."
4684 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
4685 $wrapper <testcpp.c >testcpp.out 2>&1; \
4686 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4692 rp="No dice. I can't find a C preprocessor. Name one:"
4696 $x_cpp <testcpp.c >testcpp.out 2>&1
4697 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4698 echo "OK, that will do." >&4
4700 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4715 echo "Perhaps can we force $cc -E using a wrapper..."
4716 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4717 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4723 echo "Nope, we'll have to live without it..."
4737 "$wrapper"|'cppstdin') ;;
4738 *) $rm -f $wrapper;;
4740 $rm -f testcpp.c testcpp.out
4742 : Set private lib path
4745 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4750 '') dlist="$loclibpth $plibpth $glibpth";;
4751 *) dlist="$libpth";;
4754 : Now check and see which directories actually exist, avoiding duplicates
4758 if $test -d $xxx; then
4761 *) libpth="$libpth $xxx";;
4767 Some systems have incompatible or broken versions of libraries. Among
4768 the directories listed in the question below, please remove any you
4769 know not to be holding relevant libraries, and add any that are needed.
4770 Say "none" for none.
4781 rp="Directories to use for library searches?"
4788 : compute shared library extension
4791 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4801 On some systems, shared libraries may be available. Answer 'none' if
4802 you want to suppress searching of shared libraries for the remainder
4803 of this configuration.
4806 rp='What is the file extension used for shared libraries?'
4810 : Define several unixisms.
4811 : Hints files or command line option can be used to override them.
4812 : The convoluted testing is in case hints files set either the old
4815 '') case "$exe_ext" in
4817 *) _exe="$exe_ext" ;;
4822 '') case "$lib_ext" in
4829 '') case "$obj_ext" in
4836 '') case "$path_sep" in
4847 rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
4849 : Which makefile gets called first. This is used by make depend.
4850 case "$firstmakefile" in
4851 '') firstmakefile='makefile';;
4854 : Check for uselongdouble support
4856 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4859 case "$uselongdouble" in
4860 $define|true|[yY]*) dflt='y';;
4865 Perl can be built to take advantage of long doubles which
4866 (if available) may give more accuracy and range for floating point numbers.
4868 If this doesn't make any sense to you, just accept the default '$dflt'.
4870 rp='Try to use long doubles if available?'
4873 y|Y) val="$define" ;;
4879 case "$uselongdouble" in
4880 true|[yY]*) uselongdouble="$define" ;;
4883 : Look for a hint-file generated 'call-back-unit'. If the
4884 : user has specified that long doubles should be used,
4885 : we may need to set or change some other defaults.
4886 if $test -f uselongdouble.cbu; then
4887 echo "Your platform has some specific hints regarding long doubles, using them..."
4888 . ./uselongdouble.cbu
4890 case "$uselongdouble" in
4893 (Your platform does not have any specific hints for long doubles.)
4899 : Looking for optional libraries
4901 echo "Checking for optional libraries..." >&4
4906 case "$libswanted" in
4907 '') libswanted='c_s';;
4910 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4916 for thisdir in $libpth $xlibpth; do
4917 test -d $thisdir && libspath="$libspath $thisdir"
4919 for thislib in $libswanted; do
4920 for thisdir in $libspath; do
4922 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4923 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4924 $test -f "$xxx" && eval $libscheck
4925 $test -f "$xxx" && libstyle=shared
4927 if test ! -f "$xxx"; then
4928 xxx=$thisdir/lib$thislib.$so
4929 $test -f "$xxx" && eval $libscheck
4930 $test -f "$xxx" && libstyle=shared
4932 if test ! -f "$xxx"; then
4933 xxx=$thisdir/lib$thislib$_a
4934 $test -f "$xxx" && eval $libscheck
4935 $test -f "$xxx" && libstyle=static
4937 if test ! -f "$xxx"; then
4938 xxx=$thisdir/$thislib$_a
4939 $test -f "$xxx" && eval $libscheck
4940 $test -f "$xxx" && libstyle=static
4942 if test ! -f "$xxx"; then
4943 xxx=$thisdir/lib${thislib}_s$_a
4944 $test -f "$xxx" && eval $libscheck
4945 $test -f "$xxx" && libstyle=static
4946 $test -f "$xxx" && thislib=${thislib}_s
4948 if test ! -f "$xxx"; then
4949 xxx=$thisdir/Slib$thislib$_a
4950 $test -f "$xxx" && eval $libscheck
4951 $test -f "$xxx" && libstyle=static
4953 if $test -f "$xxx"; then
4955 shared) echo "Found -l$thislib (shared)." ;;
4956 static) echo "Found -l$thislib." ;;
4957 *) echo "Found -l$thislib ($libstyle)." ;;
4961 *) dflt="$dflt -l$thislib"
4962 libsfound="$libsfound $xxx"
4964 libsfiles="$libsfiles $yyy"
4965 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4966 case " $libsdirs " in
4968 *) libsdirs="$libsdirs $yyy" ;;
4975 if $test ! -f "$xxx"; then
4976 echo "No -l$thislib."
4987 ' '|'') dflt='none';;
4992 In order to compile $package on your machine, a number of libraries
4993 are usually needed. Include any other special libraries here as well.
4994 Say "none" for none. The default list is almost always right.
4998 rp="What libraries to use?"
5005 : determine optimization, if desired, or use for debug flag also
5007 ' '|$undef) dflt='none';;
5009 *) dflt="$optimize";;
5013 By default, $package compiles with the -O flag to use the optimizer.
5014 Alternately, you might want to use the symbolic debugger, which uses
5015 the -g flag (on traditional Unix systems). Either flag can be
5016 specified here. To use neither flag, specify the word "none".
5019 rp="What optimizer/debugger flag should be used?"
5023 'none') optimize=" ";;
5026 : Check what DEBUGGING is required from the command line
5027 : -DEBUGGING or -DDEBUGGING or
5028 : -DEBUGGING=both = -g + -DDEBUGGING
5029 : -DEBUGGING=-g or -Doptimize=-g = -g
5030 : -DEBUGGING=none or -UDEBUGGING =
5031 : -DEBUGGING=old or -DEBUGGING=default = ? $optimize
5034 *) DEBUGGING=$EBUGGING ;;
5037 case "$DEBUGGING" in
5041 *) optimize="$optimize -g" ;;
5045 *-g*) set `echo "X $optimize " | sed 's/ -g / /'`
5053 case "$DEBUGGING" in
5054 both|$define) dflt='-DDEBUGGING'
5057 : argument order is deliberate, as the flag will start with - which set could
5058 : think is an option
5059 checkccflag='check=$1; flag=$2; callback=$3;
5061 echo "Checking if your compiler accepts $flag" 2>&1;
5062 echo "int main(void) { return 0; }" > gcctest.c;
5063 if $cc -O2 $flag -o gcctest gcctest.c 2>gcctest.out && ./gcctest; then
5064 echo "Yes, it does." 2>&1;
5065 if $test -s gcctest.out ; then
5066 echo "But your platform does not like it:";
5071 echo "Leaving current flags $ccflags alone." 2>&1
5073 *) dflt="$dflt $flag";
5079 echo "Nope, it does not, but that is ok." 2>&1;
5083 : We will not override a previous value, but we might want to
5084 : augment a hint file
5086 default|recommended)
5087 case "$gccversion" in
5088 1*) dflt="$dflt -fpcc-struct-return" ;;
5090 case "$optimize:$DEBUGGING" in
5091 *-g*:old) dflt="$dflt -DDEBUGGING";;
5093 case "$gccversion" in
5094 2*) if $test -d /etc/conf/kconfig.d &&
5095 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
5097 # Interactive Systems (ISC) POSIX mode.
5102 case "$gccversion" in
5105 ?*) set strict-aliasing -fno-strict-aliasing
5109 # For gcc, adding -pipe speeds up compilations for some, but apparently
5110 # some assemblers can't read from stdin. (It also slows down compilations
5111 # in other cases, but those are apparently rarer these days.) AD 5/2004.
5112 case "$gccversion" in
5118 # on x86_64 (at least) we require an extra library (libssp) in the
5119 # link command line. This library is not named, so I infer that it is
5120 # an implementation detail that may change. Hence the safest approach
5121 # is to add the flag to the flags passed to the compiler at link time,
5122 # as that way the compiler can do the right implementation dependant
5124 case "$gccversion" in
5125 ?*) set stack-protector -fstack-protector
5132 case "$mips_type" in
5133 *BSD*|'') inclwanted="$locincpth $usrinc";;
5134 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
5136 for thisincl in $inclwanted; do
5137 if $test -d $thisincl; then
5138 if $test x$thisincl != x$usrinc; then
5140 *" -I$thisincl "*);;
5141 *) dflt="$dflt -I$thisincl ";;
5147 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
5149 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
5157 *) dflt="$dflt -D$2";;
5161 set signal.h LANGUAGE_C; eval $inctest
5165 ccflags="$ccflags -DSOCKS"
5170 default|recommended) dflt="$ccflags $dflt" ;;
5171 *) dflt="$ccflags";;
5180 Your C compiler may want other flags. For this question you should include
5181 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
5182 but you should NOT include libraries or ld flags like -lwhatever. If you
5183 want $package to honor its debug switch, you should include -DDEBUGGING here.
5184 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
5186 To use no flags, specify the word "none".
5192 rp="Any additional cc flags?"
5199 : the following weeds options from ccflags that are of no interest to cpp
5201 '') cppflags="$ccflags" ;;
5202 *) cppflags="$cppflags $ccflags" ;;
5204 case "$gccversion" in
5205 1*) cppflags="$cppflags -D__GNUC__"
5207 case "$mips_type" in
5209 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
5215 echo "Let me guess what the preprocessor flags are..." >&4
5229 *) ftry="$previous $flag";;
5231 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
5232 >cpp1.out 2>/dev/null && \
5233 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
5234 >cpp2.out 2>/dev/null && \
5235 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
5236 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
5238 cppflags="$cppflags $ftry"
5248 *-*) echo "They appear to be: $cppflags";;
5250 $rm -f cpp.c cpp?.out
5254 : flags used in final linking phase
5256 '') if ./venix; then
5262 *-posix*) dflt="$dflt -posix" ;;
5264 # See note above about -fstack-protector
5266 *-fstack-protector*) dflt="$dflt -fstack-protector" ;;
5269 *) dflt="$ldflags";;
5272 : Try to guess additional flags to pick up local libraries.
5273 for thislibdir in $libpth; do
5274 case " $loclibpth " in
5277 *"-L$thislibdir "*) ;;
5278 *) dflt="$dflt -L$thislibdir" ;;
5290 Your C linker may need flags. For this question you should
5291 include -L/whatever and any other flags used by the C linker, but you
5292 should NOT include libraries like -lwhatever.
5294 Make sure you include the appropriate -L/path flags if your C linker
5295 does not normally search all of the directories you specified above,
5298 To use no flags, specify the word "none".
5302 rp="Any additional ld flags (NOT including libraries)?"
5308 rmlist="$rmlist pdp11"
5312 echo "Checking your choice of C compiler and flags for coherency..." >&4
5313 $cat > try.c <<'EOF'
5315 int main() { printf("Ok\n"); return(0); }
5317 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
5319 $cat >try.msg <<'EOM'
5320 I've tried to compile and run the following simple program:
5323 $cat try.c >> try.msg
5325 $cat >> try.msg <<EOM
5332 and I got the following output:
5336 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5337 if $sh -c "$run ./try " >>try.msg 2>&1; then
5341 *) echo 'The program compiled OK, but produced no output.' >> try.msg
5344 cat >> try.msg <<'EOQS'
5345 If $libs contains -lsfio, and sfio is mis-configured, then it
5346 sometimes (apparently) runs and exits with a 0 status, but with no
5347 output! It may have to do with sfio's use of _exit vs. exit.
5350 rp="You have a big problem. Shall I abort Configure"
5357 echo "The program compiled OK, but exited with status $?." >>try.msg
5358 rp="You have a problem. Shall I abort Configure"
5362 echo "I can't compile the test program." >>try.msg
5363 rp="You have a BIG problem. Shall I abort Configure"
5369 case "$knowitall" in
5371 echo "(The supplied flags or libraries might be incorrect.)"
5379 *) echo "Ok. Stopping Configure." >&4
5384 n) echo "OK, that should do.";;
5386 $rm_try gcctest gcctest.out
5388 : define a shorthand compile call
5392 case "$usedevel" in $define|true|[yY]*) if $test ! -f "${mc_file}.c"; then
5393 echo "Internal Configure script bug - compiler test file ${mc_file}.c is missing. Please report this to perlbug@perl.org" >&4;
5397 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5398 : define a shorthand compile call for compilations that should be ok.
5402 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5404 : determine filename position in cpp output
5406 echo "Computing filename position in cpp output for #include directives..." >&4
5408 vos) testaccess=-e ;;
5411 echo '#include <stdio.h>' > foo.c
5414 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5415 $grep '^[ ]*#.*stdio\.h' | \
5416 while read cline; do
5419 while $test \$# -gt 0; do
5420 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5425 pos=\`expr \$pos + 1\`
5437 *) pos="${fieldn}th";;
5439 echo "Your cpp writes the filename in the $pos field of the line."
5442 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5443 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5446 : locate header file
5451 for usrincdir in $usrinc
5453 if test -f \$usrincdir/\$wanted; then
5454 echo "\$usrincdir/\$wanted"
5458 awkprg='{ print \$$fieldn }'
5459 echo "#include <\$wanted>" > foo\$\$.c
5460 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5461 $cppfilter $grep "^[ ]*#.*\$wanted" | \
5462 while read cline; do
5463 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5465 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5466 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5471 # status = 0: grep returned 0 lines, case statement not executed
5472 # status = 1: headerfile found
5473 # status = 2: while loop executed, no headerfile found
5477 if test \$status -eq 1; then
5484 : define an alternate in-header-list? function
5485 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5486 cont=true; xxf="echo \"<\$1> found.\" >&4";
5487 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5488 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5490 case $# in 4) instead=instead;; *) instead="at last";; esac;
5491 while $test "$cont"; do
5493 var=$2; eval "was=\$$2";
5494 if $test "$xxx" && $test -r "$xxx";
5496 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5499 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5500 set $yyy; shift; shift; yyy=$@;
5501 case $# in 0) cont="";;
5502 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5503 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5504 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5505 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5509 do set $yyy; var=$2; eval "was=\$$2";
5510 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5511 set $yyy; shift; shift; yyy=$@;
5514 : see if stdlib is available
5515 set stdlib.h i_stdlib
5518 : check for lengths of integral types
5522 echo "Checking to see how big your integers are..." >&4
5531 printf("intsize=%d;\n", (int)sizeof(int));
5532 printf("longsize=%d;\n", (int)sizeof(long));
5533 printf("shortsize=%d;\n", (int)sizeof(short));
5538 if eval $compile_ok && $run ./try > /dev/null; then
5540 echo "Your integers are $intsize bytes long."
5541 echo "Your long integers are $longsize bytes long."
5542 echo "Your short integers are $shortsize bytes long."
5546 Help! I can't compile and run the intsize test program: please enlighten me!
5547 (This is probably a misconfiguration in your system or libraries, and
5548 you really ought to fix it. Still, I'll try anyway.)
5552 rp="What is the size of an integer (in bytes)?"
5556 rp="What is the size of a long integer (in bytes)?"
5560 rp="What is the size of a short integer (in bytes)?"
5568 : check for long long
5570 echo "Checking to see if you have long long..." >&4
5571 echo 'int main() { long long x = 7; return 0; }' > try.c
5573 if eval $compile; then
5575 echo "You have long long."
5578 echo "You do not have long long."
5584 : check for length of long long
5585 case "${d_longlong}${longlongsize}" in
5588 echo "Checking to see how big your long longs are..." >&4
5589 $cat >try.c <<'EOCP'
5593 printf("%d\n", (int)sizeof(long long));
5598 if eval $compile_ok; then
5599 longlongsize=`$run ./try`
5600 echo "Your long longs are $longlongsize bytes long."
5604 echo "(I can't seem to compile the test program. Guessing...)"
5605 rp="What is the size of a long long (in bytes)?"
5609 if $test "X$longsize" = "X$longlongsize"; then
5610 echo "(That isn't any different from an ordinary long.)"
5616 : see if inttypes.h is available
5617 : we want a real compile instead of Inhdr because some systems
5618 : have an inttypes.h which includes non-existent headers
5621 #include <inttypes.h>
5623 static int32_t foo32 = 0x12345678;
5627 if eval $compile; then
5628 echo "<inttypes.h> found." >&4
5631 echo "<inttypes.h> NOT found." >&4
5640 echo "Checking to see if you have int64_t..." >&4
5642 #include <sys/types.h>
5643 #$i_inttypes I_INTTYPES
5645 #include <inttypes.h>
5647 int main() { int64_t x = 7; }
5650 if eval $compile; then
5652 echo "You have int64_t."
5655 echo "You do not have int64_t."
5661 : Check if 64bit ints have a quad type
5663 echo "Checking which 64-bit integer type we could use..." >&4
5669 val='"unsigned int"'
5674 *) case "$longsize" in
5678 val='"unsigned long"'
5683 *) case "$d_longlong:$longlongsize" in
5688 val='"unsigned long long"'
5693 *) case "$d_int64_t" in
5712 '') echo "Alas, no 64-bit integer types in sight." >&4
5715 *) echo "We could use '$quadtype' for 64-bit integers." >&4
5720 : Do we want 64bit support
5721 case "$uselonglong" in
5722 "$define"|true|[yY]*)
5725 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5727 use64bitint="$define"
5730 case "$use64bits" in
5731 "$define"|true|[yY]*)
5734 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5736 use64bitint="$define"
5739 case "$use64bitints" in
5740 "$define"|true|[yY]*)
5743 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5745 use64bitint="$define"
5748 case "$use64bitsint" in
5749 "$define"|true|[yY]*)
5752 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5754 use64bitint="$define"
5757 case "$uselonglongs" in
5758 "$define"|true|[yY]*)
5761 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5763 use64bitint="$define"
5766 case "$use64bitsall" in
5767 "$define"|true|[yY]*)
5770 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5772 use64bitall="$define"
5777 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5779 case "$use64bitall" in
5780 "$define"|true|[yY]*) use64bitint="$define" ;;
5786 You have natively 64-bit long integers.
5790 *) case "$use64bitint" in
5791 "$define"|true|[yY]*) dflt='y';;
5800 Perl can be built to take advantage of 64-bit integer types
5801 on some systems. To do so, Configure can be run with -Duse64bitint.
5802 Choosing this option will most probably introduce binary incompatibilities.
5804 If this doesn't make any sense to you, just accept the default '$dflt'.
5805 (The default has been chosen based on your configuration.)
5807 rp='Try to use 64-bit integers, if available?'
5810 [yY]*) val="$define" ;;
5818 case "$use64bitall" in
5819 "$define"|true|[yY]*) dflt='y' ;;
5820 *) case "$longsize" in
5828 You may also choose to try maximal 64-bitness. It means using as much
5829 64-bitness as possible on the platform. This in turn means even more
5830 binary incompatibilities. On the other hand, your platform may not
5831 have any more 64-bitness available than what you already have chosen.
5833 If this doesn't make any sense to you, just accept the default '$dflt'.
5834 (The default has been chosen based on your configuration.)
5836 rp='Try to use maximal 64-bit support, if available?'
5839 [yY]*) val="$define" ;;
5844 case "$use64bitall" in
5846 case "$use64bitint" in
5850 Since you have chosen a maximally 64-bit build, I'm also turning on
5851 the use of 64-bit integers.
5853 use64bitint="$define" ;;
5858 : Look for a hint-file generated 'call-back-unit'. If the
5859 : user has specified that a 64-bit perl is to be built,
5860 : we may need to set or change some other defaults.
5861 if $test -f use64bitint.cbu; then
5862 echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5865 case "$use64bitint" in
5866 "$define"|true|[yY]*)
5868 4) case "$archname64" in
5869 '') archname64=64int ;;
5876 : Look for a hint-file generated 'call-back-unit'. If the
5877 : user has specified that a maximally 64-bit perl is to be built,
5878 : we may need to set or change some other defaults.
5879 if $test -f use64bitall.cbu; then
5880 echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5883 case "$use64bitall" in
5884 "$define"|true|[yY]*)
5886 4) case "$archname64" in
5887 ''|64int) archname64=64all ;;
5894 case "$d_quad:$use64bitint" in
5898 *** You have chosen to use 64-bit integers,
5899 *** but none can be found.
5900 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5901 *** Cannot continue, aborting.
5908 : check for length of double
5910 case "$doublesize" in
5912 echo "Checking to see how big your double precision numbers are..." >&4
5921 printf("%d\n", (int)sizeof(double));
5926 if eval $compile_ok; then
5927 doublesize=`$run ./try`
5928 echo "Your double is $doublesize bytes long."
5931 echo "(I can't seem to compile the test program. Guessing...)"
5932 rp="What is the size of a double precision number (in bytes)?"
5940 : check for long doubles
5942 echo "Checking to see if you have long double..." >&4
5943 echo 'int main() { long double x = 7.0; }' > try.c
5945 if eval $compile; then
5947 echo "You have long double."
5950 echo "You do not have long double."
5956 : check for length of long double
5957 case "${d_longdbl}${longdblsize}" in
5960 echo "Checking to see how big your long doubles are..." >&4
5961 $cat >try.c <<'EOCP'
5965 printf("%d\n", sizeof(long double));
5970 if eval $compile; then
5971 longdblsize=`$run ./try`
5972 echo "Your long doubles are $longdblsize bytes long."
5976 echo "(I can't seem to compile the test program. Guessing...)" >&4
5977 rp="What is the size of a long double (in bytes)?"
5981 if $test "X$doublesize" = "X$longdblsize"; then
5982 echo "That isn't any different from an ordinary double."
5983 echo "I'll keep your setting anyway, but you may see some"
5984 echo "harmless compilation warnings."
5990 : determine the architecture name
5992 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5993 tarch=`arch`"-$osname"
5994 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5995 if uname -m > tmparch 2>&1 ; then
5996 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5997 -e 's/$/'"-$osname/" tmparch`
6005 case "$myarchname" in
6008 echo "(Your architecture name used to be $myarchname.)"
6012 case "$targetarch" in
6014 *) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6019 *) dflt="$archname";;
6021 rp='What is your architecture name'
6024 case "$usethreads" in
6026 echo "Threads selected." >&4
6028 *-thread*) echo "...and architecture name already has -thread." >&4
6030 *) archname="$archname-thread"
6031 echo "...setting architecture name to $archname." >&4
6036 case "$usemultiplicity" in
6038 echo "Multiplicity selected." >&4
6040 *-multi*) echo "...and architecture name already has -multi." >&4
6042 *) archname="$archname-multi"
6043 echo "...setting architecture name to $archname." >&4
6048 case "$use64bitint$use64bitall" in
6050 case "$archname64" in
6052 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6055 case "$use64bitint" in
6056 "$define") echo "64 bit integers selected." >&4 ;;
6058 case "$use64bitall" in
6059 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6062 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6064 *) archname="$archname-$archname64"
6065 echo "...setting architecture name to $archname." >&4
6071 case "$uselongdouble" in
6073 echo "Long doubles selected." >&4
6074 case "$longdblsize" in
6076 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6080 *-ld*) echo "...and architecture name already has -ld." >&4
6082 *) archname="$archname-ld"
6083 echo "...setting architecture name to $archname." >&4
6090 case "$useperlio" in
6092 echo "Perlio selected." >&4
6095 echo "Perlio not selected, using stdio." >&4
6097 *-stdio*) echo "...and architecture name already has -stdio." >&4
6099 *) archname="$archname-stdio"
6100 echo "...setting architecture name to $archname." >&4
6105 if $test -f archname.cbu; then
6106 echo "Your platform has some specific hints for architecture name, using them..."
6110 : set the prefixit variable, to compute a suitable default value
6111 prefixit='case "$3" in
6113 case "$oldprefix" in
6114 "") eval "$1=\"\$$2\"";;
6121 ""|" ") eval "$1=\"\$$2\"";;
6127 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6129 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6130 /*-$oldprefix/*|\~*-$oldprefix/*)
6131 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6132 *) eval "$1=\"\$$2\"";;
6136 : determine installation style
6137 : For now, try to deduce it from prefix unless it is already set.
6138 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6139 case "$installstyle" in
6140 '') case "$prefix" in
6141 *perl*) dflt='lib';;
6142 *) dflt='lib/perl5' ;;
6145 *) dflt="$installstyle" ;;
6147 : Probably not worth prompting for this since we prompt for all
6148 : the directories individually, and the prompt would be too long and
6152 : determine where public executables go
6157 rp='Pathname where the public executables will reside?'
6159 if $test "X$ansexp" != "X$binexp"; then
6163 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6164 : XXX If this is fixed, also fix the "start perl" hunk below, which relies on
6165 : this via initialinstalllocation
6168 case "$userelocatableinc" in
6169 $define|true|[yY]*) dflt='y' ;;
6174 Would you like to build Perl so that the installation is relocatable, so that
6175 library paths in @INC are determined relative to the path of the perl binary?
6176 This is not advised for system Perl installs, or if you need to run setid
6177 scripts or scripts under taint mode.
6179 If this doesn't make any sense to you, just accept the default '$dflt'.
6181 rp='Use relocatable @INC?'
6184 y|Y) val="$define" ;;
6187 set userelocatableinc
6190 initialinstalllocation="$binexp"
6191 : Default prefix is now "up one level from where the binaries are"
6192 case "$userelocatableinc" in
6198 installprefixexp=".../.."
6202 : determine where private library files go
6203 : Usual default is /usr/local/lib/perl5/$version.
6204 : Also allow things like /opt/perl/lib/$version, since
6205 : /opt/perl/lib/perl5... would be redundant.
6206 : The default "style" setting is made in installstyle.U
6207 case "$installstyle" in
6208 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6209 *) set dflt privlib lib/$version ;;
6214 There are some auxiliary files for $package that need to be put into a
6215 private library directory that is accessible by everyone.
6220 rp='Pathname where the private library files will reside?'
6225 : set the prefixup variable, to restore leading tilda escape
6226 prefixup='case "$prefixexp" in
6228 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6231 : determine where public architecture dependent libraries go
6234 : privlib default is /usr/local/lib/$package/$version
6235 : archlib default is /usr/local/lib/$package/$version/$archname
6236 : privlib may have an optional trailing /share.
6237 tdflt=`echo $privlib | $sed 's,/share$,,'`
6238 tdflt=$tdflt/$archname
6247 $spackage contains architecture-dependent library files. If you are
6248 sharing libraries in a heterogeneous environment, you might store
6249 these files in a separate location. Otherwise, you can just include
6250 them with the rest of the public library files.
6255 rp='Where do you want to put the public architecture-dependent libraries?'
6259 if $test X"$archlib" = X"$privlib"; then
6265 : see if setuid scripts can be secure
6268 Some kernels have a bug that prevents setuid #! scripts from being
6269 secure. Some sites have disabled setuid #! scripts because of this.
6271 First let's decide if your kernel supports secure setuid #! scripts.
6272 (If setuid #! scripts would be secure but have been disabled anyway,
6273 don't say that they are secure if asked.)
6278 if $test -d /dev/fd; then
6279 echo "#!$ls" >reflect
6280 chmod +x,u+s reflect
6281 ./reflect >flect 2>&1
6282 if $contains "/dev/fd" flect >/dev/null; then
6283 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6287 If you are not sure if they are secure, I can check but I'll need a
6288 username and password different from the one you are using right now.
6289 If you don't have such a username or don't want me to test, simply
6293 rp='Other username to test security of setuid scripts with?'
6298 case "$d_suidsafe" in
6299 '') echo "I'll assume setuid scripts are *not* secure." >&4
6302 echo "Well, the $hint value is *not* secure." >&4
6304 *) echo "Well, the $hint value *is* secure." >&4
6309 $rm -f reflect flect
6310 echo "#!$ls" >reflect
6311 chmod +x,u+s reflect
6314 echo '"su" will (probably) prompt you for '"$ans's password."
6315 su $ans -c './reflect >flect'
6316 if $contains "/dev/fd" flect >/dev/null; then
6317 echo "Okay, it looks like setuid scripts are secure." >&4
6320 echo "I don't think setuid scripts are secure." >&4
6325 rp='Does your kernel have *secure* setuid scripts?'
6328 [yY]*) val="$define";;
6333 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6334 echo "(That's for file descriptors, not floppy disks.)"
6340 $rm -f reflect flect
6342 : now see if they want to do setuid emulation
6345 case "$d_suidsafe" in
6348 echo "No need to emulate SUID scripts since they are secure here." >&4
6352 Some systems have disabled setuid scripts, especially systems where
6353 setuid scripts cannot be secure. On systems where setuid scripts have
6354 been disabled, the setuid/setgid bits on scripts are currently
6355 useless. It is possible for $package to detect those bits and emulate
6356 setuid/setgid in a secure fashion. This emulation will only work if
6357 setuid scripts have been disabled in your kernel.
6361 "$define") dflt=y ;;
6364 rp="Do you want to do setuid/setgid emulation?"
6367 [yY]*) val="$define";;
6375 : Find perl5.005 or later.
6376 echo "Looking for a previously installed perl5.005 or later... "
6378 '') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6379 : Check if this perl is recent and can load a simple module
6380 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6383 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6393 '') echo "None found. That's ok.";;
6394 *) echo "Using $perl5." ;;
6397 : Set the siteprefix variables
6400 After $package is installed, you may wish to install various
6401 add-on modules and utilities. Typically, these add-ons will
6402 be installed under $prefix with the rest
6403 of this package. However, you may wish to install such add-ons
6404 elsewhere under a different prefix.
6406 If you do not wish to put everything under a single prefix, that's
6407 ok. You will be prompted for the individual locations; this siteprefix
6408 is only used to suggest the defaults.
6410 The default should be fine for most people.
6414 rp='Installation prefix to use for add-on modules and utilities?'
6415 : XXX Here might be another good place for an installstyle setting.
6416 case "$siteprefix" in
6418 *) dflt=$siteprefix ;;
6421 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6423 case "$siteprefix" in
6427 *) oldsiteprefix="$prefix";;
6432 siteprefixexp="$ansexp"
6434 : determine where site specific libraries go.
6435 : Usual default is /usr/local/lib/perl5/site_perl/$version
6436 : The default "style" setting is made in installstyle.U
6437 : XXX No longer works with Prefixit stuff.
6438 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6440 '') case "$installstyle" in
6441 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6442 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6450 The installation process will create a directory for
6451 site-specific extensions and modules. Most users find it convenient
6452 to place all site-specific files in this directory rather than in the
6453 main distribution directory.
6457 rp='Pathname for the site-specific library files?'
6461 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6463 : Determine list of previous versions to include in @INC
6464 $cat > getverlist <<EOPL
6467 \$api_versionstring = "$api_versionstring";
6468 \$version = "$version";
6469 \$stem = "$sitelib_stem";
6470 \$archname = "$archname";
6472 $cat >> getverlist <<'EOPL'
6473 # The list found is store twice for each entry: the original name, and
6474 # the binary broken down version as pack "sss", so sorting is easy and
6475 # unambiguous. This will work for all versions that have a maximum of
6476 # three digit groups, separate by '.'s or '_'s. Names are extended with
6477 # ".0.0" to ensure at least three elements for the pack.
6478 # -- H.Merijn Brand (m)'06 23-10-2006
6480 # Can't have leading @ because metaconfig interprets it as a command!
6481 ;@inc_version_list=();
6482 # XXX Redo to do opendir/readdir?
6485 ;@candidates = map {
6486 [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*");
6492 ($pversion, $aversion, $vsn5005) = map {
6493 pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005";
6494 foreach $d (@candidates) {
6495 if ($d->[1] lt $pversion) {
6496 if ($d->[1] ge $aversion) {
6497 unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]);
6499 elsif ($d->[1] ge $vsn5005) {
6500 unshift(@inc_version_list, grep { -d } $d->[0]);
6504 # Skip newer version. I.e. don't look in
6505 # 5.7.0 if we're installing 5.6.1.
6509 if (@inc_version_list) {
6510 print join(' ', @inc_version_list);
6513 # Blank space to preserve value for next Configure run.
6518 case "$inc_version_list" in
6519 '') if test -x "$perl5$exe_ext"; then
6520 dflt=`$perl5 getverlist`
6525 $undef) dflt='none' ;;
6526 *) eval dflt=\"$inc_version_list\" ;;
6529 ''|' ') dflt=none ;;
6536 In order to ease the process of upgrading, this version of perl
6537 can be configured to use modules built and installed with earlier
6538 versions of perl that were installed under $prefix. Specify here
6539 the list of earlier versions that this version of perl should check.
6540 If Configure detected no earlier versions of perl installed under
6541 $prefix, then the list will be empty. Answer 'none' to tell perl
6542 to not search earlier versions.
6544 The default should almost always be sensible, so if you're not sure,
6545 just accept the default.
6548 rp='List of earlier versions to include in @INC?'
6551 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6552 *) inc_version_list="$ans" ;;
6554 case "$inc_version_list" in
6556 inc_version_list_init='0'
6557 d_inc_version_list="$undef"
6559 *) inc_version_list_init=`echo $inc_version_list |
6560 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6561 d_inc_version_list="$define"
6566 : see if malloc/malloc.h has to be included
6567 set malloc/malloc.h i_mallocmalloc
6570 : see if this is a malloc.h system
6571 : we want a real compile instead of Inhdr because some systems have a
6572 : malloc.h that just gives a compile error saying to use stdlib.h instead
6577 #$i_mallocmalloc I_MALLOCMALLOC
6578 #ifdef I_MALLOCMALLOC
6579 # include <malloc/malloc.h>
6582 int main () { return 0; }
6585 if eval $compile; then
6586 echo "<malloc.h> found." >&4
6589 echo "<malloc.h> NOT found." >&4
6596 : check for void type
6598 echo "Checking to see how well your C compiler groks the void type..." >&4
6599 case "$voidflags" in
6611 extern void moo(); /* function returning void */
6612 void (*goo)(); /* ptr to func returning void */
6614 void *hue; /* generic ptr */
6627 int main() { sub(); }
6629 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6630 voidflags=$defvoidused
6631 echo "Good. It appears to support void to the level $package wants.">&4
6632 if $contains warning .out >/dev/null 2>&1; then
6633 echo "However, you might get some warnings that look like this:"
6637 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6638 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6639 echo "It supports 1..."
6640 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6641 echo "It also supports 2..."
6642 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6644 echo "And it supports 4 but not 8 definitely."
6646 echo "It doesn't support 4..."
6647 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6649 echo "But it supports 8."
6652 echo "Neither does it support 8."
6656 echo "It does not support 2..."
6657 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6659 echo "But it supports 4 and 8."
6661 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6663 echo "And it supports 4 but has not heard about 8."
6665 echo "However it supports 8 but not 4."
6670 echo "There is no support at all for void."
6675 case "$voidflags" in
6678 Support flag bits are:
6679 1: basic void declarations.
6680 2: arrays of pointers to functions returning void.
6681 4: operations between pointers to and addresses of void functions.
6682 8: generic void pointers.
6685 rp="Your void support flags add up to what?"
6692 : check for length of pointer
6696 echo "Checking to see how big your pointers are..." >&4
6697 if test "$voidflags" -gt 7; then
6698 echo '#define VOID_PTR char *' > try.c
6700 echo '#define VOID_PTR void *' > try.c
6710 printf("%d\n", (int)sizeof(VOID_PTR));
6715 if eval $compile_ok; then
6716 ptrsize=`$run ./try`
6717 echo "Your pointers are $ptrsize bytes long."
6720 echo "(I can't seem to compile the test program. Guessing...)" >&4
6721 rp="What is the size of a pointer (in bytes)?"
6728 case "$use64bitall" in
6729 "$define"|true|[yY]*)
6733 *** You have chosen a maximally 64-bit build,
6734 *** but your pointers are only 4 bytes wide.
6735 *** Please rerun Configure without -Duse64bitall.
6740 *** Since you have quads, you could possibly try with -Duse64bitint.
6745 *** Cannot continue, aborting.
6756 : determine whether to use malloc wrapping
6758 case "$usemallocwrap" in
6759 [yY]*|true|$define) dflt='y' ;;
6760 [nN]*|false|$undef) dflt='n' ;;
6761 *) case "$usedevel" in
6762 [yY]*|true|$define) dflt='y' ;;
6767 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6769 usemallocwrap="$ans"
6772 usemallocwrap="$define" ;;
6774 usemallocwrap="$undef" ;;
6777 : determine which malloc to compile in
6779 case "$usemymalloc" in
6780 [yY]*|true|$define) dflt='y' ;;
6781 [nN]*|false|$undef) dflt='n' ;;
6782 *) case "$ptrsize" in
6788 rp="Do you wish to attempt to use the malloc that comes with $package?"
6794 mallocsrc='malloc.c'
6795 mallocobj="malloc$_o"
6796 d_mymalloc="$define"
6799 : Remove malloc from list of libraries to use
6800 echo "Removing unneeded -lmalloc from library list" >&4
6801 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6804 echo "libs = $libs" >&4
6816 : compute the return types of malloc and free
6818 $cat >malloc.c <<END
6822 #include <sys/types.h>
6836 case "$malloctype" in
6838 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6845 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6849 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6856 echo "Your system uses $freetype free(), it would seem." >&4
6858 : determine where site specific architecture-dependent libraries go.
6859 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6860 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6861 : sitelib may have an optional trailing /share.
6863 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6864 dflt="$dflt/$archname"
6869 set sitearch sitearch none
6873 The installation process will also create a directory for
6874 architecture-dependent site-specific extensions and modules.
6878 rp='Pathname for the site-specific architecture-dependent library files?'
6882 if $test X"$sitearch" = X"$sitelib"; then
6885 d_sitearch="$define"
6888 : Set the vendorprefix variables
6891 The installation process will also create a directory for
6892 vendor-supplied add-ons. Vendors who supply perl with their system
6893 may find it convenient to place all vendor-supplied files in this
6894 directory rather than in the main distribution directory. This will
6895 ease upgrades between binary-compatible maintenance versions of perl.
6897 Of course you may also use these directories in whatever way you see
6898 fit. For example, you might use them to access modules shared over a
6899 company-wide network.
6901 The default answer should be fine for most people.
6902 This causes further questions about vendor add-ons to be skipped
6903 and no vendor-specific directories will be configured for perl.
6906 rp='Do you want to configure vendor-specific add-on directories?'
6907 case "$usevendorprefix" in
6908 define|true|[yY]*) dflt=y ;;
6909 *) : User may have set vendorprefix directly on Configure command line.
6910 case "$vendorprefix" in
6919 rp='Installation prefix to use for vendor-supplied add-ons?'
6920 case "$vendorprefix" in
6922 *) dflt=$vendorprefix ;;
6925 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6927 case "$vendorprefix" in
6931 *) oldvendorprefix="$prefix";;
6935 usevendorprefix="$define"
6937 vendorprefixexp="$ansexp"
6939 *) usevendorprefix="$undef"
6945 : Set the vendorlib variables
6946 case "$vendorprefix" in
6947 '') d_vendorlib="$undef"
6951 *) d_vendorlib="$define"
6952 : determine where vendor-supplied modules go.
6953 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6954 case "$vendorlib" in
6956 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6957 case "$installstyle" in
6958 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6959 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6962 *) dflt="$vendorlib"
6966 rp='Pathname for the vendor-supplied library files?'
6969 vendorlibexp="$ansexp"
6972 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6976 : Set the vendorarch variables
6977 case "$vendorprefix" in
6978 '') d_vendorarch="$undef"
6982 *) d_vendorarch="$define"
6983 : determine where vendor-supplied architecture-dependent libraries go.
6984 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6985 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6986 : vendorlib may have an optional trailing /share.
6987 case "$vendorarch" in
6988 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6989 dflt="$dflt/$archname"
6991 *) dflt="$vendorarch" ;;
6994 rp='Pathname for vendor-supplied architecture-dependent files?'
6997 vendorarchexp="$ansexp"
7000 prefixvar=vendorarch
7003 : Final catch-all directories to search
7006 Lastly, you can have perl look in other directories for extensions and
7007 modules in addition to those already specified.
7008 These directories will be searched after
7012 test X"$vendorlib" != "X" && echo ' ' $vendorlib
7013 test X"$vendorarch" != "X" && echo ' ' $vendorarch
7015 case "$otherlibdirs" in
7016 ''|' ') dflt='none' ;;
7017 *) dflt="$otherlibdirs" ;;
7020 Enter a colon-separated set of extra paths to include in perl's @INC
7021 search path, or enter 'none' for no extra paths.
7025 rp='Colon-separated list of additional directories for perl to search?'
7028 ' '|''|none) otherlibdirs=' ' ;;
7029 *) otherlibdirs="$ans" ;;
7031 case "$otherlibdirs" in
7035 set d_perl_otherlibdirs
7038 : Cruising for prototypes
7040 echo "Checking out function prototypes..." >&4
7041 $cat >prototype.c <<EOCP
7046 int main(int argc, char *argv[]) {
7049 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7050 echo "Your C compiler appears to support function prototypes."
7053 echo "Your C compiler doesn't seem to understand function prototypes."
7060 : Check if ansi2knr is required
7061 case "$prototype" in
7063 *) ansi2knr='ansi2knr'
7068 This version of $package can only be compiled by a compiler that
7069 understands function prototypes. Unfortunately, your C compiler
7071 doesn't seem to understand them. Sorry about that.
7073 If GNU cc is available for your system, perhaps you could try that instead.
7075 Eventually, we hope to support building Perl with pre-ANSI compilers.
7076 If you would like to help in that effort, please contact <perlbug@perl.org>.
7078 Aborting Configure now.
7085 dflt_dtrace='/usr/sbin/dtrace'
7088 Perl can be built to support DTrace on platforms that support it.
7089 DTrace is a diagnosis and performance analysis tool from Sun.
7091 If this doesn't make any sense to you, just accept the default '$dflt'.
7095 case "$usedtrace" in
7101 dflt_dtrace=$usedtrace
7108 rp='Support DTrace if available?'
7111 y|Y) val="$define" ;;
7117 test "X$usedtrace" != "X$define" && break
7120 rp='Where is the dtrace executable?'
7129 if $dtrace -h -s ../perldtrace.d \
7130 -o perldtrace.tmp >/dev/null 2>&1 \
7131 && rm -f perldtrace.tmp
7134 echo "Good: your $dtrace knows about the -h flag."
7138 *** $me: Fatal Error: $dtrace doesn't support -h flag
7140 *** Your installed dtrace doesn't support the -h switch to compile a D
7141 *** program into a C header. Can't continue.
7153 *** $me: Fatal Error: $dtrace not found.
7160 echo "*** $dtrace was not found."
7166 : See if we want extra modules installed
7173 Perl can be built with extra modules or bundles of modules which
7174 will be fetched from the CPAN and installed alongside Perl.
7176 Notice that you will need access to the CPAN; either via the Internet,
7177 or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
7178 be asked later to configure the CPAN.pm module which will in turn do
7179 the installation of the rest of the extra modules or bundles.)
7181 Notice also that if the modules require any external software such as
7182 libraries and headers (the libz library and the zlib.h header for the
7183 Compress::Zlib module, for example) you MUST have any such software
7184 already installed, this configuration process will NOT install such
7187 If this doesn't make any sense to you, just accept the default '$dflt'.
7189 rp='Install any extra modules (y or n)?'
7195 Please list any extra modules or bundles to be installed from CPAN,
7196 with spaces between the names. The names can be in any format the
7197 'install' command of CPAN.pm will understand. (Answer 'none',
7198 without the quotes, to install no extra modules or bundles.)
7208 $rm -f ../extras.lst
7210 *) echo "(Saving the list of extras for later...)"
7211 echo "$extras" > ../extras.lst
7219 : determine where html pages for programs go
7220 set html1dir html1dir none
7224 If you wish to install html files for programs in $spackage, indicate
7225 the appropriate directory here. To skip installing html files,
7229 ''|none|$undef|' ') dflt=none ;;
7230 *) dflt=$html1dir ;;
7233 rp="Directory for the main $spackage html pages?"
7237 : Use ' ' for none so value is preserved next time through Configure
7238 $test X"$html1dir" = "X" && html1dir=' '
7240 : determine where html pages for libraries and modules go
7241 set html3dir html3dir none
7245 If you wish to install html files for modules associated with $spackage,
7246 indicate the appropriate directory here. To skip installing html files,
7249 : There is no obvious default. If they have specified html1dir, then
7250 : try to key off that, possibly changing .../html1 into .../html3.
7252 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
7253 *) dflt=$html3dir ;;
7256 rp="Directory for the $spackage module html pages?"
7260 : Use ' ' for none so value is preserved next time through Configure
7261 $test X"$html3dir" = "X" && html3dir=' '
7263 : determine whether to install perl also as /usr/bin/perl
7266 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7268 Many scripts expect perl to be installed as /usr/bin/perl.
7270 If you want to, I can install the perl you are about to compile
7271 as /usr/bin/perl (in addition to $bin/perl).
7273 if test -f /usr/bin/perl; then
7276 However, please note that because you already have a /usr/bin/perl,
7277 overwriting that with a new Perl would very probably cause problems.
7278 Therefore I'm assuming you don't want to do that (unless you insist).
7281 case "$installusrbinperl" in
7282 "$define"|[yY]*) dflt='y';;
7288 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
7291 case "$installusrbinperl" in
7292 "$undef"|[nN]*) dflt='n';;
7296 rp="Do you want to install perl as /usr/bin/perl?"
7299 [yY]*) val="$define";;
7305 set installusrbinperl
7308 : Check if we are using the GNU C library
7310 echo "Checking for GNU C Library..." >&4
7312 /* Find out version of GNU C library. __GLIBC__ and __GLIBC_MINOR__
7313 alone are insufficient to distinguish different versions, such as
7314 2.0.6 and 2.0.7. The function gnu_get_libc_version() appeared in
7315 libc version 2.1.0. A. Dougherty, June 3, 2002.
7321 # ifdef __GLIBC_MINOR__
7322 # if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus)
7323 # include <gnu/libc-version.h>
7324 printf("%s\n", gnu_get_libc_version());
7326 printf("%d.%d\n", __GLIBC__, __GLIBC_MINOR__);
7329 printf("%d\n", __GLIBC__);
7338 if eval $compile_ok && $run ./try > glibc.ver; then
7340 gnulibc_version=`$cat glibc.ver`
7341 echo "You are using the GNU C Library version $gnulibc_version"
7345 echo "You are not using the GNU C Library"
7351 : see if nm is to be used to determine whether a symbol is defined or not
7355 case "$d_gnulibc" in
7358 echo "nm probably won't work on the GNU C Library." >&4
7364 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7366 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
7367 echo "'nm' won't be sufficient on this sytem." >&4
7373 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7374 if $test $dflt -gt 20; then
7384 true|$define) dflt=y;;
7391 I can use $nm to extract the symbols from your C libraries. This
7392 is a time consuming task which may generate huge output on the disk (up
7393 to 3 megabytes) but that should make the symbols extraction faster. The
7394 alternative is to skip the 'nm' extraction part and to compile a small
7395 test program instead to determine whether each symbol is present. If
7396 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7397 this may be the best solution.
7399 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7402 rp="Shall I use $nm to extract C symbols from the libraries?"
7405 [Nn]*) usenm=false;;
7414 : nm options which may be necessary
7416 '') if $test -f /mach_boot; then
7418 elif $test -d /usr/ccs/lib; then
7419 nm_opt='-p' # Solaris (and SunOS?)
7420 elif $test -f /dgux; then
7422 elif $test -f /lib64/rld; then
7423 nm_opt='-p' # 64-bit Irix
7429 : nm options which may be necessary for shared libraries but illegal
7430 : for archive libraries. Thank you, Linux.
7431 case "$nm_so_opt" in
7432 '') case "$myuname" in
7434 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7435 nm_so_opt='--dynamic'
7442 : get list of predefined functions in a handy place
7449 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7455 *) for thislib in $libs; do
7458 : Handle C library specially below.
7461 thislib=`echo $thislib | $sed -e 's/^-l//'`
7462 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7464 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7466 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7468 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7470 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7472 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7474 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7479 libnames="$libnames $try"
7481 *) libnames="$libnames $thislib" ;;
7490 for xxx in $libpth; do
7491 $test -r $1 || set $xxx/libc.$so
7492 : The messy sed command sorts on library version numbers.
7494 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7495 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7497 s/[0-9][0-9]*/0000&/g
7498 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7501 $sort | $sed -e 's/^.* //'`
7504 $test -r $1 || set /usr/ccs/lib/libc.$so
7505 $test -r $1 || set /lib/libsys_s$_a
7511 if $test -r "$1"; then
7512 echo "Your (shared) C library seems to be in $1."
7514 elif $test -r /lib/libc && $test -r /lib/clib; then
7515 echo "Your C library seems to be in both /lib/clib and /lib/libc."
7517 libc='/lib/clib /lib/libc'
7518 if $test -r /lib/syslib; then
7519 echo "(Your math library is in /lib/syslib.)"
7520 libc="$libc /lib/syslib"
7522 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7523 echo "Your C library seems to be in $libc, as you said before."
7524 elif $test -r $incpath/usr/lib/libc$_a; then
7525 libc=$incpath/usr/lib/libc$_a;
7526 echo "Your C library seems to be in $libc. That's fine."
7527 elif $test -r /lib/libc$_a; then
7529 echo "Your C library seems to be in $libc. You're normal."
7531 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7533 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7534 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7535 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7537 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7539 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7542 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7544 if $test -r "$tans"; then
7545 echo "Your C library seems to be in $tans, of all places."
7551 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7555 If the guess above is wrong (which it might be if you're using a strange
7556 compiler, or your machine supports multiple models), you can override it here.
7561 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7563 I can't seem to find your C library. I've looked in the following places:
7566 $sed 's/^/ /' libpath
7569 None of these seems to contain your C library. I need to get its name...
7574 rp='Where is your C library?'
7579 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7580 set X `cat libnames`
7583 case $# in 1) xxx=file; esac
7584 echo "Extracting names from the following $xxx for later perusal:" >&4
7586 $sed 's/^/ /' libnames >&4
7588 $echo $n "This may take a while...$c" >&4
7592 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7593 *) $nm $nm_opt $file 2>/dev/null;;
7598 $grep fprintf libc.tmp > libc.ptf
7599 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7600 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7602 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *//p'";\
7604 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7606 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7608 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7610 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7612 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7614 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7616 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7618 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7620 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7622 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7624 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7626 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7627 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
7629 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7631 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7633 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7635 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7637 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7639 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7641 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7643 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7645 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7647 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7649 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7651 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7653 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7655 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
7657 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7660 $nm -p $* 2>/dev/null >libc.tmp
7661 $grep fprintf libc.tmp > libc.ptf
7662 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7663 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7669 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7671 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7672 for thisname in $libnames $libc; do
7673 $ar t $thisname >>libc.tmp
7675 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7677 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7678 # Repeat libc to extract forwarders to DLL entries too
7679 for thisname in $libnames $libc; do
7680 $ar tv $thisname >>libc.tmp
7681 # Revision 50 of EMX has bug in $ar.
7682 # it will not extract forwarders to DLL entries
7683 # Use emximp which will extract exactly them.
7684 emximp -o tmp.imp $thisname \
7686 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7687 < tmp.imp >>libc.tmp
7690 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7693 echo "$ar didn't seem to work right." >&4
7694 echo "Maybe this is a Cray...trying bld instead..." >&4
7695 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7697 for thisname in $libnames; do
7699 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7700 $ar t $thisname >>libc.tmp
7704 echo "That didn't work either. Giving up." >&4
7714 echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7715 dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7717 *) if $test -f /lib/syscalls.exp; then
7719 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7720 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
7726 $rm -f libnames libpath
7728 : see if dld is available
7732 : Check if we are using C++
7734 echo "Checking for C++..." >&4
7735 $cat >try.c <<'EOCP'
7747 if eval $compile_ok && $run ./try; then
7749 echo "You are using a C++ compiler."
7752 echo "You are not using a C++ compiler."
7758 : is a C symbol defined?
7761 -v) tf=libc.tmp; tdc="";;
7762 -a) tf=libc.tmp; tdc="[]";;
7763 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7766 case "$reuseval-$4" in
7768 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7773 case "$d_cplusplus" in
7774 $define) extern_C=\"C\";;
7776 if $test "$runnm" = true; then
7777 if $contains $tlook $tf >/dev/null 2>&1; then
7779 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7780 echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7781 $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7782 $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7786 echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7787 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7793 $define) tval=true;;
7800 : define an is-in-libc? function
7801 inlibc='echo " "; td=$define; tu=$undef;
7802 sym=$1; var=$2; eval "was=\$$2";
7804 case "$reuseval$was" in
7814 echo "$sym() found." >&4;
7815 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7817 echo "$sym() NOT found." >&4;
7818 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7822 $define) echo "$sym() found." >&4;;
7823 *) echo "$sym() NOT found." >&4;;
7827 : see if dlopen exists
7829 xxx_ccflags="$ccflags"
7831 : with g++ one needs -shared to get is-in-libc to work for dlopen
7832 case "$gccversion" in
7834 *) case "$d_cplusplus" in
7835 "$define") ccflags="$ccflags -shared" ;;
7842 ccflags="$xxx_ccflags"
7844 : see if this is a unistd.h system
7845 set unistd.h i_unistd
7848 : determine which dynamic loading, if any, to compile in
7850 dldir="ext/DynaLoader"
7863 $define) dflt='y' ;;
7866 $define) dflt='y' ;;
7868 : Does a dl_xxx.xs file exist for this operating system
7869 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7872 rp="Do you wish to use dynamic loading?"
7879 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7880 dflt="$dldir/dl_${osname}.xs"
7881 elif $test "$d_dlopen" = "$define" ; then
7882 dflt="$dldir/dl_dlopen.xs"
7883 elif $test "$i_dld" = "$define" ; then
7884 dflt="$dldir/dl_dld.xs"
7889 *) dflt="$dldir/$dlsrc"
7892 echo "The following dynamic loading files are available:"
7893 : Can not go over to $dldir because getfile has path hard-coded in.
7894 tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7895 rp="Source file to use for dynamic loading"
7901 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7905 Some systems may require passing special flags to $cc -c to
7906 compile modules that will be used to create a shared library.
7907 To use no flags, say "none".
7910 case "$cccdlflags" in
7911 '') case "$gccversion" in
7912 '') case "$osname" in
7914 next) dflt='none' ;;
7915 irix*) dflt='-KPIC' ;;
7916 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7917 sunos) dflt='-pic' ;;
7921 *) case "$osname" in
7922 darwin) dflt='none' ;;
7923 linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7928 *) dflt="$cccdlflags" ;;
7930 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7933 none) cccdlflags=' ' ;;
7934 *) cccdlflags="$ans" ;;
7939 Some systems use ld to create libraries that can be dynamically loaded,
7940 while other systems (such as those using ELF) use $cc.
7944 '') $cat >try.c <<EOM
7945 /* Test for whether ELF binaries are produced */
7957 int i = open("a.out",O_RDONLY);
7960 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7961 exit(0); /* succeed (yes, it's ELF) */
7966 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7968 You appear to have ELF support. I'll use $cc to build dynamic libraries.
7972 echo "I'll use ld to build dynamic libraries."
7981 rp="What command should be used to create dynamic libraries?"
7987 Some systems may require passing special flags to $ld to create a
7988 library that can be dynamically loaded. If your ld flags include
7989 -L/other/path options to locate libraries outside your loader's normal
7990 search path, you may need to specify those -L options here as well. To
7991 use no flags, say "none".
7994 case "$lddlflags" in
7995 '') case "$osname" in
7996 beos) dflt='-nostart' ;;
7998 case "$gccversion" in
7999 '') dflt="$dflt +vnocompatwarnings" ;;
8002 linux|irix*|gnu*) dflt="-shared $optimize" ;;
8003 next) dflt='none' ;;
8004 solaris) dflt='-G' ;;
8005 sunos) dflt='-assert nodefinitions' ;;
8006 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
8010 *) dflt="$lddlflags" ;;
8013 : Try to guess additional flags to pick up local libraries.
8014 : Be careful not to append to a plain 'none'
8018 for thisflag in $ldflags; do
8023 *) dflt="$dflt $thisflag" ;;
8030 ''|' ') dflt='none' ;;
8034 *-fstack-protector*)
8036 *-fstack-protector*) ;; # Don't add it again
8037 *) dflt="$dflt -fstack-protector" ;;
8043 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
8046 none) lddlflags=' ' ;;
8047 *) lddlflags="$ans" ;;
8052 Some systems may require passing special flags to $cc to indicate that
8053 the resulting executable will use dynamic linking. To use no flags,
8057 case "$ccdlflags" in
8058 '') case "$osname" in
8059 linux|hpux|gnu*) dflt='-Wl,-E' ;;
8060 next|sunos) dflt='none' ;;
8064 *) dflt="$ccdlflags" ;;
8066 rp="Any special flags to pass to $cc to use dynamic linking?"
8069 none) ccdlflags=' ' ;;
8070 *) ccdlflags="$ans" ;;
8081 : Do we want a shared libperl?
8085 # No dynamic loading being used, so don't bother even to prompt.
8088 *) case "$useshrplib" in
8089 '') case "$osname" in
8090 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
8092 also='Building a shared libperl is required for dynamic loading to work on your system.'
8097 also='Building a shared libperl is needed for MAB support.'
8115 The perl executable is normally obtained by linking perlmain.c with
8116 libperl${_a}, any static extensions (usually just DynaLoader), and
8117 any other libraries needed on this system (such as -lm, etc.). Since
8118 your system supports dynamic loading, it is probably possible to build
8119 a shared libperl.$so. If you will have more than one executable linked
8120 to libperl.$so, this will significantly reduce the size of each
8121 executable, but it may have a noticeable effect on performance. The
8122 default is probably sensible for your system.
8126 rp="Build a shared libperl.$so (y/n)"
8130 useshrplib='true' ;;
8131 *) useshrplib='false' ;;
8136 case "$useshrplib" in
8140 # Figure out a good name for libperl.so. Since it gets stored in
8141 # a version-specific architecture-dependent library, the version
8142 # number isn't really that important, except for making cc/ld happy.
8144 # A name such as libperl.so.3.1
8145 majmin="libperl.$so.$patchlevel.$subversion"
8146 # A name such as libperl.so.301
8147 majonly=`echo $patchlevel $subversion |
8148 $awk '{printf "%d%02d", $1, $2}'`
8149 majonly=libperl.$so.$majonly
8150 # I'd prefer to keep the os-specific stuff here to a minimum, and
8151 # rely on figuring it out from the naming of libc.
8152 case "${osname}${osvers}" in
8155 # XXX How handle the --version stuff for MAB?
8157 linux*|gnu*) # ld won't link with a bare -lperl otherwise.
8160 cygwin*) # ld links against an importlib
8161 dflt=libperl$lib_ext
8163 *) # Try to guess based on whether libc has major.minor.
8165 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
8166 *libc.$so.[0-9]*) dflt=$majonly ;;
8167 *) dflt=libperl.$so ;;
8177 I need to select a good name for the shared libperl. If your system uses
8178 library names with major and minor numbers, then you might want something
8179 like $majmin. Alternatively, if your system uses a single version
8180 number for shared libraries, then you might want to use $majonly.
8181 Or, your system might be quite happy with a simple libperl.$so.
8183 Since the shared libperl will get installed into a version-specific
8184 architecture-dependent directory, the version number of the shared perl
8185 library probably isn't important, so the default should be o.k.
8188 rp='What name do you want to give to the shared libperl?'
8191 echo "Ok, I'll use $libperl"
8194 libperl="libperl${_a}"
8198 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
8202 WARNING: Use of the shrpdir variable for the installation location of
8203 the shared $libperl is not supported. It was never documented and
8204 will not work in this version. Let me (perlbug@perl.org)
8205 know of any problems this may cause.
8211 But your current setting of $shrpdir is
8212 the default anyway, so it's harmless.
8217 Further, your current attempted setting of $shrpdir
8218 conflicts with the value of $archlibexp/CORE
8219 that installperl will use.
8226 # How will the perl executable find the installed shared $libperl?
8227 # Add $xxx to ccdlflags.
8228 # If we can't figure out a command-line option, use $shrpenv to
8229 # set env LD_RUN_PATH. The main perl makefile uses this.
8230 shrpdir=$archlibexp/CORE
8233 if "$useshrplib"; then
8236 # We'll set it in Makefile.SH...
8241 freebsd|netbsd|openbsd|interix|dragonfly)
8242 xxx="-Wl,-R$shrpdir"
8244 bsdos|linux|irix*|dec_osf|gnu*)
8245 xxx="-Wl,-rpath,$shrpdir"
8248 # next doesn't like the default...
8251 # beos doesn't like the default, either.
8254 # hpux doesn't like the default, either.
8255 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
8258 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
8264 # Only add $xxx if it isn't already in ccdlflags.
8265 case " $ccdlflags " in
8267 *) ccdlflags="$ccdlflags $xxx"
8270 Adding $xxx to the flags
8271 passed to $ld so that the perl executable will find the
8272 installed shared $libperl.
8280 # Fix ccdlflags in AIX for building external extensions.
8281 # (For building Perl itself bare -bE:perl.exp is needed,
8282 # Makefile.SH takes care of this.)
8284 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
8286 # Respect a hint or command-line value.
8288 '') shrpenv="$tmp_shrpenv" ;;
8290 case "$ldlibpthname" in
8291 '') ldlibpthname=LD_LIBRARY_PATH ;;
8292 none) ldlibpthname='' ;;
8295 : determine where manual pages are on this system
8299 syspath='/usr/share/man/man1 /usr/man/man1'
8300 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
8301 syspath="$syspath /usr/man/u_man/man1"
8302 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
8303 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
8304 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
8305 sysman=`./loc . /usr/man/man1 $syspath`
8308 if $test -d "$sysman"; then
8309 echo "System manual is in $sysman." >&4
8311 echo "Could not find manual pages in source form." >&4
8314 : determine where manual pages go
8315 set man1dir man1dir none
8319 $spackage has manual pages available in source form.
8323 echo "However, you don't have nroff, so they're probably useless to you."
8325 '') man1dir="none";;
8328 echo "If you don't want the manual sources installed, answer 'none'."
8333 lookpath="$prefixexp/share/man/man1"
8334 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
8335 lookpath="$lookpath $prefixexp/man/p_man/man1"
8336 lookpath="$lookpath $prefixexp/man/u_man/man1"
8337 lookpath="$lookpath $prefixexp/man/man.1"
8339 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
8340 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
8350 rp="Where do the main $spackage manual pages (source) go?"
8352 if $test "X$man1direxp" != "X$ansexp"; then
8363 : What suffix to use on installed man pages
8370 rp="What suffix should be used for the main $spackage man pages?"
8372 '') case "$man1dir" in
8386 *) dflt="$man1ext";;
8393 : see if we can have long filenames
8395 first=123456789abcdef
8397 if (echo hi >$first) 2>/dev/null; then
8398 if $test -f 123456789abcde; then
8399 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
8402 echo 'You can have filenames longer than 14 characters.'>&4
8407 You can't have filenames longer than 14 chars.
8408 You can't even think about them!
8414 $rm -rf 123456789abcde*
8416 : determine where library module manual pages go
8417 set man3dir man3dir none
8421 $spackage has manual pages for many of the library modules.
8427 However, you don't have nroff, so they're probably useless to you.
8430 '') man3dir="none";;
8434 case "$d_flexfnam" in
8437 However, your system can't handle the long file names like File::Basename.3.
8440 '') man3dir="none";;
8444 echo "If you don't want the manual sources installed, answer 'none'."
8445 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8447 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8448 if $test -d "$privlib/man/man3"; then
8451 WARNING: Previous versions of perl installed man3 pages into
8452 $privlib/man/man3. This version will suggest a
8453 new default of $dflt.
8457 rp='Do you wish to preserve the old behavior?(y/n)'
8460 y*) dflt="$privlib/man/man3" ;;
8465 *) dflt="$man3dir" ;;
8472 rp="Where do the $package library man pages (source) go?"
8482 : What suffix to use on installed man pages
8488 rp="What suffix should be used for the $package library man pages?"
8490 '') case "$man3dir" in
8504 *) dflt="$man3ext";;
8511 : see if we have to deal with yellow pages, now NIS.
8512 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8513 if $test -f /usr/etc/nibindd; then
8515 echo "I'm fairly confident you're on a NeXT."
8517 rp='Do you get the hosts file via NetInfo?'
8526 y*) hostcat='nidump hosts .';;
8527 *) case "$hostcat" in
8528 nidump*) hostcat='';;
8538 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8546 rp='Are you getting the hosts file via yellow pages?'
8549 y*) hostcat='ypcat hosts';;
8550 *) hostcat='cat /etc/hosts';;
8556 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8559 '') test -f /etc/group && groupcat='cat /etc/group';;
8562 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8565 : now get the host name
8567 echo "Figuring out host name..." >&4
8568 case "$myhostname" in
8570 echo 'Maybe "hostname" will work...'
8571 if tans=`sh -c hostname 2>&1` ; then
8579 if $test "$cont"; then
8581 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
8582 if tans=`cat /etc/systemid 2>&1` ; then
8584 phostname='cat /etc/systemid'
8585 echo "Whadyaknow. Xenix always was a bit strange..."
8588 elif $test -r /etc/systemid; then
8589 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8592 if $test "$cont"; then
8593 echo 'No, maybe "uuname -l" will work...'
8594 if tans=`sh -c 'uuname -l' 2>&1` ; then
8596 phostname='uuname -l'
8598 echo 'Strange. Maybe "uname -n" will work...'
8599 if tans=`sh -c 'uname -n' 2>&1` ; then
8601 phostname='uname -n'
8603 echo 'Oh well, maybe I can mine it out of whoami.h...'
8604 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8605 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8606 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8608 case "$myhostname" in
8609 '') echo "Does this machine have an identity crisis or something?"
8612 echo "Well, you said $myhostname before..."
8613 phostname='echo $myhostname';;
8619 case "$myhostname" in
8620 '') myhostname=noname ;;
8622 : you do not want to know about this
8627 if $test "$myhostname" ; then
8629 rp='Your host name appears to be "'$myhostname'".'" Right?"
8637 : bad guess or no guess
8638 while $test "X$myhostname" = X ; do
8640 rp="Please type the (one word) name of your host:"
8645 : translate upper to lower if necessary
8646 case "$myhostname" in
8648 echo "(Normalizing case in your host name)"
8649 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8653 case "$myhostname" in
8655 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8656 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8657 echo "(Trimming domain name from host name--host name is now $myhostname)"
8659 *) case "$mydomain" in
8662 test "X$hostcat" = "Xypcat hosts" &&
8663 ypmatch "$myhostname" hosts 2>/dev/null |\
8664 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
8667 test "X$hostcat" != "X" &&
8668 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
8669 /[ ]$myhostname[ . ]/p" > hosts
8672 if $test -f hosts; then
8673 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
8674 END { print sum }" hosts` = x1 || tmp_re="[ ]"
8675 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8676 hosts | $sort | $uniq | \
8677 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8678 case `$echo X$dflt` in
8679 X*\ *) echo "(Several hosts in the database matched hostname)"
8682 X.) echo "(You do not have fully-qualified names in the hosts database)"
8686 echo "(I cannot locate a hosts database anywhere)"
8691 tans=`./loc resolv.conf X /etc /usr/etc`
8692 if $test -f "$tans"; then
8693 echo "(Attempting domain name extraction from $tans)"
8694 dflt=.`$sed -n -e 's/ / /g' \
8695 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
8696 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8698 .) dflt=.`$sed -n -e 's/ / /g' \
8699 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
8700 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8707 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8708 dflt=.`sh -c domainname 2>/dev/null`
8711 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8715 case "$dflt$osname" in
8716 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8717 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8721 .) echo "(Lost all hope -- silly guess then)"
8727 *) dflt="$mydomain";;
8731 rp="What is your domain name?"
8741 : translate upper to lower if necessary
8744 echo "(Normalizing case in your domain name)"
8745 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8749 : a little sanity check here
8750 case "$phostname" in
8753 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8754 $myhostname$mydomain|$myhostname) ;;
8756 case "$phostname" in
8758 echo "(That doesn't agree with your whoami.h file, by the way.)"
8761 echo "(That doesn't agree with your $phostname command, by the way.)"
8769 : determine the e-mail address of the user who is running us
8772 I need to get your e-mail address in Internet format if possible, i.e.
8773 something like user@host.domain. Please answer accurately since I have
8774 no easy means to double check it. The default value provided below
8775 is most probably close to reality but may not be valid from outside
8776 your organization...
8780 while test "$cont"; do
8782 '') dflt="$cf_by@$myhostname$mydomain";;
8783 *) dflt="$cf_email";;
8785 rp='What is your e-mail address?'
8791 rp='Address does not look like an Internet one. Use it anyway?'
8805 : Ask e-mail of administrator
8808 If you or somebody else will be maintaining perl at your site, please
8809 fill in the correct e-mail address here so that they may be contacted
8810 if necessary. Currently, the "perlbug" program included with perl
8811 will send mail to this address in addition to perlbug@perl.org. You may
8812 enter "none" for no administrator.
8815 case "$perladmin" in
8816 '') dflt="$cf_email";;
8817 *) dflt="$perladmin";;
8819 rp='Perl administrator e-mail address'
8823 : determine whether to only install version-specific parts.
8826 Do you want to install only the version-specific parts of the perl
8827 distribution? Usually you do *not* want to do this.
8829 case "$versiononly" in
8830 "$define"|[Yy]*|true) dflt='y' ;;
8833 rp="Do you want to install only the version-specific parts of perl?"
8836 [yY]*) val="$define";;
8842 case "$versiononly" in
8843 "$define") inc_version_list=''
8844 inc_version_list_init=0
8848 : figure out how to guarantee perl startup
8849 : XXX Note that this currently takes advantage of the bug that binexp ignores
8850 : the Configure -Dinstallprefix setting, which in turn means that under
8851 : relocatable @INC, initialinstalllocation is what binexp started as.
8852 case "$startperl" in
8854 case "$sharpbang" in
8858 I can use the #! construct to start perl on your system. This will
8859 make startup of perl scripts faster, but may cause problems if you
8860 want to share those scripts and perl is not in a standard place
8861 ($initialinstalllocation/perl) on all your platforms. The alternative
8862 is to force a shell by starting the script with a single ':' character.
8865 case "$versiononly" in
8866 "$define") dflt="$initialinstalllocation/perl$version";;
8867 *) dflt="$initialinstalllocation/perl";;
8869 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8872 none) startperl=": # use perl";;
8873 *) startperl="#!$ans"
8874 if $test 30 -lt `echo "$ans" | wc -c`; then
8877 WARNING: Some systems limit the #! command to 32 characters.
8878 If you experience difficulty running Perl scripts with #!, try
8879 installing Perl in a directory with a shorter pathname.
8885 *) startperl=": # use perl"
8890 echo "I'll use $startperl to start perl scripts."
8892 : figure best path for perl in scripts
8895 case "$versiononly" in
8896 "$define") perlpath="$initialinstalllocation/perl$version";;
8897 *) perlpath="$initialinstalllocation/perl";;
8899 case "$startperl" in
8904 I will use the "eval 'exec'" idiom to start Perl on your system.
8905 I can use the full path of your Perl binary for this purpose, but
8906 doing so may cause problems if you want to share those scripts and
8907 Perl is not always in a standard place ($initialinstalllocation/perl).
8910 dflt="$initialinstalllocation/perl"
8911 rp="What path shall I use in \"eval 'exec'\"?"
8918 case "$startperl" in
8920 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8923 : determine where public executable scripts go
8924 set scriptdir scriptdir
8926 case "$scriptdir" in
8929 : guess some guesses
8930 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8931 $test -d /usr/share/bin && dflt=/usr/share/bin
8932 $test -d /usr/local/script && dflt=/usr/local/script
8933 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8934 $test -d $prefixexp/script && dflt=$prefixexp/script
8938 *) dflt="$scriptdir"
8943 Some installations have a separate directory just for executable scripts so
8944 that they can mount it across multiple architectures but keep the scripts in
8945 one spot. You might, for example, have a subdirectory of /usr/share for this.
8946 Or you might just lump your scripts in with all your other executables.
8950 rp='Where do you keep publicly executable scripts?'
8952 if $test "X$ansexp" != "X$scriptdirexp"; then
8958 : A little fix up for an irregularly named variable.
8959 installscript="$installscriptdir"
8961 : determine where add-on public executables go
8963 '') dflt=$siteprefix/bin ;;
8967 rp='Pathname where the add-on public executables should be installed?'
8972 : determine where add-on html pages go
8973 : There is no standard location, so try to copy the previously-selected
8974 : directory structure for the core html pages.
8975 case "$sitehtml1dir" in
8976 '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8977 *) dflt=$sitehtml1dir ;;
8980 ''|' ') dflt=none ;;
8983 rp='Pathname where the site-specific html pages should be installed?'
8985 prefixvar=sitehtml1dir
8988 : determine where add-on library html pages go
8989 : There is no standard location, so try to copy the previously-selected
8990 : directory structure for the core html pages.
8991 case "$sitehtml3dir" in
8992 '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8993 *) dflt=$sitehtml3dir ;;
8996 ''|' ') dflt=none ;;
8999 rp='Pathname where the site-specific library html pages should be installed?'
9001 prefixvar=sitehtml3dir
9004 : determine where add-on manual pages go
9005 case "$siteman1dir" in
9006 '') dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
9007 *) dflt=$siteman1dir ;;
9010 ''|' ') dflt=none ;;
9013 rp='Pathname where the site-specific manual pages should be installed?'
9015 prefixvar=siteman1dir
9018 : determine where add-on library man pages go
9019 case "$siteman3dir" in
9020 '') dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
9021 *) dflt=$siteman3dir ;;
9024 ''|' ') dflt=none ;;
9027 rp='Pathname where the site-specific library manual pages should be installed?'
9029 prefixvar=siteman3dir
9032 : determine where add-on public executable scripts go
9033 case "$sitescript" in
9034 '') dflt=$siteprefix/script
9035 $test -d $dflt || dflt=$sitebin ;;
9036 *) dflt="$sitescript" ;;
9039 rp='Pathname where add-on public executable scripts should be installed?'
9041 prefixvar=sitescript
9044 : Check if faststdio is requested and available
9045 case "$usefaststdio" in
9046 $define|true|[yY]*|'')
9047 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
9057 Perl can be built to use 'fast stdio', which means using the stdio
9058 library but also directly manipulating the stdio buffers to enable
9059 faster I/O. Using stdio is better for backward compatibility (especially
9060 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
9061 interface has been preferred instead of stdio.
9063 If this doesn't make any sense to you, just accept the default '$dflt'.
9065 rp='Use the "fast stdio" if available?'
9068 y|Y) val="$define" ;;
9075 : define an is-a-typedef? function
9076 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9078 "") inclist="sys/types.h";;
9080 eval "varval=\$$var";
9084 for inc in $inclist; do
9085 echo "#include <$inc>" >>temp.c;
9087 echo "#ifdef $type" >> temp.c;
9088 echo "printf(\"We have $type\");" >> temp.c;
9089 echo "#endif" >> temp.c;
9090 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9091 if $contains $type temp.E >/dev/null 2>&1; then
9097 *) eval "$var=\$varval";;
9100 : define an is-a-typedef? function that prompts if the type is not available.
9101 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
9103 "") inclist="sys/types.h";;
9105 eval "varval=\$$var";
9109 for inc in $inclist; do
9110 echo "#include <$inc>" >>temp.c;
9112 echo "#ifdef $type" >> temp.c;
9113 echo "printf(\"We have $type\");" >> temp.c;
9114 echo "#endif" >> temp.c;
9115 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
9117 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
9118 if $contains $type temp.E >/dev/null 2>&1; then
9119 echo "$type found." >&4;
9122 echo "$type NOT found." >&4;
9128 *) eval "$var=\$varval";;
9131 : see what type lseek is declared as in the kernel
9132 rp="What is the type used for lseek's offset on this system?"
9133 set off_t lseektype long stdio.h sys/types.h
9137 echo "Checking to see how big your file offsets are..." >&4
9139 #include <sys/types.h>
9143 printf("%d\n", (int)sizeof($lseektype));
9148 if eval $compile_ok; then
9149 lseeksize=`$run ./try`
9150 echo "Your file offsets are $lseeksize bytes long."
9154 echo "(I can't seem to compile the test program. Guessing...)"
9155 rp="What is the size of your file offsets (in bytes)?"
9161 : see what type file positions are declared as in the library
9162 rp="What is the type for file position used by fsetpos()?"
9163 set fpos_t fpostype long stdio.h sys/types.h
9166 : Check size for Fpos_t
9169 *_t) zzz="$fpostype" ;;
9172 echo "Checking the size of $zzz..." >&4
9174 #include <sys/types.h>
9181 printf("%d\n", (int)sizeof($fpostype));
9186 if eval $compile_ok; then
9190 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9193 echo "Your $zzz is $fpossize bytes long."
9199 echo "(I can't compile the test program. Guessing...)" >&4
9200 rp="What is the size of your file positions (in bytes)?"
9205 : Check for large file support
9206 # Backward compatibility (uselfs is deprecated).
9208 "$define"|true|[yY]*)
9211 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
9213 uselargefiles="$define"
9217 case "$lseeksize:$fpossize" in
9220 You can have files larger than 2 gigabytes.
9223 *) case "$uselargefiles" in
9224 "$undef"|false|[nN]*) dflt='n' ;;
9229 Perl can be built to understand large files (files larger than 2 gigabytes)
9230 on some systems. To do so, Configure can be run with -Duselargefiles.
9232 If this doesn't make any sense to you, just accept the default '$dflt'.
9234 rp='Try to understand large files, if available?'
9237 y|Y) val="$define" ;;
9244 : Look for a hint-file generated 'call-back-unit'. If the
9245 : user has specified that a large files perl is to be built,
9246 : we may need to set or change some other defaults.
9247 if $test -f uselargefiles.cbu; then
9248 echo "Your platform has some specific hints regarding large file builds, using them..."
9249 . ./uselargefiles.cbu
9251 case "$uselargefiles" in
9253 if $test -f uselargefiles.cbu; then
9255 echo "Rechecking to see how big your file offsets are..." >&4
9257 #include <sys/types.h>
9261 printf("%d\n", (int)sizeof($lseektype));
9266 if eval $compile_ok; then
9267 lseeksize=`$run ./try`
9268 $echo "Your file offsets are now $lseeksize bytes long."
9272 echo "(I can't seem to compile the test program. Guessing...)"
9273 rp="What is the size of your file offsets (in bytes)?"
9278 *_t) zzz="$fpostype" ;;
9281 $echo $n "Rechecking the size of $zzz...$c" >&4
9283 #include <sys/types.h>
9290 printf("%d\n", (int)sizeof($fpostype));
9295 if eval $compile_ok; then
9300 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9303 echo " $fpossize bytes." >&4
9309 echo "(I can't compile the test program. Guessing...)" >&4
9310 rp="What is the size of your file positions (in bytes)?"
9319 : Set the vendorbin variables
9320 case "$vendorprefix" in
9321 '') d_vendorbin="$undef"
9325 *) d_vendorbin="$define"
9326 : determine where vendor-supplied executables go.
9327 case "$vendorbin" in
9328 '') dflt=$vendorprefix/bin ;;
9329 *) dflt="$vendorbin" ;;
9332 rp='Pathname for the vendor-supplied executables directory?'
9335 vendorbinexp="$ansexp"
9341 : Set the vendorhtml1dir variables
9342 case "$vendorprefix" in
9343 '') vendorhtml1dir=''
9344 vendorhtml1direxp=''
9346 *) : determine where vendor-supplied html pages go.
9347 : There is no standard location, so try to copy the previously-selected
9348 : directory structure for the core html pages.
9349 : XXX Better default suggestions would be welcome.
9350 case "$vendorhtml1dir" in
9351 '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9352 *) dflt=$vendorhtml1dir ;;
9355 ''|' ') dflt=none ;;
9358 rp='Pathname for the vendor-supplied html pages?'
9360 vendorhtml1dir="$ans"
9361 vendorhtml1direxp="$ansexp"
9364 : Use ' ' for none so value is preserved next time through Configure
9365 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9366 prefixvar=vendorhtml1dir
9369 : Set the vendorhtml3dir variables
9370 case "$vendorprefix" in
9371 '') vendorhtml3dir=''
9372 vendorhtml3direxp=''
9374 *) : determine where vendor-supplied module html pages go.
9375 : There is no standard location, so try to copy the previously-selected
9376 : directory structure for the core html pages.
9377 : XXX Better default suggestions would be welcome.
9378 case "$vendorhtml3dir" in
9379 '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9380 *) dflt=$vendorhtml3dir ;;
9383 ''|' ') dflt=none ;;
9386 rp='Pathname for the vendor-supplied html pages?'
9388 vendorhtml3dir="$ans"
9389 vendorhtml3direxp="$ansexp"
9392 : Use ' ' for none so value is preserved next time through Configure
9393 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9394 prefixvar=vendorhtml3dir
9397 : Set the vendorman1dir variables
9398 case "$vendorprefix" in
9399 '') vendorman1dir=''
9402 *) : determine where vendor-supplied manual pages go.
9403 case "$vendorman1dir" in
9404 '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9405 *) dflt=$vendorman1dir ;;
9408 ''|' ') dflt=none ;;
9411 rp='Pathname for the vendor-supplied manual section 1 pages?'
9413 vendorman1dir="$ans"
9414 vendorman1direxp="$ansexp"
9417 : Use ' ' for none so value is preserved next time through Configure
9418 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9419 prefixvar=vendorman1dir
9422 : Set the vendorman3dir variables
9423 case "$vendorprefix" in
9424 '') vendorman3dir=''
9427 *) : determine where vendor-supplied module manual pages go.
9428 case "$vendorman3dir" in
9429 '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9430 *) dflt=$vendorman3dir ;;
9433 ''|' ') dflt=none ;;
9436 rp='Pathname for the vendor-supplied manual section 3 pages?'
9438 vendorman3dir="$ans"
9439 vendorman3direxp="$ansexp"
9442 : Use ' ' for none so value is preserved next time through Configure
9443 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9444 prefixvar=vendorman3dir
9447 : Set the vendorscript variables
9448 case "$vendorprefix" in
9449 '') d_vendorscript="$undef"
9453 *) d_vendorscript="$define"
9454 : determine where vendor-supplied scripts go.
9455 case "$vendorscript" in
9456 '') dflt=$vendorprefix/script
9457 $test -d $dflt || dflt=$vendorbin ;;
9458 *) dflt="$vendorscript" ;;
9462 The installation process will create a directory for
9463 vendor-supplied scripts.
9467 rp='Pathname for the vendor-supplied scripts directory?'
9470 vendorscriptexp="$ansexp"
9473 prefixvar=vendorscript
9476 : see if qgcvt exists
9480 : Check print/scan long double stuff
9483 if $test X"$d_longdbl" = X"$define"; then
9485 echo "Checking how to print long doubles..." >&4
9487 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9488 $cat >try.c <<'EOCP'
9489 #include <sys/types.h>
9493 printf("%.3f\n", d);
9497 if eval $compile; then
9501 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9502 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9503 echo "We will use %f."
9509 if $test X"$sPRIfldbl" = X; then
9510 $cat >try.c <<'EOCP'
9511 #include <sys/types.h>
9514 long double d = 123.456;
9515 printf("%.3Lf\n", d);
9519 if eval $compile; then
9523 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9524 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9525 echo "We will use %Lf."
9531 if $test X"$sPRIfldbl" = X; then
9532 $cat >try.c <<'EOCP'
9533 #include <sys/types.h>
9536 long double d = 123.456;
9537 printf("%.3llf\n", d);
9541 if eval $compile; then
9545 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9546 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9547 echo "We will use %llf."
9553 if $test X"$sPRIfldbl" = X; then
9554 $cat >try.c <<'EOCP'
9555 #include <sys/types.h>
9558 long double d = 123.456;
9559 printf("%.3lf\n", d);
9563 if eval $compile; then
9567 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9568 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9569 echo "We will use %lf."
9575 if $test X"$sPRIfldbl" = X; then
9576 echo "Cannot figure out how to print long doubles." >&4
9578 sSCNfldbl=$sPRIfldbl # expect consistency
9585 case "$sPRIfldbl" in
9586 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9587 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9588 d_SCNfldbl="$undef";
9590 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9591 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9592 d_SCNfldbl="$define";
9596 : Check how to convert floats to strings.
9598 if test "X$d_Gconvert" = X; then
9601 echo "Checking for an efficient way to convert floats to strings."
9603 case "$uselongdouble" in
9604 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9606 case "$d_longdbl" in
9607 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9609 case "$d_PRIgldbl" in
9610 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
9614 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9615 char *myname = "gconvert";
9618 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9619 char *myname = "gcvt";
9622 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9623 char *myname = "qgcvt";
9624 #define DOUBLETYPE long double
9627 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9629 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9631 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9634 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9636 char *myname = "sprintf";
9640 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9641 #define DOUBLETYPE long double
9643 #define DOUBLETYPE double
9649 #define I_STDLIB $i_stdlib
9655 checkit(expect, got)
9659 if (strcmp(expect, got)) {
9660 printf("%s oddity: Expected %s, got %s\n",
9661 myname, expect, got);
9671 /* This must be 1st test on (which?) platform */
9672 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9673 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9674 checkit("0.1", buf);
9676 Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9677 checkit("0.01", buf);
9679 Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9680 checkit("0.001", buf);
9682 Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9683 checkit("0.0001", buf);
9685 Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9686 if (strlen(buf) > 5)
9687 checkit("9e-005", buf); /* for Microsoft ?? */
9689 checkit("9e-05", buf);
9691 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9694 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9695 checkit("1.1", buf);
9697 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9698 checkit("1.01", buf);
9700 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9701 checkit("1.001", buf);
9703 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9704 checkit("1.0001", buf);
9706 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9707 checkit("1.00001", buf);
9709 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9710 checkit("1.000001", buf);
9712 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9715 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9718 /* Some Linux gcvt's give 1.e+5 here. */
9719 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9720 checkit("100000", buf);
9722 /* Some Linux gcvt's give -1.e+5 here. */
9723 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9724 checkit("-100000", buf);
9726 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9727 checkit("123.456", buf);
9729 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9730 Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9731 /* 34 should be enough to scare even long double
9732 * places into using the e notation. */
9733 if (strlen(buf) > 5)
9734 checkit("1e+034", buf); /* for Microsoft */
9736 checkit("1e+34", buf);
9738 /* For Perl, if you add additional tests here, also add them to
9739 * t/base/num.t for benefit of platforms not using Configure or
9740 * overriding d_Gconvert */
9745 : first add preferred functions to our list
9747 for xxx_convert in $gconvert_preference; do
9748 case $xxx_convert in
9749 gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9750 *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9753 : then add any others
9754 for xxx_convert in gconvert gcvt sprintf; do
9757 *) xxx_list="$xxx_list $xxx_convert" ;;
9761 case "$d_longdbl$uselongdouble" in
9763 : again, add prefered functions to our list first
9765 for xxx_convert in $gconvert_ld_preference; do
9766 case $xxx_convert in
9767 qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9768 *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9771 : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9772 for xxx_convert in qgcvt sprintf $xxx_list; do
9773 case "$xxx_ld_list" in
9774 $xxx_convert*|*" $xxx_convert"*) ;;
9775 *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9778 : if sprintf cannot do long doubles, move it to the end
9779 if test "$d_PRIgldbl" != "$define"; then
9780 xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9782 : if no qgcvt, remove it
9783 if test "$d_qgcvt" != "$define"; then
9784 xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9787 xxx_list="$xxx_ld_list"
9791 for xxx_convert in $xxx_list; do
9792 echo "Trying $xxx_convert..."
9793 $rm -f try try$_o core
9794 set try -DTRY_$xxx_convert
9795 if eval $compile; then
9796 echo "$xxx_convert() found." >&4
9798 echo "I'll use $xxx_convert to convert floats into a string." >&4
9801 echo "...But $xxx_convert didn't work as I expected."
9805 echo "$xxx_convert NOT found." >&4
9809 if test X$xxx_convert = X; then
9810 echo "*** WHOA THERE!!! ***" >&4
9811 echo "None of ($xxx_list) seemed to work properly. I'll use sprintf." >&4
9815 case "$xxx_convert" in
9816 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9817 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9818 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9819 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9820 "$define$define$define")
9821 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9822 "$define$define$undef")
9823 d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9824 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9832 : see if _fwalk exists
9836 : Initialize h_fcntl
9839 : Initialize h_sysfile
9842 : access call always available on UNIX
9846 : locate the flags for 'access()'
9850 $cat >access.c <<EOCP
9851 #include <sys/types.h>
9856 #include <sys/file.h>
9869 : check sys/file.h first, no particular reason here
9870 if $test `./findhdr sys/file.h` && \
9871 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9873 echo "<sys/file.h> defines the *_OK access constants." >&4
9874 elif $test `./findhdr fcntl.h` && \
9875 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9877 echo "<fcntl.h> defines the *_OK access constants." >&4
9878 elif $test `./findhdr unistd.h` && \
9879 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9880 echo "<unistd.h> defines the *_OK access constants." >&4
9882 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9888 : see if accessx exists
9889 set accessx d_accessx
9892 : see if aintl exists
9896 : see if alarm exists
9900 : see if POSIX threads are available
9901 set pthread.h i_pthread
9904 : define a fucntion to check prototypes
9905 $cat > protochk <<EOSH
9908 optimize="$optimize"
9910 prototype="$prototype"
9913 usethreads=$usethreads
9914 i_pthread=$i_pthread
9915 pthread_h_first=$pthread_h_first
9918 $cat >> protochk <<'EOSH'
9923 while test $# -ge 2; do
9925 $define) echo "#include <$2>" >> try.c ;;
9926 literal) echo "$2" >> try.c ;;
9928 # Extra magic for the benefit of systems that need pthread.h
9929 # to be included early to correctly detect threadsafe functions.
9930 # Such functions must guarantee themselves, though, that the usethreads
9931 # and i_pthread have been defined, before calling protochk.
9932 if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9933 echo "#include <pthread.h>" >> try.c
9938 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
9939 cat >> try.c <<'EOCP'
9940 #ifdef CAN_PROTOTYPE
9941 #define _(args) args
9946 echo "$foo" >> try.c
9947 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9948 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9956 : Define hasproto macro for Configure internal use
9957 hasproto='varname=$1; func=$2; shift; shift;
9958 while $test $# -ge 2; do
9960 $define) echo "#include <$2>";;
9964 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9965 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9966 echo "$func() prototype found.";
9969 echo "$func() prototype NOT found.";
9976 : see if sys/types.h has to be included
9977 set sys/types.h i_systypes
9980 : see if sys/select.h has to be included
9981 set sys/select.h i_sysselct
9984 : Define hasfield macro for Configure internal use
9985 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9986 while $test $# -ge 2; do
9988 $define) echo "#include <$2>";;
9992 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9994 if eval $compile; then
10003 : see if we should include time.h, sys/time.h, or both
10005 if test "X$timeincl" = X; then
10006 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
10007 $echo $n "I'm now running the test program...$c"
10009 #include <sys/types.h>
10014 #ifdef SYSTIMEKERNEL
10017 #include <sys/time.h>
10020 #include <sys/select.h>
10022 #$i_stdlib I_STDLIB
10024 #include <stdlib.h>
10030 struct timeval bar;
10033 struct timezone tzp;
10035 if (foo.tm_sec == foo.tm_sec)
10038 if (bar.tv_sec == bar.tv_sec)
10045 for s_timezone in '-DS_TIMEZONE' ''; do
10047 for s_timeval in '-DS_TIMEVAL' ''; do
10048 for i_systimek in '' '-DSYSTIMEKERNEL'; do
10049 for i_time in '' '-DI_TIME'; do
10050 for i_systime in '-DI_SYSTIME' ''; do
10053 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10054 if eval $compile; then
10055 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10059 $echo $n "Succeeded with $flags$c"
10071 *SYSTIMEKERNEL*) i_systimek="$define"
10072 timeincl=`./findhdr sys/time.h`
10073 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10074 *) i_systimek="$undef";;
10077 *I_TIME*) i_time="$define"
10078 timeincl=`./findhdr time.h`" $timeincl"
10079 echo "We'll include <time.h>." >&4;;
10080 *) i_time="$undef";;
10083 *I_SYSTIME*) i_systime="$define"
10084 timeincl=`./findhdr sys/time.h`" $timeincl"
10085 echo "We'll include <sys/time.h>." >&4;;
10086 *) i_systime="$undef";;
10090 : see if struct tm knows about tm_zone
10091 case "$i_systime$i_time" in
10094 echo "Checking to see if your struct tm has tm_zone field..." >&4
10095 set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
10103 case "$d_tm_tm_zone" in
10104 "$define") echo "Yes, it does." ;;
10105 *) echo "No, it doesn't." ;;
10107 : see if struct tm knows about tm_gmtoff
10108 case "$i_systime$i_time" in
10111 echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
10112 set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
10120 case "$d_tm_tm_gmtoff" in
10121 "$define") echo "Yes, it does." ;;
10122 *) echo "No, it doesn't." ;;
10125 : see if asctime_r exists
10126 set asctime_r d_asctime_r
10128 case "$d_asctime_r" in
10130 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10131 case "$d_asctime_r_proto:$usethreads" in
10132 ":define") d_asctime_r_proto=define
10133 set d_asctime_r_proto asctime_r $hdrs
10137 case "$d_asctime_r_proto" in
10139 case "$asctime_r_proto" in
10140 ''|0) try='char* asctime_r(const struct tm*, char*);'
10141 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
10143 case "$asctime_r_proto" in
10144 ''|0) try='char* asctime_r(const struct tm*, char*, int);'
10145 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
10147 case "$asctime_r_proto" in
10148 ''|0) try='int asctime_r(const struct tm*, char*);'
10149 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
10151 case "$asctime_r_proto" in
10152 ''|0) try='int asctime_r(const struct tm*, char*, int);'
10153 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
10155 case "$asctime_r_proto" in
10156 ''|0) d_asctime_r=undef
10158 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
10159 * ) case "$asctime_r_proto" in
10160 REENTRANT_PROTO*) ;;
10161 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
10163 echo "Prototype: $try" ;;
10166 *) case "$usethreads" in
10167 define) echo "asctime_r has no prototype, not using it." >&4 ;;
10174 *) asctime_r_proto=0
10178 : see if atolf exists
10182 : see if atoll exists
10186 : Look for GCC-style attribute format
10187 case "$d_attribute_format" in
10190 echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4
10191 $cat >attrib.c <<'EOCP'
10193 void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2)));
10195 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10196 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10197 echo "Your C compiler doesn't support __attribute__((format))."
10200 echo "Your C compiler supports __attribute__((format))."
10204 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10208 *) val="$d_attribute_format" ;;
10210 set d_attribute_format
10214 : Look for GCC-style attribute format with null format allowed
10215 case "$d_printf_format_null" in
10216 '') case "$d_attribute_format" in
10219 echo "Checking whether your compiler allows __printf__ format to be null ..." >&4
10220 $cat >attrib.c <<EOCP
10222 #$i_stdlib I_STDLIB
10224 #include <stdlib.h>
10226 int null_printf (char* pat,...) __attribute__((__format__(__printf__,1,2)));
10227 int null_printf (char* pat,...) { return (int)pat; }
10228 int main () { exit(null_printf(NULL)); }
10230 if $cc $ccflags -o attrib attrib.c >attrib.out 2>&1 ; then
10231 : run the executable in case it produces a run-time warning
10232 if $run ./attrib >>attrib.out 2>&1; then
10233 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10234 echo "Your C compiler doesn't allow __printf__ format to be null."
10237 echo "Your C compiler allows __printf__ format to be null."
10241 echo "Your C compiler executable failed with __printf__ format null."
10245 echo "Your C compiler fails with __printf__ format null."
10252 *) val="$d_printf_format_null" ;;
10254 set d_printf_format_null
10258 : Look for GCC-style attribute malloc
10259 case "$d_attribute_malloc" in
10262 echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4
10263 $cat >attrib.c <<'EOCP'
10265 char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc));
10267 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10268 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10269 echo "Your C compiler doesn't support __attribute__((malloc))."
10272 echo "Your C compiler supports __attribute__((malloc))."
10276 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10280 *) val="$d_attribute_malloc" ;;
10282 set d_attribute_malloc
10286 : Look for GCC-style attribute nonnull
10287 case "$d_attribute_nonnull" in
10290 echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4
10291 $cat >attrib.c <<'EOCP'
10293 void do_something (char *some_pointer,...) __attribute__((nonnull(1)));
10295 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10296 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10297 echo "Your C compiler doesn't support __attribute__((nonnull))."
10300 echo "Your C compiler supports __attribute__((nonnull))."
10304 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10308 *) val="$d_attribute_nonnull" ;;
10310 set d_attribute_nonnull
10314 : Look for GCC-style attribute noreturn
10315 case "$d_attribute_noreturn" in
10318 echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4
10319 $cat >attrib.c <<'EOCP'
10321 void fall_over_dead( void ) __attribute__((noreturn));
10323 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10324 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10325 echo "Your C compiler doesn't support __attribute__((noreturn))."
10328 echo "Your C compiler supports __attribute__((noreturn))."
10332 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10336 *) val="$d_attribute_noreturn" ;;
10338 set d_attribute_noreturn
10342 : Look for GCC-style attribute pure
10343 case "$d_attribute_pure" in
10346 echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4
10347 $cat >attrib.c <<'EOCP'
10349 int square( int n ) __attribute__((pure));
10351 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10352 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10353 echo "Your C compiler doesn't support __attribute__((pure))."
10356 echo "Your C compiler supports __attribute__((pure))."
10360 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10364 *) val="$d_attribute_pure" ;;
10366 set d_attribute_pure
10370 : Look for GCC-style attribute unused
10371 case "$d_attribute_unused" in
10374 echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4
10375 $cat >attrib.c <<'EOCP'
10377 int do_something( int dummy __attribute__((unused)), int n );
10379 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10380 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10381 echo "Your C compiler doesn't support __attribute__((unused))."
10384 echo "Your C compiler supports __attribute__((unused))."
10388 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10392 *) val="$d_attribute_unused" ;;
10394 set d_attribute_unused
10398 : Look for GCC-style attribute warn_unused_result
10399 case "$d_attribute_warn_unused_result" in
10402 echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4
10403 $cat >attrib.c <<'EOCP'
10405 int I_will_not_be_ignored(void) __attribute__((warn_unused_result));
10407 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10408 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10409 echo "Your C compiler doesn't support __attribute__((warn_unused_result))."
10412 echo "Your C compiler supports __attribute__((warn_unused_result))."
10416 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10420 *) val="$d_attribute_warn_unused_result" ;;
10422 set d_attribute_warn_unused_result
10426 : see if bcmp exists
10430 : see if bcopy exists
10434 : see if getpgrp exists
10435 set getpgrp d_getpgrp
10438 case "$d_getpgrp" in
10441 echo "Checking to see which flavor of getpgrp is in use..."
10443 #$i_unistd I_UNISTD
10444 #include <sys/types.h>
10446 # include <unistd.h>
10448 #$i_stdlib I_STDLIB
10450 #include <stdlib.h>
10454 if (getuid() == 0) {
10455 printf("(I see you are running Configure as super-user...)\n");
10458 #ifdef TRY_BSD_PGRP
10459 if (getpgrp(1) == 0)
10468 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10469 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
10471 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10472 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
10475 echo "I can't seem to compile and run the test program."
10477 xxx="a USG one, i.e. you use getpgrp()."
10479 # SVR4 systems can appear rather BSD-ish.
10480 case "$i_unistd" in
10482 xxx="a BSD one, i.e. you use getpgrp(pid)."
10486 xxx="probably a USG one, i.e. you use getpgrp()."
10491 echo "Assuming your getpgrp is $xxx" >&4
10500 : see if setpgrp exists
10501 set setpgrp d_setpgrp
10504 case "$d_setpgrp" in
10507 echo "Checking to see which flavor of setpgrp is in use..."
10509 #$i_unistd I_UNISTD
10510 #include <sys/types.h>
10512 # include <unistd.h>
10514 #$i_stdlib I_STDLIB
10516 #include <stdlib.h>
10520 if (getuid() == 0) {
10521 printf("(I see you are running Configure as super-user...)\n");
10524 #ifdef TRY_BSD_PGRP
10525 if (-1 == setpgrp(1, 1))
10528 if (setpgrp() != -1)
10534 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10535 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10537 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10538 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10541 echo "(I can't seem to compile and run the test program.)"
10543 xxx="a USG one, i.e. you use setpgrp()."
10545 # SVR4 systems can appear rather BSD-ish.
10546 case "$i_unistd" in
10548 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10552 xxx="probably a USG one, i.e. you use setpgrp()."
10557 echo "Assuming your setpgrp is $xxx" >&4
10566 : Look for GCC-style __builtin_choose_expr
10567 case "$d_builtin_choose_expr" in
10570 echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4
10571 $cat >try.c <<'EOCP'
10572 #include <assert.h>
10573 #include <stdlib.h>
10576 #define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) )
10579 assert( SYRINX(1) == 2112 );
10580 assert( SYRINX(1) != 5150 );
10581 assert( SYRINX(0) == 5150 );
10582 assert( SYRINX(0) != 2112 );
10583 puts( "All good!" );
10589 if eval $compile && $run ./try; then
10590 echo "Your C compiler supports __builtin_choose_expr."
10593 echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10597 *) val="$d_builtin_choose_expr" ;;
10600 set d_builtin_choose_expr
10604 : Look for GCC-style __builtin_expect
10605 case "$d_builtin_expect" in
10608 echo "Checking whether your compiler can handle __builtin_expect ..." >&4
10609 $cat >try.c <<'EOCP'
10612 if ( __builtin_expect(n, 0) ) n = 1;
10613 /* Remember shell exit code truth is 0, C truth is non-zero */
10618 if eval $compile && $run ./try; then
10619 echo "Your C compiler supports __builtin_expect."
10622 echo "Your C compiler doesn't seem to understand __builtin_expect."
10626 *) val="$d_builtin_expect" ;;
10629 set d_builtin_expect
10633 : see if bzero exists
10637 : see if stdarg is available
10639 if $test `./findhdr stdarg.h`; then
10640 echo "<stdarg.h> found." >&4
10643 echo "<stdarg.h> NOT found." >&4
10647 : see if varags is available
10649 if $test `./findhdr varargs.h`; then
10650 echo "<varargs.h> found." >&4
10652 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
10655 : set up the varargs testing programs
10656 $cat > varargs.c <<EOP
10658 #include <stdarg.h>
10661 #include <varargs.h>
10665 int f(char *p, ...)
10679 p = va_arg(ap, char *);
10685 $cat > varargs <<EOP
10687 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
10696 : now check which varargs header should be included
10701 if `./varargs I_STDARG`; then
10703 elif `./varargs I_VARARGS`; then
10708 if `./varargs I_VARARGS`; then
10715 echo "I could not find the definition for va_dcl... You have problems..." >&4
10716 val="$undef"; set i_stdarg; eval $setvar
10717 val="$undef"; set i_varargs; eval $setvar
10722 case "$i_varhdr" in
10724 val="$define"; set i_stdarg; eval $setvar
10725 val="$undef"; set i_varargs; eval $setvar
10728 val="$undef"; set i_stdarg; eval $setvar
10729 val="$define"; set i_varargs; eval $setvar
10732 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
10736 : see if the Compiler supports C99 variadic macros
10737 case "$i_stdarg$i_stdlib" in
10739 echo "You have <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros." >&4
10742 #include <stdarg.h>
10744 #define foo(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__)
10748 foo(buf, "%d %g %.*s", 123, 456.0, (int)3, "789fail");
10754 if eval $compile && $run ./try 2>&1 >/dev/null; then
10755 case "`$run ./try`" in
10757 echo "You have C99 variadic macros." >&4
10758 d_c99_variadic_macros="$define"
10761 echo "You don't have functional C99 variadic macros." >&4
10762 d_c99_variadic_macros="$undef"
10766 echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
10767 d_c99_variadic_macros="$undef"
10772 echo "You don't have <stdarg.h> and <stdlib.h>, so not checking for C99 variadic macros." >&4
10773 d_c99_variadic_macros="$undef"
10777 : see if signal is declared as pointer to function returning int or void
10779 xxx=`./findhdr signal.h`
10780 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10781 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
10782 echo "You have int (*signal())() instead of void." >&4
10784 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
10785 echo "You have void (*signal())()." >&4
10787 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10788 echo "You have int (*signal())() instead of void." >&4
10790 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10791 echo "You have void (*signal())()." >&4
10794 case "$d_voidsig" in
10796 echo "I can't determine whether signal handler returns void or int..." >&4
10798 rp="What type does your signal handler return?"
10801 v*) val="$define";;
10805 echo "As you already told me, signal handler returns void." >&4
10808 *) echo "As you already told me, signal handler returns int." >&4
10815 case "$d_voidsig" in
10816 "$define") signal_t="void";;
10817 *) signal_t="int";;
10821 : check for ability to cast large floats to 32-bit ints.
10823 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10824 if $test "$intsize" -ge 4; then
10831 #$i_stdlib I_STDLIB
10833 #include <stdlib.h>
10835 #include <sys/types.h>
10836 #include <signal.h>
10837 $signal_t blech(int s) { exit(3); }
10844 signal(SIGFPE, blech);
10846 /* Don't let compiler optimize the test away. Store the number
10847 in a writable string for gcc to pass to sscanf under HP/UX.
10849 sprintf(str, "2147483647");
10850 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10854 /* x86 processors will probably give 0x8000 0000, which is a
10855 sign change. We don't want that. We want to mimic SPARC
10856 behavior here, which is to preserve the sign and give
10859 if (i32 != ($xxx) f)
10865 if eval $compile_ok; then
10869 echo "(I can't seem to compile the test program--assuming it can't)"
10874 echo "Yup, it can."
10877 echo "Nope, it can't."
10884 : check for ability to cast negative floats to unsigned
10886 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10889 #$i_stdlib I_STDLIB
10891 #include <stdlib.h>
10893 #include <sys/types.h>
10894 #include <signal.h>
10895 $signal_t blech(int s) { exit(7); }
10896 $signal_t blech_in_list(int s) { exit(4); }
10897 unsigned long dummy_long(unsigned long p) { return p; }
10898 unsigned int dummy_int(unsigned int p) { return p; }
10899 unsigned short dummy_short(unsigned short p) { return p; }
10903 unsigned long along;
10905 unsigned short ashort;
10909 /* Frustrate gcc-2.7.2's optimizer which failed this test with
10910 a direct f = -123. assignment. gcc-2.8.0 reportedly
10911 optimized the whole file away
10913 /* Store the number in a writable string for gcc to pass to
10914 sscanf under HP/UX.
10916 sprintf(str, "-123");
10917 sscanf(str, "%lf", &f); /* f = -123.; */
10919 signal(SIGFPE, blech);
10920 along = (unsigned long)f;
10921 aint = (unsigned int)f;
10922 ashort = (unsigned short)f;
10923 if (along != (unsigned long)-123)
10925 if (aint != (unsigned int)-123)
10927 if (ashort != (unsigned short)-123)
10929 sprintf(str, "1073741824.");
10930 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10933 along = (unsigned long)f;
10934 if (along != 0x80000000)
10938 along = (unsigned long)f;
10939 if (along != 0x7fffffff)
10943 along = (unsigned long)f;
10944 if (along != 0x80000001)
10948 signal(SIGFPE, blech_in_list);
10949 sprintf(str, "123.");
10950 sscanf(str, "%lf", &f); /* f = 123.; */
10951 along = dummy_long((unsigned long)f);
10952 aint = dummy_int((unsigned int)f);
10953 ashort = dummy_short((unsigned short)f);
10954 if (along != (unsigned long)123)
10956 if (aint != (unsigned int)123)
10958 if (ashort != (unsigned short)123)
10965 if eval $compile_ok; then
10969 echo "(I can't seem to compile the test program--assuming it can't)"
10972 case "$castflags" in
10974 echo "Yup, it can."
10977 echo "Nope, it can't."
10984 : see if vprintf exists
10986 if set vprintf val -f d_vprintf; eval $csym; $val; then
10987 echo 'vprintf() found.' >&4
10990 #$i_stdarg I_STDARG /* Only one of these can be defined by i_varhrd */
10991 #$i_varargs I_VARARGS
10993 #$i_stdlib I_STDLIB
10994 #$i_unistd I_UNISTD
10997 # include <stdarg.h>
10998 #else /* I_VARARGS */
10999 # include <varargs.h>
11003 # include <unistd.h>
11007 # include <stdlib.h>
11010 #include <stdio.h> /* vsprintf prototype */
11013 void xxx(int n, ...)
11018 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
11020 int main() { xxx(1, "foo"); }
11022 #else /* I_VARARGS */
11030 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
11032 int main() { xxx("foo"); }
11038 if eval $compile_ok; then
11039 if $run ./try; then
11040 echo "Your vsprintf() returns (int)." >&4
11043 echo "Your vsprintf() returns (char*)." >&4
11047 echo 'I am unable to compile the vsprintf() test program.' >&4
11048 # We shouldn't get here. If we do, assume the standard signature,
11049 # not the old BSD one.
11050 echo 'Guessing that vsprintf() returns (int).' >&4
11054 echo 'vprintf() NOT found.' >&4
11065 : see if chown exists
11069 : see if chroot exists
11070 set chroot d_chroot
11073 : see if chsize exists
11074 set chsize d_chsize
11077 : see if class exists
11081 : see if clearenv exists
11082 set clearenv d_clearenv
11085 : Define hasstruct macro for Configure internal use
11086 hasstruct='varname=$1; struct=$2; shift; shift;
11087 while $test $# -ge 2; do
11089 $define) echo "#include <$2>";;
11093 echo "int main () { struct $struct foo; }" >> try.c;
11095 if eval $compile; then
11104 : see whether socket exists
11108 $echo $n "Hmm... $c" >&4
11109 if set socket val -f d_socket; eval $csym; $val; then
11110 echo "Looks like you have Berkeley networking support." >&4
11112 if set setsockopt val -f; eval $csym; $val; then
11115 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
11116 d_oldsock="$define"
11119 if $contains socklib libc.list >/dev/null 2>&1; then
11120 echo "Looks like you have Berkeley networking support." >&4
11122 : we will have to assume that it supports the 4.2 BSD interface
11125 echo "You don't have Berkeley networking in libc$_a..." >&4
11126 if test "X$d_socket" = "X$define"; then
11127 echo "...but you seem to believe that you have sockets." >&4
11129 for net in net socket
11131 if test -f /usr/lib/lib$net$_a; then
11132 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
11133 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
11134 if $contains socket libc.list >/dev/null 2>&1; then
11139 echo "...but the Wollongong group seems to have hacked it in." >&4
11140 sockethdr="-I/usr/netinclude"
11143 echo "Found Berkeley sockets interface in lib$net." >&4
11144 if $contains setsockopt libc.list >/dev/null 2>&1; then
11147 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
11148 d_oldsock="$define"
11154 if test "X$d_socket" != "X$define"; then
11155 echo "or anywhere else I see." >&4
11163 : see if socketpair exists
11164 set socketpair d_sockpair
11169 echo "Checking the availability of certain socket constants..." >&4
11170 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
11171 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
11173 #include <sys/types.h>
11174 #include <sys/socket.h>
11180 set try; if eval $compile; then
11183 set d_${enum}; eval $setvar
11187 : see if this is a sys/uio.h system
11188 set sys/uio.h i_sysuio
11191 : Check for cmsghdr support
11193 echo "Checking to see if your system supports struct cmsghdr..." >&4
11194 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11196 case "$d_cmsghdr_s" in
11197 "$define") echo "Yes, it does." ;;
11198 *) echo "No, it doesn't." ;;
11202 : check for const keyword
11204 echo 'Checking to see if your C compiler knows about "const"...' >&4
11205 $cat >const.c <<'EOCP'
11206 typedef struct spug { int drokk; } spug;
11210 const spug y = { 0 };
11213 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
11215 echo "Yup, it does."
11218 echo "Nope, it doesn't."
11223 : see if copysignl exists
11224 set copysignl d_copysignl
11227 : see if crypt exists
11232 $define) cryptlib='' ;;
11233 *) if set crypt val -f d_crypt; eval $csym; $val; then
11234 echo 'crypt() found.' >&4
11238 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
11239 if $test -z "$cryptlib"; then
11240 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
11244 if $test -z "$cryptlib"; then
11245 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
11249 if $test -z "$cryptlib"; then
11250 cryptlib=`./loc libcrypt$_a "" $libpth`
11254 if $test -z "$cryptlib"; then
11255 echo 'crypt() NOT found.' >&4
11266 : see if this is a crypt.h system
11267 set crypt.h i_crypt
11270 : see if crypt_r exists
11271 set crypt_r d_crypt_r
11273 case "$d_crypt_r" in
11275 hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
11276 case "$d_crypt_r_proto:$usethreads" in
11277 ":define") d_crypt_r_proto=define
11278 set d_crypt_r_proto crypt_r $hdrs
11282 case "$d_crypt_r_proto" in
11284 case "$crypt_r_proto" in
11285 ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
11286 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
11288 case "$crypt_r_proto" in
11289 ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
11290 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
11292 case "$crypt_r_proto" in
11293 ''|0) d_crypt_r=undef
11295 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
11296 * ) case "$crypt_r_proto" in
11297 REENTRANT_PROTO*) ;;
11298 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
11300 echo "Prototype: $try" ;;
11303 *) case "$usethreads" in
11304 define) echo "crypt_r has no prototype, not using it." >&4 ;;
11315 : get csh whereabouts
11317 'csh') val="$undef" ;;
11318 *) val="$define" ;;
11322 : Respect a hint or command line value for full_csh.
11323 case "$full_csh" in
11324 '') full_csh=$csh ;;
11327 : see if ctermid exists
11328 set ctermid d_ctermid
11331 : see if ctermid_r exists
11332 set ctermid_r d_ctermid_r
11334 case "$d_ctermid_r" in
11336 hdrs="$i_systypes sys/types.h define stdio.h "
11337 case "$d_ctermid_r_proto:$usethreads" in
11338 ":define") d_ctermid_r_proto=define
11339 set d_ctermid_r_proto ctermid_r $hdrs
11343 case "$d_ctermid_r_proto" in
11345 case "$ctermid_r_proto" in
11346 ''|0) try='char* ctermid_r(char*);'
11347 ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
11349 case "$ctermid_r_proto" in
11350 ''|0) d_ctermid_r=undef
11352 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
11353 * ) case "$ctermid_r_proto" in
11354 REENTRANT_PROTO*) ;;
11355 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
11357 echo "Prototype: $try" ;;
11360 *) case "$usethreads" in
11361 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
11368 *) ctermid_r_proto=0
11372 : see if ctime_r exists
11373 set ctime_r d_ctime_r
11375 case "$d_ctime_r" in
11377 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
11378 case "$d_ctime_r_proto:$usethreads" in
11379 ":define") d_ctime_r_proto=define
11380 set d_ctime_r_proto ctime_r $hdrs
11384 case "$d_ctime_r_proto" in
11386 case "$ctime_r_proto" in
11387 ''|0) try='char* ctime_r(const time_t*, char*);'
11388 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
11390 case "$ctime_r_proto" in
11391 ''|0) try='char* ctime_r(const time_t*, char*, int);'
11392 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
11394 case "$ctime_r_proto" in
11395 ''|0) try='int ctime_r(const time_t*, char*);'
11396 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
11398 case "$ctime_r_proto" in
11399 ''|0) try='int ctime_r(const time_t*, char*, int);'
11400 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
11402 case "$ctime_r_proto" in
11403 ''|0) d_ctime_r=undef
11405 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
11406 * ) case "$ctime_r_proto" in
11407 REENTRANT_PROTO*) ;;
11408 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
11410 echo "Prototype: $try" ;;
11413 *) case "$usethreads" in
11414 define) echo "ctime_r has no prototype, not using it." >&4 ;;
11425 : see if cuserid exists
11426 set cuserid d_cuserid
11429 : see if this is a limits.h system
11430 set limits.h i_limits
11433 : see if this is a float.h system
11434 set float.h i_float
11437 : See if number of significant digits in a double precision number is known
11439 $cat >dbl_dig.c <<EOM
11440 #$i_limits I_LIMITS
11443 #include <limits.h>
11449 printf("Contains DBL_DIG");
11452 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
11453 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
11454 echo "DBL_DIG found." >&4
11457 echo "DBL_DIG NOT found." >&4
11464 : see if dbm.h is available
11465 : see if dbmclose exists
11466 set dbmclose d_dbmclose
11469 case "$d_dbmclose" in
11479 *) set rpcsvc/dbm.h i_rpcsvcdbm
11484 *) echo "We won't be including <dbm.h>"
11494 : see if prototype for dbminit is available
11496 set d_dbminitproto dbminit $i_dbm dbm.h
11499 : see if difftime exists
11500 set difftime d_difftime
11503 : see if this is a dirent system
11505 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
11507 echo "<dirent.h> found." >&4
11510 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
11511 echo "<sys/dir.h> found." >&4
11514 xinc=`./findhdr sys/ndir.h`
11516 echo "<dirent.h> NOT found." >&4
11521 : Look for type of directory structure.
11523 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11525 case "$direntrytype" in
11527 case "$i_dirent" in
11528 $define) guess1='struct dirent' ;;
11529 *) guess1='struct direct' ;;
11532 *) guess1="$direntrytype"
11537 'struct dirent') guess2='struct direct' ;;
11538 *) guess2='struct dirent' ;;
11541 if $contains "$guess1" try.c >/dev/null 2>&1; then
11542 direntrytype="$guess1"
11543 echo "Your directory entries are $direntrytype." >&4
11544 elif $contains "$guess2" try.c >/dev/null 2>&1; then
11545 direntrytype="$guess2"
11546 echo "Your directory entries seem to be $direntrytype." >&4
11548 echo "I don't recognize your system's directory entries." >&4
11549 rp="What type is used for directory entries on this system?"
11552 direntrytype="$ans"
11556 : see if the directory entry stores field length
11558 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11559 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
11560 echo "Good, your directory entry keeps length information in d_namlen." >&4
11563 echo "Your directory entry does not know about the d_namlen field." >&4
11570 : Look for DIR.dd_fd
11571 case "$i_dirent" in
11573 echo "Checking to see if DIR has a dd_fd member variable" >&4
11575 #$i_stdlib I_STDLIB
11577 #include <stdlib.h>
11579 #include <dirent.h>
11589 if eval $compile; then
11590 echo "Yes, it does."
11593 echo "No, it does not."
11598 echo "You don't have a <dirent.h>, so not checking for dd_fd." >&4
11606 : see if this is an sysdir system
11607 set sys/dir.h i_sysdir
11610 : see if this is an sysndir system
11611 set sys/ndir.h i_sysndir
11616 $cat >dirfd.c <<EOM
11618 #$i_stdlib I_STDLIB
11620 #include <stdlib.h>
11622 #$i_dirent I_DIRENT /**/
11623 #$i_sysdir I_SYS_DIR /**/
11624 #$i_sysndir I_SYS_NDIR /**/
11625 #$i_systypes I_SYS_TYPES /**/
11626 #if defined(I_SYS_TYPES)
11627 #include <sys/types.h>
11629 #if defined(I_DIRENT)
11630 #include <dirent.h>
11631 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11632 #include <sys/dir.h>
11636 #include <sys/ndir.h>
11640 #include <ndir.h> /* may be wrong in the future */
11642 #include <sys/dir.h>
11648 DIR *dirp = opendir(".");
11649 if (dirfd(dirp) >= 0)
11657 if eval $compile; then
11661 $define) echo "dirfd() found." >&4 ;;
11662 *) echo "dirfd() NOT found." >&4 ;;
11668 : see if dlerror exists
11671 set dlerror d_dlerror
11675 : see if dlfcn is available
11676 set dlfcn.h i_dlfcn
11679 : Check what extension to use for shared libs
11684 On a few systems, the dynamically loaded modules that perl generates and uses
11685 will need a different extension than shared libs. The default will probably
11691 *) dflt="$dlext" ;;
11693 rp='What is the extension of dynamically loaded modules'
11702 : Check if dlsym need a leading underscore
11708 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
11709 $cat >dyna.c <<'EOM'
11716 #$i_stdlib I_STDLIB
11718 #include <stdlib.h>
11722 #include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
11724 #include <sys/types.h>
11729 extern int fred() ;
11738 int mode = RTLD_LAZY ;
11740 handle = dlopen("./dyna.$dlext", mode) ;
11741 if (handle == NULL) {
11746 symbol = dlsym(handle, "fred") ;
11747 if (symbol == NULL) {
11748 /* try putting a leading underscore */
11749 symbol = dlsym(handle, "_fred") ;
11750 if (symbol == NULL) {
11763 : Call the object file tmp-dyna.o in case dlext=o.
11764 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
11765 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
11766 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
11767 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
11770 1) echo "Test program failed using dlopen." >&4
11771 echo "Perhaps you should not use dynamic loading." >&4;;
11772 2) echo "Test program failed using dlsym." >&4
11773 echo "Perhaps you should not use dynamic loading." >&4;;
11774 3) echo "dlsym needs a leading underscore" >&4
11776 4) echo "dlsym doesn't need a leading underscore." >&4;;
11779 echo "I can't compile and run the test program." >&4
11780 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
11785 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
11790 : see if drand48_r exists
11791 set drand48_r d_drand48_r
11793 case "$d_drand48_r" in
11795 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
11796 case "$d_drand48_r_proto:$usethreads" in
11797 ":define") d_drand48_r_proto=define
11798 set d_drand48_r_proto drand48_r $hdrs
11802 case "$d_drand48_r_proto" in
11804 case "$drand48_r_proto" in
11805 ''|0) try='int drand48_r(struct drand48_data*, double*);'
11806 ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11808 case "$drand48_r_proto" in
11809 ''|0) d_drand48_r=undef
11811 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11812 * ) case "$drand48_r_proto" in
11813 REENTRANT_PROTO*) ;;
11814 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11816 echo "Prototype: $try" ;;
11819 *) case "$usethreads" in
11820 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11827 *) drand48_r_proto=0
11831 : see if prototype for drand48 is available
11833 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11836 : see if dup2 exists
11840 : see if eaccess exists
11841 set eaccess d_eaccess
11844 : see if endgrent exists
11845 set endgrent d_endgrent
11848 : see if this is an grp system
11854 xxx=`./findhdr grp.h`
11855 $cppstdin $cppflags $cppminus < $xxx >$$.h
11857 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11869 set d_grpasswd; eval $setvar
11873 : see if endgrent_r exists
11874 set endgrent_r d_endgrent_r
11876 case "$d_endgrent_r" in
11878 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11879 case "$d_endgrent_r_proto:$usethreads" in
11880 ":define") d_endgrent_r_proto=define
11881 set d_endgrent_r_proto endgrent_r $hdrs
11885 case "$d_endgrent_r_proto" in
11887 case "$endgrent_r_proto" in
11888 ''|0) try='int endgrent_r(FILE**);'
11889 ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11891 case "$endgrent_r_proto" in
11892 ''|0) try='void endgrent_r(FILE**);'
11893 ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11895 case "$endgrent_r_proto" in
11896 ''|0) d_endgrent_r=undef
11898 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11899 * ) case "$endgrent_r_proto" in
11900 REENTRANT_PROTO*) ;;
11901 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11903 echo "Prototype: $try" ;;
11906 *) case "$usethreads" in
11907 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11914 *) endgrent_r_proto=0
11918 : see if endhostent exists
11919 set endhostent d_endhent
11922 : see if this is a netdb.h system
11923 set netdb.h i_netdb
11926 : see if endhostent_r exists
11927 set endhostent_r d_endhostent_r
11929 case "$d_endhostent_r" in
11931 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11932 case "$d_endhostent_r_proto:$usethreads" in
11933 ":define") d_endhostent_r_proto=define
11934 set d_endhostent_r_proto endhostent_r $hdrs
11938 case "$d_endhostent_r_proto" in
11940 case "$endhostent_r_proto" in
11941 ''|0) try='int endhostent_r(struct hostent_data*);'
11942 ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11944 case "$endhostent_r_proto" in
11945 ''|0) try='void endhostent_r(struct hostent_data*);'
11946 ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11948 case "$endhostent_r_proto" in
11949 ''|0) d_endhostent_r=undef
11950 endhostent_r_proto=0
11951 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11952 * ) case "$endhostent_r_proto" in
11953 REENTRANT_PROTO*) ;;
11954 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11956 echo "Prototype: $try" ;;
11959 *) case "$usethreads" in
11960 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11962 d_endhostent_r=undef
11963 endhostent_r_proto=0
11967 *) endhostent_r_proto=0
11971 : see if endnetent exists
11972 set endnetent d_endnent
11975 : see if endnetent_r exists
11976 set endnetent_r d_endnetent_r
11978 case "$d_endnetent_r" in
11980 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11981 case "$d_endnetent_r_proto:$usethreads" in
11982 ":define") d_endnetent_r_proto=define
11983 set d_endnetent_r_proto endnetent_r $hdrs
11987 case "$d_endnetent_r_proto" in
11989 case "$endnetent_r_proto" in
11990 ''|0) try='int endnetent_r(struct netent_data*);'
11991 ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11993 case "$endnetent_r_proto" in
11994 ''|0) try='void endnetent_r(struct netent_data*);'
11995 ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11997 case "$endnetent_r_proto" in
11998 ''|0) d_endnetent_r=undef
11999 endnetent_r_proto=0
12000 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
12001 * ) case "$endnetent_r_proto" in
12002 REENTRANT_PROTO*) ;;
12003 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
12005 echo "Prototype: $try" ;;
12008 *) case "$usethreads" in
12009 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
12011 d_endnetent_r=undef
12012 endnetent_r_proto=0
12016 *) endnetent_r_proto=0
12020 : see if endprotoent exists
12021 set endprotoent d_endpent
12024 : see if endprotoent_r exists
12025 set endprotoent_r d_endprotoent_r
12027 case "$d_endprotoent_r" in
12029 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12030 case "$d_endprotoent_r_proto:$usethreads" in
12031 ":define") d_endprotoent_r_proto=define
12032 set d_endprotoent_r_proto endprotoent_r $hdrs
12036 case "$d_endprotoent_r_proto" in
12038 case "$endprotoent_r_proto" in
12039 ''|0) try='int endprotoent_r(struct protoent_data*);'
12040 ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
12042 case "$endprotoent_r_proto" in
12043 ''|0) try='void endprotoent_r(struct protoent_data*);'
12044 ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
12046 case "$endprotoent_r_proto" in
12047 ''|0) d_endprotoent_r=undef
12048 endprotoent_r_proto=0
12049 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
12050 * ) case "$endprotoent_r_proto" in
12051 REENTRANT_PROTO*) ;;
12052 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
12054 echo "Prototype: $try" ;;
12057 *) case "$usethreads" in
12058 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
12060 d_endprotoent_r=undef
12061 endprotoent_r_proto=0
12065 *) endprotoent_r_proto=0
12069 : see if endpwent exists
12070 set endpwent d_endpwent
12073 : see if this is a pwd.h system
12079 xxx=`./findhdr pwd.h`
12080 $cppstdin $cppflags $cppminus < $xxx >$$.h
12082 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
12090 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
12098 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
12106 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
12114 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
12122 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
12130 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
12138 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
12150 set d_pwquota; eval $setvar
12151 set d_pwage; eval $setvar
12152 set d_pwchange; eval $setvar
12153 set d_pwclass; eval $setvar
12154 set d_pwexpire; eval $setvar
12155 set d_pwcomment; eval $setvar
12156 set d_pwgecos; eval $setvar
12157 set d_pwpasswd; eval $setvar
12161 : see if endpwent_r exists
12162 set endpwent_r d_endpwent_r
12164 case "$d_endpwent_r" in
12166 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12167 case "$d_endpwent_r_proto:$usethreads" in
12168 ":define") d_endpwent_r_proto=define
12169 set d_endpwent_r_proto endpwent_r $hdrs
12173 case "$d_endpwent_r_proto" in
12175 case "$endpwent_r_proto" in
12176 ''|0) try='int endpwent_r(FILE**);'
12177 ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
12179 case "$endpwent_r_proto" in
12180 ''|0) try='void endpwent_r(FILE**);'
12181 ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
12183 case "$endpwent_r_proto" in
12184 ''|0) d_endpwent_r=undef
12186 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
12187 * ) case "$endpwent_r_proto" in
12188 REENTRANT_PROTO*) ;;
12189 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
12191 echo "Prototype: $try" ;;
12194 *) case "$usethreads" in
12195 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
12202 *) endpwent_r_proto=0
12206 : see if endservent exists
12207 set endservent d_endsent
12210 : see if endservent_r exists
12211 set endservent_r d_endservent_r
12213 case "$d_endservent_r" in
12215 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12216 case "$d_endservent_r_proto:$usethreads" in
12217 ":define") d_endservent_r_proto=define
12218 set d_endservent_r_proto endservent_r $hdrs
12222 case "$d_endservent_r_proto" in
12224 case "$endservent_r_proto" in
12225 ''|0) try='int endservent_r(struct servent_data*);'
12226 ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
12228 case "$endservent_r_proto" in
12229 ''|0) try='void endservent_r(struct servent_data*);'
12230 ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
12232 case "$endservent_r_proto" in
12233 ''|0) d_endservent_r=undef
12234 endservent_r_proto=0
12235 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
12236 * ) case "$endservent_r_proto" in
12237 REENTRANT_PROTO*) ;;
12238 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
12240 echo "Prototype: $try" ;;
12243 *) case "$usethreads" in
12244 define) echo "endservent_r has no prototype, not using it." >&4 ;;
12246 d_endservent_r=undef
12247 endservent_r_proto=0
12251 *) endservent_r_proto=0
12255 : Locate the flags for 'open()'
12258 #include <sys/types.h>
12263 #include <sys/file.h>
12265 #$i_stdlib I_STDLIB
12267 #include <stdlib.h>
12278 : check sys/file.h first to get FREAD on Sun
12279 if $test `./findhdr sys/file.h` && \
12280 set try -DI_SYS_FILE && eval $compile; then
12282 echo "<sys/file.h> defines the O_* constants..." >&4
12283 if $run ./try; then
12284 echo "and you have the 3 argument form of open()." >&4
12287 echo "but not the 3 argument form of open(). Oh, well." >&4
12290 elif $test `./findhdr fcntl.h` && \
12291 set try -DI_FCNTL && eval $compile; then
12293 echo "<fcntl.h> defines the O_* constants..." >&4
12294 if $run ./try; then
12295 echo "and you have the 3 argument form of open()." >&4
12298 echo "but not the 3 argument form of open(). Oh, well." >&4
12303 echo "I can't find the O_* constant definitions! You got problems." >&4
12309 : script used to emit important warnings
12312 if test \$# -gt 0; then
12317 echo "*** WARNING:" >&4
12318 sed -e 's/^/*** /' <msg >&4
12320 cat msg >>config.msg
12321 echo " " >>config.msg
12327 : see which of string.h or strings.h is needed
12329 strings=`./findhdr string.h`
12330 if $test "$strings" && $test -r "$strings"; then
12331 echo "Using <string.h> instead of <strings.h>." >&4
12335 strings=`./findhdr strings.h`
12336 if $test "$strings" && $test -r "$strings"; then
12337 echo "Using <strings.h> instead of <string.h>." >&4
12339 ./warn "No string header found -- You'll surely have problems."
12344 case "$i_string" in
12345 "$undef") strings=`./findhdr strings.h`;;
12346 *) strings=`./findhdr string.h`;;
12349 : see if this is a sys/file.h system
12354 : do we need to include sys/file.h ?
12358 if $h_sysfile; then
12360 echo "We'll be including <sys/file.h>." >&4
12363 echo "We won't be including <sys/file.h>." >&4
12373 : see if fcntl.h is there
12378 : see if we can include fcntl.h
12384 echo "We'll be including <fcntl.h>." >&4
12387 if $h_sysfile; then
12388 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12390 echo "We won't be including <fcntl.h>." >&4
12402 : see if fork exists
12406 : see if pipe exists
12410 : check for non-blocking I/O stuff
12411 case "$h_sysfile" in
12412 true) echo "#include <sys/file.h>" > head.c;;
12415 true) echo "#include <fcntl.h>" > head.c;;
12416 *) echo "#include <sys/fcntl.h>" > head.c;;
12421 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
12422 case "$o_nonblock" in
12424 $cat head.c > try.c
12425 $cat >>try.c <<EOCP
12427 #$i_stdlib I_STDLIB
12429 #include <stdlib.h>
12437 printf("O_NONBLOCK\n");
12441 printf("O_NDELAY\n");
12445 printf("FNDELAY\n");
12452 if eval $compile_ok; then
12453 o_nonblock=`$run ./try`
12454 case "$o_nonblock" in
12455 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
12456 *) echo "Seems like we can use $o_nonblock.";;
12459 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
12462 *) echo "Using $hint value $o_nonblock.";;
12467 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
12470 case "$d_fork:$d_pipe" in
12472 $cat head.c > try.c
12473 $cat >>try.c <<EOCP
12475 #include <sys/types.h>
12476 #include <signal.h>
12478 #$i_stdlib I_STDLIB
12480 #include <stdlib.h>
12486 #define MY_O_NONBLOCK $o_nonblock
12487 #ifndef errno /* XXX need better Configure test */
12490 #$i_unistd I_UNISTD
12492 #include <unistd.h>
12494 #$i_string I_STRING
12496 #include <string.h>
12498 #include <strings.h>
12500 $signal_t blech(int x) { exit(3); }
12502 $cat >> try.c <<'EOCP'
12510 pipe(pd); /* Down: child -> parent */
12511 pipe(pu); /* Up: parent -> child */
12514 close(pd[1]); /* Parent reads from pd[0] */
12515 close(pu[0]); /* Parent writes (blocking) to pu[1] */
12517 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
12522 signal(SIGALRM, blech);
12524 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
12526 sprintf(string, "%d\n", ret);
12527 write(2, string, strlen(string));
12530 if (errno == EAGAIN) {
12531 printf("EAGAIN\n");
12536 if (errno == EWOULDBLOCK)
12537 printf("EWOULDBLOCK\n");
12540 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
12541 sleep(2); /* Give it time to close our pipe */
12543 ret = read(pd[0], buf, 1); /* Should read EOF */
12545 sprintf(string, "%d\n", ret);
12546 write(4, string, strlen(string));
12550 close(pd[0]); /* We write to pd[1] */
12551 close(pu[1]); /* We read from pu[0] */
12552 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
12553 close(pd[1]); /* Pipe pd is now fully closed! */
12554 exit(0); /* Bye bye, thank you for playing! */
12558 if eval $compile_ok; then
12559 echo "$startsh" >mtry
12560 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
12562 ./mtry >/dev/null 2>&1
12564 0) eagain=`$cat try.out`;;
12565 1) echo "Could not perform non-blocking setting!";;
12566 2) echo "I did a successful read() for something that was not there!";;
12567 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
12568 4) echo "Could not find F_SETFL!";;
12569 *) echo "Something terribly wrong happened during testing.";;
12571 rd_nodata=`$cat try.ret`
12572 echo "A read() system call with no data present returns $rd_nodata."
12573 case "$rd_nodata" in
12576 echo "(That's peculiar, fixing that to be -1.)"
12582 echo "Forcing errno EAGAIN on read() with no data available."
12586 echo "Your read() sets errno to $eagain when no data is available."
12589 status=`$cat try.err`
12591 0) echo "And it correctly returns 0 to signal EOF.";;
12592 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
12593 *) echo "However, your read() returns '$status' on EOF??";;
12596 if test "$status" = "$rd_nodata"; then
12597 echo "WARNING: you can't distinguish between EOF and no data!"
12601 echo "I can't compile the test program--assuming errno EAGAIN will do."
12605 *) echo "Can't figure out how to test this--assuming errno EAGAIN will do."
12614 echo "Using $hint value $eagain."
12615 echo "Your read() returns $rd_nodata when no data is present."
12616 case "$d_eofnblk" in
12617 "$define") echo "And you can see EOF because read() returns 0.";;
12618 "$undef") echo "But you can't see EOF status from read() returned value.";;
12620 echo "(Assuming you can't see EOF status from read anyway.)"
12626 $rm_try head.c mtry
12628 : see if _ptr and _cnt from stdio act std
12631 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12632 echo "(Looks like you have stdio.h from BSD.)"
12633 case "$stdio_ptr" in
12634 '') stdio_ptr='((fp)->_p)'
12637 *) ptr_lval=$d_stdio_ptr_lval;;
12639 case "$stdio_cnt" in
12640 '') stdio_cnt='((fp)->_r)'
12643 *) cnt_lval=$d_stdio_cnt_lval;;
12645 case "$stdio_base" in
12646 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12648 case "$stdio_bufsiz" in
12649 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12651 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12652 echo "(Looks like you have stdio.h from Linux.)"
12653 case "$stdio_ptr" in
12654 '') stdio_ptr='((fp)->_IO_read_ptr)'
12657 *) ptr_lval=$d_stdio_ptr_lval;;
12659 case "$stdio_cnt" in
12660 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12663 *) cnt_lval=$d_stdio_cnt_lval;;
12665 case "$stdio_base" in
12666 '') stdio_base='((fp)->_IO_read_base)';;
12668 case "$stdio_bufsiz" in
12669 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12672 case "$stdio_ptr" in
12673 '') stdio_ptr='((fp)->_ptr)'
12676 *) ptr_lval=$d_stdio_ptr_lval;;
12678 case "$stdio_cnt" in
12679 '') stdio_cnt='((fp)->_cnt)'
12682 *) cnt_lval=$d_stdio_cnt_lval;;
12684 case "$stdio_base" in
12685 '') stdio_base='((fp)->_base)';;
12687 case "$stdio_bufsiz" in
12688 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12692 : test whether _ptr and _cnt really work
12693 echo "Checking how std your stdio is..." >&4
12696 #$i_stdlib I_STDLIB
12698 #include <stdlib.h>
12700 #define FILE_ptr(fp) $stdio_ptr
12701 #define FILE_cnt(fp) $stdio_cnt
12703 FILE *fp = fopen("try.c", "r");
12706 18 <= FILE_cnt(fp) &&
12707 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12715 if eval $compile && $to try.c; then
12716 if $run ./try; then
12717 echo "Your stdio acts pretty std."
12720 echo "Your stdio isn't very std."
12723 echo "Your stdio doesn't appear very std."
12727 # glibc 2.2.90 and above apparently change stdio streams so Perl's
12728 # direct buffer manipulation no longer works. The Configure tests
12729 # should be changed to correctly detect this, but until then,
12730 # the following check should at least let perl compile and run.
12731 # (This quick fix should be updated before 5.8.1.)
12732 # To be defensive, reject all unknown versions, and all versions > 2.2.9.
12733 # A. Dougherty, June 3, 2002.
12734 case "$d_gnulibc" in
12736 case "$gnulibc_version" in
12740 *) echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
12749 : Can _ptr be used as an lvalue?
12750 case "$d_stdstdio$ptr_lval" in
12751 $define$define) val=$define ;;
12754 set d_stdio_ptr_lval
12757 : Can _cnt be used as an lvalue?
12758 case "$d_stdstdio$cnt_lval" in
12759 $define$define) val=$define ;;
12762 set d_stdio_cnt_lval
12766 : test whether setting _ptr sets _cnt as a side effect
12767 d_stdio_ptr_lval_sets_cnt="$undef"
12768 d_stdio_ptr_lval_nochange_cnt="$undef"
12769 case "$d_stdio_ptr_lval$d_stdstdio" in
12771 echo "Checking to see what happens if we set the stdio ptr..." >&4
12774 /* Can we scream? */
12775 /* Eat dust sed :-) */
12776 /* In the buffer space, no one can hear you scream. */
12777 #$i_stdlib I_STDLIB
12779 #include <stdlib.h>
12781 #define FILE_ptr(fp) $stdio_ptr
12782 #define FILE_cnt(fp) $stdio_cnt
12783 #include <sys/types.h>
12785 FILE *fp = fopen("try.c", "r");
12790 puts("Fail even to read");
12793 c = getc(fp); /* Read away the first # */
12795 puts("Fail even to read");
12799 18 <= FILE_cnt(fp) &&
12800 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12802 puts("Fail even to read");
12805 ptr = (char*) FILE_ptr(fp);
12806 cnt = (size_t)FILE_cnt(fp);
12808 FILE_ptr(fp) += 42;
12810 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12811 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12814 if (FILE_cnt(fp) <= 20) {
12815 printf ("Fail (<20 chars to test)");
12818 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12819 puts("Fail compare");
12822 if (cnt == FILE_cnt(fp)) {
12823 puts("Pass_unchanged");
12826 if (FILE_cnt(fp) == (cnt - 42)) {
12827 puts("Pass_changed");
12830 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12836 if eval $compile && $to try.c; then
12837 case `$run ./try` in
12839 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
12840 d_stdio_ptr_lval_sets_cnt="$define" ;;
12842 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12843 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12845 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12847 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12850 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12856 : see if _base is also standard
12858 case "$d_stdstdio" in
12862 #$i_stdlib I_STDLIB
12864 #include <stdlib.h>
12866 #define FILE_base(fp) $stdio_base
12867 #define FILE_bufsiz(fp) $stdio_bufsiz
12869 FILE *fp = fopen("try.c", "r");
12872 19 <= FILE_bufsiz(fp) &&
12873 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12880 if eval $compile && $to try.c; then
12881 if $run ./try; then
12882 echo "And its _base field acts std."
12885 echo "But its _base field isn't std."
12888 echo "However, it seems to be lacking the _base field."
12896 : see if fast_stdio exists
12898 case "$d_stdstdio:$d_stdio_ptr_lval" in
12900 case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12902 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12913 : see if fchdir exists
12914 set fchdir d_fchdir
12917 : see if fchmod exists
12918 set fchmod d_fchmod
12921 : see if fchown exists
12922 set fchown d_fchown
12925 : see if this is an fcntl system
12929 : See if fcntl-based locking works.
12932 #$i_stdlib I_STDLIB
12934 #include <stdlib.h>
12936 #include <unistd.h>
12938 #include <signal.h>
12939 $signal_t blech(int x) { exit(3); }
12941 #if defined(F_SETLK) && defined(F_SETLKW)
12942 struct flock flock;
12944 fd = open("try.c", O_RDONLY);
12945 flock.l_type = F_RDLCK;
12946 flock.l_whence = SEEK_SET;
12947 flock.l_start = flock.l_len = 0;
12948 signal(SIGALRM, blech);
12950 retval = fcntl(fd, F_SETLK, &flock);
12952 (retval < 0 ? exit(2) : exit(0));
12958 echo "Checking if fcntl-based file locking works... "
12962 if eval $compile_ok; then
12963 if $run ./try; then
12964 echo "Yes, it seems to work."
12967 echo "Nope, it didn't work."
12972 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12973 *** This is (almost) impossible.
12974 *** If your NFS lock daemons are not feeling well, something like
12975 *** this may happen, please investigate. Cannot continue, aborting.
12983 echo "I'm unable to compile the test program, so I'll assume not."
12988 echo "Nope, since you don't even have fcntl()."
12991 set d_fcntl_can_lock
12995 : check for fd_set items
12998 Checking to see how well your C compiler handles fd_set and friends ...
13001 #$i_stdlib I_STDLIB
13003 #include <stdlib.h>
13005 #$i_systime I_SYS_TIME
13006 #$i_sysselct I_SYS_SELECT
13007 #$d_socket HAS_SOCKET
13008 #include <sys/types.h>
13010 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13013 #include <sys/time.h>
13015 #ifdef I_SYS_SELECT
13016 #include <sys/select.h>
13025 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
13033 if eval $compile; then
13034 d_fds_bits="$define"
13036 echo "Well, your system knows about the normal fd_set typedef..." >&4
13037 if $run ./try; then
13038 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
13039 d_fd_macros="$define"
13042 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
13044 d_fd_macros="$undef"
13048 Hmm, your compiler has some difficulty with fd_set. Checking further...
13051 if eval $compile; then
13052 d_fds_bits="$undef"
13054 echo "Well, your system has some sort of fd_set available..." >&4
13055 if $run ./try; then
13056 echo "and you have the normal fd_set macros." >&4
13057 d_fd_macros="$define"
13060 but not the normal fd_set macros! Gross! More work for me...
13062 d_fd_macros="$undef"
13065 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
13067 d_fds_bits="$undef"
13068 d_fd_macros="$undef"
13073 : see if fgetpos exists
13074 set fgetpos d_fgetpos
13077 : see if finite exists
13078 set finite d_finite
13081 : see if finitel exists
13082 set finitel d_finitel
13085 : see if flock exists
13089 : see if prototype for flock is available
13091 set d_flockproto flock $i_sysfile sys/file.h
13094 : see if fp_class exists
13095 set fp_class d_fp_class
13098 : see if pathconf exists
13099 set pathconf d_pathconf
13102 : see if fpathconf exists
13103 set fpathconf d_fpathconf
13106 : see if fpclass exists
13107 set fpclass d_fpclass
13110 : see if fpclassify exists
13111 set fpclassify d_fpclassify
13114 : see if fpclassl exists
13115 set fpclassl d_fpclassl
13118 : check for fpos64_t
13120 echo "Checking to see if you have fpos64_t..." >&4
13123 int main() { fpos64_t x = 7; }
13126 if eval $compile; then
13128 echo "You have fpos64_t."
13131 echo "You do not have fpos64_t."
13132 case "$fpossize" in
13133 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
13140 : see if frexpl exists
13141 set frexpl d_frexpl
13144 : see if this is a sys/param system
13145 set sys/param.h i_sysparam
13148 : see if this is a sys/mount.h system
13149 set sys/mount.h i_sysmount
13152 : Check for fs_data_s
13154 echo "Checking to see if your system supports struct fs_data..." >&4
13155 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
13157 case "$d_fs_data_s" in
13158 "$define") echo "Yes, it does." ;;
13159 *) echo "No, it doesn't." ;;
13162 : see if fseeko exists
13163 set fseeko d_fseeko
13165 case "$longsize" in
13166 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
13169 : see if fsetpos exists
13170 set fsetpos d_fsetpos
13173 : see if fstatfs exists
13174 set fstatfs d_fstatfs
13177 : see if statvfs exists
13178 set statvfs d_statvfs
13181 : see if fstatvfs exists
13182 set fstatvfs d_fstatvfs
13186 : see if fsync exists
13190 : see if ftello exists
13191 set ftello d_ftello
13193 case "$longsize" in
13194 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
13197 : check for a working futimes
13200 echo "Checking if you have a working futimes()" >&4
13203 #include <sys/time.h>
13210 fd = open ("try.c", O_RDWR);
13211 if (-1 == fd) exit (1);
13212 rv = futimes (fd, NULL);
13213 exit (rv == -1 ? errno : 0);
13217 if eval $compile; then
13221 0) echo "Yes, you have" >&4
13222 d_futimes="$define"
13224 *) echo "No, you have futimes, but it isn't working ($rc) (probably harmless)" >&4
13228 echo "No, it does not (probably harmless)" >&4
13232 : see if getcwd exists
13233 set getcwd d_getcwd
13236 : see if getespwnam exists
13237 set getespwnam d_getespwnam
13240 : see if getfsstat exists
13241 set getfsstat d_getfsstat
13244 : see if getgrent exists
13245 set getgrent d_getgrent
13248 : see if getgrent_r exists
13249 set getgrent_r d_getgrent_r
13251 case "$d_getgrent_r" in
13253 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13254 case "$d_getgrent_r_proto:$usethreads" in
13255 ":define") d_getgrent_r_proto=define
13256 set d_getgrent_r_proto getgrent_r $hdrs
13260 case "$d_getgrent_r_proto" in
13262 case "$getgrent_r_proto" in
13263 ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
13264 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
13266 case "$getgrent_r_proto" in
13267 ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
13268 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
13270 case "$getgrent_r_proto" in
13271 ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
13272 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
13274 case "$getgrent_r_proto" in
13275 ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
13276 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
13278 case "$getgrent_r_proto" in
13279 ''|0) try='int getgrent_r(struct group*, char*, int);'
13280 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
13282 case "$getgrent_r_proto" in
13283 ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
13284 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
13286 case "$getgrent_r_proto" in
13287 ''|0) d_getgrent_r=undef
13289 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
13290 * ) case "$getgrent_r_proto" in
13291 REENTRANT_PROTO*) ;;
13292 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
13294 echo "Prototype: $try" ;;
13297 *) case "$usethreads" in
13298 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
13305 *) getgrent_r_proto=0
13309 : see if getgrgid_r exists
13310 set getgrgid_r d_getgrgid_r
13312 case "$d_getgrgid_r" in
13314 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13315 case "$d_getgrgid_r_proto:$usethreads" in
13316 ":define") d_getgrgid_r_proto=define
13317 set d_getgrgid_r_proto getgrgid_r $hdrs
13321 case "$d_getgrgid_r_proto" in
13323 case "$getgrgid_r_proto" in
13324 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
13325 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
13327 case "$getgrgid_r_proto" in
13328 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
13329 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
13331 case "$getgrgid_r_proto" in
13332 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
13333 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
13335 case "$getgrgid_r_proto" in
13336 ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
13337 ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
13339 case "$getgrgid_r_proto" in
13340 ''|0) d_getgrgid_r=undef
13342 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
13343 * ) case "$getgrgid_r_proto" in
13344 REENTRANT_PROTO*) ;;
13345 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
13347 echo "Prototype: $try" ;;
13350 *) case "$usethreads" in
13351 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
13358 *) getgrgid_r_proto=0
13362 : see if getgrnam_r exists
13363 set getgrnam_r d_getgrnam_r
13365 case "$d_getgrnam_r" in
13367 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13368 case "$d_getgrnam_r_proto:$usethreads" in
13369 ":define") d_getgrnam_r_proto=define
13370 set d_getgrnam_r_proto getgrnam_r $hdrs
13374 case "$d_getgrnam_r_proto" in
13376 case "$getgrnam_r_proto" in
13377 ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
13378 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
13380 case "$getgrnam_r_proto" in
13381 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
13382 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
13384 case "$getgrnam_r_proto" in
13385 ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
13386 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
13388 case "$getgrnam_r_proto" in
13389 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
13390 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
13392 case "$getgrnam_r_proto" in
13393 ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
13394 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
13396 case "$getgrnam_r_proto" in
13397 ''|0) d_getgrnam_r=undef
13399 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
13400 * ) case "$getgrnam_r_proto" in
13401 REENTRANT_PROTO*) ;;
13402 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
13404 echo "Prototype: $try" ;;
13407 *) case "$usethreads" in
13408 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
13415 *) getgrnam_r_proto=0
13419 : see if gethostbyaddr exists
13420 set gethostbyaddr d_gethbyaddr
13423 : see if gethostbyname exists
13424 set gethostbyname d_gethbyname
13427 : see if gethostent exists
13428 set gethostent d_gethent
13431 : see how we will look up host name
13434 if set gethostname val -f d_gethname; eval $csym; $val; then
13435 echo 'gethostname() found.' >&4
13436 d_gethname="$define"
13439 if set uname val -f d_uname; eval $csym; $val; then
13442 uname() was found, but you're running xenix, and older versions of xenix
13443 have a broken uname(). If you don't really know whether your xenix is old
13444 enough to have a broken system call, use the default answer.
13449 "$define") dflt=n;;
13451 rp='Is your uname() broken?'
13454 n*) d_uname="$define"; call=uname;;
13457 echo 'uname() found.' >&4
13464 case "$d_gethname" in
13465 '') d_gethname="$undef";;
13468 '') d_uname="$undef";;
13470 case "$d_uname$d_gethname" in
13475 Every now and then someone has a $call() that lies about the hostname
13476 but can't be fixed for political or economic reasons. If you wish, I can
13477 pretend $call() isn't there and maybe compute hostname at run-time
13478 thanks to the '$phostname' command.
13481 rp="Shall I ignore $call() from now on?"
13484 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
13487 case "$phostname" in
13488 '') aphostname='';;
13489 *) case "$aphostname" in
13491 *) set X $phostname
13495 file=`./loc $file $file $pth`
13496 aphostname=`echo $file $*`
13501 case "$d_uname$d_gethname" in
13504 case "$phostname" in
13506 echo "There will be no way for $package to get your hostname." >&4;;
13508 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
13512 case "$d_phostname" in
13513 '') d_phostname="$undef";;
13516 : see if gethostbyaddr_r exists
13517 set gethostbyaddr_r d_gethostbyaddr_r
13519 case "$d_gethostbyaddr_r" in
13521 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13522 case "$d_gethostbyaddr_r_proto:$usethreads" in
13523 ":define") d_gethostbyaddr_r_proto=define
13524 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
13528 case "$d_gethostbyaddr_r_proto" in
13530 case "$gethostbyaddr_r_proto" in
13531 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13532 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
13534 case "$gethostbyaddr_r_proto" in
13535 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
13536 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
13538 case "$gethostbyaddr_r_proto" in
13539 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
13540 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
13542 case "$gethostbyaddr_r_proto" in
13543 ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
13544 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
13546 case "$gethostbyaddr_r_proto" in
13547 ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
13548 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
13550 case "$gethostbyaddr_r_proto" in
13551 ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
13552 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
13554 case "$gethostbyaddr_r_proto" in
13555 ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
13556 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
13558 case "$gethostbyaddr_r_proto" in
13559 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
13560 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
13562 case "$gethostbyaddr_r_proto" in
13563 ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
13564 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
13566 case "$gethostbyaddr_r_proto" in
13567 ''|0) try='int gethostbyaddr_r(const char*, int, int);'
13568 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
13570 case "$gethostbyaddr_r_proto" in
13571 ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13572 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
13574 case "$gethostbyaddr_r_proto" in
13575 ''|0) d_gethostbyaddr_r=undef
13576 gethostbyaddr_r_proto=0
13577 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
13578 * ) case "$gethostbyaddr_r_proto" in
13579 REENTRANT_PROTO*) ;;
13580 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
13582 echo "Prototype: $try" ;;
13585 *) case "$usethreads" in
13586 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
13588 d_gethostbyaddr_r=undef
13589 gethostbyaddr_r_proto=0
13593 *) gethostbyaddr_r_proto=0
13597 : see if gethostbyname_r exists
13598 set gethostbyname_r d_gethostbyname_r
13600 case "$d_gethostbyname_r" in
13602 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13603 case "$d_gethostbyname_r_proto:$usethreads" in
13604 ":define") d_gethostbyname_r_proto=define
13605 set d_gethostbyname_r_proto gethostbyname_r $hdrs
13609 case "$d_gethostbyname_r_proto" in
13611 case "$gethostbyname_r_proto" in
13612 ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
13613 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
13615 case "$gethostbyname_r_proto" in
13616 ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
13617 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
13619 case "$gethostbyname_r_proto" in
13620 ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
13621 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
13623 case "$gethostbyname_r_proto" in
13624 ''|0) d_gethostbyname_r=undef
13625 gethostbyname_r_proto=0
13626 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
13627 * ) case "$gethostbyname_r_proto" in
13628 REENTRANT_PROTO*) ;;
13629 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
13631 echo "Prototype: $try" ;;
13634 *) case "$usethreads" in
13635 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
13637 d_gethostbyname_r=undef
13638 gethostbyname_r_proto=0
13642 *) gethostbyname_r_proto=0
13646 : see if gethostent_r exists
13647 set gethostent_r d_gethostent_r
13649 case "$d_gethostent_r" in
13651 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13652 case "$d_gethostent_r_proto:$usethreads" in
13653 ":define") d_gethostent_r_proto=define
13654 set d_gethostent_r_proto gethostent_r $hdrs
13658 case "$d_gethostent_r_proto" in
13660 case "$gethostent_r_proto" in
13661 ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
13662 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
13664 case "$gethostent_r_proto" in
13665 ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
13666 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
13668 case "$gethostent_r_proto" in
13669 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
13670 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
13672 case "$gethostent_r_proto" in
13673 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
13674 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
13676 case "$gethostent_r_proto" in
13677 ''|0) try='int gethostent_r(struct hostent*, char*, int);'
13678 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
13680 case "$gethostent_r_proto" in
13681 ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
13682 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
13684 case "$gethostent_r_proto" in
13685 ''|0) d_gethostent_r=undef
13686 gethostent_r_proto=0
13687 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
13688 * ) case "$gethostent_r_proto" in
13689 REENTRANT_PROTO*) ;;
13690 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
13692 echo "Prototype: $try" ;;
13695 *) case "$usethreads" in
13696 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
13698 d_gethostent_r=undef
13699 gethostent_r_proto=0
13703 *) gethostent_r_proto=0
13707 : see if prototypes for various gethostxxx netdb.h functions are available
13709 set d_gethostprotos gethostent $i_netdb netdb.h
13712 : see if getitimer exists
13713 set getitimer d_getitimer
13716 : see if getlogin exists
13717 set getlogin d_getlogin
13720 : see if getlogin_r exists
13721 set getlogin_r d_getlogin_r
13723 case "$d_getlogin_r" in
13725 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
13726 case "$d_getlogin_r_proto:$usethreads" in
13727 ":define") d_getlogin_r_proto=define
13728 set d_getlogin_r_proto getlogin_r $hdrs
13732 case "$d_getlogin_r_proto" in
13734 case "$getlogin_r_proto" in
13735 ''|0) try='int getlogin_r(char*, size_t);'
13736 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
13738 case "$getlogin_r_proto" in
13739 ''|0) try='int getlogin_r(char*, int);'
13740 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
13742 case "$getlogin_r_proto" in
13743 ''|0) try='char* getlogin_r(char*, size_t);'
13744 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
13746 case "$getlogin_r_proto" in
13747 ''|0) try='char* getlogin_r(char*, int);'
13748 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
13750 case "$getlogin_r_proto" in
13751 ''|0) d_getlogin_r=undef
13753 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
13754 * ) case "$getlogin_r_proto" in
13755 REENTRANT_PROTO*) ;;
13756 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
13758 echo "Prototype: $try" ;;
13761 *) case "$usethreads" in
13762 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
13769 *) getlogin_r_proto=0
13773 : see if getmnt exists
13774 set getmnt d_getmnt
13777 : see if getmntent exists
13778 set getmntent d_getmntent
13781 : see if getnetbyaddr exists
13782 set getnetbyaddr d_getnbyaddr
13785 : see if getnetbyname exists
13786 set getnetbyname d_getnbyname
13789 : see if getnetent exists
13790 set getnetent d_getnent
13793 : see if getnetbyaddr_r exists
13794 set getnetbyaddr_r d_getnetbyaddr_r
13796 case "$d_getnetbyaddr_r" in
13798 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13799 case "$d_getnetbyaddr_r_proto:$usethreads" in
13800 ":define") d_getnetbyaddr_r_proto=define
13801 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
13805 case "$d_getnetbyaddr_r_proto" in
13807 case "$getnetbyaddr_r_proto" in
13808 ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
13809 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
13811 case "$getnetbyaddr_r_proto" in
13812 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
13813 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
13815 case "$getnetbyaddr_r_proto" in
13816 ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
13817 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
13819 case "$getnetbyaddr_r_proto" in
13820 ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
13821 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
13823 case "$getnetbyaddr_r_proto" in
13824 ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
13825 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
13827 case "$getnetbyaddr_r_proto" in
13828 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
13829 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
13831 case "$getnetbyaddr_r_proto" in
13832 ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
13833 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
13835 case "$getnetbyaddr_r_proto" in
13836 ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
13837 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
13839 case "$getnetbyaddr_r_proto" in
13840 ''|0) d_getnetbyaddr_r=undef
13841 getnetbyaddr_r_proto=0
13842 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
13843 * ) case "$getnetbyaddr_r_proto" in
13844 REENTRANT_PROTO*) ;;
13845 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
13847 echo "Prototype: $try" ;;
13850 *) case "$usethreads" in
13851 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
13853 d_getnetbyaddr_r=undef
13854 getnetbyaddr_r_proto=0
13858 *) getnetbyaddr_r_proto=0
13862 : see if getnetbyname_r exists
13863 set getnetbyname_r d_getnetbyname_r
13865 case "$d_getnetbyname_r" in
13867 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13868 case "$d_getnetbyname_r_proto:$usethreads" in
13869 ":define") d_getnetbyname_r_proto=define
13870 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13874 case "$d_getnetbyname_r_proto" in
13876 case "$getnetbyname_r_proto" in
13877 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13878 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13880 case "$getnetbyname_r_proto" in
13881 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13882 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13884 case "$getnetbyname_r_proto" in
13885 ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13886 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13888 case "$getnetbyname_r_proto" in
13889 ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13890 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13892 case "$getnetbyname_r_proto" in
13893 ''|0) d_getnetbyname_r=undef
13894 getnetbyname_r_proto=0
13895 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13896 * ) case "$getnetbyname_r_proto" in
13897 REENTRANT_PROTO*) ;;
13898 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13900 echo "Prototype: $try" ;;
13903 *) case "$usethreads" in
13904 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13906 d_getnetbyname_r=undef
13907 getnetbyname_r_proto=0
13911 *) getnetbyname_r_proto=0
13915 : see if getnetent_r exists
13916 set getnetent_r d_getnetent_r
13918 case "$d_getnetent_r" in
13920 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13921 case "$d_getnetent_r_proto:$usethreads" in
13922 ":define") d_getnetent_r_proto=define
13923 set d_getnetent_r_proto getnetent_r $hdrs
13927 case "$d_getnetent_r_proto" in
13929 case "$getnetent_r_proto" in
13930 ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13931 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13933 case "$getnetent_r_proto" in
13934 ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13935 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13937 case "$getnetent_r_proto" in
13938 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13939 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13941 case "$getnetent_r_proto" in
13942 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13943 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13945 case "$getnetent_r_proto" in
13946 ''|0) try='int getnetent_r(struct netent*, char*, int);'
13947 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13949 case "$getnetent_r_proto" in
13950 ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13951 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13953 case "$getnetent_r_proto" in
13954 ''|0) d_getnetent_r=undef
13955 getnetent_r_proto=0
13956 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13957 * ) case "$getnetent_r_proto" in
13958 REENTRANT_PROTO*) ;;
13959 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13961 echo "Prototype: $try" ;;
13964 *) case "$usethreads" in
13965 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13967 d_getnetent_r=undef
13968 getnetent_r_proto=0
13972 *) getnetent_r_proto=0
13976 : see if prototypes for various getnetxxx netdb.h functions are available
13978 set d_getnetprotos getnetent $i_netdb netdb.h
13981 : see if getpagesize exists
13982 set getpagesize d_getpagsz
13985 : Optional checks for getprotobyname and getprotobynumber
13987 : see if getprotobyname exists
13988 set getprotobyname d_getpbyname
13991 : see if getprotobynumber exists
13992 set getprotobynumber d_getpbynumber
13995 : see if getprotoent exists
13996 set getprotoent d_getpent
13999 : see if getpgid exists
14000 set getpgid d_getpgid
14003 : see if getpgrp2 exists
14004 set getpgrp2 d_getpgrp2
14007 : see if getppid exists
14008 set getppid d_getppid
14011 : see if getpriority exists
14012 set getpriority d_getprior
14015 : see if getprotobyname_r exists
14016 set getprotobyname_r d_getprotobyname_r
14018 case "$d_getprotobyname_r" in
14020 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14021 case "$d_getprotobyname_r_proto:$usethreads" in
14022 ":define") d_getprotobyname_r_proto=define
14023 set d_getprotobyname_r_proto getprotobyname_r $hdrs
14027 case "$d_getprotobyname_r_proto" in
14029 case "$getprotobyname_r_proto" in
14030 ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
14031 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
14033 case "$getprotobyname_r_proto" in
14034 ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
14035 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
14037 case "$getprotobyname_r_proto" in
14038 ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
14039 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
14041 case "$getprotobyname_r_proto" in
14042 ''|0) d_getprotobyname_r=undef
14043 getprotobyname_r_proto=0
14044 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
14045 * ) case "$getprotobyname_r_proto" in
14046 REENTRANT_PROTO*) ;;
14047 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
14049 echo "Prototype: $try" ;;
14052 *) case "$usethreads" in
14053 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
14055 d_getprotobyname_r=undef
14056 getprotobyname_r_proto=0
14060 *) getprotobyname_r_proto=0
14064 : see if getprotobynumber_r exists
14065 set getprotobynumber_r d_getprotobynumber_r
14067 case "$d_getprotobynumber_r" in
14069 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14070 case "$d_getprotobynumber_r_proto:$usethreads" in
14071 ":define") d_getprotobynumber_r_proto=define
14072 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
14076 case "$d_getprotobynumber_r_proto" in
14078 case "$getprotobynumber_r_proto" in
14079 ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
14080 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
14082 case "$getprotobynumber_r_proto" in
14083 ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
14084 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
14086 case "$getprotobynumber_r_proto" in
14087 ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
14088 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
14090 case "$getprotobynumber_r_proto" in
14091 ''|0) d_getprotobynumber_r=undef
14092 getprotobynumber_r_proto=0
14093 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
14094 * ) case "$getprotobynumber_r_proto" in
14095 REENTRANT_PROTO*) ;;
14096 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
14098 echo "Prototype: $try" ;;
14101 *) case "$usethreads" in
14102 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
14104 d_getprotobynumber_r=undef
14105 getprotobynumber_r_proto=0
14109 *) getprotobynumber_r_proto=0
14113 : see if getprotoent_r exists
14114 set getprotoent_r d_getprotoent_r
14116 case "$d_getprotoent_r" in
14118 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14119 case "$d_getprotoent_r_proto:$usethreads" in
14120 ":define") d_getprotoent_r_proto=define
14121 set d_getprotoent_r_proto getprotoent_r $hdrs
14125 case "$d_getprotoent_r_proto" in
14127 case "$getprotoent_r_proto" in
14128 ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
14129 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
14131 case "$getprotoent_r_proto" in
14132 ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
14133 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
14135 case "$getprotoent_r_proto" in
14136 ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
14137 ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
14139 case "$getprotoent_r_proto" in
14140 ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
14141 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
14143 case "$getprotoent_r_proto" in
14144 ''|0) d_getprotoent_r=undef
14145 getprotoent_r_proto=0
14146 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
14147 * ) case "$getprotoent_r_proto" in
14148 REENTRANT_PROTO*) ;;
14149 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
14151 echo "Prototype: $try" ;;
14154 *) case "$usethreads" in
14155 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
14157 d_getprotoent_r=undef
14158 getprotoent_r_proto=0
14162 *) getprotoent_r_proto=0
14166 : see if prototypes for various getprotoxxx netdb.h functions are available
14168 set d_getprotoprotos getprotoent $i_netdb netdb.h
14171 : see if getprpwnam exists
14172 set getprpwnam d_getprpwnam
14175 : see if getpwent exists
14176 set getpwent d_getpwent
14179 : see if getpwent_r exists
14180 set getpwent_r d_getpwent_r
14182 case "$d_getpwent_r" in
14184 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14185 case "$d_getpwent_r_proto:$usethreads" in
14186 ":define") d_getpwent_r_proto=define
14187 set d_getpwent_r_proto getpwent_r $hdrs
14191 case "$d_getpwent_r_proto" in
14193 case "$getpwent_r_proto" in
14194 ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
14195 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
14197 case "$getpwent_r_proto" in
14198 ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
14199 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
14201 case "$getpwent_r_proto" in
14202 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
14203 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
14205 case "$getpwent_r_proto" in
14206 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
14207 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
14209 case "$getpwent_r_proto" in
14210 ''|0) try='int getpwent_r(struct passwd*, char*, int);'
14211 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
14213 case "$getpwent_r_proto" in
14214 ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
14215 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
14217 case "$getpwent_r_proto" in
14218 ''|0) d_getpwent_r=undef
14220 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
14221 * ) case "$getpwent_r_proto" in
14222 REENTRANT_PROTO*) ;;
14223 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
14225 echo "Prototype: $try" ;;
14228 *) case "$usethreads" in
14229 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
14236 *) getpwent_r_proto=0
14240 : see if getpwnam_r exists
14241 set getpwnam_r d_getpwnam_r
14243 case "$d_getpwnam_r" in
14245 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14246 case "$d_getpwnam_r_proto:$usethreads" in
14247 ":define") d_getpwnam_r_proto=define
14248 set d_getpwnam_r_proto getpwnam_r $hdrs
14252 case "$d_getpwnam_r_proto" in
14254 case "$getpwnam_r_proto" in
14255 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
14256 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
14258 case "$getpwnam_r_proto" in
14259 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
14260 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
14262 case "$getpwnam_r_proto" in
14263 ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
14264 ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
14266 case "$getpwnam_r_proto" in
14267 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
14268 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
14270 case "$getpwnam_r_proto" in
14271 ''|0) d_getpwnam_r=undef
14273 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
14274 * ) case "$getpwnam_r_proto" in
14275 REENTRANT_PROTO*) ;;
14276 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
14278 echo "Prototype: $try" ;;
14281 *) case "$usethreads" in
14282 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
14289 *) getpwnam_r_proto=0
14293 : see if getpwuid_r exists
14294 set getpwuid_r d_getpwuid_r
14296 case "$d_getpwuid_r" in
14298 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14299 case "$d_getpwuid_r_proto:$usethreads" in
14300 ":define") d_getpwuid_r_proto=define
14301 set d_getpwuid_r_proto getpwuid_r $hdrs
14305 case "$d_getpwuid_r_proto" in
14307 case "$getpwuid_r_proto" in
14308 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
14309 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
14311 case "$getpwuid_r_proto" in
14312 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
14313 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
14315 case "$getpwuid_r_proto" in
14316 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
14317 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
14319 case "$getpwuid_r_proto" in
14320 ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
14321 ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
14323 case "$getpwuid_r_proto" in
14324 ''|0) d_getpwuid_r=undef
14326 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
14327 * ) case "$getpwuid_r_proto" in
14328 REENTRANT_PROTO*) ;;
14329 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
14331 echo "Prototype: $try" ;;
14334 *) case "$usethreads" in
14335 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
14342 *) getpwuid_r_proto=0
14346 : Optional checks for getsbyname and getsbyport
14348 : see if getservbyname exists
14349 set getservbyname d_getsbyname
14352 : see if getservbyport exists
14353 set getservbyport d_getsbyport
14356 : see if getservent exists
14357 set getservent d_getsent
14360 : see if getservbyname_r exists
14361 set getservbyname_r d_getservbyname_r
14363 case "$d_getservbyname_r" in
14365 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14366 case "$d_getservbyname_r_proto:$usethreads" in
14367 ":define") d_getservbyname_r_proto=define
14368 set d_getservbyname_r_proto getservbyname_r $hdrs
14372 case "$d_getservbyname_r_proto" in
14374 case "$getservbyname_r_proto" in
14375 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
14376 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
14378 case "$getservbyname_r_proto" in
14379 ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
14380 ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
14382 case "$getservbyname_r_proto" in
14383 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
14384 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
14386 case "$getservbyname_r_proto" in
14387 ''|0) d_getservbyname_r=undef
14388 getservbyname_r_proto=0
14389 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
14390 * ) case "$getservbyname_r_proto" in
14391 REENTRANT_PROTO*) ;;
14392 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
14394 echo "Prototype: $try" ;;
14397 *) case "$usethreads" in
14398 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
14400 d_getservbyname_r=undef
14401 getservbyname_r_proto=0
14405 *) getservbyname_r_proto=0
14409 : see if getservbyport_r exists
14410 set getservbyport_r d_getservbyport_r
14412 case "$d_getservbyport_r" in
14414 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14415 case "$d_getservbyport_r_proto:$usethreads" in
14416 ":define") d_getservbyport_r_proto=define
14417 set d_getservbyport_r_proto getservbyport_r $hdrs
14421 case "$d_getservbyport_r_proto" in
14423 case "$getservbyport_r_proto" in
14424 ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
14425 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
14427 case "$getservbyport_r_proto" in
14428 ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
14429 ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
14431 case "$getservbyport_r_proto" in
14432 ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
14433 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
14435 case "$getservbyport_r_proto" in
14436 ''|0) d_getservbyport_r=undef
14437 getservbyport_r_proto=0
14438 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
14439 * ) case "$getservbyport_r_proto" in
14440 REENTRANT_PROTO*) ;;
14441 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
14443 echo "Prototype: $try" ;;
14446 *) case "$usethreads" in
14447 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
14449 d_getservbyport_r=undef
14450 getservbyport_r_proto=0
14454 *) getservbyport_r_proto=0
14458 : see if getservent_r exists
14459 set getservent_r d_getservent_r
14461 case "$d_getservent_r" in
14463 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14464 case "$d_getservent_r_proto:$usethreads" in
14465 ":define") d_getservent_r_proto=define
14466 set d_getservent_r_proto getservent_r $hdrs
14470 case "$d_getservent_r_proto" in
14472 case "$getservent_r_proto" in
14473 ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
14474 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
14476 case "$getservent_r_proto" in
14477 ''|0) try='int getservent_r(struct servent*, char*, int);'
14478 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
14480 case "$getservent_r_proto" in
14481 ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
14482 ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
14484 case "$getservent_r_proto" in
14485 ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
14486 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
14488 case "$getservent_r_proto" in
14489 ''|0) d_getservent_r=undef
14490 getservent_r_proto=0
14491 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
14492 * ) case "$getservent_r_proto" in
14493 REENTRANT_PROTO*) ;;
14494 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
14496 echo "Prototype: $try" ;;
14499 *) case "$usethreads" in
14500 define) echo "getservent_r has no prototype, not using it." >&4 ;;
14502 d_getservent_r=undef
14503 getservent_r_proto=0
14507 *) getservent_r_proto=0
14511 : see if prototypes for various getservxxx netdb.h functions are available
14513 set d_getservprotos getservent $i_netdb netdb.h
14516 : see if getspnam exists
14517 set getspnam d_getspnam
14520 : see if this is a shadow.h system
14521 set shadow.h i_shadow
14524 : see if getspnam_r exists
14525 set getspnam_r d_getspnam_r
14527 case "$d_getspnam_r" in
14529 hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
14530 case "$d_getspnam_r_proto:$usethreads" in
14531 ":define") d_getspnam_r_proto=define
14532 set d_getspnam_r_proto getspnam_r $hdrs
14536 case "$d_getspnam_r_proto" in
14538 case "$getspnam_r_proto" in
14539 ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
14540 ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
14542 case "$getspnam_r_proto" in
14543 ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
14544 ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
14546 case "$getspnam_r_proto" in
14547 ''|0) d_getspnam_r=undef
14549 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
14550 * ) case "$getspnam_r_proto" in
14551 REENTRANT_PROTO*) ;;
14552 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
14554 echo "Prototype: $try" ;;
14557 *) case "$usethreads" in
14558 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
14565 *) getspnam_r_proto=0
14569 : see if gettimeofday or ftime exists
14570 set gettimeofday d_gettimeod
14572 case "$d_gettimeod" in
14578 val="$undef"; set d_ftime; eval $setvar
14581 case "$d_gettimeod$d_ftime" in
14584 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
14588 : see if gmtime_r exists
14589 set gmtime_r d_gmtime_r
14591 case "$d_gmtime_r" in
14593 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14594 case "$d_gmtime_r_proto:$usethreads" in
14595 ":define") d_gmtime_r_proto=define
14596 set d_gmtime_r_proto gmtime_r $hdrs
14600 case "$d_gmtime_r_proto" in
14602 case "$gmtime_r_proto" in
14603 ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
14604 ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
14606 case "$gmtime_r_proto" in
14607 ''|0) try='int gmtime_r(const time_t*, struct tm*);'
14608 ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
14610 case "$gmtime_r_proto" in
14611 ''|0) d_gmtime_r=undef
14613 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
14614 * ) case "$gmtime_r_proto" in
14615 REENTRANT_PROTO*) ;;
14616 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
14618 echo "Prototype: $try" ;;
14621 *) case "$usethreads" in
14622 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
14629 *) gmtime_r_proto=0
14633 : see if hasmntopt exists
14634 set hasmntopt d_hasmntopt
14637 : see if this is a netinet/in.h or sys/in.h system
14638 set netinet/in.h i_niin sys/in.h i_sysin
14641 : see if arpa/inet.h has to be included
14642 set arpa/inet.h i_arpainet
14645 : see if htonl --and friends-- exists
14650 : Maybe they are macros.
14653 $cat >htonl.c <<EOM
14655 #include <sys/types.h>
14656 #$i_niin I_NETINET_IN
14658 #$i_arpainet I_ARPA_INET
14659 #ifdef I_NETINET_IN
14660 #include <netinet/in.h>
14663 #include <sys/in.h>
14666 #include <arpa/inet.h>
14669 printf("Defined as a macro.");
14672 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
14673 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
14675 echo "But it seems to be defined as a macro." >&4
14683 : see if ilogbl exists
14684 set ilogbl d_ilogbl
14689 if set index val -f; eval $csym; $val; then
14690 if set strchr val -f d_strchr; eval $csym; $val; then
14691 if $contains strchr "$strings" >/dev/null 2>&1 ; then
14694 echo "strchr() found." >&4
14698 echo "index() found." >&4
14703 echo "index() found." >&4
14706 if set strchr val -f d_strchr; eval $csym; $val; then
14709 echo "strchr() found." >&4
14711 echo "No index() or strchr() found!" >&4
14716 set d_strchr; eval $setvar
14718 set d_index; eval $setvar
14720 : check whether inet_aton exists
14721 set inet_aton d_inetaton
14726 $cat >isascii.c <<EOCP
14729 #$i_stdlib I_STDLIB
14731 #include <stdlib.h>
14742 if eval $compile; then
14743 echo "isascii() found." >&4
14746 echo "isascii() NOT found." >&4
14753 : see if isfinite exists
14754 set isfinite d_isfinite
14757 : see if isinf exists
14761 : see if isnan exists
14765 : see if isnanl exists
14766 set isnanl d_isnanl
14769 : see if killpg exists
14770 set killpg d_killpg
14773 : see if lchown exists
14775 $cat > try.c <<'EOCP'
14776 /* System header to define __stub macros and hopefully few prototypes,
14777 which can conflict with char lchown(); below. */
14778 #include <assert.h>
14779 /* Override any gcc2 internal prototype to avoid an error. */
14780 /* We use char because int might match the return type of a gcc2
14781 builtin and then its argument prototype would still apply. */
14784 /* The GNU C library defines this for functions which it implements
14785 to always fail with ENOSYS. Some functions are actually named
14786 something starting with __ and the normal name is an alias. */
14787 #if defined (__stub_lchown) || defined (__stub___lchown)
14795 if eval $compile; then
14796 $echo "lchown() found." >&4
14799 $echo "lchown() NOT found." >&4
14805 : See if number of significant digits in a double precision number is known
14807 $cat >ldbl_dig.c <<EOM
14808 #$i_limits I_LIMITS
14811 #include <limits.h>
14817 printf("Contains LDBL_DIG");
14820 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
14821 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
14822 echo "LDBL_DIG found." >&4
14825 echo "LDBL_DIG NOT found." >&4
14832 : see if this is a math.h system
14836 : check to see if math.h defines _LIB_VERSION
14837 d_libm_lib_version="$undef"
14841 echo "Checking to see if your libm supports _LIB_VERSION..." >&4
14843 #include <unistd.h>
14845 int main (int argc, char *argv[])
14847 printf ("%d\n", _LIB_VERSION);
14852 if eval $compile; then
14854 echo "Yes, it does ($foo)" >&4
14855 d_libm_lib_version="$define"
14857 echo "No, it does not (probably harmless)" >&4
14864 : see if link exists
14868 : see if localtime_r exists
14869 set localtime_r d_localtime_r
14871 case "$d_localtime_r" in
14873 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14874 case "$d_localtime_r_proto:$usethreads" in
14875 ":define") d_localtime_r_proto=define
14876 set d_localtime_r_proto localtime_r $hdrs
14880 case "$d_localtime_r_proto" in
14882 case "$localtime_r_proto" in
14883 ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14884 ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14886 case "$localtime_r_proto" in
14887 ''|0) try='int localtime_r(const time_t*, struct tm*);'
14888 ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14890 case "$localtime_r_proto" in
14891 ''|0) d_localtime_r=undef
14892 localtime_r_proto=0
14893 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14894 * ) case "$localtime_r_proto" in
14895 REENTRANT_PROTO*) ;;
14896 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14898 echo "Prototype: $try" ;;
14901 *) case "$usethreads" in
14902 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14904 d_localtime_r=undef
14905 localtime_r_proto=0
14909 *) localtime_r_proto=0
14913 : see if localtime_r calls tzset
14914 case "$localtime_r_proto" in
14917 /* Does our libc's localtime_r call tzset ?
14918 * return 0 if so, 1 otherwise.
14920 #include <sys/types.h>
14921 #include <unistd.h>
14923 #include <string.h>
14924 #include <malloc.h>
14927 time_t t = time(0L);
14928 char w_tz[]="TZ" "=GMT+5",
14929 e_tz[]="TZ" "=GMT-5",
14930 *tz_e = (char*)malloc(16),
14931 *tz_w = (char*)malloc(16);
14932 struct tm tm_e, tm_w;
14933 memset(&tm_e,'\0',sizeof(struct tm));
14934 memset(&tm_w,'\0',sizeof(struct tm));
14939 localtime_r(&t, &tm_e);
14942 localtime_r(&t, &tm_w);
14944 if( memcmp(&tm_e, &tm_w, sizeof(struct tm)) == 0 )
14950 if eval $compile; then
14951 if $run ./try; then
14952 d_localtime_r_needs_tzset=undef;
14954 d_localtime_r_needs_tzset=define;
14957 d_localtime_r_needs_tzset=undef;
14961 d_localtime_r_needs_tzset=undef;
14966 : see if localeconv exists
14967 set localeconv d_locconv
14970 : see if lockf exists
14974 : see if prototype for lseek is available
14976 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14979 : see if lstat exists
14983 : see if madvise exists
14984 set madvise d_madvise
14987 : see if malloc_size exists
14988 set malloc_size d_malloc_size
14991 : see if malloc_size_good exists
14992 set malloc_good_size d_malloc_good_size
14995 : see if mblen exists
14999 : see if mbstowcs exists
15000 set mbstowcs d_mbstowcs
15003 : see if mbtowc exists
15004 set mbtowc d_mbtowc
15007 : see if memchr exists
15008 set memchr d_memchr
15011 : see if memcmp exists
15012 set memcmp d_memcmp
15015 : see if memcpy exists
15016 set memcpy d_memcpy
15019 : see if memmove exists
15020 set memmove d_memmove
15023 : see if memset exists
15024 set memset d_memset
15027 : see if mkdir exists
15031 : see if mkdtemp exists
15032 set mkdtemp d_mkdtemp
15035 : see if mkfifo exists
15036 set mkfifo d_mkfifo
15039 : see if mkstemp exists
15040 set mkstemp d_mkstemp
15043 : see if mkstemps exists
15044 set mkstemps d_mkstemps
15047 : see if mktime exists
15048 set mktime d_mktime
15051 : see if this is a sys/mman.h system
15052 set sys/mman.h i_sysmman
15055 : see if mmap exists
15058 : see what shmat returns
15059 : default to something harmless
15061 case "$i_sysmman$d_mmap" in
15063 $cat >mmap.c <<'END'
15064 #include <sys/mman.h>
15067 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
15072 echo "and it returns ($mmaptype)." >&4
15078 : see if sqrtl exists
15082 : see if scalbnl exists
15083 set scalbnl d_scalbnl
15086 : see if modfl exists
15090 : see if prototype for modfl is available
15092 set d_modflproto modfl $i_math math.h
15095 d_modfl_pow32_bug="$undef"
15097 case "$d_longdbl$d_modfl" in
15100 Checking to see whether your modfl() is okay for large values...
15106 if $test "X$d_modflproto" != "X$define"; then
15107 $cat >>try.c <<EOCP
15108 /* Sigh. many current glibcs provide the function, but do not prototype it. */
15109 long double modfl (long double, long double *);
15112 $cat >>try.c <<EOCP
15114 long double nv = 4294967303.15;
15120 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
15124 case "$osname:$gccversion" in
15125 aix:) saveccflags="$ccflags"
15126 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
15129 if eval $compile; then
15132 *" 4294967303.150000 1.150000 4294967302.000000")
15133 echo >&4 "Your modfl() is broken for large values."
15134 d_modfl_pow32_bug="$define"
15136 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
15140 *" 4294967303.150000 0.150000 4294967303.000000")
15141 echo >&4 "Your modfl() seems okay for large values."
15143 *) echo >&4 "I don't understand your modfl() at all."
15149 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
15152 case "$osname:$gccversion" in
15153 aix:) ccflags="$saveccflags" ;; # restore
15158 if $test "$uselongdouble" = "$define"; then
15160 if $test "$d_sqrtl" != "$define"; then
15161 message="$message sqrtl"
15163 if $test "$d_modfl" != "$define"; then
15164 if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
15165 echo "You have both aintl and copysignl, so I can emulate modfl."
15167 message="$message modfl"
15170 if $test "$d_frexpl" != "$define"; then
15171 if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
15172 echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
15174 message="$message frexpl"
15178 if $test "$message" != ""; then
15181 *** You requested the use of long doubles but you do not seem to have
15182 *** the following mathematical functions needed for long double support:
15184 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
15185 *** Cannot continue, aborting.
15193 : see if mprotect exists
15194 set mprotect d_mprotect
15197 : see if msgctl exists
15198 set msgctl d_msgctl
15201 : see if msgget exists
15202 set msgget d_msgget
15205 : see if msgsnd exists
15206 set msgsnd d_msgsnd
15209 : see if msgrcv exists
15210 set msgrcv d_msgrcv
15213 : see how much of the 'msg*(2)' library is present.
15216 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
15217 *"$undef"*) h_msg=false;;
15221 case "`ipcs 2>&1`" in
15222 "SVID messages"*"not configured"*)
15223 echo "Your $osname does not have the msg*(2) configured." >&4
15226 set msgctl d_msgctl
15228 set msgget d_msgget
15230 set msgsnd d_msgsnd
15232 set msgrcv d_msgrcv
15238 : we could also check for sys/ipc.h ...
15239 if $h_msg && $test `./findhdr sys/msg.h`; then
15240 echo "You have the full msg*(2) library." >&4
15243 echo "You don't have the full msg*(2) library." >&4
15249 : Check for msghdr_s
15251 echo "Checking to see if your system supports struct msghdr..." >&4
15252 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
15254 case "$d_msghdr_s" in
15255 "$define") echo "Yes, it does." ;;
15256 *) echo "No, it doesn't." ;;
15260 : see if msync exists
15264 : see if munmap exists
15265 set munmap d_munmap
15268 : see if nice exists
15272 : see if this is a langinfo.h system
15273 set langinfo.h i_langinfo
15276 : see if nl_langinfo exists
15277 set nl_langinfo d_nl_langinfo
15280 : check for volatile keyword
15282 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
15283 $cat >try.c <<'EOCP'
15286 typedef struct _goo_struct goo_struct;
15287 goo_struct * volatile goo = ((goo_struct *)0);
15288 struct _goo_struct {
15293 typedef unsigned short foo_t;
15294 char *volatile foo;
15296 volatile foo_t blech;
15300 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
15302 echo "Yup, it does."
15305 echo "Nope, it doesn't."
15311 : Check basic sizes
15313 $echo "Choosing the C types to be used for Perl's internal types..." >&4
15315 case "$use64bitint:$d_quad:$quadtype" in
15318 uvtype="$uquadtype"
15323 uvtype="unsigned long"
15329 case "$uselongdouble:$d_longdbl" in
15331 nvtype="long double"
15332 nvsize=$longdblsize
15339 $echo "(IV will be "$ivtype", $ivsize bytes)"
15340 $echo "(UV will be "$uvtype", $uvsize bytes)"
15341 $echo "(NV will be "$nvtype", $nvsize bytes)"
15344 #$i_inttypes I_INTTYPES
15346 #include <inttypes.h>
15351 int8_t i = INT8_MAX;
15352 uint8_t u = UINT8_MAX;
15353 printf("int8_t\n");
15356 int16_t i = INT16_MAX;
15357 uint16_t i = UINT16_MAX;
15358 printf("int16_t\n");
15361 int32_t i = INT32_MAX;
15362 uint32_t u = UINT32_MAX;
15363 printf("int32_t\n");
15368 i8type="signed char"
15369 u8type="unsigned char"
15374 '') case "$shortsize" in
15376 u16type="unsigned short"
15384 '') set try -DINT16
15385 if eval $compile; then
15386 case "`$run ./try`" in
15398 '') if $test $shortsize -ge 2; then
15400 u16type="unsigned short"
15408 '') case "$longsize" in
15410 u32type="unsigned long"
15414 *) case "$intsize" in
15416 u32type="unsigned int"
15426 '') set try -DINT32
15427 if eval $compile; then
15428 case "`$run ./try`" in
15440 '') if $test $intsize -ge 4; then
15442 u32type="unsigned int"
15450 '') case "$d_quad:$quadtype" in
15452 i64type="$quadtype"
15453 u64type="$uquadtype"
15461 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
15462 : volatile so that the compiler has to store it out to memory.
15463 if test X"$d_volatile" = X"$define"; then
15468 #$i_stdlib I_STDLIB
15470 #include <stdlib.h>
15472 #include <sys/types.h>
15473 #include <signal.h>
15475 $volatile int bletched = 0;
15476 $signal_t blech(int s) { bletched = 1; }
15481 int n = 8 * $uvsize;
15484 signal(SIGFPE, blech);
15487 for (i = 0; i < n; i++) {
15488 u = u << 1 | ($uvtype)1;
15490 if (($uvtype)d != u)
15494 d = ($nvtype)(u - 1);
15495 if (($uvtype)d != (u - 1))
15502 printf("%d\n", ((i == n) ? -n : i));
15508 d_nv_preserves_uv="$undef"
15509 if eval $compile; then
15510 nv_preserves_uv_bits="`$run ./try`"
15512 case "$nv_preserves_uv_bits" in
15514 nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
15515 $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs." 2>&1
15516 d_nv_preserves_uv="$define"
15518 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs." 2>&1
15519 d_nv_preserves_uv="$undef" ;;
15520 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
15521 nv_preserves_uv_bits="0" ;;
15525 $echo "Checking to find the largest integer value your NVs can hold..." >&4
15526 : volatile so that the compiler has to store it out to memory.
15527 if test X"$d_volatile" = X"$define"; then
15533 typedef $nvtype NV;
15540 while(count < 256) {
15541 $volatile NV up = value + 1.0;
15542 $volatile NV negated = -value;
15543 $volatile NV down = negated - 1.0;
15544 $volatile NV got_up = up - value;
15545 int up_good = got_up == 1.0;
15546 int got_down = down - negated;
15547 int down_good = got_down == -1.0;
15549 if (down_good != up_good) {
15551 "Inconsistency - up %d %f; down %d %f; for 2**%d (%.20f)\n",
15552 up_good, (double) got_up, down_good, (double) got_down,
15553 count, (double) value);
15560 fputs("256.0", stdout);
15563 fputs("2.0", stdout);
15569 fputs("*", stdout);
15575 fprintf(stderr, "Cannot overflow integer range, even at 2**%d (%.20f)\n",
15576 count, (double) value);
15582 nv_overflows_integers_at='0'
15583 if eval $compile; then
15589 The largest integer your NVs can preserve is equal to $xxx
15591 nv_overflows_integers_at="$xxx"
15594 Cannot determine the largest integer value your NVs can hold, unexpected output
15601 Cannot determine the largest integer value your NVs can hold
15608 $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
15609 : volatile so that the compiler has to store it out to memory.
15610 if test X"$d_volatile" = X"$define"; then
15615 #$i_stdlib I_STDLIB
15617 #include <stdlib.h>
15619 #$i_string I_STRING
15621 # include <string.h>
15623 # include <strings.h>
15625 #include <sys/types.h>
15626 #include <signal.h>
15628 $volatile int bletched = 0;
15629 $signal_t blech(int s) { bletched = 1; }
15632 int checkit($nvtype d, char *where) {
15633 unsigned char *p = (char *)&d;
15634 unsigned char *end = p + sizeof(d);
15644 printf("No - %s: 0x", where);
15646 printf ("%02X", *p++);
15651 int main(int argc, char **argv) {
15654 fail += checkit(d, "0.0");
15656 /* The compiler shouldn't be assuming that bletched is 0 */
15659 fail += checkit(d, "bleched");
15662 signal(SIGFPE, blech);
15665 /* Paranoia - the compiler should have no way of knowing that ANSI says
15666 that argv[argc] will always be NULL. Actually, if it did assume this it
15667 would be buggy, as this is C and main() can be called from elsewhere in
15669 d = argv[argc] ? 1 : 0;
15672 printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d);
15675 fail += checkit(d, "ternary");
15677 memset(&d, sizeof(d), argv[argc] ? 1 : 0);
15680 printf("No - memset doesn't give 0.0\n");
15681 /* This might just blow up: */
15682 printf("(gives %g)\n", d);
15688 printf("No - something bleched\n");
15693 printf("No - %d fail(s)\n", fail);
15702 d_nv_zero_is_allbits_zero="$undef"
15703 if eval $compile; then
15709 0.0 is represented as all bits zero in memory
15711 d_nv_zero_is_allbits_zero="$define"
15714 0.0 is not represented as all bits zero in memory
15716 d_nv_zero_is_allbits_zero="$undef"
15721 0.0 is not represented as all bits zero in memory
15723 d_nv_zero_is_allbits_zero="$undef"
15729 : check for off64_t
15731 echo "Checking to see if you have off64_t..." >&4
15733 #include <sys/types.h>
15734 #include <unistd.h>
15735 int main() { off64_t x = 7; }
15738 if eval $compile; then
15740 echo "You have off64_t."
15743 echo "You do not have off64_t."
15744 case "$lseeksize" in
15745 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
15752 : how to create joinable pthreads
15753 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
15755 echo "Checking what constant to use for creating joinable pthreads..." >&4
15756 $cat >try.c <<'EOCP'
15757 #include <pthread.h>
15759 int detachstate = JOINABLE;
15762 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
15763 if eval $compile; then
15764 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
15765 val="$undef" # Yes, undef.
15766 set d_old_pthread_create_joinable
15769 set old_pthread_create_joinable
15772 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
15773 if eval $compile; then
15774 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
15776 set d_old_pthread_create_joinable
15778 val=PTHREAD_CREATE_UNDETACHED
15779 set old_pthread_create_joinable
15782 set try -DJOINABLE=__UNDETACHED
15783 if eval $compile; then
15784 echo "You seem to use __UNDETACHED." >&4
15786 set d_old_pthread_create_joinable
15789 set old_pthread_create_joinable
15792 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
15794 set d_old_pthread_create_joinable
15797 set old_pthread_create_joinable
15804 d_old_pthread_create_joinable="$undef"
15805 old_pthread_create_joinable=""
15808 : see if pause exists
15812 : see if poll exists
15816 : see if readlink exists
15817 set readlink d_readlink
15820 : Check if exe is symlink to abs path of executing program
15824 case "$d_readlink" in
15826 if $issymlink /proc/self/exe ; then
15827 $ls -l /proc/self/exe > reflect
15828 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15829 echo "You have Linux-like /proc/self/exe."
15830 procselfexe='"/proc/self/exe"'
15834 if $issymlink /proc/curproc/file ; then
15835 $ls -l /proc/curproc/file > reflect
15836 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15837 echo "You have BSD-like /proc/curproc/file."
15838 procselfexe='"/proc/curproc/file"'
15848 : backward compatibility for d_hvfork
15849 if test X$d_hvfork != X; then
15850 d_vfork="$d_hvfork"
15853 : see if there is a vfork
15858 d_pseudofork=$undef
15860 : Ok, but do we want to use it. vfork is reportedly unreliable in
15861 : perl on Solaris 2.x, and probably elsewhere.
15865 case "$usevfork" in
15871 Perl can only use a vfork() that doesn't suffer from strict
15872 restrictions on calling functions or modifying global data in
15873 the child. For example, glibc-2.1 contains such a vfork()
15874 that is unsuitable. If your system provides a proper fork()
15875 call, chances are that you do NOT want perl to use vfork().
15878 rp="Do you still want to use vfork()?"
15883 echo "Ok, we won't use vfork()."
15892 $define) usevfork='true';;
15893 *) usevfork='false';;
15896 : see whether the pthread_atfork exists
15898 #include <pthread.h>
15901 #ifdef PTHREAD_ATFORK
15902 pthread_atfork(NULL,NULL,NULL);
15907 : see if pthread_atfork exists
15908 set try -DPTHREAD_ATFORK
15909 if eval $compile; then
15914 case "$usethreads" in
15917 $define) echo 'pthread_atfork found.' >&4 ;;
15918 *) echo 'pthread_atfork NOT found.' >&4 ;;
15921 set d_pthread_atfork
15924 : see if pthread_attr_setscope exists
15925 set pthread_attr_setscope d_pthread_attr_setscope
15928 : see whether the various POSIXish _yields exist
15930 #include <pthread.h>
15936 #ifdef PTHREAD_YIELD
15939 #ifdef PTHREAD_YIELD_NULL
15940 pthread_yield(NULL);
15946 : see if sched_yield exists
15947 set try -DSCHED_YIELD
15948 if eval $compile; then
15950 sched_yield='sched_yield()'
15954 case "$usethreads" in
15957 $define) echo 'sched_yield() found.' >&4 ;;
15958 *) echo 'sched_yield() NOT found.' >&4 ;;
15964 : see if pthread_yield exists
15965 set try -DPTHREAD_YIELD
15966 if eval $compile; then
15968 case "$sched_yield" in
15969 '') sched_yield='pthread_yield()' ;;
15972 set try -DPTHREAD_YIELD_NULL
15973 if eval $compile; then
15975 case "$sched_yield" in
15976 '') sched_yield='pthread_yield(NULL)' ;;
15982 case "$usethreads" in
15985 $define) echo 'pthread_yield() found.' >&4 ;;
15986 *) echo 'pthread_yield() NOT found.' >&4 ;;
15990 set d_pthread_yield
15992 case "$sched_yield" in
15993 '') sched_yield=undef ;;
15997 : see if random_r exists
15998 set random_r d_random_r
16000 case "$d_random_r" in
16002 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16003 case "$d_random_r_proto:$usethreads" in
16004 ":define") d_random_r_proto=define
16005 set d_random_r_proto random_r $hdrs
16009 case "$d_random_r_proto" in
16011 case "$random_r_proto" in
16012 ''|0) try='int random_r(int*, struct random_data*);'
16013 ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
16015 case "$random_r_proto" in
16016 ''|0) try='int random_r(long*, struct random_data*);'
16017 ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
16019 case "$random_r_proto" in
16020 ''|0) try='int random_r(struct random_data*, int32_t*);'
16021 ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
16023 case "$random_r_proto" in
16024 ''|0) d_random_r=undef
16026 echo "Disabling random_r, cannot determine prototype." >&4 ;;
16027 * ) case "$random_r_proto" in
16028 REENTRANT_PROTO*) ;;
16029 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
16031 echo "Prototype: $try" ;;
16034 *) case "$usethreads" in
16035 define) echo "random_r has no prototype, not using it." >&4 ;;
16042 *) random_r_proto=0
16046 : see if readdir and friends exist
16047 set readdir d_readdir
16049 set seekdir d_seekdir
16051 set telldir d_telldir
16053 set rewinddir d_rewinddir
16056 : see if readdir64_r exists
16057 set readdir64_r d_readdir64_r
16059 case "$d_readdir64_r" in
16061 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
16062 case "$d_readdir64_r_proto:$usethreads" in
16063 ":define") d_readdir64_r_proto=define
16064 set d_readdir64_r_proto readdir64_r $hdrs
16068 case "$d_readdir64_r_proto" in
16070 case "$readdir64_r_proto" in
16071 ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
16072 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
16074 case "$readdir64_r_proto" in
16075 ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
16076 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
16078 case "$readdir64_r_proto" in
16079 ''|0) d_readdir64_r=undef
16080 readdir64_r_proto=0
16081 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
16082 * ) case "$readdir64_r_proto" in
16083 REENTRANT_PROTO*) ;;
16084 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
16086 echo "Prototype: $try" ;;
16089 *) case "$usethreads" in
16090 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
16092 d_readdir64_r=undef
16093 readdir64_r_proto=0
16097 *) readdir64_r_proto=0
16101 : see if readdir_r exists
16102 set readdir_r d_readdir_r
16104 case "$d_readdir_r" in
16106 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
16107 case "$d_readdir_r_proto:$usethreads" in
16108 ":define") d_readdir_r_proto=define
16109 set d_readdir_r_proto readdir_r $hdrs
16113 case "$d_readdir_r_proto" in
16115 case "$readdir_r_proto" in
16116 ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
16117 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
16119 case "$readdir_r_proto" in
16120 ''|0) try='int readdir_r(DIR*, struct dirent*);'
16121 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
16123 case "$readdir_r_proto" in
16124 ''|0) d_readdir_r=undef
16126 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
16127 * ) case "$readdir_r_proto" in
16128 REENTRANT_PROTO*) ;;
16129 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
16131 echo "Prototype: $try" ;;
16134 *) case "$usethreads" in
16135 define) echo "readdir_r has no prototype, not using it." >&4 ;;
16142 *) readdir_r_proto=0
16146 : see if readv exists
16150 : see if recvmsg exists
16151 set recvmsg d_recvmsg
16154 : see if rename exists
16155 set rename d_rename
16158 : see if rmdir exists
16162 : see if memory.h is available.
16167 : See if it conflicts with string.h
16173 $cppstdin $cppflags $cppminus < $strings > mem.h
16174 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
16176 echo "We won't be including <memory.h>."
16186 : can bcopy handle overlapping blocks?
16189 case "$d_memmove" in
16190 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
16191 *) case "$d_bcopy" in
16193 echo "Checking to see if bcopy() can do overlapping copies..." >&4
16195 #$i_memory I_MEMORY
16196 #$i_stdlib I_STDLIB
16197 #$i_string I_STRING
16198 #$i_unistd I_UNISTD
16200 $cat >>try.c <<'EOCP'
16203 # include <memory.h>
16206 # include <stdlib.h>
16209 # include <string.h>
16211 # include <strings.h>
16214 # include <unistd.h> /* Needed for NetBSD */
16218 char buf[128], abc[128];
16224 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16225 try to store the string in read-only memory. */
16226 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
16228 for (align = 7; align >= 0; align--) {
16229 for (len = 36; len; len--) {
16231 bcopy(abc, b, len);
16232 for (off = 1; off <= len; off++) {
16233 bcopy(b, b+off, len);
16234 bcopy(b+off, b, len);
16235 if (bcmp(b, abc, len))
16244 if eval $compile_ok; then
16245 if $run ./try 2>/dev/null; then
16246 echo "Yes, it can."
16249 echo "It can't, sorry."
16252 echo "(I can't compile the test program, so we'll assume not...)"
16262 : can memcpy handle overlapping blocks?
16265 case "$d_memmove" in
16266 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
16267 *) case "$d_memcpy" in
16269 echo "Checking to see if memcpy() can do overlapping copies..." >&4
16271 #$i_memory I_MEMORY
16272 #$i_stdlib I_STDLIB
16273 #$i_string I_STRING
16274 #$i_unistd I_UNISTD
16276 $cat >>try.c <<'EOCP'
16279 # include <memory.h>
16282 # include <stdlib.h>
16285 # include <string.h>
16287 # include <strings.h>
16290 # include <unistd.h> /* Needed for NetBSD */
16294 char buf[128], abc[128];
16300 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16301 try to store the string in read-only memory. */
16302 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
16304 for (align = 7; align >= 0; align--) {
16305 for (len = 36; len; len--) {
16307 memcpy(b, abc, len);
16308 for (off = 1; off <= len; off++) {
16309 memcpy(b+off, b, len);
16310 memcpy(b, b+off, len);
16311 if (memcmp(b, abc, len))
16320 if eval $compile_ok; then
16321 if $run ./try 2>/dev/null; then
16322 echo "Yes, it can."
16325 echo "It can't, sorry."
16328 echo "(I can't compile the test program, so we'll assume not...)"
16338 : can memcmp be trusted to compare relative magnitude?
16340 case "$d_memcmp" in
16343 echo "Checking if your memcmp() can compare relative magnitude..." >&4
16345 #$i_memory I_MEMORY
16346 #$i_stdlib I_STDLIB
16347 #$i_string I_STRING
16348 #$i_unistd I_UNISTD
16350 $cat >>try.c <<'EOCP'
16353 # include <memory.h>
16356 # include <stdlib.h>
16359 # include <string.h>
16361 # include <strings.h>
16364 # include <unistd.h> /* Needed for NetBSD */
16370 if ((a < b) && memcmp(&a, &b, 1) < 0)
16376 if eval $compile_ok; then
16377 if $run ./try 2>/dev/null; then
16378 echo "Yes, it can."
16381 echo "No, it can't (it uses signed chars)."
16384 echo "(I can't compile the test program, so we'll assume not...)"
16392 : see if prototype for sbrk is available
16394 set d_sbrkproto sbrk $i_unistd unistd.h
16397 : see if select exists
16398 set select d_select
16401 : see if semctl exists
16402 set semctl d_semctl
16405 : see if semget exists
16406 set semget d_semget
16409 : see if semop exists
16413 : see how much of the 'sem*(2)' library is present.
16416 case "$d_semctl$d_semget$d_semop" in
16417 *"$undef"*) h_sem=false;;
16421 case "`ipcs 2>&1`" in
16422 "SVID messages"*"not configured"*)
16423 echo "Your $osname does not have the sem*(2) configured." >&4
16426 set semctl d_semctl
16428 set semget d_semget
16436 : we could also check for sys/ipc.h ...
16437 if $h_sem && $test `./findhdr sys/sem.h`; then
16438 echo "You have the full sem*(2) library." >&4
16441 echo "You don't have the full sem*(2) library." >&4
16447 : see whether sys/sem.h defines union semun
16449 $cat > try.c <<'END'
16450 #include <sys/types.h>
16451 #include <sys/ipc.h>
16452 #include <sys/sem.h>
16453 int main () { union semun semun; semun.buf = 0; }
16456 if eval $compile; then
16457 echo "You have union semun in <sys/sem.h>." >&4
16460 echo "You do not have union semun in <sys/sem.h>." >&4
16467 : see how to do semctl IPC_STAT
16471 $cat > tryh.h <<END
16474 # define S_IRUSR S_IREAD
16475 # define S_IWUSR S_IWRITE
16476 # define S_IXUSR S_IEXEC
16478 # define S_IRUSR 0400
16479 # define S_IWUSR 0200
16480 # define S_IXUSR 0100
16482 # define S_IRGRP (S_IRUSR>>3)
16483 # define S_IWGRP (S_IWUSR>>3)
16484 # define S_IXGRP (S_IXUSR>>3)
16485 # define S_IROTH (S_IRUSR>>6)
16486 # define S_IWOTH (S_IWUSR>>6)
16487 # define S_IXOTH (S_IXUSR>>6)
16490 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
16491 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
16492 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
16495 : see whether semctl IPC_STAT can use union semun
16496 case "$d_semctl_semun" in
16500 #include <sys/types.h>
16501 #include <sys/ipc.h>
16502 #include <sys/sem.h>
16503 #include <sys/stat.h>
16510 #$d_union_semun HAS_UNION_SEMUN
16513 #ifndef HAS_UNION_SEMUN
16516 struct semid_ds *buf;
16517 unsigned short *array;
16523 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
16524 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16526 struct semid_ds argbuf;
16529 st = semctl(sem, 0, IPC_STAT, arg);
16533 # endif /* IPC_STAT */
16534 printf("semctl IPC_STAT failed: errno = %d\n", errno);
16536 if (semctl(sem, 0, IPC_RMID, arg) != 0)
16537 # endif /* IPC_RMID */
16538 printf("semctl IPC_RMID failed: errno = %d\n", errno);
16540 #endif /* IPC_PRIVATE && ... */
16541 printf("semget failed: errno = %d\n", errno);
16546 if eval $compile; then
16549 semun) val="$define" ;;
16557 case "$d_semctl_semun" in
16559 echo "You can use union semun for semctl IPC_STAT." >&4
16562 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
16567 : see whether semctl IPC_STAT can use struct semid_ds pointer
16568 case "$d_semctl_semid_ds" in
16571 $cat > try.c <<'END'
16572 #include <sys/types.h>
16573 #include <sys/ipc.h>
16574 #include <sys/sem.h>
16575 #include <sys/stat.h>
16583 struct semid_ds arg;
16586 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
16587 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16590 st = semctl(sem, 0, IPC_STAT, &arg);
16592 printf("semid_ds\n");
16594 # endif /* IPC_STAT */
16595 printf("semctl IPC_STAT failed: errno = %d\n", errno);
16597 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
16598 # endif /* IPC_RMID */
16599 printf("semctl IPC_RMID failed: errno = %d\n", errno);
16601 #endif /* IPC_PRIVATE && ... */
16602 printf("semget failed: errno = %d\n", errno);
16608 if eval $compile; then
16611 semid_ds) val="$define" ;;
16615 set d_semctl_semid_ds
16619 case "$d_semctl_semid_ds" in
16621 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
16623 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
16629 # We do not have the full sem*(2) library, so assume we can not
16635 set d_semctl_semid_ds
16641 : see if sendmsg exists
16642 set sendmsg d_sendmsg
16645 : see if setegid exists
16646 set setegid d_setegid
16649 : see if seteuid exists
16650 set seteuid d_seteuid
16653 : see if setgrent exists
16654 set setgrent d_setgrent
16657 : see if setgrent_r exists
16658 set setgrent_r d_setgrent_r
16660 case "$d_setgrent_r" in
16662 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
16663 case "$d_setgrent_r_proto:$usethreads" in
16664 ":define") d_setgrent_r_proto=define
16665 set d_setgrent_r_proto setgrent_r $hdrs
16669 case "$d_setgrent_r_proto" in
16671 case "$setgrent_r_proto" in
16672 ''|0) try='int setgrent_r(FILE**);'
16673 ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
16675 case "$setgrent_r_proto" in
16676 ''|0) try='void setgrent_r(FILE**);'
16677 ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
16679 case "$setgrent_r_proto" in
16680 ''|0) d_setgrent_r=undef
16682 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
16683 * ) case "$setgrent_r_proto" in
16684 REENTRANT_PROTO*) ;;
16685 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
16687 echo "Prototype: $try" ;;
16690 *) case "$usethreads" in
16691 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
16698 *) setgrent_r_proto=0
16702 : see if sethostent exists
16703 set sethostent d_sethent
16706 : see if sethostent_r exists
16707 set sethostent_r d_sethostent_r
16709 case "$d_sethostent_r" in
16711 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16712 case "$d_sethostent_r_proto:$usethreads" in
16713 ":define") d_sethostent_r_proto=define
16714 set d_sethostent_r_proto sethostent_r $hdrs
16718 case "$d_sethostent_r_proto" in
16720 case "$sethostent_r_proto" in
16721 ''|0) try='int sethostent_r(int, struct hostent_data*);'
16722 ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
16724 case "$sethostent_r_proto" in
16725 ''|0) try='void sethostent_r(int, struct hostent_data*);'
16726 ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
16728 case "$sethostent_r_proto" in
16729 ''|0) d_sethostent_r=undef
16730 sethostent_r_proto=0
16731 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
16732 * ) case "$sethostent_r_proto" in
16733 REENTRANT_PROTO*) ;;
16734 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
16736 echo "Prototype: $try" ;;
16739 *) case "$usethreads" in
16740 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
16742 d_sethostent_r=undef
16743 sethostent_r_proto=0
16747 *) sethostent_r_proto=0
16751 : see if setitimer exists
16752 set setitimer d_setitimer
16755 : see if setlinebuf exists
16756 set setlinebuf d_setlinebuf
16759 : see if setlocale exists
16760 set setlocale d_setlocale
16763 : see if locale.h is available
16764 set locale.h i_locale
16767 : see if setlocale_r exists
16768 set setlocale_r d_setlocale_r
16770 case "$d_setlocale_r" in
16772 hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
16773 case "$d_setlocale_r_proto:$usethreads" in
16774 ":define") d_setlocale_r_proto=define
16775 set d_setlocale_r_proto setlocale_r $hdrs
16779 case "$d_setlocale_r_proto" in
16781 case "$setlocale_r_proto" in
16782 ''|0) try='int setlocale_r(int, const char*, char*, int);'
16783 ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
16785 case "$setlocale_r_proto" in
16786 ''|0) d_setlocale_r=undef
16787 setlocale_r_proto=0
16788 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
16789 * ) case "$setlocale_r_proto" in
16790 REENTRANT_PROTO*) ;;
16791 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
16793 echo "Prototype: $try" ;;
16796 *) case "$usethreads" in
16797 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
16799 d_setlocale_r=undef
16800 setlocale_r_proto=0
16804 *) setlocale_r_proto=0
16808 : see if setnetent exists
16809 set setnetent d_setnent
16812 : see if setnetent_r exists
16813 set setnetent_r d_setnetent_r
16815 case "$d_setnetent_r" in
16817 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16818 case "$d_setnetent_r_proto:$usethreads" in
16819 ":define") d_setnetent_r_proto=define
16820 set d_setnetent_r_proto setnetent_r $hdrs
16824 case "$d_setnetent_r_proto" in
16826 case "$setnetent_r_proto" in
16827 ''|0) try='int setnetent_r(int, struct netent_data*);'
16828 ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
16830 case "$setnetent_r_proto" in
16831 ''|0) try='void setnetent_r(int, struct netent_data*);'
16832 ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
16834 case "$setnetent_r_proto" in
16835 ''|0) d_setnetent_r=undef
16836 setnetent_r_proto=0
16837 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
16838 * ) case "$setnetent_r_proto" in
16839 REENTRANT_PROTO*) ;;
16840 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
16842 echo "Prototype: $try" ;;
16845 *) case "$usethreads" in
16846 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
16848 d_setnetent_r=undef
16849 setnetent_r_proto=0
16853 *) setnetent_r_proto=0
16857 : see if setprotoent exists
16858 set setprotoent d_setpent
16861 : see if setpgid exists
16862 set setpgid d_setpgid
16865 : see if setpgrp2 exists
16866 set setpgrp2 d_setpgrp2
16869 : see if setpriority exists
16870 set setpriority d_setprior
16873 : see if setproctitle exists
16874 set setproctitle d_setproctitle
16877 : see if setprotoent_r exists
16878 set setprotoent_r d_setprotoent_r
16880 case "$d_setprotoent_r" in
16882 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16883 case "$d_setprotoent_r_proto:$usethreads" in
16884 ":define") d_setprotoent_r_proto=define
16885 set d_setprotoent_r_proto setprotoent_r $hdrs
16889 case "$d_setprotoent_r_proto" in
16891 case "$setprotoent_r_proto" in
16892 ''|0) try='int setprotoent_r(int, struct protoent_data*);'
16893 ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
16895 case "$setprotoent_r_proto" in
16896 ''|0) try='void setprotoent_r(int, struct protoent_data*);'
16897 ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
16899 case "$setprotoent_r_proto" in
16900 ''|0) d_setprotoent_r=undef
16901 setprotoent_r_proto=0
16902 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
16903 * ) case "$setprotoent_r_proto" in
16904 REENTRANT_PROTO*) ;;
16905 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
16907 echo "Prototype: $try" ;;
16910 *) case "$usethreads" in
16911 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
16913 d_setprotoent_r=undef
16914 setprotoent_r_proto=0
16918 *) setprotoent_r_proto=0
16922 : see if setpwent exists
16923 set setpwent d_setpwent
16926 : see if setpwent_r exists
16927 set setpwent_r d_setpwent_r
16929 case "$d_setpwent_r" in
16931 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
16932 case "$d_setpwent_r_proto:$usethreads" in
16933 ":define") d_setpwent_r_proto=define
16934 set d_setpwent_r_proto setpwent_r $hdrs
16938 case "$d_setpwent_r_proto" in
16940 case "$setpwent_r_proto" in
16941 ''|0) try='int setpwent_r(FILE**);'
16942 ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
16944 case "$setpwent_r_proto" in
16945 ''|0) try='void setpwent_r(FILE**);'
16946 ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
16948 case "$setpwent_r_proto" in
16949 ''|0) d_setpwent_r=undef
16951 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
16952 * ) case "$setpwent_r_proto" in
16953 REENTRANT_PROTO*) ;;
16954 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
16956 echo "Prototype: $try" ;;
16959 *) case "$usethreads" in
16960 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
16967 *) setpwent_r_proto=0
16971 : see if setregid exists
16972 set setregid d_setregid
16974 set setresgid d_setresgid
16977 : see if setreuid exists
16978 set setreuid d_setreuid
16980 set setresuid d_setresuid
16983 : see if setrgid exists
16984 set setrgid d_setrgid
16987 : see if setruid exists
16988 set setruid d_setruid
16991 : see if setservent exists
16992 set setservent d_setsent
16995 : see if setservent_r exists
16996 set setservent_r d_setservent_r
16998 case "$d_setservent_r" in
17000 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
17001 case "$d_setservent_r_proto:$usethreads" in
17002 ":define") d_setservent_r_proto=define
17003 set d_setservent_r_proto setservent_r $hdrs
17007 case "$d_setservent_r_proto" in
17009 case "$setservent_r_proto" in
17010 ''|0) try='int setservent_r(int, struct servent_data*);'
17011 ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
17013 case "$setservent_r_proto" in
17014 ''|0) try='void setservent_r(int, struct servent_data*);'
17015 ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
17017 case "$setservent_r_proto" in
17018 ''|0) d_setservent_r=undef
17019 setservent_r_proto=0
17020 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
17021 * ) case "$setservent_r_proto" in
17022 REENTRANT_PROTO*) ;;
17023 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
17025 echo "Prototype: $try" ;;
17028 *) case "$usethreads" in
17029 define) echo "setservent_r has no prototype, not using it." >&4 ;;
17031 d_setservent_r=undef
17032 setservent_r_proto=0
17036 *) setservent_r_proto=0
17040 : see if setsid exists
17041 set setsid d_setsid
17044 : see if setvbuf exists
17045 set setvbuf d_setvbuf
17048 : see if sfio.h is available
17052 : see if sfio library is available
17063 : Ok, but do we want to use it.
17067 true|$define|[yY]*) dflt='y';;
17070 echo "$package can use the sfio library, but it is experimental."
17071 case "$useperlio" in
17073 echo "For sfio also the PerlIO abstraction layer is needed."
17074 echo "Earlier you said you wouldn't want that."
17077 rp="You seem to have sfio available, do you want to try using it?"
17080 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
17081 useperlio="$define"
17084 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
17089 *) case "$usesfio" in
17090 true|$define|[yY]*)
17091 echo "Sorry, cannot find sfio on this machine." >&4
17092 echo "Ignoring your setting of usesfio=$usesfio." >&4
17101 $define) usesfio='true';;
17102 *) usesfio='false';;
17106 *) : Remove sfio from list of libraries to use
17109 echo "Removing unneeded -lsfio from library list" >&4
17110 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
17113 echo "libs = $libs" >&4
17120 : see if shmctl exists
17121 set shmctl d_shmctl
17124 : see if shmget exists
17125 set shmget d_shmget
17128 : see if shmat exists
17131 : see what shmat returns
17134 $cat >shmat.c <<'END'
17135 #include <sys/shm.h>
17138 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
17143 echo "and it returns ($shmattype)." >&4
17144 : see if a prototype for shmat is available
17145 xxx=`./findhdr sys/shm.h`
17146 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
17147 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
17158 set d_shmatprototype
17161 : see if shmdt exists
17165 : see how much of the 'shm*(2)' library is present.
17168 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
17169 *"$undef"*) h_shm=false;;
17173 case "`ipcs 2>&1`" in
17174 "SVID shared memory"*"not configured"*)
17175 echo "Your $osname does not have the shm*(2) configured." >&4
17178 set shmctl d_shmctl
17180 set shmget d_shmget
17190 : we could also check for sys/ipc.h ...
17191 if $h_shm && $test `./findhdr sys/shm.h`; then
17192 echo "You have the full shm*(2) library." >&4
17195 echo "You don't have the full shm*(2) library." >&4
17201 : see if we have sigaction
17203 if set sigaction val -f d_sigaction; eval $csym; $val; then
17204 echo 'sigaction() found.' >&4
17207 #include <sys/types.h>
17208 #include <signal.h>
17209 #$i_stdlib I_STDLIB
17211 #include <stdlib.h>
17215 struct sigaction act, oact;
17217 oact.sa_handler = 0;
17218 /* so that act and oact are used */
17219 exit(act.sa_flags == 0 && oact.sa_handler == 0);
17223 if eval $compile_ok; then
17226 echo "But you don't seem to have a useable struct sigaction." >&4
17230 echo 'sigaction NOT found.' >&4
17233 set d_sigaction; eval $setvar
17236 : see if this is a sunmath.h system
17237 set sunmath.h i_sunmath
17240 : see if signbit exists
17241 $echo $n "Checking to see if you have signbit() available to work on $nvtype... $c" >&4
17244 #$i_sunmath I_SUNMATH
17248 #ifdef I_SUNMATH /* Solaris special math library */
17249 # include <sunmath.h>
17252 int main(int argc, char **argv)
17256 if ((signbit(x) == 0) && (signbit(y) != 0))
17264 if eval $compile; then
17265 if $run ./try; then
17269 $echo "Signbit seems to be available, but doesn't work as I expected."
17270 $echo "I won't use it." >&4
17281 : see if sigprocmask exists
17282 set sigprocmask d_sigprocmask
17285 : see if sigsetjmp exists
17287 case "$d_sigsetjmp" in
17290 #include <setjmp.h>
17291 #$i_stdlib I_STDLIB
17293 #include <stdlib.h>
17299 if (sigsetjmp(env,1))
17302 siglongjmp(env, 1);
17307 if eval $compile; then
17308 if $run ./try >/dev/null 2>&1; then
17309 echo "POSIX sigsetjmp found." >&4
17313 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
17319 echo "sigsetjmp not found." >&4
17323 *) val="$d_sigsetjmp"
17324 case "$d_sigsetjmp" in
17325 $define) echo "POSIX sigsetjmp found." >&4;;
17326 $undef) echo "sigsetjmp not found." >&4;;
17334 : see if snprintf exists
17335 set snprintf d_snprintf
17338 : see if vsnprintf exists
17339 set vsnprintf d_vsnprintf
17342 case "$d_snprintf-$d_vsnprintf" in
17345 Checking whether your snprintf() and vsnprintf() work okay...
17347 $cat >try.c <<'EOCP'
17348 /* v?snprintf testing logic courtesy of Russ Allbery.
17349 * According to C99:
17350 * - if the buffer is too short it still must be \0-terminated
17351 * - if the buffer is too short the potentially required length
17352 * must be returned and not -1
17353 * - if the buffer is NULL the potentially required length
17354 * must be returned and not -1 or core dump
17357 #include <stdarg.h>
17361 int test (char *format, ...)
17366 va_start (args, format);
17367 count = vsnprintf (buf, sizeof buf, format, args);
17374 return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
17375 && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
17379 if eval $compile; then
17382 0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
17384 Your snprintf() and snprintf() don't seem to be working okay.
17386 d_snprintf="$undef"
17387 d_vsnprintf="$undef"
17391 echo "(I can't seem to compile the test program--assuming they don't)"
17392 d_snprintf="$undef"
17393 d_vsnprintf="$undef"
17399 : see if sockatmark exists
17400 set sockatmark d_sockatmark
17403 : see if prototype for sockatmark is available
17405 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
17408 : see if socks5_init exists
17409 set socks5_init d_socks5_init
17412 : see if sprintf returns the length of the string in the buffer as per ANSI
17413 $echo "Checking whether sprintf returns the length of the string..." >&4
17416 #$i_stdlib I_STDLIB
17418 #include <stdlib.h>
17420 #$i_string I_STRING
17422 # include <string.h>
17424 # include <strings.h>
17433 int check (size_t expect, int test) {
17434 size_t got = strlen(buffer);
17438 printf("expected %ld, got %ld in test %d '%s'\n", (long) expect, (long) got,
17443 int main(int argc, char **argv) {
17446 check(sprintf(buffer, ""), ++test);
17447 check(sprintf(buffer, "%s %s", "perl", "rules"), ++test);
17448 check(sprintf(buffer, "I like %g", atan2(0,-1)), ++test);
17455 d_sprintf_returns_strlen="$undef"
17456 if eval $compile; then
17460 sprintf returns the length of the string (as ANSI says it should)
17462 d_sprintf_returns_strlen="$define"
17465 sprintf does not return the length of the string (how old is this system?)
17467 d_sprintf_returns_strlen="$undef"
17473 : see if srand48_r exists
17474 set srand48_r d_srand48_r
17476 case "$d_srand48_r" in
17478 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17479 case "$d_srand48_r_proto:$usethreads" in
17480 ":define") d_srand48_r_proto=define
17481 set d_srand48_r_proto srand48_r $hdrs
17485 case "$d_srand48_r_proto" in
17487 case "$srand48_r_proto" in
17488 ''|0) try='int srand48_r(long, struct drand48_data*);'
17489 ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
17491 case "$srand48_r_proto" in
17492 ''|0) d_srand48_r=undef
17494 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
17495 * ) case "$srand48_r_proto" in
17496 REENTRANT_PROTO*) ;;
17497 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
17499 echo "Prototype: $try" ;;
17502 *) case "$usethreads" in
17503 define) echo "srand48_r has no prototype, not using it." >&4 ;;
17510 *) srand48_r_proto=0
17514 : see if srandom_r exists
17515 set srandom_r d_srandom_r
17517 case "$d_srandom_r" in
17519 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17520 case "$d_srandom_r_proto:$usethreads" in
17521 ":define") d_srandom_r_proto=define
17522 set d_srandom_r_proto srandom_r $hdrs
17526 case "$d_srandom_r_proto" in
17528 case "$srandom_r_proto" in
17529 ''|0) try='int srandom_r(unsigned int, struct random_data*);'
17530 ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
17532 case "$srandom_r_proto" in
17533 ''|0) d_srandom_r=undef
17535 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
17536 * ) case "$srandom_r_proto" in
17537 REENTRANT_PROTO*) ;;
17538 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
17540 echo "Prototype: $try" ;;
17543 *) case "$usethreads" in
17544 define) echo "srandom_r has no prototype, not using it." >&4 ;;
17551 *) srandom_r_proto=0
17555 : see if prototype for setresgid is available
17557 set d_sresgproto setresgid $i_unistd unistd.h
17560 : see if prototype for setresuid is available
17562 set d_sresuproto setresuid $i_unistd unistd.h
17565 : see if sys/stat.h is available
17566 set sys/stat.h i_sysstat
17569 : see if stat knows about block sizes
17571 echo "Checking to see if your struct stat has st_blocks field..." >&4
17572 set d_statblks stat st_blocks $i_sysstat sys/stat.h
17575 : see if this is a sys/vfs.h system
17576 set sys/vfs.h i_sysvfs
17579 : see if this is a sys/statfs.h system
17580 set sys/statfs.h i_sysstatfs
17583 : Check for statfs_s
17585 echo "Checking to see if your system supports struct statfs..." >&4
17586 set d_statfs_s statfs $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
17588 case "$d_statfs_s" in
17589 "$define") echo "Yes, it does." ;;
17590 *) echo "No, it doesn't." ;;
17594 : see if struct statfs knows about f_flags
17595 case "$d_statfs_s" in
17598 echo "Checking to see if your struct statfs has f_flags field..." >&4
17599 set d_statfs_f_flags statfs f_flags $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h $i_sysvfs sys/vfs.h $i_sysstatfs sys/statfs.h
17603 set d_statfs_f_flags
17607 case "$d_statfs_f_flags" in
17608 "$define") echo "Yes, it does." ;;
17609 *) echo "No, it doesn't." ;;
17612 : Check stream access
17614 Checking how to access stdio streams by file descriptor number...
17616 case "$stdio_stream_array" in
17617 '') $cat >try.c <<EOCP
17620 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
17624 for s in _iob __iob __sF
17626 set try -DSTDIO_STREAM_ARRAY=$s
17627 if eval $compile; then
17628 case "`$run ./try`" in
17629 yes) stdio_stream_array=$s; break ;;
17635 case "$stdio_stream_array" in
17637 I can't figure out how to access stdio streams by file descriptor number.
17639 d_stdio_stream_array="$undef"
17642 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
17644 d_stdio_stream_array="$define"
17648 : see if strcoll exists
17649 set strcoll d_strcoll
17652 : check for structure copying
17654 echo "Checking to see if your C compiler can copy structs..." >&4
17655 $cat >try.c <<'EOCP'
17665 if $cc -c try.c >/dev/null 2>&1 ; then
17667 echo "Yup, it can."
17670 echo "Nope, it can't."
17676 : see if strerror and/or sys_errlist[] exist
17678 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
17679 if set strerror val -f d_strerror; eval $csym; $val; then
17680 echo 'strerror() found.' >&4
17681 d_strerror="$define"
17682 d_strerrm='strerror(e)'
17683 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
17684 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
17685 d_syserrlst="$define"
17687 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
17688 d_syserrlst="$undef"
17690 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
17691 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
17692 echo 'strerror() found in string header.' >&4
17693 d_strerror="$define"
17694 d_strerrm='strerror(e)'
17695 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
17696 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
17697 d_syserrlst="$define"
17699 echo "(You don't appear to have any sys_errlist[], how can this be?)"
17700 d_syserrlst="$undef"
17702 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
17703 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
17704 d_strerror="$undef"
17705 d_syserrlst="$define"
17706 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
17708 echo 'strerror() and sys_errlist[] NOT found.' >&4
17709 d_strerror="$undef"
17710 d_syserrlst="$undef"
17711 d_strerrm='"unknown"'
17715 : see if strerror_r exists
17716 set strerror_r d_strerror_r
17718 case "$d_strerror_r" in
17720 hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
17721 case "$d_strerror_r_proto:$usethreads" in
17722 ":define") d_strerror_r_proto=define
17723 set d_strerror_r_proto strerror_r $hdrs
17727 case "$d_strerror_r_proto" in
17729 case "$strerror_r_proto" in
17730 ''|0) try='int strerror_r(int, char*, size_t);'
17731 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
17733 case "$strerror_r_proto" in
17734 ''|0) try='int strerror_r(int, char*, int);'
17735 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
17737 case "$strerror_r_proto" in
17738 ''|0) try='char* strerror_r(int, char*, size_t);'
17739 ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
17741 case "$strerror_r_proto" in
17742 ''|0) d_strerror_r=undef
17744 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
17745 * ) case "$strerror_r_proto" in
17746 REENTRANT_PROTO*) ;;
17747 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
17749 echo "Prototype: $try" ;;
17752 *) case "$usethreads" in
17753 define) echo "strerror_r has no prototype, not using it." >&4 ;;
17760 *) strerror_r_proto=0
17764 : see if strftime exists
17765 set strftime d_strftime
17768 : see if strlcat exists
17769 set strlcat d_strlcat
17772 : see if strlcpy exists
17773 set strlcpy d_strlcpy
17776 : see if strtod exists
17777 set strtod d_strtod
17780 : see if strtol exists
17781 set strtol d_strtol
17784 : see if strtold exists
17785 set strtold d_strtold
17788 : see if strtoll exists
17789 set strtoll d_strtoll
17792 case "$d_longlong-$d_strtoll" in
17795 Checking whether your strtoll() works okay...
17797 $cat >try.c <<'EOCP'
17800 #define strtoll __strtoll
17803 #define strtoll _strtoll
17806 extern long long int strtoll(char *s, char **, int);
17807 static int bad = 0;
17808 int check(char *s, long long ell, int een) {
17811 gll = strtoll(s, 0, 10);
17812 if (!((gll == ell) && (errno == een)))
17816 check(" 1", 1LL, 0);
17817 check(" 0", 0LL, 0);
17818 check("-1", -1LL, 0);
17819 check("-9223372036854775808", -9223372036854775808LL, 0);
17820 check("-9223372036854775808", -9223372036854775808LL, 0);
17821 check(" 9223372036854775807", 9223372036854775807LL, 0);
17822 check("-9223372036854775808", -9223372036854775808LL, 0);
17823 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
17824 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
17830 if eval $compile; then
17833 ok) echo "Your strtoll() seems to be working okay." ;;
17835 Your strtoll() doesn't seem to be working okay.
17841 echo "(I can't seem to compile the test program--assuming it doesn't)"
17847 : see if strtoq exists
17848 set strtoq d_strtoq
17851 : see if strtoul exists
17852 set strtoul d_strtoul
17855 case "$d_strtoul" in
17858 Checking whether your strtoul() works okay...
17860 $cat >try.c <<'EOCP'
17863 extern unsigned long int strtoul(char *s, char **, int);
17864 static int bad = 0;
17865 void check(char *s, unsigned long eul, int een) {
17868 gul = strtoul(s, 0, 10);
17869 if (!((gul == eul) && (errno == een)))
17873 check(" 1", 1L, 0);
17874 check(" 0", 0L, 0);
17876 case "$longsize" in
17878 $cat >>try.c <<'EOCP'
17879 check("18446744073709551615", 18446744073709551615UL, 0);
17880 check("18446744073709551616", 18446744073709551615UL, ERANGE);
17881 #if 0 /* strtoul() for /^-/ strings is undefined. */
17882 check("-1", 18446744073709551615UL, 0);
17883 check("-18446744073709551614", 2, 0);
17884 check("-18446744073709551615", 1, 0);
17885 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
17886 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
17891 $cat >>try.c <<'EOCP'
17892 check("4294967295", 4294967295UL, 0);
17893 check("4294967296", 4294967295UL, ERANGE);
17894 #if 0 /* strtoul() for /^-/ strings is undefined. */
17895 check("-1", 4294967295UL, 0);
17896 check("-4294967294", 2, 0);
17897 check("-4294967295", 1, 0);
17898 check("-4294967296", 4294967295UL, ERANGE);
17899 check("-4294967297", 4294967295UL, ERANGE);
17904 : Should we write these tests to be more portable by sprintf-ing
17905 : ~0 and then manipulating that char string as input for strtol?
17908 $cat >>try.c <<'EOCP'
17915 if eval $compile; then
17916 case "`$run ./try`" in
17917 ok) echo "Your strtoul() seems to be working okay." ;;
17919 Your strtoul() doesn't seem to be working okay.
17925 echo "(I can't seem to compile the test program--assuming it doesn't)"
17931 : see if strtoull exists
17932 set strtoull d_strtoull
17935 case "$d_longlong-$d_strtoull" in
17938 Checking whether your strtoull() works okay...
17940 $cat >try.c <<'EOCP'
17943 #define strtoull __strtoull
17946 extern unsigned long long int strtoull(char *s, char **, int);
17947 static int bad = 0;
17948 int check(char *s, long long eull, int een) {
17951 gull = strtoull(s, 0, 10);
17952 if (!((gull == eull) && (errno == een)))
17956 check(" 1", 1LL, 0);
17957 check(" 0", 0LL, 0);
17958 check("18446744073709551615", 18446744073709551615ULL, 0);
17959 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
17960 #if 0 /* strtoull() for /^-/ strings is undefined. */
17961 check("-1", 18446744073709551615ULL, 0);
17962 check("-18446744073709551614", 2LL, 0);
17963 check("-18446744073709551615", 1LL, 0);
17964 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17965 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17972 if eval $compile; then
17973 case "`$run ./try`" in
17974 ok) echo "Your strtoull() seems to be working okay." ;;
17976 Your strtoull() doesn't seem to be working okay.
17978 d_strtoull="$undef"
17982 echo "(I can't seem to compile the test program--assuming it doesn't)"
17983 d_strtoull="$undef"
17988 : see if strtouq exists
17989 set strtouq d_strtouq
17992 case "$d_strtouq" in
17995 Checking whether your strtouq() works okay...
17997 $cat >try.c <<'EOCP'
18000 extern unsigned long long int strtouq(char *s, char **, int);
18001 static int bad = 0;
18002 void check(char *s, unsigned long long eull, int een) {
18003 unsigned long long gull;
18005 gull = strtouq(s, 0, 10);
18006 if (!((gull == eull) && (errno == een)))
18010 check(" 1", 1LL, 0);
18011 check(" 0", 0LL, 0);
18012 check("18446744073709551615", 18446744073709551615ULL, 0);
18013 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
18014 #if 0 /* strtouq() for /^-/ strings is undefined. */
18015 check("-1", 18446744073709551615ULL, 0);
18016 check("-18446744073709551614", 2LL, 0);
18017 check("-18446744073709551615", 1LL, 0);
18018 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
18019 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
18027 if eval $compile; then
18028 case "`$run ./try`" in
18029 ok) echo "Your strtouq() seems to be working okay." ;;
18031 Your strtouq() doesn't seem to be working okay.
18037 echo "(I can't seem to compile the test program--assuming it doesn't)"
18043 : see if strxfrm exists
18044 set strxfrm d_strxfrm
18047 : see if symlink exists
18048 set symlink d_symlink
18051 : see if syscall exists
18052 set syscall d_syscall
18055 : see if prototype for syscall is available
18057 set d_syscallproto syscall $i_unistd unistd.h
18060 : see if sysconf exists
18061 set sysconf d_sysconf
18064 : see if system exists
18065 set system d_system
18068 : see if tcgetpgrp exists
18069 set tcgetpgrp d_tcgetpgrp
18072 : see if tcsetpgrp exists
18073 set tcsetpgrp d_tcsetpgrp
18076 : see if prototype for telldir is available
18078 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
18081 : see if time exists
18083 if test "X$d_time" = X -o X"$timetype" = X; then
18084 if set time val -f d_time; eval $csym; $val; then
18085 echo 'time() found.' >&4
18087 rp="What is the type returned by time() on this system?"
18088 set time_t timetype long stdio.h sys/types.h
18091 echo 'time() not found, hope that will do.' >&4
18099 : see if this is a sys/times.h system
18100 set sys/times.h i_systimes
18103 : see if times exists
18105 if set times val -f d_times; eval $csym; $val; then
18106 echo 'times() found.' >&4
18109 case "$i_systimes" in
18110 "$define") inc='sys/times.h';;
18112 rp="What is the type returned by times() on this system?"
18113 set clock_t clocktype long stdio.h sys/types.h $inc
18116 echo 'times() NOT found, hope that will do.' >&4
18121 : see if tmpnam_r exists
18122 set tmpnam_r d_tmpnam_r
18124 case "$d_tmpnam_r" in
18126 hdrs="$i_systypes sys/types.h define stdio.h "
18127 case "$d_tmpnam_r_proto:$usethreads" in
18128 ":define") d_tmpnam_r_proto=define
18129 set d_tmpnam_r_proto tmpnam_r $hdrs
18133 case "$d_tmpnam_r_proto" in
18135 case "$tmpnam_r_proto" in
18136 ''|0) try='char* tmpnam_r(char*);'
18137 ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
18139 case "$tmpnam_r_proto" in
18140 ''|0) d_tmpnam_r=undef
18142 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
18143 * ) case "$tmpnam_r_proto" in
18144 REENTRANT_PROTO*) ;;
18145 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
18147 echo "Prototype: $try" ;;
18150 *) case "$usethreads" in
18151 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
18158 *) tmpnam_r_proto=0
18162 : see if truncate exists
18163 set truncate d_truncate
18166 : see if ttyname_r exists
18167 set ttyname_r d_ttyname_r
18169 case "$d_ttyname_r" in
18171 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
18172 case "$d_ttyname_r_proto:$usethreads" in
18173 ":define") d_ttyname_r_proto=define
18174 set d_ttyname_r_proto ttyname_r $hdrs
18178 case "$d_ttyname_r_proto" in
18180 case "$ttyname_r_proto" in
18181 ''|0) try='int ttyname_r(int, char*, size_t);'
18182 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
18184 case "$ttyname_r_proto" in
18185 ''|0) try='int ttyname_r(int, char*, int);'
18186 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
18188 case "$ttyname_r_proto" in
18189 ''|0) try='char* ttyname_r(int, char*, int);'
18190 ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
18192 case "$ttyname_r_proto" in
18193 ''|0) d_ttyname_r=undef
18195 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
18196 * ) case "$ttyname_r_proto" in
18197 REENTRANT_PROTO*) ;;
18198 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
18200 echo "Prototype: $try" ;;
18203 *) case "$usethreads" in
18204 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
18211 *) ttyname_r_proto=0
18215 : see if tzname[] exists
18217 if set tzname val -a d_tzname; eval $csym; $val; then
18219 echo 'tzname[] found.' >&4
18222 echo 'tzname[] NOT found.' >&4
18227 : Check if is a multiplatform env
18229 next|rhapsody|darwin) multiarch="$define" ;;
18231 case "$multiarch" in
18232 ''|[nN]*) multiarch="$undef" ;;
18235 : check for ordering of bytes in a UV
18237 case "$usecrosscompile$multiarch" in
18240 You seem to be either cross-compiling or doing a multiarchitecture build,
18241 skipping the byteorder check.
18247 case "$byteorder" in
18250 In the following, larger digits indicate more significance. A big-endian
18251 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
18252 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
18253 machines may have weird orders like 3412. A Cray will report 87654321,
18254 an Alpha will report 12345678. If the test program works the default is
18256 I'm now running the test program...
18260 #$i_stdlib I_STDLIB
18262 #include <stdlib.h>
18264 #include <sys/types.h>
18265 typedef $uvtype UV;
18275 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
18277 u.l = (UV)0x04030201;
18278 for (i = 0; i < $uvsize; i++)
18279 printf("%c", u.c[i]+'0');
18286 if eval $compile && $run ./try > /dev/null; then
18289 [1-4][1-4][1-4][1-4]|12345678|87654321)
18290 echo "(The test program ran ok.)"
18291 echo "byteorder=$dflt"
18294 ????|????????) echo "(The test program ran ok.)" ;;
18295 *) echo "(The test program didn't run right for some reason.)" ;;
18300 (I can't seem to compile the test program. Guessing big-endian...)
18303 case "$xxx_prompt" in
18305 rp="What is the order of bytes in $uvtype?"
18318 : Checking 32bit aligndness
18321 Checking to see whether you can access character data unalignedly...
18323 case "$d_u32align" in
18324 '') $cat >try.c <<EOCP
18326 #$i_stdlib I_STDLIB
18328 #include <stdlib.h>
18330 #define U32 $u32type
18331 #define BYTEORDER 0x$byteorder
18333 #include <signal.h>
18335 $signal_t bletch(int s) { exit(4); }
18338 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
18343 if (sizeof(U32) != 4) {
18344 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
18351 signal(SIGBUS, bletch);
18363 for (i = 0; i < 4; i++) {
18364 up = (U32*)(buf + i);
18365 if (! ((*up == 1 << (8*i)) || /* big-endian */
18366 (*up == 1 << (8*(3-i))) /* little-endian */
18370 printf("read failed (%x)\n", *up);
18376 for (i = 0; i < 4; i++) {
18377 up = (U32*)(buf + i);
18379 if (*up != 0xBeef) {
18380 printf("write failed (%x)\n", *up);
18394 if eval $compile_ok; then
18395 echo "(Testing for character data alignment may crash the test. That's okay.)" >&4
18396 $run ./try 2>&1 >/dev/null
18399 You can access character data pretty unalignedly.
18401 d_u32align="$undef"
18404 It seems that you must access character data in an aligned manner.
18406 d_u32align="$define"
18410 rp='Can you access character data at unaligned addresses?'
18414 [yY]*) d_u32align="$undef" ;;
18415 *) d_u32align="$define" ;;
18422 : see if ualarm exists
18423 set ualarm d_ualarm
18426 : see if umask exists
18430 : see if unordered exists
18431 set unordered d_unordered
18434 : see if unsetenv exists
18435 set unsetenv d_unsetenv
18438 : see if usleep exists
18439 set usleep d_usleep
18442 : see if prototype for usleep is available
18444 set d_usleepproto usleep $i_unistd unistd.h
18447 : see if ustat exists
18451 : see if closedir exists
18452 set closedir d_closedir
18455 case "$d_closedir" in
18458 echo "Checking whether closedir() returns a status..." >&4
18460 #$i_dirent I_DIRENT /**/
18461 #$i_sysdir I_SYS_DIR /**/
18462 #$i_sysndir I_SYS_NDIR /**/
18463 #$i_systypes I_SYS_TYPES /**/
18465 #if defined(I_SYS_TYPES)
18466 #include <sys/types.h>
18468 #if defined(I_DIRENT)
18469 #include <dirent.h>
18470 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
18471 #include <sys/dir.h>
18475 #include <sys/ndir.h>
18479 #include <ndir.h> /* may be wrong in the future */
18481 #include <sys/dir.h>
18486 int main() { return closedir(opendir(".")); }
18489 if eval $compile_ok; then
18490 if $run ./try > /dev/null 2>&1 ; then
18491 echo "Yes, it does."
18494 echo "No, it doesn't."
18498 echo "(I can't seem to compile the test program--assuming it doesn't)"
18506 set d_void_closedir
18510 : see if there is a wait4
18514 : see if waitpid exists
18515 set waitpid d_waitpid
18518 : see if wcstombs exists
18519 set wcstombs d_wcstombs
18522 : see if wctomb exists
18523 set wctomb d_wctomb
18526 : see if writev exists
18527 set writev d_writev
18530 : preserve RCS keywords in files with variable substitution, grrr
18535 Revision='$Revision'
18537 : check for alignment requirements
18539 case "$usecrosscompile$multiarch" in
18542 You seem to be either cross-compiling or doing a multiarchitecture build,
18543 skipping the memory alignment check.
18546 case "$alignbytes" in
18547 '') alignbytes=8 ;;
18551 case "$alignbytes" in
18552 '') echo "Checking alignment constraints..." >&4
18553 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
18554 $cat >try.c <<'EOCP'
18555 typedef long double NV;
18558 $cat >try.c <<'EOCP'
18562 $cat >>try.c <<'EOCP'
18570 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
18575 if eval $compile_ok; then
18579 echo "(I can't seem to compile the test program...)"
18582 *) dflt="$alignbytes"
18585 rp="Doubles must be aligned on a how-many-byte boundary?"
18593 : set the base revision
18596 : how do we concatenate cpp tokens here?
18598 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
18599 $cat >cpp_stuff.c <<'EOCP'
18600 #define RCAT(a,b)a/**/b
18601 #define ACAT(a,b)a ## b
18605 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
18606 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
18607 echo "Oh! Smells like ANSI's been here." >&4
18608 echo "We can catify or stringify, separately or together!"
18610 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
18611 echo "Ah, yes! The good old days!" >&4
18612 echo "However, in the good old days we don't know how to stringify and"
18613 echo "catify at the same time."
18617 Hmm, I don't seem to be able to concatenate tokens with your cpp.
18618 You're going to have to edit the values of CAT[2-5] in config.h...
18620 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
18624 : see if this is a db.h system
18630 : Check db version.
18632 echo "Checking Berkeley DB version ..." >&4
18638 #include <sys/types.h>
18640 #$i_stdlib I_STDLIB
18642 #include <stdlib.h>
18645 int main(int argc, char *argv[])
18647 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
18648 int Major, Minor, Patch ;
18649 unsigned long Version ;
18650 (void)db_version(&Major, &Minor, &Patch) ;
18652 printf("%d %d %d %d %d %d\n",
18653 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
18654 Major, Minor, Patch);
18657 printf("You have Berkeley DB Version 2 or greater.\n");
18659 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
18660 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
18661 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
18662 Major, Minor, Patch) ;
18664 /* check that db.h & libdb are compatible */
18665 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
18666 printf("db.h and libdb are incompatible.\n") ;
18670 printf("db.h and libdb are compatible.\n") ;
18672 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
18673 + DB_VERSION_PATCH ;
18675 /* needs to be >= 2.3.4 */
18676 if (Version < 2003004) {
18677 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
18678 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
18684 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
18689 printf("You have Berkeley DB Version 1.\n");
18690 exit(0); /* DB version < 2: the coast is clear. */
18692 exit(1); /* <db.h> not Berkeley DB? */
18698 if eval $compile_ok && $run ./try; then
18699 echo 'Looks OK.' >&4
18701 db_version_major=$1
18702 db_version_minor=$2
18703 db_version_patch=$3
18705 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
18709 : Remove db from list of libraries to use
18710 echo "Removing unusable -ldb from library list" >&4
18711 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
18714 echo "libs = $libs" >&4
18724 : Check the return type needed for hash
18726 echo "Checking return type needed for hash for Berkeley DB ..." >&4
18732 #include <sys/types.h>
18735 #ifndef DB_VERSION_MAJOR
18736 u_int32_t hash_cb (ptr, size)
18744 info.hash = hash_cb;
18748 if $cc $ccflags -c try.c >try.out 2>&1 ; then
18749 if $contains warning try.out >>/dev/null 2>&1 ; then
18752 db_hashtype='u_int32_t'
18755 : XXX Maybe we should just give up here.
18756 db_hashtype=u_int32_t
18758 echo "Help: I can't seem to compile the db test program." >&4
18759 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
18762 echo "Your version of Berkeley DB uses $db_hashtype for hash."
18764 *) db_hashtype=u_int32_t
18769 : Check the return type needed for prefix
18771 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
18777 #include <sys/types.h>
18780 #ifndef DB_VERSION_MAJOR
18781 size_t prefix_cb (key1, key2)
18789 info.prefix = prefix_cb;
18793 if $cc $ccflags -c try.c >try.out 2>&1 ; then
18794 if $contains warning try.out >>/dev/null 2>&1 ; then
18795 db_prefixtype='int'
18797 db_prefixtype='size_t'
18800 db_prefixtype='size_t'
18801 : XXX Maybe we should just give up here.
18803 echo "Help: I can't seem to compile the db test program." >&4
18804 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
18807 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
18809 *) db_prefixtype='size_t'
18813 : How can we generate normalized random numbers ?
18815 echo "Looking for a random number function..." >&4
18816 case "$randfunc" in
18818 if set drand48 val -f; eval $csym; $val; then
18820 echo "Good, found drand48()." >&4
18821 elif set random val -f; eval $csym; $val; then
18823 echo "OK, found random()." >&4
18826 echo "Yick, looks like I have to use rand()." >&4
18837 *-Dmy_rand=*|*-Dmy_srand=*)
18838 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
18839 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
18840 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
18841 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
18845 while $test "$cont"; do
18846 rp="Use which function to generate random numbers?"
18848 if $test "$ans" = "$dflt"; then
18854 if set $ans val -f; eval $csym; $val; then
18858 rp="I cannot find function $ans. Use that name anyway?"
18867 case "$randfunc" in
18869 drand01="drand48()"
18875 case "$randbits" in
18877 echo "Checking to see how many bits your $randfunc() function produces..." >&4
18879 #$i_unistd I_UNISTD
18880 #$i_stdlib I_STDLIB
18883 # include <unistd.h>
18886 # include <stdlib.h>
18891 register unsigned long tmp;
18892 register unsigned long max = 0L;
18894 for (i = 1000; i; i--) {
18895 tmp = (unsigned long) $randfunc();
18896 if (tmp > max) max = tmp;
18898 for (i = 0; max; i++)
18904 if eval $compile_ok; then
18908 echo "(I can't seem to compile the test program...)"
18915 rp="How many bits does your $randfunc() function produce?"
18919 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18920 seedfunc="s$randfunc"
18921 randseedtype=unsigned
18925 rp="How many bits does your $randfunc() function produce?"
18928 seedfunc="s$randfunc"
18929 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18930 if set $seedfunc val -f; eval $csym; $val; then
18931 echo "(Using $seedfunc() to seed random generator)"
18933 echo "(Warning: no $seedfunc() to seed random generator)"
18936 randseedtype=unsigned
18943 : Determine if this is an EBCDIC system
18945 echo "Determining whether or not we are on an EBCDIC system..." >&4
18946 $cat >try.c <<'EOM'
18949 if ('M'==0xd4) return 0;
18956 if eval $compile_ok; then
18957 if $run ./try; then
18958 echo "You seem to speak EBCDIC." >&4
18961 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
18964 echo "I'm unable to compile the test program." >&4
18965 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
18971 : Check how to flush
18974 Checking how to flush all pending stdio output...
18976 # I only know how to find the first 32 possibly open files on SunOS.
18977 # See also hints/sunos_4_1.sh and util.c --AD
18979 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
18981 $cat >>try.c <<EOCP
18983 #$i_stdlib I_STDLIB
18985 #include <stdlib.h>
18987 #$i_unistd I_UNISTD
18989 # include <unistd.h>
18991 #$d_sysconf HAS_SYSCONF
18992 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
18993 #ifdef HAS_STDIO_STREAM_ARRAY
18994 # define STDIO_STREAM_ARRAY $stdio_stream_array
18999 p = fopen("try.out", "w");
19003 # ifdef TRY_FPRINTF
19007 #ifdef TRY_FFLUSH_NULL
19010 #ifdef TRY_FFLUSH_ALL
19012 long open_max = -1;
19013 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
19014 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
19016 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
19017 open_max = sysconf(_SC_OPEN_MAX);
19020 open_max = FOPEN_MAX;
19023 open_max = OPEN_MAX;
19032 # ifdef HAS_STDIO_STREAM_ARRAY
19033 if (open_max > 0) {
19035 for (i = 0; i < open_max; i++)
19036 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
19037 STDIO_STREAM_ARRAY[i]._file < open_max &&
19038 STDIO_STREAM_ARRAY[i]._flag)
19039 fflush(&STDIO_STREAM_ARRAY[i]);
19047 : first we have to find out how _not_ to flush
19049 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
19051 set try -DTRY_FPUTC
19052 if eval $compile; then
19053 $run ./try 2>/dev/null
19056 if $test ! -s try.out -a "X$code" = X42; then
19062 set try -DTRY_FPRINTF
19063 if eval $compile; then
19064 $run ./try 2>/dev/null
19067 if $test ! -s try.out -a "X$code" = X42; then
19068 output=-DTRY_FPRINTF
19074 : check for fflush NULL behaviour
19075 case "$fflushNULL" in
19076 '') set try -DTRY_FFLUSH_NULL $output
19077 if eval $compile; then
19078 $run ./try 2>/dev/null
19081 if $test -s try.out -a "X$code" = X42; then
19082 fflushNULL="`$cat try.out`"
19084 if $test "X$code" != X42; then
19086 (If this test failed, don't worry, we'll try another method shortly.)
19092 case "$fflushNULL" in
19094 Your fflush(NULL) works okay for output streams.
19095 Let's see if it clobbers input pipes...
19097 # As of mid-March 2000 all versions of Solaris appear to have a stdio
19098 # bug that improperly flushes the input end of pipes. So we avoid the
19099 # autoflush on fork/system/exec support for now. :-(
19100 $cat >tryp.c <<EOCP
19103 main(int argc, char **argv)
19109 while ((i = getc(stdin)) != -1
19110 && (*bp++ = i) != '\n'
19111 && bp < &buf[1024])
19114 fprintf(stdout, "%s", buf);
19122 fflushNULL="$define"
19124 if eval $compile; then
19126 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
19127 if cmp tryp.c tryp.out >/dev/null 2>&1; then
19129 fflush(NULL) seems to behave okay with input streams.
19131 fflushNULL="$define"
19134 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
19136 fflushNULL="$undef"
19139 $rm -f core tryp.c tryp.core core.tryp.*
19142 Your fflush(NULL) isn't working (contrary to ANSI C).
19144 fflushNULL="$undef"
19147 Cannot figure out whether your fflush(NULL) works or not.
19148 I'm assuming it doesn't (contrary to ANSI C).
19150 fflushNULL="$undef"
19154 $define|true|[yY]*)
19155 fflushNULL="$define"
19158 fflushNULL="$undef"
19161 : check explicit looping only if NULL did not work, and if the pipe
19162 : bug does not show up on an explicit flush too
19163 case "$fflushNULL" in
19165 $cat >tryp.c <<EOCP
19168 main(int argc, char **argv)
19174 while ((i = getc(stdin)) != -1
19175 && (*bp++ = i) != '\n'
19176 && bp < &buf[1024])
19179 fprintf(stdout, "%s", buf);
19188 if eval $compile; then
19190 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
19191 if cmp tryp.c tryp.out >/dev/null 2>&1; then
19193 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
19195 : now check for fflushall behaviour
19196 case "$fflushall" in
19197 '') set try -DTRY_FFLUSH_ALL $output
19198 if eval $compile; then
19200 (Now testing the other method--but note that this also may fail.)
19202 $run ./try 2>/dev/null
19205 if $test -s try.out -a "X$code" = X42; then
19206 fflushall="`$cat try.out`"
19210 case "$fflushall" in
19212 Whew. Flushing explicitly all the stdio streams works.
19214 fflushall="$define"
19217 Sigh. Flushing explicitly all the stdio streams doesn't work.
19222 Cannot figure out whether flushing stdio streams explicitly works or not.
19223 I'm assuming it doesn't.
19229 "$define"|true|[yY]*)
19230 fflushall="$define"
19238 All is futile. Even fflush(stdin) clobbers input pipes!
19245 $rm -f core tryp.c tryp.core core.tryp.*
19247 *) fflushall="$undef"
19251 case "$fflushNULL$fflushall" in
19254 OK, I give up. I cannot figure out how to flush pending stdio output.
19255 We won't be flushing handles at all before fork/exec/popen.
19261 : Store the full pathname to the ar program for use in the C program
19262 : Respect a hint or command line value for full_ar.
19267 : Store the full pathname to the sed program for use in the C program
19270 : see what type gids are declared as in the kernel
19272 echo "Looking for the type for group ids returned by getgid()."
19273 set gid_t gidtype xxx stdio.h sys/types.h
19277 xxx=`./findhdr sys/user.h`
19278 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
19280 unsigned) dflt="$1 $2" ;;
19284 *) dflt="$gidtype";;
19287 gid_t) echo "gid_t found." ;;
19288 *) rp="What is the type for group ids returned by getgid()?"
19294 : Check the size of GID
19297 *_t) zzz="$gidtype" ;;
19300 echo "Checking the size of $zzz..." >&4
19302 #include <sys/types.h>
19304 #$i_stdlib I_STDLIB
19306 #include <stdlib.h>
19309 printf("%d\n", (int)sizeof($gidtype));
19314 if eval $compile_ok; then
19318 echo "(I can't execute the test program--guessing $gidsize.)" >&4
19321 echo "Your $zzz is $gidsize bytes long."
19326 echo "(I can't compile the test program--guessing $gidsize.)" >&4
19330 : Check if GID is signed
19333 *_t) zzz="$gidtype" ;;
19336 echo "Checking the sign of $zzz..." >&4
19338 #include <sys/types.h>
19349 if eval $compile; then
19353 echo "(I can't execute the test program--guessing unsigned.)" >&4
19357 1) echo "Your $zzz is unsigned." ;;
19358 -1) echo "Your $zzz is signed." ;;
19364 echo "(I can't compile the test program--guessing unsigned.)" >&4
19368 : Check 64bit sizes
19371 if $test X"$quadtype" != X; then
19373 echo "Checking how to print 64-bit integers..." >&4
19375 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
19376 $cat >try.c <<'EOCP'
19377 #include <sys/types.h>
19380 int q = 12345678901;
19381 printf("%ld\n", q);
19385 if eval $compile; then
19389 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
19390 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
19391 echo "We will use %d."
19397 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
19398 $cat >try.c <<'EOCP'
19399 #include <sys/types.h>
19402 long q = 12345678901;
19403 printf("%ld\n", q);
19407 if eval $compile; then
19411 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
19412 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
19413 echo "We will use %ld."
19419 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
19420 $cat >try.c <<'EOCP'
19421 #include <sys/types.h>
19422 #include <inttypes.h>
19425 int64_t q = 12345678901;
19426 printf("%" PRId64 "\n", q);
19430 if eval $compile; then
19434 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
19435 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
19436 echo "We will use the C9X style."
19442 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19444 #include <sys/types.h>
19447 $quadtype q = 12345678901;
19448 printf("%Ld\n", q);
19452 if eval $compile; then
19456 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
19457 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
19458 echo "We will use %Ld."
19464 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
19465 $cat >try.c <<'EOCP'
19466 #include <sys/types.h>
19469 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
19470 printf("%lld\n", q);
19474 if eval $compile; then
19478 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
19479 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
19480 echo "We will use the %lld style."
19486 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19488 #include <sys/types.h>
19491 $quadtype q = 12345678901;
19492 printf("%qd\n", q);
19496 if eval $compile; then
19500 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
19501 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
19502 echo "We will use %qd."
19508 if $test X"$sPRId64" = X; then
19509 echo "Cannot figure out how to print 64-bit integers." >&4
19516 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
19517 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
19519 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
19520 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
19524 : Check format strings for internal types
19526 $echo "Checking the format strings to be used for Perl's internal types..." >&4
19528 if $test X"$ivsize" = X8; then
19529 ivdformat="$sPRId64"
19530 uvuformat="$sPRIu64"
19531 uvoformat="$sPRIo64"
19532 uvxformat="$sPRIx64"
19533 uvXUformat="$sPRIXU64"
19535 if $test X"$ivsize" = X"$longsize"; then
19542 if $test X"$ivsize" = X"$intsize"; then
19550 if $test X"$ivsize" = X"$shortsize"; then
19561 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
19562 nveformat="$sPRIeldbl"
19563 nvfformat="$sPRIfldbl"
19564 nvgformat="$sPRIgldbl"
19565 nvEUformat="$sPRIEUldbl"
19566 nvFUformat="$sPRIFUldbl"
19567 nvGUformat="$sPRIGUldbl"
19577 case "$ivdformat" in
19578 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
19583 : Check format string for GID
19586 $echo "Checking the format string to be used for gids..." >&4
19589 -1) if $test X"$gidsize" = X"$ivsize"; then
19590 gidformat="$ivdformat"
19592 if $test X"$gidsize" = X"$longsize"; then
19595 if $test X"$gidsize" = X"$intsize"; then
19598 if $test X"$gidsize" = X"$shortsize"; then
19605 *) if $test X"$gidsize" = X"$uvsize"; then
19606 gidformat="$uvuformat"
19608 if $test X"$gidsize" = X"$longsize"; then
19611 if $test X"$gidsize" = X"$intsize"; then
19614 if $test X"$gidsize" = X"$shortsize"; then
19623 : see if getgroups exists
19624 set getgroups d_getgrps
19627 : see if setgroups exists
19628 set setgroups d_setgrps
19631 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
19633 case "$d_getgrps$d_setgrps" in
19635 case "$groupstype" in
19636 '') dflt="$gidtype" ;;
19637 *) dflt="$groupstype" ;;
19640 What type of pointer is the second argument to getgroups() and setgroups()?
19641 Usually this is the same as group ids, $gidtype, but not always.
19644 rp='What type pointer is the second argument to getgroups() and setgroups()?'
19648 *) groupstype="$gidtype";;
19651 : MAD = Misc Attribute Definition
19653 if $test $patchlevel -lt 9; then
19654 : MAD is not available in 5.8.x or earlier.
19658 $define|true|[yY]*) dflt='y' ;;
19663 Would you like to build with Misc Attribute Decoration? This is development
19664 work leading to a Perl 5 to Perl 6 convertor, which imposes a space and speed
19665 overhead on the interpreter.
19667 If this doesn't make any sense to you, just accept the default '$dflt'.
19669 rp='Build Perl with MAD?'
19674 madlyh='madly.h madly.act madly.tab'
19676 madlyobj="madly$_o" ;;
19685 : check whether make sets MAKE
19687 echo "Checking if your $make program sets \$(MAKE)..." >&4
19688 case "$make_set_make" in
19690 $sed 's/^X //' > testmake.mak << 'EOF'
19692 X @echo 'maketemp="$(MAKE)"'
19694 case "`$make -f testmake.mak 2>/dev/null`" in
19695 *maketemp=*) make_set_make='#' ;;
19696 *) make_set_make="MAKE=$make" ;;
19698 $rm -f testmake.mak
19701 case "$make_set_make" in
19702 '#') echo "Yup, it does.";;
19703 *) echo "Nope, it doesn't.";;
19706 : see what type is used for mode_t
19707 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
19708 set mode_t modetype int stdio.h sys/types.h
19711 : see if we need va_copy
19713 case "$i_stdarg" in
19716 #include <stdarg.h>
19718 #$i_stdlib I_STDLIB
19720 #include <stdlib.h>
19722 #include <signal.h>
19725 ivfprintf(FILE *f, const char *fmt, va_list *valp)
19727 return vfprintf(f, fmt, *valp);
19731 myvfprintf(FILE *f, const char *fmt, va_list val)
19733 return ivfprintf(f, fmt, &val);
19737 myprintf(char *fmt, ...)
19740 va_start(val, fmt);
19741 return myvfprintf(stdout, fmt, val);
19745 main(int ac, char **av)
19747 signal(SIGSEGV, exit);
19749 myprintf("%s%cs all right, then\n", "that", '\'');
19754 if eval $compile && $run ./try 2>&1 >/dev/null; then
19755 case "`$run ./try`" in
19756 "that's all right, then")
19762 yes) echo "It seems that you don't need va_copy()." >&4
19763 need_va_copy="$undef"
19765 *) echo "It seems that va_copy() or similar will be needed." >&4
19766 need_va_copy="$define"
19771 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
19775 : see what type is used for size_t
19776 rp="What is the type used for the length parameter for string functions?"
19777 set size_t sizetype 'unsigned int' stdio.h sys/types.h
19780 : check for type of arguments to gethostbyaddr.
19781 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
19782 case "$d_gethbyaddr" in
19786 Checking to see what type of arguments are accepted by gethostbyaddr().
19788 hdrs="$define sys/types.h
19789 $d_socket sys/socket.h
19790 $i_niin netinet/in.h
19792 $i_unistd unistd.h"
19793 : The first arg can 'char *' or 'void *'
19794 : The second arg is some of integral type
19795 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
19796 for yyy in size_t long int; do
19797 case "$netdb_host_type" in
19798 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
19799 if ./protochk "$try" $hdrs; then
19800 echo "Your system accepts $xxx for the first arg."
19801 echo "...and $yyy for the second arg."
19802 netdb_host_type="$xxx"
19803 netdb_hlen_type="$yyy"
19809 : In case none of those worked, prompt the user.
19810 case "$netdb_host_type" in
19811 '') rp='What is the type for the 1st argument to gethostbyaddr?'
19814 netdb_host_type=$ans
19815 rp='What is the type for the 2nd argument to gethostbyaddr?'
19818 netdb_hlen_type=$ans
19822 *) : no gethostbyaddr, so pick harmless defaults
19823 netdb_host_type='char *'
19824 netdb_hlen_type="$sizetype"
19827 # Remove the "const" if needed. -- but then we'll have a
19829 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
19832 : check for type of argument to gethostbyname.
19833 if test "X$netdb_name_type" = X ; then
19834 case "$d_gethbyname" in
19838 Checking to see what type of argument is accepted by gethostbyname().
19840 hdrs="$define sys/types.h
19841 $d_socket sys/socket.h
19842 $i_niin netinet/in.h
19844 $i_unistd unistd.h"
19845 for xxx in "const char *" "char *"; do
19846 case "$netdb_name_type" in
19847 '') try="extern struct hostent *gethostbyname($xxx);"
19848 if ./protochk "$try" $hdrs; then
19849 echo "Your system accepts $xxx."
19850 netdb_name_type="$xxx"
19855 : In case none of those worked, prompt the user.
19856 case "$netdb_name_type" in
19857 '') rp='What is the type for the 1st argument to gethostbyname?'
19860 netdb_name_type=$ans
19864 *) : no gethostbyname, so pick harmless default
19865 netdb_name_type='char *'
19870 : check for type of 1st argument to getnetbyaddr.
19871 if test "X$netdb_net_type" = X ; then
19872 case "$d_getnbyaddr" in
19876 Checking to see what type of 1st argument is accepted by getnetbyaddr().
19878 hdrs="$define sys/types.h
19879 $d_socket sys/socket.h
19880 $i_niin netinet/in.h
19882 $i_unistd unistd.h"
19883 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
19884 case "$netdb_net_type" in
19885 '') try="extern struct netent *getnetbyaddr($xxx, int);"
19886 if ./protochk "$try" $hdrs; then
19887 echo "Your system accepts $xxx."
19888 netdb_net_type="$xxx"
19893 : In case none of those worked, prompt the user.
19894 case "$netdb_net_type" in
19895 '') rp='What is the type for the 1st argument to getnetbyaddr?'
19898 netdb_net_type=$ans
19902 *) : no getnetbyaddr, so pick harmless default
19903 netdb_net_type='long'
19907 : locate the preferred pager for this system
19914 [a-zA-Z]:/*) dflt=$pg;;
19918 [a-zA-Z]:/*) dflt=$more;;
19922 [a-zA-Z]:/*) dflt=$less;;
19925 '') dflt=/usr/ucb/more;;
19929 : Instruct ./getfile to trust the hinted or previous pager value,
19930 : even if it does not begin with a slash. For example, on os2,
19931 : pager might be cmd /c more. See comments in UU/getfile.
19936 rp='What pager is used on your system?'
19940 : see what type pids are declared as in the kernel
19941 rp="What is the type of process ids on this system?"
19942 set pid_t pidtype int stdio.h sys/types.h
19945 : see if ar generates random libraries by itself
19947 echo "Checking how to generate random libraries on your machine..." >&4
19948 echo 'int bar1() { return bar2(); }' > bar1.c
19949 echo 'int bar2() { return 2; }' > bar2.c
19951 #$i_stdlib I_STDLIB
19953 #include <stdlib.h>
19955 int main() { printf("%d\n", bar1()); exit(0); }
19957 $cc $ccflags -c bar1.c >/dev/null 2>&1
19958 $cc $ccflags -c bar2.c >/dev/null 2>&1
19959 $cc $ccflags -c foo.c >/dev/null 2>&1
19960 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
19961 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19962 $run ./foobar >/dev/null 2>&1; then
19963 echo "$ar appears to generate random libraries itself."
19965 if [ "X$ranlib" = "X" ]; then
19968 elif $ar s bar$_a >/dev/null 2>&1 &&
19969 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19970 $run ./foobar >/dev/null 2>&1; then
19971 echo "a table of contents needs to be added with '$ar s'."
19974 elif $ar ts bar$_a >/dev/null 2>&1 &&
19975 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19976 $run ./foobar >/dev/null 2>&1; then
19977 echo "a table of contents needs to be added with '$ar ts'."
19984 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
19985 $test -f $ranlib || ranlib=''
19988 if $test -n "$ranlib"; then
19989 echo "your system has '$ranlib'; we'll use that."
19992 echo "your system doesn't seem to support random libraries"
19993 echo "so we'll use lorder and tsort to order the libraries."
20000 : check for type of arguments to select.
20001 case "$selecttype" in
20002 '') case "$d_select" in
20006 Checking to see what type of arguments are accepted by select().
20008 hdrs="$define sys/types.h
20009 $i_systime sys/time.h
20010 $i_sysselct sys/select.h
20011 $d_socket sys/socket.h"
20012 : The first arg can be int, unsigned, or size_t
20013 : The last arg may or may not be 'const'
20015 : void pointer has been seen but using that
20016 : breaks the selectminbits test
20017 for xxx in 'fd_set *' 'int *'; do
20018 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
20019 for tmo in 'struct timeval *' 'const struct timeval *'; do
20021 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
20022 if ./protochk "$try" $hdrs; then
20023 echo "Your system accepts $xxx."
20032 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
20033 case "$d_fd_set" in
20034 $define) dflt="fd_set *" ;;
20043 *) : no select, so pick a harmless default
20050 : check for the select 'width'
20051 case "$selectminbits" in
20052 '') safebits=`expr $ptrsize \* 8`
20053 case "$d_select" in
20057 Checking to see on how many bits at a time your select() operates...
20060 #include <sys/types.h>
20062 #$i_systime I_SYS_TIME
20063 #$i_systimek I_SYS_TIME_KERNEL
20068 # ifdef I_SYS_TIME_KERNEL
20071 # include <sys/time.h>
20072 # ifdef I_SYS_TIME_KERNEL
20076 #$i_sysselct I_SYS_SELECT
20077 #ifdef I_SYS_SELECT
20078 #include <sys/select.h>
20080 #$d_socket HAS_SOCKET
20082 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
20085 #$i_stdlib I_STDLIB
20087 #include <stdlib.h>
20090 #define S sizeof(*(b))
20092 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
20093 #define NBITS (NBYTES * 8)
20095 char *s = (char *)malloc(NBYTES);
20104 fp = fopen("try.c", "r");
20110 b = ($selecttype)s;
20111 for (i = 0; i < NBITS; i++)
20115 select(fd + 1, b, 0, 0, &t);
20116 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
20118 printf("%d\n", i + 1);
20123 if eval $compile_ok; then
20124 selectminbits=`$run ./try`
20125 case "$selectminbits" in
20127 Cannot figure out on how many bits at a time your select() operates.
20128 I'll play safe and guess it is $safebits bits.
20130 selectminbits=$safebits
20131 bits="$safebits bits"
20134 *) bits="$selectminbits bits" ;;
20136 echo "Your select() operates on $bits at a time." >&4
20138 rp='What is the minimum number of bits your select() operates on?'
20139 case "$byteorder" in
20140 12345678) dflt=64 ;;
20146 selectminbits="$val"
20150 *) : no select, so pick a harmless default
20151 selectminbits=$safebits
20157 : Trace out the files included by signal.h, then look for SIGxxx names.
20158 if [ "X$fieldn" = X ]; then
20159 : Just make some guesses. We check them later.
20160 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
20162 xxx=`echo '#include <signal.h>' |
20163 $cppstdin $cppminus $cppflags 2>/dev/null |
20164 $grep '^[ ]*#.*include' |
20165 $awk "{print \\$$fieldn}" | $sed 's!"!!g' |\
20166 $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
20169 for xx in $xxx /dev/null ; do
20170 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
20172 case "$xxxfiles" in
20173 '') xxxfiles=`./findhdr signal.h` ;;
20176 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
20177 print substr($2, 4, 20)
20179 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
20180 print substr($3, 4, 20)
20182 : Append some common names just in case the awk scan failed.
20183 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
20184 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
20185 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
20186 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
20187 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
20189 : generate a few handy files for later
20190 $cat > signal.c <<EOCP
20191 #include <sys/types.h>
20192 #include <signal.h>
20193 #$i_stdlib I_STDLIB
20195 #include <stdlib.h>
20200 /* Strange style to avoid deeply-nested #if/#else/#endif */
20203 # define NSIG (_NSIG)
20209 # define NSIG (SIGMAX+1)
20215 # define NSIG (SIG_MAX+1)
20221 # define NSIG (_SIG_MAX+1)
20227 # define NSIG (MAXSIG+1)
20233 # define NSIG (MAX_SIG+1)
20238 # ifdef SIGARRAYSIZE
20239 # define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
20245 # define NSIG (_sys_nsig) /* Solaris 2.5 */
20249 /* Default to some arbitrary number that's big enough to get most
20250 of the common signals.
20256 printf("NSIG %d\n", NSIG);
20262 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
20264 printf "#ifdef SIG"; printf $1; printf "\n"
20265 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
20266 printf $1; printf ");\n"
20270 printf "#endif /* JUST_NSIG */\n";
20271 printf "exit(0);\n}\n";
20274 $cat >signal.awk <<'EOP'
20275 BEGIN { ndups = 0 }
20276 $1 ~ /^NSIG$/ { nsig = $2 }
20277 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
20278 if ($2 > maxsig) { maxsig = $2 }
20279 if (sig_name[$2]) {
20280 dup_name[ndups] = $1
20281 dup_num[ndups] = $2
20293 printf("NSIG %d\n", nsig);
20294 for (n = 1; n < nsig; n++) {
20296 printf("%s %d\n", sig_name[n], sig_num[n])
20299 printf("NUM%d %d\n", n, n)
20302 for (n = 0; n < ndups; n++) {
20303 printf("%s %d\n", dup_name[n], dup_num[n])
20307 $cat >signal_cmd <<EOS
20309 if $test -s signal.lst; then
20310 echo "Using your existing signal.lst file"
20315 $cat >>signal_cmd <<'EOS'
20318 if eval $compile_ok; then
20319 $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) |\
20320 $uniq | $awk -f signal.awk >signal.lst
20322 echo "(I can't seem be able to compile the whole test program)" >&4
20323 echo "(I'll try it in little pieces.)" >&4
20324 set signal -DJUST_NSIG
20325 if eval $compile_ok; then
20326 $run ./signal$_exe > signal.nsg
20329 echo "I can't seem to figure out how many signals you have." >&4
20330 echo "Guessing 50." >&4
20331 echo 'NSIG 50' > signal.nsg
20333 : Now look at all the signal names, one at a time.
20334 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
20335 $cat > signal.c <<EOCP
20336 #include <sys/types.h>
20337 #include <signal.h>
20340 printf("$xx %d\n", SIG${xx});
20345 if eval $compile; then
20346 echo "SIG${xx} found."
20347 $run ./signal$_exe >> signal.ls1
20349 echo "SIG${xx} NOT found."
20352 if $test -s signal.ls1; then
20353 $cat signal.nsg signal.ls1 |
20354 $sort -n | $uniq | $awk -f signal.awk >signal.lst
20358 if $test -s signal.lst; then
20361 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
20362 echo 'kill -l' >signal
20363 set X `csh -f <signal`
20367 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
20369 echo $@ | $tr ' ' $trnl | \
20370 $awk '{ printf "%s %d\n", $1, ++s; }
20371 END { printf "NSIG %d\n", ++s }' >signal.lst
20373 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
20375 chmod a+x signal_cmd
20376 $eunicefix signal_cmd
20378 : generate list of signal names
20380 case "$sig_name_init" in
20382 *) case "$sig_num_init" in
20383 ''|*,*) doinit=yes ;;
20388 echo "Generating a list of signal names and numbers..." >&4
20390 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
20391 sig_name=`$awk 'BEGIN { printf "ZERO " }
20392 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
20393 sig_num=`$awk 'BEGIN { printf "0 " }
20394 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
20395 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
20396 !/^NSIG/ { printf "\"%s\", ", $1 }
20397 END { printf "0\n" }' signal.lst`
20398 sig_num_init=`$awk 'BEGIN { printf "0, " }
20399 !/^NSIG/ { printf "%d, ", $2}
20400 END { printf "0\n"}' signal.lst`
20403 echo "The following $sig_count signals are available:"
20405 echo $sig_name | $awk \
20406 'BEGIN { linelen = 0 }
20408 for (i = 1; i <= NF; i++) {
20409 name = "SIG" $i " "
20410 linelen = linelen + length(name)
20411 if (linelen > 70) {
20413 linelen = length(name)
20419 sig_size=`echo $sig_name | awk '{print NF}'`
20420 $rm -f signal signal.c signal.awk signal.lst signal_cmd
20422 : Check size of size
20424 case "$sizetype" in
20425 *_t) zzz="$sizetype" ;;
20426 *) zzz="filesize" ;;
20428 echo "Checking the size of $zzz..." >&4
20430 #include <sys/types.h>
20432 #$i_stdlib I_STDLIB
20434 #include <stdlib.h>
20437 printf("%d\n", (int)sizeof($sizetype));
20442 if eval $compile_ok; then
20446 echo "(I can't execute the test program--guessing $sizesize.)" >&4
20449 echo "Your $zzz size is $sizesize bytes."
20454 echo "(I can't compile the test program--guessing $sizesize.)" >&4
20458 : check for socklen_t
20460 echo "Checking to see if you have socklen_t..." >&4
20462 #include <sys/types.h>
20463 #$d_socket HAS_SOCKET
20465 #include <sys/socket.h>
20467 int main() { socklen_t x = 16; }
20470 if eval $compile; then
20472 echo "You have socklen_t."
20475 echo "You do not have socklen_t."
20476 case "$sizetype" in
20477 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
20484 : see if this is a socks.h system
20485 set socks.h i_socks
20488 : check for type of the size argument to socket calls
20489 case "$d_socket" in
20493 Checking to see what type is the last argument of accept().
20496 case "$d_socklen_t" in
20497 "$define") yyy="$yyy socklen_t"
20499 yyy="$yyy $sizetype int long unsigned"
20500 for xxx in $yyy; do
20501 case "$socksizetype" in
20502 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
20503 case "$usesocks" in
20505 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
20506 echo "Your system accepts '$xxx *' for the last argument of accept()."
20507 socksizetype="$xxx"
20510 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
20511 echo "Your system accepts '$xxx *' for the last argument of accept()."
20512 socksizetype="$xxx"
20519 : In case none of those worked, prompt the user.
20520 case "$socksizetype" in
20521 '') rp='What is the type for socket address structure sizes?'
20528 *) : no sockets, so pick relatively harmless default
20533 : see what type is used for signed size_t
20534 set ssize_t ssizetype int stdio.h sys/types.h
20539 #$i_stdlib I_STDLIB
20541 #include <stdlib.h>
20543 #include <sys/types.h>
20544 #define Size_t $sizetype
20545 #define SSize_t $dflt
20548 if (sizeof(Size_t) == sizeof(SSize_t))
20550 else if (sizeof(Size_t) == sizeof(int))
20559 if eval $compile_ok && $run ./try > /dev/null; then
20560 ssizetype=`$run ./try`
20561 echo "I'll be using $ssizetype for functions returning a byte count." >&4
20564 Help! I can't compile and run the ssize_t test program: please enlighten me!
20565 (This is probably a misconfiguration in your system or libraries, and
20566 you really ought to fix it. Still, I'll try anyway.)
20568 I need a type that is the same size as $sizetype, but is guaranteed to
20569 be signed. Common values are ssize_t, int and long.
20572 rp="What signed type is the same size as $sizetype?"
20578 : see what type of char stdio uses.
20580 echo '#include <stdio.h>' > stdio.c
20581 $cppstdin $cppminus < stdio.c > stdioh
20582 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
20583 echo "Your stdio uses unsigned chars." >&4
20584 stdchar="unsigned char"
20586 echo "Your stdio uses signed chars." >&4
20589 $rm -f stdio.* stdioh
20591 : see what type uids are declared as in the kernel
20593 echo "Looking for the type for user ids returned by getuid()."
20594 set uid_t uidtype xxx stdio.h sys/types.h
20598 xxx=`./findhdr sys/user.h`
20599 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
20601 unsigned) dflt="$1 $2" ;;
20605 *) dflt="$uidtype";;
20608 uid_t) echo "uid_t found." ;;
20609 *) rp="What is the type for user ids returned by getuid()?"
20615 : Check size of UID
20618 *_t) zzz="$uidtype" ;;
20621 echo "Checking the size of $zzz..." >&4
20623 #include <sys/types.h>
20625 #$i_stdlib I_STDLIB
20627 #include <stdlib.h>
20630 printf("%d\n", (int)sizeof($uidtype));
20635 if eval $compile_ok; then
20639 echo "(I can't execute the test program--guessing $uidsize.)" >&4
20642 echo "Your $zzz is $uidsize bytes long."
20647 echo "(I can't compile the test program--guessing $uidsize.)" >&4
20650 : Check if UID is signed
20653 *_t) zzz="$uidtype" ;;
20656 echo "Checking the sign of $zzz..." >&4
20658 #include <sys/types.h>
20669 if eval $compile; then
20673 echo "(I can't execute the test program--guessing unsigned.)" >&4
20677 1) echo "Your $zzz is unsigned." ;;
20678 -1) echo "Your $zzz is signed." ;;
20684 echo "(I can't compile the test program--guessing unsigned.)" >&4
20688 : Check format string for UID
20690 $echo "Checking the format string to be used for uids..." >&4
20693 -1) if $test X"$uidsize" = X"$ivsize"; then
20694 uidformat="$ivdformat"
20696 if $test X"$uidsize" = X"$longsize"; then
20699 if $test X"$uidsize" = X"$intsize"; then
20702 if $test X"$uidsize" = X"$shortsize"; then
20709 *) if $test X"$uidsize" = X"$uvsize"; then
20710 uidformat="$uvuformat"
20712 if $test X"$uidsize" = X"$longsize"; then
20715 if $test X"$uidsize" = X"$intsize"; then
20718 if $test X"$uidsize" = X"$shortsize"; then
20727 : Check if site customization support was requested
20728 case "$usesitecustomize" in
20729 $define|true|[Yy]*)
20730 usesitecustomize="$define"
20733 usesitecustomize="$undef"
20737 : determine compiler compiler
20746 if $test -f "$byacc$_exe"; then
20748 comp="byacc or $comp"
20750 if $test -f "$bison$_exe"; then
20751 comp="$comp or bison -y"
20753 rp="Which compiler compiler ($comp) shall I use?"
20762 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
20768 : see if this is a assert.h system
20769 set assert.h i_assert
20772 : see if this is a fp.h system
20776 : see if this is a fp_class.h system
20777 set fp_class.h i_fp_class
20780 : see if gdbm.h is available
20785 : see if gdbm_open exists
20786 set gdbm_open d_gdbm_open
20788 case "$d_gdbm_open" in
20791 echo "We won't be including <gdbm.h>"
20800 : see if this is a ieeefp.h system
20801 case "$i_ieeefp" in
20802 '' ) set ieeefp.h i_ieeefp
20807 : see if this is a libutil.h system
20808 set libutil.h i_libutil
20811 : see if mach cthreads are available
20812 if test "X$usethreads" = "X$define"; then
20813 set mach/cthreads.h i_machcthr
20816 i_machcthr="$undef"
20819 : see if this is a mntent.h system
20820 set mntent.h i_mntent
20823 : see if ndbm.h is available
20826 : Compatibility location for RedHat 7.1
20827 set gdbm/ndbm.h i_gdbmndbm
20829 : Compatibility location for Debian 4.0
20830 set gdbm-ndbm.h i_gdbm_ndbm
20833 if $test "$i_ndbm" = "$define" -o "$i_gdbmndbm" = "$define" -o "$i_gdbm_ndbm" = "$define"; then
20834 : see if dbm_open exists
20835 set dbm_open d_dbm_open
20837 case "$d_dbm_open" in
20840 i_gdbmndbm="$undef"
20841 i_gdbm_ndbm="$undef"
20842 echo "We won't be including <ndbm.h>"
20852 : see if net/errno.h is available
20854 set net/errno.h val
20857 : Unfortunately, it causes problems on some systems. Arrgh.
20860 cat > try.c <<'EOM'
20863 #include <net/errno.h>
20869 if $cc $ccflags -c try.c >/dev/null 2>&1; then
20870 echo "We'll be including <net/errno.h>." >&4
20872 echo "We won't be including <net/errno.h>." >&4
20881 : see if netinet/tcp.h is available
20882 set netinet/tcp.h i_netinettcp
20885 : see if this is a poll.h system
20889 : see if this is a prot.h system
20893 : Preprocessor symbols
20895 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
20896 $cat <<'EOSH' > Cppsym.know
20897 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
20898 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
20899 alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX
20900 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
20901 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
20902 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
20903 bull c cadmus clipper CMU COFF COMPILER_VERSION
20904 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
20905 CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
20906 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
20907 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
20909 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
20910 H3050R H3050RX hbullx20 hcx host_mips
20911 hp200 hp300 hp700 HP700 hp800 hp9000
20912 hp9000s200 hp9000s300 hp9000s400 hp9000s500
20913 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
20914 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
20915 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
20916 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
20917 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
20918 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
20919 LIBCATAMOUNT Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
20920 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
20921 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
20922 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
20923 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
20924 MATH_HAS_NO_SIDE_EFFECTS
20925 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
20926 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
20927 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
20928 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
20929 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
20930 NetBSD news1500 news1700 news1800 news1900 news3700
20931 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
20932 ns32016 ns32332 ns32k nsc32000
20933 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
20934 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
20935 pc532 pdp11 PGC PIC plexus PORTAR posix
20936 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
20937 POSIX_C_SOURCE POSIX_SOURCE POWER
20938 PROTOTYPES PWB pyr QNX QK_USER R3000 REENTRANT RES Rhapsody RISC6000
20939 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
20940 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
20941 sony sony_news sonyrisc sparc sparclite spectrum
20942 stardent stdc STDC_EXT stratos sun sun3 sun386
20943 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
20944 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
20945 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
20946 sysV68 sysV88 Tek4132 Tek4300 titan
20947 TM3200 TM5400 TM5600
20948 tower tower32 tower32_200 tower32_600 tower32_700
20949 tower32_800 tower32_850 tss
20950 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
20951 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
20952 unix UNIX95 UNIX99 unixpc unos
20953 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
20954 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
20955 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
20957 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286
20958 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
20959 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
20962 # Maybe put other stuff here too.
20963 cat <<EOSH >>Cppsym.know
20966 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
20967 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
20968 $cat Cppsym.know > Cppsym.c
20969 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
20970 $rm -f Cppsym.a Cppsym.b Cppsym.c
20971 cat <<EOSH > Cppsym
20973 if $test \$# -gt 0; then
20974 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
20975 if $test -s Cppsym.got; then
20982 $tr " " "$trnl" | ./Cppsym.try
20988 cat <<EOSH > Cppsym.try
20990 cat <<'EOCP' > try.c
20993 #define STRINGIFY(a) "a"
20995 #if cpp_stuff == 42
20996 #define StGiFy(a) #a
20997 #define STRINGIFY(a) StGiFy(a)
20999 #if $cpp_stuff != 1 && $cpp_stuff != 42
21000 # include "Bletch: How does this C preprocessor stringify macros?"
21006 cat <<'EOSH' >> Cppsym.try
21008 printf "#ifdef %s\nprintf(\"%s=%%s\\n\", STRINGIFY(%s));\n#endif\n", $1, $1, $1
21009 printf "#ifdef _%s\nprintf(\"_%s=%%s\\n\", STRINGIFY(_%s));\n#endif\n", $1, $1, $1
21010 printf "#ifdef __%s\nprintf(\"__%s=%%s\\n\", STRINGIFY(__%s));\n#endif\n", $1, $1, $1
21011 printf "#ifdef __%s__\nprintf(\"__%s__=%%s\\n\", STRINGIFY(__%s__));\n#endif\n", $1, $1, $1
21013 echo 'return 0;}' >> try.c
21015 cat <<EOSH >> Cppsym.try
21017 case "$osname-$gccversion" in
21018 irix-) ccflags="\$ccflags -woff 1178" ;;
21019 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
21021 $cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $run ./try | $sed 's/ /\\\\ /g'
21023 chmod +x Cppsym.try
21024 $eunicefix Cppsym.try
21025 ./Cppsym < Cppsym.know > Cppsym.true
21026 : Add in any linux cpp "predefined macros":
21027 case "$osname::$gccversion" in
21030 rm -f $tHdrH'.h' $tHdrH
21032 if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
21033 sed 's/#define[\ \ ]*//;s/[\ \ ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
21034 if [ -s $tHdrH'_cppsym.real' ]; then
21035 cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
21038 rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real'
21041 : now check the C compiler for additional symbols
21042 postprocess_cc_v=''
21044 aix) postprocess_cc_v="|$tr , ' '" ;;
21051 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
21054 -D*) echo "\$i" | $sed 's/^-D//';;
21055 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
21060 postprocess_cc_v=''
21063 ./ccsym > ccsym1.raw
21064 if $test -s ccsym1.raw; then
21065 $sort ccsym1.raw | $uniq >ccsym.raw
21067 mv ccsym1.raw ccsym.raw
21070 $awk '/\=/ { print $0; next }
21071 { print $0"=1" }' ccsym.raw >ccsym.list
21072 $comm -13 Cppsym.true ccsym.list >ccsym.own
21073 $comm -12 Cppsym.true ccsym.list >ccsym.com
21074 $comm -23 Cppsym.true ccsym.list >ccsym.cpp
21076 if $test -z ccsym.raw; then
21077 echo "Your C compiler doesn't seem to define any symbols!" >&4
21079 echo "However, your C preprocessor defines the following symbols:"
21082 cppsymbols=`$cat Cppsym.true`
21083 cppsymbols=`echo $cppsymbols`
21084 cppccsymbols="$cppsymbols"
21086 if $test -s ccsym.com; then
21087 echo "Your C compiler and pre-processor define these symbols:"
21088 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
21091 cppccsymbols=`$cat ccsym.com`
21092 cppccsymbols=`echo $cppccsymbols`
21093 $test "$silent" || sleep 1
21095 if $test -s ccsym.cpp; then
21096 $test "$also" && echo " "
21097 echo "Your C pre-processor ${also}defines the following symbols:"
21098 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
21100 cppsymbols=`$cat ccsym.cpp`
21101 cppsymbols=`echo $cppsymbols`
21102 $test "$silent" || sleep 1
21104 if $test -s ccsym.own; then
21105 $test "$also" && echo " "
21106 echo "Your C compiler ${also}defines the following cpp symbols:"
21107 $sed -e 's/\(..*\)=1/\1/' ccsym.own
21108 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
21109 ccsymbols=`$cat ccsym.own`
21110 ccsymbols=`echo $ccsymbols`
21111 $test "$silent" || sleep 1
21115 : see if this is a termio system
21119 if $test `./findhdr termios.h`; then
21120 set tcsetattr i_termios
21126 "$define") echo "You have POSIX termios.h... good!" >&4;;
21127 *) if ./Cppsym pyr; then
21128 case "`/bin/universe`" in
21129 ucb) if $test `./findhdr sgtty.h`; then
21131 echo "<sgtty.h> found." >&4
21133 echo "System is pyramid with BSD universe."
21134 ./warn "<sgtty.h> not found--you could have problems."
21136 *) if $test `./findhdr termio.h`; then
21138 echo "<termio.h> found." >&4
21140 echo "System is pyramid with USG universe."
21141 ./warn "<termio.h> not found--you could have problems."
21145 if $test `./findhdr termio.h`; then
21146 echo "<termio.h> found." >&4
21148 elif $test `./findhdr sgtty.h`; then
21149 echo "<sgtty.h> found." >&4
21152 ./warn "Neither <termio.h> nor <sgtty.h> found--cross fingers!"
21155 if $test `./findhdr sgtty.h`; then
21156 echo "<sgtty.h> found." >&4
21158 elif $test `./findhdr termio.h`; then
21159 echo "<termio.h> found." >&4
21162 ./warn "Neither <sgtty.h> nor <termio.h> found--cross fingers!"
21166 set i_termio; eval $setvar
21167 val=$val2; set i_sgtty; eval $setvar
21168 val=$val3; set i_termios; eval $setvar
21170 : see if stddef is available
21171 set stddef.h i_stddef
21174 : see if sys/access.h is available
21175 set sys/access.h i_sysaccess
21178 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
21179 set sys/filio.h i_sysfilio
21182 if $test `./findhdr sys/ioctl.h`; then
21184 echo '<sys/ioctl.h> found.' >&4
21187 if $test $i_sysfilio = "$define"; then
21188 echo '<sys/ioctl.h> NOT found.' >&4
21190 $test $i_sgtty = "$define" && xxx="sgtty.h"
21191 $test $i_termio = "$define" && xxx="termio.h"
21192 $test $i_termios = "$define" && xxx="termios.h"
21193 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
21199 : see if socket ioctl defs are in sys/sockio.h
21201 xxx=`./findhdr sys/sockio.h`
21202 if $test "$xxx"; then
21203 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
21205 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
21208 echo "No socket ioctls found in <sys/sockio.h>." >&4
21213 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
21219 : see if this is a syslog.h system
21220 set syslog.h i_syslog
21223 : see if this is a sys/mode.h system
21224 set sys/mode.h i_sysmode
21227 : see if there is a sys/poll.h file
21228 set sys/poll.h i_syspoll
21231 : see if sys/resource.h has to be included
21232 set sys/resource.h i_sysresrc
21235 : see if sys/security.h is available
21236 set sys/security.h i_syssecrt
21239 : see if this is a sys/statvfs.h system
21240 set sys/statvfs.h i_sysstatvfs
21243 : see if this is a sys/un.h system
21244 set sys/un.h i_sysun
21247 : see if this is a sys/utsname.h system
21248 set sys/utsname.h i_sysutsname
21251 : see if this is a syswait system
21252 set sys/wait.h i_syswait
21255 : see if this is a ustat.h system
21256 set ustat.h i_ustat
21259 : see if this is an utime system
21260 set utime.h i_utime
21263 : see if this is a values.h system
21264 set values.h i_values
21267 : see if this is a vfork system
21270 set vfork.h i_vfork
21280 echo "Looking for extensions..." >&4
21281 : If we are using the old config.sh, known_extensions may contain
21282 : old or inaccurate or duplicate values.
21283 known_extensions=''
21284 nonxs_extensions=''
21285 : We do not use find because it might not be available.
21286 : We do not just use MANIFEST because the user may have dropped
21287 : some additional extensions into the source tree and expect them
21290 : Function to recursively find available extensions, ignoring DynaLoader
21291 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
21295 DynaLoader|dynaload) ;;
21297 if $test -f $xxx/$xxx.xs -o -f $xxx/$xxx.c; then
21298 known_extensions="$known_extensions $1$xxx";
21299 elif $test -f $xxx/Makefile.PL; then
21300 nonxs_extensions="$nonxs_extensions $1$xxx";
21302 if $test -d $xxx -a $# -lt 10; then
21305 eval $find_extensions;
21317 eval $find_extensions
21318 # Special case: Add in modules that nest beyond the first level.
21319 # Currently threads/shared and Hash/Util/FieldHash, since they are
21320 # not picked up by the recursive find above (and adding in general
21321 # recursive finding breaks SDBM_File/sdbm).
21322 # A.D. 20011025 (SDBM), ajgough 20071008 (FieldHash)
21323 known_extensions="$known_extensions threads/shared Hash/Util/FieldHash"
21324 set X $known_extensions
21326 known_extensions="$*"
21327 set X $nonxs_extensions
21329 nonxs_extensions="$*"
21332 : Now see which are supported on this system.
21334 for xxx in $known_extensions ; do
21338 $define) avail_ext="$avail_ext $xxx" ;;
21341 GDBM_File|gdbm_fil)
21343 $define) avail_ext="$avail_ext $xxx" ;;
21346 I18N/Langinfo|i18n_lan)
21347 case "$i_langinfo$d_nl_langinfo" in
21348 $define$define) avail_ext="$avail_ext $xxx" ;;
21352 : XXX Do we need a useipcsysv variable here
21353 case "${d_msg}${d_sem}${d_shm}" in
21354 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
21357 NDBM_File|ndbm_fil)
21360 case "$osname-$use64bitint" in
21363 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
21366 *) avail_ext="$avail_ext $xxx" ;;
21371 ODBM_File|odbm_fil)
21372 case "${i_dbm}${i_rpcsvcdbm}" in
21374 case "$d_cplusplus" in
21375 define) ;; # delete as a function name will not work
21376 *) case "$osname-$use64bitint" in
21379 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
21382 *) avail_ext="$avail_ext $xxx" ;;
21390 case "$useopcode" in
21391 true|define|y) avail_ext="$avail_ext $xxx" ;;
21395 case "$useposix" in
21396 true|define|y) avail_ext="$avail_ext $xxx" ;;
21400 case "$d_socket" in
21403 beos) ;; # not unless BONE
21404 *) avail_ext="$avail_ext $xxx" ;;
21409 Sys/Syslog|sys/syslog)
21410 : XXX syslog requires socket
21411 case "$d_socket" in
21412 true|$define|y) avail_ext="$avail_ext $xxx" ;;
21416 case "$usethreads" in
21418 case "$use5005threads" in
21419 $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
21423 threads|threads/shared)
21424 # threads and threads::shared are special cases.
21425 # To stop people from asking "Perl 5.8.0 was supposed
21426 # to have this new fancy threads implementation but my
21427 # perl doesn't have it" and from people trying to
21428 # (re)install the threads module using CPAN.pm and
21429 # CPAN.pm then offering to reinstall Perl 5.8.0,
21430 # the threads.pm and threads/shared.pm will always be
21431 # there, croaking informatively ("you need to rebuild
21432 # all of Perl with threads, sorry") when threads haven't
21433 # been compiled in.
21435 avail_ext="$avail_ext $xxx"
21439 cygwin) avail_ext="$avail_ext $xxx" ;;
21442 XS/APItest|xs/apitest)
21443 # This is just for testing. Skip it unless we have dynamic loading.
21446 $define) avail_ext="$avail_ext $xxx" ;;
21449 XS/Typemap|xs/typemap)
21450 # This is just for testing. Skip it unless we have dynamic loading.
21452 $define) avail_ext="$avail_ext $xxx" ;;
21455 *) avail_ext="$avail_ext $xxx"
21464 case "$onlyextensions" in
21466 *) keepextensions=''
21467 echo "You have requested that only certains extensions be included..." >&4
21468 for i in $onlyextensions; do
21469 case " $avail_ext " in
21471 echo "Keeping extension $i."
21472 keepextensions="$keepextensions $i"
21474 *) echo "Ignoring extension $i." ;;
21477 avail_ext="$keepextensions"
21481 case "$noextensions" in
21483 *) keepextensions=''
21484 echo "You have requested that certain extensions be ignored..." >&4
21485 for i in $avail_ext; do
21486 case " $noextensions " in
21487 *" $i "*) echo "Ignoring extension $i." ;;
21488 *) echo "Keeping extension $i.";
21489 keepextensions="$keepextensions $i"
21493 avail_ext="$keepextensions"
21497 : Now see which nonxs extensions are supported on this system.
21498 : For now assume all are.
21500 for xxx in $nonxs_extensions ; do
21502 *) nonxs_ext="$nonxs_ext $xxx"
21514 A number of extensions are supplied with $package. You may choose to
21515 compile these extensions for dynamic loading (the default), compile
21516 them into the $package executable (static loading), or not include
21517 them at all. Answer "none" to include no extensions.
21518 Note that DynaLoader is always built and need not be mentioned here.
21521 case "$dynamic_ext" in
21523 : Exclude those listed in static_ext
21525 for xxx in $avail_ext; do
21526 case " $static_ext " in
21528 *) dflt="$dflt $xxx" ;;
21535 *) dflt="$dynamic_ext"
21536 # Perhaps we are reusing an old out-of-date config.sh.
21539 if test X"$dynamic_ext" != X"$avail_ext"; then
21541 NOTICE: Your previous config.sh list may be incorrect.
21542 The extensions now available to you are
21544 but the default list from your previous config.sh is
21556 rp="What extensions do you wish to load dynamically?"
21559 none) dynamic_ext=' ' ;;
21560 *) dynamic_ext="$ans" ;;
21563 case "$static_ext" in
21565 : Exclude those already listed in dynamic linking
21567 for xxx in $avail_ext; do
21568 case " $dynamic_ext " in
21570 *) dflt="$dflt $xxx" ;;
21577 *) dflt="$static_ext"
21584 rp="What extensions do you wish to load statically?"
21587 none) static_ext=' ' ;;
21588 *) static_ext="$ans" ;;
21593 A number of extensions are supplied with $package. Answer "none"
21594 to include no extensions.
21595 Note that DynaLoader is always built and need not be mentioned here.
21598 case "$static_ext" in
21599 '') dflt="$avail_ext" ;;
21600 *) dflt="$static_ext"
21601 # Perhaps we are reusing an old out-of-date config.sh.
21604 if test X"$static_ext" != X"$avail_ext"; then
21606 NOTICE: Your previous config.sh list may be incorrect.
21607 The extensions now available to you are
21609 but the default list from your previous config.sh is
21618 : Exclude those that are not xs extensions
21622 rp="What extensions do you wish to include?"
21625 none) static_ext=' ' ;;
21626 *) static_ext="$ans" ;;
21631 # Encode is a special case. If we are building Encode as a static
21632 # extension, we need to explicitly list its subextensions as well.
21633 # For other nested extensions, this is handled automatically by
21634 # the appropriate Makefile.PL.
21635 case " $static_ext " in
21636 *" Encode "*) # Add the subextensions of Encode
21638 for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
21639 static_ext="$static_ext Encode/$xxx"
21645 set X $dynamic_ext $static_ext $nonxs_ext
21649 # Sanity check: We require an extension suitable for use with
21650 # AnyDBM_File, as well as Fcntl and IO. (Failure to have these
21651 # should show up as failures in the test suite, but it's helpful to
21652 # catch them now.) The 'extensions' list is normally sorted
21653 # alphabetically, so we need to accept either
21654 # DB_File ... Fcntl ... IO ....
21655 # or something like
21656 # Fcntl ... NDBM_File ... IO ....
21657 case " $extensions" in
21658 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
21659 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
21660 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
21661 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
21662 echo "WARNING: The Perl you are building will be quite crippled." >& 4
21666 : Remove libraries needed only for extensions
21667 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
21668 : The exception is SunOS 4.x, which needs them.
21669 case "${osname}X${osvers}" in
21673 *) case "$usedl" in
21674 $define|true|[yY]*)
21675 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -lgdbm_compat @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
21679 *) perllibs="$libs"
21685 : Remove build directory name from cppstdin so it can be used from
21686 : either the present location or the final installed location.
21688 : Get out of the UU directory to get correct path name.
21690 case "$cppstdin" in
21692 echo "Stripping down cppstdin path name"
21698 : end of configuration questions
21700 echo "End of configuration questions."
21703 : back to where it started
21704 if test -d ../UU; then
21708 : configuration may be unconditionally patched via a 'config.arch' file
21709 if $test -f config.arch; then
21710 echo "I see a config.arch file, loading it." >&4
21714 : configuration may be patched via a 'config.over' file
21715 if $test -f config.over; then
21718 rp='I see a config.over file. Do you wish to load it?'
21721 n*) echo "OK, I'll ignore it.";;
21723 echo "Configuration override changes have been loaded."
21728 : in case they want portability, strip down executable paths
21729 case "$d_portable" in
21732 echo "Stripping down executable paths..." >&4
21733 for file in $loclist $trylist; do
21735 eval $file=`basename $temp`
21740 : create config.sh file
21742 echo "Creating config.sh..." >&4
21743 $spitshell <<EOT >config.sh
21746 # This file was produced by running the Configure script. It holds all the
21747 # definitions figured out by Configure. Should you modify one of these values,
21748 # do not forget to propagate your changes by running "Configure -der". You may
21749 # instead choose to run each of the .SH files by yourself, or "Configure -S".
21752 # Package name : $package
21753 # Source directory : $src
21754 # Configuration time: $cf_time
21755 # Configured by : $cf_by
21756 # Target system : $myuname
21759 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21760 $spitshell <<EOT >>config.sh
21769 Revision='$Revision'
21777 alignbytes='$alignbytes'
21778 ansi2knr='$ansi2knr'
21779 aphostname='$aphostname'
21780 api_revision='$api_revision'
21781 api_subversion='$api_subversion'
21782 api_version='$api_version'
21783 api_versionstring='$api_versionstring'
21786 archlibexp='$archlibexp'
21787 archname64='$archname64'
21788 archname='$archname'
21789 archobjs='$archobjs'
21790 asctime_r_proto='$asctime_r_proto'
21798 byteorder='$byteorder'
21800 castflags='$castflags'
21803 cccdlflags='$cccdlflags'
21804 ccdlflags='$ccdlflags'
21806 ccflags_uselargefiles='$ccflags_uselargefiles'
21808 ccsymbols='$ccsymbols'
21809 ccversion='$ccversion'
21811 cf_email='$cf_email'
21816 clocktype='$clocktype'
21818 compress='$compress'
21819 contains='$contains'
21823 cpp_stuff='$cpp_stuff'
21824 cppccsymbols='$cppccsymbols'
21825 cppflags='$cppflags'
21827 cppminus='$cppminus'
21829 cppstdin='$cppstdin'
21830 cppsymbols='$cppsymbols'
21831 crypt_r_proto='$crypt_r_proto'
21832 cryptlib='$cryptlib'
21834 ctermid_r_proto='$ctermid_r_proto'
21835 ctime_r_proto='$ctime_r_proto'
21836 d_Gconvert='$d_Gconvert'
21837 d_PRIEUldbl='$d_PRIEUldbl'
21838 d_PRIFUldbl='$d_PRIFUldbl'
21839 d_PRIGUldbl='$d_PRIGUldbl'
21840 d_PRIXU64='$d_PRIXU64'
21841 d_PRId64='$d_PRId64'
21842 d_PRIeldbl='$d_PRIeldbl'
21843 d_PRIfldbl='$d_PRIfldbl'
21844 d_PRIgldbl='$d_PRIgldbl'
21845 d_PRIi64='$d_PRIi64'
21846 d_PRIo64='$d_PRIo64'
21847 d_PRIu64='$d_PRIu64'
21848 d_PRIx64='$d_PRIx64'
21849 d_SCNfldbl='$d_SCNfldbl'
21850 d__fwalk='$d__fwalk'
21851 d_access='$d_access'
21852 d_accessx='$d_accessx'
21855 d_archlib='$d_archlib'
21856 d_asctime_r='$d_asctime_r'
21859 d_attribute_format='$d_attribute_format'
21860 d_attribute_malloc='$d_attribute_malloc'
21861 d_attribute_nonnull='$d_attribute_nonnull'
21862 d_attribute_noreturn='$d_attribute_noreturn'
21863 d_attribute_pure='$d_attribute_pure'
21864 d_attribute_unused='$d_attribute_unused'
21865 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
21869 d_bsdgetpgrp='$d_bsdgetpgrp'
21870 d_bsdsetpgrp='$d_bsdsetpgrp'
21871 d_builtin_choose_expr='$d_builtin_choose_expr'
21872 d_builtin_expect='$d_builtin_expect'
21874 d_c99_variadic_macros='$d_c99_variadic_macros'
21875 d_casti32='$d_casti32'
21876 d_castneg='$d_castneg'
21877 d_charvspr='$d_charvspr'
21879 d_chroot='$d_chroot'
21880 d_chsize='$d_chsize'
21882 d_clearenv='$d_clearenv'
21883 d_closedir='$d_closedir'
21884 d_cmsghdr_s='$d_cmsghdr_s'
21886 d_copysignl='$d_copysignl'
21887 d_cplusplus='$d_cplusplus'
21889 d_crypt_r='$d_crypt_r'
21891 d_ctermid='$d_ctermid'
21892 d_ctermid_r='$d_ctermid_r'
21893 d_ctime_r='$d_ctime_r'
21894 d_cuserid='$d_cuserid'
21895 d_dbl_dig='$d_dbl_dig'
21896 d_dbminitproto='$d_dbminitproto'
21897 d_difftime='$d_difftime'
21898 d_dir_dd_fd='$d_dir_dd_fd'
21900 d_dirnamlen='$d_dirnamlen'
21901 d_dlerror='$d_dlerror'
21902 d_dlopen='$d_dlopen'
21903 d_dlsymun='$d_dlsymun'
21904 d_dosuid='$d_dosuid'
21905 d_drand48_r='$d_drand48_r'
21906 d_drand48proto='$d_drand48proto'
21908 d_eaccess='$d_eaccess'
21909 d_endgrent='$d_endgrent'
21910 d_endgrent_r='$d_endgrent_r'
21911 d_endhent='$d_endhent'
21912 d_endhostent_r='$d_endhostent_r'
21913 d_endnent='$d_endnent'
21914 d_endnetent_r='$d_endnetent_r'
21915 d_endpent='$d_endpent'
21916 d_endprotoent_r='$d_endprotoent_r'
21917 d_endpwent='$d_endpwent'
21918 d_endpwent_r='$d_endpwent_r'
21919 d_endsent='$d_endsent'
21920 d_endservent_r='$d_endservent_r'
21921 d_eofnblk='$d_eofnblk'
21922 d_eunice='$d_eunice'
21923 d_faststdio='$d_faststdio'
21924 d_fchdir='$d_fchdir'
21925 d_fchmod='$d_fchmod'
21926 d_fchown='$d_fchown'
21928 d_fcntl_can_lock='$d_fcntl_can_lock'
21929 d_fd_macros='$d_fd_macros'
21930 d_fd_set='$d_fd_set'
21931 d_fds_bits='$d_fds_bits'
21932 d_fgetpos='$d_fgetpos'
21933 d_finite='$d_finite'
21934 d_finitel='$d_finitel'
21935 d_flexfnam='$d_flexfnam'
21937 d_flockproto='$d_flockproto'
21939 d_fp_class='$d_fp_class'
21940 d_fpathconf='$d_fpathconf'
21941 d_fpclass='$d_fpclass'
21942 d_fpclassify='$d_fpclassify'
21943 d_fpclassl='$d_fpclassl'
21944 d_fpos64_t='$d_fpos64_t'
21945 d_frexpl='$d_frexpl'
21946 d_fs_data_s='$d_fs_data_s'
21947 d_fseeko='$d_fseeko'
21948 d_fsetpos='$d_fsetpos'
21949 d_fstatfs='$d_fstatfs'
21950 d_fstatvfs='$d_fstatvfs'
21952 d_ftello='$d_ftello'
21954 d_futimes='$d_futimes'
21955 d_getcwd='$d_getcwd'
21956 d_getespwnam='$d_getespwnam'
21957 d_getfsstat='$d_getfsstat'
21958 d_getgrent='$d_getgrent'
21959 d_getgrent_r='$d_getgrent_r'
21960 d_getgrgid_r='$d_getgrgid_r'
21961 d_getgrnam_r='$d_getgrnam_r'
21962 d_getgrps='$d_getgrps'
21963 d_gethbyaddr='$d_gethbyaddr'
21964 d_gethbyname='$d_gethbyname'
21965 d_gethent='$d_gethent'
21966 d_gethname='$d_gethname'
21967 d_gethostbyaddr_r='$d_gethostbyaddr_r'
21968 d_gethostbyname_r='$d_gethostbyname_r'
21969 d_gethostent_r='$d_gethostent_r'
21970 d_gethostprotos='$d_gethostprotos'
21971 d_getitimer='$d_getitimer'
21972 d_getlogin='$d_getlogin'
21973 d_getlogin_r='$d_getlogin_r'
21974 d_getmnt='$d_getmnt'
21975 d_getmntent='$d_getmntent'
21976 d_getnbyaddr='$d_getnbyaddr'
21977 d_getnbyname='$d_getnbyname'
21978 d_getnent='$d_getnent'
21979 d_getnetbyaddr_r='$d_getnetbyaddr_r'
21980 d_getnetbyname_r='$d_getnetbyname_r'
21981 d_getnetent_r='$d_getnetent_r'
21982 d_getnetprotos='$d_getnetprotos'
21983 d_getpagsz='$d_getpagsz'
21984 d_getpbyname='$d_getpbyname'
21985 d_getpbynumber='$d_getpbynumber'
21986 d_getpent='$d_getpent'
21987 d_getpgid='$d_getpgid'
21988 d_getpgrp2='$d_getpgrp2'
21989 d_getpgrp='$d_getpgrp'
21990 d_getppid='$d_getppid'
21991 d_getprior='$d_getprior'
21992 d_getprotobyname_r='$d_getprotobyname_r'
21993 d_getprotobynumber_r='$d_getprotobynumber_r'
21994 d_getprotoent_r='$d_getprotoent_r'
21995 d_getprotoprotos='$d_getprotoprotos'
21996 d_getprpwnam='$d_getprpwnam'
21997 d_getpwent='$d_getpwent'
21998 d_getpwent_r='$d_getpwent_r'
21999 d_getpwnam_r='$d_getpwnam_r'
22000 d_getpwuid_r='$d_getpwuid_r'
22001 d_getsbyname='$d_getsbyname'
22002 d_getsbyport='$d_getsbyport'
22003 d_getsent='$d_getsent'
22004 d_getservbyname_r='$d_getservbyname_r'
22005 d_getservbyport_r='$d_getservbyport_r'
22006 d_getservent_r='$d_getservent_r'
22007 d_getservprotos='$d_getservprotos'
22008 d_getspnam='$d_getspnam'
22009 d_getspnam_r='$d_getspnam_r'
22010 d_gettimeod='$d_gettimeod'
22011 d_gmtime_r='$d_gmtime_r'
22012 d_gnulibc='$d_gnulibc'
22013 d_grpasswd='$d_grpasswd'
22014 d_hasmntopt='$d_hasmntopt'
22016 d_ilogbl='$d_ilogbl'
22017 d_inc_version_list='$d_inc_version_list'
22019 d_inetaton='$d_inetaton'
22020 d_int64_t='$d_int64_t'
22021 d_isascii='$d_isascii'
22022 d_isfinite='$d_isfinite'
22025 d_isnanl='$d_isnanl'
22026 d_killpg='$d_killpg'
22027 d_lchown='$d_lchown'
22028 d_ldbl_dig='$d_ldbl_dig'
22029 d_libm_lib_version='$d_libm_lib_version'
22031 d_localtime_r='$d_localtime_r'
22032 d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
22033 d_locconv='$d_locconv'
22035 d_longdbl='$d_longdbl'
22036 d_longlong='$d_longlong'
22037 d_lseekproto='$d_lseekproto'
22039 d_madvise='$d_madvise'
22040 d_malloc_good_size='$d_malloc_good_size'
22041 d_malloc_size='$d_malloc_size'
22043 d_mbstowcs='$d_mbstowcs'
22044 d_mbtowc='$d_mbtowc'
22045 d_memchr='$d_memchr'
22046 d_memcmp='$d_memcmp'
22047 d_memcpy='$d_memcpy'
22048 d_memmove='$d_memmove'
22049 d_memset='$d_memset'
22051 d_mkdtemp='$d_mkdtemp'
22052 d_mkfifo='$d_mkfifo'
22053 d_mkstemp='$d_mkstemp'
22054 d_mkstemps='$d_mkstemps'
22055 d_mktime='$d_mktime'
22058 d_modfl_pow32_bug='$d_modfl_pow32_bug'
22059 d_modflproto='$d_modflproto'
22060 d_mprotect='$d_mprotect'
22062 d_msg_ctrunc='$d_msg_ctrunc'
22063 d_msg_dontroute='$d_msg_dontroute'
22064 d_msg_oob='$d_msg_oob'
22065 d_msg_peek='$d_msg_peek'
22066 d_msg_proxy='$d_msg_proxy'
22067 d_msgctl='$d_msgctl'
22068 d_msgget='$d_msgget'
22069 d_msghdr_s='$d_msghdr_s'
22070 d_msgrcv='$d_msgrcv'
22071 d_msgsnd='$d_msgsnd'
22073 d_munmap='$d_munmap'
22074 d_mymalloc='$d_mymalloc'
22077 d_nl_langinfo='$d_nl_langinfo'
22078 d_nv_preserves_uv='$d_nv_preserves_uv'
22079 d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero'
22080 d_off64_t='$d_off64_t'
22081 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
22082 d_oldpthreads='$d_oldpthreads'
22083 d_oldsock='$d_oldsock'
22085 d_pathconf='$d_pathconf'
22087 d_perl_otherlibdirs='$d_perl_otherlibdirs'
22088 d_phostname='$d_phostname'
22091 d_portable='$d_portable'
22092 d_printf_format_null='$d_printf_format_null'
22093 d_procselfexe='$d_procselfexe'
22094 d_pseudofork='$d_pseudofork'
22095 d_pthread_atfork='$d_pthread_atfork'
22096 d_pthread_attr_setscope='$d_pthread_attr_setscope'
22097 d_pthread_yield='$d_pthread_yield'
22099 d_pwchange='$d_pwchange'
22100 d_pwclass='$d_pwclass'
22101 d_pwcomment='$d_pwcomment'
22102 d_pwexpire='$d_pwexpire'
22103 d_pwgecos='$d_pwgecos'
22104 d_pwpasswd='$d_pwpasswd'
22105 d_pwquota='$d_pwquota'
22108 d_random_r='$d_random_r'
22109 d_readdir64_r='$d_readdir64_r'
22110 d_readdir='$d_readdir'
22111 d_readdir_r='$d_readdir_r'
22112 d_readlink='$d_readlink'
22114 d_recvmsg='$d_recvmsg'
22115 d_rename='$d_rename'
22116 d_rewinddir='$d_rewinddir'
22118 d_safebcpy='$d_safebcpy'
22119 d_safemcpy='$d_safemcpy'
22120 d_sanemcmp='$d_sanemcmp'
22121 d_sbrkproto='$d_sbrkproto'
22122 d_scalbnl='$d_scalbnl'
22123 d_sched_yield='$d_sched_yield'
22124 d_scm_rights='$d_scm_rights'
22125 d_seekdir='$d_seekdir'
22126 d_select='$d_select'
22128 d_semctl='$d_semctl'
22129 d_semctl_semid_ds='$d_semctl_semid_ds'
22130 d_semctl_semun='$d_semctl_semun'
22131 d_semget='$d_semget'
22133 d_sendmsg='$d_sendmsg'
22134 d_setegid='$d_setegid'
22135 d_seteuid='$d_seteuid'
22136 d_setgrent='$d_setgrent'
22137 d_setgrent_r='$d_setgrent_r'
22138 d_setgrps='$d_setgrps'
22139 d_sethent='$d_sethent'
22140 d_sethostent_r='$d_sethostent_r'
22141 d_setitimer='$d_setitimer'
22142 d_setlinebuf='$d_setlinebuf'
22143 d_setlocale='$d_setlocale'
22144 d_setlocale_r='$d_setlocale_r'
22145 d_setnent='$d_setnent'
22146 d_setnetent_r='$d_setnetent_r'
22147 d_setpent='$d_setpent'
22148 d_setpgid='$d_setpgid'
22149 d_setpgrp2='$d_setpgrp2'
22150 d_setpgrp='$d_setpgrp'
22151 d_setprior='$d_setprior'
22152 d_setproctitle='$d_setproctitle'
22153 d_setprotoent_r='$d_setprotoent_r'
22154 d_setpwent='$d_setpwent'
22155 d_setpwent_r='$d_setpwent_r'
22156 d_setregid='$d_setregid'
22157 d_setresgid='$d_setresgid'
22158 d_setresuid='$d_setresuid'
22159 d_setreuid='$d_setreuid'
22160 d_setrgid='$d_setrgid'
22161 d_setruid='$d_setruid'
22162 d_setsent='$d_setsent'
22163 d_setservent_r='$d_setservent_r'
22164 d_setsid='$d_setsid'
22165 d_setvbuf='$d_setvbuf'
22169 d_shmatprototype='$d_shmatprototype'
22170 d_shmctl='$d_shmctl'
22172 d_shmget='$d_shmget'
22173 d_sigaction='$d_sigaction'
22174 d_signbit='$d_signbit'
22175 d_sigprocmask='$d_sigprocmask'
22176 d_sigsetjmp='$d_sigsetjmp'
22177 d_sitearch='$d_sitearch'
22178 d_snprintf='$d_snprintf'
22179 d_sockatmark='$d_sockatmark'
22180 d_sockatmarkproto='$d_sockatmarkproto'
22181 d_socket='$d_socket'
22182 d_socklen_t='$d_socklen_t'
22183 d_sockpair='$d_sockpair'
22184 d_socks5_init='$d_socks5_init'
22185 d_sprintf_returns_strlen='$d_sprintf_returns_strlen'
22187 d_srand48_r='$d_srand48_r'
22188 d_srandom_r='$d_srandom_r'
22189 d_sresgproto='$d_sresgproto'
22190 d_sresuproto='$d_sresuproto'
22191 d_statblks='$d_statblks'
22192 d_statfs_f_flags='$d_statfs_f_flags'
22193 d_statfs_s='$d_statfs_s'
22194 d_statvfs='$d_statvfs'
22195 d_stdio_cnt_lval='$d_stdio_cnt_lval'
22196 d_stdio_ptr_lval='$d_stdio_ptr_lval'
22197 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
22198 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
22199 d_stdio_stream_array='$d_stdio_stream_array'
22200 d_stdiobase='$d_stdiobase'
22201 d_stdstdio='$d_stdstdio'
22202 d_strchr='$d_strchr'
22203 d_strcoll='$d_strcoll'
22204 d_strctcpy='$d_strctcpy'
22205 d_strerrm='$d_strerrm'
22206 d_strerror='$d_strerror'
22207 d_strerror_r='$d_strerror_r'
22208 d_strftime='$d_strftime'
22209 d_strlcat='$d_strlcat'
22210 d_strlcpy='$d_strlcpy'
22211 d_strtod='$d_strtod'
22212 d_strtol='$d_strtol'
22213 d_strtold='$d_strtold'
22214 d_strtoll='$d_strtoll'
22215 d_strtoq='$d_strtoq'
22216 d_strtoul='$d_strtoul'
22217 d_strtoull='$d_strtoull'
22218 d_strtouq='$d_strtouq'
22219 d_strxfrm='$d_strxfrm'
22220 d_suidsafe='$d_suidsafe'
22221 d_symlink='$d_symlink'
22222 d_syscall='$d_syscall'
22223 d_syscallproto='$d_syscallproto'
22224 d_sysconf='$d_sysconf'
22225 d_sysernlst='$d_sysernlst'
22226 d_syserrlst='$d_syserrlst'
22227 d_system='$d_system'
22228 d_tcgetpgrp='$d_tcgetpgrp'
22229 d_tcsetpgrp='$d_tcsetpgrp'
22230 d_telldir='$d_telldir'
22231 d_telldirproto='$d_telldirproto'
22234 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
22235 d_tm_tm_zone='$d_tm_tm_zone'
22236 d_tmpnam_r='$d_tmpnam_r'
22237 d_truncate='$d_truncate'
22238 d_ttyname_r='$d_ttyname_r'
22239 d_tzname='$d_tzname'
22240 d_u32align='$d_u32align'
22241 d_ualarm='$d_ualarm'
22244 d_union_semun='$d_union_semun'
22245 d_unordered='$d_unordered'
22246 d_unsetenv='$d_unsetenv'
22247 d_usleep='$d_usleep'
22248 d_usleepproto='$d_usleepproto'
22250 d_vendorarch='$d_vendorarch'
22251 d_vendorbin='$d_vendorbin'
22252 d_vendorlib='$d_vendorlib'
22253 d_vendorscript='$d_vendorscript'
22255 d_void_closedir='$d_void_closedir'
22256 d_voidsig='$d_voidsig'
22257 d_voidtty='$d_voidtty'
22258 d_volatile='$d_volatile'
22259 d_vprintf='$d_vprintf'
22260 d_vsnprintf='$d_vsnprintf'
22262 d_waitpid='$d_waitpid'
22263 d_wcstombs='$d_wcstombs'
22264 d_wctomb='$d_wctomb'
22265 d_writev='$d_writev'
22268 db_hashtype='$db_hashtype'
22269 db_prefixtype='$db_prefixtype'
22270 db_version_major='$db_version_major'
22271 db_version_minor='$db_version_minor'
22272 db_version_patch='$db_version_patch'
22273 defvoidused='$defvoidused'
22274 direntrytype='$direntrytype'
22277 doublesize='$doublesize'
22279 drand48_r_proto='$drand48_r_proto'
22281 dynamic_ext='$dynamic_ext'
22287 endgrent_r_proto='$endgrent_r_proto'
22288 endhostent_r_proto='$endhostent_r_proto'
22289 endnetent_r_proto='$endnetent_r_proto'
22290 endprotoent_r_proto='$endprotoent_r_proto'
22291 endpwent_r_proto='$endpwent_r_proto'
22292 endservent_r_proto='$endservent_r_proto'
22293 eunicefix='$eunicefix'
22296 extensions='$extensions'
22298 fflushNULL='$fflushNULL'
22299 fflushall='$fflushall'
22301 firstmakefile='$firstmakefile'
22303 fpossize='$fpossize'
22304 fpostype='$fpostype'
22305 freetype='$freetype'
22308 full_csh='$full_csh'
22309 full_sed='$full_sed'
22310 gccansipedantic='$gccansipedantic'
22311 gccosandvers='$gccosandvers'
22312 gccversion='$gccversion'
22313 getgrent_r_proto='$getgrent_r_proto'
22314 getgrgid_r_proto='$getgrgid_r_proto'
22315 getgrnam_r_proto='$getgrnam_r_proto'
22316 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
22317 gethostbyname_r_proto='$gethostbyname_r_proto'
22318 gethostent_r_proto='$gethostent_r_proto'
22319 getlogin_r_proto='$getlogin_r_proto'
22320 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
22321 getnetbyname_r_proto='$getnetbyname_r_proto'
22322 getnetent_r_proto='$getnetent_r_proto'
22323 getprotobyname_r_proto='$getprotobyname_r_proto'
22324 getprotobynumber_r_proto='$getprotobynumber_r_proto'
22325 getprotoent_r_proto='$getprotoent_r_proto'
22326 getpwent_r_proto='$getpwent_r_proto'
22327 getpwnam_r_proto='$getpwnam_r_proto'
22328 getpwuid_r_proto='$getpwuid_r_proto'
22329 getservbyname_r_proto='$getservbyname_r_proto'
22330 getservbyport_r_proto='$getservbyport_r_proto'
22331 getservent_r_proto='$getservent_r_proto'
22332 getspnam_r_proto='$getspnam_r_proto'
22333 gidformat='$gidformat'
22339 gmtime_r_proto='$gmtime_r_proto'
22340 gnulibc_version='$gnulibc_version'
22342 groupcat='$groupcat'
22343 groupstype='$groupstype'
22346 h_sysfile='$h_sysfile'
22349 html1dir='$html1dir'
22350 html1direxp='$html1direxp'
22351 html3dir='$html3dir'
22352 html3direxp='$html3direxp'
22361 i_arpainet='$i_arpainet'
22362 i_assert='$i_assert'
22363 i_bsdioctl='$i_bsdioctl'
22367 i_dirent='$i_dirent'
22373 i_fp_class='$i_fp_class'
22375 i_gdbm_ndbm='$i_gdbm_ndbm'
22376 i_gdbmndbm='$i_gdbmndbm'
22378 i_ieeefp='$i_ieeefp'
22379 i_inttypes='$i_inttypes'
22380 i_langinfo='$i_langinfo'
22381 i_libutil='$i_libutil'
22382 i_limits='$i_limits'
22383 i_locale='$i_locale'
22384 i_machcthr='$i_machcthr'
22385 i_malloc='$i_malloc'
22386 i_mallocmalloc='$i_mallocmalloc'
22388 i_memory='$i_memory'
22389 i_mntent='$i_mntent'
22392 i_neterrno='$i_neterrno'
22393 i_netinettcp='$i_netinettcp'
22397 i_pthread='$i_pthread'
22399 i_rpcsvcdbm='$i_rpcsvcdbm'
22402 i_shadow='$i_shadow'
22404 i_stdarg='$i_stdarg'
22405 i_stddef='$i_stddef'
22406 i_stdlib='$i_stdlib'
22407 i_string='$i_string'
22408 i_sunmath='$i_sunmath'
22409 i_sysaccess='$i_sysaccess'
22410 i_sysdir='$i_sysdir'
22411 i_sysfile='$i_sysfile'
22412 i_sysfilio='$i_sysfilio'
22414 i_sysioctl='$i_sysioctl'
22415 i_syslog='$i_syslog'
22416 i_sysmman='$i_sysmman'
22417 i_sysmode='$i_sysmode'
22418 i_sysmount='$i_sysmount'
22419 i_sysndir='$i_sysndir'
22420 i_sysparam='$i_sysparam'
22421 i_syspoll='$i_syspoll'
22422 i_sysresrc='$i_sysresrc'
22423 i_syssecrt='$i_syssecrt'
22424 i_sysselct='$i_sysselct'
22425 i_syssockio='$i_syssockio'
22426 i_sysstat='$i_sysstat'
22427 i_sysstatfs='$i_sysstatfs'
22428 i_sysstatvfs='$i_sysstatvfs'
22429 i_systime='$i_systime'
22430 i_systimek='$i_systimek'
22431 i_systimes='$i_systimes'
22432 i_systypes='$i_systypes'
22433 i_sysuio='$i_sysuio'
22435 i_sysutsname='$i_sysutsname'
22436 i_sysvfs='$i_sysvfs'
22437 i_syswait='$i_syswait'
22438 i_termio='$i_termio'
22439 i_termios='$i_termios'
22441 i_unistd='$i_unistd'
22444 i_values='$i_values'
22445 i_varargs='$i_varargs'
22446 i_varhdr='$i_varhdr'
22448 ignore_versioned_solibs='$ignore_versioned_solibs'
22449 inc_version_list='$inc_version_list'
22450 inc_version_list_init='$inc_version_list_init'
22453 initialinstalllocation='$initialinstalllocation'
22454 installarchlib='$installarchlib'
22455 installbin='$installbin'
22456 installhtml1dir='$installhtml1dir'
22457 installhtml3dir='$installhtml3dir'
22458 installman1dir='$installman1dir'
22459 installman3dir='$installman3dir'
22460 installprefix='$installprefix'
22461 installprefixexp='$installprefixexp'
22462 installprivlib='$installprivlib'
22463 installscript='$installscript'
22464 installsitearch='$installsitearch'
22465 installsitebin='$installsitebin'
22466 installsitehtml1dir='$installsitehtml1dir'
22467 installsitehtml3dir='$installsitehtml3dir'
22468 installsitelib='$installsitelib'
22469 installsiteman1dir='$installsiteman1dir'
22470 installsiteman3dir='$installsiteman3dir'
22471 installsitescript='$installsitescript'
22472 installstyle='$installstyle'
22473 installusrbinperl='$installusrbinperl'
22474 installvendorarch='$installvendorarch'
22475 installvendorbin='$installvendorbin'
22476 installvendorhtml1dir='$installvendorhtml1dir'
22477 installvendorhtml3dir='$installvendorhtml3dir'
22478 installvendorlib='$installvendorlib'
22479 installvendorman1dir='$installvendorman1dir'
22480 installvendorman3dir='$installvendorman3dir'
22481 installvendorscript='$installvendorscript'
22483 issymlink='$issymlink'
22484 ivdformat='$ivdformat'
22487 known_extensions='$known_extensions'
22490 lddlflags='$lddlflags'
22492 ldflags_uselargefiles='$ldflags_uselargefiles'
22493 ldlibpthname='$ldlibpthname'
22500 libsdirs='$libsdirs'
22501 libsfiles='$libsfiles'
22502 libsfound='$libsfound'
22503 libspath='$libspath'
22504 libswanted='$libswanted'
22505 libswanted_uselargefiles='$libswanted_uselargefiles'
22511 localtime_r_proto='$localtime_r_proto'
22512 locincpth='$locincpth'
22513 loclibpth='$loclibpth'
22514 longdblsize='$longdblsize'
22515 longlongsize='$longlongsize'
22516 longsize='$longsize'
22520 lseeksize='$lseeksize'
22521 lseektype='$lseektype'
22524 madlyobj='$madlyobj'
22525 madlysrc='$madlysrc'
22529 make_set_make='$make_set_make'
22530 mallocobj='$mallocobj'
22531 mallocsrc='$mallocsrc'
22532 malloctype='$malloctype'
22534 man1direxp='$man1direxp'
22537 man3direxp='$man3direxp'
22539 mips_type='$mips_type'
22540 mistrustnm='$mistrustnm'
22542 mmaptype='$mmaptype'
22543 modetype='$modetype'
22545 multiarch='$multiarch'
22547 myarchname='$myarchname'
22548 mydomain='$mydomain'
22549 myhostname='$myhostname'
22552 need_va_copy='$need_va_copy'
22553 netdb_hlen_type='$netdb_hlen_type'
22554 netdb_host_type='$netdb_host_type'
22555 netdb_name_type='$netdb_name_type'
22556 netdb_net_type='$netdb_net_type'
22559 nm_so_opt='$nm_so_opt'
22560 nonxs_ext='$nonxs_ext'
22562 nvEUformat='$nvEUformat'
22563 nvFUformat='$nvFUformat'
22564 nvGUformat='$nvGUformat'
22565 nv_overflows_integers_at='$nv_overflows_integers_at'
22566 nv_preserves_uv_bits='$nv_preserves_uv_bits'
22567 nveformat='$nveformat'
22568 nvfformat='$nvfformat'
22569 nvgformat='$nvgformat'
22572 o_nonblock='$o_nonblock'
22574 old_pthread_create_joinable='$old_pthread_create_joinable'
22575 optimize='$optimize'
22576 orderlib='$orderlib'
22579 otherlibdirs='$otherlibdirs'
22583 patchlevel='$patchlevel'
22584 path_sep='$path_sep'
22587 perl_patchlevel='$perl_patchlevel'
22588 perladmin='$perladmin'
22589 perllibs='$perllibs'
22590 perlpath='$perlpath'
22592 phostname='$phostname'
22598 prefixexp='$prefixexp'
22600 privlibexp='$privlibexp'
22601 procselfexe='$procselfexe'
22602 prototype='$prototype'
22604 quadkind='$quadkind'
22605 quadtype='$quadtype'
22606 randbits='$randbits'
22607 randfunc='$randfunc'
22608 random_r_proto='$random_r_proto'
22609 randseedtype='$randseedtype'
22611 rd_nodata='$rd_nodata'
22612 readdir64_r_proto='$readdir64_r_proto'
22613 readdir_r_proto='$readdir_r_proto'
22614 revision='$revision'
22620 sPRIEUldbl='$sPRIEUldbl'
22621 sPRIFUldbl='$sPRIFUldbl'
22622 sPRIGUldbl='$sPRIGUldbl'
22623 sPRIXU64='$sPRIXU64'
22625 sPRIeldbl='$sPRIeldbl'
22626 sPRIfldbl='$sPRIfldbl'
22627 sPRIgldbl='$sPRIgldbl'
22632 sSCNfldbl='$sSCNfldbl'
22633 sched_yield='$sched_yield'
22634 scriptdir='$scriptdir'
22635 scriptdirexp='$scriptdirexp'
22637 seedfunc='$seedfunc'
22638 selectminbits='$selectminbits'
22639 selecttype='$selecttype'
22640 sendmail='$sendmail'
22641 setgrent_r_proto='$setgrent_r_proto'
22642 sethostent_r_proto='$sethostent_r_proto'
22643 setlocale_r_proto='$setlocale_r_proto'
22644 setnetent_r_proto='$setnetent_r_proto'
22645 setprotoent_r_proto='$setprotoent_r_proto'
22646 setpwent_r_proto='$setpwent_r_proto'
22647 setservent_r_proto='$setservent_r_proto'
22650 sharpbang='$sharpbang'
22651 shmattype='$shmattype'
22652 shortsize='$shortsize'
22655 sig_count='$sig_count'
22656 sig_name='$sig_name'
22657 sig_name_init='$sig_name_init'
22659 sig_num_init='$sig_num_init'
22660 sig_size='$sig_size'
22661 signal_t='$signal_t'
22662 sitearch='$sitearch'
22663 sitearchexp='$sitearchexp'
22665 sitebinexp='$sitebinexp'
22666 sitehtml1dir='$sitehtml1dir'
22667 sitehtml1direxp='$sitehtml1direxp'
22668 sitehtml3dir='$sitehtml3dir'
22669 sitehtml3direxp='$sitehtml3direxp'
22671 sitelib_stem='$sitelib_stem'
22672 sitelibexp='$sitelibexp'
22673 siteman1dir='$siteman1dir'
22674 siteman1direxp='$siteman1direxp'
22675 siteman3dir='$siteman3dir'
22676 siteman3direxp='$siteman3direxp'
22677 siteprefix='$siteprefix'
22678 siteprefixexp='$siteprefixexp'
22679 sitescript='$sitescript'
22680 sitescriptexp='$sitescriptexp'
22681 sizesize='$sizesize'
22682 sizetype='$sizetype'
22686 sockethdr='$sockethdr'
22687 socketlib='$socketlib'
22688 socksizetype='$socksizetype'
22690 spackage='$spackage'
22691 spitshell='$spitshell'
22692 srand48_r_proto='$srand48_r_proto'
22693 srandom_r_proto='$srandom_r_proto'
22695 ssizetype='$ssizetype'
22696 startperl='$startperl'
22698 static_ext='$static_ext'
22700 stdio_base='$stdio_base'
22701 stdio_bufsiz='$stdio_bufsiz'
22702 stdio_cnt='$stdio_cnt'
22703 stdio_filbuf='$stdio_filbuf'
22704 stdio_ptr='$stdio_ptr'
22705 stdio_stream_array='$stdio_stream_array'
22706 strerror_r_proto='$strerror_r_proto'
22709 subversion='$subversion'
22713 targetarch='$targetarch'
22717 timeincl='$timeincl'
22718 timetype='$timetype'
22719 tmpnam_r_proto='$tmpnam_r_proto'
22725 ttyname_r_proto='$ttyname_r_proto'
22734 uidformat='$uidformat'
22740 uquadtype='$uquadtype'
22741 use5005threads='$use5005threads'
22742 use64bitall='$use64bitall'
22743 use64bitint='$use64bitint'
22744 usecrosscompile='$usecrosscompile'
22746 usedtrace='$usedtrace'
22747 usefaststdio='$usefaststdio'
22748 useithreads='$useithreads'
22749 uselargefiles='$uselargefiles'
22750 uselongdouble='$uselongdouble'
22751 usemallocwrap='$usemallocwrap'
22752 usemorebits='$usemorebits'
22753 usemultiplicity='$usemultiplicity'
22754 usemymalloc='$usemymalloc'
22756 useopcode='$useopcode'
22757 useperlio='$useperlio'
22758 useposix='$useposix'
22759 usereentrant='$usereentrant'
22760 userelocatableinc='$userelocatableinc'
22762 useshrplib='$useshrplib'
22763 usesitecustomize='$usesitecustomize'
22764 usesocks='$usesocks'
22765 usethreads='$usethreads'
22766 usevendorprefix='$usevendorprefix'
22767 usevfork='$usevfork'
22770 uvXUformat='$uvXUformat'
22771 uvoformat='$uvoformat'
22774 uvuformat='$uvuformat'
22775 uvxformat='$uvxformat'
22776 vendorarch='$vendorarch'
22777 vendorarchexp='$vendorarchexp'
22778 vendorbin='$vendorbin'
22779 vendorbinexp='$vendorbinexp'
22780 vendorhtml1dir='$vendorhtml1dir'
22781 vendorhtml1direxp='$vendorhtml1direxp'
22782 vendorhtml3dir='$vendorhtml3dir'
22783 vendorhtml3direxp='$vendorhtml3direxp'
22784 vendorlib='$vendorlib'
22785 vendorlib_stem='$vendorlib_stem'
22786 vendorlibexp='$vendorlibexp'
22787 vendorman1dir='$vendorman1dir'
22788 vendorman1direxp='$vendorman1direxp'
22789 vendorman3dir='$vendorman3dir'
22790 vendorman3direxp='$vendorman3direxp'
22791 vendorprefix='$vendorprefix'
22792 vendorprefixexp='$vendorprefixexp'
22793 vendorscript='$vendorscript'
22794 vendorscriptexp='$vendorscriptexp'
22796 version_patchlevel_string='$version_patchlevel_string'
22797 versiononly='$versiononly'
22799 voidflags='$voidflags'
22802 yaccflags='$yaccflags'
22807 : Add in command line options if available
22808 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
22810 : add special variables
22811 $test -f $src/patchlevel.h && \
22812 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
22813 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
22814 echo "PERL_CONFIG_SH=true" >>config.sh
22816 : propagate old symbols
22817 if $test -f UU/config.sh; then
22818 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
22819 $sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' \
22820 config.sh config.sh UU/oldconfig.sh |\
22821 $sort | $uniq -u >UU/oldsyms
22822 set X `cat UU/oldsyms`
22828 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
22830 echo ": Variables propagated from previous config.sh file." >>config.sh
22831 for sym in `cat UU/oldsyms`; do
22832 echo " Propagating $hint variable "'$'"$sym..."
22833 eval 'tmp="$'"${sym}"'"'
22835 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
22841 : Finish up by extracting the .SH files
22845 echo "Extraction done."
22855 If you'd like to make any changes to the config.sh file before I begin
22856 to configure things, do it as a shell escape now (e.g. !vi config.sh).
22859 rp="Press return or use a shell escape to edit config.sh:"
22864 *) : in case they cannot read
22865 sh 1>&4 -c "$ans";;
22870 : if this fails, just run all the .SH files by hand
22879 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
22886 Now you need to generate make dependencies by running "$make depend".
22887 You might prefer to run it in background: "$make depend > makedepend.out &"
22888 It can take a while, so you might not want to run it right now.
22893 rp="Run $make depend now?"
22897 $make depend && echo "Now you must run '$make'."
22900 echo "You must run '$make depend' then '$make'."
22903 elif test -f [Mm]akefile; then
22905 echo "Now you must run a $make."
22907 echo "Configure done."
22910 if $test -f Policy.sh; then
22913 If you compile $package on a different machine or from a different object
22914 directory, copy the Policy.sh file from this object directory to the
22915 new one before you run Configure -- this will help you with most of
22916 the policy defaults.
22920 if $test -f config.msg; then
22921 echo "Hmm. I also noted the following information while running:"
22923 $cat config.msg >&4
22926 $rm -f kit*isdone ark*isdone