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-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Fri Mar 15 17:38:07 EET 2002 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
29 SCO csh still thinks true is false. Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
32 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
35 [End of diatribe. We now return you to your regularly scheduled programming...]
39 OOPS! You naughty creature! You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
50 : compute my invocation name
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
59 : Proper separator for the PATH environment variable
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67 elif test -n "$DJGPP"; then
68 case "X${MACHTYPE:-nonesuchmach}" in
76 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
77 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
78 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
79 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
80 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
81 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
82 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
83 paths="$paths /sbin /usr/sbin /usr/libexec"
84 paths="$paths /system/gnu_library/bin"
90 *) test -d $p && PATH=$PATH$p_$p ;;
97 : shall we be using ksh?
103 if (PATH=.; alias -x) >/dev/null 2>&1; then
106 if test -f /hp-ux -a -f /bin/ksh; then
107 needksh='to avoid sh bug in "here document" expansion'
109 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
110 if test X`/usr/bin/uname -v` = X4; then
111 avoidksh="to avoid AIX 4's /bin/sh"
115 if test -f /osf_boot -a -f /usr/sbin/setld; then
116 if test X`/usr/bin/uname -s` = XOSF1; then
117 avoidksh="to avoid Digital UNIX' ksh"
119 unset BIN_SH # if this is 'xpg4' sh will start up ksh
122 case "$inksh/$needksh" in
129 case "$inksh/$avoidksh" in
135 case "$inksh/$needksh-$avoidksh-" in
138 (I see you are using the Korn shell. Some ksh's blow up on $me,
139 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
146 echo "(Feeding myself to $newsh $reason.)"
148 Configure|*/Configure) exec $newsh $0 "$@";;
149 *) exec $newsh Configure "$@";;
154 : if needed set CDPATH to a harmless value that is not chatty
155 : avoid bash 2.02 problems with empty CDPATH.
159 *bash*) CDPATH='.' ;;
164 : Configure runs within the UU subdirectory
165 test -d UU || mkdir UU
375 endhostent_r_proto=''
381 endprotoent_r_proto=''
387 endservent_r_proto=''
437 gethostbyaddr_r_proto=''
439 gethostbyname_r_proto=''
441 gethostent_r_proto=''
453 getnetbyaddr_r_proto=''
455 getnetbyname_r_proto=''
469 d_getprotobyname_r=''
470 getprotobyname_r_proto=''
471 d_getprotobynumber_r=''
472 getprotobynumber_r_proto=''
474 getprotoent_r_proto=''
486 getservbyname_r_proto=''
488 getservbyport_r_proto=''
490 getservent_r_proto=''
563 d_old_pthread_create_joinable=''
564 old_pthread_create_joinable=''
603 sethostent_r_proto=''
620 setprotoent_r_proto=''
632 setservent_r_proto=''
676 d_stdio_ptr_lval_nochange_cnt=''
677 d_stdio_ptr_lval_sets_cnt=''
871 inc_version_list_init=''
890 ignore_versioned_solibs=''
949 d_perl_otherlibdirs=''
963 version_patchlevel_string=''
968 d_nv_preserves_uv_bits=''
1067 d_stdio_stream_array=''
1068 stdio_stream_array=''
1078 ccflags_uselargefiles=''
1079 ldflags_uselargefiles=''
1080 libswanted_uselargefiles=''
1100 installvendorarch=''
1126 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1129 : We must find out about Eunice early
1131 if test -f /etc/unixtovms; then
1132 eunicefix=/etc/unixtovms
1134 if test -f /etc/unixtovms.exe; then
1135 eunicefix=/etc/unixtovms.exe
1138 : Set executable suffix now -- needed before hints available
1139 if test -f "/libs/version.library"; then
1142 elif test -f "/system/gnu_library/bin/ar.pm"; then
1145 elif test -n "$DJGPP"; then
1148 elif test -d c:/. ; then
1157 : set useposix=false in your hint file to disable the POSIX extension.
1159 : set useopcode=false in your hint file to disable the Opcode extension.
1161 : Trailing extension. Override this in a hint file, if needed.
1162 : Extra object files, if any, needed on this platform.
1165 : Possible local include directories to search.
1166 : Set locincpth to "" in a hint file to defeat local include searches.
1167 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1168 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1170 : no include file wanted by default
1175 : change the next line if compiling for Xenix/286 on Xenix/386
1176 xlibpth='/usr/lib/386 /lib/386'
1177 : Possible local library directories to search.
1178 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1179 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1181 : general looking path for locating libraries
1182 glibpth="/lib /usr/lib $xlibpth"
1183 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1184 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1185 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1187 : Private path used by Configure to find libraries. Its value
1188 : is prepended to libpth. This variable takes care of special
1189 : machines, like the mips. Usually, it should be empty.
1192 : default library list
1194 : some systems want to use only the non-versioned libso:s
1195 ignore_versioned_solibs=''
1197 ccflags_uselargefiles=''
1198 ldflags_uselargefiles=''
1199 libswanted_uselargefiles=''
1200 : set usemultiplicity on the Configure command line to enable multiplicity.
1201 : set usesocks on the Configure command line to enable socks.
1202 : set usethreads on the Configure command line to enable threads.
1203 usereentrant='undef'
1204 : full support for void wanted by default
1207 : List of libraries we want.
1208 : If anyone needs -lnet, put it in a hint file.
1209 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1210 libswanted="$libswanted dld ld sun m c cposix posix"
1211 libswanted="$libswanted ndir dir crypt sec"
1212 libswanted="$libswanted ucb bsd BSD PW x util"
1213 : We probably want to search /usr/shlib before most other libraries.
1214 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1215 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1216 glibpth="/usr/shlib $glibpth"
1217 : Do not use vfork unless overridden by a hint file.
1220 : Find the basic shell for Bourne shell scripts
1224 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1227 if test -f "$xxx"; then
1230 : Build up a list and do a single loop so we can 'break' out.
1231 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1232 for xxx in sh bash ksh pdksh ash; do
1234 try="$try ${p}/${xxx}"
1238 if test -f "$xxx"; then
1241 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1244 elif test -f "$xxx.exe"; then
1255 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1257 Usually it's in /bin/sh. How did you even get this far?
1258 Please contact me (Perl Maintainers) at perlbug@perl.org and
1259 we'll try to straighten this all out.
1265 : see if sh knows # comments
1266 if `$sh -c '#' >/dev/null 2>&1`; then
1270 test -f $xcat$_exe || xcat=/usr/bin/cat
1271 if test ! -f $xcat$_exe; then
1272 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1273 if test -f $p/cat$_exe; then
1278 if test ! -f $xcat$_exe; then
1279 echo "Can't find cat anywhere!"
1283 echo "#!$xcat" >sharp
1287 if test -s today; then
1290 echo "#! $xcat" > sharp
1294 if test -s today; then
1302 echo "Your $sh doesn't grok # comments--I will strip them later on."
1305 echo "exec grep -v '^[ ]*#'" >spitshell
1307 $eunicefix spitshell
1308 spitshell=`pwd`/spitshell
1310 echo "I presume that if # doesn't work, #! won't work either!"
1315 : figure out how to guarantee sh startup
1317 '') startsh=${sharpbang}${sh} ;;
1329 : echo "Yup, it does."
1331 echo "Hmm... '$startsh' does not guarantee sh startup..."
1332 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1337 : Save command line options in file UU/cmdline.opt for later use in
1338 : generating config.sh.
1339 cat > cmdline.opt <<EOSH
1340 # Configure command line arguments.
1349 cat >>cmdline.opt <<EOSH
1350 config_arg$argn='$arg'
1352 # Extreme backslashitis: replace each ' by '"'"'
1353 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1356 arg_exp=`cat cmdl.opt`
1357 args_exp="$args_exp$args_sep'$arg_exp'"
1358 argn=`expr $argn + 1`
1361 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1362 # used by ./hints/os2.sh
1365 : produce awk script to parse command line options
1366 cat >options.awk <<'EOF'
1368 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1370 len = length(optstr);
1371 for (i = 1; i <= len; i++) {
1372 c = substr(optstr, i, 1);
1373 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1384 if (substr(str, 1, 1) != "-") {
1385 printf("'%s'\n", str);
1389 for (i = 2; i <= len; i++) {
1390 c = substr(str, i, 1);
1392 printf("-%s\n", substr(str, i));
1398 printf("'%s'\n", substr(str, i + 1));
1411 : process the command line options
1412 set X `for arg in "$@"; do echo "X$arg"; done |
1413 sed -e s/X// | awk -f options.awk`
1418 : set up default values
1428 rm -f optdef.sh posthint.sh
1429 cat >optdef.sh <<EOS
1435 while test $# -gt 0; do
1437 -d) shift; fastread=yes;;
1438 -e) shift; alldone=cont;;
1442 if test -r "$1"; then
1445 echo "$me: cannot read config file $1." >&2
1450 -h) shift; error=true;;
1451 -r) shift; reuseval=true;;
1452 -s) shift; silent=true; realsilent=true;;
1453 -E) shift; alldone=exit;;
1454 -K) shift; knowitall=true;;
1455 -O) shift; override=true;;
1456 -S) shift; silent=true; extractsh=true;;
1461 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1462 echo "$me: ignoring -D $1" >&2
1465 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1466 *) echo "$1='define'" >> optdef.sh;;
1473 *=) echo "$1" >> optdef.sh;;
1475 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1476 echo "$me: ignoring -U $1" >&2
1478 *) echo "$1='undef'" >> optdef.sh;;
1489 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1493 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1494 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1500 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1501 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1502 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1503 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1504 *) xxx=`echo $yyy|sed 's!:.*!!'`
1505 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1511 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1513 echo "$yyy=''" >> posthint.sh ;;
1518 echo "$yyy='$zzz'" >> posthint.sh ;;
1520 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1522 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1527 echo "$yyy=$zzz" >> posthint.sh ;;
1528 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1532 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1535 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1543 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1544 [-U symbol] [-U symbol=] [-A command:symbol...]
1545 -d : use defaults for all answers.
1546 -e : go on without questioning past the production of config.sh.
1547 -f : specify an alternate default configuration file.
1548 -h : print this help message and exit (with an error status).
1549 -r : reuse C symbols value if possible (skips costly nm extraction).
1550 -s : silent mode, only echoes questions and essential information.
1551 -D : define symbol to have some value:
1552 -D symbol symbol gets the value 'define'
1553 -D symbol=value symbol gets the value 'value'
1554 -E : stop at the end of questions, after having produced config.sh.
1555 -K : do not use unless you know what you are doing.
1556 -O : let -D and -U override definitions from loaded configuration file.
1557 -S : perform variable substitutions on all .SH files (can mix with -f)
1558 -U : undefine symbol:
1559 -U symbol symbol gets the value 'undef'
1560 -U symbol= symbol gets completely empty
1561 -A : manipulate symbol after the platform specific hints have been applied:
1562 -A symbol=value append " "value to symbol
1563 -A append:symbol=value append value to symbol
1564 -A define:symbol=value define symbol to have value
1565 -A clear:symbol define symbol to be ''
1566 -A define:symbol define symbol to be 'define'
1567 -A eval:symbol=value define symbol to be eval of value
1568 -A prepend:symbol=value prepend value to symbol
1569 -A undef:symbol define symbol to be 'undef'
1570 -A undef:symbol= define symbol to be ''
1571 -V : print version number and exit (with a zero status).
1578 case "$fastread$alldone" in
1581 case "$extractsh" in
1584 if test ! -t 0; then
1585 echo "Say 'sh Configure', not 'sh <Configure'"
1595 true) exec 1>/dev/null;;
1598 : run the defines and the undefines, if any, but leave the file out there...
1601 : create the posthint manipulation script and leave the file out there...
1606 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1607 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1608 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1609 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1610 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1613 : Some greps do not return status, grrr.
1614 echo "grimblepritz" >grimble
1615 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1617 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1623 : the following should work in any shell
1627 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1628 cat >contains <<'EOSS'
1629 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1634 : Find the path to the source tree
1637 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1641 *) src=`cd ../$src && pwd` ;;
1654 if test -f $rsrc/Configure && \
1655 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1657 : found it, so we are ok.
1660 for src in . .. ../.. ../../.. ../../../..; do
1661 if test -f ../$src/Configure && \
1662 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1673 Sorry, I can't seem to locate the source dir for $package. Please start
1674 Configure with an explicit path -- i.e. /some/path/Configure.
1682 echo "Sources for $package found in \"$src\"." >&4
1686 : script used to extract .SH files with variable substitutions
1687 cat >extract <<'EOS'
1689 echo "Doing variable substitutions on .SH files..."
1690 if test -f MANIFEST; then
1691 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1693 echo "(Looking for .SH files under the source directory.)"
1694 set x `(cd "$src"; find . -name "*.SH" -print)`
1698 0) set x `(cd "$src"; echo *.SH)`; shift;;
1700 if test ! -f "$src/$1"; then
1706 while test $name; do
1707 if test ! -d "$name"; then
1708 create="$name $create";
1709 name=`echo $name | sed -e "s|^[^/]*$||"`;
1710 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1715 for file in $create; do
1724 dir=`expr X$file : 'X\(.*\)/'`
1725 file=`expr X$file : 'X.*/\(.*\)'`
1726 (cd "$dir" && . ./$file)
1736 dir=`expr X$file : 'X\(.*\)/'`
1737 file=`expr X$file : 'X.*/\(.*\)'`
1738 (set x $dir; shift; eval $mkdir_p)
1739 sh <"$src/$dir/$file"
1748 if test -f "$src/config_h.SH"; then
1749 if test ! -f config.h; then
1750 : oops, they left it out of MANIFEST, probably, so do it anyway.
1751 . "$src/config_h.SH"
1756 : extract files and exit if asked to do so
1757 case "$extractsh" in
1759 case "$realsilent" in
1763 case "$config_sh" in
1764 '') config_sh='config.sh';;
1767 echo "Fetching answers from $config_sh..."
1770 test "$override" && . ./optdef.sh
1774 echo "Extraction done."
1779 : Eunice requires " " instead of "", can you believe it
1782 echo "Beginning of configuration questions for $package."
1784 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1786 : first determine how to suppress newline on echo command
1788 echo "Checking echo to see how to suppress newlines..."
1789 (echo "hi there\c" ; echo " ") >.echotmp
1790 if $contains c .echotmp >/dev/null 2>&1 ; then
1801 echo $n "The star should be here-->$c"
1805 : Now test for existence of everything in MANIFEST
1807 if test -f "$rsrc/MANIFEST"; then
1808 echo "First let's make sure your kit is complete. Checking..." >&4
1809 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1812 for filelist in x??; do
1813 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1815 if test -s missing; then
1819 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1821 You have the option of continuing the configuration process, despite the
1822 distinct possibility that your kit is damaged, by typing 'y'es. If you
1823 do, don't blame me if something goes wrong. I advise you to type 'n'o
1824 and contact the author (perlbug@perl.org).
1827 echo $n "Continue? [n] $c" >&4
1831 echo "Continuing..." >&4
1835 echo "ABORTING..." >&4
1840 echo "Looks good..."
1843 echo "There is no MANIFEST file. I hope your kit is complete !"
1848 : Find the appropriate value for a newline for tr
1849 if test -n "$DJGPP"; then
1852 if test X"$trnl" = X; then
1853 case "`echo foo|tr '\n' x 2>/dev/null`" in
1857 if test X"$trnl" = X; then
1858 case "`echo foo|tr '\012' x 2>/dev/null`" in
1859 foox) trnl='\012' ;;
1862 if test X"$trnl" = X; then
1865 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1871 : compute the number of columns on the terminal for proper question formatting
1876 : set up the echo used in my read
1877 myecho="case \"\$xxxm\" in
1878 '') echo $n \"\$rp $c\" >&4;;
1880 '') echo $n \"[\$xxxm] $c\";;
1882 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1884 echo $n \"[\$xxxm] $c\" >&4
1886 echo $n \"\$rp [\$xxxm] $c\" >&4
1892 : now set up to do reads with possible shell escape and default assignment
1898 case "\$fastread" in
1899 yes) case "\$dflt" in
1902 case "\$silent-\$rp" in
1907 *) case "\$silent" in
1908 true) case "\$rp" in
1913 while expr "X\$ans" : "X!" >/dev/null; do
1917 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1925 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1934 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1939 echo "(OK, I'll run with -d after this question.)" >&4
1942 echo "*** Sorry, \$1 not supported yet." >&4
1952 echo "*** Substitution done -- please confirm."
1954 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1959 echo "*** Error -- try again."
1966 case "\$ans\$xxxm\$nostick" in
1978 : create .config dir to save info across Configure sessions
1979 test -d ../.config || mkdir ../.config
1980 cat >../.config/README <<EOF
1981 This directory created by Configure to save information that should
1982 persist across sessions for $package.
1984 You may safely delete it if you wish.
1987 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1989 $define|true|[yY]*) ;;
1990 *) case "$xversion" in
1993 *** WHOA THERE!!! ***
1995 This is an UNSTABLE DEVELOPMENT release.
1996 The version of this $package distribution is $xversion, that is, odd,
1997 (as opposed to even) and that signifies a development release.
1998 If you want a maintenance release, you want an even-numbered version.
2000 Do ***NOT*** install this into production use.
2001 Data corruption and crashes are possible.
2003 It is most seriously suggested that you do not continue any further
2004 unless you want to help in developing and debugging Perl.
2006 If you *still* want to build perl, you can answer 'y' now,
2007 or pass -Dusedevel to Configure.
2010 rp='Do you really want to continue?'
2014 [yY]) echo >&4 "Okay, continuing."
2015 usedevel="$define" ;;
2016 *) echo >&4 "Okay, bye."
2026 case "$versiononly" in
2027 '') versiononly="$define" ;;
2029 case "$installusrbinperl" in
2030 '') installusrbinperl="$undef" ;;
2035 : general instructions
2038 user=`(logname) 2>/dev/null`
2040 '') user=`whoami 2>&1`;;
2042 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2045 rp='Would you like to see the instructions?'
2056 This installation shell script will examine your system and ask you questions
2057 to determine how the perl5 package should be installed. If you get
2058 stuck on a question, you may use a ! shell escape to start a subshell or
2059 execute a command. Many of the questions will have default answers in square
2060 brackets; typing carriage return will give you the default.
2062 On some of the questions which ask for file or directory names you are allowed
2063 to use the ~name construct to specify the login directory belonging to "name",
2064 even if you don't have a shell which knows about that. Questions where this is
2065 allowed will be marked "(~name ok)".
2069 dflt='Type carriage return to continue'
2073 The prompter used in this script allows you to use shell variables and
2074 backticks in your answers. You may use $1, $2, etc... to refer to the words
2075 in the default answer, as if the default line was a set of arguments given to a
2076 script shell. This means you may also use $* to repeat the whole default line,
2077 so you do not have to re-type everything to add something to the default.
2079 Everytime there is a substitution, you will have to confirm. If there is an
2080 error (e.g. an unmatched backtick), the default answer will remain unchanged
2081 and you will be prompted again.
2083 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
2084 the questions and use the computed defaults (or the previous answers if there
2085 was already a config.sh file). Type 'Configure -h' for a list of options.
2086 You may also start interactively and then answer '& -d' at any prompt to turn
2087 on the non-interactive behaviour for the remainder of the execution.
2093 Much effort has been expended to ensure that this shell script will run on any
2094 Unix system. If despite that it blows up on yours, your best bet is to edit
2095 Configure and run it again. If you can't run Configure for some reason,
2096 you'll have to generate a config.sh file by hand. Whatever problems you
2097 have, let me (perlbug@perl.org) know how I blew it.
2099 This installation script affects things in two ways:
2101 1) it may do direct variable substitutions on some of the files included
2103 2) it builds a config.h file for inclusion in C programs. You may edit
2104 any of these files as the need arises after running this script.
2106 If you make a mistake on a question, there is no easy way to back up to it
2107 currently. The easiest thing to do is to edit config.sh and rerun all the SH
2108 files. Configure will offer to let you do this before it runs the SH files.
2111 dflt='Type carriage return to continue'
2113 case "$firsttime" in
2114 true) echo $user >>../.config/instruct;;
2118 : find out where common programs are
2120 echo "Locating common programs..." >&4
2133 if test -d \$dir/\$thing; then
2139 for thisthing in \$dir/\$thing; do
2140 : just loop through to pick last item
2142 if test -f \$thisthing; then
2145 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2148 elif test -f \$dir/\$thing.exe; then
2149 if test -n "$DJGPP"; then
2150 echo \$dir/\$thing.exe
2152 : on Eunice apparently
2205 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2206 pth="$pth /lib /usr/lib"
2207 for file in $loclist; do
2211 if test -f "$xxx"; then
2214 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2215 xxx=`./loc $file $file $pth`
2218 '') xxx=`./loc $file $file $pth`;;
2219 *) xxx=`./loc $xxx $xxx $pth`;;
2221 eval $file=$xxx$_exe
2225 echo $file is in $xxx.
2228 echo $file is in $xxx.
2231 echo "I don't know where '$file' is, and my life depends on it." >&4
2232 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2238 echo "Don't worry if any of the following aren't found..."
2240 for file in $trylist; do
2244 if test -f "$xxx"; then
2247 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2248 xxx=`./loc $file $file $pth`
2251 '') xxx=`./loc $file $file $pth`;;
2252 *) xxx=`./loc $xxx $xxx $pth`;;
2254 eval $file=$xxx$_exe
2258 echo $file is in $xxx.
2261 echo $file is in $xxx.
2264 echo "I don't see $file out there, $say."
2271 echo "Substituting grep for egrep."
2278 echo "Substituting cp for ln."
2287 echo "I can't find make or gmake, and my life depends on it." >&4
2288 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2296 *) # We can't have osname yet.
2297 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2298 # Assume that gmake, if found, is definitely GNU make
2299 # and prefer it over the system make.
2300 echo "Substituting gmake for make."
2308 echo "Hopefully test is built into your sh."
2311 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2312 echo "Using the test built into your sh."
2320 echo "Hopefully echo is built into your sh."
2325 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2326 $echo $n "hi there$c" >foo1
2327 echo $n "hi there$c" >foo2
2328 if cmp foo1 foo2 >/dev/null 2>&1; then
2329 echo "They are compatible. In fact, they may be identical."
2336 They are not compatible! You are probably running ksh on a non-USG system.
2337 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2338 have echo built in and we may have to run some Bourne shell scripts. That
2339 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2342 $echo $n "The star should be here-->$c"
2352 cat <<'EOSC' >>trygcc
2357 int main(int argc, char *argv[]) {
2361 if $cc -o try $ccflags $ldflags try.c; then
2364 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2370 case "`$cc -v -c try.c 2>&1`" in
2373 if $test X"$trygcc" = Xyes; then
2374 if gcc -o try -c try.c; then
2376 echo "You seem to have a working gcc, though." >&4
2377 rp="Would you like to use it?"
2379 if $test -f myread; then
2382 if $test -f UU/myread; then
2385 echo "Cannot find myread, sorry. Aborting." >&2
2390 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2403 cat <<'EOSC' >>checkcc
2408 int main(int argc, char *argv[]) {
2412 if $cc -o try $ccflags $ldflags try.c; then
2415 if $test X"$despair" = Xyes; then
2416 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2419 You need to find a working C compiler.
2420 Either (purchase and) install the C compiler supplied by your OS vendor,
2421 or for a free C compiler try http://gcc.gnu.org/
2422 I cannot continue any further, aborting.
2431 : determine whether symbolic links are supported
2434 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2435 echo "Symbolic links are supported." >&4
2438 echo "Symbolic links are NOT supported." >&4
2443 : determine whether symbolic links are supported
2447 echo "Checking how to test for symbolic links..." >&4
2449 if $test "X$issymlink" = X; then
2451 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2452 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2454 if test $? = 0; then
2457 echo "Your builtin 'test -h' may be broken." >&4
2460 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2463 if test -f "$p/$test"; then
2472 echo "Trying external '$test -h'." >&4
2473 issymlink="$test -h"
2474 if $test ! -h sym >/dev/null 2>&1; then
2475 echo "External '$test -h' is broken, too." >&4
2483 if $test "X$issymlink" = X; then
2484 if $test -L sym 2>/dev/null; then
2485 issymlink="$test -L"
2486 echo "The builtin '$test -L' worked." >&4
2489 if $test "X$issymlink" != X; then
2490 echo "You can test for symbolic links with '$issymlink'." >&4
2492 echo "I do not know how you can test for symbolic links." >&4
2496 *) echo "No symbolic links, so not testing for their testing..." >&4
2502 case "$mksymlinks" in
2505 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2508 *) case "$lns:$issymlink" in
2509 *"ln"*" -s:"*"test -"?)
2510 echo "Creating the symbolic links..." >&4
2511 echo "(First creating the subdirectories...)" >&4
2513 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2515 test -z "$directory" && break
2519 if test ! -d t/base; then
2520 echo "Failed to create the subdirectories. Aborting." >&4
2523 echo "(Then creating the symlinks...)" >&4
2524 awk '{print $1}' $src/MANIFEST | while true; do
2526 test -z "$filename" && break
2527 if test -f $filename; then
2528 if $issymlink $filename; then
2532 if test -f $filename; then
2533 echo "$filename already exists, not symlinking."
2535 ln -s $src/$filename $filename
2539 if test ! -f t/base/lex.t; then
2540 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
2545 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2554 case "$usecrosscompile" in
2556 $echo "Cross-compiling..."
2559 *-*-gcc) # A cross-compiling gcc, probably.
2560 targetarch=`$echo $cc|$sed 's/-gcc$//'`
2562 # leave out ld, choosing it is more complex
2564 ranlib=$targetarch-ranlib
2565 $echo 'extern int foo;' > try.c
2566 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2568 if $test $# -gt 0; then
2570 incpth="`$echo $incpth|$sed 's/^ //'`"
2571 echo "Guessing incpth '$incpth'." >&4
2573 j="`$echo $i|$sed 's,/include$,/lib,'`"
2574 if $test -d $j; then
2578 libpth="`$echo $libpth|$sed 's/^ //'`"
2579 echo "Guessing libpth '$libpth'." >&4
2584 case "$targetarch" in
2585 '') echo "Targetarch not defined." >&4; croak=y ;;
2586 *) echo "Using targetarch $targetarch." >&4 ;;
2589 '') echo "Incpth not defined." >&4; croak=y ;;
2590 *) echo "Using incpth '$incpth'." >&4 ;;
2593 '') echo "Libpth not defined." >&4; croak=y ;;
2594 *) echo "Using libpth '$libpth'." >&4 ;;
2597 '') for i in $incpth; do
2598 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2600 echo "Guessing usrinc $usrinc." >&4
2605 '') echo "Usrinc not defined." >&4; croak=y ;;
2608 *) echo "Using usrinc $usrinc." >&4 ;;
2610 case "$targethost" in
2611 '') echo "Targethost not defined." >&4; croak=y ;;
2612 *) echo "Using targethost $targethost." >&4
2617 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2620 /*) run=$src/Cross/run
2621 targetmkdir=$src/Cross/mkdir
2623 from=$src/Cross/from
2625 *) pwd=`$test -f ../Configure & cd ..; pwd`
2627 targetmkdir=$pwd/Cross/mkdir
2629 from=$pwd/Cross/from
2632 case "$targetrun" in
2633 '') targetrun=ssh ;;
2638 case "$targetfrom" in
2639 '') targetfrom=scp ;;
2643 from=$from-$targetfrom
2644 case "$targetdir" in
2646 echo "Guessing targetdir $targetdir." >&4
2649 case "$targetuser" in
2651 echo "Guessing targetuser $targetuser." >&4
2654 case "$targetfrom" in
2658 case "$targetrun" in
2670 '') cwd=$targetdir ;;
2674 if $test ! -f \$exe.xok; then
2678 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2681 *) echo "Unknown targetrun '$targetrun'" >&4
2685 case "$targetmkdir" in
2687 cat >$targetmkdir <<EOF
2689 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2691 $chmod a+rx $targetmkdir
2693 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2705 $targetmkdir \`dirname \$f\`
2706 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2709 $targetmkdir $targetdir/\`dirname \$f\`
2710 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2723 $mkdir -p $targetdir/\`dirname \$f\`
2724 $cp \$f $targetdir/\$f || exit 1
2727 $targetmkdir $targetdir/\`dirname \$f\`
2728 $cp \$f $targetdir/\$f || exit 1
2735 *) echo "Unknown targetto '$targetto'" >&4
2739 case "$targetfrom" in
2746 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2751 cp) cat >$from <<EOF
2756 cp $targetdir/\$f . || exit 1
2761 *) echo "Unknown targetfrom '$targetfrom'" >&4
2765 if $test ! -f $run; then
2766 echo "Target 'run' script '$run' not found." >&4
2770 if $test ! -f $to; then
2771 echo "Target 'to' script '$to' not found." >&4
2775 if $test ! -f $from; then
2776 echo "Target 'from' script '$from' not found." >&4
2780 if $test ! -f $run -o ! -f $to -o ! -f $from; then
2784 Using '$run' for remote execution,
2785 and '$from' and '$to'
2786 for remote file transfer.
2792 usecrosscompile='undef'
2797 : see whether [:lower:] and [:upper:] are supported character classes
2799 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2801 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2805 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2806 # (0xc9 and 0xd1), therefore that is a nice testing point.
2807 if test "X$up" = X -o "X$low" = X; then
2808 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2814 if test "X$up" = X -o "X$low" = X; then
2815 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2821 if test "X$up" = X -o "X$low" = X; then
2822 case "`echo IJ | od -x 2>/dev/null`" in
2824 echo "Hey, this might be EBCDIC." >&4
2825 if test "X$up" = X -o "X$low" = X; then
2826 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2827 ij) up='[A-IJ-RS-Z]'
2832 if test "X$up" = X -o "X$low" = X; then
2833 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2843 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2845 echo "Using $up and $low to convert case." >&4
2848 echo "I don't know how to translate letters from upper to lower case." >&4
2849 echo "Your tr is not acting any way I know of." >&4
2853 : set up the translation script tr, must be called with ./tr of course
2857 '[A-Z][a-z]') exec $tr '$up' '$low';;
2858 '[a-z][A-Z]') exec $tr '$low' '$up';;
2865 : Try to determine whether config.sh was made on this system
2866 case "$config_sh" in
2868 myuname=`$uname -a 2>/dev/null`
2869 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2870 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2871 # because the A-Z/a-z are not consecutive.
2872 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2873 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2874 newmyuname="$myuname"
2876 case "$knowitall" in
2878 if test -f ../config.sh; then
2879 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2880 eval "`grep myuname= ../config.sh`"
2882 if test "X$myuname" = "X$newmyuname"; then
2890 : Get old answers from old config file if Configure was run on the
2891 : same system, otherwise use the hints.
2894 if test -f config.sh; then
2896 rp="I see a config.sh file. Shall I use it to set the defaults?"
2899 n*|N*) echo "OK, I'll ignore it."
2900 mv config.sh config.sh.old
2901 myuname="$newmyuname"
2903 *) echo "Fetching default answers from your old config.sh file..." >&4
2911 : Older versions did not always set $sh. Catch re-use of such
2921 if test ! -f config.sh; then
2924 First time through, eh? I have some defaults handy for some systems
2925 that need some extra help getting the Configure answers right:
2928 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2930 : Half the following guesses are probably wrong... If you have better
2931 : tests or hints, please send them to perlbug@perl.org
2932 : The metaconfig authors would also appreciate a copy...
2933 $test -f /irix && osname=irix
2934 $test -f /xenix && osname=sco_xenix
2935 $test -f /dynix && osname=dynix
2936 $test -f /dnix && osname=dnix
2937 $test -f /lynx.os && osname=lynxos
2938 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2939 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2940 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2941 $test -f /bin/mips && /bin/mips && osname=mips
2942 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2943 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2944 $test -d /usr/apollo/bin && osname=apollo
2945 $test -f /etc/saf/_sactab && osname=svr4
2946 $test -d /usr/include/minix && osname=minix
2947 $test -f /system/gnu_library/bin/ar.pm && osname=vos
2948 if $test -d /MachTen -o -d /MachTen_Folder; then
2950 if $test -x /sbin/version; then
2951 osvers=`/sbin/version | $awk '{print $2}' |
2952 $sed -e 's/[A-Za-z]$//'`
2953 elif $test -x /usr/etc/version; then
2954 osvers=`/usr/etc/version | $awk '{print $2}' |
2955 $sed -e 's/[A-Za-z]$//'`
2961 $test -f /sys/posix.dll &&
2962 $test -f /usr/bin/what &&
2963 set X `/usr/bin/what /sys/posix.dll` &&
2964 $test "$3" = UWIN &&
2968 if $test -f $uname; then
2976 umips) osname=umips ;;
2979 [23]100) osname=mips ;;
2980 next*) osname=next ;;
2982 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2983 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2986 elif $test -f /etc/kconfig; then
2988 if test "$lns" = "$ln -s"; then
2990 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2992 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2999 if test -n "$DJGPP"; then
3008 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3010 'not found') osvers="$4"."$3" ;;
3011 '<3240'|'<>3240') osvers=3.2.0 ;;
3012 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3013 '=3250'|'>3250') osvers=3.2.5 ;;
3017 bsd386) osname=bsd386
3020 cygwin*) osname=cygwin
3023 *dc.osx) osname=dcosx
3029 domainos) osname=apollo
3035 dynixptx*) osname=dynixptx
3036 osvers=`echo "$4"|sed 's/^v//'`
3038 freebsd) osname=freebsd
3040 genix) osname=genix ;;
3042 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3058 netbsd*) osname=netbsd
3061 news-os) osvers="$3"
3063 4*) osname=newsos4 ;;
3067 next*) osname=next ;;
3068 nonstop-ux) osname=nonstopux ;;
3069 POSIX-BC | posix-bc ) osname=posix-bc
3072 powerux | power_ux | powermax_os | powermaxos | \
3073 powerunix | power_unix) osname=powerux
3079 solaris) osname=solaris
3081 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3088 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3092 titanos) osname=titanos
3101 ultrix) osname=ultrix
3104 osf1|mls+) case "$5" in
3107 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3110 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3113 hp*) osname=hp_osf1 ;;
3114 mips) osname=mips_osf1 ;;
3117 unixware) osname=svr5
3125 $2) case "$osname" in
3129 : svr4.x or possibly later
3139 if test -f /stand/boot ; then
3140 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3141 if test -n "$INITPROG" -a -f "$INITPROG"; then
3142 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3143 if test -n "$isesix"; then
3151 *) if test -f /etc/systemid; then
3153 set `echo $3 | $sed 's/\./ /g'` $4
3154 if $test -f $src/hints/sco_$1_$2_$3.sh; then
3156 elif $test -f $src/hints/sco_$1_$2.sh; then
3158 elif $test -f $src/hints/sco_$1.sh; then
3163 '') : Still unknown. Probably a generic Sys V.
3172 *) case "$osname" in
3173 '') : Still unknown. Probably a generic BSD.
3181 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3182 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3183 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3186 $rm -f UU/kernel.what
3187 elif test -d c:/.; then
3194 case "$targetarch" in
3197 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3202 : Now look for a hint file osname_osvers, unless one has been
3203 : specified already.
3206 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3207 : Also try without trailing minor version numbers.
3208 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3209 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3210 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3211 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3214 *) case "$osvers" in
3217 *) if $test -f $src/hints/$file.sh ; then
3219 elif $test -f $src/hints/$xfile.sh ; then
3221 elif $test -f $src/hints/$xxfile.sh ; then
3223 elif $test -f $src/hints/$xxxfile.sh ; then
3225 elif $test -f $src/hints/$xxxxfile.sh ; then
3227 elif $test -f "$src/hints/${osname}.sh" ; then
3236 if $test -f Policy.sh ; then
3239 none) dflt="Policy" ;;
3240 *) dflt="Policy $dflt" ;;
3245 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3249 if $test -f Policy.sh ; then
3252 There's also a Policy hint file available, which should make the
3253 site-specific (policy) questions easier to answer.
3260 You may give one or more space-separated answers, or "none" if appropriate.
3261 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3262 is a good thing. DO NOT give a wrong version or a wrong OS.
3266 rp="Which of these apply, if any?"
3269 for file in $tans; do
3270 if $test X$file = XPolicy -a -f Policy.sh; then
3272 $cat Policy.sh >> UU/config.sh
3273 elif $test -f $src/hints/$file.sh; then
3274 . $src/hints/$file.sh
3275 $cat $src/hints/$file.sh >> UU/config.sh
3276 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3279 : Give one chance to correct a possible typo.
3280 echo "$file.sh does not exist"
3282 rp="hint to use instead?"
3284 for file in $ans; do
3285 if $test -f "$src/hints/$file.sh"; then
3286 . $src/hints/$file.sh
3287 $cat $src/hints/$file.sh >> UU/config.sh
3288 elif $test X$ans = X -o X$ans = Xnone ; then
3291 echo "$file.sh does not exist -- ignored."
3298 : Remember our hint file for later.
3299 if $test -f "$src/hints/$file.sh" ; then
3309 echo "Fetching default answers from $config_sh..." >&4
3313 cp $config_sh config.sh 2>/dev/null
3323 test "$override" && . ./optdef.sh
3325 : Restore computed paths
3326 for file in $loclist $trylist; do
3327 eval $file="\$_$file"
3332 Configure uses the operating system name and version to set some defaults.
3333 The default value is probably right if the name rings a bell. Otherwise,
3334 since spelling matters for me, either accept the default or answer "none"
3341 ''|' '|none) dflt=none ;;
3342 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3345 *) dflt="$osname" ;;
3347 rp="Operating system name?"
3351 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3357 ''|' '|none) dflt=none ;;
3358 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3359 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3361 ''|' ') dflt=none ;;
3366 *) dflt="$osvers" ;;
3368 rp="Operating system version?"
3378 : who configured the system
3379 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3380 cf_by=`(logname) 2>/dev/null`
3383 cf_by=`(whoami) 2>/dev/null`
3385 "") cf_by=unknown ;;
3389 : set up the script used to warn in case of inconsistency
3396 echo "*** WHOA THERE!!! ***" >&4
3397 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3398 rp=" Keep the $hint value?"
3401 y) td=$was; tu=$was;;
3405 : function used to set $1 to $val
3406 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3408 $define$undef) . ./whoa; eval "$var=\$td";;
3409 $undef$define) . ./whoa; eval "$var=\$tu";;
3410 *) eval "$var=$val";;
3413 case "$usethreads" in
3414 $define|true|[yY]*) dflt='y';;
3419 Perl can be built to take advantage of threads on some systems.
3420 To do so, Configure can be run with -Dusethreads.
3422 Note that threading is a highly experimental feature, and
3423 some known race conditions still remain. If you choose to try
3424 it, be very sure to not actually deploy it for production
3425 purposes. README.threads has more details, and is required
3426 reading if you enable threads.
3428 If this doesn't make any sense to you, just accept the default '$dflt'.
3430 rp='Build a threading Perl?'
3433 y|Y) val="$define" ;;
3439 case "$usethreads" in
3443 As of 5.5.640, Perl has two different internal threading implementations,
3444 the 5.005 version (5005threads) and an interpreter-based version
3445 (ithreads) that has one interpreter per thread. Both are very
3446 experimental. This arrangement exists to help developers work out
3447 which one is better.
3449 If you're a casual user, you probably don't want interpreter-threads
3450 at this time. But if you do, the 'threads' module allows their use,
3451 and the 'Thread' module offers an interface to both 5005threads and
3452 ithreads (whichever has been configured).
3454 : Default to ithreads unless overridden on command line or with
3457 case "$use5005threads" in
3458 $define|true|[yY]*) dflt='n';;
3460 case "$useithreads" in
3461 $undef|false|[nN]*) dflt='n';;
3463 rp='Use interpreter-based ithreads?'
3466 y|Y) val="$define" ;;
3471 : Now set use5005threads to the opposite value.
3472 case "$useithreads" in
3473 $define) val="$undef" ;;
3480 useithreads="$undef"
3481 use5005threads="$undef"
3485 case "$useithreads$use5005threads" in
3489 You cannot have both the ithreads and the 5.005 threads enabled
3490 at the same time. Disabling the 5.005 threads since they are
3491 much less stable than the ithreads.
3494 use5005threads="$undef"
3498 case "$d_oldpthreads" in
3499 '') : Configure tests would be welcome here. For now, assume undef.
3501 *) val="$d_oldpthreads" ;;
3507 case "$usethreads" in
3508 "$define"|true|[yY]*)
3509 : Look for a hint-file generated 'call-back-unit'. If the
3510 : user has specified that a threading perl is to be built,
3511 : we may need to set or change some other defaults.
3512 if $test -f usethreads.cbu; then
3513 echo "Your platform has some specific hints for threaded builds, using them..."
3517 (Your platform doesn't have any specific hints for threaded builds.
3518 Assuming POSIX threads, then.)
3526 Perl can be built so that multiple Perl interpreters can coexist
3527 within the same Perl executable.
3530 case "$useithreads" in
3533 This multiple interpreter support is required for interpreter-based threads.
3537 *) case "$usemultiplicity" in
3538 $define|true|[yY]*) dflt='y';;
3542 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3543 rp='Build Perl for multiplicity?'
3546 y|Y) val="$define" ;;
3555 case "$usemorebits" in
3556 "$define"|true|[yY]*)
3557 use64bitint="$define"
3558 uselongdouble="$define"
3559 usemorebits="$define"
3561 *) usemorebits="$undef"
3565 : make some quick guesses about what we are up against
3567 $echo $n "Hmm... $c"
3577 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3578 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3580 echo "Looks kind of like an OSF/1 system, but we'll see..."
3582 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3583 xxx=`./loc addbib blurfl $pth`
3584 if $test -f $xxx; then
3585 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3589 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3590 echo "Looks kind of like an extended USG system, but we'll see..."
3592 echo "Looks kind of like a USG system, but we'll see..."
3596 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3597 echo "Looks kind of like a BSD system, but we'll see..."
3601 echo "Looks kind of like a Version 7 system, but we'll see..."
3604 case "$eunicefix" in
3607 There is, however, a strange, musty smell in the air that reminds me of
3608 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3612 : it so happens the Eunice I know will not run shell scripts in Unix format
3616 echo "Congratulations. You aren't running Eunice."
3620 : Detect OS2. The p_ variable is set above in the Head.U unit.
3621 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3622 : semicolon as a patch separator
3627 I have the feeling something is not exactly right, however...don't tell me...
3628 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3629 (Or you may be running DOS with DJGPP.)
3634 if test -f /xenix; then
3635 echo "Actually, this looks more like a XENIX system..."
3640 echo "It's not Xenix..."
3645 if test -f /venix; then
3646 echo "Actually, this looks more like a VENIX system..."
3653 echo "Nor is it Venix..."
3656 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3657 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3664 rp="Use which C compiler?"
3668 : See if they have not cc but they do have gcc
3670 : Look for a hint-file generated 'call-back-unit'. Now that the
3671 : user has specified the compiler, we may need to set or change some
3673 if $test -f cc.cbu; then
3679 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3685 printf("%s\n", __VERSION__);
3687 printf("%s\n", "1");
3693 if $cc -o try $ccflags $ldflags try.c; then
3694 gccversion=`$run ./try`
3695 case "$gccversion" in
3696 '') echo "You are not using GNU cc." ;;
3697 *) echo "You are using GNU cc $gccversion."
3703 echo "*** WHOA THERE!!! ***" >&4
3704 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3705 case "$knowitall" in
3707 echo " You'd better start hunting for one and let me know about it." >&4
3713 case "$gccversion" in
3714 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3716 case "$gccversion" in
3717 '') gccosandvers='' ;;
3718 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3719 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3721 case "$gccosandvers" in
3722 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3723 $osname$osvers) ;; # looking good
3724 $osname*) cat <<EOM >&4
3726 *** WHOA THERE!!! ***
3728 Your gcc has not been compiled for the exact release of
3729 your operating system ($gccosandvers versus $osname$osvers).
3731 In general it is a good idea to keep gcc synchronized with
3732 the operating system because otherwise serious problems
3733 may ensue when trying to compile software, like Perl.
3735 I'm trying to be optimistic here, though, and will continue.
3736 If later during the configuration and build icky compilation
3737 problems appear (headerfile conflicts being the most common
3738 manifestation), I suggest reinstalling the gcc to match
3739 your operating system release.
3743 *) gccosandvers='' ;; # failed to parse, better be silent
3752 : decide how portable to be. Allow command line overrides.
3753 case "$d_portable" in
3755 *) d_portable="$define" ;;
3758 : set up shell script to do ~ expansion
3764 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3767 if $test -f /bin/csh; then
3768 /bin/csh -f -c "glob \$1"
3773 name=\`$expr x\$1 : '..\([^/]*\)'\`
3774 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3775 if $test ! -d "\$dir"; then
3777 echo "\$me: can't locate home directory for: \$name" >&2
3782 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3798 : now set up to get a file name
3802 cat <<'EOSC' >>getfile
3818 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3819 fn=`echo $fn | sed 's/(.*)//'`
3825 loc_file=`expr $fn : '.*:\(.*\)'`
3826 fn=`expr $fn : '\(.*\):.*'`
3834 */*) fullpath=true;;
3843 *e*) exp_file=true;;
3846 *p*) nopath_ok=true;;
3851 *d*) type='Directory';;
3852 *l*) type='Locate';;
3857 Locate) what='File';;
3862 case "$d_portable" in
3870 while test "$type"; do
3875 true) rp="$rp (~name ok)";;
3878 if test -f UU/getfile.ok && \
3879 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3898 value=`UU/filexp $ans`
3901 if test "$ans" != "$value"; then
3902 echo "(That expands to $value on this system.)"
3916 /*) value="$ansexp" ;;
3917 [a-zA-Z]:/*) value="$ansexp" ;;
3922 echo "I shall only accept a full path name, as in /bin/ls." >&4
3923 echo "Use a ! shell escape if you wish to check pathnames." >&4
3926 echo "Please give a full path name, starting with slash." >&4
3929 echo "Note that using ~name is ok provided it expands well." >&4
3942 for fp in $gfpth; do
3943 if test "X$fp" = X.; then
3948 if test -f "$pf"; then
3950 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3952 echo "($value is not a plain file, but that's ok.)"
3955 if test X"$type" = X; then
3962 for fp in $gfpth; do
3963 if test "X$fp" = X.; then
3968 direxp="$fp/$ansexp"
3970 if test -d "$direxp"; then
3978 if test -d "$ansexp"; then
3979 echo "(Looking for $loc_file in directory $value.)"
3980 value="$value/$loc_file"
3981 ansexp="$ansexp/$loc_file"
3983 if test -f "$ansexp"; then
3986 case "$nopath_ok" in
3987 true) case "$value" in
3989 *) echo "Assuming $value will be in people's path."
4005 if test "$fastread" = yes; then
4010 rp="$what $value doesn't exist. Use that name anyway?"
4029 test "X$gfpthkeep" != Xy && gfpth=""
4032 : What should the include directory be ?
4034 $echo $n "Hmm... $c"
4038 if $test -f /bin/mips && /bin/mips; then
4039 echo "Looks like a MIPS system..."
4040 $cat >usr.c <<'EOCP'
4041 #ifdef SYSTYPE_BSD43
4045 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4046 dflt='/bsd43/usr/include'
4050 mips_type='System V'
4052 $rm -f usr.c usr.out
4053 echo "and you're compiling with the $mips_type compiler and libraries."
4057 echo "Doesn't look like a MIPS system."
4067 case "$xxx_prompt" in
4070 rp='Where are the include files you want to use?'
4078 : see how we invoke the C preprocessor
4080 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4081 cat <<'EOT' >testcpp.c
4087 if test ! -f cppstdin; then
4088 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4089 # AIX cc -E doesn't show the absolute headerfile
4090 # locations but we'll cheat by using the -M flag.
4091 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
4093 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4096 echo "Keeping your $hint cppstdin wrapper."
4099 wrapper=`pwd`/cppstdin
4103 if $test "X$cppstdin" != "X" && \
4104 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4105 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4107 echo "You used to use $cppstdin $cppminus so we'll use that again."
4109 '') echo "But let's see if we can live without a wrapper..." ;;
4111 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4112 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4114 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4117 echo "(However, $cpprun $cpplast does not work, let's see...)"
4125 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4132 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4133 $cc -E <testcpp.c >testcpp.out 2>&1; \
4134 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4135 echo "Yup, it does."
4138 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4139 $cc -E - <testcpp.c >testcpp.out 2>&1; \
4140 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4141 echo "Yup, it does."
4144 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4145 $cc -P <testcpp.c >testcpp.out 2>&1; \
4146 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4147 echo "Yipee, that works!"
4150 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4151 $cc -P - <testcpp.c >testcpp.out 2>&1; \
4152 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4153 echo "At long last!"
4156 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4157 $cpp <testcpp.c >testcpp.out 2>&1; \
4158 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4162 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4163 $cpp - <testcpp.c >testcpp.out 2>&1; \
4164 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4165 echo "Hooray, it works! I was beginning to wonder."
4168 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
4169 $wrapper <testcpp.c >testcpp.out 2>&1; \
4170 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4176 rp="No dice. I can't find a C preprocessor. Name one:"
4180 $x_cpp <testcpp.c >testcpp.out 2>&1
4181 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4182 echo "OK, that will do." >&4
4184 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4199 echo "Perhaps can we force $cc -E using a wrapper..."
4200 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4201 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4207 echo "Nope, we'll have to live without it..."
4221 "$wrapper"|'cppstdin') ;;
4222 *) $rm -f $wrapper;;
4224 $rm -f testcpp.c testcpp.out
4226 : Set private lib path
4229 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4234 '') dlist="$loclibpth $plibpth $glibpth";;
4235 *) dlist="$libpth";;
4238 : Now check and see which directories actually exist, avoiding duplicates
4242 if $test -d $xxx; then
4245 *) libpth="$libpth $xxx";;
4251 Some systems have incompatible or broken versions of libraries. Among
4252 the directories listed in the question below, please remove any you
4253 know not to be holding relevant libraries, and add any that are needed.
4254 Say "none" for none.
4265 rp="Directories to use for library searches?"
4272 : compute shared library extension
4275 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4285 On some systems, shared libraries may be available. Answer 'none' if
4286 you want to suppress searching of shared libraries for the remainder
4287 of this configuration.
4290 rp='What is the file extension used for shared libraries?'
4294 : Define several unixisms.
4295 : Hints files or command line option can be used to override them.
4296 : The convoluted testing is in case hints files set either the old
4299 '') case "$exe_ext" in
4301 *) _exe="$exe_ext" ;;
4306 '') case "$lib_ext" in
4313 '') case "$obj_ext" in
4320 '') case "$path_sep" in
4331 : Which makefile gets called first. This is used by make depend.
4332 case "$firstmakefile" in
4333 '') firstmakefile='makefile';;
4337 $define|true|[yY]*) dflt='y';;
4342 Perl can be built to use the SOCKS proxy protocol library. To do so,
4343 Configure must be run with -Dusesocks. If you use SOCKS you also need
4344 to use the PerlIO abstraction layer, this will be implicitly selected.
4346 If this doesn't make any sense to you, just accept the default '$dflt'.
4348 rp='Build Perl for SOCKS?'
4351 y|Y) val="$define" ;;
4358 $define|true|[yY]*) useperlio="$define";;
4361 : Looking for optional libraries
4363 echo "Checking for optional libraries..." >&4
4368 case "$libswanted" in
4369 '') libswanted='c_s';;
4372 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4378 for thisdir in $libpth $xlibpth; do
4379 test -d $thisdir && libspath="$libspath $thisdir"
4381 for thislib in $libswanted; do
4382 for thisdir in $libspath; do
4384 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4385 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4386 $test -f "$xxx" && eval $libscheck
4387 $test -f "$xxx" && libstyle=shared
4389 if test ! -f "$xxx"; then
4390 xxx=$thisdir/lib$thislib.$so
4391 $test -f "$xxx" && eval $libscheck
4392 $test -f "$xxx" && libstyle=shared
4394 if test ! -f "$xxx"; then
4395 xxx=$thisdir/lib$thislib$_a
4396 $test -f "$xxx" && eval $libscheck
4397 $test -f "$xxx" && libstyle=static
4399 if test ! -f "$xxx"; then
4400 xxx=$thisdir/$thislib$_a
4401 $test -f "$xxx" && eval $libscheck
4402 $test -f "$xxx" && libstyle=static
4404 if test ! -f "$xxx"; then
4405 xxx=$thisdir/lib${thislib}_s$_a
4406 $test -f "$xxx" && eval $libscheck
4407 $test -f "$xxx" && libstyle=static
4408 $test -f "$xxx" && thislib=${thislib}_s
4410 if test ! -f "$xxx"; then
4411 xxx=$thisdir/Slib$thislib$_a
4412 $test -f "$xxx" && eval $libscheck
4413 $test -f "$xxx" && libstyle=static
4415 if $test -f "$xxx"; then
4417 shared) echo "Found -l$thislib (shared)." ;;
4418 static) echo "Found -l$thislib." ;;
4419 *) echo "Found -l$thislib ($libstyle)." ;;
4423 *) dflt="$dflt -l$thislib"
4424 libsfound="$libsfound $xxx"
4426 libsfiles="$libsfiles $yyy"
4427 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4428 case " $libsdirs " in
4430 *) libsdirs="$libsdirs $yyy" ;;
4437 if $test ! -f "$xxx"; then
4438 echo "No -l$thislib."
4449 ' '|'') dflt='none';;
4454 In order to compile $package on your machine, a number of libraries
4455 are usually needed. Include any other special libraries here as well.
4456 Say "none" for none. The default list is almost always right.
4460 rp="What libraries to use?"
4467 : determine optimization, if desired, or use for debug flag also
4469 ' '|$undef) dflt='none';;
4471 *) dflt="$optimize";;
4475 By default, $package compiles with the -O flag to use the optimizer.
4476 Alternately, you might want to use the symbolic debugger, which uses
4477 the -g flag (on traditional Unix systems). Either flag can be
4478 specified here. To use neither flag, specify the word "none".
4481 rp="What optimizer/debugger flag should be used?"
4485 'none') optimize=" ";;
4489 : We will not override a previous value, but we might want to
4490 : augment a hint file
4492 default|recommended)
4493 case "$gccversion" in
4494 1*) dflt='-fpcc-struct-return' ;;
4497 *-g*) dflt="$dflt -DDEBUGGING";;
4499 case "$gccversion" in
4500 2*) if test -d /etc/conf/kconfig.d &&
4501 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4507 case "$gccversion" in
4511 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4512 echo 'int main(void) { return 0; }' > gcctest.c
4513 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4514 echo "Yes, it does." 2>&1
4517 echo "Leaving current flags $ccflags alone." 2>&1
4519 *) dflt="$dflt -fno-strict-aliasing" ;;
4522 echo "Nope, it doesn't, but that's ok." 2>&1
4529 case "$mips_type" in
4530 *BSD*|'') inclwanted="$locincpth $usrinc";;
4531 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4533 for thisincl in $inclwanted; do
4534 if $test -d $thisincl; then
4535 if $test x$thisincl != x$usrinc; then
4537 *" -I$thisincl "*);;
4538 *) dflt="$dflt -I$thisincl ";;
4544 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4546 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4554 *) dflt="$dflt -D$2";;
4558 set signal.h LANGUAGE_C; eval $inctest
4562 ccflags="$ccflags -DSOCKS"
4567 default|recommended) dflt="$ccflags $dflt" ;;
4568 *) dflt="$ccflags";;
4577 Your C compiler may want other flags. For this question you should include
4578 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4579 but you should NOT include libraries or ld flags like -lwhatever. If you
4580 want $package to honor its debug switch, you should include -DDEBUGGING here.
4581 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4583 To use no flags, specify the word "none".
4589 rp="Any additional cc flags?"
4596 : the following weeds options from ccflags that are of no interest to cpp
4598 '') cppflags="$ccflags" ;;
4599 *) cppflags="$cppflags $ccflags" ;;
4601 case "$gccversion" in
4602 1*) cppflags="$cppflags -D__GNUC__"
4604 case "$mips_type" in
4606 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4612 echo "Let me guess what the preprocessor flags are..." >&4
4626 *) ftry="$previous $flag";;
4628 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4629 >cpp1.out 2>/dev/null && \
4630 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4631 >cpp2.out 2>/dev/null && \
4632 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4633 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4635 cppflags="$cppflags $ftry"
4645 *-*) echo "They appear to be: $cppflags";;
4647 $rm -f cpp.c cpp?.out
4651 : flags used in final linking phase
4653 '') if ./venix; then
4659 *-posix*) dflt="$dflt -posix" ;;
4662 *) dflt="$ldflags";;
4665 : Try to guess additional flags to pick up local libraries.
4666 for thislibdir in $libpth; do
4667 case " $loclibpth " in
4670 *"-L$thislibdir "*) ;;
4671 *) dflt="$dflt -L$thislibdir" ;;
4683 Your C linker may need flags. For this question you should
4684 include -L/whatever and any other flags used by the C linker, but you
4685 should NOT include libraries like -lwhatever.
4687 Make sure you include the appropriate -L/path flags if your C linker
4688 does not normally search all of the directories you specified above,
4691 To use no flags, specify the word "none".
4695 rp="Any additional ld flags (NOT including libraries)?"
4701 rmlist="$rmlist pdp11"
4705 echo "Checking your choice of C compiler and flags for coherency..." >&4
4706 $cat > try.c <<'EOF'
4708 int main() { printf("Ok\n"); exit(0); }
4710 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4712 $cat >try.msg <<'EOM'
4713 I've tried to compile and run the following simple program:
4716 $cat try.c >> try.msg
4718 $cat >> try.msg <<EOM
4725 and I got the following output:
4729 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4730 if $sh -c "$run ./try" >>try.msg 2>&1; then
4734 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4737 cat >> try.msg <<'EOQS'
4738 If $libs contains -lsfio, and sfio is mis-configured, then it
4739 sometimes (apparently) runs and exits with a 0 status, but with no
4740 output! It may have to do with sfio's use of _exit vs. exit.
4743 rp="You have a big problem. Shall I abort Configure"
4750 echo "The program compiled OK, but exited with status $?." >>try.msg
4751 rp="You have a problem. Shall I abort Configure"
4755 echo "I can't compile the test program." >>try.msg
4756 rp="You have a BIG problem. Shall I abort Configure"
4762 case "$knowitall" in
4764 echo "(The supplied flags or libraries might be incorrect.)"
4772 *) echo "Ok. Stopping Configure." >&4
4777 n) echo "OK, that should do.";;
4779 $rm -f try try.* core
4781 : define a shorthand compile call
4785 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4786 : define a shorthand compile call for compilations that should be ok.
4790 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4792 : check for lengths of integral types
4796 echo "Checking to see how big your integers are..." >&4
4797 $cat >try.c <<'EOCP'
4801 printf("intsize=%d;\n", (int)sizeof(int));
4802 printf("longsize=%d;\n", (int)sizeof(long));
4803 printf("shortsize=%d;\n", (int)sizeof(short));
4808 if eval $compile_ok && $run ./try > /dev/null; then
4810 echo "Your integers are $intsize bytes long."
4811 echo "Your long integers are $longsize bytes long."
4812 echo "Your short integers are $shortsize bytes long."
4816 Help! I can't compile and run the intsize test program: please enlighten me!
4817 (This is probably a misconfiguration in your system or libraries, and
4818 you really ought to fix it. Still, I'll try anyway.)
4822 rp="What is the size of an integer (in bytes)?"
4826 rp="What is the size of a long integer (in bytes)?"
4830 rp="What is the size of a short integer (in bytes)?"
4838 : check for void type
4840 echo "Checking to see how well your C compiler groks the void type..." >&4
4841 case "$voidflags" in
4843 $cat >try.c <<'EOCP'
4849 extern void moo(); /* function returning void */
4850 void (*goo)(); /* ptr to func returning void */
4852 void *hue; /* generic ptr */
4865 int main() { sub(); }
4867 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4868 voidflags=$defvoidused
4869 echo "Good. It appears to support void to the level $package wants.">&4
4870 if $contains warning .out >/dev/null 2>&1; then
4871 echo "However, you might get some warnings that look like this:"
4875 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4876 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4877 echo "It supports 1..."
4878 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4879 echo "It also supports 2..."
4880 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4882 echo "And it supports 4 but not 8 definitely."
4884 echo "It doesn't support 4..."
4885 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4887 echo "But it supports 8."
4890 echo "Neither does it support 8."
4894 echo "It does not support 2..."
4895 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4897 echo "But it supports 4 and 8."
4899 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4901 echo "And it supports 4 but has not heard about 8."
4903 echo "However it supports 8 but not 4."
4908 echo "There is no support at all for void."
4913 case "$voidflags" in
4916 Support flag bits are:
4917 1: basic void declarations.
4918 2: arrays of pointers to functions returning void.
4919 4: operations between pointers to and addresses of void functions.
4920 8: generic void pointers.
4923 rp="Your void support flags add up to what?"
4930 : check for length of pointer
4934 echo "Checking to see how big your pointers are..." >&4
4935 if test "$voidflags" -gt 7; then
4936 echo '#define VOID_PTR char *' > try.c
4938 echo '#define VOID_PTR void *' > try.c
4940 $cat >>try.c <<'EOCP'
4944 printf("%d\n", (int)sizeof(VOID_PTR));
4949 if eval $compile_ok; then
4950 ptrsize=`$run ./try`
4951 echo "Your pointers are $ptrsize bytes long."
4954 echo "(I can't seem to compile the test program. Guessing...)" >&4
4955 rp="What is the size of a pointer (in bytes)?"
4963 : check for long long
4965 echo "Checking to see if you have long long..." >&4
4966 echo 'int main() { long long x = 7; return 0; }' > try.c
4968 if eval $compile; then
4970 echo "You have long long."
4973 echo "You do not have long long."
4979 : check for length of long long
4980 case "${d_longlong}${longlongsize}" in
4983 echo "Checking to see how big your long longs are..." >&4
4984 $cat >try.c <<'EOCP'
4988 printf("%d\n", (int)sizeof(long long));
4993 if eval $compile_ok; then
4994 longlongsize=`$run ./try`
4995 echo "Your long longs are $longlongsize bytes long."
4999 echo "(I can't seem to compile the test program. Guessing...)"
5000 rp="What is the size of a long long (in bytes)?"
5004 if $test "X$longsize" = "X$longlongsize"; then
5005 echo "(That isn't any different from an ordinary long.)"
5011 : determine filename position in cpp output
5013 echo "Computing filename position in cpp output for #include directives..." >&4
5015 vos) testaccess=-e ;;
5018 echo '#include <stdio.h>' > foo.c
5021 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5022 $grep '^[ ]*#.*stdio\.h' | \
5023 while read cline; do
5026 while $test \$# -gt 0; do
5027 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5032 pos=\`expr \$pos + 1\`
5044 *) pos="${fieldn}th";;
5046 echo "Your cpp writes the filename in the $pos field of the line."
5049 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5052 : locate header file
5057 for usrincdir in $usrinc
5059 if test -f \$usrincdir/\$wanted; then
5060 echo "\$usrincdir/\$wanted"
5064 awkprg='{ print \$$fieldn }'
5065 echo "#include <\$wanted>" > foo\$\$.c
5066 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5067 $cppfilter $grep "^[ ]*#.*\$wanted" | \
5068 while read cline; do
5069 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5071 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5072 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5077 # status = 0: grep returned 0 lines, case statement not executed
5078 # status = 1: headerfile found
5079 # status = 2: while loop executed, no headerfile found
5083 if test \$status -eq 1; then
5090 : define an alternate in-header-list? function
5091 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5092 cont=true; xxf="echo \"<\$1> found.\" >&4";
5093 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5094 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5096 case $# in 4) instead=instead;; *) instead="at last";; esac;
5097 while $test "$cont"; do
5099 var=$2; eval "was=\$$2";
5100 if $test "$xxx" && $test -r "$xxx";
5102 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5105 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5106 set $yyy; shift; shift; yyy=$@;
5107 case $# in 0) cont="";;
5108 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5109 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5110 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5111 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5115 do set $yyy; var=$2; eval "was=\$$2";
5116 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5117 set $yyy; shift; shift; yyy=$@;
5120 : see if inttypes.h is available
5121 : we want a real compile instead of Inhdr because some systems
5122 : have an inttypes.h which includes non-existent headers
5125 #include <inttypes.h>
5127 static int32_t foo32 = 0x12345678;
5131 if eval $compile; then
5132 echo "<inttypes.h> found." >&4
5135 echo "<inttypes.h> NOT found." >&4
5144 echo "Checking to see if you have int64_t..." >&4
5146 #include <sys/types.h>
5147 #$i_inttypes I_INTTYPES
5149 #include <inttypes.h>
5151 int main() { int64_t x = 7; }
5154 if eval $compile; then
5156 echo "You have int64_t."
5159 echo "You do not have int64_t."
5167 echo "Checking which 64-bit integer type we could use..." >&4
5173 val='"unsigned int"'
5178 *) case "$longsize" in
5182 val='"unsigned long"'
5187 *) case "$d_longlong:$longlongsize" in
5192 val='"unsigned long long"'
5197 *) case "$d_int64_t" in
5216 '') echo "Alas, no 64-bit integer types in sight." >&4
5219 *) echo "We could use '$quadtype' for 64-bit integers." >&4
5225 case "$uselonglong" in
5226 "$define"|true|[yY]*)
5229 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5231 use64bitint="$define"
5234 case "$use64bits" in
5235 "$define"|true|[yY]*)
5238 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5240 use64bitint="$define"
5243 case "$use64bitints" in
5244 "$define"|true|[yY]*)
5247 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5249 use64bitint="$define"
5252 case "$use64bitsint" in
5253 "$define"|true|[yY]*)
5256 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5258 use64bitint="$define"
5261 case "$uselonglongs" in
5262 "$define"|true|[yY]*)
5265 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5267 use64bitint="$define"
5270 case "$use64bitsall" in
5271 "$define"|true|[yY]*)
5274 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5276 use64bitall="$define"
5281 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5283 case "$use64bitall" in
5284 "$define"|true|[yY]*) use64bitint="$define" ;;
5290 You have natively 64-bit long integers.
5294 *) case "$use64bitint" in
5295 "$define"|true|[yY]*) dflt='y';;
5304 Perl can be built to take advantage of 64-bit integer types
5305 on some systems. To do so, Configure can be run with -Duse64bitint.
5306 Choosing this option will most probably introduce binary incompatibilities.
5308 If this doesn't make any sense to you, just accept the default '$dflt'.
5309 (The default has been chosen based on your configuration.)
5311 rp='Try to use 64-bit integers, if available?'
5314 [yY]*) val="$define" ;;
5322 case "$use64bitall" in
5323 "$define"|true|[yY]*) dflt='y' ;;
5324 *) case "$longsize" in
5332 You may also choose to try maximal 64-bitness. It means using as much
5333 64-bitness as possible on the platform. This in turn means even more
5334 binary incompatibilities. On the other hand, your platform may not
5335 have any more 64-bitness available than what you already have chosen.
5337 If this doesn't make any sense to you, just accept the default '$dflt'.
5338 (The default has been chosen based on your configuration.)
5340 rp='Try to use maximal 64-bit support, if available?'
5343 [yY]*) val="$define" ;;
5348 case "$use64bitall" in
5350 case "$use64bitint" in
5354 Since you have chosen a maximally 64-bit build, I'm also turning on
5355 the use of 64-bit integers.
5357 use64bitint="$define" ;;
5362 case "$use64bitall" in
5363 "$define"|true|[yY]*)
5367 *** You have chosen a maximally 64-bit build, but your pointers
5368 *** are only 4 bytes wide, disabling maximal 64-bitness.
5371 use64bitall="$undef"
5372 case "$use64bitint" in
5373 "$define"|true|[yY]*) ;;
5376 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5379 use64bitint="$define"
5387 case "$use64bitint" in
5388 "$define"|true|[yY]*)
5389 : Look for a hint-file generated 'call-back-unit'. If the
5390 : user has specified that a 64-bit perl is to be built,
5391 : we may need to set or change some other defaults.
5392 if $test -f use64bitint.cbu; then
5393 echo "Your platform has some specific hints for 64-bit integers, using them..."
5397 4) case "$archname64" in
5398 '') archname64=64int ;;
5405 case "$use64bitall" in
5406 "$define"|true|[yY]*)
5407 : Look for a hint-file generated 'call-back-unit'. If the
5408 : user has specified that a maximally 64-bit perl is to be built,
5409 : we may need to set or change some other defaults.
5410 if $test -f use64bitall.cbu; then
5411 echo "Your platform has some specific hints for 64-bit builds, using them..."
5415 4) case "$archname64" in
5416 ''|64int) archname64=64all ;;
5424 echo "Checking for GNU C Library..." >&4
5437 if eval $compile_ok && $run ./try; then
5439 echo "You are using the GNU C Library"
5442 echo "You are not using the GNU C Library"
5448 : see if nm is to be used to determine whether a symbol is defined or not
5452 case "$d_gnulibc" in
5455 echo "nm probably won't work on the GNU C Library." >&4
5461 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5463 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5464 echo "'nm' won't be sufficient on this sytem." >&4
5470 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5471 if $test $dflt -gt 20; then
5481 true|$define) dflt=y;;
5488 I can use $nm to extract the symbols from your C libraries. This
5489 is a time consuming task which may generate huge output on the disk (up
5490 to 3 megabytes) but that should make the symbols extraction faster. The
5491 alternative is to skip the 'nm' extraction part and to compile a small
5492 test program instead to determine whether each symbol is present. If
5493 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5494 this may be the best solution.
5496 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5499 rp="Shall I use $nm to extract C symbols from the libraries?"
5502 [Nn]*) usenm=false;;
5511 : nm options which may be necessary
5513 '') if $test -f /mach_boot; then
5515 elif $test -d /usr/ccs/lib; then
5516 nm_opt='-p' # Solaris (and SunOS?)
5517 elif $test -f /dgux; then
5519 elif $test -f /lib64/rld; then
5520 nm_opt='-p' # 64-bit Irix
5526 : nm options which may be necessary for shared libraries but illegal
5527 : for archive libraries. Thank you, Linux.
5528 case "$nm_so_opt" in
5529 '') case "$myuname" in
5531 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5532 nm_so_opt='--dynamic'
5541 : get list of predefined functions in a handy place
5546 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5552 *) for thislib in $libs; do
5555 : Handle C library specially below.
5558 thislib=`echo $thislib | $sed -e 's/^-l//'`
5559 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5561 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5563 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5565 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5567 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5569 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5571 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5576 libnames="$libnames $try"
5578 *) libnames="$libnames $thislib" ;;
5587 for xxx in $libpth; do
5588 $test -r $1 || set $xxx/libc.$so
5589 : The messy sed command sorts on library version numbers.
5591 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5592 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5594 s/[0-9][0-9]*/0000&/g
5595 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5598 $sort | $sed -e 's/^.* //'`
5601 $test -r $1 || set /usr/ccs/lib/libc.$so
5602 $test -r $1 || set /lib/libsys_s$_a
5608 if $test -r "$1"; then
5609 echo "Your (shared) C library seems to be in $1."
5611 elif $test -r /lib/libc && $test -r /lib/clib; then
5612 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5614 libc='/lib/clib /lib/libc'
5615 if $test -r /lib/syslib; then
5616 echo "(Your math library is in /lib/syslib.)"
5617 libc="$libc /lib/syslib"
5619 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5620 echo "Your C library seems to be in $libc, as you said before."
5621 elif $test -r $incpath/usr/lib/libc$_a; then
5622 libc=$incpath/usr/lib/libc$_a;
5623 echo "Your C library seems to be in $libc. That's fine."
5624 elif $test -r /lib/libc$_a; then
5626 echo "Your C library seems to be in $libc. You're normal."
5628 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5630 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5631 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5632 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5634 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5636 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5639 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5641 if $test -r "$tans"; then
5642 echo "Your C library seems to be in $tans, of all places."
5648 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5652 If the guess above is wrong (which it might be if you're using a strange
5653 compiler, or your machine supports multiple models), you can override it here.
5658 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5660 I can't seem to find your C library. I've looked in the following places:
5663 $sed 's/^/ /' libpath
5666 None of these seems to contain your C library. I need to get its name...
5671 rp='Where is your C library?'
5676 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5677 set X `cat libnames`
5680 case $# in 1) xxx=file; esac
5681 echo "Extracting names from the following $xxx for later perusal:" >&4
5683 $sed 's/^/ /' libnames >&4
5685 $echo $n "This may take a while...$c" >&4
5689 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5690 *) $nm $nm_opt $file 2>/dev/null;;
5695 $grep fprintf libc.tmp > libc.ptf
5696 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5697 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5699 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5701 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5703 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5705 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5707 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5709 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5711 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5713 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5715 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5717 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5719 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5721 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5723 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5724 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5726 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5728 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5730 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5732 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5734 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5736 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5738 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5740 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5742 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5744 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5746 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5748 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5750 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5752 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5754 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5757 $nm -p $* 2>/dev/null >libc.tmp
5758 $grep fprintf libc.tmp > libc.ptf
5759 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5760 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5766 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5768 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5769 for thisname in $libnames $libc; do
5770 $ar t $thisname >>libc.tmp
5772 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5774 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5775 # Repeat libc to extract forwarders to DLL entries too
5776 for thisname in $libnames $libc; do
5777 $ar tv $thisname >>libc.tmp
5778 # Revision 50 of EMX has bug in $ar.
5779 # it will not extract forwarders to DLL entries
5780 # Use emximp which will extract exactly them.
5781 emximp -o tmp.imp $thisname \
5783 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5784 < tmp.imp >>libc.tmp
5787 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5790 echo "$ar didn't seem to work right." >&4
5791 echo "Maybe this is a Cray...trying bld instead..." >&4
5792 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5794 for thisname in $libnames; do
5796 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5797 $ar t $thisname >>libc.tmp
5801 echo "That didn't work either. Giving up." >&4
5808 if $test -f /lib/syscalls.exp; then
5810 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5811 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
5815 $rm -f libnames libpath
5817 : is a C symbol defined?
5820 -v) tf=libc.tmp; tc=""; tdc="";;
5821 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5822 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5825 case "$reuseval-$4" in
5827 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5833 if $contains $tlook $tf >/dev/null 2>&1;
5838 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5839 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5847 $define) tval=true;;
5853 : define an is-in-libc? function
5854 inlibc='echo " "; td=$define; tu=$undef;
5855 sym=$1; var=$2; eval "was=\$$2";
5857 case "$reuseval$was" in
5867 echo "$sym() found." >&4;
5868 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5870 echo "$sym() NOT found." >&4;
5871 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5875 $define) echo "$sym() found." >&4;;
5876 *) echo "$sym() NOT found." >&4;;
5880 : see if sqrtl exists
5884 : check for length of double
5886 case "$doublesize" in
5888 echo "Checking to see how big your double precision numbers are..." >&4
5889 $cat >try.c <<'EOCP'
5893 printf("%d\n", (int)sizeof(double));
5898 if eval $compile_ok; then
5899 doublesize=`$run ./try`
5900 echo "Your double is $doublesize bytes long."
5903 echo "(I can't seem to compile the test program. Guessing...)"
5904 rp="What is the size of a double precision number (in bytes)?"
5912 : check for long doubles
5914 echo "Checking to see if you have long double..." >&4
5915 echo 'int main() { long double x = 7.0; }' > try.c
5917 if eval $compile; then
5919 echo "You have long double."
5922 echo "You do not have long double."
5928 : check for length of long double
5929 case "${d_longdbl}${longdblsize}" in
5932 echo "Checking to see how big your long doubles are..." >&4
5933 $cat >try.c <<'EOCP'
5937 printf("%d\n", sizeof(long double));
5942 if eval $compile; then
5943 longdblsize=`$run ./try`
5944 echo "Your long doubles are $longdblsize bytes long."
5948 echo "(I can't seem to compile the test program. Guessing...)" >&4
5949 rp="What is the size of a long double (in bytes)?"
5953 if $test "X$doublesize" = "X$longdblsize"; then
5954 echo "(That isn't any different from an ordinary double.)"
5962 if $test X"$d_longdbl" = X"$define"; then
5964 echo "Checking how to print long doubles..." >&4
5966 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
5967 $cat >try.c <<'EOCP'
5968 #include <sys/types.h>
5972 printf("%.3f\n", d);
5976 if eval $compile; then
5980 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
5981 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
5982 echo "We will use %f."
5988 if $test X"$sPRIfldbl" = X; then
5989 $cat >try.c <<'EOCP'
5990 #include <sys/types.h>
5993 long double d = 123.456;
5994 printf("%.3Lf\n", d);
5998 if eval $compile; then
6002 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
6003 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
6004 echo "We will use %Lf."
6010 if $test X"$sPRIfldbl" = X; then
6011 $cat >try.c <<'EOCP'
6012 #include <sys/types.h>
6015 long double d = 123.456;
6016 printf("%.3llf\n", d);
6020 if eval $compile; then
6024 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
6025 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
6026 echo "We will use %llf."
6032 if $test X"$sPRIfldbl" = X; then
6033 $cat >try.c <<'EOCP'
6034 #include <sys/types.h>
6037 long double d = 123.456;
6038 printf("%.3lf\n", d);
6042 if eval $compile; then
6046 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
6047 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
6048 echo "We will use %lf."
6054 if $test X"$sPRIfldbl" = X; then
6055 echo "Cannot figure out how to print long doubles." >&4
6057 sSCNfldbl=$sPRIfldbl # expect consistency
6064 case "$sPRIfldbl" in
6065 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
6066 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
6067 d_SCNfldbl="$undef";
6069 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
6070 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
6071 d_SCNfldbl="$define";
6075 : see if modfl exists
6079 d_modfl_pow32_bug="$undef"
6081 case "$d_longdbl$d_modfl" in
6084 Checking to see whether your modfl() is okay for large values...
6090 long double nv = 4294967303.15;
6096 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
6100 case "$osname:$gccversion" in
6101 aix:) saveccflags="$ccflags"
6102 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
6105 if eval $compile; then
6108 *" 4294967303.150000 1.150000 4294967302.000000")
6109 echo >&4 "Your modfl() is broken for large values."
6110 d_modfl_pow32_bug="$define"
6112 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
6116 *" 4294967303.150000 0.150000 4294967303.000000")
6117 echo >&4 "Your modfl() seems okay for large values."
6119 *) echo >&4 "I don't understand your modfl() at all."
6123 $rm -f try.* try core core.try.*
6125 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
6128 case "$osname:$gccversion" in
6129 aix:) ccflags="$saveccflags" ;; # restore
6135 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6138 case "$uselongdouble" in
6139 $define|true|[yY]*) dflt='y';;
6144 Perl can be built to take advantage of long doubles which
6145 (if available) may give more accuracy and range for floating point numbers.
6147 If this doesn't make any sense to you, just accept the default '$dflt'.
6149 rp='Try to use long doubles if available?'
6152 y|Y) val="$define" ;;
6158 case "$uselongdouble" in
6159 true|[yY]*) uselongdouble="$define" ;;
6162 case "$uselongdouble" in
6164 : Look for a hint-file generated 'call-back-unit'. If the
6165 : user has specified that long doubles should be used,
6166 : we may need to set or change some other defaults.
6167 if $test -f uselongdouble.cbu; then
6168 echo "Your platform has some specific hints for long doubles, using them..."
6169 . ./uselongdouble.cbu
6172 (Your platform doesn't have any specific hints for long doubles.)
6179 case "$uselongdouble:$d_sqrtl:$d_modfl" in
6180 $define:$define:$define)
6183 $define:$define:$undef)
6184 message="I could not find modfl"
6186 $define:$undef:$define)
6187 message="I could not find sqrtl"
6189 $define:$undef:$undef)
6190 message="I found neither sqrtl nor modfl"
6194 if $test "$message" != X; then
6197 *** You requested the use of long doubles but you do not seem to have
6198 *** the mathematic functions for long doubles.
6200 *** I'm disabling the use of long doubles.
6204 uselongdouble=$undef
6207 case "$useperlio" in
6208 $define|true|[yY]*|'') dflt='y';;
6213 Previous version of $package used the standard IO mechanisms as
6214 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
6215 alternate IO mechanisms via the PerlIO abstraction layer, but the
6216 stdio mechanism is still available if needed. The abstraction layer
6217 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
6218 Using PerlIO with sfio may cause problems with some extension modules.
6220 If this doesn't make any sense to you, just accept the default '$dflt'.
6222 rp='Use the PerlIO abstraction layer?'
6229 echo "Ok, doing things the stdio way."
6238 case "$useperlio" in
6239 $define|true|[yY]*) ;;
6242 You are using the SOCKS proxy protocol library which means that you
6243 should also use the PerlIO layer. You may be headed for trouble.
6252 : determine the architecture name
6254 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6255 tarch=`arch`"-$osname"
6256 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6257 if uname -m > tmparch 2>&1 ; then
6258 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6259 -e 's/$/'"-$osname/" tmparch`
6267 case "$myarchname" in
6270 echo "(Your architecture name used to be $myarchname.)"
6274 case "$targetarch" in
6276 *) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6281 *) dflt="$archname";;
6283 rp='What is your architecture name'
6286 case "$usethreads" in
6288 echo "Threads selected." >&4
6290 *-thread*) echo "...and architecture name already has -thread." >&4
6292 *) archname="$archname-thread"
6293 echo "...setting architecture name to $archname." >&4
6298 case "$usemultiplicity" in
6300 echo "Multiplicity selected." >&4
6302 *-multi*) echo "...and architecture name already has -multi." >&4
6304 *) archname="$archname-multi"
6305 echo "...setting architecture name to $archname." >&4
6310 case "$use64bitint$use64bitall" in
6312 case "$archname64" in
6314 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6317 case "$use64bitint" in
6318 "$define") echo "64 bit integers selected." >&4 ;;
6320 case "$use64bitall" in
6321 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6324 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6326 *) archname="$archname-$archname64"
6327 echo "...setting architecture name to $archname." >&4
6333 case "$uselongdouble" in
6335 echo "Long doubles selected." >&4
6336 case "$longdblsize" in
6338 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6342 *-ld*) echo "...and architecture name already has -ld." >&4
6344 *) archname="$archname-ld"
6345 echo "...setting architecture name to $archname." >&4
6352 case "$useperlio" in
6354 echo "Perlio selected." >&4
6357 echo "Perlio not selected, using stdio." >&4
6359 *-stdio*) echo "...and architecture name already has -stdio." >&4
6361 *) archname="$archname-stdio"
6362 echo "...setting architecture name to $archname." >&4
6368 : determine root of directory hierarchy where package will be installed.
6371 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6379 By default, $package will be installed in $dflt/bin, manual pages
6380 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6381 installation directories. Typically this is something like /usr/local.
6382 If you wish to have binaries under /usr/bin but other parts of the
6383 installation under /usr/local, that's ok: you will be prompted
6384 separately for each of the installation directories, the prefix being
6385 only used to set the defaults.
6389 rp='Installation prefix to use?'
6397 *) oldprefix="$prefix";;
6406 *) afsroot=$afsroot ;;
6412 $define|true) afs=true ;;
6413 $undef|false) afs=false ;;
6414 *) if test -d $afsroot; then
6422 echo "AFS may be running... I'll be extra cautious then..." >&4
6424 echo "AFS does not seem to be running..." >&4
6427 : determine installation prefix for where package is to be installed.
6431 Since you are running AFS, I need to distinguish the directory in which
6432 files will reside from the directory in which they are installed (and from
6433 which they are presumably copied to the former directory by occult means).
6436 case "$installprefix" in
6437 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6438 *) dflt="$installprefix";;
6443 In some special cases, particularly when building $package for distribution,
6444 it is convenient to distinguish between the directory in which files should
6445 be installed from the directory ($prefix) in which they
6446 will eventually reside. For most users, these two directories are the same.
6449 case "$installprefix" in
6451 *) dflt=$installprefix;;
6455 rp='What installation prefix should I use for installing files?'
6457 installprefix="$ans"
6458 installprefixexp="$ansexp"
6460 : set the prefixit variable, to compute a suitable default value
6461 prefixit='case "$3" in
6463 case "$oldprefix" in
6464 "") eval "$1=\"\$$2\"";;
6471 ""|" ") eval "$1=\"\$$2\"";;
6477 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6479 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6480 /*-$oldprefix/*|\~*-$oldprefix/*)
6481 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6482 *) eval "$1=\"\$$2\"";;
6486 : get the patchlevel
6488 echo "Getting the current patchlevel..." >&4
6489 if $test -r $rsrc/patchlevel.h;then
6490 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6491 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6492 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6493 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6494 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6495 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6496 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6505 $echo "(You do not have patchlevel.h. Eek.)"
6507 if $test -r $rsrc/.patch ; then
6508 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6509 perl_patchlevel=`cat $rsrc/.patch`
6512 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6513 version_patchlevel_string="version $patchlevel subversion $subversion"
6514 case "$perl_patchlevel" in
6516 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6519 $echo "(You have $package $version_patchlevel_string.)"
6523 : XXX Should be a Configure test for double-dots in filenames.
6524 version=`echo $revision $patchlevel $subversion | \
6525 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6526 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6527 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6530 version=`echo $revision $patchlevel $subversion | \
6531 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6532 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6533 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6536 : Special case the 5.005_xx maintenance series, which used 5.005
6537 : without any subversion label as a subdirectory in $sitelib
6538 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6539 api_versionstring='5.005'
6542 : determine installation style
6543 : For now, try to deduce it from prefix unless it is already set.
6544 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6545 case "$installstyle" in
6546 '') case "$prefix" in
6547 *perl*) dflt='lib';;
6548 *) dflt='lib/perl5' ;;
6551 *) dflt="$installstyle" ;;
6553 : Probably not worth prompting for this since we prompt for all
6554 : the directories individually, and the prompt would be too long and
6558 : determine where private library files go
6559 : Usual default is /usr/local/lib/perl5/$version.
6560 : Also allow things like /opt/perl/lib/$version, since
6561 : /opt/perl/lib/perl5... would be redundant.
6562 : The default "style" setting is made in installstyle.U
6563 case "$installstyle" in
6564 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6565 *) set dflt privlib lib/$version ;;
6570 There are some auxiliary files for $package that need to be put into a
6571 private library directory that is accessible by everyone.
6575 rp='Pathname where the private library files will reside?'
6578 privlibexp="$ansexp"
6579 : Change installation prefix, if necessary.
6580 if $test X"$prefix" != X"$installprefix"; then
6581 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6583 installprivlib="$privlibexp"
6586 : set the prefixup variable, to restore leading tilda escape
6587 prefixup='case "$prefixexp" in
6589 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6592 : determine where public architecture dependent libraries go
6595 : privlib default is /usr/local/lib/$package/$version
6596 : archlib default is /usr/local/lib/$package/$version/$archname
6597 : privlib may have an optional trailing /share.
6598 tdflt=`echo $privlib | $sed 's,/share$,,'`
6599 tdflt=$tdflt/$archname
6608 $spackage contains architecture-dependent library files. If you are
6609 sharing libraries in a heterogeneous environment, you might store
6610 these files in a separate location. Otherwise, you can just include
6611 them with the rest of the public library files.
6615 rp='Where do you want to put the public architecture-dependent libraries?'
6618 archlibexp="$ansexp"
6619 if $test X"$archlib" = X"$privlib"; then
6624 : Change installation prefix, if necessary.
6625 if $test X"$prefix" != X"$installprefix"; then
6626 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6628 installarchlib="$archlibexp"
6632 : Binary compatibility with 5.005 is not possible for builds
6633 : with advanced features
6634 case "$usethreads$usemultiplicity" in
6636 bincompat5005="$undef"
6637 d_bincompat5005="$undef"
6641 This version of Perl can be compiled for binary compatibility with 5.005.
6642 If you decide to do so, you will be able to continue using most of the
6643 extensions that were compiled for Perl 5.005.
6646 case "$bincompat5005$d_bincompat5005" in
6647 *"$undef"*) dflt=n ;;
6650 rp='Binary compatibility with Perl 5.005?'
6653 y*) val="$define" ;;
6658 case "$d_bincompat5005" in
6660 bincompat5005="$define"
6662 *) bincompat5005="$undef"
6663 d_bincompat5005="$undef"
6670 : see if setuid scripts can be secure
6673 Some kernels have a bug that prevents setuid #! scripts from being
6674 secure. Some sites have disabled setuid #! scripts because of this.
6676 First let's decide if your kernel supports secure setuid #! scripts.
6677 (If setuid #! scripts would be secure but have been disabled anyway,
6678 don't say that they are secure if asked.)
6683 if $test -d /dev/fd; then
6684 echo "#!$ls" >reflect
6685 chmod +x,u+s reflect
6686 ./reflect >flect 2>&1
6687 if $contains "/dev/fd" flect >/dev/null; then
6688 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6692 If you are not sure if they are secure, I can check but I'll need a
6693 username and password different from the one you are using right now.
6694 If you don't have such a username or don't want me to test, simply
6698 rp='Other username to test security of setuid scripts with?'
6703 case "$d_suidsafe" in
6704 '') echo "I'll assume setuid scripts are *not* secure." >&4
6707 echo "Well, the $hint value is *not* secure." >&4
6709 *) echo "Well, the $hint value *is* secure." >&4
6714 $rm -f reflect flect
6715 echo "#!$ls" >reflect
6716 chmod +x,u+s reflect
6719 echo '"su" will (probably) prompt you for '"$ans's password."
6720 su $ans -c './reflect >flect'
6721 if $contains "/dev/fd" flect >/dev/null; then
6722 echo "Okay, it looks like setuid scripts are secure." >&4
6725 echo "I don't think setuid scripts are secure." >&4
6730 rp='Does your kernel have *secure* setuid scripts?'
6733 [yY]*) val="$define";;
6738 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6739 echo "(That's for file descriptors, not floppy disks.)"
6745 $rm -f reflect flect
6747 : now see if they want to do setuid emulation
6750 case "$d_suidsafe" in
6753 echo "No need to emulate SUID scripts since they are secure here." >&4
6757 Some systems have disabled setuid scripts, especially systems where
6758 setuid scripts cannot be secure. On systems where setuid scripts have
6759 been disabled, the setuid/setgid bits on scripts are currently
6760 useless. It is possible for $package to detect those bits and emulate
6761 setuid/setgid in a secure fashion. This emulation will only work if
6762 setuid scripts have been disabled in your kernel.
6766 "$define") dflt=y ;;
6769 rp="Do you want to do setuid/setgid emulation?"
6772 [yY]*) val="$define";;
6780 : see if this is a malloc.h system
6781 set malloc.h i_malloc
6784 : see if stdlib is available
6785 set stdlib.h i_stdlib
6788 : determine which malloc to compile in
6790 case "$usemymalloc" in
6791 [yY]*|true|$define) dflt='y' ;;
6792 [nN]*|false|$undef) dflt='n' ;;
6793 *) case "$ptrsize" in
6799 rp="Do you wish to attempt to use the malloc that comes with $package?"
6805 mallocsrc='malloc.c'
6806 mallocobj="malloc$_o"
6807 d_mymalloc="$define"
6810 : Remove malloc from list of libraries to use
6811 echo "Removing unneeded -lmalloc from library list" >&4
6812 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6815 echo "libs = $libs" >&4
6827 : compute the return types of malloc and free
6829 $cat >malloc.c <<END
6833 #include <sys/types.h>
6847 case "$malloctype" in
6849 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6856 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6860 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6867 echo "Your system uses $freetype free(), it would seem." >&4
6871 After $package is installed, you may wish to install various
6872 add-on modules and utilities. Typically, these add-ons will
6873 be installed under $prefix with the rest
6874 of this package. However, you may wish to install such add-ons
6875 elsewhere under a different prefix.
6877 If you do not wish to put everything under a single prefix, that's
6878 ok. You will be prompted for the individual locations; this siteprefix
6879 is only used to suggest the defaults.
6881 The default should be fine for most people.
6885 rp='Installation prefix to use for add-on modules and utilities?'
6886 : XXX Here might be another good place for an installstyle setting.
6887 case "$siteprefix" in
6889 *) dflt=$siteprefix ;;
6892 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6894 case "$siteprefix" in
6898 *) oldsiteprefix="$prefix";;
6903 siteprefixexp="$ansexp"
6905 : determine where site specific libraries go.
6906 : Usual default is /usr/local/lib/perl5/site_perl/$version
6907 : The default "style" setting is made in installstyle.U
6908 : XXX No longer works with Prefixit stuff.
6909 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6911 '') case "$installstyle" in
6912 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6913 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6921 The installation process will create a directory for
6922 site-specific extensions and modules. Most users find it convenient
6923 to place all site-specific files in this directory rather than in the
6924 main distribution directory.
6928 rp='Pathname for the site-specific library files?'
6931 sitelibexp="$ansexp"
6932 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6933 : Change installation prefix, if necessary.
6934 if $test X"$prefix" != X"$installprefix"; then
6935 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6937 installsitelib="$sitelibexp"
6940 : determine where site specific architecture-dependent libraries go.
6941 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6942 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6943 : sitelib may have an optional trailing /share.
6945 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6946 dflt="$dflt/$archname"
6951 set sitearch sitearch none
6955 The installation process will also create a directory for
6956 architecture-dependent site-specific extensions and modules.
6960 rp='Pathname for the site-specific architecture-dependent library files?'
6963 sitearchexp="$ansexp"
6964 : Change installation prefix, if necessary.
6965 if $test X"$prefix" != X"$installprefix"; then
6966 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6968 installsitearch="$sitearchexp"
6973 The installation process will also create a directory for
6974 vendor-supplied add-ons. Vendors who supply perl with their system
6975 may find it convenient to place all vendor-supplied files in this
6976 directory rather than in the main distribution directory. This will
6977 ease upgrades between binary-compatible maintenance versions of perl.
6979 Of course you may also use these directories in whatever way you see
6980 fit. For example, you might use them to access modules shared over a
6981 company-wide network.
6983 The default answer should be fine for most people.
6984 This causes further questions about vendor add-ons to be skipped
6985 and no vendor-specific directories will be configured for perl.
6988 rp='Do you want to configure vendor-specific add-on directories?'
6989 case "$usevendorprefix" in
6990 define|true|[yY]*) dflt=y ;;
6991 *) : User may have set vendorprefix directly on Configure command line.
6992 case "$vendorprefix" in
7001 rp='Installation prefix to use for vendor-supplied add-ons?'
7002 case "$vendorprefix" in
7004 *) dflt=$vendorprefix ;;
7007 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
7009 case "$vendorprefix" in
7013 *) oldvendorprefix="$prefix";;
7017 usevendorprefix="$define"
7019 vendorprefixexp="$ansexp"
7021 *) usevendorprefix="$undef"
7027 case "$vendorprefix" in
7028 '') d_vendorlib="$undef"
7032 *) d_vendorlib="$define"
7033 : determine where vendor-supplied modules go.
7034 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
7035 case "$vendorlib" in
7037 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7038 case "$installstyle" in
7039 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
7040 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
7043 *) dflt="$vendorlib"
7047 rp='Pathname for the vendor-supplied library files?'
7050 vendorlibexp="$ansexp"
7053 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
7054 : Change installation prefix, if necessary.
7055 if $test X"$prefix" != X"$installprefix"; then
7056 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
7058 installvendorlib="$vendorlibexp"
7061 case "$vendorprefix" in
7062 '') d_vendorarch="$undef"
7066 *) d_vendorarch="$define"
7067 : determine where vendor-supplied architecture-dependent libraries go.
7068 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
7069 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
7070 : vendorlib may have an optional trailing /share.
7071 case "$vendorarch" in
7072 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
7073 dflt="$dflt/$archname"
7075 *) dflt="$vendorarch" ;;
7078 rp='Pathname for vendor-supplied architecture-dependent files?'
7081 vendorarchexp="$ansexp"
7084 : Change installation prefix, if necessary.
7085 if $test X"$prefix" != X"$installprefix"; then
7086 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
7088 installvendorarch="$vendorarchexp"
7091 : Final catch-all directories to search
7094 Lastly, you can have perl look in other directories for extensions and
7095 modules in addition to those already specified.
7096 These directories will be searched after
7100 test X"$vendorlib" != "X" && echo ' ' $vendorlib
7101 test X"$vendorarch" != "X" && echo ' ' $vendorarch
7103 case "$otherlibdirs" in
7104 ''|' ') dflt='none' ;;
7105 *) dflt="$otherlibdirs" ;;
7108 Enter a colon-separated set of extra paths to include in perl's @INC
7109 search path, or enter 'none' for no extra paths.
7113 rp='Colon-separated list of additional directories for perl to search?'
7116 ' '|''|none) otherlibdirs=' ' ;;
7117 *) otherlibdirs="$ans" ;;
7119 case "$otherlibdirs" in
7123 set d_perl_otherlibdirs
7126 : Cruising for prototypes
7128 echo "Checking out function prototypes..." >&4
7129 $cat >prototype.c <<'EOCP'
7130 int main(int argc, char *argv[]) {
7133 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7134 echo "Your C compiler appears to support function prototypes."
7137 echo "Your C compiler doesn't seem to understand function prototypes."
7144 case "$prototype" in
7146 *) ansi2knr='ansi2knr'
7151 This version of $package can only be compiled by a compiler that
7152 understands function prototypes. Unfortunately, your C compiler
7154 doesn't seem to understand them. Sorry about that.
7156 If GNU cc is available for your system, perhaps you could try that instead.
7158 Eventually, we hope to support building Perl with pre-ANSI compilers.
7159 If you would like to help in that effort, please contact <perlbug@perl.org>.
7161 Aborting Configure now.
7167 : determine where public executables go
7172 rp='Pathname where the public executables will reside?'
7174 if $test "X$ansexp" != "X$binexp"; then
7179 : Change installation prefix, if necessary.
7180 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
7181 if $test X"$prefix" != X"$installprefix"; then
7182 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
7184 installbin="$binexp"
7193 Perl can be built with extra modules or bundles of modules which
7194 will be fetched from the CPAN and installed alongside Perl.
7196 Notice that you will need access to the CPAN; either via the Internet,
7197 or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
7198 be asked later to configure the CPAN.pm module which will in turn do
7199 the installation of the rest of the extra modules or bundles.)
7201 Notice also that if the modules require any external software such as
7202 libraries and headers (the libz library and the zlib.h header for the
7203 Compress::Zlib module, for example) you MUST have any such software
7204 already installed, this configuration process will NOT install such
7207 If this doesn't make any sense to you, just accept the default '$dflt'.
7209 rp='Install any extra modules (y or n)?'
7215 Please list any extra modules or bundles to be installed from CPAN,
7216 with spaces between the names. The names can be in any format the
7217 'install' command of CPAN.pm will understand. (Answer 'none',
7218 without the quotes, to install no extra modules or bundles.)
7228 $rm -f ../extras.lst
7230 *) echo "(Saving the list of extras for later...)"
7231 echo "$extras" > ../extras.lst
7239 : Find perl5.005 or later.
7240 echo "Looking for a previously installed perl5.005 or later... "
7242 '') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
7243 : Check if this perl is recent and can load a simple module
7244 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7247 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7257 '') echo "None found. That's ok.";;
7258 *) echo "Using $perl5." ;;
7261 : Determine list of previous versions to include in @INC
7262 $cat > getverlist <<EOPL
7265 \$api_versionstring = "$api_versionstring";
7266 \$version = "$version";
7267 \$stem = "$sitelib_stem";
7268 \$archname = "$archname";
7270 $cat >> getverlist <<'EOPL'
7271 # Can't have leading @ because metaconfig interprets it as a command!
7272 ;@inc_version_list=();
7273 # XXX Redo to do opendir/readdir?
7276 ;@candidates = glob("5.*");
7282 # XXX ToDo: These comparisons must be reworked when two-digit
7283 # subversions come along, so that 5.7.10 compares as greater than
7284 # 5.7.3! By that time, hope that 5.6.x is sufficiently
7285 # widespread that we can use the built-in version vectors rather
7286 # than reinventing them here. For 5.6.0, however, we must
7287 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
7288 foreach $d (@candidates) {
7289 if ($d lt $version) {
7290 if ($d ge $api_versionstring) {
7291 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7293 elsif ($d ge "5.005") {
7294 unshift(@inc_version_list, grep { -d } $d);
7298 # Skip newer version. I.e. don't look in
7299 # 5.7.0 if we're installing 5.6.1.
7303 if (@inc_version_list) {
7304 print join(' ', @inc_version_list);
7307 # Blank space to preserve value for next Configure run.
7312 case "$inc_version_list" in
7313 '') if test -x "$perl5$exe_ext"; then
7314 dflt=`$perl5 getverlist`
7319 $undef) dflt='none' ;;
7320 *) eval dflt=\"$inc_version_list\" ;;
7323 ''|' ') dflt=none ;;
7326 5.005) case "$bincompat5005" in
7327 $define|true|[yY]*) ;;
7334 In order to ease the process of upgrading, this version of perl
7335 can be configured to use modules built and installed with earlier
7336 versions of perl that were installed under $prefix. Specify here
7337 the list of earlier versions that this version of perl should check.
7338 If Configure detected no earlier versions of perl installed under
7339 $prefix, then the list will be empty. Answer 'none' to tell perl
7340 to not search earlier versions.
7342 The default should almost always be sensible, so if you're not sure,
7343 just accept the default.
7346 rp='List of earlier versions to include in @INC?'
7349 [Nn]one|''|' ') inc_version_list=' ' ;;
7350 *) inc_version_list="$ans" ;;
7352 case "$inc_version_list" in
7354 inc_version_list_init='0';;
7355 *) inc_version_list_init=`echo $inc_version_list |
7356 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7361 : determine whether to install perl also as /usr/bin/perl
7364 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7366 Many scripts expect perl to be installed as /usr/bin/perl.
7367 I can install the perl you are about to compile also as /usr/bin/perl
7368 (in addition to $installbin/perl).
7370 case "$installusrbinperl" in
7371 "$undef"|[nN]*) dflt='n';;
7374 rp="Do you want to install perl as /usr/bin/perl?"
7377 [yY]*) val="$define";;
7383 set installusrbinperl
7386 : see if dld is available
7390 : see if dlopen exists
7397 : determine which dynamic loading, if any, to compile in
7399 dldir="ext/DynaLoader"
7412 $define) dflt='y' ;;
7415 $define) dflt='y' ;;
7417 : Does a dl_xxx.xs file exist for this operating system
7418 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7421 rp="Do you wish to use dynamic loading?"
7428 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7429 dflt="$dldir/dl_${osname}.xs"
7430 elif $test "$d_dlopen" = "$define" ; then
7431 dflt="$dldir/dl_dlopen.xs"
7432 elif $test "$i_dld" = "$define" ; then
7433 dflt="$dldir/dl_dld.xs"
7438 *) dflt="$dldir/$dlsrc"
7441 echo "The following dynamic loading files are available:"
7442 : Can not go over to $dldir because getfile has path hard-coded in.
7443 tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7444 rp="Source file to use for dynamic loading"
7450 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7454 Some systems may require passing special flags to $cc -c to
7455 compile modules that will be used to create a shared library.
7456 To use no flags, say "none".
7459 case "$cccdlflags" in
7460 '') case "$gccversion" in
7461 '') case "$osname" in
7463 next) dflt='none' ;;
7464 irix*) dflt='-KPIC' ;;
7465 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7466 sunos) dflt='-pic' ;;
7470 *) case "$osname" in
7471 darwin) dflt='none' ;;
7472 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7477 *) dflt="$cccdlflags" ;;
7479 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7482 none) cccdlflags=' ' ;;
7483 *) cccdlflags="$ans" ;;
7488 Some systems use ld to create libraries that can be dynamically loaded,
7489 while other systems (such as those using ELF) use $cc.
7493 '') $cat >try.c <<'EOM'
7494 /* Test for whether ELF binaries are produced */
7499 int i = open("a.out",O_RDONLY);
7502 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7503 exit(0); /* succeed (yes, it's ELF) */
7508 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7510 You appear to have ELF support. I'll use $cc to build dynamic libraries.
7514 echo "I'll use ld to build dynamic libraries."
7523 rp="What command should be used to create dynamic libraries?"
7529 Some systems may require passing special flags to $ld to create a
7530 library that can be dynamically loaded. If your ld flags include
7531 -L/other/path options to locate libraries outside your loader's normal
7532 search path, you may need to specify those -L options here as well. To
7533 use no flags, say "none".
7536 case "$lddlflags" in
7537 '') case "$osname" in
7538 beos) dflt='-nostart' ;;
7540 case "$gccversion" in
7541 '') dflt="$dflt +vnocompatwarnings" ;;
7544 linux|irix*) dflt='-shared' ;;
7545 next) dflt='none' ;;
7546 solaris) dflt='-G' ;;
7547 sunos) dflt='-assert nodefinitions' ;;
7548 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7552 *) dflt="$lddlflags" ;;
7555 : Try to guess additional flags to pick up local libraries.
7556 : Be careful not to append to a plain 'none'
7560 for thisflag in $ldflags; do
7565 *) dflt="$dflt $thisflag" ;;
7572 ''|' ') dflt='none' ;;
7575 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7578 none) lddlflags=' ' ;;
7579 *) lddlflags="$ans" ;;
7584 Some systems may require passing special flags to $cc to indicate that
7585 the resulting executable will use dynamic linking. To use no flags,
7589 case "$ccdlflags" in
7590 '') case "$osname" in
7591 hpux) dflt='-Wl,-E' ;;
7592 linux) dflt='-rdynamic' ;;
7593 next) dflt='none' ;;
7594 sunos) dflt='none' ;;
7598 *) dflt="$ccdlflags" ;;
7600 rp="Any special flags to pass to $cc to use dynamic linking?"
7603 none) ccdlflags=' ' ;;
7604 *) ccdlflags="$ans" ;;
7618 # No dynamic loading being used, so don't bother even to prompt.
7621 *) case "$useshrplib" in
7622 '') case "$osname" in
7623 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7625 also='Building a shared libperl is required for dynamic loading to work on your system.'
7630 also='Building a shared libperl is needed for MAB support.'
7648 The perl executable is normally obtained by linking perlmain.c with
7649 libperl${_a}, any static extensions (usually just DynaLoader), and
7650 any other libraries needed on this system (such as -lm, etc.). Since
7651 your system supports dynamic loading, it is probably possible to build
7652 a shared libperl.$so. If you will have more than one executable linked
7653 to libperl.$so, this will significantly reduce the size of each
7654 executable, but it may have a noticeable affect on performance. The
7655 default is probably sensible for your system.
7659 rp="Build a shared libperl.$so (y/n)"
7663 useshrplib='true' ;;
7664 *) useshrplib='false' ;;
7669 case "$useshrplib" in
7673 # Figure out a good name for libperl.so. Since it gets stored in
7674 # a version-specific architecture-dependent library, the version
7675 # number isn't really that important, except for making cc/ld happy.
7677 # A name such as libperl.so.3.1
7678 majmin="libperl.$so.$patchlevel.$subversion"
7679 # A name such as libperl.so.301
7680 majonly=`echo $patchlevel $subversion |
7681 $awk '{printf "%d%02d", $1, $2}'`
7682 majonly=libperl.$so.$majonly
7683 # I'd prefer to keep the os-specific stuff here to a minimum, and
7684 # rely on figuring it out from the naming of libc.
7685 case "${osname}${osvers}" in
7688 # XXX How handle the --version stuff for MAB?
7690 linux*) # ld won't link with a bare -lperl otherwise.
7693 cygwin*) # ld links against an importlib
7694 dflt=libperl$lib_ext
7696 *) # Try to guess based on whether libc has major.minor.
7698 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7699 *libc.$so.[0-9]*) dflt=$majonly ;;
7700 *) dflt=libperl.$so ;;
7710 I need to select a good name for the shared libperl. If your system uses
7711 library names with major and minor numbers, then you might want something
7712 like $majmin. Alternatively, if your system uses a single version
7713 number for shared libraries, then you might want to use $majonly.
7714 Or, your system might be quite happy with a simple libperl.$so.
7716 Since the shared libperl will get installed into a version-specific
7717 architecture-dependent directory, the version number of the shared perl
7718 library probably isn't important, so the default should be o.k.
7721 rp='What name do you want to give to the shared libperl?'
7724 echo "Ok, I'll use $libperl"
7727 libperl="libperl${_a}"
7731 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7735 WARNING: Use of the shrpdir variable for the installation location of
7736 the shared $libperl is not supported. It was never documented and
7737 will not work in this version. Let me (perlbug@perl.org)
7738 know of any problems this may cause.
7744 But your current setting of $shrpdir is
7745 the default anyway, so it's harmless.
7750 Further, your current attempted setting of $shrpdir
7751 conflicts with the value of $archlibexp/CORE
7752 that installperl will use.
7759 # How will the perl executable find the installed shared $libperl?
7760 # Add $xxx to ccdlflags.
7761 # If we can't figure out a command-line option, use $shrpenv to
7762 # set env LD_RUN_PATH. The main perl makefile uses this.
7763 shrpdir=$archlibexp/CORE
7766 if "$useshrplib"; then
7769 # We'll set it in Makefile.SH...
7775 xxx="-Wl,-R$shrpdir"
7777 bsdos|linux|irix*|dec_osf)
7778 xxx="-Wl,-rpath,$shrpdir"
7781 # next doesn't like the default...
7784 # beos doesn't like the default, either.
7787 # hpux doesn't like the default, either.
7788 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7791 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7797 # Only add $xxx if it isn't already in ccdlflags.
7798 case " $ccdlflags " in
7800 *) ccdlflags="$ccdlflags $xxx"
7803 Adding $xxx to the flags
7804 passed to $ld so that the perl executable will find the
7805 installed shared $libperl.
7813 # Fix ccdlflags in AIX for building external extensions.
7814 # (For building Perl itself bare -bE:perl.exp is needed,
7815 # Makefile.SH takes care of this.)
7817 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7819 # Respect a hint or command-line value.
7821 '') shrpenv="$tmp_shrpenv" ;;
7823 case "$ldlibpthname" in
7824 '') ldlibpthname=LD_LIBRARY_PATH ;;
7825 none) ldlibpthname='' ;;
7828 : determine where manual pages are on this system
7832 syspath='/usr/share/man/man1 /usr/man/man1'
7833 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7834 syspath="$syspath /usr/man/u_man/man1"
7835 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7836 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7837 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7838 sysman=`./loc . /usr/man/man1 $syspath`
7841 if $test -d "$sysman"; then
7842 echo "System manual is in $sysman." >&4
7844 echo "Could not find manual pages in source form." >&4
7847 : determine where manual pages go
7848 set man1dir man1dir none
7852 $spackage has manual pages available in source form.
7856 echo "However, you don't have nroff, so they're probably useless to you."
7858 '') man1dir="none";;
7861 echo "If you don't want the manual sources installed, answer 'none'."
7866 lookpath="$prefixexp/share/man/man1"
7867 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7868 lookpath="$lookpath $prefixexp/man/p_man/man1"
7869 lookpath="$lookpath $prefixexp/man/u_man/man1"
7870 lookpath="$lookpath $prefixexp/man/man.1"
7872 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7873 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7883 rp="Where do the main $spackage manual pages (source) go?"
7885 if $test "X$man1direxp" != "X$ansexp"; then
7889 man1direxp="$ansexp"
7895 : Change installation prefix, if necessary.
7896 if $test X"$prefix" != X"$installprefix"; then
7897 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7899 installman1dir="$man1direxp"
7902 : What suffix to use on installed man pages
7909 rp="What suffix should be used for the main $spackage man pages?"
7911 '') case "$man1dir" in
7925 *) dflt="$man1ext";;
7932 : see if we can have long filenames
7934 first=123456789abcdef
7936 if (echo hi >$first) 2>/dev/null; then
7937 if $test -f 123456789abcde; then
7938 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7941 echo 'You can have filenames longer than 14 characters.'>&4
7946 You can't have filenames longer than 14 chars.
7947 You can't even think about them!
7953 $rm -rf 123456789abcde*
7955 : determine where library module manual pages go
7956 set man3dir man3dir none
7960 $spackage has manual pages for many of the library modules.
7966 However, you don't have nroff, so they're probably useless to you.
7969 '') man3dir="none";;
7973 case "$d_flexfnam" in
7976 However, your system can't handle the long file names like File::Basename.3.
7979 '') man3dir="none";;
7983 echo "If you don't want the manual sources installed, answer 'none'."
7984 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7986 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7987 if $test -d "$privlib/man/man3"; then
7990 WARNING: Previous versions of perl installed man3 pages into
7991 $privlib/man/man3. This version will suggest a
7992 new default of $dflt.
7996 rp='Do you wish to preserve the old behavior?(y/n)'
7999 y*) dflt="$privlib/man/man3" ;;
8004 *) dflt="$man3dir" ;;
8011 rp="Where do the $package library man pages (source) go?"
8014 man3direxp="$ansexp"
8020 : Change installation prefix, if necessary.
8021 if $test X"$prefix" != X"$installprefix"; then
8022 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8024 installman3dir="$man3direxp"
8027 : What suffix to use on installed man pages
8033 rp="What suffix should be used for the $package library man pages?"
8035 '') case "$man3dir" in
8049 *) dflt="$man3ext";;
8056 : see if we have to deal with yellow pages, now NIS.
8057 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8058 if $test -f /usr/etc/nibindd; then
8060 echo "I'm fairly confident you're on a NeXT."
8062 rp='Do you get the hosts file via NetInfo?'
8071 y*) hostcat='nidump hosts .';;
8072 *) case "$hostcat" in
8073 nidump*) hostcat='';;
8083 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8091 rp='Are you getting the hosts file via yellow pages?'
8094 y*) hostcat='ypcat hosts';;
8095 *) hostcat='cat /etc/hosts';;
8101 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8104 '') test -f /etc/group && groupcat='cat /etc/group';;
8107 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8110 : now get the host name
8112 echo "Figuring out host name..." >&4
8113 case "$myhostname" in
8115 echo 'Maybe "hostname" will work...'
8116 if tans=`sh -c hostname 2>&1` ; then
8124 if $test "$cont"; then
8126 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
8127 if tans=`cat /etc/systemid 2>&1` ; then
8129 phostname='cat /etc/systemid'
8130 echo "Whadyaknow. Xenix always was a bit strange..."
8133 elif $test -r /etc/systemid; then
8134 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8137 if $test "$cont"; then
8138 echo 'No, maybe "uuname -l" will work...'
8139 if tans=`sh -c 'uuname -l' 2>&1` ; then
8141 phostname='uuname -l'
8143 echo 'Strange. Maybe "uname -n" will work...'
8144 if tans=`sh -c 'uname -n' 2>&1` ; then
8146 phostname='uname -n'
8148 echo 'Oh well, maybe I can mine it out of whoami.h...'
8149 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8150 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8151 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8153 case "$myhostname" in
8154 '') echo "Does this machine have an identity crisis or something?"
8157 echo "Well, you said $myhostname before..."
8158 phostname='echo $myhostname';;
8164 case "$myhostname" in
8165 '') myhostname=noname ;;
8167 : you do not want to know about this
8172 if $test "$myhostname" ; then
8174 rp='Your host name appears to be "'$myhostname'".'" Right?"
8182 : bad guess or no guess
8183 while $test "X$myhostname" = X ; do
8185 rp="Please type the (one word) name of your host:"
8190 : translate upper to lower if necessary
8191 case "$myhostname" in
8193 echo "(Normalizing case in your host name)"
8194 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8198 case "$myhostname" in
8200 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8201 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8202 echo "(Trimming domain name from host name--host name is now $myhostname)"
8204 *) case "$mydomain" in
8207 test "X$hostcat" = "Xypcat hosts" &&
8208 ypmatch "$myhostname" hosts 2>/dev/null |\
8209 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
8212 test "X$hostcat" != "X" &&
8213 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
8214 /[ ]$myhostname[ . ]/p" > hosts
8217 if $test -f hosts; then
8218 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
8219 END { print sum }" hosts` = x1 || tmp_re="[ ]"
8220 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8221 hosts | $sort | $uniq | \
8222 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8223 case `$echo X$dflt` in
8224 X*\ *) echo "(Several hosts in the database matched hostname)"
8227 X.) echo "(You do not have fully-qualified names in the hosts database)"
8231 echo "(I cannot locate a hosts database anywhere)"
8236 tans=`./loc resolv.conf X /etc /usr/etc`
8237 if $test -f "$tans"; then
8238 echo "(Attempting domain name extraction from $tans)"
8239 dflt=.`$sed -n -e 's/ / /g' \
8240 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
8241 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8243 .) dflt=.`$sed -n -e 's/ / /g' \
8244 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
8245 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8252 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8253 dflt=.`sh -c domainname 2>/dev/null`
8256 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8260 case "$dflt$osname" in
8261 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8262 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8266 .) echo "(Lost all hope -- silly guess then)"
8272 *) dflt="$mydomain";;
8276 rp="What is your domain name?"
8286 : translate upper to lower if necessary
8289 echo "(Normalizing case in your domain name)"
8290 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8294 : a little sanity check here
8295 case "$phostname" in
8298 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8299 $myhostname$mydomain|$myhostname) ;;
8301 case "$phostname" in
8303 echo "(That doesn't agree with your whoami.h file, by the way.)"
8306 echo "(That doesn't agree with your $phostname command, by the way.)"
8316 I need to get your e-mail address in Internet format if possible, i.e.
8317 something like user@host.domain. Please answer accurately since I have
8318 no easy means to double check it. The default value provided below
8319 is most probably close to reality but may not be valid from outside
8320 your organization...
8324 while test "$cont"; do
8326 '') dflt="$cf_by@$myhostname$mydomain";;
8327 *) dflt="$cf_email";;
8329 rp='What is your e-mail address?'
8335 rp='Address does not look like an Internet one. Use it anyway?'
8351 If you or somebody else will be maintaining perl at your site, please
8352 fill in the correct e-mail address here so that they may be contacted
8353 if necessary. Currently, the "perlbug" program included with perl
8354 will send mail to this address in addition to perlbug@perl.org. You may
8355 enter "none" for no administrator.
8358 case "$perladmin" in
8359 '') dflt="$cf_email";;
8360 *) dflt="$perladmin";;
8362 rp='Perl administrator e-mail address'
8366 : determine whether to only install version-specific parts.
8369 Do you want to install only the version-specific parts of the perl
8370 distribution? Usually you do *not* want to do this.
8372 case "$versiononly" in
8373 "$define"|[Yy]*|true) dflt='y' ;;
8376 rp="Do you want to install only the version-specific parts of perl?"
8379 [yY]*) val="$define";;
8385 : figure out how to guarantee perl startup
8386 case "$startperl" in
8388 case "$sharpbang" in
8392 I can use the #! construct to start perl on your system. This will
8393 make startup of perl scripts faster, but may cause problems if you
8394 want to share those scripts and perl is not in a standard place
8395 ($binexp/perl) on all your platforms. The alternative is to force
8396 a shell by starting the script with a single ':' character.
8399 case "$versiononly" in
8400 "$define") dflt="$binexp/perl$version";;
8401 *) dflt="$binexp/perl";;
8403 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8406 none) startperl=": # use perl";;
8407 *) startperl="#!$ans"
8408 if $test 30 -lt `echo "$ans" | wc -c`; then
8411 WARNING: Some systems limit the #! command to 32 characters.
8412 If you experience difficulty running Perl scripts with #!, try
8413 installing Perl in a directory with a shorter pathname.
8419 *) startperl=": # use perl"
8424 echo "I'll use $startperl to start perl scripts."
8426 : figure best path for perl in scripts
8429 case "$versiononly" in
8430 "$define") perlpath="$binexp/perl$version";;
8431 *) perlpath="$binexp/perl";;
8433 case "$startperl" in
8438 I will use the "eval 'exec'" idiom to start Perl on your system.
8439 I can use the full path of your Perl binary for this purpose, but
8440 doing so may cause problems if you want to share those scripts and
8441 Perl is not always in a standard place ($binexp/perl).
8445 rp="What path shall I use in \"eval 'exec'\"?"
8452 case "$startperl" in
8454 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8457 : determine where public executable scripts go
8458 set scriptdir scriptdir
8460 case "$scriptdir" in
8463 : guess some guesses
8464 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8465 $test -d /usr/share/bin && dflt=/usr/share/bin
8466 $test -d /usr/local/script && dflt=/usr/local/script
8467 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8468 $test -d $prefixexp/script && dflt=$prefixexp/script
8472 *) dflt="$scriptdir"
8477 Some installations have a separate directory just for executable scripts so
8478 that they can mount it across multiple architectures but keep the scripts in
8479 one spot. You might, for example, have a subdirectory of /usr/share for this.
8480 Or you might just lump your scripts in with all your other executables.
8484 rp='Where do you keep publicly executable scripts?'
8486 if $test "X$ansexp" != "X$scriptdirexp"; then
8490 scriptdirexp="$ansexp"
8491 : Change installation prefix, if necessary.
8492 if $test X"$prefix" != X"$installprefix"; then
8493 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8495 installscript="$scriptdirexp"
8498 : determine where add-on public executables go
8500 '') dflt=$siteprefix/bin ;;
8504 rp='Pathname where the add-on public executables should be installed?'
8507 sitebinexp="$ansexp"
8508 : Change installation prefix, if necessary.
8509 if $test X"$prefix" != X"$installprefix"; then
8510 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8512 installsitebin="$sitebinexp"
8515 : define an is-a-typedef? function
8516 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8518 "") inclist="sys/types.h";;
8520 eval "varval=\$$var";
8524 for inc in $inclist; do
8525 echo "#include <$inc>" >>temp.c;
8527 echo "#ifdef $type" >> temp.c;
8528 echo "printf(\"We have $type\");" >> temp.c;
8529 echo "#endif" >> temp.c;
8530 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8531 if $contains $type temp.E >/dev/null 2>&1; then
8537 *) eval "$var=\$varval";;
8540 : define an is-a-typedef? function that prompts if the type is not available.
8541 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8543 "") inclist="sys/types.h";;
8545 eval "varval=\$$var";
8549 for inc in $inclist; do
8550 echo "#include <$inc>" >>temp.c;
8552 echo "#ifdef $type" >> temp.c;
8553 echo "printf(\"We have $type\");" >> temp.c;
8554 echo "#endif" >> temp.c;
8555 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8557 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8558 if $contains $type temp.E >/dev/null 2>&1; then
8559 echo "$type found." >&4;
8562 echo "$type NOT found." >&4;
8568 *) eval "$var=\$varval";;
8571 : see what type lseek is declared as in the kernel
8572 rp="What is the type used for lseek's offset on this system?"
8573 set off_t lseektype long stdio.h sys/types.h
8577 echo "Checking to see how big your file offsets are..." >&4
8579 #include <sys/types.h>
8583 printf("%d\n", (int)sizeof($lseektype));
8588 if eval $compile_ok; then
8589 lseeksize=`$run ./try`
8590 echo "Your file offsets are $lseeksize bytes long."
8594 echo "(I can't seem to compile the test program. Guessing...)"
8595 rp="What is the size of your file offsets (in bytes)?"
8601 : see what type file positions are declared as in the library
8602 rp="What is the type for file position used by fsetpos()?"
8603 set fpos_t fpostype long stdio.h sys/types.h
8608 *_t) zzz="$fpostype" ;;
8611 echo "Checking the size of $zzz..." >&4
8613 #include <sys/types.h>
8616 printf("%d\n", (int)sizeof($fpostype));
8621 if eval $compile_ok; then
8625 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8628 echo "Your $zzz is $fpossize bytes long."
8634 echo "(I can't compile the test program. Guessing...)" >&4
8635 rp="What is the size of your file positions (in bytes)?"
8642 # Backward compatibility (uselfs is deprecated).
8644 "$define"|true|[yY]*)
8647 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8649 uselargefiles="$define"
8653 case "$lseeksize:$fpossize" in
8656 You can have files larger than 2 gigabytes.
8659 *) case "$uselargefiles" in
8660 "$undef"|false|[nN]*) dflt='n' ;;
8665 Perl can be built to understand large files (files larger than 2 gigabytes)
8666 on some systems. To do so, Configure can be run with -Duselargefiles.
8668 If this doesn't make any sense to you, just accept the default '$dflt'.
8670 rp='Try to understand large files, if available?'
8673 y|Y) val="$define" ;;
8680 case "$uselargefiles" in
8682 : Look for a hint-file generated 'call-back-unit'. If the
8683 : user has specified that a large files perl is to be built,
8684 : we may need to set or change some other defaults.
8685 if $test -f uselargefiles.cbu; then
8686 echo "Your platform has some specific hints for large file builds, using them..."
8687 . ./uselargefiles.cbu
8689 echo "Rechecking to see how big your file offsets are..." >&4
8691 #include <sys/types.h>
8695 printf("%d\n", (int)sizeof($lseektype));
8700 if eval $compile_ok; then
8701 lseeksize=`$run ./try`
8702 $echo "Your file offsets are now $lseeksize bytes long."
8706 echo "(I can't seem to compile the test program. Guessing...)"
8707 rp="What is the size of your file offsets (in bytes)?"
8712 *_t) zzz="$fpostype" ;;
8715 $echo $n "Rechecking the size of $zzz...$c" >&4
8717 #include <sys/types.h>
8720 printf("%d\n", (int)sizeof($fpostype));
8725 if eval $compile_ok; then
8730 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8733 echo " $fpossize bytes." >&4
8739 echo "(I can't compile the test program. Guessing...)" >&4
8740 rp="What is the size of your file positions (in bytes)?"
8749 case "$vendorprefix" in
8750 '') d_vendorbin="$undef"
8754 *) d_vendorbin="$define"
8755 : determine where vendor-supplied executables go.
8756 case "$vendorbin" in
8757 '') dflt=$vendorprefix/bin ;;
8758 *) dflt="$vendorbin" ;;
8761 rp='Pathname for the vendor-supplied executables directory?'
8764 vendorbinexp="$ansexp"
8767 : Change installation prefix, if necessary.
8768 if $test X"$prefix" != X"$installprefix"; then
8769 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8771 installvendorbin="$vendorbinexp"
8774 : see if qgcvt exists
8778 : Check how to convert floats to strings.
8780 if test "X$d_Gconvert" = X; then
8783 echo "Checking for an efficient way to convert floats to strings."
8785 case "$uselongdouble" in
8786 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8788 case "$d_longdbl" in
8789 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8791 case "$d_PRIgldbl" in
8792 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8796 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8797 char *myname = "gconvert";
8800 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8801 char *myname = "gcvt";
8804 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8805 char *myname = "qgcvt";
8806 #define DOUBLETYPE long double
8809 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8811 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8813 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
8816 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8818 char *myname = "sprintf";
8822 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8823 #define DOUBLETYPE long double
8825 #define DOUBLETYPE double
8831 #define I_STDLIB $i_stdlib
8837 checkit(expect, got)
8841 if (strcmp(expect, got)) {
8842 printf("%s oddity: Expected %s, got %s\n",
8843 myname, expect, got);
8853 /* This must be 1st test on (which?) platform */
8854 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8855 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8856 checkit("0.1", buf);
8858 Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
8859 checkit("0.01", buf);
8861 Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
8862 checkit("0.001", buf);
8864 Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
8865 checkit("0.0001", buf);
8867 Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
8868 if (strlen(buf) > 5)
8869 checkit("9e-005", buf); /* for Microsoft ?? */
8871 checkit("9e-05", buf);
8873 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8876 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8877 checkit("1.1", buf);
8879 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8880 checkit("1.01", buf);
8882 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8883 checkit("1.001", buf);
8885 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8886 checkit("1.0001", buf);
8888 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8889 checkit("1.00001", buf);
8891 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8892 checkit("1.000001", buf);
8894 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8897 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8900 /* Some Linux gcvt's give 1.e+5 here. */
8901 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8902 checkit("100000", buf);
8904 /* Some Linux gcvt's give -1.e+5 here. */
8905 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8906 checkit("-100000", buf);
8908 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8909 checkit("123.456", buf);
8911 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8912 Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
8913 /* 34 should be enough to scare even long double
8914 * places into using the e notation. */
8915 if (strlen(buf) > 5)
8916 checkit("1e+034", buf); /* for Microsoft */
8918 checkit("1e+34", buf);
8920 /* For Perl, if you add additional tests here, also add them to
8921 * t/base/num.t for benefit of platforms not using Configure or
8922 * overriding d_Gconvert */
8927 : first add preferred functions to our list
8929 for xxx_convert in $gconvert_preference; do
8930 case $xxx_convert in
8931 gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
8932 *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
8935 : then add any others
8936 for xxx_convert in gconvert gcvt sprintf; do
8939 *) xxx_list="$xxx_list $xxx_convert" ;;
8943 case "$d_longdbl$uselongdouble" in
8945 : again, add prefered functions to our list first
8947 for xxx_convert in $gconvert_ld_preference; do
8948 case $xxx_convert in
8949 qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8950 *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
8953 : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
8954 for xxx_convert in qgcvt sprintf $xxx_list; do
8955 case "$xxx_ld_list" in
8956 $xxx_convert*|*" $xxx_convert"*) ;;
8957 *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8960 : if sprintf cannot do long doubles, move it to the end
8961 if test "$d_PRIgldbl" != "$define"; then
8962 xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
8964 : if no qgcvt, remove it
8965 if test "$d_qgcvt" != "$define"; then
8966 xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
8969 xxx_list="$xxx_ld_list"
8973 for xxx_convert in $xxx_list; do
8974 echo "Trying $xxx_convert..."
8976 set try -DTRY_$xxx_convert
8977 if eval $compile; then
8978 echo "$xxx_convert() found." >&4
8980 echo "I'll use $xxx_convert to convert floats into a string." >&4
8983 echo "...But $xxx_convert didn't work as I expected."
8987 echo "$xxx_convert NOT found." >&4
8991 if test X$xxx_convert = X; then
8992 echo "*** WHOA THERE!!! ***" >&4
8993 echo "None of ($xxx_list) seemed to work properly. I'll use sprintf." >&4
8997 case "$xxx_convert" in
8998 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8999 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9000 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9001 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9002 "$define$define$define")
9003 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9004 "$define$define$undef")
9005 d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9006 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9013 : see if _fwalk exists
9017 : Initialize h_fcntl
9020 : Initialize h_sysfile
9023 : access call always available on UNIX
9027 : locate the flags for 'access()'
9031 $cat >access.c <<'EOCP'
9032 #include <sys/types.h>
9037 #include <sys/file.h>
9046 : check sys/file.h first, no particular reason here
9047 if $test `./findhdr sys/file.h` && \
9048 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9050 echo "<sys/file.h> defines the *_OK access constants." >&4
9051 elif $test `./findhdr fcntl.h` && \
9052 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9054 echo "<fcntl.h> defines the *_OK access constants." >&4
9055 elif $test `./findhdr unistd.h` && \
9056 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9057 echo "<unistd.h> defines the *_OK access constants." >&4
9059 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9065 : see if accessx exists
9066 set accessx d_accessx
9069 : see if alarm exists
9073 : define a fucntion to check prototypes
9074 $cat > protochk <<EOSH
9077 optimize="$optimize"
9079 prototype="$prototype"
9084 $cat >> protochk <<'EOSH'
9089 while test $# -ge 2; do
9091 $define) echo "#include <$2>" >> try.c ;;
9092 literal) echo "$2" >> try.c ;;
9096 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
9097 cat >> try.c <<'EOCP'
9098 #ifdef CAN_PROTOTYPE
9099 #define _(args) args
9104 echo "$foo" >> try.c
9105 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9106 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9114 : see if sys/types.h has to be included
9115 set sys/types.h i_systypes
9118 : see if sys/select.h has to be included
9119 set sys/select.h i_sysselct
9122 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9123 while $test $# -ge 2; do
9125 $define) echo "#include <$2>";;
9129 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9131 if eval $compile; then
9140 : see if we should include time.h, sys/time.h, or both
9142 if test "X$timeincl" = X; then
9143 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9144 $echo $n "I'm now running the test program...$c"
9145 $cat >try.c <<'EOCP'
9146 #include <sys/types.h>
9151 #ifdef SYSTIMEKERNEL
9154 #include <sys/time.h>
9157 #include <sys/select.h>
9166 struct timezone tzp;
9168 if (foo.tm_sec == foo.tm_sec)
9171 if (bar.tv_sec == bar.tv_sec)
9178 for s_timezone in '-DS_TIMEZONE' ''; do
9180 for s_timeval in '-DS_TIMEVAL' ''; do
9181 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9182 for i_time in '' '-DI_TIME'; do
9183 for i_systime in '-DI_SYSTIME' ''; do
9186 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9187 if eval $compile; then
9188 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9192 $echo $n "Succeeded with $flags$c"
9204 *SYSTIMEKERNEL*) i_systimek="$define"
9205 timeincl=`./findhdr sys/time.h`
9206 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9207 *) i_systimek="$undef";;
9210 *I_TIME*) i_time="$define"
9211 timeincl=`./findhdr time.h`" $timeincl"
9212 echo "We'll include <time.h>." >&4;;
9213 *) i_time="$undef";;
9216 *I_SYSTIME*) i_systime="$define"
9217 timeincl=`./findhdr sys/time.h`" $timeincl"
9218 echo "We'll include <sys/time.h>." >&4;;
9219 *) i_systime="$undef";;
9223 : see if struct tm knows about tm_zone
9224 case "$i_systime$i_time" in
9227 echo "Checking to see if your struct tm has tm_zone field..." >&4
9228 set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9236 case "$d_tm_tm_zone" in
9237 "$define") echo "Yes, it does." ;;
9238 *) echo "No, it doesn't." ;;
9240 : see if struct tm knows about tm_gmtoff
9241 case "$i_systime$i_time" in
9244 echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9245 set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9253 case "$d_tm_tm_gmtoff" in
9254 "$define") echo "Yes, it does." ;;
9255 *) echo "No, it doesn't." ;;
9258 : see if asctime_r exists
9259 set asctime_r d_asctime_r
9261 case "$d_asctime_r" in
9263 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
9264 case "$asctime_r_proto" in
9265 ''|0) try='char* asctime_r(const struct tm*, char*);'
9266 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9268 case "$asctime_r_proto" in
9269 ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9270 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9272 case "$asctime_r_proto" in
9273 ''|0) try='int asctime_r(const struct tm*, char*);'
9274 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9276 case "$asctime_r_proto" in
9277 ''|0) try='int asctime_r(const struct tm*, char*, int);'
9278 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9280 case "$asctime_r_proto" in
9281 '') d_asctime_r=undef
9283 echo "Disabling asctime_r, cannot determine prototype." ;;
9284 * ) case "$asctime_r_proto" in
9285 REENTRANT_PROTO*) ;;
9286 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9288 echo "Prototype: $try" ;;
9291 *) asctime_r_proto=0
9295 : see if atolf exists
9299 : see if atoll exists
9303 : Look for GNU-cc style attribute checking
9305 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9306 $cat >attrib.c <<'EOCP'
9308 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
9310 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9311 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9312 echo "Your C compiler doesn't fully support __attribute__."
9315 echo "Your C compiler supports __attribute__."
9319 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9326 : see if bcmp exists
9330 : see if bcopy exists
9334 : see if this is a unistd.h system
9335 set unistd.h i_unistd
9338 : see if getpgrp exists
9339 set getpgrp d_getpgrp
9342 case "$d_getpgrp" in
9345 echo "Checking to see which flavor of getpgrp is in use..."
9348 #include <sys/types.h>
9350 # include <unistd.h>
9354 if (getuid() == 0) {
9355 printf("(I see you are running Configure as super-user...)\n");
9359 if (getpgrp(1) == 0)
9368 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9369 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9371 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9372 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9375 echo "I can't seem to compile and run the test program."
9377 xxx="a USG one, i.e. you use getpgrp()."
9379 # SVR4 systems can appear rather BSD-ish.
9382 xxx="a BSD one, i.e. you use getpgrp(pid)."
9386 xxx="probably a USG one, i.e. you use getpgrp()."
9391 echo "Assuming your getpgrp is $xxx" >&4
9400 : see if setpgrp exists
9401 set setpgrp d_setpgrp
9404 case "$d_setpgrp" in
9407 echo "Checking to see which flavor of setpgrp is in use..."
9410 #include <sys/types.h>
9412 # include <unistd.h>
9416 if (getuid() == 0) {
9417 printf("(I see you are running Configure as super-user...)\n");
9421 if (-1 == setpgrp(1, 1))
9424 if (setpgrp() != -1)
9430 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9431 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9433 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9434 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9437 echo "(I can't seem to compile and run the test program.)"
9439 xxx="a USG one, i.e. you use setpgrp()."
9441 # SVR4 systems can appear rather BSD-ish.
9444 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9448 xxx="probably a USG one, i.e. you use setpgrp()."
9453 echo "Assuming your setpgrp is $xxx" >&4
9461 : see if bzero exists
9465 : see if signal is declared as pointer to function returning int or void
9467 xxx=`./findhdr signal.h`
9468 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9469 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
9470 echo "You have int (*signal())() instead of void." >&4
9472 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
9473 echo "You have void (*signal())()." >&4
9475 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9476 echo "You have int (*signal())() instead of void." >&4
9478 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9479 echo "You have void (*signal())()." >&4
9482 case "$d_voidsig" in
9484 echo "I can't determine whether signal handler returns void or int..." >&4
9486 rp="What type does your signal handler return?"
9493 echo "As you already told me, signal handler returns void." >&4
9496 *) echo "As you already told me, signal handler returns int." >&4
9503 case "$d_voidsig" in
9504 "$define") signal_t="void";;
9509 : check for ability to cast large floats to 32-bit ints.
9511 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9512 if $test "$intsize" -ge 4; then
9519 #include <sys/types.h>
9521 $signal_t blech(s) int s; { exit(3); }
9528 signal(SIGFPE, blech);
9530 /* Don't let compiler optimize the test away. Store the number
9531 in a writable string for gcc to pass to sscanf under HP/UX.
9533 sprintf(str, "2147483647");
9534 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
9538 /* x86 processors will probably give 0x8000 0000, which is a
9539 sign change. We don't want that. We want to mimic SPARC
9540 behavior here, which is to preserve the sign and give
9543 if (i32 != ($xxx) f)
9549 if eval $compile_ok; then
9553 echo "(I can't seem to compile the test program--assuming it can't)"
9561 echo "Nope, it can't."
9568 : check for ability to cast negative floats to unsigned
9570 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
9573 #include <sys/types.h>
9575 $signal_t blech(s) int s; { exit(7); }
9576 $signal_t blech_in_list(s) int s; { exit(4); }
9577 unsigned long dummy_long(p) unsigned long p; { return p; }
9578 unsigned int dummy_int(p) unsigned int p; { return p; }
9579 unsigned short dummy_short(p) unsigned short p; { return p; }
9583 unsigned long along;
9585 unsigned short ashort;
9589 /* Frustrate gcc-2.7.2's optimizer which failed this test with
9590 a direct f = -123. assignment. gcc-2.8.0 reportedly
9591 optimized the whole file away
9593 /* Store the number in a writable string for gcc to pass to
9596 sprintf(str, "-123");
9597 sscanf(str, "%lf", &f); /* f = -123.; */
9599 signal(SIGFPE, blech);
9600 along = (unsigned long)f;
9601 aint = (unsigned int)f;
9602 ashort = (unsigned short)f;
9603 if (along != (unsigned long)-123)
9605 if (aint != (unsigned int)-123)
9607 if (ashort != (unsigned short)-123)
9609 sprintf(str, "1073741824.");
9610 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9613 along = (unsigned long)f;
9614 if (along != 0x80000000)
9618 along = (unsigned long)f;
9619 if (along != 0x7fffffff)
9623 along = (unsigned long)f;
9624 if (along != 0x80000001)
9628 signal(SIGFPE, blech_in_list);
9629 sprintf(str, "123.");
9630 sscanf(str, "%lf", &f); /* f = 123.; */
9631 along = dummy_long((unsigned long)f);
9632 aint = dummy_int((unsigned int)f);
9633 ashort = dummy_short((unsigned short)f);
9634 if (along != (unsigned long)123)
9636 if (aint != (unsigned int)123)
9638 if (ashort != (unsigned short)123)
9645 if eval $compile_ok; then
9649 echo "(I can't seem to compile the test program--assuming it can't)"
9652 case "$castflags" in
9657 echo "Nope, it can't."
9664 : see if vprintf exists
9666 if set vprintf val -f d_vprintf; eval $csym; $val; then
9667 echo 'vprintf() found.' >&4
9670 #include <varargs.h>
9672 int main() { xxx("foo"); }
9681 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9685 if eval $compile && $run ./try; then
9686 echo "Your vsprintf() returns (int)." >&4
9689 echo "Your vsprintf() returns (char*)." >&4
9693 echo 'vprintf() NOT found.' >&4
9704 : see if chown exists
9708 : see if chroot exists
9712 : see if chsize exists
9716 : see if class exists
9720 hasstruct='varname=$1; struct=$2; shift; shift;
9721 while $test $# -ge 2; do
9723 $define) echo "#include <$2>";;
9727 echo "int main () { struct $struct foo; }" >> try.c;
9729 if eval $compile; then
9740 : see whether socket exists
9742 $echo $n "Hmm... $c" >&4
9743 if set socket val -f d_socket; eval $csym; $val; then
9744 echo "Looks like you have Berkeley networking support." >&4
9746 if set setsockopt val -f; eval $csym; $val; then
9749 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9753 if $contains socklib libc.list >/dev/null 2>&1; then
9754 echo "Looks like you have Berkeley networking support." >&4
9756 : we will have to assume that it supports the 4.2 BSD interface
9759 echo "You don't have Berkeley networking in libc$_a..." >&4
9760 if test "X$d_socket" = "X$define"; then
9761 echo "...but you seem to believe that you have sockets." >&4
9763 for net in net socket
9765 if test -f /usr/lib/lib$net$_a; then
9766 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9767 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9768 if $contains socket libc.list >/dev/null 2>&1; then
9773 echo "...but the Wollongong group seems to have hacked it in." >&4
9774 sockethdr="-I/usr/netinclude"
9777 echo "Found Berkeley sockets interface in lib$net." >&4
9778 if $contains setsockopt libc.list >/dev/null 2>&1; then
9781 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9788 if test "X$d_socket" != "X$define"; then
9789 echo "or anywhere else I see." >&4
9797 : see if socketpair exists
9798 set socketpair d_sockpair
9803 echo "Checking the availability of certain socket constants..." >&4
9804 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9805 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9807 #include <sys/types.h>
9808 #include <sys/socket.h>
9814 set try; if eval $compile; then
9817 set d_${enum}; eval $setvar
9821 : see if this is a sys/uio.h system
9822 set sys/uio.h i_sysuio
9827 echo "Checking to see if your system supports struct cmsghdr..." >&4
9828 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9830 case "$d_cmsghdr_s" in
9831 "$define") echo "Yes, it does." ;;
9832 *) echo "No, it doesn't." ;;
9836 : check for const keyword
9838 echo 'Checking to see if your C compiler knows about "const"...' >&4
9839 $cat >const.c <<'EOCP'
9840 typedef struct spug { int drokk; } spug;
9847 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9849 echo "Yup, it does."
9852 echo "Nope, it doesn't."
9857 : see if crypt exists
9862 $define) cryptlib='' ;;
9863 *) if set crypt val -f d_crypt; eval $csym; $val; then
9864 echo 'crypt() found.' >&4
9868 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9869 if $test -z "$cryptlib"; then
9870 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9874 if $test -z "$cryptlib"; then
9875 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9879 if $test -z "$cryptlib"; then
9880 cryptlib=`./loc libcrypt$_a "" $libpth`
9884 if $test -z "$cryptlib"; then
9885 echo 'crypt() NOT found.' >&4
9896 : see if this is a crypt.h system
9900 : see if crypt_r exists
9901 set crypt_r d_crypt_r
9903 case "$d_crypt_r" in
9905 hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
9906 case "$crypt_r_proto" in
9907 ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
9908 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
9910 case "$crypt_r_proto" in
9913 echo "Disabling crypt_r, cannot determine prototype." ;;
9914 * ) case "$crypt_r_proto" in
9915 REENTRANT_PROTO*) ;;
9916 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
9918 echo "Prototype: $try" ;;
9925 : get csh whereabouts
9927 'csh') val="$undef" ;;
9932 : Respect a hint or command line value for full_csh.
9934 '') full_csh=$csh ;;
9937 : see if ctermid_r exists
9938 set ctermid_r d_ctermid_r
9940 case "$d_ctermid_r" in
9942 hdrs="$i_systypes sys/types.h define stdio.h $i_stdio stdio.h"
9943 case "$ctermid_r_proto" in
9944 ''|0) try='char* ctermid_r(char*);'
9945 ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
9947 case "$ctermid_r_proto" in
9948 '') d_ctermid_r=undef
9950 echo "Disabling ctermid_r, cannot determine prototype." ;;
9951 * ) case "$ctermid_r_proto" in
9952 REENTRANT_PROTO*) ;;
9953 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
9955 echo "Prototype: $try" ;;
9958 *) ctermid_r_proto=0
9962 : see if ctime_r exists
9963 set ctime_r d_ctime_r
9965 case "$d_ctime_r" in
9967 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
9968 case "$ctime_r_proto" in
9969 ''|0) try='char* ctime_r(const time_t*, char*);'
9970 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
9972 case "$ctime_r_proto" in
9973 ''|0) try='char* ctime_r(const time_t*, char*, int);'
9974 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
9976 case "$ctime_r_proto" in
9977 ''|0) try='int ctime_r(const time_t*, char*);'
9978 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
9980 case "$ctime_r_proto" in
9981 ''|0) try='int ctime_r(const time_t*, char*, int);'
9982 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
9984 case "$ctime_r_proto" in
9987 echo "Disabling ctime_r, cannot determine prototype." ;;
9988 * ) case "$ctime_r_proto" in
9989 REENTRANT_PROTO*) ;;
9990 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
9992 echo "Prototype: $try" ;;
9999 : see if cuserid exists
10000 set cuserid d_cuserid
10003 : see if this is a limits.h system
10004 set limits.h i_limits
10007 : see if this is a float.h system
10008 set float.h i_float
10011 : See if number of significant digits in a double precision number is known
10013 $cat >dbl_dig.c <<EOM
10014 #$i_limits I_LIMITS
10017 #include <limits.h>
10023 printf("Contains DBL_DIG");
10026 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10027 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10028 echo "DBL_DIG found." >&4
10031 echo "DBL_DIG NOT found." >&4
10038 hasproto='varname=$1; func=$2; shift; shift;
10039 while $test $# -ge 2; do
10041 $define) echo "#include <$2>";;
10045 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
10046 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
10047 echo "$func() prototype found.";
10050 echo "$func() prototype NOT found.";
10055 $rm -f try.c tryout.c'
10057 : see if dbm.h is available
10058 : see if dbmclose exists
10059 set dbmclose d_dbmclose
10062 case "$d_dbmclose" in
10072 *) set rpcsvc/dbm.h i_rpcsvcdbm
10077 *) echo "We won't be including <dbm.h>"
10087 : see if prototype for dbminit is available
10089 set d_dbminitproto dbminit $i_dbm dbm.h
10092 : see if difftime exists
10093 set difftime d_difftime
10096 : see if this is a dirent system
10098 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10100 echo "<dirent.h> found." >&4
10103 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10104 echo "<sys/dir.h> found." >&4
10107 xinc=`./findhdr sys/ndir.h`
10109 echo "<dirent.h> NOT found." >&4
10114 : Look for type of directory structure.
10116 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10118 case "$direntrytype" in
10120 case "$i_dirent" in
10121 $define) guess1='struct dirent' ;;
10122 *) guess1='struct direct' ;;
10125 *) guess1="$direntrytype"
10130 'struct dirent') guess2='struct direct' ;;
10131 *) guess2='struct dirent' ;;
10134 if $contains "$guess1" try.c >/dev/null 2>&1; then
10135 direntrytype="$guess1"
10136 echo "Your directory entries are $direntrytype." >&4
10137 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10138 direntrytype="$guess2"
10139 echo "Your directory entries seem to be $direntrytype." >&4
10141 echo "I don't recognize your system's directory entries." >&4
10142 rp="What type is used for directory entries on this system?"
10145 direntrytype="$ans"
10150 : see if the directory entry stores field length
10152 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10153 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10154 echo "Good, your directory entry keeps length information in d_namlen." >&4
10157 echo "Your directory entry does not know about the d_namlen field." >&4
10164 : see if this is an sysdir system
10165 set sys/dir.h i_sysdir
10168 : see if this is an sysndir system
10169 set sys/ndir.h i_sysndir
10174 $cat >dirfd.c <<EOM
10176 #$i_dirent I_DIRENT /**/
10177 #$i_sysdir I_SYS_DIR /**/
10178 #$i_sysndir I_SYS_NDIR /**/
10179 #$i_systypes I_SYS_TYPES /**/
10180 #if defined(I_SYS_TYPES)
10181 #include <sys/types.h>
10183 #if defined(I_DIRENT)
10184 #include <dirent.h>
10185 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10186 #include <sys/dir.h>
10190 #include <sys/ndir.h>
10194 #include <ndir.h> /* may be wrong in the future */
10196 #include <sys/dir.h>
10202 DIR *dirp = opendir(".");
10203 if (dirfd(dirp) >= 0)
10210 if eval $compile; then
10214 $define) echo "dirfd() found." >&4 ;;
10215 *) echo "dirfd() NOT found." >&4 ;;
10221 : see if dlerror exists
10224 set dlerror d_dlerror
10228 : see if dlfcn is available
10229 set dlfcn.h i_dlfcn
10236 On a few systems, the dynamically loaded modules that perl generates and uses
10237 will need a different extension than shared libs. The default will probably
10243 *) dflt="$dlext" ;;
10245 rp='What is the extension of dynamically loaded modules'
10254 : Check if dlsym need a leading underscore
10260 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10261 $cat >dyna.c <<'EOM'
10270 #include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
10272 #include <sys/types.h>
10277 extern int fred() ;
10286 int mode = RTLD_LAZY ;
10288 handle = dlopen("./dyna.$dlext", mode) ;
10289 if (handle == NULL) {
10294 symbol = dlsym(handle, "fred") ;
10295 if (symbol == NULL) {
10296 /* try putting a leading underscore */
10297 symbol = dlsym(handle, "_fred") ;
10298 if (symbol == NULL) {
10311 : Call the object file tmp-dyna.o in case dlext=o.
10312 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
10313 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
10314 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
10315 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10318 1) echo "Test program failed using dlopen." >&4
10319 echo "Perhaps you should not use dynamic loading." >&4;;
10320 2) echo "Test program failed using dlsym." >&4
10321 echo "Perhaps you should not use dynamic loading." >&4;;
10322 3) echo "dlsym needs a leading underscore" >&4
10324 4) echo "dlsym doesn't need a leading underscore." >&4;;
10327 echo "I can't compile and run the test program." >&4
10328 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10333 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10338 : see if drand48_r exists
10339 set drand48_r d_drand48_r
10341 case "$d_drand48_r" in
10343 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10344 case "$drand48_r_proto" in
10345 ''|0) try='int drand48_r(struct drand48_data*, double*);'
10346 ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10348 case "$drand48_r_proto" in
10349 '') d_drand48_r=undef
10351 echo "Disabling drand48_r, cannot determine prototype." ;;
10352 * ) case "$drand48_r_proto" in
10353 REENTRANT_PROTO*) ;;
10354 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10356 echo "Prototype: $try" ;;
10359 *) drand48_r_proto=0
10363 : see if prototype for drand48 is available
10365 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10368 : see if dup2 exists
10372 : see if eaccess exists
10373 set eaccess d_eaccess
10376 : see if endgrent exists
10377 set endgrent d_endgrent
10380 : see if this is an grp system
10386 xxx=`./findhdr grp.h`
10387 $cppstdin $cppflags $cppminus < $xxx >$$.h
10389 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10401 set d_grpasswd; eval $setvar
10405 : see if endgrent_r exists
10406 set endgrent_r d_endgrent_r
10408 case "$d_endgrent_r" in
10410 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
10411 case "$endgrent_r_proto" in
10412 ''|0) try='int endgrent_r(FILE**);'
10413 ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
10415 case "$endgrent_r_proto" in
10416 ''|0) try='void endgrent_r(FILE**);'
10417 ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
10419 case "$endgrent_r_proto" in
10420 '') d_endgrent_r=undef
10422 echo "Disabling endgrent_r, cannot determine prototype." ;;
10423 * ) case "$endgrent_r_proto" in
10424 REENTRANT_PROTO*) ;;
10425 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
10427 echo "Prototype: $try" ;;
10430 *) endgrent_r_proto=0
10434 : see if endhostent exists
10435 set endhostent d_endhent
10438 : see if this is a netdb.h system
10439 set netdb.h i_netdb
10442 : see if endhostent_r exists
10443 set endhostent_r d_endhostent_r
10445 case "$d_endhostent_r" in
10447 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10448 case "$endhostent_r_proto" in
10449 ''|0) try='int endhostent_r(struct hostent_data*);'
10450 ./protochk "extern $try" $hdrs && endhostent_r_proto=I_S ;;
10452 case "$endhostent_r_proto" in
10453 ''|0) try='void endhostent_r(struct hostent_data*);'
10454 ./protochk "extern $try" $hdrs && endhostent_r_proto=V_S ;;
10456 case "$endhostent_r_proto" in
10457 '') d_endhostent_r=undef
10458 endhostent_r_proto=0
10459 echo "Disabling endhostent_r, cannot determine prototype." ;;
10460 * ) case "$endhostent_r_proto" in
10461 REENTRANT_PROTO*) ;;
10462 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
10464 echo "Prototype: $try" ;;
10467 *) endhostent_r_proto=0
10471 : see if endnetent exists
10472 set endnetent d_endnent
10475 : see if endnetent_r exists
10476 set endnetent_r d_endnetent_r
10478 case "$d_endnetent_r" in
10480 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10481 case "$endnetent_r_proto" in
10482 ''|0) try='int endnetent_r(struct netent_data*);'
10483 ./protochk "extern $try" $hdrs && endnetent_r_proto=I_S ;;
10485 case "$endnetent_r_proto" in
10486 ''|0) try='void endnetent_r(struct netent_data*);'
10487 ./protochk "extern $try" $hdrs && endnetent_r_proto=V_S ;;
10489 case "$endnetent_r_proto" in
10490 '') d_endnetent_r=undef
10491 endnetent_r_proto=0
10492 echo "Disabling endnetent_r, cannot determine prototype." ;;
10493 * ) case "$endnetent_r_proto" in
10494 REENTRANT_PROTO*) ;;
10495 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
10497 echo "Prototype: $try" ;;
10500 *) endnetent_r_proto=0
10504 : see if endprotoent exists
10505 set endprotoent d_endpent
10508 : see if endprotoent_r exists
10509 set endprotoent_r d_endprotoent_r
10511 case "$d_endprotoent_r" in
10513 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10514 case "$endprotoent_r_proto" in
10515 ''|0) try='int endprotoent_r(struct protoent_data*);'
10516 ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_S ;;
10518 case "$endprotoent_r_proto" in
10519 ''|0) try='void endprotoent_r(struct protoent_data*);'
10520 ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_S ;;
10522 case "$endprotoent_r_proto" in
10523 '') d_endprotoent_r=undef
10524 endprotoent_r_proto=0
10525 echo "Disabling endprotoent_r, cannot determine prototype." ;;
10526 * ) case "$endprotoent_r_proto" in
10527 REENTRANT_PROTO*) ;;
10528 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
10530 echo "Prototype: $try" ;;
10533 *) endprotoent_r_proto=0
10537 : see if endpwent exists
10538 set endpwent d_endpwent
10541 : see if this is a pwd.h system
10547 xxx=`./findhdr pwd.h`
10548 $cppstdin $cppflags $cppminus < $xxx >$$.h
10550 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10558 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10566 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10574 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10582 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10590 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10598 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10606 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10618 set d_pwquota; eval $setvar
10619 set d_pwage; eval $setvar
10620 set d_pwchange; eval $setvar
10621 set d_pwclass; eval $setvar
10622 set d_pwexpire; eval $setvar
10623 set d_pwcomment; eval $setvar
10624 set d_pwgecos; eval $setvar
10625 set d_pwpasswd; eval $setvar
10629 : see if endpwent_r exists
10630 set endpwent_r d_endpwent_r
10632 case "$d_endpwent_r" in
10634 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
10635 case "$endpwent_r_proto" in
10636 ''|0) try='int endpwent_r(FILE**);'
10637 ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
10639 case "$endpwent_r_proto" in
10640 ''|0) try='void endpwent_r(FILE**);'
10641 ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
10643 case "$endpwent_r_proto" in
10644 '') d_endpwent_r=undef
10646 echo "Disabling endpwent_r, cannot determine prototype." ;;
10647 * ) case "$endpwent_r_proto" in
10648 REENTRANT_PROTO*) ;;
10649 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
10651 echo "Prototype: $try" ;;
10654 *) endpwent_r_proto=0
10658 : see if endservent exists
10659 set endservent d_endsent
10662 : see if endservent_r exists
10663 set endservent_r d_endservent_r
10665 case "$d_endservent_r" in
10667 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10668 case "$endservent_r_proto" in
10669 ''|0) try='int endservent_r(struct servent_data*);'
10670 ./protochk "extern $try" $hdrs && endservent_r_proto=I_S ;;
10672 case "$endservent_r_proto" in
10673 ''|0) try='void endservent_r(struct servent_data*);'
10674 ./protochk "extern $try" $hdrs && endservent_r_proto=V_S ;;
10676 case "$endservent_r_proto" in
10677 '') d_endservent_r=undef
10678 endservent_r_proto=0
10679 echo "Disabling endservent_r, cannot determine prototype." ;;
10680 * ) case "$endservent_r_proto" in
10681 REENTRANT_PROTO*) ;;
10682 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
10684 echo "Prototype: $try" ;;
10687 *) endservent_r_proto=0
10691 : Locate the flags for 'open()'
10693 $cat >try.c <<'EOCP'
10694 #include <sys/types.h>
10699 #include <sys/file.h>
10710 : check sys/file.h first to get FREAD on Sun
10711 if $test `./findhdr sys/file.h` && \
10712 set try -DI_SYS_FILE && eval $compile; then
10714 echo "<sys/file.h> defines the O_* constants..." >&4
10715 if $run ./try; then
10716 echo "and you have the 3 argument form of open()." >&4
10719 echo "but not the 3 argument form of open(). Oh, well." >&4
10722 elif $test `./findhdr fcntl.h` && \
10723 set try -DI_FCNTL && eval $compile; then
10725 echo "<fcntl.h> defines the O_* constants..." >&4
10726 if $run ./try; then
10727 echo "and you have the 3 argument form of open()." >&4
10730 echo "but not the 3 argument form of open(). Oh, well." >&4
10735 echo "I can't find the O_* constant definitions! You got problems." >&4
10741 : see which of string.h or strings.h is needed
10743 strings=`./findhdr string.h`
10744 if $test "$strings" && $test -r "$strings"; then
10745 echo "Using <string.h> instead of <strings.h>." >&4
10749 strings=`./findhdr strings.h`
10750 if $test "$strings" && $test -r "$strings"; then
10751 echo "Using <strings.h> instead of <string.h>." >&4
10753 echo "No string header found -- You'll surely have problems." >&4
10758 case "$i_string" in
10759 "$undef") strings=`./findhdr strings.h`;;
10760 *) strings=`./findhdr string.h`;;
10763 : see if this is a sys/file.h system
10768 : do we need to include sys/file.h ?
10772 if $h_sysfile; then
10774 echo "We'll be including <sys/file.h>." >&4
10777 echo "We won't be including <sys/file.h>." >&4
10787 : see if fcntl.h is there
10792 : see if we can include fcntl.h
10798 echo "We'll be including <fcntl.h>." >&4
10801 if $h_sysfile; then
10802 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
10804 echo "We won't be including <fcntl.h>." >&4
10816 : check for non-blocking I/O stuff
10817 case "$h_sysfile" in
10818 true) echo "#include <sys/file.h>" > head.c;;
10821 true) echo "#include <fcntl.h>" > head.c;;
10822 *) echo "#include <sys/fcntl.h>" > head.c;;
10827 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
10828 case "$o_nonblock" in
10830 $cat head.c > try.c
10831 $cat >>try.c <<EOCP
10833 #include <stdlib.h>
10840 printf("O_NONBLOCK\n");
10844 printf("O_NDELAY\n");
10848 printf("FNDELAY\n");
10855 if eval $compile_ok; then
10856 o_nonblock=`$run ./try`
10857 case "$o_nonblock" in
10858 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
10859 *) echo "Seems like we can use $o_nonblock.";;
10862 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
10865 *) echo "Using $hint value $o_nonblock.";;
10867 $rm -f try try.* .out core
10870 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
10873 $cat head.c > try.c
10874 $cat >>try.c <<EOCP
10876 #include <sys/types.h>
10877 #include <signal.h>
10879 #include <stdlib.h>
10884 #define MY_O_NONBLOCK $o_nonblock
10885 #ifndef errno /* XXX need better Configure test */
10888 #$i_unistd I_UNISTD
10890 #include <unistd.h>
10892 #$i_string I_STRING
10894 #include <string.h>
10896 #include <strings.h>
10898 $signal_t blech(x) int x; { exit(3); }
10900 $cat >> try.c <<'EOCP'
10908 pipe(pd); /* Down: child -> parent */
10909 pipe(pu); /* Up: parent -> child */
10912 close(pd[1]); /* Parent reads from pd[0] */
10913 close(pu[0]); /* Parent writes (blocking) to pu[1] */
10915 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
10920 signal(SIGALRM, blech);
10922 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
10924 sprintf(string, "%d\n", ret);
10925 write(2, string, strlen(string));
10928 if (errno == EAGAIN) {
10929 printf("EAGAIN\n");
10934 if (errno == EWOULDBLOCK)
10935 printf("EWOULDBLOCK\n");
10938 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
10939 sleep(2); /* Give it time to close our pipe */
10941 ret = read(pd[0], buf, 1); /* Should read EOF */
10943 sprintf(string, "%d\n", ret);
10944 write(4, string, strlen(string));
10948 close(pd[0]); /* We write to pd[1] */
10949 close(pu[1]); /* We read from pu[0] */
10950 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
10951 close(pd[1]); /* Pipe pd is now fully closed! */
10952 exit(0); /* Bye bye, thank you for playing! */
10956 if eval $compile_ok; then
10957 echo "$startsh" >mtry
10958 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
10960 ./mtry >/dev/null 2>&1
10962 0) eagain=`$cat try.out`;;
10963 1) echo "Could not perform non-blocking setting!";;
10964 2) echo "I did a successful read() for something that was not there!";;
10965 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
10966 4) echo "Could not find F_SETFL!";;
10967 *) echo "Something terribly wrong happened during testing.";;
10969 rd_nodata=`$cat try.ret`
10970 echo "A read() system call with no data present returns $rd_nodata."
10971 case "$rd_nodata" in
10974 echo "(That's peculiar, fixing that to be -1.)"
10980 echo "Forcing errno EAGAIN on read() with no data available."
10984 echo "Your read() sets errno to $eagain when no data is available."
10987 status=`$cat try.err`
10989 0) echo "And it correctly returns 0 to signal EOF.";;
10990 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
10991 *) echo "However, your read() returns '$status' on EOF??";;
10994 if test "$status" = "$rd_nodata"; then
10995 echo "WARNING: you can't distinguish between EOF and no data!"
10999 echo "I can't compile the test program--assuming errno EAGAIN will do."
11006 echo "Using $hint value $eagain."
11007 echo "Your read() returns $rd_nodata when no data is present."
11008 case "$d_eofnblk" in
11009 "$define") echo "And you can see EOF because read() returns 0.";;
11010 "$undef") echo "But you can't see EOF status from read() returned value.";;
11012 echo "(Assuming you can't see EOF status from read anyway.)"
11018 $rm -f try try.* .out core head.c mtry
11020 : see if fchdir exists
11021 set fchdir d_fchdir
11024 : see if fchmod exists
11025 set fchmod d_fchmod
11028 : see if fchown exists
11029 set fchown d_fchown
11032 : see if this is an fcntl system
11037 : See if fcntl-based locking works.
11039 #include <stdlib.h>
11040 #include <unistd.h>
11042 #include <signal.h>
11043 $signal_t blech(x) int x; { exit(3); }
11045 #if defined(F_SETLK) && defined(F_SETLKW)
11046 struct flock flock;
11048 fd = open("try.c", O_RDONLY);
11049 flock.l_type = F_RDLCK;
11050 flock.l_whence = SEEK_SET;
11051 flock.l_start = flock.l_len = 0;
11052 signal(SIGALRM, blech);
11054 retval = fcntl(fd, F_SETLK, &flock);
11056 (retval < 0 ? exit(2) : exit(0));
11062 echo "Checking if fcntl-based file locking works... "
11066 if eval $compile_ok; then
11067 if $run ./try; then
11068 echo "Yes, it seems to work."
11071 echo "Nope, it didn't work."
11076 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
11077 *** This is (almost) impossible.
11078 *** If your NFS lock daemons are not feeling well, something like
11079 *** this may happen, please investigate. Cannot continue, aborting.
11087 echo "I'm unable to compile the test program, so I'll assume not."
11092 echo "Nope, since you don't even have fcntl()."
11095 set d_fcntl_can_lock
11100 : check for fd_set items
11103 Checking to see how well your C compiler handles fd_set and friends ...
11106 #$i_systime I_SYS_TIME
11107 #$i_sysselct I_SYS_SELECT
11108 #$d_socket HAS_SOCKET
11109 #include <sys/types.h>
11111 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11114 #include <sys/time.h>
11116 #ifdef I_SYS_SELECT
11117 #include <sys/select.h>
11126 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
11134 if eval $compile; then
11135 d_fds_bits="$define"
11137 echo "Well, your system knows about the normal fd_set typedef..." >&4
11138 if $run ./try; then
11139 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
11140 d_fd_macros="$define"
11143 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
11145 d_fd_macros="$undef"
11149 Hmm, your compiler has some difficulty with fd_set. Checking further...
11152 if eval $compile; then
11153 d_fds_bits="$undef"
11155 echo "Well, your system has some sort of fd_set available..." >&4
11156 if $run ./try; then
11157 echo "and you have the normal fd_set macros." >&4
11158 d_fd_macros="$define"
11161 but not the normal fd_set macros! Gross! More work for me...
11163 d_fd_macros="$undef"
11166 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
11168 d_fds_bits="$undef"
11169 d_fd_macros="$undef"
11174 : see if fgetpos exists
11175 set fgetpos d_fgetpos
11178 : see if finite exists
11179 set finite d_finite
11182 : see if finitel exists
11183 set finitel d_finitel
11186 : see if flock exists
11190 : see if prototype for flock is available
11192 set d_flockproto flock $i_sysfile sys/file.h
11195 : see if fork exists
11199 : see if fp_class exists
11200 set fp_class d_fp_class
11203 : see if pathconf exists
11204 set pathconf d_pathconf
11207 : see if fpathconf exists
11208 set fpathconf d_fpathconf
11211 : see if fpclass exists
11212 set fpclass d_fpclass
11215 : see if fpclassify exists
11216 set fpclassify d_fpclassify
11219 : see if fpclassl exists
11220 set fpclassl d_fpclassl
11224 : check for fpos64_t
11226 echo "Checking to see if you have fpos64_t..." >&4
11229 int main() { fpos64_t x = 7; }
11232 if eval $compile; then
11234 echo "You have fpos64_t."
11237 echo "You do not have fpos64_t."
11238 case "$fpossize" in
11239 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
11246 : see if frexpl exists
11247 set frexpl d_frexpl
11250 : see if this is a sys/param system
11251 set sys/param.h i_sysparam
11254 : see if this is a sys/mount.h system
11255 set sys/mount.h i_sysmount
11260 echo "Checking to see if your system supports struct fs_data..." >&4
11261 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
11263 case "$d_fs_data_s" in
11264 "$define") echo "Yes, it does." ;;
11265 *) echo "No, it doesn't." ;;
11268 : see if fseeko exists
11269 set fseeko d_fseeko
11271 case "$longsize" in
11272 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
11275 : see if fsetpos exists
11276 set fsetpos d_fsetpos
11280 : see if fstatfs exists
11281 set fstatfs d_fstatfs
11285 : see if statvfs exists
11286 set statvfs d_statvfs
11289 : see if fstatvfs exists
11290 set fstatvfs d_fstatvfs
11294 : see if fsync exists
11298 : see if ftello exists
11299 set ftello d_ftello
11301 case "$longsize" in
11302 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
11305 : see if getcwd exists
11306 set getcwd d_getcwd
11309 : see if getespwnam exists
11310 set getespwnam d_getespwnam
11314 : see if getfsstat exists
11315 set getfsstat d_getfsstat
11318 : see if getgrent exists
11319 set getgrent d_getgrent
11322 : see if getgrent_r exists
11323 set getgrent_r d_getgrent_r
11325 case "$d_getgrent_r" in
11327 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11328 case "$getgrent_r_proto" in
11329 ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
11330 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
11332 case "$getgrent_r_proto" in
11333 ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
11334 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
11336 case "$getgrent_r_proto" in
11337 ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
11338 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
11340 case "$getgrent_r_proto" in
11341 ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
11342 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
11344 case "$getgrent_r_proto" in
11345 ''|0) try='int getgrent_r(struct group*, char*, int);'
11346 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
11348 case "$getgrent_r_proto" in
11349 ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
11350 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
11352 case "$getgrent_r_proto" in
11353 '') d_getgrent_r=undef
11355 echo "Disabling getgrent_r, cannot determine prototype." ;;
11356 * ) case "$getgrent_r_proto" in
11357 REENTRANT_PROTO*) ;;
11358 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
11360 echo "Prototype: $try" ;;
11363 *) getgrent_r_proto=0
11367 : see if getgrgid_r exists
11368 set getgrgid_r d_getgrgid_r
11370 case "$d_getgrgid_r" in
11372 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11373 case "$getgrgid_r_proto" in
11374 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
11375 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
11377 case "$getgrgid_r_proto" in
11378 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
11379 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
11381 case "$getgrgid_r_proto" in
11382 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
11383 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
11385 case "$getgrgid_r_proto" in
11386 ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
11387 ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
11389 case "$getgrgid_r_proto" in
11390 '') d_getgrgid_r=undef
11392 echo "Disabling getgrgid_r, cannot determine prototype." ;;
11393 * ) case "$getgrgid_r_proto" in
11394 REENTRANT_PROTO*) ;;
11395 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
11397 echo "Prototype: $try" ;;
11400 *) getgrgid_r_proto=0
11404 : see if getgrnam_r exists
11405 set getgrnam_r d_getgrnam_r
11407 case "$d_getgrnam_r" in
11409 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11410 case "$getgrnam_r_proto" in
11411 ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
11412 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
11414 case "$getgrnam_r_proto" in
11415 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
11416 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
11418 case "$getgrnam_r_proto" in
11419 ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
11420 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
11422 case "$getgrnam_r_proto" in
11423 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
11424 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
11426 case "$getgrnam_r_proto" in
11427 ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
11428 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
11430 case "$getgrnam_r_proto" in
11431 '') d_getgrnam_r=undef
11433 echo "Disabling getgrnam_r, cannot determine prototype." ;;
11434 * ) case "$getgrnam_r_proto" in
11435 REENTRANT_PROTO*) ;;
11436 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
11438 echo "Prototype: $try" ;;
11441 *) getgrnam_r_proto=0
11445 : see if gethostbyaddr exists
11446 set gethostbyaddr d_gethbyaddr
11449 : see if gethostbyname exists
11450 set gethostbyname d_gethbyname
11453 : see if gethostent exists
11454 set gethostent d_gethent
11457 : see how we will look up host name
11460 if set gethostname val -f d_gethname; eval $csym; $val; then
11461 echo 'gethostname() found.' >&4
11462 d_gethname="$define"
11465 if set uname val -f d_uname; eval $csym; $val; then
11468 uname() was found, but you're running xenix, and older versions of xenix
11469 have a broken uname(). If you don't really know whether your xenix is old
11470 enough to have a broken system call, use the default answer.
11475 "$define") dflt=n;;
11477 rp='Is your uname() broken?'
11480 n*) d_uname="$define"; call=uname;;
11483 echo 'uname() found.' >&4
11490 case "$d_gethname" in
11491 '') d_gethname="$undef";;
11494 '') d_uname="$undef";;
11496 case "$d_uname$d_gethname" in
11501 Every now and then someone has a $call() that lies about the hostname
11502 but can't be fixed for political or economic reasons. If you wish, I can
11503 pretend $call() isn't there and maybe compute hostname at run-time
11504 thanks to the '$phostname' command.
11507 rp="Shall I ignore $call() from now on?"
11510 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
11513 case "$phostname" in
11514 '') aphostname='';;
11515 *) case "$aphostname" in
11517 *) set X $phostname
11521 file=`./loc $file $file $pth`
11522 aphostname=`echo $file $*`
11527 case "$d_uname$d_gethname" in
11530 case "$phostname" in
11532 echo "There will be no way for $package to get your hostname." >&4;;
11534 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
11538 case "$d_phostname" in
11539 '') d_phostname="$undef";;
11542 : see if gethostbyaddr_r exists
11543 set gethostbyaddr_r d_gethostbyaddr_r
11545 case "$d_gethostbyaddr_r" in
11547 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11548 case "$gethostbyaddr_r_proto" in
11549 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
11550 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
11552 case "$gethostbyaddr_r_proto" in
11553 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
11554 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
11556 case "$gethostbyaddr_r_proto" in
11557 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
11558 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
11560 case "$gethostbyaddr_r_proto" in
11561 ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
11562 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
11564 case "$gethostbyaddr_r_proto" in
11565 ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
11566 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
11568 case "$gethostbyaddr_r_proto" in
11569 ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
11570 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
11572 case "$gethostbyaddr_r_proto" in
11573 ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
11574 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
11576 case "$gethostbyaddr_r_proto" in
11577 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
11578 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
11580 case "$gethostbyaddr_r_proto" in
11581 ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
11582 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
11584 case "$gethostbyaddr_r_proto" in
11585 ''|0) try='int gethostbyaddr_r(const char*, int, int);'
11586 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
11588 case "$gethostbyaddr_r_proto" in
11589 '') d_gethostbyaddr_r=undef
11590 gethostbyaddr_r_proto=0
11591 echo "Disabling gethostbyaddr_r, cannot determine prototype." ;;
11592 * ) case "$gethostbyaddr_r_proto" in
11593 REENTRANT_PROTO*) ;;
11594 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
11596 echo "Prototype: $try" ;;
11599 *) gethostbyaddr_r_proto=0
11603 : see if gethostbyname_r exists
11604 set gethostbyname_r d_gethostbyname_r
11606 case "$d_gethostbyname_r" in
11608 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11609 case "$gethostbyname_r_proto" in
11610 ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
11611 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
11613 case "$gethostbyname_r_proto" in
11614 ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
11615 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
11617 case "$gethostbyname_r_proto" in
11618 ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
11619 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
11621 case "$gethostbyname_r_proto" in
11622 '') d_gethostbyname_r=undef
11623 gethostbyname_r_proto=0
11624 echo "Disabling gethostbyname_r, cannot determine prototype." ;;
11625 * ) case "$gethostbyname_r_proto" in
11626 REENTRANT_PROTO*) ;;
11627 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
11629 echo "Prototype: $try" ;;
11632 *) gethostbyname_r_proto=0
11636 : see if gethostent_r exists
11637 set gethostent_r d_gethostent_r
11639 case "$d_gethostent_r" in
11641 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11642 case "$gethostent_r_proto" in
11643 ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
11644 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
11646 case "$gethostent_r_proto" in
11647 ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
11648 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
11650 case "$gethostent_r_proto" in
11651 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
11652 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
11654 case "$gethostent_r_proto" in
11655 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
11656 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
11658 case "$gethostent_r_proto" in
11659 ''|0) try='int gethostent_r(struct hostent*, char*, int);'
11660 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
11662 case "$gethostent_r_proto" in
11663 ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
11664 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
11666 case "$gethostent_r_proto" in
11667 '') d_gethostent_r=undef
11668 gethostent_r_proto=0
11669 echo "Disabling gethostent_r, cannot determine prototype." ;;
11670 * ) case "$gethostent_r_proto" in
11671 REENTRANT_PROTO*) ;;
11672 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
11674 echo "Prototype: $try" ;;
11677 *) gethostent_r_proto=0
11681 : see if prototypes for various gethostxxx netdb.h functions are available
11683 set d_gethostprotos gethostent $i_netdb netdb.h
11686 : see if getitimer exists
11687 set getitimer d_getitimer
11690 : see if getlogin exists
11691 set getlogin d_getlogin
11694 : see if getlogin_r exists
11695 set getlogin_r d_getlogin_r
11697 case "$d_getlogin_r" in
11699 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
11700 case "$getlogin_r_proto" in
11701 ''|0) try='int getlogin_r(char*, size_t);'
11702 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
11704 case "$getlogin_r_proto" in
11705 ''|0) try='int getlogin_r(char*, int);'
11706 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
11708 case "$getlogin_r_proto" in
11709 ''|0) try='char* getlogin_r(char*, size_t);'
11710 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
11712 case "$getlogin_r_proto" in
11713 ''|0) try='char* getlogin_r(char*, int);'
11714 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
11716 case "$getlogin_r_proto" in
11717 '') d_getlogin_r=undef
11719 echo "Disabling getlogin_r, cannot determine prototype." ;;
11720 * ) case "$getlogin_r_proto" in
11721 REENTRANT_PROTO*) ;;
11722 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
11724 echo "Prototype: $try" ;;
11727 *) getlogin_r_proto=0
11731 : see if getmnt exists
11732 set getmnt d_getmnt
11735 : see if getmntent exists
11736 set getmntent d_getmntent
11739 : see if getnetbyaddr exists
11740 set getnetbyaddr d_getnbyaddr
11743 : see if getnetbyname exists
11744 set getnetbyname d_getnbyname
11747 : see if getnetent exists
11748 set getnetent d_getnent
11751 : see if getnetbyaddr_r exists
11752 set getnetbyaddr_r d_getnetbyaddr_r
11754 case "$d_getnetbyaddr_r" in
11756 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11757 case "$getnetbyaddr_r_proto" in
11758 ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
11759 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
11761 case "$getnetbyaddr_r_proto" in
11762 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
11763 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
11765 case "$getnetbyaddr_r_proto" in
11766 ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
11767 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
11769 case "$getnetbyaddr_r_proto" in
11770 ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
11771 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
11773 case "$getnetbyaddr_r_proto" in
11774 ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
11775 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
11777 case "$getnetbyaddr_r_proto" in
11778 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
11779 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
11781 case "$getnetbyaddr_r_proto" in
11782 ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
11783 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
11785 case "$getnetbyaddr_r_proto" in
11786 '') d_getnetbyaddr_r=undef
11787 getnetbyaddr_r_proto=0
11788 echo "Disabling getnetbyaddr_r, cannot determine prototype." ;;
11789 * ) case "$getnetbyaddr_r_proto" in
11790 REENTRANT_PROTO*) ;;
11791 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
11793 echo "Prototype: $try" ;;
11796 *) getnetbyaddr_r_proto=0
11800 : see if getnetbyname_r exists
11801 set getnetbyname_r d_getnetbyname_r
11803 case "$d_getnetbyname_r" in
11805 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11806 case "$getnetbyname_r_proto" in
11807 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
11808 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
11810 case "$getnetbyname_r_proto" in
11811 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
11812 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
11814 case "$getnetbyname_r_proto" in
11815 ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
11816 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
11818 case "$getnetbyname_r_proto" in
11819 ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
11820 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
11822 case "$getnetbyname_r_proto" in
11823 '') d_getnetbyname_r=undef
11824 getnetbyname_r_proto=0
11825 echo "Disabling getnetbyname_r, cannot determine prototype." ;;
11826 * ) case "$getnetbyname_r_proto" in
11827 REENTRANT_PROTO*) ;;
11828 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
11830 echo "Prototype: $try" ;;
11833 *) getnetbyname_r_proto=0
11837 : see if getnetent_r exists
11838 set getnetent_r d_getnetent_r
11840 case "$d_getnetent_r" in
11842 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11843 case "$getnetent_r_proto" in
11844 ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
11845 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
11847 case "$getnetent_r_proto" in
11848 ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
11849 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
11851 case "$getnetent_r_proto" in
11852 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
11853 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
11855 case "$getnetent_r_proto" in
11856 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
11857 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
11859 case "$getnetent_r_proto" in
11860 ''|0) try='int getnetent_r(struct netent*, char*, int);'
11861 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
11863 case "$getnetent_r_proto" in
11864 ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
11865 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
11867 case "$getnetent_r_proto" in
11868 '') d_getnetent_r=undef
11869 getnetent_r_proto=0
11870 echo "Disabling getnetent_r, cannot determine prototype." ;;
11871 * ) case "$getnetent_r_proto" in
11872 REENTRANT_PROTO*) ;;
11873 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
11875 echo "Prototype: $try" ;;
11878 *) getnetent_r_proto=0
11882 : see if prototypes for various getnetxxx netdb.h functions are available
11884 set d_getnetprotos getnetent $i_netdb netdb.h
11887 : see if getpagesize exists
11888 set getpagesize d_getpagsz
11892 : see if getprotobyname exists
11893 set getprotobyname d_getpbyname
11896 : see if getprotobynumber exists
11897 set getprotobynumber d_getpbynumber
11900 : see if getprotoent exists
11901 set getprotoent d_getpent
11904 : see if getpgid exists
11905 set getpgid d_getpgid
11908 : see if getpgrp2 exists
11909 set getpgrp2 d_getpgrp2
11912 : see if getppid exists
11913 set getppid d_getppid
11916 : see if getpriority exists
11917 set getpriority d_getprior
11920 : see if getprotobyname_r exists
11921 set getprotobyname_r d_getprotobyname_r
11923 case "$d_getprotobyname_r" in
11925 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11926 case "$getprotobyname_r_proto" in
11927 ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
11928 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
11930 case "$getprotobyname_r_proto" in
11931 ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
11932 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
11934 case "$getprotobyname_r_proto" in
11935 ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
11936 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
11938 case "$getprotobyname_r_proto" in
11939 '') d_getprotobyname_r=undef
11940 getprotobyname_r_proto=0
11941 echo "Disabling getprotobyname_r, cannot determine prototype." ;;
11942 * ) case "$getprotobyname_r_proto" in
11943 REENTRANT_PROTO*) ;;
11944 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
11946 echo "Prototype: $try" ;;
11949 *) getprotobyname_r_proto=0
11953 : see if getprotobynumber_r exists
11954 set getprotobynumber_r d_getprotobynumber_r
11956 case "$d_getprotobynumber_r" in
11958 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11959 case "$getprotobynumber_r_proto" in
11960 ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
11961 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
11963 case "$getprotobynumber_r_proto" in
11964 ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
11965 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
11967 case "$getprotobynumber_r_proto" in
11968 ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
11969 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
11971 case "$getprotobynumber_r_proto" in
11972 '') d_getprotobynumber_r=undef
11973 getprotobynumber_r_proto=0
11974 echo "Disabling getprotobynumber_r, cannot determine prototype." ;;
11975 * ) case "$getprotobynumber_r_proto" in
11976 REENTRANT_PROTO*) ;;
11977 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
11979 echo "Prototype: $try" ;;
11982 *) getprotobynumber_r_proto=0
11986 : see if getprotoent_r exists
11987 set getprotoent_r d_getprotoent_r
11989 case "$d_getprotoent_r" in
11991 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11992 case "$getprotoent_r_proto" in
11993 ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
11994 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
11996 case "$getprotoent_r_proto" in
11997 ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
11998 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
12000 case "$getprotoent_r_proto" in
12001 ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
12002 ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
12004 case "$getprotoent_r_proto" in
12005 ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
12006 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
12008 case "$getprotoent_r_proto" in
12009 '') d_getprotoent_r=undef
12010 getprotoent_r_proto=0
12011 echo "Disabling getprotoent_r, cannot determine prototype." ;;
12012 * ) case "$getprotoent_r_proto" in
12013 REENTRANT_PROTO*) ;;
12014 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
12016 echo "Prototype: $try" ;;
12019 *) getprotoent_r_proto=0
12023 : see if prototypes for various getprotoxxx netdb.h functions are available
12025 set d_getprotoprotos getprotoent $i_netdb netdb.h
12028 : see if getprpwnam exists
12029 set getprpwnam d_getprpwnam
12032 : see if getpwent exists
12033 set getpwent d_getpwent
12036 : see if getpwent_r exists
12037 set getpwent_r d_getpwent_r
12039 case "$d_getpwent_r" in
12041 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12042 case "$getpwent_r_proto" in
12043 ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
12044 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
12046 case "$getpwent_r_proto" in
12047 ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
12048 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
12050 case "$getpwent_r_proto" in
12051 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
12052 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
12054 case "$getpwent_r_proto" in
12055 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
12056 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
12058 case "$getpwent_r_proto" in
12059 ''|0) try='int getpwent_r(struct passwd*, char*, int);'
12060 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
12062 case "$getpwent_r_proto" in
12063 ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
12064 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
12066 case "$getpwent_r_proto" in
12067 '') d_getpwent_r=undef
12069 echo "Disabling getpwent_r, cannot determine prototype." ;;
12070 * ) case "$getpwent_r_proto" in
12071 REENTRANT_PROTO*) ;;
12072 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
12074 echo "Prototype: $try" ;;
12077 *) getpwent_r_proto=0
12081 : see if getpwnam_r exists
12082 set getpwnam_r d_getpwnam_r
12084 case "$d_getpwnam_r" in
12086 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12087 case "$getpwnam_r_proto" in
12088 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
12089 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
12091 case "$getpwnam_r_proto" in
12092 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
12093 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
12095 case "$getpwnam_r_proto" in
12096 ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
12097 ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
12099 case "$getpwnam_r_proto" in
12100 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
12101 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
12103 case "$getpwnam_r_proto" in
12104 '') d_getpwnam_r=undef
12106 echo "Disabling getpwnam_r, cannot determine prototype." ;;
12107 * ) case "$getpwnam_r_proto" in
12108 REENTRANT_PROTO*) ;;
12109 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
12111 echo "Prototype: $try" ;;
12114 *) getpwnam_r_proto=0
12118 : see if getpwuid_r exists
12119 set getpwuid_r d_getpwuid_r
12121 case "$d_getpwuid_r" in
12123 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12124 case "$getpwuid_r_proto" in
12125 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
12126 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
12128 case "$getpwuid_r_proto" in
12129 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
12130 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
12132 case "$getpwuid_r_proto" in
12133 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
12134 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
12136 case "$getpwuid_r_proto" in
12137 ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
12138 ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
12140 case "$getpwuid_r_proto" in
12141 '') d_getpwuid_r=undef
12143 echo "Disabling getpwuid_r, cannot determine prototype." ;;
12144 * ) case "$getpwuid_r_proto" in
12145 REENTRANT_PROTO*) ;;
12146 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
12148 echo "Prototype: $try" ;;
12151 *) getpwuid_r_proto=0
12156 : see if getservbyname exists
12157 set getservbyname d_getsbyname
12160 : see if getservbyport exists
12161 set getservbyport d_getsbyport
12164 : see if getservent exists
12165 set getservent d_getsent
12168 : see if getservbyname_r exists
12169 set getservbyname_r d_getservbyname_r
12171 case "$d_getservbyname_r" in
12173 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12174 case "$getservbyname_r_proto" in
12175 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
12176 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
12178 case "$getservbyname_r_proto" in
12179 ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
12180 ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
12182 case "$getservbyname_r_proto" in
12183 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
12184 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
12186 case "$getservbyname_r_proto" in
12187 '') d_getservbyname_r=undef
12188 getservbyname_r_proto=0
12189 echo "Disabling getservbyname_r, cannot determine prototype." ;;
12190 * ) case "$getservbyname_r_proto" in
12191 REENTRANT_PROTO*) ;;
12192 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
12194 echo "Prototype: $try" ;;
12197 *) getservbyname_r_proto=0
12201 : see if getservbyport_r exists
12202 set getservbyport_r d_getservbyport_r
12204 case "$d_getservbyport_r" in
12206 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12207 case "$getservbyport_r_proto" in
12208 ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
12209 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
12211 case "$getservbyport_r_proto" in
12212 ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
12213 ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
12215 case "$getservbyport_r_proto" in
12216 ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
12217 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
12219 case "$getservbyport_r_proto" in
12220 '') d_getservbyport_r=undef
12221 getservbyport_r_proto=0
12222 echo "Disabling getservbyport_r, cannot determine prototype." ;;
12223 * ) case "$getservbyport_r_proto" in
12224 REENTRANT_PROTO*) ;;
12225 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
12227 echo "Prototype: $try" ;;
12230 *) getservbyport_r_proto=0
12234 : see if getservent_r exists
12235 set getservent_r d_getservent_r
12237 case "$d_getservent_r" in
12239 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12240 case "$getservent_r_proto" in
12241 ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
12242 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
12244 case "$getservent_r_proto" in
12245 ''|0) try='int getservent_r(struct servent*, char*, int);'
12246 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
12248 case "$getservent_r_proto" in
12249 ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
12250 ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
12252 case "$getservent_r_proto" in
12253 ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
12254 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
12256 case "$getservent_r_proto" in
12257 '') d_getservent_r=undef
12258 getservent_r_proto=0
12259 echo "Disabling getservent_r, cannot determine prototype." ;;
12260 * ) case "$getservent_r_proto" in
12261 REENTRANT_PROTO*) ;;
12262 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
12264 echo "Prototype: $try" ;;
12267 *) getservent_r_proto=0
12271 : see if prototypes for various getservxxx netdb.h functions are available
12273 set d_getservprotos getservent $i_netdb netdb.h
12276 : see if getspnam exists
12277 set getspnam d_getspnam
12280 : see if this is a shadow.h system
12281 set shadow.h i_shadow
12284 : see if getspnam_r exists
12285 set getspnam_r d_getspnam_r
12287 case "$d_getspnam_r" in
12289 hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
12290 case "$getspnam_r_proto" in
12291 ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
12292 ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
12294 case "$getspnam_r_proto" in
12295 ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
12296 ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
12298 case "$getspnam_r_proto" in
12299 '') d_getspnam_r=undef
12301 echo "Disabling getspnam_r, cannot determine prototype." ;;
12302 * ) case "$getspnam_r_proto" in
12303 REENTRANT_PROTO*) ;;
12304 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
12306 echo "Prototype: $try" ;;
12309 *) getspnam_r_proto=0
12313 : see if gettimeofday or ftime exists
12314 set gettimeofday d_gettimeod
12316 case "$d_gettimeod" in
12322 val="$undef"; set d_ftime; eval $setvar
12325 case "$d_gettimeod$d_ftime" in
12328 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
12332 : see if gmtime_r exists
12333 set gmtime_r d_gmtime_r
12335 case "$d_gmtime_r" in
12337 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
12338 case "$gmtime_r_proto" in
12339 ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
12340 ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
12342 case "$gmtime_r_proto" in
12343 ''|0) try='int gmtime_r(const time_t*, struct tm*);'
12344 ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
12346 case "$gmtime_r_proto" in
12347 '') d_gmtime_r=undef
12349 echo "Disabling gmtime_r, cannot determine prototype." ;;
12350 * ) case "$gmtime_r_proto" in
12351 REENTRANT_PROTO*) ;;
12352 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
12354 echo "Prototype: $try" ;;
12357 *) gmtime_r_proto=0
12361 : see if hasmntopt exists
12362 set hasmntopt d_hasmntopt
12365 : see if this is a netinet/in.h or sys/in.h system
12366 set netinet/in.h i_niin sys/in.h i_sysin
12369 : see if arpa/inet.h has to be included
12370 set arpa/inet.h i_arpainet
12373 : see if htonl --and friends-- exists
12378 : Maybe they are macros.
12381 $cat >htonl.c <<EOM
12383 #include <sys/types.h>
12384 #$i_niin I_NETINET_IN
12386 #$i_arpainet I_ARPA_INET
12387 #ifdef I_NETINET_IN
12388 #include <netinet/in.h>
12391 #include <sys/in.h>
12394 #include <arpa/inet.h>
12397 printf("Defined as a macro.");
12400 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
12401 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
12403 echo "But it seems to be defined as a macro." >&4
12413 if set index val -f; eval $csym; $val; then
12414 if set strchr val -f d_strchr; eval $csym; $val; then
12415 if $contains strchr "$strings" >/dev/null 2>&1 ; then
12418 echo "strchr() found." >&4
12422 echo "index() found." >&4
12427 echo "index() found." >&4
12430 if set strchr val -f d_strchr; eval $csym; $val; then
12433 echo "strchr() found." >&4
12435 echo "No index() or strchr() found!" >&4
12440 set d_strchr; eval $setvar
12442 set d_index; eval $setvar
12444 : check whether inet_aton exists
12445 set inet_aton d_inetaton
12450 $cat >isascii.c <<'EOCP'
12462 if eval $compile; then
12463 echo "isascii() found." >&4
12466 echo "isascii() NOT found." >&4
12473 : see if isfinite exists
12474 set isfinite d_isfinite
12477 : see if isinf exists
12481 : see if isnan exists
12485 : see if isnanl exists
12486 set isnanl d_isnanl
12489 : see if killpg exists
12490 set killpg d_killpg
12493 : see if lchown exists
12495 $cat > try.c <<'EOCP'
12496 /* System header to define __stub macros and hopefully few prototypes,
12497 which can conflict with char lchown(); below. */
12498 #include <assert.h>
12499 /* Override any gcc2 internal prototype to avoid an error. */
12500 /* We use char because int might match the return type of a gcc2
12501 builtin and then its argument prototype would still apply. */
12504 /* The GNU C library defines this for functions which it implements
12505 to always fail with ENOSYS. Some functions are actually named
12506 something starting with __ and the normal name is an alias. */
12507 #if defined (__stub_lchown) || defined (__stub___lchown)
12515 if eval $compile; then
12516 $echo "lchown() found." >&4
12519 $echo "lchown() NOT found." >&4
12525 : See if number of significant digits in a double precision number is known
12527 $cat >ldbl_dig.c <<EOM
12528 #$i_limits I_LIMITS
12531 #include <limits.h>
12537 printf("Contains LDBL_DIG");
12540 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
12541 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
12542 echo "LDBL_DIG found." >&4
12545 echo "LDBL_DIG NOT found." >&4
12552 : see if link exists
12556 : see if localtime_r exists
12557 set localtime_r d_localtime_r
12559 case "$d_localtime_r" in
12561 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
12562 case "$localtime_r_proto" in
12563 ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
12564 ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
12566 case "$localtime_r_proto" in
12567 ''|0) try='int localtime_r(const time_t*, struct tm*);'
12568 ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
12570 case "$localtime_r_proto" in
12571 '') d_localtime_r=undef
12572 localtime_r_proto=0
12573 echo "Disabling localtime_r, cannot determine prototype." ;;
12574 * ) case "$localtime_r_proto" in
12575 REENTRANT_PROTO*) ;;
12576 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
12578 echo "Prototype: $try" ;;
12581 *) localtime_r_proto=0
12585 : see if localeconv exists
12586 set localeconv d_locconv
12589 : see if lockf exists
12593 : see if prototype for lseek is available
12595 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
12598 : see if lstat exists
12602 : see if madvise exists
12603 set madvise d_madvise
12606 : see if mblen exists
12610 : see if mbstowcs exists
12611 set mbstowcs d_mbstowcs
12614 : see if mbtowc exists
12615 set mbtowc d_mbtowc
12618 : see if memchr exists
12619 set memchr d_memchr
12622 : see if memcmp exists
12623 set memcmp d_memcmp
12626 : see if memcpy exists
12627 set memcpy d_memcpy
12630 : see if memmove exists
12631 set memmove d_memmove
12634 : see if memset exists
12635 set memset d_memset
12638 : see if mkdir exists
12642 : see if mkdtemp exists
12643 set mkdtemp d_mkdtemp
12646 : see if mkfifo exists
12647 set mkfifo d_mkfifo
12650 : see if mkstemp exists
12651 set mkstemp d_mkstemp
12654 : see if mkstemps exists
12655 set mkstemps d_mkstemps
12658 : see if mktime exists
12659 set mktime d_mktime
12662 : see if this is a sys/mman.h system
12663 set sys/mman.h i_sysmman
12666 : see if mmap exists
12669 : see what shmat returns
12670 : default to something harmless
12672 case "$i_sysmman$d_mmap" in
12674 $cat >mmap.c <<'END'
12675 #include <sys/mman.h>
12678 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
12683 echo "and it returns ($mmaptype)." >&4
12689 : see if mprotect exists
12690 set mprotect d_mprotect
12693 : see if msgctl exists
12694 set msgctl d_msgctl
12697 : see if msgget exists
12698 set msgget d_msgget
12701 : see if msgsnd exists
12702 set msgsnd d_msgsnd
12705 : see if msgrcv exists
12706 set msgrcv d_msgrcv
12709 : see how much of the 'msg*(2)' library is present.
12712 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
12713 *"$undef"*) h_msg=false;;
12717 case "`ipcs 2>&1`" in
12718 "SVID messages"*"not configured"*)
12719 echo "Your $osname does not have the msg*(2) configured." >&4
12722 set msgctl d_msgctl
12724 set msgget d_msgget
12726 set msgsnd d_msgsnd
12728 set msgrcv d_msgrcv
12734 : we could also check for sys/ipc.h ...
12735 if $h_msg && $test `./findhdr sys/msg.h`; then
12736 echo "You have the full msg*(2) library." >&4
12739 echo "You don't have the full msg*(2) library." >&4
12747 echo "Checking to see if your system supports struct msghdr..." >&4
12748 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
12750 case "$d_msghdr_s" in
12751 "$define") echo "Yes, it does." ;;
12752 *) echo "No, it doesn't." ;;
12756 : see if msync exists
12760 : see if munmap exists
12761 set munmap d_munmap
12764 : see if nice exists
12768 : see if this is a langinfo.h system
12769 set langinfo.h i_langinfo
12772 : see if nl_langinfo exists
12773 set nl_langinfo d_nl_langinfo
12776 : check for length of character
12778 case "$charsize" in
12780 echo "Checking to see how big your characters are (hey, you never know)..." >&4
12781 $cat >try.c <<'EOCP'
12785 printf("%d\n", (int)sizeof(char));
12790 if eval $compile_ok; then
12794 echo "(I can't seem to compile the test program. Guessing...)"
12801 rp="What is the size of a character (in bytes)?"
12806 : check for volatile keyword
12808 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12809 $cat >try.c <<'EOCP'
12812 typedef struct _goo_struct goo_struct;
12813 goo_struct * volatile goo = ((goo_struct *)0);
12814 struct _goo_struct {
12819 typedef unsigned short foo_t;
12820 char *volatile foo;
12822 volatile foo_t blech;
12826 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12828 echo "Yup, it does."
12831 echo "Nope, it doesn't."
12839 $echo "Choosing the C types to be used for Perl's internal types..." >&4
12841 case "$use64bitint:$d_quad:$quadtype" in
12844 uvtype="$uquadtype"
12849 uvtype="unsigned long"
12855 case "$uselongdouble:$d_longdbl" in
12857 nvtype="long double"
12858 nvsize=$longdblsize
12865 $echo "(IV will be "$ivtype", $ivsize bytes)"
12866 $echo "(UV will be "$uvtype", $uvsize bytes)"
12867 $echo "(NV will be "$nvtype", $nvsize bytes)"
12870 #$i_inttypes I_INTTYPES
12872 #include <inttypes.h>
12877 int8_t i = INT8_MAX;
12878 uint8_t u = UINT8_MAX;
12879 printf("int8_t\n");
12882 int16_t i = INT16_MAX;
12883 uint16_t i = UINT16_MAX;
12884 printf("int16_t\n");
12887 int32_t i = INT32_MAX;
12888 uint32_t u = UINT32_MAX;
12889 printf("int32_t\n");
12895 '') case "$charsize" in
12897 u8type="unsigned char"
12906 if eval $compile; then
12907 case "`$run ./try`" in
12908 int8_t) i8type=int8_t
12918 '') if $test $charsize -ge 1; then
12920 u8type="unsigned char"
12928 '') case "$shortsize" in
12930 u16type="unsigned short"
12938 '') set try -DINT16
12939 if eval $compile; then
12940 case "`$run ./try`" in
12952 '') if $test $shortsize -ge 2; then
12954 u16type="unsigned short"
12962 '') case "$longsize" in
12964 u32type="unsigned long"
12968 *) case "$intsize" in
12970 u32type="unsigned int"
12980 '') set try -DINT32
12981 if eval $compile; then
12982 case "`$run ./try`" in
12994 '') if $test $intsize -ge 4; then
12996 u32type="unsigned int"
13004 '') case "$d_quad:$quadtype" in
13006 i64type="$quadtype"
13007 u64type="$uquadtype"
13015 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
13016 : volatile so that the compiler has to store it out to memory.
13017 if test X"$d_volatile" = X"$define"; then
13022 #include <sys/types.h>
13023 #include <signal.h>
13025 $volatile int bletched = 0;
13026 $signal_t blech(s) int s; { bletched = 1; }
13031 int n = 8 * $uvsize;
13034 signal(SIGFPE, blech);
13037 for (i = 0; i < n; i++) {
13038 u = u << 1 | ($uvtype)1;
13040 if (($uvtype)d != u)
13044 d = ($nvtype)(u - 1);
13045 if (($uvtype)d != (u - 1))
13053 printf("%d\n", ((i == n) ? -n : i));
13059 d_nv_preserves_uv="$undef"
13060 if eval $compile; then
13061 d_nv_preserves_uv_bits="`$run ./try`"
13063 case "$d_nv_preserves_uv_bits" in
13065 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
13066 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
13067 d_nv_preserves_uv="$define"
13069 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
13070 d_nv_preserves_uv="$undef" ;;
13071 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
13072 d_nv_preserves_uv_bits="$undef" ;;
13078 : check for off64_t
13080 echo "Checking to see if you have off64_t..." >&4
13082 #include <sys/types.h>
13083 #include <unistd.h>
13084 int main() { off64_t x = 7; }
13087 if eval $compile; then
13089 echo "You have off64_t."
13092 echo "You do not have off64_t."
13093 case "$lseeksize" in
13094 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
13101 : see if POSIX threads are available
13102 set pthread.h i_pthread
13108 : how to create joinable pthreads
13109 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
13111 echo "Checking what constant to use for creating joinable pthreads..." >&4
13112 $cat >try.c <<'EOCP'
13113 #include <pthread.h>
13115 int detachstate = JOINABLE;
13118 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
13119 if eval $compile; then
13120 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
13121 val="$undef" # Yes, undef.
13122 set d_old_pthread_create_joinable
13125 set old_pthread_create_joinable
13128 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
13129 if eval $compile; then
13130 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
13132 set d_old_pthread_create_joinable
13134 val=PTHREAD_CREATE_UNDETACHED
13135 set old_pthread_create_joinable
13138 set try -DJOINABLE=__UNDETACHED
13139 if eval $compile; then
13140 echo "You seem to use __UNDETACHED." >&4
13142 set d_old_pthread_create_joinable
13145 set old_pthread_create_joinable
13148 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
13150 set d_old_pthread_create_joinable
13153 set old_pthread_create_joinable
13160 d_old_pthread_create_joinable="$undef"
13161 old_pthread_create_joinable=""
13164 : see if pause exists
13168 : see if pipe exists
13172 : see if poll exists
13176 : see if readlink exists
13177 set readlink d_readlink
13183 case "$d_readlink" in
13185 if $issymlink /proc/self/exe ; then
13186 $ls -l /proc/self/exe > reflect
13187 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
13188 echo "You have Linux-like /proc/self/exe."
13189 procselfexe='"/proc/self/exe"'
13193 if $issymlink /proc/curproc/file ; then
13194 $ls -l /proc/curproc/file > reflect
13195 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
13196 echo "You have BSD-like /proc/curproc/file."
13197 procselfexe='"/proc/curproc/file"'
13207 : see whether the pthread_atfork exists
13209 #include <pthread.h>
13212 #ifdef PTHREAD_ATFORK
13213 pthread_atfork(NULL,NULL,NULL);
13218 : see if pthread_atfork exists
13219 set try -DPTHREAD_ATFORK
13220 if eval $compile; then
13225 case "$usethreads" in
13228 $define) echo 'pthread_atfork found.' >&4 ;;
13229 *) echo 'pthread_atfork NOT found.' >&4 ;;
13232 set d_pthread_atfork
13236 : see whether the various POSIXish _yields exist
13238 #include <pthread.h>
13244 #ifdef PTHREAD_YIELD
13247 #ifdef PTHREAD_YIELD_NULL
13248 pthread_yield(NULL);
13254 : see if sched_yield exists
13255 set try -DSCHED_YIELD
13256 if eval $compile; then
13258 sched_yield='sched_yield()'
13262 case "$usethreads" in
13265 $define) echo 'sched_yield() found.' >&4 ;;
13266 *) echo 'sched_yield() NOT found.' >&4 ;;
13272 : see if pthread_yield exists
13273 set try -DPTHREAD_YIELD
13274 if eval $compile; then
13276 case "$sched_yield" in
13277 '') sched_yield='pthread_yield()' ;;
13280 set try -DPTHREAD_YIELD_NULL
13281 if eval $compile; then
13283 case "$sched_yield" in
13284 '') sched_yield='pthread_yield(NULL)' ;;
13290 case "$usethreads" in
13293 $define) echo 'pthread_yield() found.' >&4 ;;
13294 *) echo 'pthread_yield() NOT found.' >&4 ;;
13298 set d_pthread_yield
13301 case "$sched_yield" in
13302 '') sched_yield=undef ;;
13307 : see if random_r exists
13308 set random_r d_random_r
13310 case "$d_random_r" in
13312 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
13313 case "$random_r_proto" in
13314 ''|0) try='int random_r(int*, struct random_data*);'
13315 ./protochk "extern $try" $hdrs && random_r_proto=I_TS ;;
13317 case "$random_r_proto" in
13318 '') d_random_r=undef
13320 echo "Disabling random_r, cannot determine prototype." ;;
13321 * ) case "$random_r_proto" in
13322 REENTRANT_PROTO*) ;;
13323 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
13325 echo "Prototype: $try" ;;
13328 *) random_r_proto=0
13332 : see if readdir and friends exist
13333 set readdir d_readdir
13335 set seekdir d_seekdir
13337 set telldir d_telldir
13339 set rewinddir d_rewinddir
13342 : see if readdir64_r exists
13343 set readdir64_r d_readdir64_r
13345 case "$d_readdir64_r" in
13347 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
13348 case "$readdir64_r_proto" in
13349 ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
13350 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
13352 case "$readdir64_r_proto" in
13353 ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
13354 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
13356 case "$readdir64_r_proto" in
13357 '') d_readdir64_r=undef
13358 readdir64_r_proto=0
13359 echo "Disabling readdir64_r, cannot determine prototype." ;;
13360 * ) case "$readdir64_r_proto" in
13361 REENTRANT_PROTO*) ;;
13362 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
13364 echo "Prototype: $try" ;;
13367 *) readdir64_r_proto=0
13371 : see if readdir_r exists
13372 set readdir_r d_readdir_r
13374 case "$d_readdir_r" in
13376 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
13377 case "$readdir_r_proto" in
13378 ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
13379 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
13381 case "$readdir_r_proto" in
13382 ''|0) try='int readdir_r(DIR*, struct dirent*);'
13383 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
13385 case "$readdir_r_proto" in
13386 '') d_readdir_r=undef
13388 echo "Disabling readdir_r, cannot determine prototype." ;;
13389 * ) case "$readdir_r_proto" in
13390 REENTRANT_PROTO*) ;;
13391 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
13393 echo "Prototype: $try" ;;
13396 *) readdir_r_proto=0
13400 : see if readv exists
13404 : see if recvmsg exists
13405 set recvmsg d_recvmsg
13408 : see if rename exists
13409 set rename d_rename
13412 : see if rmdir exists
13416 : see if memory.h is available.
13421 : See if it conflicts with string.h
13427 $cppstdin $cppflags $cppminus < $strings > mem.h
13428 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
13430 echo "We won't be including <memory.h>."
13440 : can bcopy handle overlapping blocks?
13443 case "$d_memmove" in
13444 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
13445 *) case "$d_bcopy" in
13447 echo "Checking to see if bcopy() can do overlapping copies..." >&4
13449 #$i_memory I_MEMORY
13450 #$i_stdlib I_STDLIB
13451 #$i_string I_STRING
13452 #$i_unistd I_UNISTD
13454 $cat >>try.c <<'EOCP'
13457 # include <memory.h>
13460 # include <stdlib.h>
13463 # include <string.h>
13465 # include <strings.h>
13468 # include <unistd.h> /* Needed for NetBSD */
13472 char buf[128], abc[128];
13478 /* Copy "abcde..." string to char abc[] so that gcc doesn't
13479 try to store the string in read-only memory. */
13480 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
13482 for (align = 7; align >= 0; align--) {
13483 for (len = 36; len; len--) {
13485 bcopy(abc, b, len);
13486 for (off = 1; off <= len; off++) {
13487 bcopy(b, b+off, len);
13488 bcopy(b+off, b, len);
13489 if (bcmp(b, abc, len))
13498 if eval $compile_ok; then
13499 if ./try 2>/dev/null; then
13500 echo "Yes, it can."
13503 echo "It can't, sorry."
13506 echo "(I can't compile the test program, so we'll assume not...)"
13510 $rm -f try.* try core
13516 : can memcpy handle overlapping blocks?
13519 case "$d_memmove" in
13520 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
13521 *) case "$d_memcpy" in
13523 echo "Checking to see if memcpy() can do overlapping copies..." >&4
13525 #$i_memory I_MEMORY
13526 #$i_stdlib I_STDLIB
13527 #$i_string I_STRING
13528 #$i_unistd I_UNISTD
13530 $cat >>try.c <<'EOCP'
13533 # include <memory.h>
13536 # include <stdlib.h>
13539 # include <string.h>
13541 # include <strings.h>
13544 # include <unistd.h> /* Needed for NetBSD */
13548 char buf[128], abc[128];
13554 /* Copy "abcde..." string to char abc[] so that gcc doesn't
13555 try to store the string in read-only memory. */
13556 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
13558 for (align = 7; align >= 0; align--) {
13559 for (len = 36; len; len--) {
13561 memcpy(b, abc, len);
13562 for (off = 1; off <= len; off++) {
13563 memcpy(b+off, b, len);
13564 memcpy(b, b+off, len);
13565 if (memcmp(b, abc, len))
13574 if eval $compile_ok; then
13575 if ./try 2>/dev/null; then
13576 echo "Yes, it can."
13579 echo "It can't, sorry."
13582 echo "(I can't compile the test program, so we'll assume not...)"
13586 $rm -f try.* try core
13592 : can memcmp be trusted to compare relative magnitude?
13594 case "$d_memcmp" in
13597 echo "Checking if your memcmp() can compare relative magnitude..." >&4
13599 #$i_memory I_MEMORY
13600 #$i_stdlib I_STDLIB
13601 #$i_string I_STRING
13602 #$i_unistd I_UNISTD
13604 $cat >>try.c <<'EOCP'
13607 # include <memory.h>
13610 # include <stdlib.h>
13613 # include <string.h>
13615 # include <strings.h>
13618 # include <unistd.h> /* Needed for NetBSD */
13624 if ((a < b) && memcmp(&a, &b, 1) < 0)
13630 if eval $compile_ok; then
13631 if $run ./try 2>/dev/null; then
13632 echo "Yes, it can."
13635 echo "No, it can't (it uses signed chars)."
13638 echo "(I can't compile the test program, so we'll assume not...)"
13642 $rm -f try.* try core
13646 : see if prototype for sbrk is available
13648 set d_sbrkproto sbrk $i_unistd unistd.h
13651 : see if select exists
13652 set select d_select
13655 : see if semctl exists
13656 set semctl d_semctl
13659 : see if semget exists
13660 set semget d_semget
13663 : see if semop exists
13667 : see how much of the 'sem*(2)' library is present.
13670 case "$d_semctl$d_semget$d_semop" in
13671 *"$undef"*) h_sem=false;;
13675 case "`ipcs 2>&1`" in
13676 "SVID messages"*"not configured"*)
13677 echo "Your $osname does not have the sem*(2) configured." >&4
13680 set semctl d_semctl
13682 set semget d_semget
13690 : we could also check for sys/ipc.h ...
13691 if $h_sem && $test `./findhdr sys/sem.h`; then
13692 echo "You have the full sem*(2) library." >&4
13695 echo "You don't have the full sem*(2) library." >&4
13701 : see whether sys/sem.h defines union semun
13703 $cat > try.c <<'END'
13704 #include <sys/types.h>
13705 #include <sys/ipc.h>
13706 #include <sys/sem.h>
13707 int main () { union semun semun; semun.buf = 0; }
13710 if eval $compile; then
13711 echo "You have union semun in <sys/sem.h>." >&4
13714 echo "You do not have union semun in <sys/sem.h>." >&4
13717 $rm -f try try.c try.h
13721 : see how to do semctl IPC_STAT
13724 : see whether semctl IPC_STAT can use union semun
13729 # define S_IRUSR S_IREAD
13730 # define S_IWUSR S_IWRITE
13731 # define S_IXUSR S_IEXEC
13733 # define S_IRUSR 0400
13734 # define S_IWUSR 0200
13735 # define S_IXUSR 0100
13737 # define S_IRGRP (S_IRUSR>>3)
13738 # define S_IWGRP (S_IWUSR>>3)
13739 # define S_IXGRP (S_IXUSR>>3)
13740 # define S_IROTH (S_IRUSR>>6)
13741 # define S_IWOTH (S_IWUSR>>6)
13742 # define S_IXOTH (S_IXUSR>>6)
13745 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
13746 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
13747 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
13752 #include <sys/types.h>
13753 #include <sys/ipc.h>
13754 #include <sys/sem.h>
13755 #include <sys/stat.h>
13762 #$d_union_semun HAS_UNION_SEMUN
13765 #ifndef HAS_UNION_SEMUN
13768 struct semid_ds *buf;
13769 unsigned short *array;
13775 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
13776 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
13778 struct semid_ds argbuf;
13781 st = semctl(sem, 0, IPC_STAT, arg);
13785 # endif /* IPC_STAT */
13786 printf("semctl IPC_STAT failed: errno = %d\n", errno);
13788 if (semctl(sem, 0, IPC_RMID, arg) != 0)
13789 # endif /* IPC_RMID */
13790 printf("semctl IPC_RMID failed: errno = %d\n", errno);
13792 #endif /* IPC_PRIVATE && ... */
13793 printf("semget failed: errno = %d\n", errno);
13799 if eval $compile; then
13802 semun) val="$define" ;;
13808 case "$d_semctl_semun" in
13810 echo "You can use union semun for semctl IPC_STAT." >&4
13813 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
13818 : see whether semctl IPC_STAT can use struct semid_ds pointer
13819 $cat > try.c <<'END'
13820 #include <sys/types.h>
13821 #include <sys/ipc.h>
13822 #include <sys/sem.h>
13823 #include <sys/stat.h>
13831 struct semid_ds arg;
13834 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
13835 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
13838 st = semctl(sem, 0, IPC_STAT, &arg);
13840 printf("semid_ds\n");
13842 # endif /* IPC_STAT */
13843 printf("semctl IPC_STAT failed: errno = %d\n", errno);
13845 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
13846 # endif /* IPC_RMID */
13847 printf("semctl IPC_RMID failed: errno = %d\n", errno);
13849 #endif /* IPC_PRIVATE && ... */
13850 printf("semget failed: errno = %d\n", errno);
13857 if eval $compile; then
13860 semid_ds) val="$define" ;;
13864 set d_semctl_semid_ds
13866 case "$d_semctl_semid_ds" in
13868 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
13870 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
13877 # We do not have the full sem*(2) library, so assume we can not
13883 set d_semctl_semid_ds
13888 : see if sendmsg exists
13889 set sendmsg d_sendmsg
13892 : see if setegid exists
13893 set setegid d_setegid
13896 : see if seteuid exists
13897 set seteuid d_seteuid
13900 : see if setgrent exists
13901 set setgrent d_setgrent
13904 : see if setgrent_r exists
13905 set setgrent_r d_setgrent_r
13907 case "$d_setgrent_r" in
13909 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13910 case "$setgrent_r_proto" in
13911 ''|0) try='int setgrent_r(FILE**);'
13912 ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
13914 case "$setgrent_r_proto" in
13915 ''|0) try='void setgrent_r(FILE**);'
13916 ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
13918 case "$setgrent_r_proto" in
13919 '') d_setgrent_r=undef
13921 echo "Disabling setgrent_r, cannot determine prototype." ;;
13922 * ) case "$setgrent_r_proto" in
13923 REENTRANT_PROTO*) ;;
13924 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
13926 echo "Prototype: $try" ;;
13929 *) setgrent_r_proto=0
13933 : see if sethostent exists
13934 set sethostent d_sethent
13937 : see if sethostent_r exists
13938 set sethostent_r d_sethostent_r
13940 case "$d_sethostent_r" in
13942 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13943 case "$sethostent_r_proto" in
13944 ''|0) try='int sethostent_r(int, struct hostent_data*);'
13945 ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
13947 case "$sethostent_r_proto" in
13948 ''|0) try='void sethostent_r(int, struct hostent_data*);'
13949 ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
13951 case "$sethostent_r_proto" in
13952 '') d_sethostent_r=undef
13953 sethostent_r_proto=0
13954 echo "Disabling sethostent_r, cannot determine prototype." ;;
13955 * ) case "$sethostent_r_proto" in
13956 REENTRANT_PROTO*) ;;
13957 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
13959 echo "Prototype: $try" ;;
13962 *) sethostent_r_proto=0
13966 : see if setitimer exists
13967 set setitimer d_setitimer
13970 : see if setlinebuf exists
13971 set setlinebuf d_setlinebuf
13974 : see if setlocale exists
13975 set setlocale d_setlocale
13978 : see if locale.h is available
13979 set locale.h i_locale
13982 : see if setlocale_r exists
13983 set setlocale_r d_setlocale_r
13985 case "$d_setlocale_r" in
13987 hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
13988 case "$setlocale_r_proto" in
13989 ''|0) try='int setlocale_r(int, const char*, char*, int);'
13990 ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
13992 case "$setlocale_r_proto" in
13993 '') d_setlocale_r=undef
13994 setlocale_r_proto=0
13995 echo "Disabling setlocale_r, cannot determine prototype." ;;
13996 * ) case "$setlocale_r_proto" in
13997 REENTRANT_PROTO*) ;;
13998 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
14000 echo "Prototype: $try" ;;
14003 *) setlocale_r_proto=0
14007 : see if setnetent exists
14008 set setnetent d_setnent
14011 : see if setnetent_r exists
14012 set setnetent_r d_setnetent_r
14014 case "$d_setnetent_r" in
14016 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14017 case "$setnetent_r_proto" in
14018 ''|0) try='int setnetent_r(int, struct netent_data*);'
14019 ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
14021 case "$setnetent_r_proto" in
14022 ''|0) try='void setnetent_r(int, struct netent_data*);'
14023 ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
14025 case "$setnetent_r_proto" in
14026 '') d_setnetent_r=undef
14027 setnetent_r_proto=0
14028 echo "Disabling setnetent_r, cannot determine prototype." ;;
14029 * ) case "$setnetent_r_proto" in
14030 REENTRANT_PROTO*) ;;
14031 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
14033 echo "Prototype: $try" ;;
14036 *) setnetent_r_proto=0
14040 : see if setprotoent exists
14041 set setprotoent d_setpent
14044 : see if setpgid exists
14045 set setpgid d_setpgid
14048 : see if setpgrp2 exists
14049 set setpgrp2 d_setpgrp2
14052 : see if setpriority exists
14053 set setpriority d_setprior
14056 : see if setproctitle exists
14057 set setproctitle d_setproctitle
14060 : see if setprotoent_r exists
14061 set setprotoent_r d_setprotoent_r
14063 case "$d_setprotoent_r" in
14065 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14066 case "$setprotoent_r_proto" in
14067 ''|0) try='int setprotoent_r(int, struct protoent_data*);'
14068 ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
14070 case "$setprotoent_r_proto" in
14071 ''|0) try='void setprotoent_r(int, struct protoent_data*);'
14072 ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
14074 case "$setprotoent_r_proto" in
14075 '') d_setprotoent_r=undef
14076 setprotoent_r_proto=0
14077 echo "Disabling setprotoent_r, cannot determine prototype." ;;
14078 * ) case "$setprotoent_r_proto" in
14079 REENTRANT_PROTO*) ;;
14080 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
14082 echo "Prototype: $try" ;;
14085 *) setprotoent_r_proto=0
14089 : see if setpwent exists
14090 set setpwent d_setpwent
14093 : see if setpwent_r exists
14094 set setpwent_r d_setpwent_r
14096 case "$d_setpwent_r" in
14098 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14099 case "$setpwent_r_proto" in
14100 ''|0) try='int setpwent_r(FILE**);'
14101 ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
14103 case "$setpwent_r_proto" in
14104 ''|0) try='void setpwent_r(FILE**);'
14105 ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
14107 case "$setpwent_r_proto" in
14108 '') d_setpwent_r=undef
14110 echo "Disabling setpwent_r, cannot determine prototype." ;;
14111 * ) case "$setpwent_r_proto" in
14112 REENTRANT_PROTO*) ;;
14113 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
14115 echo "Prototype: $try" ;;
14118 *) setpwent_r_proto=0
14122 : see if setregid exists
14123 set setregid d_setregid
14125 set setresgid d_setresgid
14128 : see if setreuid exists
14129 set setreuid d_setreuid
14131 set setresuid d_setresuid
14134 : see if setrgid exists
14135 set setrgid d_setrgid
14138 : see if setruid exists
14139 set setruid d_setruid
14142 : see if setservent exists
14143 set setservent d_setsent
14146 : see if setservent_r exists
14147 set setservent_r d_setservent_r
14149 case "$d_setservent_r" in
14151 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14152 case "$setservent_r_proto" in
14153 ''|0) try='int setservent_r(int, struct servent_data*);'
14154 ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
14156 case "$setservent_r_proto" in
14157 ''|0) try='void setservent_r(int, struct servent_data*);'
14158 ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
14160 case "$setservent_r_proto" in
14161 '') d_setservent_r=undef
14162 setservent_r_proto=0
14163 echo "Disabling setservent_r, cannot determine prototype." ;;
14164 * ) case "$setservent_r_proto" in
14165 REENTRANT_PROTO*) ;;
14166 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
14168 echo "Prototype: $try" ;;
14171 *) setservent_r_proto=0
14175 : see if setsid exists
14176 set setsid d_setsid
14179 : see if setvbuf exists
14180 set setvbuf d_setvbuf
14183 : see if sfio.h is available
14188 : see if sfio library is available
14199 : Ok, but do we want to use it.
14203 true|$define|[yY]*) dflt='y';;
14206 echo "$package can use the sfio library, but it is experimental."
14207 case "$useperlio" in
14209 echo "For sfio also the PerlIO abstraction layer is needed."
14210 echo "Earlier you said you wouldn't want that."
14213 rp="You seem to have sfio available, do you want to try using it?"
14216 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
14217 useperlio="$define"
14220 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
14225 *) case "$usesfio" in
14226 true|$define|[yY]*)
14227 echo "Sorry, cannot find sfio on this machine." >&4
14228 echo "Ignoring your setting of usesfio=$usesfio." >&4
14237 $define) usesfio='true';;
14238 *) usesfio='false';;
14242 *) : Remove sfio from list of libraries to use
14245 echo "Removing unneeded -lsfio from library list" >&4
14246 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
14249 echo "libs = $libs" >&4
14256 : see if shmctl exists
14257 set shmctl d_shmctl
14260 : see if shmget exists
14261 set shmget d_shmget
14264 : see if shmat exists
14267 : see what shmat returns
14270 $cat >shmat.c <<'END'
14271 #include <sys/shm.h>
14274 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
14279 echo "and it returns ($shmattype)." >&4
14280 : see if a prototype for shmat is available
14281 xxx=`./findhdr sys/shm.h`
14282 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
14283 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
14294 set d_shmatprototype
14297 : see if shmdt exists
14301 : see how much of the 'shm*(2)' library is present.
14304 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
14305 *"$undef"*) h_shm=false;;
14309 case "`ipcs 2>&1`" in
14310 "SVID shared memory"*"not configured"*)
14311 echo "Your $osname does not have the shm*(2) configured." >&4
14314 set shmctl d_shmctl
14316 set shmget d_shmget
14326 : we could also check for sys/ipc.h ...
14327 if $h_shm && $test `./findhdr sys/shm.h`; then
14328 echo "You have the full shm*(2) library." >&4
14331 echo "You don't have the full shm*(2) library." >&4
14338 : see if we have sigaction
14339 if set sigaction val -f d_sigaction; eval $csym; $val; then
14340 echo 'sigaction() found.' >&4
14341 $cat > try.c <<'EOP'
14343 #include <sys/types.h>
14344 #include <signal.h>
14347 struct sigaction act, oact;
14349 oact.sa_handler = 0;
14350 /* so that act and oact are used */
14351 exit(act.sa_flags == 0 && oact.sa_handler == 0);
14355 if eval $compile_ok; then
14358 echo "But you don't seem to have a useable struct sigaction." >&4
14362 echo 'sigaction NOT found.' >&4
14365 set d_sigaction; eval $setvar
14366 $rm -f try try$_o try.c
14368 : see if sigprocmask exists
14369 set sigprocmask d_sigprocmask
14372 : see if sigsetjmp exists
14374 case "$d_sigsetjmp" in
14376 $cat >try.c <<'EOP'
14377 #include <setjmp.h>
14382 if (sigsetjmp(env,1))
14385 siglongjmp(env, 1);
14390 if eval $compile; then
14391 if $run ./try >/dev/null 2>&1; then
14392 echo "POSIX sigsetjmp found." >&4
14396 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
14402 echo "sigsetjmp not found." >&4
14406 *) val="$d_sigsetjmp"
14407 case "$d_sigsetjmp" in
14408 $define) echo "POSIX sigsetjmp found." >&4;;
14409 $undef) echo "sigsetjmp not found." >&4;;
14417 : see if sockatmark exists
14418 set sockatmark d_sockatmark
14421 : see if prototype for sockatmark is available
14423 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
14426 : see if socks5_init exists
14427 set socks5_init d_socks5_init
14430 : see if srand48_r exists
14431 set srand48_r d_srand48_r
14433 case "$d_srand48_r" in
14435 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14436 case "$srand48_r_proto" in
14437 ''|0) try='int srand48_r(long, struct drand48_data*);'
14438 ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
14440 case "$srand48_r_proto" in
14441 '') d_srand48_r=undef
14443 echo "Disabling srand48_r, cannot determine prototype." ;;
14444 * ) case "$srand48_r_proto" in
14445 REENTRANT_PROTO*) ;;
14446 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
14448 echo "Prototype: $try" ;;
14451 *) srand48_r_proto=0
14455 : see if srandom_r exists
14456 set srandom_r d_srandom_r
14458 case "$d_srandom_r" in
14460 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14461 case "$srandom_r_proto" in
14462 ''|0) try='int srandom_r(unsigned int, struct random_data*);'
14463 ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
14465 case "$srandom_r_proto" in
14466 '') d_srandom_r=undef
14468 echo "Disabling srandom_r, cannot determine prototype." ;;
14469 * ) case "$srandom_r_proto" in
14470 REENTRANT_PROTO*) ;;
14471 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
14473 echo "Prototype: $try" ;;
14476 *) srandom_r_proto=0
14480 : see if prototype for setresgid is available
14482 set d_sresgproto setresgid $i_unistd unistd.h
14485 : see if prototype for setresuid is available
14487 set d_sresuproto setresuid $i_unistd unistd.h
14490 : see if sys/stat.h is available
14491 set sys/stat.h i_sysstat
14495 : see if stat knows about block sizes
14497 echo "Checking to see if your struct stat has st_blocks field..." >&4
14498 set d_statblks stat st_blocks $i_sysstat sys/stat.h
14502 : see if this is a sys/vfs.h system
14503 set sys/vfs.h i_sysvfs
14507 : see if this is a sys/statfs.h system
14508 set sys/statfs.h i_sysstatfs
14513 echo "Checking to see if your system supports struct statfs..." >&4
14514 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
14516 case "$d_statfs_s" in
14517 "$define") echo "Yes, it does." ;;
14518 *) echo "No, it doesn't." ;;
14523 : see if struct statfs knows about f_flags
14524 case "$d_statfs_s" in
14527 echo "Checking to see if your struct statfs has f_flags field..." >&4
14528 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
14532 set d_statfs_f_flags
14536 case "$d_statfs_f_flags" in
14537 "$define") echo "Yes, it does." ;;
14538 *) echo "No, it doesn't." ;;
14541 : see if _ptr and _cnt from stdio act std
14544 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14545 echo "(Looks like you have stdio.h from BSD.)"
14546 case "$stdio_ptr" in
14547 '') stdio_ptr='((fp)->_p)'
14550 *) ptr_lval=$d_stdio_ptr_lval;;
14552 case "$stdio_cnt" in
14553 '') stdio_cnt='((fp)->_r)'
14556 *) cnt_lval=$d_stdio_cnt_lval;;
14558 case "$stdio_base" in
14559 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
14561 case "$stdio_bufsiz" in
14562 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
14564 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
14565 echo "(Looks like you have stdio.h from Linux.)"
14566 case "$stdio_ptr" in
14567 '') stdio_ptr='((fp)->_IO_read_ptr)'
14570 *) ptr_lval=$d_stdio_ptr_lval;;
14572 case "$stdio_cnt" in
14573 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
14576 *) cnt_lval=$d_stdio_cnt_lval;;
14578 case "$stdio_base" in
14579 '') stdio_base='((fp)->_IO_read_base)';;
14581 case "$stdio_bufsiz" in
14582 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
14585 case "$stdio_ptr" in
14586 '') stdio_ptr='((fp)->_ptr)'
14589 *) ptr_lval=$d_stdio_ptr_lval;;
14591 case "$stdio_cnt" in
14592 '') stdio_cnt='((fp)->_cnt)'
14595 *) cnt_lval=$d_stdio_cnt_lval;;
14597 case "$stdio_base" in
14598 '') stdio_base='((fp)->_base)';;
14600 case "$stdio_bufsiz" in
14601 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
14605 : test whether _ptr and _cnt really work
14606 echo "Checking how std your stdio is..." >&4
14609 #define FILE_ptr(fp) $stdio_ptr
14610 #define FILE_cnt(fp) $stdio_cnt
14612 FILE *fp = fopen("try.c", "r");
14615 18 <= FILE_cnt(fp) &&
14616 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
14624 if eval $compile && $to try.c; then
14625 if $run ./try; then
14626 echo "Your stdio acts pretty std."
14629 echo "Your stdio isn't very std."
14632 echo "Your stdio doesn't appear very std."
14638 : Can _ptr be used as an lvalue?
14639 case "$d_stdstdio$ptr_lval" in
14640 $define$define) val=$define ;;
14643 set d_stdio_ptr_lval
14646 : Can _cnt be used as an lvalue?
14647 case "$d_stdstdio$cnt_lval" in
14648 $define$define) val=$define ;;
14651 set d_stdio_cnt_lval
14655 : test whether setting _ptr sets _cnt as a side effect
14656 d_stdio_ptr_lval_sets_cnt="$undef"
14657 d_stdio_ptr_lval_nochange_cnt="$undef"
14658 case "$d_stdio_ptr_lval$d_stdstdio" in
14660 echo "Checking to see what happens if we set the stdio ptr..." >&4
14663 /* Can we scream? */
14664 /* Eat dust sed :-) */
14665 /* In the buffer space, no one can hear you scream. */
14666 #define FILE_ptr(fp) $stdio_ptr
14667 #define FILE_cnt(fp) $stdio_cnt
14668 #include <sys/types.h>
14670 FILE *fp = fopen("try.c", "r");
14675 puts("Fail even to read");
14678 c = getc(fp); /* Read away the first # */
14680 puts("Fail even to read");
14684 18 <= FILE_cnt(fp) &&
14685 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
14687 puts("Fail even to read");
14690 ptr = (char*) FILE_ptr(fp);
14691 cnt = (size_t)FILE_cnt(fp);
14693 FILE_ptr(fp) += 42;
14695 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
14696 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
14699 if (FILE_cnt(fp) <= 20) {
14700 printf ("Fail (<20 chars to test)");
14703 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
14704 puts("Fail compare");
14707 if (cnt == FILE_cnt(fp)) {
14708 puts("Pass_unchanged");
14711 if (FILE_cnt(fp) == (cnt - 42)) {
14712 puts("Pass_changed");
14715 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
14721 if eval $compile && $to try.c; then
14722 case `$run ./try` in
14724 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
14725 d_stdio_ptr_lval_sets_cnt="$define" ;;
14727 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
14728 d_stdio_ptr_lval_nochange_cnt="$define" ;;
14730 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
14732 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
14735 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
14741 : see if _base is also standard
14743 case "$d_stdstdio" in
14747 #define FILE_base(fp) $stdio_base
14748 #define FILE_bufsiz(fp) $stdio_bufsiz
14750 FILE *fp = fopen("try.c", "r");
14753 19 <= FILE_bufsiz(fp) &&
14754 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
14761 if eval $compile && $to try.c; then
14762 if $run ./try; then
14763 echo "And its _base field acts std."
14766 echo "But its _base field isn't std."
14769 echo "However, it seems to be lacking the _base field."
14778 Checking how to access stdio streams by file descriptor number...
14780 case "$stdio_stream_array" in
14781 '') $cat >try.c <<EOCP
14784 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
14788 for s in _iob __iob __sF
14790 set try -DSTDIO_STREAM_ARRAY=$s
14791 if eval $compile; then
14792 case "`$run ./try`" in
14793 yes) stdio_stream_array=$s; break ;;
14797 $rm -f try.* try$exe_ext
14799 case "$stdio_stream_array" in
14801 I can't figure out how to access stdio streams by file descriptor number.
14803 d_stdio_stream_array="$undef"
14806 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
14808 d_stdio_stream_array="$define"
14812 : see if strcoll exists
14813 set strcoll d_strcoll
14816 : check for structure copying
14818 echo "Checking to see if your C compiler can copy structs..." >&4
14819 $cat >try.c <<'EOCP'
14829 if $cc -c try.c >/dev/null 2>&1 ; then
14831 echo "Yup, it can."
14834 echo "Nope, it can't."
14840 : see if strerror and/or sys_errlist[] exist
14842 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
14843 if set strerror val -f d_strerror; eval $csym; $val; then
14844 echo 'strerror() found.' >&4
14845 d_strerror="$define"
14846 d_strerrm='strerror(e)'
14847 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
14848 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
14849 d_syserrlst="$define"
14851 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
14852 d_syserrlst="$undef"
14854 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
14855 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
14856 echo 'strerror() found in string header.' >&4
14857 d_strerror="$define"
14858 d_strerrm='strerror(e)'
14859 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
14860 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
14861 d_syserrlst="$define"
14863 echo "(You don't appear to have any sys_errlist[], how can this be?)"
14864 d_syserrlst="$undef"
14866 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
14867 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
14868 d_strerror="$undef"
14869 d_syserrlst="$define"
14870 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
14872 echo 'strerror() and sys_errlist[] NOT found.' >&4
14873 d_strerror="$undef"
14874 d_syserrlst="$undef"
14875 d_strerrm='"unknown"'
14879 : see if strerror_r exists
14880 set strerror_r d_strerror_r
14882 case "$d_strerror_r" in
14884 hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
14885 case "$strerror_r_proto" in
14886 ''|0) try='int strerror_r(int, char*, size_t);'
14887 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
14889 case "$strerror_r_proto" in
14890 ''|0) try='int strerror_r(int, char*, int);'
14891 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
14893 case "$strerror_r_proto" in
14894 ''|0) try='char* strerror_r(int, char*, size_t);'
14895 ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
14897 case "$strerror_r_proto" in
14898 '') d_strerror_r=undef
14900 echo "Disabling strerror_r, cannot determine prototype." ;;
14901 * ) case "$strerror_r_proto" in
14902 REENTRANT_PROTO*) ;;
14903 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
14905 echo "Prototype: $try" ;;
14908 *) strerror_r_proto=0
14912 : see if strftime exists
14913 set strftime d_strftime
14916 : see if strtod exists
14917 set strtod d_strtod
14920 : see if strtol exists
14921 set strtol d_strtol
14924 : see if strtold exists
14925 set strtold d_strtold
14928 : see if strtoll exists
14929 set strtoll d_strtoll
14932 case "$d_longlong-$d_strtoll" in
14935 Checking whether your strtoll() works okay...
14937 $cat >try.c <<'EOCP'
14940 #define strtoll __strtoll
14943 #define strtoll _strtoll
14946 extern long long int strtoll(char *s, char **, int);
14947 static int bad = 0;
14948 int check(char *s, long long ell, int een) {
14951 gll = strtoll(s, 0, 10);
14952 if (!((gll == ell) && (errno == een)))
14956 check(" 1", 1LL, 0);
14957 check(" 0", 0LL, 0);
14958 check("-1", -1LL, 0);
14959 check("-9223372036854775808", -9223372036854775808LL, 0);
14960 check("-9223372036854775808", -9223372036854775808LL, 0);
14961 check(" 9223372036854775807", 9223372036854775807LL, 0);
14962 check("-9223372036854775808", -9223372036854775808LL, 0);
14963 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
14964 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
14970 if eval $compile; then
14973 ok) echo "Your strtoll() seems to be working okay." ;;
14975 Your strtoll() doesn't seem to be working okay.
14981 echo "(I can't seem to compile the test program--assuming it doesn't)"
14987 : see if strtoq exists
14988 set strtoq d_strtoq
14991 : see if strtoul exists
14992 set strtoul d_strtoul
14995 case "$d_strtoul" in
14998 Checking whether your strtoul() works okay...
15000 $cat >try.c <<'EOCP'
15003 extern unsigned long int strtoul(char *s, char **, int);
15004 static int bad = 0;
15005 void check(char *s, unsigned long eul, int een) {
15008 gul = strtoul(s, 0, 10);
15009 if (!((gul == eul) && (errno == een)))
15013 check(" 1", 1L, 0);
15014 check(" 0", 0L, 0);
15016 case "$longsize" in
15018 $cat >>try.c <<'EOCP'
15019 check("18446744073709551615", 18446744073709551615UL, 0);
15020 check("18446744073709551616", 18446744073709551615UL, ERANGE);
15021 #if 0 /* strtoul() for /^-/ strings is undefined. */
15022 check("-1", 18446744073709551615UL, 0);
15023 check("-18446744073709551614", 2, 0);
15024 check("-18446744073709551615", 1, 0);
15025 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
15026 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
15031 $cat >>try.c <<'EOCP'
15032 check("4294967295", 4294967295UL, 0);
15033 check("4294967296", 4294967295UL, ERANGE);
15034 #if 0 /* strtoul() for /^-/ strings is undefined. */
15035 check("-1", 4294967295UL, 0);
15036 check("-4294967294", 2, 0);
15037 check("-4294967295", 1, 0);
15038 check("-4294967296", 4294967295UL, ERANGE);
15039 check("-4294967297", 4294967295UL, ERANGE);
15044 : Should we write these tests to be more portable by sprintf-ing
15045 : ~0 and then manipulating that char string as input for strtol?
15048 $cat >>try.c <<'EOCP'
15055 if eval $compile; then
15056 case "`$run ./try`" in
15057 ok) echo "Your strtoul() seems to be working okay." ;;
15059 Your strtoul() doesn't seem to be working okay.
15068 : see if strtoull exists
15069 set strtoull d_strtoull
15072 case "$d_longlong-$d_strtoull" in
15075 Checking whether your strtoull() works okay...
15077 $cat >try.c <<'EOCP'
15080 #define strtoull __strtoull
15083 extern unsigned long long int strtoull(char *s, char **, int);
15084 static int bad = 0;
15085 int check(char *s, long long eull, int een) {
15088 gull = strtoull(s, 0, 10);
15089 if (!((gull == eull) && (errno == een)))
15093 check(" 1", 1LL, 0);
15094 check(" 0", 0LL, 0);
15095 check("18446744073709551615", 18446744073709551615ULL, 0);
15096 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
15097 #if 0 /* strtoull() for /^-/ strings is undefined. */
15098 check("-1", 18446744073709551615ULL, 0);
15099 check("-18446744073709551614", 2LL, 0);
15100 check("-18446744073709551615", 1LL, 0);
15101 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
15102 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
15109 if eval $compile; then
15110 case "`$run ./try`" in
15111 ok) echo "Your strtoull() seems to be working okay." ;;
15113 Your strtoull() doesn't seem to be working okay.
15115 d_strtoull="$undef"
15122 : see if strtouq exists
15123 set strtouq d_strtouq
15126 case "$d_strtouq" in
15129 Checking whether your strtouq() works okay...
15131 $cat >try.c <<'EOCP'
15134 extern unsigned long long int strtouq(char *s, char **, int);
15135 static int bad = 0;
15136 void check(char *s, unsigned long long eull, int een) {
15137 unsigned long long gull;
15139 gull = strtouq(s, 0, 10);
15140 if (!((gull == eull) && (errno == een)))
15144 check(" 1", 1LL, 0);
15145 check(" 0", 0LL, 0);
15146 check("18446744073709551615", 18446744073709551615ULL, 0);
15147 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
15148 #if 0 /* strtouq() for /^-/ strings is undefined. */
15149 check("-1", 18446744073709551615ULL, 0);
15150 check("-18446744073709551614", 2LL, 0);
15151 check("-18446744073709551615", 1LL, 0);
15152 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
15153 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
15161 if eval $compile; then
15162 case "`$run ./try`" in
15163 ok) echo "Your strtouq() seems to be working okay." ;;
15165 Your strtouq() doesn't seem to be working okay.
15174 : see if strxfrm exists
15175 set strxfrm d_strxfrm
15178 : see if symlink exists
15179 set symlink d_symlink
15182 : see if syscall exists
15183 set syscall d_syscall
15186 : see if prototype for syscall is available
15188 set d_syscallproto syscall $i_unistd unistd.h
15191 : see if sysconf exists
15192 set sysconf d_sysconf
15195 : see if system exists
15196 set system d_system
15199 : see if tcgetpgrp exists
15200 set tcgetpgrp d_tcgetpgrp
15203 : see if tcsetpgrp exists
15204 set tcsetpgrp d_tcsetpgrp
15207 : see if prototype for telldir is available
15209 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
15212 : see if this is a sys/times.h system
15213 set sys/times.h i_systimes
15216 : see if times exists
15218 if set times val -f d_times; eval $csym; $val; then
15219 echo 'times() found.' >&4
15222 case "$i_systimes" in
15223 "$define") inc='sys/times.h';;
15225 rp="What is the type returned by times() on this system?"
15226 set clock_t clocktype long stdio.h sys/types.h $inc
15229 echo 'times() NOT found, hope that will do.' >&4
15234 : see if tmpnam_r exists
15235 set tmpnam_r d_tmpnam_r
15237 case "$d_tmpnam_r" in
15239 hdrs="$i_systypes sys/types.h define stdio.h $i_stdio stdio.h"
15240 case "$tmpnam_r_proto" in
15241 ''|0) try='char* tmpnam_r(char*);'
15242 ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
15244 case "$tmpnam_r_proto" in
15245 '') d_tmpnam_r=undef
15247 echo "Disabling tmpnam_r, cannot determine prototype." ;;
15248 * ) case "$tmpnam_r_proto" in
15249 REENTRANT_PROTO*) ;;
15250 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
15252 echo "Prototype: $try" ;;
15255 *) tmpnam_r_proto=0
15259 : see if truncate exists
15260 set truncate d_truncate
15263 : see if ttyname_r exists
15264 set ttyname_r d_ttyname_r
15266 case "$d_ttyname_r" in
15268 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
15269 case "$ttyname_r_proto" in
15270 ''|0) try='int ttyname_r(int, char*, size_t);'
15271 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
15273 case "$ttyname_r_proto" in
15274 ''|0) try='int ttyname_r(int, char*, int);'
15275 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
15277 case "$ttyname_r_proto" in
15278 ''|0) try='char* ttyname_r(int, char*, int);'
15279 ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
15281 case "$ttyname_r_proto" in
15282 '') d_ttyname_r=undef
15284 echo "Disabling ttyname_r, cannot determine prototype." ;;
15285 * ) case "$ttyname_r_proto" in
15286 REENTRANT_PROTO*) ;;
15287 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
15289 echo "Prototype: $try" ;;
15292 *) ttyname_r_proto=0
15296 : see if tzname[] exists
15298 if set tzname val -a d_tzname; eval $csym; $val; then
15300 echo 'tzname[] found.' >&4
15303 echo 'tzname[] NOT found.' >&4
15309 next|rhapsody|darwin) multiarch="$define" ;;
15311 case "$multiarch" in
15312 ''|[nN]*) multiarch="$undef" ;;
15315 : check for ordering of bytes in a long
15317 case "$usecrosscompile$multiarch" in
15320 You seem to be either cross-compiling or doing a multiarchitecture build,
15321 skipping the byteorder check.
15327 case "$byteorder" in
15330 In the following, larger digits indicate more significance. A big-endian
15331 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
15332 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
15333 machines may have weird orders like 3412. A Cray will report 87654321,
15334 an Alpha will report 12345678. If the test program works the default is
15336 I'm now running the test program...
15338 $cat >try.c <<'EOCP'
15345 char c[sizeof(long)];
15348 if (sizeof(long) > 4)
15349 u.l = (0x08070605L << 32) | 0x04030201L;
15352 for (i = 0; i < sizeof(long); i++)
15353 printf("%c", u.c[i]+'0');
15360 if eval $compile && ./try > /dev/null; then
15363 [1-4][1-4][1-4][1-4]|12345678|87654321)
15364 echo "(The test program ran ok.)"
15365 echo "byteorder=$dflt"
15368 ????|????????) echo "(The test program ran ok.)" ;;
15369 *) echo "(The test program didn't run right for some reason.)" ;;
15374 (I can't seem to compile the test program. Guessing big-endian...)
15377 case "$xxx_prompt" in
15379 rp="What is the order of bytes in a long?"
15395 Checking to see whether you can access character data unalignedly...
15397 case "$d_u32align" in
15398 '') $cat >try.c <<EOCP
15400 #define U32 $u32type
15401 #define BYTEORDER 0x$byteorder
15403 #include <signal.h>
15405 $signal_t bletch(s) int s; { exit(4); }
15408 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
15413 if (sizeof(U32) != 4) {
15414 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
15421 signal(SIGBUS, bletch);
15433 for (i = 0; i < 4; i++) {
15434 up = (U32*)(buf + i);
15435 if (! ((*up == 1 << (8*i)) || /* big-endian */
15436 (*up == 1 << (8*(3-i))) /* little-endian */
15440 printf("read failed (%x)\n", *up);
15446 for (i = 0; i < 4; i++) {
15447 up = (U32*)(buf + i);
15449 if (*up != 0xBeef) {
15450 printf("write failed (%x)\n", *up);
15464 if eval $compile_ok; then
15465 echo "(Testing for character data alignment may crash the test. That's okay.)" >&4
15466 $run ./try 2>&1 >/dev/null
15469 You can access character data pretty unalignedly.
15471 d_u32align="$undef"
15474 It seems that you must access character data in an aligned manner.
15476 d_u32align="$define"
15480 rp='Can you access character data at unaligned addresses?'
15484 [yY]*) d_u32align="$undef" ;;
15485 *) d_u32align="$define" ;;
15488 $rm -f core core.try.* try.core
15492 : see if ualarm exists
15493 set ualarm d_ualarm
15496 : see if umask exists
15500 : see if unordered exists
15501 set unordered d_unordered
15504 : see if usleep exists
15505 set usleep d_usleep
15508 : see if prototype for usleep is available
15510 set d_usleepproto usleep $i_unistd unistd.h
15513 : see if ustat exists
15517 : backward compatibility for d_hvfork
15518 if test X$d_hvfork != X; then
15519 d_vfork="$d_hvfork"
15522 : see if there is a vfork
15527 : Ok, but do we want to use it. vfork is reportedly unreliable in
15528 : perl on Solaris 2.x, and probably elsewhere.
15532 case "$usevfork" in
15538 Perl can only use a vfork() that doesn't suffer from strict
15539 restrictions on calling functions or modifying global data in
15540 the child. For example, glibc-2.1 contains such a vfork()
15541 that is unsuitable. If your system provides a proper fork()
15542 call, chances are that you do NOT want perl to use vfork().
15545 rp="Do you still want to use vfork()?"
15550 echo "Ok, we won't use vfork()."
15559 $define) usevfork='true';;
15560 *) usevfork='false';;
15563 : see if closedir exists
15564 set closedir d_closedir
15567 case "$d_closedir" in
15570 echo "Checking whether closedir() returns a status..." >&4
15572 #$i_dirent I_DIRENT /**/
15573 #$i_sysdir I_SYS_DIR /**/
15574 #$i_sysndir I_SYS_NDIR /**/
15575 #$i_systypes I_SYS_TYPES /**/
15577 #if defined(I_SYS_TYPES)
15578 #include <sys/types.h>
15580 #if defined(I_DIRENT)
15581 #include <dirent.h>
15582 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
15583 #include <sys/dir.h>
15587 #include <sys/ndir.h>
15591 #include <ndir.h> /* may be wrong in the future */
15593 #include <sys/dir.h>
15598 int main() { return closedir(opendir(".")); }
15601 if eval $compile_ok; then
15602 if $run ./try > /dev/null 2>&1 ; then
15603 echo "Yes, it does."
15606 echo "No, it doesn't."
15610 echo "(I can't seem to compile the test program--assuming it doesn't)"
15618 set d_void_closedir
15621 : see if there is a wait4
15625 : see if waitpid exists
15626 set waitpid d_waitpid
15629 : see if wcstombs exists
15630 set wcstombs d_wcstombs
15633 : see if wctomb exists
15634 set wctomb d_wctomb
15637 : see if writev exists
15638 set writev d_writev
15641 : preserve RCS keywords in files with variable substitution, grrr
15646 Revision='$Revision'
15648 : check for alignment requirements
15650 case "$usecrosscompile$multiarch" in
15653 You seem to be either cross-compiling or doing a multiarchitecture build,
15654 skipping the memory alignment check.
15657 case "$alignbytes" in
15658 '') alignbytes=8 ;;
15662 case "$alignbytes" in
15663 '') echo "Checking alignment constraints..." >&4
15664 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
15665 $cat >try.c <<'EOCP'
15666 typedef long double NV;
15669 $cat >try.c <<'EOCP'
15673 $cat >>try.c <<'EOCP'
15681 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
15686 if eval $compile_ok; then
15690 echo "(I can't seem to compile the test program...)"
15693 *) dflt="$alignbytes"
15696 rp="Doubles must be aligned on a how-many-byte boundary?"
15704 : set the base revision
15707 : how do we catenate cpp tokens here?
15709 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
15710 $cat >cpp_stuff.c <<'EOCP'
15711 #define RCAT(a,b)a/**/b
15712 #define ACAT(a,b)a ## b
15716 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
15717 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
15718 echo "Oh! Smells like ANSI's been here." >&4
15719 echo "We can catify or stringify, separately or together!"
15721 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
15722 echo "Ah, yes! The good old days!" >&4
15723 echo "However, in the good old days we don't know how to stringify and"
15724 echo "catify at the same time."
15728 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
15729 to have to edit the values of CAT[2-5] in config.h...
15731 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
15735 : see if this is a db.h system
15741 : Check db version.
15743 echo "Checking Berkeley DB version ..." >&4
15749 #include <sys/types.h>
15752 int main(int argc, char *argv[])
15754 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
15755 int Major, Minor, Patch ;
15756 unsigned long Version ;
15757 (void)db_version(&Major, &Minor, &Patch) ;
15759 printf("%d %d %d %d %d %d\n",
15760 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
15761 Major, Minor, Patch);
15764 printf("You have Berkeley DB Version 2 or greater.\n");
15766 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
15767 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
15768 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
15769 Major, Minor, Patch) ;
15771 /* check that db.h & libdb are compatible */
15772 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
15773 printf("db.h and libdb are incompatible.\n") ;
15777 printf("db.h and libdb are compatible.\n") ;
15779 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
15780 + DB_VERSION_PATCH ;
15782 /* needs to be >= 2.3.4 */
15783 if (Version < 2003004) {
15784 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
15785 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
15791 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
15796 printf("You have Berkeley DB Version 1.\n");
15797 exit(0); /* DB version < 2: the coast is clear. */
15799 exit(1); /* <db.h> not Berkeley DB? */
15805 if eval $compile_ok && $run ./try; then
15806 echo 'Looks OK.' >&4
15808 db_version_major=$1
15809 db_version_minor=$2
15810 db_version_patch=$3
15812 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
15816 : Remove db from list of libraries to use
15817 echo "Removing unusable -ldb from library list" >&4
15818 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
15821 echo "libs = $libs" >&4
15831 : Check the return type needed for hash
15833 echo "Checking return type needed for hash for Berkeley DB ..." >&4
15839 #include <sys/types.h>
15842 #ifndef DB_VERSION_MAJOR
15843 u_int32_t hash_cb (ptr, size)
15851 info.hash = hash_cb;
15855 if $cc $ccflags -c try.c >try.out 2>&1 ; then
15856 if $contains warning try.out >>/dev/null 2>&1 ; then
15859 db_hashtype='u_int32_t'
15862 : XXX Maybe we should just give up here.
15863 db_hashtype=u_int32_t
15865 echo "Help: I can't seem to compile the db test program." >&4
15866 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
15869 echo "Your version of Berkeley DB uses $db_hashtype for hash."
15871 *) db_hashtype=u_int32_t
15876 : Check the return type needed for prefix
15878 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
15884 #include <sys/types.h>
15887 #ifndef DB_VERSION_MAJOR
15888 size_t prefix_cb (key1, key2)
15896 info.prefix = prefix_cb;
15900 if $cc $ccflags -c try.c >try.out 2>&1 ; then
15901 if $contains warning try.out >>/dev/null 2>&1 ; then
15902 db_prefixtype='int'
15904 db_prefixtype='size_t'
15907 db_prefixtype='size_t'
15908 : XXX Maybe we should just give up here.
15910 echo "Help: I can't seem to compile the db test program." >&4
15911 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
15914 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
15916 *) db_prefixtype='size_t'
15921 : How can we generate normalized random numbers ?
15923 echo "Looking for a random number function..." >&4
15924 case "$randfunc" in
15926 if set drand48 val -f; eval $csym; $val; then
15928 echo "Good, found drand48()." >&4
15929 elif set random val -f; eval $csym; $val; then
15931 echo "OK, found random()." >&4
15934 echo "Yick, looks like I have to use rand()." >&4
15945 *-Dmy_rand=*|*-Dmy_srand=*)
15946 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
15947 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
15948 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
15949 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
15953 while $test "$cont"; do
15954 rp="Use which function to generate random numbers?"
15956 if $test "$ans" = "$dflt"; then
15962 if set $ans val -f; eval $csym; $val; then
15966 rp="I cannot find function $ans. Use that name anyway?"
15975 case "$randfunc" in
15977 drand01="drand48()"
15983 case "$randbits" in
15985 echo "Checking to see how many bits your $randfunc() function produces..." >&4
15987 #$i_unistd I_UNISTD
15988 #$i_stdlib I_STDLIB
15991 # include <unistd.h>
15994 # include <stdlib.h>
15999 register unsigned long tmp;
16000 register unsigned long max = 0L;
16002 for (i = 1000; i; i--) {
16003 tmp = (unsigned long) $randfunc();
16004 if (tmp > max) max = tmp;
16006 for (i = 0; max; i++)
16012 if eval $compile_ok; then
16016 echo "(I can't seem to compile the test program...)"
16023 rp="How many bits does your $randfunc() function produce?"
16027 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
16028 seedfunc="s$randfunc"
16029 randseedtype=unsigned
16033 rp="How many bits does your $randfunc() function produce?"
16036 seedfunc="s$randfunc"
16037 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
16038 if set $seedfunc val -f; eval $csym; $val; then
16039 echo "(Using $seedfunc() to seed random generator)"
16041 echo "(Warning: no $seedfunc() to seed random generator)"
16044 randseedtype=unsigned
16052 echo "Determining whether or not we are on an EBCDIC system..." >&4
16053 $cat >try.c <<'EOM'
16056 if ('M'==0xd4) return 0;
16063 if eval $compile_ok; then
16064 if $run ./try; then
16065 echo "You seem to speak EBCDIC." >&4
16068 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
16071 echo "I'm unable to compile the test program." >&4
16072 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
16080 Checking how to flush all pending stdio output...
16082 # I only know how to find the first 32 possibly open files on SunOS.
16083 # See also hints/sunos_4_1.sh and util.c --AD
16085 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
16087 $cat >>try.c <<EOCP
16089 #$i_unistd I_UNISTD
16091 # include <unistd.h>
16093 #$d_sysconf HAS_SYSCONF
16094 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
16095 #ifdef HAS_STDIO_STREAM_ARRAY
16096 # define STDIO_STREAM_ARRAY $stdio_stream_array
16101 p = fopen("try.out", "w");
16105 # ifdef TRY_FPRINTF
16109 #ifdef TRY_FFLUSH_NULL
16112 #ifdef TRY_FFLUSH_ALL
16114 long open_max = -1;
16115 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
16116 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
16118 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
16119 open_max = sysconf(_SC_OPEN_MAX);
16122 open_max = FOPEN_MAX;
16125 open_max = OPEN_MAX;
16134 # ifdef HAS_STDIO_STREAM_ARRAY
16135 if (open_max > 0) {
16137 for (i = 0; i < open_max; i++)
16138 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
16139 STDIO_STREAM_ARRAY[i]._file < open_max &&
16140 STDIO_STREAM_ARRAY[i]._flag)
16141 fflush(&STDIO_STREAM_ARRAY[i]);
16149 : first we have to find out how _not_ to flush
16151 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
16153 set try -DTRY_FPUTC
16154 if eval $compile; then
16155 $run ./try 2>/dev/null
16158 if $test ! -s try.out -a "X$code" = X42; then
16164 set try -DTRY_FPRINTF
16165 if eval $compile; then
16166 $run ./try 2>/dev/null
16169 if $test ! -s try.out -a "X$code" = X42; then
16170 output=-DTRY_FPRINTF
16176 : check for fflush NULL behaviour
16177 case "$fflushNULL" in
16178 '') set try -DTRY_FFLUSH_NULL $output
16179 if eval $compile; then
16180 $run ./try 2>/dev/null
16183 if $test -s try.out -a "X$code" = X42; then
16184 fflushNULL="`$cat try.out`"
16186 if $test "X$code" != X42; then
16188 (If this test failed, don't worry, we'll try another method shortly.)
16193 $rm -f core try.core core.try.*
16194 case "$fflushNULL" in
16196 Your fflush(NULL) works okay for output streams.
16197 Let's see if it clobbers input pipes...
16199 # As of mid-March 2000 all versions of Solaris appear to have a stdio
16200 # bug that improperly flushes the input end of pipes. So we avoid the
16201 # autoflush on fork/system/exec support for now. :-(
16202 $cat >tryp.c <<EOCP
16205 main(int argc, char **argv)
16211 while ((i = getc(stdin)) != -1
16212 && (*bp++ = i) != '\n'
16213 && bp < &buf[1024])
16216 fprintf(stdout, "%s", buf);
16224 fflushNULL="$define"
16226 if eval $compile; then
16228 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
16229 if cmp tryp.c tryp.out >/dev/null 2>&1; then
16231 fflush(NULL) seems to behave okay with input streams.
16233 fflushNULL="$define"
16236 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
16238 fflushNULL="$undef"
16241 $rm -f core tryp.c tryp.core core.tryp.*
16244 Your fflush(NULL) isn't working (contrary to ANSI C).
16246 fflushNULL="$undef"
16249 Cannot figure out whether your fflush(NULL) works or not.
16250 I'm assuming it doesn't (contrary to ANSI C).
16252 fflushNULL="$undef"
16256 $define|true|[yY]*)
16257 fflushNULL="$define"
16260 fflushNULL="$undef"
16263 : check explicit looping only if NULL did not work, and if the pipe
16264 : bug does not show up on an explicit flush too
16265 case "$fflushNULL" in
16267 $cat >tryp.c <<EOCP
16270 main(int argc, char **argv)
16276 while ((i = getc(stdin)) != -1
16277 && (*bp++ = i) != '\n'
16278 && bp < &buf[1024])
16281 fprintf(stdout, "%s", buf);
16290 if eval $compile; then
16292 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
16293 if cmp tryp.c tryp.out >/dev/null 2>&1; then
16295 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
16297 : now check for fflushall behaviour
16298 case "$fflushall" in
16299 '') set try -DTRY_FFLUSH_ALL $output
16300 if eval $compile; then
16302 (Now testing the other method--but note that this also may fail.)
16304 $run ./try 2>/dev/null
16307 if $test -s try.out -a "X$code" = X42; then
16308 fflushall="`$cat try.out`"
16311 $rm -f core try.core core.try.*
16312 case "$fflushall" in
16314 Whew. Flushing explicitly all the stdio streams works.
16316 fflushall="$define"
16319 Sigh. Flushing explicitly all the stdio streams doesn't work.
16324 Cannot figure out whether flushing stdio streams explicitly works or not.
16325 I'm assuming it doesn't.
16331 "$define"|true|[yY]*)
16332 fflushall="$define"
16340 All is futile. Even fflush(stdin) clobbers input pipes!
16347 $rm -f core tryp.c tryp.core core.tryp.*
16349 *) fflushall="$undef"
16353 case "$fflushNULL$fflushall" in
16356 OK, I give up. I cannot figure out how to flush pending stdio output.
16357 We won't be flushing handles at all before fork/exec/popen.
16361 $rm -f try.* try$exe_ext
16363 : Store the full pathname to the ar program for use in the C program
16364 : Respect a hint or command line value for full_ar.
16369 : Store the full pathname to the sed program for use in the C program
16372 : see what type gids are declared as in the kernel
16374 echo "Looking for the type for group ids returned by getgid()."
16375 set gid_t gidtype xxx stdio.h sys/types.h
16379 xxx=`./findhdr sys/user.h`
16380 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
16382 unsigned) dflt="$1 $2" ;;
16386 *) dflt="$gidtype";;
16389 gid_t) echo "gid_t found." ;;
16390 *) rp="What is the type for group ids returned by getgid()?"
16398 *_t) zzz="$gidtype" ;;
16401 echo "Checking the size of $zzz..." >&4
16403 #include <sys/types.h>
16406 printf("%d\n", (int)sizeof($gidtype));
16411 if eval $compile_ok; then
16415 echo "(I can't execute the test program--guessing $gidsize.)" >&4
16418 echo "Your $zzz is $gidsize bytes long."
16423 echo "(I can't compile the test program--guessing $gidsize.)" >&4
16429 *_t) zzz="$gidtype" ;;
16432 echo "Checking the sign of $zzz..." >&4
16434 #include <sys/types.h>
16445 if eval $compile; then
16449 echo "(I can't execute the test program--guessing unsigned.)" >&4
16453 1) echo "Your $zzz is unsigned." ;;
16454 -1) echo "Your $zzz is signed." ;;
16460 echo "(I can't compile the test program--guessing unsigned.)" >&4
16466 if $test X"$quadtype" != X; then
16468 echo "Checking how to print 64-bit integers..." >&4
16470 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
16471 $cat >try.c <<'EOCP'
16472 #include <sys/types.h>
16475 int q = 12345678901;
16476 printf("%ld\n", q);
16480 if eval $compile; then
16484 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
16485 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
16486 echo "We will use %d."
16492 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
16493 $cat >try.c <<'EOCP'
16494 #include <sys/types.h>
16497 long q = 12345678901;
16498 printf("%ld\n", q);
16502 if eval $compile; then
16506 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
16507 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
16508 echo "We will use %ld."
16514 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
16515 $cat >try.c <<'EOCP'
16516 #include <sys/types.h>
16517 #include <inttypes.h>
16520 int64_t q = 12345678901;
16521 printf("%" PRId64 "\n", q);
16525 if eval $compile; then
16529 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
16530 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
16531 echo "We will use the C9X style."
16537 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
16539 #include <sys/types.h>
16542 $quadtype q = 12345678901;
16543 printf("%Ld\n", q);
16547 if eval $compile; then
16551 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
16552 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
16553 echo "We will use %Ld."
16559 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
16560 $cat >try.c <<'EOCP'
16561 #include <sys/types.h>
16564 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
16565 printf("%lld\n", q);
16569 if eval $compile; then
16573 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
16574 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
16575 echo "We will use the %lld style."
16581 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
16583 #include <sys/types.h>
16586 $quadtype q = 12345678901;
16587 printf("%qd\n", q);
16591 if eval $compile; then
16595 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
16596 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
16597 echo "We will use %qd."
16603 if $test X"$sPRId64" = X; then
16604 echo "Cannot figure out how to print 64-bit integers." >&4
16612 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
16613 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
16615 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
16616 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
16622 $echo "Checking the format strings to be used for Perl's internal types..." >&4
16624 if $test X"$ivsize" = X8; then
16625 ivdformat="$sPRId64"
16626 uvuformat="$sPRIu64"
16627 uvoformat="$sPRIo64"
16628 uvxformat="$sPRIx64"
16629 uvXUformat="$sPRIXU64"
16631 if $test X"$ivsize" = X"$longsize"; then
16638 if $test X"$ivsize" = X"$intsize"; then
16646 if $test X"$ivsize" = X"$shortsize"; then
16657 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
16658 nveformat="$sPRIeldbl"
16659 nvfformat="$sPRIfldbl"
16660 nvgformat="$sPRIgldbl"
16661 nvEUformat="$sPRIEUldbl"
16662 nvFUformat="$sPRIFUldbl"
16663 nvGUformat="$sPRIGUldbl"
16673 case "$ivdformat" in
16674 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
16681 $echo "Checking the format string to be used for gids..." >&4
16684 -1) if $test X"$gidsize" = X"$ivsize"; then
16685 gidformat="$ivdformat"
16687 if $test X"$gidsize" = X"$longsize"; then
16690 if $test X"$gidsize" = X"$intsize"; then
16693 if $test X"$gidsize" = X"$shortsize"; then
16700 *) if $test X"$gidsize" = X"$uvsize"; then
16701 gidformat="$uvuformat"
16703 if $test X"$gidsize" = X"$longsize"; then
16706 if $test X"$gidsize" = X"$intsize"; then
16709 if $test X"$gidsize" = X"$shortsize"; then
16718 : see if getgroups exists
16719 set getgroups d_getgrps
16722 : see if setgroups exists
16723 set setgroups d_setgrps
16727 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
16729 case "$d_getgrps$d_setgrps" in
16731 case "$groupstype" in
16732 '') dflt="$gidtype" ;;
16733 *) dflt="$groupstype" ;;
16736 What type of pointer is the second argument to getgroups() and setgroups()?
16737 Usually this is the same as group ids, $gidtype, but not always.
16740 rp='What type pointer is the second argument to getgroups() and setgroups()?'
16744 *) groupstype="$gidtype";;
16748 echo "Checking if your $make program sets \$(MAKE)..." >&4
16749 case "$make_set_make" in
16751 $sed 's/^X //' > testmake.mak << 'EOF'
16753 X @echo 'maketemp="$(MAKE)"'
16755 case "`$make -f testmake.mak 2>/dev/null`" in
16756 *maketemp=*) make_set_make='#' ;;
16757 *) make_set_make="MAKE=$make" ;;
16759 $rm -f testmake.mak
16762 case "$make_set_make" in
16763 '#') echo "Yup, it does.";;
16764 *) echo "Nope, it doesn't.";;
16767 : see what type is used for mode_t
16768 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
16769 set mode_t modetype int stdio.h sys/types.h
16772 : see if stdarg is available
16774 if $test `./findhdr stdarg.h`; then
16775 echo "<stdarg.h> found." >&4
16778 echo "<stdarg.h> NOT found." >&4
16782 : see if varags is available
16784 if $test `./findhdr varargs.h`; then
16785 echo "<varargs.h> found." >&4
16787 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
16790 : set up the varargs testing programs
16791 $cat > varargs.c <<EOP
16793 #include <stdarg.h>
16796 #include <varargs.h>
16800 int f(char *p, ...)
16814 p = va_arg(ap, char *);
16819 $cat > varargs <<EOP
16821 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
16830 : now check which varargs header should be included
16835 if `./varargs I_STDARG`; then
16837 elif `./varargs I_VARARGS`; then
16842 if `./varargs I_VARARGS`; then
16849 echo "I could not find the definition for va_dcl... You have problems..." >&4
16850 val="$undef"; set i_stdarg; eval $setvar
16851 val="$undef"; set i_varargs; eval $setvar
16856 case "$i_varhdr" in
16858 val="$define"; set i_stdarg; eval $setvar
16859 val="$undef"; set i_varargs; eval $setvar
16862 val="$undef"; set i_stdarg; eval $setvar
16863 val="$define"; set i_varargs; eval $setvar
16866 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
16870 : see if we need va_copy
16872 case "$i_stdarg" in
16875 #include <stdarg.h>
16877 #$i_stdlib I_STDLIB
16879 #include <stdlib.h>
16881 #include <signal.h>
16884 ivfprintf(FILE *f, const char *fmt, va_list *valp)
16886 return vfprintf(f, fmt, *valp);
16890 myvfprintf(FILE *f, const char *fmt, va_list val)
16892 return ivfprintf(f, fmt, &val);
16896 myprintf(char *fmt, ...)
16899 va_start(val, fmt);
16900 return myvfprintf(stdout, fmt, val);
16904 main(int ac, char **av)
16906 signal(SIGSEGV, exit);
16908 myprintf("%s%cs all right, then\n", "that", '\'');
16913 if eval $compile && $run ./try 2>&1 >/dev/null; then
16914 case "`$run ./try`" in
16915 "that's all right, then")
16921 yes) echo "It seems that you don't need va_copy()." >&4
16922 need_va_copy="$undef"
16924 *) echo "It seems that va_copy() or similar will be needed." >&4
16925 need_va_copy="$define"
16928 $rm -f try.* core core.* *.core *.core.*
16930 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
16934 : see what type is used for size_t
16935 rp="What is the type used for the length parameter for string functions?"
16936 set size_t sizetype 'unsigned int' stdio.h sys/types.h
16939 : check for type of arguments to gethostbyaddr.
16940 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
16941 case "$d_gethbyaddr" in
16945 Checking to see what type of arguments are accepted by gethostbyaddr().
16947 hdrs="$define sys/types.h
16948 $d_socket sys/socket.h
16949 $i_niin netinet/in.h
16951 $i_unistd unistd.h"
16952 : The first arg can 'char *' or 'void *'
16953 : The second arg is some of integral type
16954 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
16955 for yyy in size_t long int; do
16956 case "$netdb_host_type" in
16957 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
16958 if ./protochk "$try" $hdrs; then
16959 echo "Your system accepts $xxx for the first arg."
16960 echo "...and $yyy for the second arg."
16961 netdb_host_type="$xxx"
16962 netdb_hlen_type="$yyy"
16968 : In case none of those worked, prompt the user.
16969 case "$netdb_host_type" in
16970 '') rp='What is the type for the 1st argument to gethostbyaddr?'
16973 netdb_host_type=$ans
16974 rp='What is the type for the 2nd argument to gethostbyaddr?'
16977 netdb_hlen_type=$ans
16981 *) : no gethostbyaddr, so pick harmless defaults
16982 netdb_host_type='char *'
16983 netdb_hlen_type="$sizetype"
16986 # Remove the "const" if needed. -- but then we'll have a
16988 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
16991 : check for type of argument to gethostbyname.
16992 if test "X$netdb_name_type" = X ; then
16993 case "$d_gethbyname" in
16997 Checking to see what type of argument is accepted by gethostbyname().
16999 hdrs="$define sys/types.h
17000 $d_socket sys/socket.h
17001 $i_niin netinet/in.h
17003 $i_unistd unistd.h"
17004 for xxx in "const char *" "char *"; do
17005 case "$netdb_name_type" in
17006 '') try="extern struct hostent *gethostbyname($xxx);"
17007 if ./protochk "$try" $hdrs; then
17008 echo "Your system accepts $xxx."
17009 netdb_name_type="$xxx"
17014 : In case none of those worked, prompt the user.
17015 case "$netdb_name_type" in
17016 '') rp='What is the type for the 1st argument to gethostbyname?'
17019 netdb_name_type=$ans
17023 *) : no gethostbyname, so pick harmless default
17024 netdb_name_type='char *'
17029 : check for type of 1st argument to getnetbyaddr.
17030 if test "X$netdb_net_type" = X ; then
17031 case "$d_getnbyaddr" in
17035 Checking to see what type of 1st argument is accepted by getnetbyaddr().
17037 hdrs="$define sys/types.h
17038 $d_socket sys/socket.h
17039 $i_niin netinet/in.h
17041 $i_unistd unistd.h"
17042 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
17043 case "$netdb_net_type" in
17044 '') try="extern struct netent *getnetbyaddr($xxx, int);"
17045 if ./protochk "$try" $hdrs; then
17046 echo "Your system accepts $xxx."
17047 netdb_net_type="$xxx"
17052 : In case none of those worked, prompt the user.
17053 case "$netdb_net_type" in
17054 '') rp='What is the type for the 1st argument to getnetbyaddr?'
17057 netdb_net_type=$ans
17061 *) : no getnetbyaddr, so pick harmless default
17062 netdb_net_type='long'
17066 : locate the preferred pager for this system
17072 [a-zA-Z]:/*) dflt=$pg;;
17076 [a-zA-Z]:/*) dflt=$more;;
17080 [a-zA-Z]:/*) dflt=$less;;
17083 '') dflt=/usr/ucb/more;;
17090 rp='What pager is used on your system?'
17094 : see what type pids are declared as in the kernel
17095 rp="What is the type of process ids on this system?"
17096 set pid_t pidtype int stdio.h sys/types.h
17099 : Find earliest binary compatible site_perl subdirectory perl can use.
17100 case "$bincompat5005" in
17101 "$define") xs_apiversion='5.005' ;;
17102 *) xs_apiversion=$version ;; # The current site_perl version.
17104 : Find earliest pure perl site_perl subdirectory perl can use.
17105 : The versioned directories started at 5.005.
17106 pm_apiversion='5.005'
17108 : see if ar generates random libraries by itself
17110 echo "Checking how to generate random libraries on your machine..." >&4
17111 echo 'int bar1() { return bar2(); }' > bar1.c
17112 echo 'int bar2() { return 2; }' > bar2.c
17113 $cat > foo.c <<'EOP'
17114 int main() { printf("%d\n", bar1()); exit(0); }
17116 $cc $ccflags -c bar1.c >/dev/null 2>&1
17117 $cc $ccflags -c bar2.c >/dev/null 2>&1
17118 $cc $ccflags -c foo.c >/dev/null 2>&1
17119 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
17120 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
17121 $run ./foobar >/dev/null 2>&1; then
17122 echo "$ar appears to generate random libraries itself."
17125 elif $ar ts bar$_a >/dev/null 2>&1 &&
17126 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
17127 $run ./foobar >/dev/null 2>&1; then
17128 echo "a table of contents needs to be added with '$ar ts'."
17135 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
17136 $test -f $ranlib || ranlib=''
17139 if $test -n "$ranlib"; then
17140 echo "your system has '$ranlib'; we'll use that."
17143 echo "your system doesn't seem to support random libraries"
17144 echo "so we'll use lorder and tsort to order the libraries."
17151 : check for type of arguments to select.
17152 case "$selecttype" in
17153 '') case "$d_select" in
17157 Checking to see what type of arguments are accepted by select().
17159 hdrs="$define sys/types.h
17160 $i_systime sys/time.h
17161 $i_sysselct sys/select.h
17162 $d_socket sys/socket.h"
17163 : The first arg can be int, unsigned, or size_t
17164 : The last arg may or may not be 'const'
17166 : void pointer has been seen but using that
17167 : breaks the selectminbits test
17168 for xxx in 'fd_set *' 'int *'; do
17169 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
17170 for tmo in 'struct timeval *' 'const struct timeval *'; do
17172 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
17173 if ./protochk "$try" $hdrs; then
17174 echo "Your system accepts $xxx."
17183 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
17184 case "$d_fd_set" in
17185 $define) dflt="fd_set *" ;;
17194 *) : no select, so pick a harmless default
17201 : check for the select 'width'
17202 case "$selectminbits" in
17203 '') case "$d_select" in
17207 Checking to see on how many bits at a time your select() operates...
17210 #include <sys/types.h>
17212 #$i_systime I_SYS_TIME
17213 #$i_systimek I_SYS_TIME_KERNEL
17218 # ifdef I_SYS_TIME_KERNEL
17221 # include <sys/time.h>
17222 # ifdef I_SYS_TIME_KERNEL
17226 #$i_sysselct I_SYS_SELECT
17227 #ifdef I_SYS_SELECT
17228 #include <sys/select.h>
17230 #$d_socket HAS_SOCKET
17232 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
17236 #define S sizeof(*(b))
17238 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
17239 #define NBITS (NBYTES * 8)
17248 fp = fopen("try.c", "r");
17254 b = ($selecttype)s;
17255 for (i = 0; i < NBITS; i++)
17259 select(fd + 1, b, 0, 0, &t);
17260 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
17261 printf("%d\n", i + 1);
17266 if eval $compile_ok; then
17267 selectminbits=`$run ./try`
17268 case "$selectminbits" in
17270 Cannot figure out on how many bits at a time your select() operates.
17271 I'll play safe and guess it is 32 bits.
17277 *) bits="$selectminbits bits" ;;
17279 echo "Your select() operates on $bits at a time." >&4
17281 rp='What is the minimum number of bits your select() operates on?'
17282 case "$byteorder" in
17283 1234|12345678) dflt=32 ;;
17288 selectminbits="$val"
17292 *) : no select, so pick a harmless default
17299 : Trace out the files included by signal.h, then look for SIGxxx names.
17300 : Remove SIGARRAYSIZE used by HPUX.
17301 : Remove SIGSTKSIZE used by Linux.
17302 : Remove SIGSTKSZ used by Posix.
17303 : Remove SIGTYP void lines used by OS2.
17304 : Some cpps, like os390, dont give the file name anywhere
17305 if [ "X$fieldn" = X ]; then
17306 : Just make some guesses. We check them later.
17307 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
17309 xxx=`echo '#include <signal.h>' |
17310 $cppstdin $cppminus $cppflags 2>/dev/null |
17311 $grep '^[ ]*#.*include' |
17312 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
17314 : Check this list of files to be sure we have parsed the cpp output ok.
17315 : This will also avoid potentially non-existent files, such
17318 for xx in $xxx /dev/null ; do
17319 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
17321 : If we have found no files, at least try signal.h
17322 case "$xxxfiles" in
17323 '') xxxfiles=`./findhdr signal.h` ;;
17326 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
17327 print substr($2, 4, 20)
17329 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
17330 print substr($3, 4, 20)
17332 : Append some common names just in case the awk scan failed.
17333 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
17334 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
17335 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
17336 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
17337 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
17339 : generate a few handy files for later
17340 $cat > signal.c <<'EOCP'
17341 #include <sys/types.h>
17342 #include <signal.h>
17346 /* Strange style to avoid deeply-nested #if/#else/#endif */
17349 # define NSIG (_NSIG)
17355 # define NSIG (SIGMAX+1)
17361 # define NSIG (SIG_MAX+1)
17367 # define NSIG (MAXSIG+1)
17373 # define NSIG (MAX_SIG+1)
17378 # ifdef SIGARRAYSIZE
17379 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
17385 # define NSIG (_sys_nsig) /* Solaris 2.5 */
17389 /* Default to some arbitrary number that's big enough to get most
17390 of the common signals.
17396 printf("NSIG %d\n", NSIG);
17402 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
17404 printf "#ifdef SIG"; printf $1; printf "\n"
17405 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
17406 printf $1; printf ");\n"
17410 printf "#endif /* JUST_NSIG */\n";
17411 printf "exit(0);\n}\n";
17414 $cat >signal.awk <<'EOP'
17415 BEGIN { ndups = 0 }
17416 $1 ~ /^NSIG$/ { nsig = $2 }
17417 ($1 !~ /^NSIG$/) && (NF == 2) {
17418 if ($2 > maxsig) { maxsig = $2 }
17419 if (sig_name[$2]) {
17420 dup_name[ndups] = $1
17421 dup_num[ndups] = $2
17433 printf("NSIG %d\n", nsig);
17434 for (n = 1; n < nsig; n++) {
17436 printf("%s %d\n", sig_name[n], sig_num[n])
17439 printf("NUM%d %d\n", n, n)
17442 for (n = 0; n < ndups; n++) {
17443 printf("%s %d\n", dup_name[n], dup_num[n])
17447 $cat >signal_cmd <<EOS
17449 if $test -s signal.lst; then
17450 echo "Using your existing signal.lst file"
17455 $cat >>signal_cmd <<'EOS'
17458 if eval $compile_ok; then
17459 $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
17461 echo "(I can't seem be able to compile the whole test program)" >&4
17462 echo "(I'll try it in little pieces.)" >&4
17463 set signal -DJUST_NSIG
17464 if eval $compile_ok; then
17465 $run ./signal$_exe > signal.nsg
17468 echo "I can't seem to figure out how many signals you have." >&4
17469 echo "Guessing 50." >&4
17470 echo 'NSIG 50' > signal.nsg
17472 : Now look at all the signal names, one at a time.
17473 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
17474 $cat > signal.c <<EOCP
17475 #include <sys/types.h>
17476 #include <signal.h>
17479 printf("$xx %d\n", SIG${xx});
17484 if eval $compile; then
17485 echo "SIG${xx} found."
17486 $run ./signal$_exe >> signal.ls1
17488 echo "SIG${xx} NOT found."
17491 if $test -s signal.ls1; then
17492 $cat signal.nsg signal.ls1 |
17493 $sort -n | $uniq | $awk -f signal.awk >signal.lst
17497 if $test -s signal.lst; then
17500 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
17501 echo 'kill -l' >signal
17502 set X `csh -f <signal`
17506 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
17508 echo $@ | $tr ' ' $trnl | \
17509 $awk '{ printf "%s %d\n", $1, ++s; }
17510 END { printf "NSIG %d\n", ++s }' >signal.lst
17512 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
17514 chmod a+x signal_cmd
17515 $eunicefix signal_cmd
17517 : generate list of signal names
17519 case "$sig_name_init" in
17521 *) case "$sig_num_init" in
17522 ''|*,*) doinit=yes ;;
17527 echo "Generating a list of signal names and numbers..." >&4
17529 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
17530 sig_name=`$awk 'BEGIN { printf "ZERO " }
17531 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
17532 sig_num=`$awk 'BEGIN { printf "0 " }
17533 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
17534 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
17535 !/^NSIG/ { printf "\"%s\", ", $1 }
17536 END { printf "0\n" }' signal.lst`
17537 sig_num_init=`$awk 'BEGIN { printf "0, " }
17538 !/^NSIG/ { printf "%d, ", $2}
17539 END { printf "0\n"}' signal.lst`
17542 echo "The following $sig_count signals are available:"
17544 echo $sig_name | $awk \
17545 'BEGIN { linelen = 0 }
17547 for (i = 1; i <= NF; i++) {
17548 name = "SIG" $i " "
17549 linelen = linelen + length(name)
17550 if (linelen > 70) {
17552 linelen = length(name)
17558 sig_size=`echo $sig_name | awk '{print NF}'`
17559 $rm -f signal signal.c signal.awk signal.lst signal_cmd
17562 case "$sizetype" in
17563 *_t) zzz="$sizetype" ;;
17564 *) zzz="filesize" ;;
17566 echo "Checking the size of $zzz..." >&4
17568 #include <sys/types.h>
17571 printf("%d\n", (int)sizeof($sizetype));
17576 if eval $compile_ok; then
17580 echo "(I can't execute the test program--guessing $sizesize.)" >&4
17583 echo "Your $zzz size is $sizesize bytes."
17588 echo "(I can't compile the test program--guessing $sizesize.)" >&4
17592 : check for socklen_t
17594 echo "Checking to see if you have socklen_t..." >&4
17596 #include <sys/types.h>
17597 #$d_socket HAS_SOCKET
17599 #include <sys/socket.h>
17601 int main() { socklen_t x = 16; }
17604 if eval $compile; then
17606 echo "You have socklen_t."
17609 echo "You do not have socklen_t."
17610 case "$sizetype" in
17611 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
17618 : see if this is a socks.h system
17619 set socks.h i_socks
17622 : check for type of the size argument to socket calls
17623 case "$d_socket" in
17627 Checking to see what type is the last argument of accept().
17630 case "$d_socklen_t" in
17631 "$define") yyy="$yyy socklen_t"
17633 yyy="$yyy $sizetype int long unsigned"
17634 for xxx in $yyy; do
17635 case "$socksizetype" in
17636 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
17637 case "$usesocks" in
17639 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
17640 echo "Your system accepts '$xxx *' for the last argument of accept()."
17641 socksizetype="$xxx"
17644 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
17645 echo "Your system accepts '$xxx *' for the last argument of accept()."
17646 socksizetype="$xxx"
17653 : In case none of those worked, prompt the user.
17654 case "$socksizetype" in
17655 '') rp='What is the type for socket address structure sizes?'
17662 *) : no sockets, so pick relatively harmless default
17667 : see what type is used for signed size_t
17668 set ssize_t ssizetype int stdio.h sys/types.h
17673 #include <sys/types.h>
17674 #define Size_t $sizetype
17675 #define SSize_t $dflt
17678 if (sizeof(Size_t) == sizeof(SSize_t))
17680 else if (sizeof(Size_t) == sizeof(int))
17689 if eval $compile_ok && $run ./try > /dev/null; then
17690 ssizetype=`$run ./try`
17691 echo "I'll be using $ssizetype for functions returning a byte count." >&4
17694 Help! I can't compile and run the ssize_t test program: please enlighten me!
17695 (This is probably a misconfiguration in your system or libraries, and
17696 you really ought to fix it. Still, I'll try anyway.)
17698 I need a type that is the same size as $sizetype, but is guaranteed to
17699 be signed. Common values are ssize_t, int and long.
17702 rp="What signed type is the same size as $sizetype?"
17708 : see what type of char stdio uses.
17710 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
17711 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
17712 echo "Your stdio uses unsigned chars." >&4
17713 stdchar="unsigned char"
17715 echo "Your stdio uses signed chars." >&4
17722 : see if time exists
17724 if test "X$d_time" = X -o X"$timetype" = X; then
17725 if set time val -f d_time; eval $csym; $val; then
17726 echo 'time() found.' >&4
17728 rp="What is the type returned by time() on this system?"
17729 set time_t timetype long stdio.h sys/types.h
17732 echo 'time() not found, hope that will do.' >&4
17740 : see what type uids are declared as in the kernel
17742 echo "Looking for the type for user ids returned by getuid()."
17743 set uid_t uidtype xxx stdio.h sys/types.h
17747 xxx=`./findhdr sys/user.h`
17748 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
17750 unsigned) dflt="$1 $2" ;;
17754 *) dflt="$uidtype";;
17757 uid_t) echo "uid_t found." ;;
17758 *) rp="What is the type for user ids returned by getuid()?"
17766 *_t) zzz="$uidtype" ;;
17769 echo "Checking the size of $zzz..." >&4
17771 #include <sys/types.h>
17774 printf("%d\n", (int)sizeof($uidtype));
17779 if eval $compile_ok; then
17783 echo "(I can't execute the test program--guessing $uidsize.)" >&4
17786 echo "Your $zzz is $uidsize bytes long."
17791 echo "(I can't compile the test program--guessing $uidsize.)" >&4
17796 *_t) zzz="$uidtype" ;;
17799 echo "Checking the sign of $zzz..." >&4
17801 #include <sys/types.h>
17812 if eval $compile; then
17816 echo "(I can't execute the test program--guessing unsigned.)" >&4
17820 1) echo "Your $zzz is unsigned." ;;
17821 -1) echo "Your $zzz is signed." ;;
17827 echo "(I can't compile the test program--guessing unsigned.)" >&4
17833 $echo "Checking the format string to be used for uids..." >&4
17836 -1) if $test X"$uidsize" = X"$ivsize"; then
17837 uidformat="$ivdformat"
17839 if $test X"$uidsize" = X"$longsize"; then
17842 if $test X"$uidsize" = X"$intsize"; then
17845 if $test X"$uidsize" = X"$shortsize"; then
17852 *) if $test X"$uidsize" = X"$uvsize"; then
17853 uidformat="$uvuformat"
17855 if $test X"$uidsize" = X"$longsize"; then
17858 if $test X"$uidsize" = X"$intsize"; then
17861 if $test X"$uidsize" = X"$shortsize"; then
17870 : determine compiler compiler
17879 if $test -f "$byacc$_exe"; then
17881 comp="byacc or $comp"
17883 if $test -f "$bison$_exe"; then
17884 comp="$comp or bison -y"
17886 rp="Which compiler compiler ($comp) shall I use?"
17895 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
17901 : see if this is a fp.h system
17905 : see if this is a fp_class.h system
17906 set fp_class.h i_fp_class
17909 : see if this is a ieeefp.h system
17910 case "$i_ieeefp" in
17911 '' ) set ieeefp.h i_ieeefp
17916 : see if this is a libutil.h system
17917 set libutil.h i_libutil
17920 : see if mach cthreads are available
17921 if test "X$usethreads" = "X$define"; then
17922 set mach/cthreads.h i_machcthr
17925 i_machcthr="$undef"
17930 : see if this is a math.h system
17934 : see if this is a mntent.h system
17935 set mntent.h i_mntent
17938 : see if ndbm.h is available
17944 # Some Linux distributions such as RedHat 7.1 put the
17945 # ndbm.h header in /usr/include/gdbm/ndbm.h.
17946 if $test -f /usr/include/gdbm/ndbm.h; then
17947 echo '<gdbm/ndbm.h> found.'
17948 ccflags="$ccflags -I/usr/include/gdbm"
17949 cppflags="$cppflags -I/usr/include/gdbm"
17957 : see if dbm_open exists
17958 set dbm_open d_dbm_open
17960 case "$d_dbm_open" in
17963 echo "We won't be including <ndbm.h>"
17972 : see if net/errno.h is available
17974 set net/errno.h val
17977 : Unfortunately, it causes problems on some systems. Arrgh.
17980 cat > try.c <<'EOM'
17983 #include <net/errno.h>
17989 if $cc $ccflags -c try.c >/dev/null 2>&1; then
17990 echo "We'll be including <net/errno.h>." >&4
17992 echo "We won't be including <net/errno.h>." >&4
18001 : see if netinet/tcp.h is available
18002 set netinet/tcp.h i_netinettcp
18005 : see if this is a poll.h system
18009 : see if this is a prot.h system
18014 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
18015 $cat <<'EOSH' > Cppsym.know
18016 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
18017 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
18018 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
18019 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
18020 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
18021 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
18022 bull c cadmus clipper CMU COFF COMPILER_VERSION
18023 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
18024 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
18025 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
18026 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
18028 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
18029 H3050R H3050RX hbullx20 hcx host_mips
18030 hp200 hp300 hp700 HP700 hp800 hp9000
18031 hp9000s200 hp9000s300 hp9000s400 hp9000s500
18032 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
18033 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
18034 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
18035 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
18036 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
18037 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
18038 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
18039 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
18040 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
18041 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
18042 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
18043 MATH_HAS_NO_SIDE_EFFECTS
18044 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
18045 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
18046 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
18047 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
18048 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
18049 NetBSD news1500 news1700 news1800 news1900 news3700
18050 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
18051 ns32016 ns32332 ns32k nsc32000
18052 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
18053 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
18054 pc532 pdp11 PGC PIC plexus PORTAR posix
18055 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
18056 POSIX_C_SOURCE POSIX_SOURCE POWER
18057 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
18058 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
18059 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
18060 sony sony_news sonyrisc sparc sparclite spectrum
18061 stardent stdc STDC_EXT stratos sun sun3 sun386
18062 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
18063 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
18064 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
18065 sysV68 sysV88 Tek4132 Tek4300 titan
18066 TM3200 TM5400 TM5600
18067 tower tower32 tower32_200 tower32_600 tower32_700
18068 tower32_800 tower32_850 tss
18069 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
18070 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
18071 unix UNIX95 UNIX99 unixpc unos
18072 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
18073 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
18074 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
18076 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
18077 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
18078 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
18081 # Maybe put other stuff here too.
18082 cat <<EOSH >>Cppsym.know
18085 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
18086 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
18087 $cat Cppsym.know > Cppsym.c
18088 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
18089 $rm -f Cppsym.a Cppsym.b Cppsym.c
18090 cat <<EOSH > Cppsym
18092 if $test \$# -gt 0; then
18093 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
18094 if $test -s Cppsym.got; then
18101 $tr " " "$trnl" | ./Cppsym.try
18107 cat <<EOSH > Cppsym.try
18109 cat <<'EOCP' > try.c
18115 cat <<'EOSH' >> Cppsym.try
18117 printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
18118 printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
18119 printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
18120 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
18122 echo 'return 0;}' >> try.c
18124 cat <<EOSH >> Cppsym.try
18126 case "$osname-$gccversion" in
18127 irix-) ccflags="\$ccflags -woff 1178" ;;
18128 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
18130 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
18132 chmod +x Cppsym.try
18133 $eunicefix Cppsym.try
18134 ./Cppsym < Cppsym.know > Cppsym.true
18135 : now check the C compiler for additional symbols
18136 postprocess_cc_v=''
18138 aix) postprocess_cc_v="|$tr , ' '" ;;
18145 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
18148 -D*) echo "\$i" | $sed 's/^-D//';;
18149 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
18154 postprocess_cc_v=''
18157 ./ccsym > ccsym1.raw
18158 if $test -s ccsym1.raw; then
18159 $sort ccsym1.raw | $uniq >ccsym.raw
18161 mv ccsym1.raw ccsym.raw
18164 $awk '/\=/ { print $0; next }
18165 { print $0"=1" }' ccsym.raw >ccsym.list
18166 $awk '/\=/ { print $0; next }
18167 { print $0"=1" }' Cppsym.true >ccsym.true
18168 $comm -13 ccsym.true ccsym.list >ccsym.own
18169 $comm -12 ccsym.true ccsym.list >ccsym.com
18170 $comm -23 ccsym.true ccsym.list >ccsym.cpp
18172 if $test -z ccsym.raw; then
18173 echo "Your C compiler doesn't seem to define any symbols!" >&4
18175 echo "However, your C preprocessor defines the following symbols:"
18178 cppsymbols=`$cat Cppsym.true`
18179 cppsymbols=`echo $cppsymbols`
18180 cppccsymbols="$cppsymbols"
18182 if $test -s ccsym.com; then
18183 echo "Your C compiler and pre-processor define these symbols:"
18184 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
18187 cppccsymbols=`$cat ccsym.com`
18188 cppccsymbols=`echo $cppccsymbols`
18189 $test "$silent" || sleep 1
18191 if $test -s ccsym.cpp; then
18192 $test "$also" && echo " "
18193 echo "Your C pre-processor ${also}defines the following symbols:"
18194 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
18196 cppsymbols=`$cat ccsym.cpp`
18197 cppsymbols=`echo $cppsymbols`
18198 $test "$silent" || sleep 1
18200 if $test -s ccsym.own; then
18201 $test "$also" && echo " "
18202 echo "Your C compiler ${also}defines the following cpp symbols:"
18203 $sed -e 's/\(..*\)=1/\1/' ccsym.own
18204 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
18205 ccsymbols=`$cat ccsym.own`
18206 ccsymbols=`echo $ccsymbols`
18207 $test "$silent" || sleep 1
18211 : see if this is a termio system
18215 if $test `./findhdr termios.h`; then
18216 set tcsetattr i_termios
18222 "$define") echo "You have POSIX termios.h... good!" >&4;;
18223 *) if ./Cppsym pyr; then
18224 case "`/bin/universe`" in
18225 ucb) if $test `./findhdr sgtty.h`; then
18227 echo "<sgtty.h> found." >&4
18229 echo "System is pyramid with BSD universe."
18230 echo "<sgtty.h> not found--you could have problems." >&4
18232 *) if $test `./findhdr termio.h`; then
18234 echo "<termio.h> found." >&4
18236 echo "System is pyramid with USG universe."
18237 echo "<termio.h> not found--you could have problems." >&4
18241 if $test `./findhdr termio.h`; then
18242 echo "<termio.h> found." >&4
18244 elif $test `./findhdr sgtty.h`; then
18245 echo "<sgtty.h> found." >&4
18248 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
18251 if $test `./findhdr sgtty.h`; then
18252 echo "<sgtty.h> found." >&4
18254 elif $test `./findhdr termio.h`; then
18255 echo "<termio.h> found." >&4
18258 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
18262 set i_termio; eval $setvar
18263 val=$val2; set i_sgtty; eval $setvar
18264 val=$val3; set i_termios; eval $setvar
18266 : see if stddef is available
18267 set stddef.h i_stddef
18270 : see if this is a sunmath.h system
18271 set sunmath.h i_sunmath
18274 : see if sys/access.h is available
18275 set sys/access.h i_sysaccess
18278 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
18279 set sys/filio.h i_sysfilio
18282 if $test `./findhdr sys/ioctl.h`; then
18284 echo '<sys/ioctl.h> found.' >&4
18287 if $test $i_sysfilio = "$define"; then
18288 echo '<sys/ioctl.h> NOT found.' >&4
18290 $test $i_sgtty = "$define" && xxx="sgtty.h"
18291 $test $i_termio = "$define" && xxx="termio.h"
18292 $test $i_termios = "$define" && xxx="termios.h"
18293 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
18299 : see if socket ioctl defs are in sys/sockio.h
18301 xxx=`./findhdr sys/sockio.h`
18302 if $test "$xxx"; then
18303 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
18305 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
18308 echo "No socket ioctls found in <sys/sockio.h>." >&4
18313 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
18320 : see if this is a syslog.h system
18321 set syslog.h i_syslog
18325 : see if this is a sys/mode.h system
18326 set sys/mode.h i_sysmode
18329 : see if sys/resource.h has to be included
18330 set sys/resource.h i_sysresrc
18333 : see if sys/security.h is available
18334 set sys/security.h i_syssecrt
18337 : see if this is a sys/statvfs.h system
18338 set sys/statvfs.h i_sysstatvfs
18341 : see if this is a sys/un.h system
18342 set sys/un.h i_sysun
18346 : see if this is a sys/utsname.h system
18347 set sys/utsname.h i_sysutsname
18350 : see if this is a syswait system
18351 set sys/wait.h i_syswait
18354 : see if this is a ustat.h system
18355 set ustat.h i_ustat
18358 : see if this is an utime system
18359 set utime.h i_utime
18362 : see if this is a values.h system
18363 set values.h i_values
18366 : see if this is a vfork system
18369 set vfork.h i_vfork
18377 : see if gdbm.h is available
18382 : see if gdbm_open exists
18383 set gdbm_open d_gdbm_open
18385 case "$d_gdbm_open" in
18388 echo "We won't be including <gdbm.h>"
18398 echo "Looking for extensions..." >&4
18399 : If we are using the old config.sh, known_extensions may contain
18400 : old or inaccurate or duplicate values.
18401 known_extensions=''
18402 nonxs_extensions=''
18403 : We do not use find because it might not be available.
18404 : We do not just use MANIFEST because the user may have dropped
18405 : some additional extensions into the source tree and expect them
18408 : Function to recursively find available extensions, ignoring DynaLoader
18409 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
18413 DynaLoader|dynaload) ;;
18415 if $test -f $xxx/$xxx.xs; then
18416 known_extensions="$known_extensions $1$xxx";
18417 elif $test -f $xxx/Makefile.PL; then
18418 nonxs_extensions="$nonxs_extensions $1$xxx";
18420 if $test -d $xxx -a $# -lt 10; then
18423 eval $find_extensions;
18435 eval $find_extensions
18436 # Special case: Add in threads/shared since it is not picked up by the
18437 # recursive find above (and adding in general recursive finding breaks
18438 # SDBM_File/sdbm). A.D. 10/25/2001.
18439 # Encode::XX need explicit mentions for the same reason.
18441 known_extensions="$known_extensions threads/shared Encode/CN Encode/JP Encode/KR Encode/TW"
18442 set X $nonxs_extensions
18444 nonxs_extensions="$*"
18445 set X $known_extensions
18447 known_extensions="$*"
18450 : Now see which are supported on this system.
18452 for xxx in $known_extensions ; do
18456 $define) avail_ext="$avail_ext $xxx" ;;
18459 GDBM_File|gdbm_fil)
18461 $define) avail_ext="$avail_ext $xxx" ;;
18464 I18N/Langinfo|i18n_lan)
18465 case "$i_langinfo$d_nl_langinfo" in
18466 $define$define) avail_ext="$avail_ext $xxx" ;;
18469 NDBM_File|ndbm_fil)
18472 case "$osname-$use64bitint" in
18473 cygwin-*|hpux-define)
18475 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
18478 *) avail_ext="$avail_ext $xxx" ;;
18483 ODBM_File|odbm_fil)
18484 case "${i_dbm}${i_rpcsvcdbm}" in
18486 case "$osname-$use64bitint" in
18487 cygwin-*|hpux-define)
18489 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
18492 *) avail_ext="$avail_ext $xxx" ;;
18498 case "$useposix" in
18499 true|define|y) avail_ext="$avail_ext $xxx" ;;
18503 case "$useopcode" in
18504 true|define|y) avail_ext="$avail_ext $xxx" ;;
18508 case "$d_socket" in
18511 beos) ;; # not unless BONE
18512 *) avail_ext="$avail_ext $xxx" ;;
18517 Sys/Syslog|sys/syslog)
18518 : XXX syslog requires socket
18519 case "$d_socket" in
18520 true|$define|y) avail_ext="$avail_ext $xxx" ;;
18524 case "$usethreads" in
18526 case "$useithreads" in
18527 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
18531 threads|threads/shared)
18532 case "$usethreads" in
18534 case "$useithreads" in
18535 $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
18540 : XXX Do we need a useipcsysv variable here
18541 case "${d_msg}${d_sem}${d_shm}" in
18542 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
18545 *) avail_ext="$avail_ext $xxx"
18554 : Now see which nonxs extensions are supported on this system.
18555 : For now assume all are.
18557 for xxx in $nonxs_extensions ; do
18559 *) nonxs_ext="$nonxs_ext $xxx"
18571 A number of extensions are supplied with $package. You may choose to
18572 compile these extensions for dynamic loading (the default), compile
18573 them into the $package executable (static loading), or not include
18574 them at all. Answer "none" to include no extensions.
18575 Note that DynaLoader is always built and need not be mentioned here.
18578 case "$dynamic_ext" in
18579 '') dflt="$avail_ext" ;;
18580 *) dflt="$dynamic_ext"
18581 # Perhaps we are reusing an old out-of-date config.sh.
18584 if test X"$dynamic_ext" != X"$avail_ext"; then
18586 NOTICE: Your previous config.sh list may be incorrect.
18587 The extensions now available to you are
18589 but the default list from your previous config.sh is
18601 rp="What extensions do you wish to load dynamically?"
18604 none) dynamic_ext=' ' ;;
18605 *) dynamic_ext="$ans" ;;
18608 case "$static_ext" in
18610 : Exclude those already listed in dynamic linking
18612 for xxx in $avail_ext; do
18613 case " $dynamic_ext " in
18615 *) dflt="$dflt $xxx" ;;
18622 *) dflt="$static_ext"
18629 rp="What extensions do you wish to load statically?"
18632 none) static_ext=' ' ;;
18633 *) static_ext="$ans" ;;
18638 A number of extensions are supplied with $package. Answer "none"
18639 to include no extensions.
18640 Note that DynaLoader is always built and need not be mentioned here.
18643 case "$static_ext" in
18644 '') dflt="$avail_ext" ;;
18645 *) dflt="$static_ext"
18646 # Perhaps we are reusing an old out-of-date config.sh.
18649 if test X"$static_ext" != X"$avail_ext"; then
18651 NOTICE: Your previous config.sh list may be incorrect.
18652 The extensions now available to you are
18654 but the default list from your previous config.sh is
18663 : Exclude those that are not xs extensions
18667 rp="What extensions do you wish to include?"
18670 none) static_ext=' ' ;;
18671 *) static_ext="$ans" ;;
18676 set X $dynamic_ext $static_ext $nonxs_ext
18680 : Remove libraries needed only for extensions
18681 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
18682 : The exception is SunOS 4.x, which needs them.
18683 case "${osname}X${osvers}" in
18687 *) case "$usedl" in
18688 $define|true|[yY]*)
18689 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
18693 *) perllibs="$libs"
18699 : Remove build directory name from cppstdin so it can be used from
18700 : either the present location or the final installed location.
18702 : Get out of the UU directory to get correct path name.
18704 case "$cppstdin" in
18706 echo "Stripping down cppstdin path name"
18712 : end of configuration questions
18714 echo "End of configuration questions."
18717 : back to where it started
18718 if test -d ../UU; then
18722 : configuration may be patched via a 'config.arch' file
18723 if $test -f config.arch; then
18724 echo "I see a config.arch file, loading it."
18728 : configuration may be patched via a 'config.over' file
18729 if $test -f config.over; then
18732 rp='I see a config.over file. Do you wish to load it?'
18735 n*) echo "OK, I'll ignore it.";;
18737 echo "Configuration override changes have been loaded."
18742 : in case they want portability, strip down executable paths
18743 case "$d_portable" in
18746 echo "Stripping down executable paths..." >&4
18747 for file in $loclist $trylist; do
18749 eval $file=`basename $temp`
18754 : create config.sh file
18756 echo "Creating config.sh..." >&4
18757 $spitshell <<EOT >config.sh
18760 # This file was produced by running the Configure script. It holds all the
18761 # definitions figured out by Configure. Should you modify one of these values,
18762 # do not forget to propagate your changes by running "Configure -der". You may
18763 # instead choose to run each of the .SH files by yourself, or "Configure -S".
18766 # Package name : $package
18767 # Source directory : $src
18768 # Configuration time: $cf_time
18769 # Configured by : $cf_by
18770 # Target system : $myuname
18780 Revision='$Revision'
18788 alignbytes='$alignbytes'
18789 ansi2knr='$ansi2knr'
18790 aphostname='$aphostname'
18791 api_revision='$api_revision'
18792 api_subversion='$api_subversion'
18793 api_version='$api_version'
18794 api_versionstring='$api_versionstring'
18797 archlibexp='$archlibexp'
18798 archname64='$archname64'
18799 archname='$archname'
18800 archobjs='$archobjs'
18801 asctime_r_proto='$asctime_r_proto'
18806 bincompat5005='$bincompat5005'
18810 byteorder='$byteorder'
18812 castflags='$castflags'
18815 cccdlflags='$cccdlflags'
18816 ccdlflags='$ccdlflags'
18818 ccflags_uselargefiles='$ccflags_uselargefiles'
18820 ccsymbols='$ccsymbols'
18821 ccversion='$ccversion'
18823 cf_email='$cf_email'
18825 charsize='$charsize'
18829 clocktype='$clocktype'
18831 compress='$compress'
18832 contains='$contains'
18836 cpp_stuff='$cpp_stuff'
18837 cppccsymbols='$cppccsymbols'
18838 cppflags='$cppflags'
18840 cppminus='$cppminus'
18842 cppstdin='$cppstdin'
18843 cppsymbols='$cppsymbols'
18844 crypt_r_proto='$crypt_r_proto'
18845 cryptlib='$cryptlib'
18847 ctermid_r_proto='$ctermid_r_proto'
18848 ctime_r_proto='$ctime_r_proto'
18849 d_Gconvert='$d_Gconvert'
18850 d_PRIEUldbl='$d_PRIEUldbl'
18851 d_PRIFUldbl='$d_PRIFUldbl'
18852 d_PRIGUldbl='$d_PRIGUldbl'
18853 d_PRIXU64='$d_PRIXU64'
18854 d_PRId64='$d_PRId64'
18855 d_PRIeldbl='$d_PRIeldbl'
18856 d_PRIfldbl='$d_PRIfldbl'
18857 d_PRIgldbl='$d_PRIgldbl'
18858 d_PRIi64='$d_PRIi64'
18859 d_PRIo64='$d_PRIo64'
18860 d_PRIu64='$d_PRIu64'
18861 d_PRIx64='$d_PRIx64'
18862 d_SCNfldbl='$d_SCNfldbl'
18863 d__fwalk='$d__fwalk'
18864 d_access='$d_access'
18865 d_accessx='$d_accessx'
18867 d_archlib='$d_archlib'
18868 d_asctime_r='$d_asctime_r'
18871 d_attribut='$d_attribut'
18874 d_bincompat5005='$d_bincompat5005'
18876 d_bsdgetpgrp='$d_bsdgetpgrp'
18877 d_bsdsetpgrp='$d_bsdsetpgrp'
18879 d_casti32='$d_casti32'
18880 d_castneg='$d_castneg'
18881 d_charvspr='$d_charvspr'
18883 d_chroot='$d_chroot'
18884 d_chsize='$d_chsize'
18886 d_closedir='$d_closedir'
18887 d_cmsghdr_s='$d_cmsghdr_s'
18890 d_crypt_r='$d_crypt_r'
18892 d_ctermid_r='$d_ctermid_r'
18893 d_ctime_r='$d_ctime_r'
18894 d_cuserid='$d_cuserid'
18895 d_dbl_dig='$d_dbl_dig'
18896 d_dbminitproto='$d_dbminitproto'
18897 d_difftime='$d_difftime'
18899 d_dirnamlen='$d_dirnamlen'
18900 d_dlerror='$d_dlerror'
18901 d_dlopen='$d_dlopen'
18902 d_dlsymun='$d_dlsymun'
18903 d_dosuid='$d_dosuid'
18904 d_drand48_r='$d_drand48_r'
18905 d_drand48proto='$d_drand48proto'
18907 d_eaccess='$d_eaccess'
18908 d_endgrent='$d_endgrent'
18909 d_endgrent_r='$d_endgrent_r'
18910 d_endhent='$d_endhent'
18911 d_endhostent_r='$d_endhostent_r'
18912 d_endnent='$d_endnent'
18913 d_endnetent_r='$d_endnetent_r'
18914 d_endpent='$d_endpent'
18915 d_endprotoent_r='$d_endprotoent_r'
18916 d_endpwent='$d_endpwent'
18917 d_endpwent_r='$d_endpwent_r'
18918 d_endsent='$d_endsent'
18919 d_endservent_r='$d_endservent_r'
18920 d_eofnblk='$d_eofnblk'
18921 d_eunice='$d_eunice'
18922 d_fchdir='$d_fchdir'
18923 d_fchmod='$d_fchmod'
18924 d_fchown='$d_fchown'
18926 d_fcntl_can_lock='$d_fcntl_can_lock'
18927 d_fd_macros='$d_fd_macros'
18928 d_fd_set='$d_fd_set'
18929 d_fds_bits='$d_fds_bits'
18930 d_fgetpos='$d_fgetpos'
18931 d_finite='$d_finite'
18932 d_finitel='$d_finitel'
18933 d_flexfnam='$d_flexfnam'
18935 d_flockproto='$d_flockproto'
18937 d_fp_class='$d_fp_class'
18938 d_fpathconf='$d_fpathconf'
18939 d_fpclass='$d_fpclass'
18940 d_fpclassify='$d_fpclassify'
18941 d_fpclassl='$d_fpclassl'
18942 d_fpos64_t='$d_fpos64_t'
18943 d_frexpl='$d_frexpl'
18944 d_fs_data_s='$d_fs_data_s'
18945 d_fseeko='$d_fseeko'
18946 d_fsetpos='$d_fsetpos'
18947 d_fstatfs='$d_fstatfs'
18948 d_fstatvfs='$d_fstatvfs'
18950 d_ftello='$d_ftello'
18952 d_getcwd='$d_getcwd'
18953 d_getespwnam='$d_getespwnam'
18954 d_getfsstat='$d_getfsstat'
18955 d_getgrent='$d_getgrent'
18956 d_getgrent_r='$d_getgrent_r'
18957 d_getgrgid_r='$d_getgrgid_r'
18958 d_getgrnam_r='$d_getgrnam_r'
18959 d_getgrps='$d_getgrps'
18960 d_gethbyaddr='$d_gethbyaddr'
18961 d_gethbyname='$d_gethbyname'
18962 d_gethent='$d_gethent'
18963 d_gethname='$d_gethname'
18964 d_gethostbyaddr_r='$d_gethostbyaddr_r'
18965 d_gethostbyname_r='$d_gethostbyname_r'
18966 d_gethostent_r='$d_gethostent_r'
18967 d_gethostprotos='$d_gethostprotos'
18968 d_getitimer='$d_getitimer'
18969 d_getlogin='$d_getlogin'
18970 d_getlogin_r='$d_getlogin_r'
18971 d_getmnt='$d_getmnt'
18972 d_getmntent='$d_getmntent'
18973 d_getnbyaddr='$d_getnbyaddr'
18974 d_getnbyname='$d_getnbyname'
18975 d_getnent='$d_getnent'
18976 d_getnetbyaddr_r='$d_getnetbyaddr_r'
18977 d_getnetbyname_r='$d_getnetbyname_r'
18978 d_getnetent_r='$d_getnetent_r'
18979 d_getnetprotos='$d_getnetprotos'
18980 d_getpagsz='$d_getpagsz'
18981 d_getpbyname='$d_getpbyname'
18982 d_getpbynumber='$d_getpbynumber'
18983 d_getpent='$d_getpent'
18984 d_getpgid='$d_getpgid'
18985 d_getpgrp2='$d_getpgrp2'
18986 d_getpgrp='$d_getpgrp'
18987 d_getppid='$d_getppid'
18988 d_getprior='$d_getprior'
18989 d_getprotobyname_r='$d_getprotobyname_r'
18990 d_getprotobynumber_r='$d_getprotobynumber_r'
18991 d_getprotoent_r='$d_getprotoent_r'
18992 d_getprotoprotos='$d_getprotoprotos'
18993 d_getprpwnam='$d_getprpwnam'
18994 d_getpwent='$d_getpwent'
18995 d_getpwent_r='$d_getpwent_r'
18996 d_getpwnam_r='$d_getpwnam_r'
18997 d_getpwuid_r='$d_getpwuid_r'
18998 d_getsbyname='$d_getsbyname'
18999 d_getsbyport='$d_getsbyport'
19000 d_getsent='$d_getsent'
19001 d_getservbyname_r='$d_getservbyname_r'
19002 d_getservbyport_r='$d_getservbyport_r'
19003 d_getservent_r='$d_getservent_r'
19004 d_getservprotos='$d_getservprotos'
19005 d_getspnam='$d_getspnam'
19006 d_getspnam_r='$d_getspnam_r'
19007 d_gettimeod='$d_gettimeod'
19008 d_gmtime_r='$d_gmtime_r'
19009 d_gnulibc='$d_gnulibc'
19010 d_grpasswd='$d_grpasswd'
19011 d_hasmntopt='$d_hasmntopt'
19014 d_inetaton='$d_inetaton'
19015 d_int64_t='$d_int64_t'
19016 d_isascii='$d_isascii'
19017 d_isfinite='$d_isfinite'
19020 d_isnanl='$d_isnanl'
19021 d_killpg='$d_killpg'
19022 d_lchown='$d_lchown'
19023 d_ldbl_dig='$d_ldbl_dig'
19025 d_localtime_r='$d_localtime_r'
19026 d_locconv='$d_locconv'
19028 d_longdbl='$d_longdbl'
19029 d_longlong='$d_longlong'
19030 d_lseekproto='$d_lseekproto'
19032 d_madvise='$d_madvise'
19034 d_mbstowcs='$d_mbstowcs'
19035 d_mbtowc='$d_mbtowc'
19036 d_memchr='$d_memchr'
19037 d_memcmp='$d_memcmp'
19038 d_memcpy='$d_memcpy'
19039 d_memmove='$d_memmove'
19040 d_memset='$d_memset'
19042 d_mkdtemp='$d_mkdtemp'
19043 d_mkfifo='$d_mkfifo'
19044 d_mkstemp='$d_mkstemp'
19045 d_mkstemps='$d_mkstemps'
19046 d_mktime='$d_mktime'
19049 d_modfl_pow32_bug='$d_modfl_pow32_bug'
19050 d_mprotect='$d_mprotect'
19052 d_msg_ctrunc='$d_msg_ctrunc'
19053 d_msg_dontroute='$d_msg_dontroute'
19054 d_msg_oob='$d_msg_oob'
19055 d_msg_peek='$d_msg_peek'
19056 d_msg_proxy='$d_msg_proxy'
19057 d_msgctl='$d_msgctl'
19058 d_msgget='$d_msgget'
19059 d_msghdr_s='$d_msghdr_s'
19060 d_msgrcv='$d_msgrcv'
19061 d_msgsnd='$d_msgsnd'
19063 d_munmap='$d_munmap'
19064 d_mymalloc='$d_mymalloc'
19066 d_nl_langinfo='$d_nl_langinfo'
19067 d_nv_preserves_uv='$d_nv_preserves_uv'
19068 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
19069 d_off64_t='$d_off64_t'
19070 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
19071 d_oldpthreads='$d_oldpthreads'
19072 d_oldsock='$d_oldsock'
19074 d_pathconf='$d_pathconf'
19076 d_perl_otherlibdirs='$d_perl_otherlibdirs'
19077 d_phostname='$d_phostname'
19080 d_portable='$d_portable'
19081 d_procselfexe='$d_procselfexe'
19082 d_pthread_atfork='$d_pthread_atfork'
19083 d_pthread_yield='$d_pthread_yield'
19085 d_pwchange='$d_pwchange'
19086 d_pwclass='$d_pwclass'
19087 d_pwcomment='$d_pwcomment'
19088 d_pwexpire='$d_pwexpire'
19089 d_pwgecos='$d_pwgecos'
19090 d_pwpasswd='$d_pwpasswd'
19091 d_pwquota='$d_pwquota'
19094 d_random_r='$d_random_r'
19095 d_readdir64_r='$d_readdir64_r'
19096 d_readdir='$d_readdir'
19097 d_readdir_r='$d_readdir_r'
19098 d_readlink='$d_readlink'
19100 d_recvmsg='$d_recvmsg'
19101 d_rename='$d_rename'
19102 d_rewinddir='$d_rewinddir'
19104 d_safebcpy='$d_safebcpy'
19105 d_safemcpy='$d_safemcpy'
19106 d_sanemcmp='$d_sanemcmp'
19107 d_sbrkproto='$d_sbrkproto'
19108 d_sched_yield='$d_sched_yield'
19109 d_scm_rights='$d_scm_rights'
19110 d_seekdir='$d_seekdir'
19111 d_select='$d_select'
19113 d_semctl='$d_semctl'
19114 d_semctl_semid_ds='$d_semctl_semid_ds'
19115 d_semctl_semun='$d_semctl_semun'
19116 d_semget='$d_semget'
19118 d_sendmsg='$d_sendmsg'
19119 d_setegid='$d_setegid'
19120 d_seteuid='$d_seteuid'
19121 d_setgrent='$d_setgrent'
19122 d_setgrent_r='$d_setgrent_r'
19123 d_setgrps='$d_setgrps'
19124 d_sethent='$d_sethent'
19125 d_sethostent_r='$d_sethostent_r'
19126 d_setitimer='$d_setitimer'
19127 d_setlinebuf='$d_setlinebuf'
19128 d_setlocale='$d_setlocale'
19129 d_setlocale_r='$d_setlocale_r'
19130 d_setnent='$d_setnent'
19131 d_setnetent_r='$d_setnetent_r'
19132 d_setpent='$d_setpent'
19133 d_setpgid='$d_setpgid'
19134 d_setpgrp2='$d_setpgrp2'
19135 d_setpgrp='$d_setpgrp'
19136 d_setprior='$d_setprior'
19137 d_setproctitle='$d_setproctitle'
19138 d_setprotoent_r='$d_setprotoent_r'
19139 d_setpwent='$d_setpwent'
19140 d_setpwent_r='$d_setpwent_r'
19141 d_setregid='$d_setregid'
19142 d_setresgid='$d_setresgid'
19143 d_setresuid='$d_setresuid'
19144 d_setreuid='$d_setreuid'
19145 d_setrgid='$d_setrgid'
19146 d_setruid='$d_setruid'
19147 d_setsent='$d_setsent'
19148 d_setservent_r='$d_setservent_r'
19149 d_setsid='$d_setsid'
19150 d_setvbuf='$d_setvbuf'
19154 d_shmatprototype='$d_shmatprototype'
19155 d_shmctl='$d_shmctl'
19157 d_shmget='$d_shmget'
19158 d_sigaction='$d_sigaction'
19159 d_sigprocmask='$d_sigprocmask'
19160 d_sigsetjmp='$d_sigsetjmp'
19161 d_sockatmark='$d_sockatmark'
19162 d_sockatmarkproto='$d_sockatmarkproto'
19163 d_socket='$d_socket'
19164 d_socklen_t='$d_socklen_t'
19165 d_sockpair='$d_sockpair'
19166 d_socks5_init='$d_socks5_init'
19168 d_srand48_r='$d_srand48_r'
19169 d_srandom_r='$d_srandom_r'
19170 d_sresgproto='$d_sresgproto'
19171 d_sresuproto='$d_sresuproto'
19172 d_statblks='$d_statblks'
19173 d_statfs_f_flags='$d_statfs_f_flags'
19174 d_statfs_s='$d_statfs_s'
19175 d_statvfs='$d_statvfs'
19176 d_stdio_cnt_lval='$d_stdio_cnt_lval'
19177 d_stdio_ptr_lval='$d_stdio_ptr_lval'
19178 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
19179 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
19180 d_stdio_stream_array='$d_stdio_stream_array'
19181 d_stdiobase='$d_stdiobase'
19182 d_stdstdio='$d_stdstdio'
19183 d_strchr='$d_strchr'
19184 d_strcoll='$d_strcoll'
19185 d_strctcpy='$d_strctcpy'
19186 d_strerrm='$d_strerrm'
19187 d_strerror='$d_strerror'
19188 d_strerror_r='$d_strerror_r'
19189 d_strftime='$d_strftime'
19190 d_strtod='$d_strtod'
19191 d_strtol='$d_strtol'
19192 d_strtold='$d_strtold'
19193 d_strtoll='$d_strtoll'
19194 d_strtoq='$d_strtoq'
19195 d_strtoul='$d_strtoul'
19196 d_strtoull='$d_strtoull'
19197 d_strtouq='$d_strtouq'
19198 d_strxfrm='$d_strxfrm'
19199 d_suidsafe='$d_suidsafe'
19200 d_symlink='$d_symlink'
19201 d_syscall='$d_syscall'
19202 d_syscallproto='$d_syscallproto'
19203 d_sysconf='$d_sysconf'
19204 d_sysernlst='$d_sysernlst'
19205 d_syserrlst='$d_syserrlst'
19206 d_system='$d_system'
19207 d_tcgetpgrp='$d_tcgetpgrp'
19208 d_tcsetpgrp='$d_tcsetpgrp'
19209 d_telldir='$d_telldir'
19210 d_telldirproto='$d_telldirproto'
19213 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
19214 d_tm_tm_zone='$d_tm_tm_zone'
19215 d_tmpnam_r='$d_tmpnam_r'
19216 d_truncate='$d_truncate'
19217 d_ttyname_r='$d_ttyname_r'
19218 d_tzname='$d_tzname'
19219 d_u32align='$d_u32align'
19220 d_ualarm='$d_ualarm'
19223 d_union_semun='$d_union_semun'
19224 d_unordered='$d_unordered'
19225 d_usleep='$d_usleep'
19226 d_usleepproto='$d_usleepproto'
19228 d_vendorarch='$d_vendorarch'
19229 d_vendorbin='$d_vendorbin'
19230 d_vendorlib='$d_vendorlib'
19232 d_void_closedir='$d_void_closedir'
19233 d_voidsig='$d_voidsig'
19234 d_voidtty='$d_voidtty'
19235 d_volatile='$d_volatile'
19236 d_vprintf='$d_vprintf'
19238 d_waitpid='$d_waitpid'
19239 d_wcstombs='$d_wcstombs'
19240 d_wctomb='$d_wctomb'
19241 d_writev='$d_writev'
19244 db_hashtype='$db_hashtype'
19245 db_prefixtype='$db_prefixtype'
19246 db_version_major='$db_version_major'
19247 db_version_minor='$db_version_minor'
19248 db_version_patch='$db_version_patch'
19249 defvoidused='$defvoidused'
19250 direntrytype='$direntrytype'
19253 doublesize='$doublesize'
19255 drand48_r_proto='$drand48_r_proto'
19256 dynamic_ext='$dynamic_ext'
19262 endgrent_r_proto='$endgrent_r_proto'
19263 endhostent_r_proto='$endhostent_r_proto'
19264 endnetent_r_proto='$endnetent_r_proto'
19265 endprotoent_r_proto='$endprotoent_r_proto'
19266 endpwent_r_proto='$endpwent_r_proto'
19267 endservent_r_proto='$endservent_r_proto'
19268 eunicefix='$eunicefix'
19271 extensions='$extensions'
19273 fflushNULL='$fflushNULL'
19274 fflushall='$fflushall'
19276 firstmakefile='$firstmakefile'
19278 fpossize='$fpossize'
19279 fpostype='$fpostype'
19280 freetype='$freetype'
19283 full_csh='$full_csh'
19284 full_sed='$full_sed'
19285 gccosandvers='$gccosandvers'
19286 gccversion='$gccversion'
19287 getgrent_r_proto='$getgrent_r_proto'
19288 getgrgid_r_proto='$getgrgid_r_proto'
19289 getgrnam_r_proto='$getgrnam_r_proto'
19290 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
19291 gethostbyname_r_proto='$gethostbyname_r_proto'
19292 gethostent_r_proto='$gethostent_r_proto'
19293 getlogin_r_proto='$getlogin_r_proto'
19294 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
19295 getnetbyname_r_proto='$getnetbyname_r_proto'
19296 getnetent_r_proto='$getnetent_r_proto'
19297 getprotobyname_r_proto='$getprotobyname_r_proto'
19298 getprotobynumber_r_proto='$getprotobynumber_r_proto'
19299 getprotoent_r_proto='$getprotoent_r_proto'
19300 getpwent_r_proto='$getpwent_r_proto'
19301 getpwnam_r_proto='$getpwnam_r_proto'
19302 getpwuid_r_proto='$getpwuid_r_proto'
19303 getservbyname_r_proto='$getservbyname_r_proto'
19304 getservbyport_r_proto='$getservbyport_r_proto'
19305 getservent_r_proto='$getservent_r_proto'
19306 getspnam_r_proto='$getspnam_r_proto'
19307 gidformat='$gidformat'
19313 gmtime_r_proto='$gmtime_r_proto'
19315 groupcat='$groupcat'
19316 groupstype='$groupstype'
19319 h_sysfile='$h_sysfile'
19330 i_arpainet='$i_arpainet'
19331 i_bsdioctl='$i_bsdioctl'
19335 i_dirent='$i_dirent'
19341 i_fp_class='$i_fp_class'
19344 i_ieeefp='$i_ieeefp'
19345 i_inttypes='$i_inttypes'
19346 i_langinfo='$i_langinfo'
19347 i_libutil='$i_libutil'
19348 i_limits='$i_limits'
19349 i_locale='$i_locale'
19350 i_machcthr='$i_machcthr'
19351 i_malloc='$i_malloc'
19353 i_memory='$i_memory'
19354 i_mntent='$i_mntent'
19357 i_neterrno='$i_neterrno'
19358 i_netinettcp='$i_netinettcp'
19362 i_pthread='$i_pthread'
19364 i_rpcsvcdbm='$i_rpcsvcdbm'
19367 i_shadow='$i_shadow'
19369 i_stdarg='$i_stdarg'
19370 i_stddef='$i_stddef'
19371 i_stdlib='$i_stdlib'
19372 i_string='$i_string'
19373 i_sunmath='$i_sunmath'
19374 i_sysaccess='$i_sysaccess'
19375 i_sysdir='$i_sysdir'
19376 i_sysfile='$i_sysfile'
19377 i_sysfilio='$i_sysfilio'
19379 i_sysioctl='$i_sysioctl'
19380 i_syslog='$i_syslog'
19381 i_sysmman='$i_sysmman'
19382 i_sysmode='$i_sysmode'
19383 i_sysmount='$i_sysmount'
19384 i_sysndir='$i_sysndir'
19385 i_sysparam='$i_sysparam'
19386 i_sysresrc='$i_sysresrc'
19387 i_syssecrt='$i_syssecrt'
19388 i_sysselct='$i_sysselct'
19389 i_syssockio='$i_syssockio'
19390 i_sysstat='$i_sysstat'
19391 i_sysstatfs='$i_sysstatfs'
19392 i_sysstatvfs='$i_sysstatvfs'
19393 i_systime='$i_systime'
19394 i_systimek='$i_systimek'
19395 i_systimes='$i_systimes'
19396 i_systypes='$i_systypes'
19397 i_sysuio='$i_sysuio'
19399 i_sysutsname='$i_sysutsname'
19400 i_sysvfs='$i_sysvfs'
19401 i_syswait='$i_syswait'
19402 i_termio='$i_termio'
19403 i_termios='$i_termios'
19405 i_unistd='$i_unistd'
19408 i_values='$i_values'
19409 i_varargs='$i_varargs'
19410 i_varhdr='$i_varhdr'
19412 ignore_versioned_solibs='$ignore_versioned_solibs'
19413 inc_version_list='$inc_version_list'
19414 inc_version_list_init='$inc_version_list_init'
19417 installarchlib='$installarchlib'
19418 installbin='$installbin'
19419 installman1dir='$installman1dir'
19420 installman3dir='$installman3dir'
19421 installprefix='$installprefix'
19422 installprefixexp='$installprefixexp'
19423 installprivlib='$installprivlib'
19424 installscript='$installscript'
19425 installsitearch='$installsitearch'
19426 installsitebin='$installsitebin'
19427 installsitelib='$installsitelib'
19428 installstyle='$installstyle'
19429 installusrbinperl='$installusrbinperl'
19430 installvendorarch='$installvendorarch'
19431 installvendorbin='$installvendorbin'
19432 installvendorlib='$installvendorlib'
19434 issymlink='$issymlink'
19435 ivdformat='$ivdformat'
19438 known_extensions='$known_extensions'
19441 lddlflags='$lddlflags'
19443 ldflags_uselargefiles='$ldflags_uselargefiles'
19444 ldlibpthname='$ldlibpthname'
19451 libsdirs='$libsdirs'
19452 libsfiles='$libsfiles'
19453 libsfound='$libsfound'
19454 libspath='$libspath'
19455 libswanted='$libswanted'
19456 libswanted_uselargefiles='$libswanted_uselargefiles'
19462 localtime_r_proto='$localtime_r_proto'
19463 locincpth='$locincpth'
19464 loclibpth='$loclibpth'
19465 longdblsize='$longdblsize'
19466 longlongsize='$longlongsize'
19467 longsize='$longsize'
19471 lseeksize='$lseeksize'
19472 lseektype='$lseektype'
19476 make_set_make='$make_set_make'
19477 mallocobj='$mallocobj'
19478 mallocsrc='$mallocsrc'
19479 malloctype='$malloctype'
19481 man1direxp='$man1direxp'
19484 man3direxp='$man3direxp'
19486 mips_type='$mips_type'
19488 mmaptype='$mmaptype'
19489 modetype='$modetype'
19491 multiarch='$multiarch'
19493 myarchname='$myarchname'
19494 mydomain='$mydomain'
19495 myhostname='$myhostname'
19498 need_va_copy='$need_va_copy'
19499 netdb_hlen_type='$netdb_hlen_type'
19500 netdb_host_type='$netdb_host_type'
19501 netdb_name_type='$netdb_name_type'
19502 netdb_net_type='$netdb_net_type'
19505 nm_so_opt='$nm_so_opt'
19506 nonxs_ext='$nonxs_ext'
19508 nvEUformat='$nvEUformat'
19509 nvFUformat='$nvFUformat'
19510 nvGUformat='$nvGUformat'
19511 nveformat='$nveformat'
19512 nvfformat='$nvfformat'
19513 nvgformat='$nvgformat'
19516 o_nonblock='$o_nonblock'
19518 old_pthread_create_joinable='$old_pthread_create_joinable'
19519 optimize='$optimize'
19520 orderlib='$orderlib'
19523 otherlibdirs='$otherlibdirs'
19527 patchlevel='$patchlevel'
19528 path_sep='$path_sep'
19531 perl_patchlevel='$perl_patchlevel'
19532 perladmin='$perladmin'
19533 perllibs='$perllibs'
19534 perlpath='$perlpath'
19536 phostname='$phostname'
19539 pm_apiversion='$pm_apiversion'
19543 prefixexp='$prefixexp'
19545 privlibexp='$privlibexp'
19546 procselfexe='$procselfexe'
19547 prototype='$prototype'
19549 quadkind='$quadkind'
19550 quadtype='$quadtype'
19551 randbits='$randbits'
19552 randfunc='$randfunc'
19553 random_r_proto='$random_r_proto'
19554 randseedtype='$randseedtype'
19556 rd_nodata='$rd_nodata'
19557 readdir64_r_proto='$readdir64_r_proto'
19558 readdir_r_proto='$readdir_r_proto'
19559 revision='$revision'
19564 sPRIEUldbl='$sPRIEUldbl'
19565 sPRIFUldbl='$sPRIFUldbl'
19566 sPRIGUldbl='$sPRIGUldbl'
19567 sPRIXU64='$sPRIXU64'
19569 sPRIeldbl='$sPRIeldbl'
19570 sPRIfldbl='$sPRIfldbl'
19571 sPRIgldbl='$sPRIgldbl'
19576 sSCNfldbl='$sSCNfldbl'
19577 sched_yield='$sched_yield'
19578 scriptdir='$scriptdir'
19579 scriptdirexp='$scriptdirexp'
19581 seedfunc='$seedfunc'
19582 selectminbits='$selectminbits'
19583 selecttype='$selecttype'
19584 sendmail='$sendmail'
19585 setgrent_r_proto='$setgrent_r_proto'
19586 sethostent_r_proto='$sethostent_r_proto'
19587 setlocale_r_proto='$setlocale_r_proto'
19588 setnetent_r_proto='$setnetent_r_proto'
19589 setprotoent_r_proto='$setprotoent_r_proto'
19590 setpwent_r_proto='$setpwent_r_proto'
19591 setservent_r_proto='$setservent_r_proto'
19594 sharpbang='$sharpbang'
19595 shmattype='$shmattype'
19596 shortsize='$shortsize'
19599 sig_count='$sig_count'
19600 sig_name='$sig_name'
19601 sig_name_init='$sig_name_init'
19603 sig_num_init='$sig_num_init'
19604 sig_size='$sig_size'
19605 signal_t='$signal_t'
19606 sitearch='$sitearch'
19607 sitearchexp='$sitearchexp'
19609 sitebinexp='$sitebinexp'
19611 sitelib_stem='$sitelib_stem'
19612 sitelibexp='$sitelibexp'
19613 siteprefix='$siteprefix'
19614 siteprefixexp='$siteprefixexp'
19615 sizesize='$sizesize'
19616 sizetype='$sizetype'
19620 sockethdr='$sockethdr'
19621 socketlib='$socketlib'
19622 socksizetype='$socksizetype'
19624 spackage='$spackage'
19625 spitshell='$spitshell'
19626 srand48_r_proto='$srand48_r_proto'
19627 srandom_r_proto='$srandom_r_proto'
19629 ssizetype='$ssizetype'
19630 startperl='$startperl'
19632 static_ext='$static_ext'
19634 stdio_base='$stdio_base'
19635 stdio_bufsiz='$stdio_bufsiz'
19636 stdio_cnt='$stdio_cnt'
19637 stdio_filbuf='$stdio_filbuf'
19638 stdio_ptr='$stdio_ptr'
19639 stdio_stream_array='$stdio_stream_array'
19640 strerror_r_proto='$strerror_r_proto'
19643 subversion='$subversion'
19647 targetarch='$targetarch'
19651 timeincl='$timeincl'
19652 timetype='$timetype'
19653 tmpnam_r_proto='$tmpnam_r_proto'
19659 ttyname_r_proto='$ttyname_r_proto'
19668 uidformat='$uidformat'
19674 uquadtype='$uquadtype'
19675 use5005threads='$use5005threads'
19676 use64bitall='$use64bitall'
19677 use64bitint='$use64bitint'
19678 usecrosscompile='$usecrosscompile'
19680 useithreads='$useithreads'
19681 uselargefiles='$uselargefiles'
19682 uselongdouble='$uselongdouble'
19683 usemorebits='$usemorebits'
19684 usemultiplicity='$usemultiplicity'
19685 usemymalloc='$usemymalloc'
19687 useopcode='$useopcode'
19688 useperlio='$useperlio'
19689 useposix='$useposix'
19690 usereentrant='$usereentrant'
19692 useshrplib='$useshrplib'
19693 usesocks='$usesocks'
19694 usethreads='$usethreads'
19695 usevendorprefix='$usevendorprefix'
19696 usevfork='$usevfork'
19699 uvXUformat='$uvXUformat'
19700 uvoformat='$uvoformat'
19703 uvuformat='$uvuformat'
19704 uvxformat='$uvxformat'
19705 vendorarch='$vendorarch'
19706 vendorarchexp='$vendorarchexp'
19707 vendorbin='$vendorbin'
19708 vendorbinexp='$vendorbinexp'
19709 vendorlib='$vendorlib'
19710 vendorlib_stem='$vendorlib_stem'
19711 vendorlibexp='$vendorlibexp'
19712 vendorprefix='$vendorprefix'
19713 vendorprefixexp='$vendorprefixexp'
19715 version_patchlevel_string='$version_patchlevel_string'
19716 versiononly='$versiononly'
19718 voidflags='$voidflags'
19720 xs_apiversion='$xs_apiversion'
19722 yaccflags='$yaccflags'
19727 : Add in command line options if available
19728 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
19730 : add special variables
19731 $test -f $src/patchlevel.h && \
19732 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
19733 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
19734 echo "PERL_CONFIG_SH=true" >>config.sh
19736 : propagate old symbols
19737 if $test -f UU/config.sh; then
19738 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
19739 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
19740 $sort | $uniq -u >UU/oldsyms
19741 set X `cat UU/oldsyms`
19747 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
19749 echo "# Variables propagated from previous config.sh file." >>config.sh
19750 for sym in `cat UU/oldsyms`; do
19751 echo " Propagating $hint variable "'$'"$sym..."
19752 eval 'tmp="$'"${sym}"'"'
19754 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
19760 : Finish up by extracting the .SH files
19764 echo "Extraction done."
19774 If you'd like to make any changes to the config.sh file before I begin
19775 to configure things, do it as a shell escape now (e.g. !vi config.sh).
19778 rp="Press return or use a shell escape to edit config.sh:"
19783 *) : in case they cannot read
19784 sh 1>&4 -c "$ans";;
19789 : if this fails, just run all the .SH files by hand
19798 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
19805 Now you need to generate make dependencies by running "$make depend".
19806 You might prefer to run it in background: "$make depend > makedepend.out &"
19807 It can take a while, so you might not want to run it right now.
19812 rp="Run $make depend now?"
19816 $make depend && echo "Now you must run '$make'."
19819 echo "You must run '$make depend' then '$make'."
19822 elif test -f [Mm]akefile; then
19824 echo "Now you must run a $make."
19826 echo "Configure done."
19829 if $test -f Policy.sh; then
19832 If you compile $package on a different machine or from a different object
19833 directory, copy the Policy.sh file from this object directory to the
19834 new one before you run Configure -- this will help you with most of
19835 the policy defaults.
19839 if $test -f config.msg; then
19840 echo "Hmm. I also noted the following information while running:"
19842 $cat config.msg >&4
19845 $rm -f kit*isdone ark*isdone