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 Thu Apr 4 20:10:51 EET DST 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=''
978 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;
2391 if $test -f usethreads.cbu; then
2394 *** However, any setting of the C compiler flags (e.g. for thread support)
2395 *** has been lost. It may be necessary to pass -Dcc=gcc to Configure
2396 *** (together with e.g. -Dusethreads).
2412 cat <<'EOSC' >>checkcc
2417 int main(int argc, char *argv[]) {
2421 if $cc -o try $ccflags $ldflags try.c; then
2424 if $test X"$despair" = Xyes; then
2425 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2428 You need to find a working C compiler.
2429 Either (purchase and) install the C compiler supplied by your OS vendor,
2430 or for a free C compiler try http://gcc.gnu.org/
2431 I cannot continue any further, aborting.
2440 : determine whether symbolic links are supported
2443 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2444 echo "Symbolic links are supported." >&4
2447 echo "Symbolic links are NOT supported." >&4
2452 : determine whether symbolic links are supported
2456 echo "Checking how to test for symbolic links..." >&4
2458 if $test "X$issymlink" = X; then
2460 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2461 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2463 if test $? = 0; then
2466 echo "Your builtin 'test -h' may be broken." >&4
2469 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2472 if test -f "$p/$test"; then
2481 echo "Trying external '$test -h'." >&4
2482 issymlink="$test -h"
2483 if $test ! -h sym >/dev/null 2>&1; then
2484 echo "External '$test -h' is broken, too." >&4
2492 if $test "X$issymlink" = X; then
2493 if $test -L sym 2>/dev/null; then
2494 issymlink="$test -L"
2495 echo "The builtin '$test -L' worked." >&4
2498 if $test "X$issymlink" != X; then
2499 echo "You can test for symbolic links with '$issymlink'." >&4
2501 echo "I do not know how you can test for symbolic links." >&4
2505 *) echo "No symbolic links, so not testing for their testing..." >&4
2511 case "$mksymlinks" in
2514 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2517 *) case "$lns:$issymlink" in
2518 *"ln"*" -s:"*"test -"?)
2519 echo "Creating the symbolic links..." >&4
2520 echo "(First creating the subdirectories...)" >&4
2522 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2524 test -z "$directory" && break
2528 if test ! -d t/base; then
2529 echo "Failed to create the subdirectories. Aborting." >&4
2532 echo "(Then creating the symlinks...)" >&4
2533 awk '{print $1}' $src/MANIFEST | while true; do
2535 test -z "$filename" && break
2536 if test -f $filename; then
2537 if $issymlink $filename; then
2541 if test -f $filename; then
2542 echo "$filename already exists, not symlinking."
2544 ln -s $src/$filename $filename
2548 if test ! -f t/base/lex.t; then
2549 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
2554 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2563 case "$usecrosscompile" in
2565 $echo "Cross-compiling..."
2568 *-*-gcc) # A cross-compiling gcc, probably.
2569 targetarch=`$echo $cc|$sed 's/-gcc$//'`
2571 # leave out ld, choosing it is more complex
2573 ranlib=$targetarch-ranlib
2574 $echo 'extern int foo;' > try.c
2575 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2577 if $test $# -gt 0; then
2579 incpth="`$echo $incpth|$sed 's/^ //'`"
2580 echo "Guessing incpth '$incpth'." >&4
2582 j="`$echo $i|$sed 's,/include$,/lib,'`"
2583 if $test -d $j; then
2587 libpth="`$echo $libpth|$sed 's/^ //'`"
2588 echo "Guessing libpth '$libpth'." >&4
2593 case "$targetarch" in
2594 '') echo "Targetarch not defined." >&4; croak=y ;;
2595 *) echo "Using targetarch $targetarch." >&4 ;;
2598 '') echo "Incpth not defined." >&4; croak=y ;;
2599 *) echo "Using incpth '$incpth'." >&4 ;;
2602 '') echo "Libpth not defined." >&4; croak=y ;;
2603 *) echo "Using libpth '$libpth'." >&4 ;;
2606 '') for i in $incpth; do
2607 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2609 echo "Guessing usrinc $usrinc." >&4
2614 '') echo "Usrinc not defined." >&4; croak=y ;;
2617 *) echo "Using usrinc $usrinc." >&4 ;;
2619 case "$targethost" in
2620 '') echo "Targethost not defined." >&4; croak=y ;;
2621 *) echo "Using targethost $targethost." >&4
2626 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2629 /*) run=$src/Cross/run
2630 targetmkdir=$src/Cross/mkdir
2632 from=$src/Cross/from
2634 *) pwd=`$test -f ../Configure & cd ..; pwd`
2636 targetmkdir=$pwd/Cross/mkdir
2638 from=$pwd/Cross/from
2641 case "$targetrun" in
2642 '') targetrun=ssh ;;
2647 case "$targetfrom" in
2648 '') targetfrom=scp ;;
2652 from=$from-$targetfrom
2653 case "$targetdir" in
2655 echo "Guessing targetdir $targetdir." >&4
2658 case "$targetuser" in
2660 echo "Guessing targetuser $targetuser." >&4
2663 case "$targetfrom" in
2667 case "$targetrun" in
2679 '') cwd=$targetdir ;;
2683 if $test ! -f \$exe.xok; then
2687 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2690 *) echo "Unknown targetrun '$targetrun'" >&4
2694 case "$targetmkdir" in
2696 cat >$targetmkdir <<EOF
2698 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2700 $chmod a+rx $targetmkdir
2702 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2714 $targetmkdir \`dirname \$f\`
2715 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2718 $targetmkdir $targetdir/\`dirname \$f\`
2719 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2732 $mkdir -p $targetdir/\`dirname \$f\`
2733 $cp \$f $targetdir/\$f || exit 1
2736 $targetmkdir $targetdir/\`dirname \$f\`
2737 $cp \$f $targetdir/\$f || exit 1
2744 *) echo "Unknown targetto '$targetto'" >&4
2748 case "$targetfrom" in
2755 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2760 cp) cat >$from <<EOF
2765 cp $targetdir/\$f . || exit 1
2770 *) echo "Unknown targetfrom '$targetfrom'" >&4
2774 if $test ! -f $run; then
2775 echo "Target 'run' script '$run' not found." >&4
2779 if $test ! -f $to; then
2780 echo "Target 'to' script '$to' not found." >&4
2784 if $test ! -f $from; then
2785 echo "Target 'from' script '$from' not found." >&4
2789 if $test ! -f $run -o ! -f $to -o ! -f $from; then
2793 Using '$run' for remote execution,
2794 and '$from' and '$to'
2795 for remote file transfer.
2801 usecrosscompile='undef'
2806 : see whether [:lower:] and [:upper:] are supported character classes
2808 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2810 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2814 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2815 # (0xc9 and 0xd1), therefore that is a nice testing point.
2816 if test "X$up" = X -o "X$low" = X; then
2817 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2823 if test "X$up" = X -o "X$low" = X; then
2824 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2830 if test "X$up" = X -o "X$low" = X; then
2831 case "`echo IJ | od -x 2>/dev/null`" in
2833 echo "Hey, this might be EBCDIC." >&4
2834 if test "X$up" = X -o "X$low" = X; then
2835 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2836 ij) up='[A-IJ-RS-Z]'
2841 if test "X$up" = X -o "X$low" = X; then
2842 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2852 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2854 echo "Using $up and $low to convert case." >&4
2857 echo "I don't know how to translate letters from upper to lower case." >&4
2858 echo "Your tr is not acting any way I know of." >&4
2862 : set up the translation script tr, must be called with ./tr of course
2866 '[A-Z][a-z]') exec $tr '$up' '$low';;
2867 '[a-z][A-Z]') exec $tr '$low' '$up';;
2874 : Try to determine whether config.sh was made on this system
2875 case "$config_sh" in
2877 myuname=`$uname -a 2>/dev/null`
2878 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2879 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2880 # because the A-Z/a-z are not consecutive.
2881 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2882 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2883 newmyuname="$myuname"
2885 case "$knowitall" in
2887 if test -f ../config.sh; then
2888 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2889 eval "`grep myuname= ../config.sh`"
2891 if test "X$myuname" = "X$newmyuname"; then
2899 : Get old answers from old config file if Configure was run on the
2900 : same system, otherwise use the hints.
2903 if test -f config.sh; then
2905 rp="I see a config.sh file. Shall I use it to set the defaults?"
2908 n*|N*) echo "OK, I'll ignore it."
2909 mv config.sh config.sh.old
2910 myuname="$newmyuname"
2912 *) echo "Fetching default answers from your old config.sh file..." >&4
2920 : Older versions did not always set $sh. Catch re-use of such
2930 if test ! -f config.sh; then
2933 First time through, eh? I have some defaults handy for some systems
2934 that need some extra help getting the Configure answers right:
2937 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2939 : Half the following guesses are probably wrong... If you have better
2940 : tests or hints, please send them to perlbug@perl.org
2941 : The metaconfig authors would also appreciate a copy...
2942 $test -f /irix && osname=irix
2943 $test -f /xenix && osname=sco_xenix
2944 $test -f /dynix && osname=dynix
2945 $test -f /dnix && osname=dnix
2946 $test -f /lynx.os && osname=lynxos
2947 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2948 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2949 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2950 $test -f /bin/mips && /bin/mips && osname=mips
2951 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2952 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2953 $test -d /usr/apollo/bin && osname=apollo
2954 $test -f /etc/saf/_sactab && osname=svr4
2955 $test -d /usr/include/minix && osname=minix
2956 $test -f /system/gnu_library/bin/ar.pm && osname=vos
2957 if $test -d /MachTen -o -d /MachTen_Folder; then
2959 if $test -x /sbin/version; then
2960 osvers=`/sbin/version | $awk '{print $2}' |
2961 $sed -e 's/[A-Za-z]$//'`
2962 elif $test -x /usr/etc/version; then
2963 osvers=`/usr/etc/version | $awk '{print $2}' |
2964 $sed -e 's/[A-Za-z]$//'`
2970 $test -f /sys/posix.dll &&
2971 $test -f /usr/bin/what &&
2972 set X `/usr/bin/what /sys/posix.dll` &&
2973 $test "$3" = UWIN &&
2977 if $test -f $uname; then
2985 umips) osname=umips ;;
2988 [23]100) osname=mips ;;
2989 next*) osname=next ;;
2991 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2992 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2995 elif $test -f /etc/kconfig; then
2997 if test "$lns" = "$ln -s"; then
2999 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3001 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3008 if test -n "$DJGPP"; then
3017 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3019 'not found') osvers="$4"."$3" ;;
3020 '<3240'|'<>3240') osvers=3.2.0 ;;
3021 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3022 '=3250'|'>3250') osvers=3.2.5 ;;
3026 bsd386) osname=bsd386
3029 cygwin*) osname=cygwin
3032 *dc.osx) osname=dcosx
3038 domainos) osname=apollo
3044 dynixptx*) osname=dynixptx
3045 osvers=`echo "$4"|sed 's/^v//'`
3047 freebsd) osname=freebsd
3049 genix) osname=genix ;;
3051 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3067 netbsd*) osname=netbsd
3070 news-os) osvers="$3"
3072 4*) osname=newsos4 ;;
3076 next*) osname=next ;;
3077 nonstop-ux) osname=nonstopux ;;
3078 POSIX-BC | posix-bc ) osname=posix-bc
3081 powerux | power_ux | powermax_os | powermaxos | \
3082 powerunix | power_unix) osname=powerux
3088 solaris) osname=solaris
3090 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3097 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3101 titanos) osname=titanos
3110 ultrix) osname=ultrix
3113 osf1|mls+) case "$5" in
3116 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3119 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3122 hp*) osname=hp_osf1 ;;
3123 mips) osname=mips_osf1 ;;
3126 unixware) osname=svr5
3134 $2) case "$osname" in
3138 : svr4.x or possibly later
3148 if test -f /stand/boot ; then
3149 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3150 if test -n "$INITPROG" -a -f "$INITPROG"; then
3151 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3152 if test -n "$isesix"; then
3160 *) if test -f /etc/systemid; then
3162 set `echo $3 | $sed 's/\./ /g'` $4
3163 if $test -f $src/hints/sco_$1_$2_$3.sh; then
3165 elif $test -f $src/hints/sco_$1_$2.sh; then
3167 elif $test -f $src/hints/sco_$1.sh; then
3172 '') : Still unknown. Probably a generic Sys V.
3181 *) case "$osname" in
3182 '') : Still unknown. Probably a generic BSD.
3190 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3191 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3192 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3195 $rm -f UU/kernel.what
3196 elif test -d c:/.; then
3203 case "$targetarch" in
3206 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3211 : Now look for a hint file osname_osvers, unless one has been
3212 : specified already.
3215 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3216 : Also try without trailing minor version numbers.
3217 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3218 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3219 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3220 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3223 *) case "$osvers" in
3226 *) if $test -f $src/hints/$file.sh ; then
3228 elif $test -f $src/hints/$xfile.sh ; then
3230 elif $test -f $src/hints/$xxfile.sh ; then
3232 elif $test -f $src/hints/$xxxfile.sh ; then
3234 elif $test -f $src/hints/$xxxxfile.sh ; then
3236 elif $test -f "$src/hints/${osname}.sh" ; then
3245 if $test -f Policy.sh ; then
3248 none) dflt="Policy" ;;
3249 *) dflt="Policy $dflt" ;;
3254 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3258 if $test -f Policy.sh ; then
3261 There's also a Policy hint file available, which should make the
3262 site-specific (policy) questions easier to answer.
3269 You may give one or more space-separated answers, or "none" if appropriate.
3270 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3271 is a good thing. DO NOT give a wrong version or a wrong OS.
3275 rp="Which of these apply, if any?"
3278 for file in $tans; do
3279 if $test X$file = XPolicy -a -f Policy.sh; then
3281 $cat Policy.sh >> UU/config.sh
3282 elif $test -f $src/hints/$file.sh; then
3283 . $src/hints/$file.sh
3284 $cat $src/hints/$file.sh >> UU/config.sh
3285 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3288 : Give one chance to correct a possible typo.
3289 echo "$file.sh does not exist"
3291 rp="hint to use instead?"
3293 for file in $ans; do
3294 if $test -f "$src/hints/$file.sh"; then
3295 . $src/hints/$file.sh
3296 $cat $src/hints/$file.sh >> UU/config.sh
3297 elif $test X$ans = X -o X$ans = Xnone ; then
3300 echo "$file.sh does not exist -- ignored."
3307 : Remember our hint file for later.
3308 if $test -f "$src/hints/$file.sh" ; then
3318 echo "Fetching default answers from $config_sh..." >&4
3322 cp $config_sh config.sh 2>/dev/null
3332 test "$override" && . ./optdef.sh
3334 : Restore computed paths
3335 for file in $loclist $trylist; do
3336 eval $file="\$_$file"
3341 Configure uses the operating system name and version to set some defaults.
3342 The default value is probably right if the name rings a bell. Otherwise,
3343 since spelling matters for me, either accept the default or answer "none"
3350 ''|' '|none) dflt=none ;;
3351 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3354 *) dflt="$osname" ;;
3356 rp="Operating system name?"
3360 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3366 ''|' '|none) dflt=none ;;
3367 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3368 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3370 ''|' ') dflt=none ;;
3375 *) dflt="$osvers" ;;
3377 rp="Operating system version?"
3387 : who configured the system
3388 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3389 cf_by=`(logname) 2>/dev/null`
3392 cf_by=`(whoami) 2>/dev/null`
3394 "") cf_by=unknown ;;
3398 : set up the script used to warn in case of inconsistency
3405 echo "*** WHOA THERE!!! ***" >&4
3406 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3407 rp=" Keep the $hint value?"
3410 y) td=$was; tu=$was;;
3414 : function used to set $1 to $val
3415 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3417 $define$undef) . ./whoa; eval "$var=\$td";;
3418 $undef$define) . ./whoa; eval "$var=\$tu";;
3419 *) eval "$var=$val";;
3422 case "$usethreads" in
3423 $define|true|[yY]*) dflt='y';;
3424 *) # Catch case where user specified ithreads or 5005threads but
3425 # forgot -Dusethreads (A.D. 4/2002)
3426 case "$useithreads$use5005threads" in
3427 *$define*) dflt='y' ;;
3434 Perl can be built to take advantage of threads on some systems.
3435 To do so, Configure can be run with -Dusethreads.
3437 Note that threading is a highly experimental feature, and
3438 some known race conditions still remain. If you choose to try
3439 it, be very sure to not actually deploy it for production
3440 purposes. README.threads has more details, and is required
3441 reading if you enable threads.
3443 If this doesn't make any sense to you, just accept the default '$dflt'.
3445 rp='Build a threading Perl?'
3448 y|Y) val="$define" ;;
3454 case "$usethreads" in
3458 As of release 5.6, Perl has two different threading implementations,
3459 an interpreter-based version (ithreads) with one interpreter per
3460 thread, and the 5.005 version (5005threads). Both implementations
3461 are considered experimental, but since 5.8 ithreads somewhat less so.
3462 The 5005threads is effectively unmaintained.
3465 : Default to ithreads unless overridden on command line or with
3468 case "$use5005threads" in
3469 $define|true|[yY]*) dflt='n';;
3471 case "$useithreads" in
3472 $undef|false|[nN]*) dflt='n';;
3474 rp='Use interpreter-based ithreads?'
3477 y|Y) val="$define" ;;
3482 : Now set use5005threads to the opposite value.
3483 case "$useithreads" in
3484 $define) val="$undef" ;;
3491 useithreads="$undef"
3492 use5005threads="$undef"
3496 case "$useithreads$use5005threads" in
3500 You cannot have both the ithreads and the 5.005 threads enabled
3501 at the same time. Disabling the 5.005 threads since they are
3502 much less stable than the ithreads.
3505 use5005threads="$undef"
3509 case "$d_oldpthreads" in
3510 '') : Configure tests would be welcome here. For now, assume undef.
3512 *) val="$d_oldpthreads" ;;
3518 case "$usethreads" in
3519 "$define"|true|[yY]*)
3520 : Look for a hint-file generated 'call-back-unit'. If the
3521 : user has specified that a threading perl is to be built,
3522 : we may need to set or change some other defaults.
3523 if $test -f usethreads.cbu; then
3524 echo "Your platform has some specific hints for threaded builds, using them..."
3528 (Your platform doesn't have any specific hints for threaded builds.
3529 Assuming POSIX threads, then.)
3537 Perl can be built so that multiple Perl interpreters can coexist
3538 within the same Perl executable.
3541 case "$useithreads" in
3544 This multiple interpreter support is required for interpreter-based threads.
3548 *) case "$usemultiplicity" in
3549 $define|true|[yY]*) dflt='y';;
3553 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3554 rp='Build Perl for multiplicity?'
3557 y|Y) val="$define" ;;
3566 case "$usemorebits" in
3567 "$define"|true|[yY]*)
3568 use64bitint="$define"
3569 uselongdouble="$define"
3570 usemorebits="$define"
3572 *) usemorebits="$undef"
3576 : make some quick guesses about what we are up against
3578 $echo $n "Hmm... $c"
3588 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3589 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3591 echo "Looks kind of like an OSF/1 system, but we'll see..."
3593 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3594 xxx=`./loc addbib blurfl $pth`
3595 if $test -f $xxx; then
3596 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3600 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3601 echo "Looks kind of like an extended USG system, but we'll see..."
3603 echo "Looks kind of like a USG system, but we'll see..."
3607 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3608 echo "Looks kind of like a BSD system, but we'll see..."
3612 echo "Looks kind of like a Version 7 system, but we'll see..."
3615 case "$eunicefix" in
3618 There is, however, a strange, musty smell in the air that reminds me of
3619 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3623 : it so happens the Eunice I know will not run shell scripts in Unix format
3627 echo "Congratulations. You aren't running Eunice."
3631 : Detect OS2. The p_ variable is set above in the Head.U unit.
3632 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3633 : semicolon as a patch separator
3638 I have the feeling something is not exactly right, however...don't tell me...
3639 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3640 (Or you may be running DOS with DJGPP.)
3645 if test -f /xenix; then
3646 echo "Actually, this looks more like a XENIX system..."
3651 echo "It's not Xenix..."
3656 if test -f /venix; then
3657 echo "Actually, this looks more like a VENIX system..."
3664 echo "Nor is it Venix..."
3667 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3668 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3675 rp="Use which C compiler?"
3679 : See if they have not cc but they do have gcc
3681 : Look for a hint-file generated 'call-back-unit'. Now that the
3682 : user has specified the compiler, we may need to set or change some
3684 if $test -f cc.cbu; then
3690 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3696 printf("%s\n", __VERSION__);
3698 printf("%s\n", "1");
3704 if $cc -o try $ccflags $ldflags try.c; then
3705 gccversion=`$run ./try`
3706 case "$gccversion" in
3707 '') echo "You are not using GNU cc." ;;
3708 *) echo "You are using GNU cc $gccversion."
3714 echo "*** WHOA THERE!!! ***" >&4
3715 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3716 case "$knowitall" in
3718 echo " You'd better start hunting for one and let me know about it." >&4
3724 case "$gccversion" in
3725 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3727 case "$gccversion" in
3728 '') gccosandvers='' ;;
3729 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3730 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3732 case "$gccosandvers" in
3733 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3734 $osname$osvers) ;; # looking good
3735 $osname*) cat <<EOM >&4
3737 *** WHOA THERE!!! ***
3739 Your gcc has not been compiled for the exact release of
3740 your operating system ($gccosandvers versus $osname$osvers).
3742 In general it is a good idea to keep gcc synchronized with
3743 the operating system because otherwise serious problems
3744 may ensue when trying to compile software, like Perl.
3746 I'm trying to be optimistic here, though, and will continue.
3747 If later during the configuration and build icky compilation
3748 problems appear (headerfile conflicts being the most common
3749 manifestation), I suggest reinstalling the gcc to match
3750 your operating system release.
3754 *) gccosandvers='' ;; # failed to parse, better be silent
3763 : decide how portable to be. Allow command line overrides.
3764 case "$d_portable" in
3766 *) d_portable="$define" ;;
3769 : set up shell script to do ~ expansion
3775 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3778 if $test -f /bin/csh; then
3779 /bin/csh -f -c "glob \$1"
3784 name=\`$expr x\$1 : '..\([^/]*\)'\`
3785 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3786 if $test ! -d "\$dir"; then
3788 echo "\$me: can't locate home directory for: \$name" >&2
3793 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3809 : now set up to get a file name
3813 cat <<'EOSC' >>getfile
3829 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3830 fn=`echo $fn | sed 's/(.*)//'`
3836 loc_file=`expr $fn : '.*:\(.*\)'`
3837 fn=`expr $fn : '\(.*\):.*'`
3845 */*) fullpath=true;;
3854 *e*) exp_file=true;;
3857 *p*) nopath_ok=true;;
3862 *d*) type='Directory';;
3863 *l*) type='Locate';;
3868 Locate) what='File';;
3873 case "$d_portable" in
3881 while test "$type"; do
3886 true) rp="$rp (~name ok)";;
3889 if test -f UU/getfile.ok && \
3890 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3909 value=`UU/filexp $ans`
3912 if test "$ans" != "$value"; then
3913 echo "(That expands to $value on this system.)"
3927 /*) value="$ansexp" ;;
3928 [a-zA-Z]:/*) value="$ansexp" ;;
3933 echo "I shall only accept a full path name, as in /bin/ls." >&4
3934 echo "Use a ! shell escape if you wish to check pathnames." >&4
3937 echo "Please give a full path name, starting with slash." >&4
3940 echo "Note that using ~name is ok provided it expands well." >&4
3953 for fp in $gfpth; do
3954 if test "X$fp" = X.; then
3959 if test -f "$pf"; then
3961 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3963 echo "($value is not a plain file, but that's ok.)"
3966 if test X"$type" = X; then
3973 for fp in $gfpth; do
3974 if test "X$fp" = X.; then
3979 direxp="$fp/$ansexp"
3981 if test -d "$direxp"; then
3989 if test -d "$ansexp"; then
3990 echo "(Looking for $loc_file in directory $value.)"
3991 value="$value/$loc_file"
3992 ansexp="$ansexp/$loc_file"
3994 if test -f "$ansexp"; then
3997 case "$nopath_ok" in
3998 true) case "$value" in
4000 *) echo "Assuming $value will be in people's path."
4016 if test "$fastread" = yes; then
4021 rp="$what $value doesn't exist. Use that name anyway?"
4040 test "X$gfpthkeep" != Xy && gfpth=""
4043 : What should the include directory be ?
4045 $echo $n "Hmm... $c"
4049 if $test -f /bin/mips && /bin/mips; then
4050 echo "Looks like a MIPS system..."
4051 $cat >usr.c <<'EOCP'
4052 #ifdef SYSTYPE_BSD43
4056 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4057 dflt='/bsd43/usr/include'
4061 mips_type='System V'
4063 $rm -f usr.c usr.out
4064 echo "and you're compiling with the $mips_type compiler and libraries."
4068 echo "Doesn't look like a MIPS system."
4078 case "$xxx_prompt" in
4081 rp='Where are the include files you want to use?'
4089 : see how we invoke the C preprocessor
4091 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4092 cat <<'EOT' >testcpp.c
4098 if test ! -f cppstdin; then
4099 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4100 # AIX cc -E doesn't show the absolute headerfile
4101 # locations but we'll cheat by using the -M flag.
4102 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
4104 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4107 echo "Keeping your $hint cppstdin wrapper."
4110 wrapper=`pwd`/cppstdin
4114 if $test "X$cppstdin" != "X" && \
4115 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4116 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4118 echo "You used to use $cppstdin $cppminus so we'll use that again."
4120 '') echo "But let's see if we can live without a wrapper..." ;;
4122 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4123 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4125 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4128 echo "(However, $cpprun $cpplast does not work, let's see...)"
4136 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4143 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4144 $cc -E <testcpp.c >testcpp.out 2>&1; \
4145 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4146 echo "Yup, it does."
4149 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4150 $cc -E - <testcpp.c >testcpp.out 2>&1; \
4151 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4152 echo "Yup, it does."
4155 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4156 $cc -P <testcpp.c >testcpp.out 2>&1; \
4157 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4158 echo "Yipee, that works!"
4161 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4162 $cc -P - <testcpp.c >testcpp.out 2>&1; \
4163 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4164 echo "At long last!"
4167 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4168 $cpp <testcpp.c >testcpp.out 2>&1; \
4169 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4173 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4174 $cpp - <testcpp.c >testcpp.out 2>&1; \
4175 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4176 echo "Hooray, it works! I was beginning to wonder."
4179 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
4180 $wrapper <testcpp.c >testcpp.out 2>&1; \
4181 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4187 rp="No dice. I can't find a C preprocessor. Name one:"
4191 $x_cpp <testcpp.c >testcpp.out 2>&1
4192 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4193 echo "OK, that will do." >&4
4195 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4210 echo "Perhaps can we force $cc -E using a wrapper..."
4211 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4212 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4218 echo "Nope, we'll have to live without it..."
4232 "$wrapper"|'cppstdin') ;;
4233 *) $rm -f $wrapper;;
4235 $rm -f testcpp.c testcpp.out
4237 : Set private lib path
4240 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4245 '') dlist="$loclibpth $plibpth $glibpth";;
4246 *) dlist="$libpth";;
4249 : Now check and see which directories actually exist, avoiding duplicates
4253 if $test -d $xxx; then
4256 *) libpth="$libpth $xxx";;
4262 Some systems have incompatible or broken versions of libraries. Among
4263 the directories listed in the question below, please remove any you
4264 know not to be holding relevant libraries, and add any that are needed.
4265 Say "none" for none.
4276 rp="Directories to use for library searches?"
4283 : compute shared library extension
4286 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4296 On some systems, shared libraries may be available. Answer 'none' if
4297 you want to suppress searching of shared libraries for the remainder
4298 of this configuration.
4301 rp='What is the file extension used for shared libraries?'
4305 : Define several unixisms.
4306 : Hints files or command line option can be used to override them.
4307 : The convoluted testing is in case hints files set either the old
4310 '') case "$exe_ext" in
4312 *) _exe="$exe_ext" ;;
4317 '') case "$lib_ext" in
4324 '') case "$obj_ext" in
4331 '') case "$path_sep" in
4342 : Which makefile gets called first. This is used by make depend.
4343 case "$firstmakefile" in
4344 '') firstmakefile='makefile';;
4348 $define|true|[yY]*) dflt='y';;
4353 Perl can be built to use the SOCKS proxy protocol library. To do so,
4354 Configure must be run with -Dusesocks. If you use SOCKS you also need
4355 to use the PerlIO abstraction layer, this will be implicitly selected.
4357 If this doesn't make any sense to you, just accept the default '$dflt'.
4359 rp='Build Perl for SOCKS?'
4362 y|Y) val="$define" ;;
4369 $define|true|[yY]*) useperlio="$define";;
4372 : Looking for optional libraries
4374 echo "Checking for optional libraries..." >&4
4379 case "$libswanted" in
4380 '') libswanted='c_s';;
4383 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4389 for thisdir in $libpth $xlibpth; do
4390 test -d $thisdir && libspath="$libspath $thisdir"
4392 for thislib in $libswanted; do
4393 for thisdir in $libspath; do
4395 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4396 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4397 $test -f "$xxx" && eval $libscheck
4398 $test -f "$xxx" && libstyle=shared
4400 if test ! -f "$xxx"; then
4401 xxx=$thisdir/lib$thislib.$so
4402 $test -f "$xxx" && eval $libscheck
4403 $test -f "$xxx" && libstyle=shared
4405 if test ! -f "$xxx"; then
4406 xxx=$thisdir/lib$thislib$_a
4407 $test -f "$xxx" && eval $libscheck
4408 $test -f "$xxx" && libstyle=static
4410 if test ! -f "$xxx"; then
4411 xxx=$thisdir/$thislib$_a
4412 $test -f "$xxx" && eval $libscheck
4413 $test -f "$xxx" && libstyle=static
4415 if test ! -f "$xxx"; then
4416 xxx=$thisdir/lib${thislib}_s$_a
4417 $test -f "$xxx" && eval $libscheck
4418 $test -f "$xxx" && libstyle=static
4419 $test -f "$xxx" && thislib=${thislib}_s
4421 if test ! -f "$xxx"; then
4422 xxx=$thisdir/Slib$thislib$_a
4423 $test -f "$xxx" && eval $libscheck
4424 $test -f "$xxx" && libstyle=static
4426 if $test -f "$xxx"; then
4428 shared) echo "Found -l$thislib (shared)." ;;
4429 static) echo "Found -l$thislib." ;;
4430 *) echo "Found -l$thislib ($libstyle)." ;;
4434 *) dflt="$dflt -l$thislib"
4435 libsfound="$libsfound $xxx"
4437 libsfiles="$libsfiles $yyy"
4438 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4439 case " $libsdirs " in
4441 *) libsdirs="$libsdirs $yyy" ;;
4448 if $test ! -f "$xxx"; then
4449 echo "No -l$thislib."
4460 ' '|'') dflt='none';;
4465 In order to compile $package on your machine, a number of libraries
4466 are usually needed. Include any other special libraries here as well.
4467 Say "none" for none. The default list is almost always right.
4471 rp="What libraries to use?"
4478 : determine optimization, if desired, or use for debug flag also
4480 ' '|$undef) dflt='none';;
4482 *) dflt="$optimize";;
4486 By default, $package compiles with the -O flag to use the optimizer.
4487 Alternately, you might want to use the symbolic debugger, which uses
4488 the -g flag (on traditional Unix systems). Either flag can be
4489 specified here. To use neither flag, specify the word "none".
4492 rp="What optimizer/debugger flag should be used?"
4496 'none') optimize=" ";;
4500 : We will not override a previous value, but we might want to
4501 : augment a hint file
4503 default|recommended)
4504 case "$gccversion" in
4505 1*) dflt='-fpcc-struct-return' ;;
4508 *-g*) dflt="$dflt -DDEBUGGING";;
4510 case "$gccversion" in
4511 2*) if test -d /etc/conf/kconfig.d &&
4512 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4518 case "$gccversion" in
4522 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4523 echo 'int main(void) { return 0; }' > gcctest.c
4524 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4525 echo "Yes, it does." 2>&1
4528 echo "Leaving current flags $ccflags alone." 2>&1
4530 *) dflt="$dflt -fno-strict-aliasing" ;;
4533 echo "Nope, it doesn't, but that's ok." 2>&1
4540 case "$mips_type" in
4541 *BSD*|'') inclwanted="$locincpth $usrinc";;
4542 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4544 for thisincl in $inclwanted; do
4545 if $test -d $thisincl; then
4546 if $test x$thisincl != x$usrinc; then
4548 *" -I$thisincl "*);;
4549 *) dflt="$dflt -I$thisincl ";;
4555 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4557 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4565 *) dflt="$dflt -D$2";;
4569 set signal.h LANGUAGE_C; eval $inctest
4573 ccflags="$ccflags -DSOCKS"
4578 default|recommended) dflt="$ccflags $dflt" ;;
4579 *) dflt="$ccflags";;
4588 Your C compiler may want other flags. For this question you should include
4589 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4590 but you should NOT include libraries or ld flags like -lwhatever. If you
4591 want $package to honor its debug switch, you should include -DDEBUGGING here.
4592 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4594 To use no flags, specify the word "none".
4600 rp="Any additional cc flags?"
4607 : the following weeds options from ccflags that are of no interest to cpp
4609 '') cppflags="$ccflags" ;;
4610 *) cppflags="$cppflags $ccflags" ;;
4612 case "$gccversion" in
4613 1*) cppflags="$cppflags -D__GNUC__"
4615 case "$mips_type" in
4617 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4623 echo "Let me guess what the preprocessor flags are..." >&4
4637 *) ftry="$previous $flag";;
4639 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4640 >cpp1.out 2>/dev/null && \
4641 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4642 >cpp2.out 2>/dev/null && \
4643 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4644 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4646 cppflags="$cppflags $ftry"
4656 *-*) echo "They appear to be: $cppflags";;
4658 $rm -f cpp.c cpp?.out
4662 : flags used in final linking phase
4664 '') if ./venix; then
4670 *-posix*) dflt="$dflt -posix" ;;
4673 *) dflt="$ldflags";;
4676 : Try to guess additional flags to pick up local libraries.
4677 for thislibdir in $libpth; do
4678 case " $loclibpth " in
4681 *"-L$thislibdir "*) ;;
4682 *) dflt="$dflt -L$thislibdir" ;;
4694 Your C linker may need flags. For this question you should
4695 include -L/whatever and any other flags used by the C linker, but you
4696 should NOT include libraries like -lwhatever.
4698 Make sure you include the appropriate -L/path flags if your C linker
4699 does not normally search all of the directories you specified above,
4702 To use no flags, specify the word "none".
4706 rp="Any additional ld flags (NOT including libraries)?"
4712 rmlist="$rmlist pdp11"
4716 echo "Checking your choice of C compiler and flags for coherency..." >&4
4717 $cat > try.c <<'EOF'
4719 int main() { printf("Ok\n"); exit(0); }
4721 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4723 $cat >try.msg <<'EOM'
4724 I've tried to compile and run the following simple program:
4727 $cat try.c >> try.msg
4729 $cat >> try.msg <<EOM
4736 and I got the following output:
4740 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4741 if $sh -c "$run ./try" >>try.msg 2>&1; then
4745 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4748 cat >> try.msg <<'EOQS'
4749 If $libs contains -lsfio, and sfio is mis-configured, then it
4750 sometimes (apparently) runs and exits with a 0 status, but with no
4751 output! It may have to do with sfio's use of _exit vs. exit.
4754 rp="You have a big problem. Shall I abort Configure"
4761 echo "The program compiled OK, but exited with status $?." >>try.msg
4762 rp="You have a problem. Shall I abort Configure"
4766 echo "I can't compile the test program." >>try.msg
4767 rp="You have a BIG problem. Shall I abort Configure"
4773 case "$knowitall" in
4775 echo "(The supplied flags or libraries might be incorrect.)"
4783 *) echo "Ok. Stopping Configure." >&4
4788 n) echo "OK, that should do.";;
4790 $rm -f try try.* core
4792 : define a shorthand compile call
4796 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4797 : define a shorthand compile call for compilations that should be ok.
4801 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4803 : check for lengths of integral types
4807 echo "Checking to see how big your integers are..." >&4
4808 $cat >try.c <<'EOCP'
4812 printf("intsize=%d;\n", (int)sizeof(int));
4813 printf("longsize=%d;\n", (int)sizeof(long));
4814 printf("shortsize=%d;\n", (int)sizeof(short));
4819 if eval $compile_ok && $run ./try > /dev/null; then
4821 echo "Your integers are $intsize bytes long."
4822 echo "Your long integers are $longsize bytes long."
4823 echo "Your short integers are $shortsize bytes long."
4827 Help! I can't compile and run the intsize test program: please enlighten me!
4828 (This is probably a misconfiguration in your system or libraries, and
4829 you really ought to fix it. Still, I'll try anyway.)
4833 rp="What is the size of an integer (in bytes)?"
4837 rp="What is the size of a long integer (in bytes)?"
4841 rp="What is the size of a short integer (in bytes)?"
4849 : check for void type
4851 echo "Checking to see how well your C compiler groks the void type..." >&4
4852 case "$voidflags" in
4854 $cat >try.c <<'EOCP'
4860 extern void moo(); /* function returning void */
4861 void (*goo)(); /* ptr to func returning void */
4863 void *hue; /* generic ptr */
4876 int main() { sub(); }
4878 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4879 voidflags=$defvoidused
4880 echo "Good. It appears to support void to the level $package wants.">&4
4881 if $contains warning .out >/dev/null 2>&1; then
4882 echo "However, you might get some warnings that look like this:"
4886 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4887 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4888 echo "It supports 1..."
4889 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4890 echo "It also supports 2..."
4891 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4893 echo "And it supports 4 but not 8 definitely."
4895 echo "It doesn't support 4..."
4896 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4898 echo "But it supports 8."
4901 echo "Neither does it support 8."
4905 echo "It does not support 2..."
4906 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4908 echo "But it supports 4 and 8."
4910 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4912 echo "And it supports 4 but has not heard about 8."
4914 echo "However it supports 8 but not 4."
4919 echo "There is no support at all for void."
4924 case "$voidflags" in
4927 Support flag bits are:
4928 1: basic void declarations.
4929 2: arrays of pointers to functions returning void.
4930 4: operations between pointers to and addresses of void functions.
4931 8: generic void pointers.
4934 rp="Your void support flags add up to what?"
4941 : check for length of pointer
4945 echo "Checking to see how big your pointers are..." >&4
4946 if test "$voidflags" -gt 7; then
4947 echo '#define VOID_PTR char *' > try.c
4949 echo '#define VOID_PTR void *' > try.c
4951 $cat >>try.c <<'EOCP'
4955 printf("%d\n", (int)sizeof(VOID_PTR));
4960 if eval $compile_ok; then
4961 ptrsize=`$run ./try`
4962 echo "Your pointers are $ptrsize bytes long."
4965 echo "(I can't seem to compile the test program. Guessing...)" >&4
4966 rp="What is the size of a pointer (in bytes)?"
4974 : check for long long
4976 echo "Checking to see if you have long long..." >&4
4977 echo 'int main() { long long x = 7; return 0; }' > try.c
4979 if eval $compile; then
4981 echo "You have long long."
4984 echo "You do not have long long."
4990 : check for length of long long
4991 case "${d_longlong}${longlongsize}" in
4994 echo "Checking to see how big your long longs are..." >&4
4995 $cat >try.c <<'EOCP'
4999 printf("%d\n", (int)sizeof(long long));
5004 if eval $compile_ok; then
5005 longlongsize=`$run ./try`
5006 echo "Your long longs are $longlongsize bytes long."
5010 echo "(I can't seem to compile the test program. Guessing...)"
5011 rp="What is the size of a long long (in bytes)?"
5015 if $test "X$longsize" = "X$longlongsize"; then
5016 echo "(That isn't any different from an ordinary long.)"
5022 : determine filename position in cpp output
5024 echo "Computing filename position in cpp output for #include directives..." >&4
5026 vos) testaccess=-e ;;
5029 echo '#include <stdio.h>' > foo.c
5032 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5033 $grep '^[ ]*#.*stdio\.h' | \
5034 while read cline; do
5037 while $test \$# -gt 0; do
5038 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5043 pos=\`expr \$pos + 1\`
5055 *) pos="${fieldn}th";;
5057 echo "Your cpp writes the filename in the $pos field of the line."
5060 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5063 : locate header file
5068 for usrincdir in $usrinc
5070 if test -f \$usrincdir/\$wanted; then
5071 echo "\$usrincdir/\$wanted"
5075 awkprg='{ print \$$fieldn }'
5076 echo "#include <\$wanted>" > foo\$\$.c
5077 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5078 $cppfilter $grep "^[ ]*#.*\$wanted" | \
5079 while read cline; do
5080 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5082 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5083 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5088 # status = 0: grep returned 0 lines, case statement not executed
5089 # status = 1: headerfile found
5090 # status = 2: while loop executed, no headerfile found
5094 if test \$status -eq 1; then
5101 : define an alternate in-header-list? function
5102 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5103 cont=true; xxf="echo \"<\$1> found.\" >&4";
5104 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5105 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5107 case $# in 4) instead=instead;; *) instead="at last";; esac;
5108 while $test "$cont"; do
5110 var=$2; eval "was=\$$2";
5111 if $test "$xxx" && $test -r "$xxx";
5113 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5116 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5117 set $yyy; shift; shift; yyy=$@;
5118 case $# in 0) cont="";;
5119 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5120 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5121 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5122 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5126 do set $yyy; var=$2; eval "was=\$$2";
5127 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5128 set $yyy; shift; shift; yyy=$@;
5131 : see if inttypes.h is available
5132 : we want a real compile instead of Inhdr because some systems
5133 : have an inttypes.h which includes non-existent headers
5136 #include <inttypes.h>
5138 static int32_t foo32 = 0x12345678;
5142 if eval $compile; then
5143 echo "<inttypes.h> found." >&4
5146 echo "<inttypes.h> NOT found." >&4
5155 echo "Checking to see if you have int64_t..." >&4
5157 #include <sys/types.h>
5158 #$i_inttypes I_INTTYPES
5160 #include <inttypes.h>
5162 int main() { int64_t x = 7; }
5165 if eval $compile; then
5167 echo "You have int64_t."
5170 echo "You do not have int64_t."
5178 echo "Checking which 64-bit integer type we could use..." >&4
5184 val='"unsigned int"'
5189 *) case "$longsize" in
5193 val='"unsigned long"'
5198 *) case "$d_longlong:$longlongsize" in
5203 val='"unsigned long long"'
5208 *) case "$d_int64_t" in
5227 '') echo "Alas, no 64-bit integer types in sight." >&4
5230 *) echo "We could use '$quadtype' for 64-bit integers." >&4
5236 case "$uselonglong" in
5237 "$define"|true|[yY]*)
5240 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5242 use64bitint="$define"
5245 case "$use64bits" in
5246 "$define"|true|[yY]*)
5249 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5251 use64bitint="$define"
5254 case "$use64bitints" in
5255 "$define"|true|[yY]*)
5258 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5260 use64bitint="$define"
5263 case "$use64bitsint" in
5264 "$define"|true|[yY]*)
5267 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5269 use64bitint="$define"
5272 case "$uselonglongs" in
5273 "$define"|true|[yY]*)
5276 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5278 use64bitint="$define"
5281 case "$use64bitsall" in
5282 "$define"|true|[yY]*)
5285 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5287 use64bitall="$define"
5292 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5294 case "$use64bitall" in
5295 "$define"|true|[yY]*) use64bitint="$define" ;;
5301 You have natively 64-bit long integers.
5305 *) case "$use64bitint" in
5306 "$define"|true|[yY]*) dflt='y';;
5315 Perl can be built to take advantage of 64-bit integer types
5316 on some systems. To do so, Configure can be run with -Duse64bitint.
5317 Choosing this option will most probably introduce binary incompatibilities.
5319 If this doesn't make any sense to you, just accept the default '$dflt'.
5320 (The default has been chosen based on your configuration.)
5322 rp='Try to use 64-bit integers, if available?'
5325 [yY]*) val="$define" ;;
5333 case "$use64bitall" in
5334 "$define"|true|[yY]*) dflt='y' ;;
5335 *) case "$longsize" in
5343 You may also choose to try maximal 64-bitness. It means using as much
5344 64-bitness as possible on the platform. This in turn means even more
5345 binary incompatibilities. On the other hand, your platform may not
5346 have any more 64-bitness available than what you already have chosen.
5348 If this doesn't make any sense to you, just accept the default '$dflt'.
5349 (The default has been chosen based on your configuration.)
5351 rp='Try to use maximal 64-bit support, if available?'
5354 [yY]*) val="$define" ;;
5359 case "$use64bitall" in
5361 case "$use64bitint" in
5365 Since you have chosen a maximally 64-bit build, I'm also turning on
5366 the use of 64-bit integers.
5368 use64bitint="$define" ;;
5373 case "$use64bitall" in
5374 "$define"|true|[yY]*)
5378 *** You have chosen a maximally 64-bit build, but your pointers
5379 *** are only 4 bytes wide, disabling maximal 64-bitness.
5382 use64bitall="$undef"
5383 case "$use64bitint" in
5384 "$define"|true|[yY]*) ;;
5387 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5390 use64bitint="$define"
5398 case "$use64bitint" in
5399 "$define"|true|[yY]*)
5400 : Look for a hint-file generated 'call-back-unit'. If the
5401 : user has specified that a 64-bit perl is to be built,
5402 : we may need to set or change some other defaults.
5403 if $test -f use64bitint.cbu; then
5404 echo "Your platform has some specific hints for 64-bit integers, using them..."
5408 4) case "$archname64" in
5409 '') archname64=64int ;;
5416 case "$use64bitall" in
5417 "$define"|true|[yY]*)
5418 : Look for a hint-file generated 'call-back-unit'. If the
5419 : user has specified that a maximally 64-bit perl is to be built,
5420 : we may need to set or change some other defaults.
5421 if $test -f use64bitall.cbu; then
5422 echo "Your platform has some specific hints for 64-bit builds, using them..."
5426 4) case "$archname64" in
5427 ''|64int) archname64=64all ;;
5435 echo "Checking for GNU C Library..." >&4
5448 if eval $compile_ok && $run ./try; then
5450 echo "You are using the GNU C Library"
5453 echo "You are not using the GNU C Library"
5459 : see if nm is to be used to determine whether a symbol is defined or not
5463 case "$d_gnulibc" in
5466 echo "nm probably won't work on the GNU C Library." >&4
5472 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5474 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5475 echo "'nm' won't be sufficient on this sytem." >&4
5481 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5482 if $test $dflt -gt 20; then
5492 true|$define) dflt=y;;
5499 I can use $nm to extract the symbols from your C libraries. This
5500 is a time consuming task which may generate huge output on the disk (up
5501 to 3 megabytes) but that should make the symbols extraction faster. The
5502 alternative is to skip the 'nm' extraction part and to compile a small
5503 test program instead to determine whether each symbol is present. If
5504 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5505 this may be the best solution.
5507 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5510 rp="Shall I use $nm to extract C symbols from the libraries?"
5513 [Nn]*) usenm=false;;
5522 : nm options which may be necessary
5524 '') if $test -f /mach_boot; then
5526 elif $test -d /usr/ccs/lib; then
5527 nm_opt='-p' # Solaris (and SunOS?)
5528 elif $test -f /dgux; then
5530 elif $test -f /lib64/rld; then
5531 nm_opt='-p' # 64-bit Irix
5537 : nm options which may be necessary for shared libraries but illegal
5538 : for archive libraries. Thank you, Linux.
5539 case "$nm_so_opt" in
5540 '') case "$myuname" in
5542 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5543 nm_so_opt='--dynamic'
5552 : get list of predefined functions in a handy place
5557 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5563 *) for thislib in $libs; do
5566 : Handle C library specially below.
5569 thislib=`echo $thislib | $sed -e 's/^-l//'`
5570 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5572 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5574 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5576 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5578 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5580 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5582 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5587 libnames="$libnames $try"
5589 *) libnames="$libnames $thislib" ;;
5598 for xxx in $libpth; do
5599 $test -r $1 || set $xxx/libc.$so
5600 : The messy sed command sorts on library version numbers.
5602 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5603 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5605 s/[0-9][0-9]*/0000&/g
5606 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5609 $sort | $sed -e 's/^.* //'`
5612 $test -r $1 || set /usr/ccs/lib/libc.$so
5613 $test -r $1 || set /lib/libsys_s$_a
5619 if $test -r "$1"; then
5620 echo "Your (shared) C library seems to be in $1."
5622 elif $test -r /lib/libc && $test -r /lib/clib; then
5623 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5625 libc='/lib/clib /lib/libc'
5626 if $test -r /lib/syslib; then
5627 echo "(Your math library is in /lib/syslib.)"
5628 libc="$libc /lib/syslib"
5630 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5631 echo "Your C library seems to be in $libc, as you said before."
5632 elif $test -r $incpath/usr/lib/libc$_a; then
5633 libc=$incpath/usr/lib/libc$_a;
5634 echo "Your C library seems to be in $libc. That's fine."
5635 elif $test -r /lib/libc$_a; then
5637 echo "Your C library seems to be in $libc. You're normal."
5639 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5641 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5642 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5643 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5645 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5647 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5650 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5652 if $test -r "$tans"; then
5653 echo "Your C library seems to be in $tans, of all places."
5659 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5663 If the guess above is wrong (which it might be if you're using a strange
5664 compiler, or your machine supports multiple models), you can override it here.
5669 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5671 I can't seem to find your C library. I've looked in the following places:
5674 $sed 's/^/ /' libpath
5677 None of these seems to contain your C library. I need to get its name...
5682 rp='Where is your C library?'
5687 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5688 set X `cat libnames`
5691 case $# in 1) xxx=file; esac
5692 echo "Extracting names from the following $xxx for later perusal:" >&4
5694 $sed 's/^/ /' libnames >&4
5696 $echo $n "This may take a while...$c" >&4
5700 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5701 *) $nm $nm_opt $file 2>/dev/null;;
5706 $grep fprintf libc.tmp > libc.ptf
5707 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5708 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
5710 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5712 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5714 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5716 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5718 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5720 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5722 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5724 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5726 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5728 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5730 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5732 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5734 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5735 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5737 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5739 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5741 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5743 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5745 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5747 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5749 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5751 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5753 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5755 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5757 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5759 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5761 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5763 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5765 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5768 $nm -p $* 2>/dev/null >libc.tmp
5769 $grep fprintf libc.tmp > libc.ptf
5770 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5771 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5777 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5779 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5780 for thisname in $libnames $libc; do
5781 $ar t $thisname >>libc.tmp
5783 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5785 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5786 # Repeat libc to extract forwarders to DLL entries too
5787 for thisname in $libnames $libc; do
5788 $ar tv $thisname >>libc.tmp
5789 # Revision 50 of EMX has bug in $ar.
5790 # it will not extract forwarders to DLL entries
5791 # Use emximp which will extract exactly them.
5792 emximp -o tmp.imp $thisname \
5794 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5795 < tmp.imp >>libc.tmp
5798 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5801 echo "$ar didn't seem to work right." >&4
5802 echo "Maybe this is a Cray...trying bld instead..." >&4
5803 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5805 for thisname in $libnames; do
5807 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5808 $ar t $thisname >>libc.tmp
5812 echo "That didn't work either. Giving up." >&4
5819 if $test -f /lib/syscalls.exp; then
5821 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5822 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
5826 $rm -f libnames libpath
5828 : is a C symbol defined?
5831 -v) tf=libc.tmp; tc=""; tdc="";;
5832 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5833 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5836 case "$reuseval-$4" in
5838 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5844 if $contains $tlook $tf >/dev/null 2>&1;
5849 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5850 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5858 $define) tval=true;;
5864 : define an is-in-libc? function
5865 inlibc='echo " "; td=$define; tu=$undef;
5866 sym=$1; var=$2; eval "was=\$$2";
5868 case "$reuseval$was" in
5878 echo "$sym() found." >&4;
5879 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5881 echo "$sym() NOT found." >&4;
5882 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5886 $define) echo "$sym() found." >&4;;
5887 *) echo "$sym() NOT found." >&4;;
5891 : see if sqrtl exists
5895 : check for length of double
5897 case "$doublesize" in
5899 echo "Checking to see how big your double precision numbers are..." >&4
5900 $cat >try.c <<'EOCP'
5904 printf("%d\n", (int)sizeof(double));
5909 if eval $compile_ok; then
5910 doublesize=`$run ./try`
5911 echo "Your double is $doublesize bytes long."
5914 echo "(I can't seem to compile the test program. Guessing...)"
5915 rp="What is the size of a double precision number (in bytes)?"
5923 : check for long doubles
5925 echo "Checking to see if you have long double..." >&4
5926 echo 'int main() { long double x = 7.0; }' > try.c
5928 if eval $compile; then
5930 echo "You have long double."
5933 echo "You do not have long double."
5939 : check for length of long double
5940 case "${d_longdbl}${longdblsize}" in
5943 echo "Checking to see how big your long doubles are..." >&4
5944 $cat >try.c <<'EOCP'
5948 printf("%d\n", sizeof(long double));
5953 if eval $compile; then
5954 longdblsize=`$run ./try`
5955 echo "Your long doubles are $longdblsize bytes long."
5959 echo "(I can't seem to compile the test program. Guessing...)" >&4
5960 rp="What is the size of a long double (in bytes)?"
5964 if $test "X$doublesize" = "X$longdblsize"; then
5965 echo "(That isn't any different from an ordinary double.)"
5973 if $test X"$d_longdbl" = X"$define"; then
5975 echo "Checking how to print long doubles..." >&4
5977 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
5978 $cat >try.c <<'EOCP'
5979 #include <sys/types.h>
5983 printf("%.3f\n", d);
5987 if eval $compile; then
5991 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
5992 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
5993 echo "We will use %f."
5999 if $test X"$sPRIfldbl" = X; then
6000 $cat >try.c <<'EOCP'
6001 #include <sys/types.h>
6004 long double d = 123.456;
6005 printf("%.3Lf\n", d);
6009 if eval $compile; then
6013 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
6014 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
6015 echo "We will use %Lf."
6021 if $test X"$sPRIfldbl" = X; then
6022 $cat >try.c <<'EOCP'
6023 #include <sys/types.h>
6026 long double d = 123.456;
6027 printf("%.3llf\n", d);
6031 if eval $compile; then
6035 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
6036 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
6037 echo "We will use %llf."
6043 if $test X"$sPRIfldbl" = X; then
6044 $cat >try.c <<'EOCP'
6045 #include <sys/types.h>
6048 long double d = 123.456;
6049 printf("%.3lf\n", d);
6053 if eval $compile; then
6057 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
6058 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
6059 echo "We will use %lf."
6065 if $test X"$sPRIfldbl" = X; then
6066 echo "Cannot figure out how to print long doubles." >&4
6068 sSCNfldbl=$sPRIfldbl # expect consistency
6075 case "$sPRIfldbl" in
6076 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
6077 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
6078 d_SCNfldbl="$undef";
6080 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
6081 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
6082 d_SCNfldbl="$define";
6086 : see if modfl exists
6090 d_modfl_pow32_bug="$undef"
6092 case "$d_longdbl$d_modfl" in
6095 Checking to see whether your modfl() is okay for large values...
6101 long double nv = 4294967303.15;
6107 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
6111 case "$osname:$gccversion" in
6112 aix:) saveccflags="$ccflags"
6113 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
6116 if eval $compile; then
6119 *" 4294967303.150000 1.150000 4294967302.000000")
6120 echo >&4 "Your modfl() is broken for large values."
6121 d_modfl_pow32_bug="$define"
6123 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
6127 *" 4294967303.150000 0.150000 4294967303.000000")
6128 echo >&4 "Your modfl() seems okay for large values."
6130 *) echo >&4 "I don't understand your modfl() at all."
6134 $rm -f try.* try core core.try.*
6136 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
6139 case "$osname:$gccversion" in
6140 aix:) ccflags="$saveccflags" ;; # restore
6146 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6149 case "$uselongdouble" in
6150 $define|true|[yY]*) dflt='y';;
6155 Perl can be built to take advantage of long doubles which
6156 (if available) may give more accuracy and range for floating point numbers.
6158 If this doesn't make any sense to you, just accept the default '$dflt'.
6160 rp='Try to use long doubles if available?'
6163 y|Y) val="$define" ;;
6169 case "$uselongdouble" in
6170 true|[yY]*) uselongdouble="$define" ;;
6173 case "$uselongdouble" in
6175 : Look for a hint-file generated 'call-back-unit'. If the
6176 : user has specified that long doubles should be used,
6177 : we may need to set or change some other defaults.
6178 if $test -f uselongdouble.cbu; then
6179 echo "Your platform has some specific hints for long doubles, using them..."
6180 . ./uselongdouble.cbu
6183 (Your platform doesn't have any specific hints for long doubles.)
6190 case "$uselongdouble:$d_sqrtl:$d_modfl" in
6191 $define:$define:$define)
6194 $define:$define:$undef)
6195 message="I could not find modfl"
6197 $define:$undef:$define)
6198 message="I could not find sqrtl"
6200 $define:$undef:$undef)
6201 message="I found neither sqrtl nor modfl"
6205 if $test "$message" != X; then
6208 *** You requested the use of long doubles but you do not seem to have
6209 *** the mathematic functions for long doubles.
6211 *** I'm disabling the use of long doubles.
6215 uselongdouble=$undef
6218 case "$useperlio" in
6219 $define|true|[yY]*|'') dflt='y';;
6224 Previous version of $package used the standard IO mechanisms as
6225 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
6226 alternate IO mechanisms via the PerlIO abstraction layer, but the
6227 stdio mechanism is still available if needed. The abstraction layer
6228 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
6229 Using PerlIO with sfio may cause problems with some extension modules.
6231 If this doesn't make any sense to you, just accept the default '$dflt'.
6233 rp='Use the PerlIO abstraction layer?'
6240 echo "Ok, doing things the stdio way."
6249 case "$useperlio" in
6250 $define|true|[yY]*) ;;
6253 You are using the SOCKS proxy protocol library which means that you
6254 should also use the PerlIO layer. You may be headed for trouble.
6263 : determine the architecture name
6265 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
6266 tarch=`arch`"-$osname"
6267 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
6268 if uname -m > tmparch 2>&1 ; then
6269 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
6270 -e 's/$/'"-$osname/" tmparch`
6278 case "$myarchname" in
6281 echo "(Your architecture name used to be $myarchname.)"
6285 case "$targetarch" in
6287 *) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
6292 *) dflt="$archname";;
6294 rp='What is your architecture name'
6297 case "$usethreads" in
6299 echo "Threads selected." >&4
6301 *-thread*) echo "...and architecture name already has -thread." >&4
6303 *) archname="$archname-thread"
6304 echo "...setting architecture name to $archname." >&4
6309 case "$usemultiplicity" in
6311 echo "Multiplicity selected." >&4
6313 *-multi*) echo "...and architecture name already has -multi." >&4
6315 *) archname="$archname-multi"
6316 echo "...setting architecture name to $archname." >&4
6321 case "$use64bitint$use64bitall" in
6323 case "$archname64" in
6325 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6328 case "$use64bitint" in
6329 "$define") echo "64 bit integers selected." >&4 ;;
6331 case "$use64bitall" in
6332 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6335 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6337 *) archname="$archname-$archname64"
6338 echo "...setting architecture name to $archname." >&4
6344 case "$uselongdouble" in
6346 echo "Long doubles selected." >&4
6347 case "$longdblsize" in
6349 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6353 *-ld*) echo "...and architecture name already has -ld." >&4
6355 *) archname="$archname-ld"
6356 echo "...setting architecture name to $archname." >&4
6363 case "$useperlio" in
6365 echo "Perlio selected." >&4
6368 echo "Perlio not selected, using stdio." >&4
6370 *-stdio*) echo "...and architecture name already has -stdio." >&4
6372 *) archname="$archname-stdio"
6373 echo "...setting architecture name to $archname." >&4
6379 : determine root of directory hierarchy where package will be installed.
6382 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6390 By default, $package will be installed in $dflt/bin, manual pages
6391 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6392 installation directories. Typically this is something like /usr/local.
6393 If you wish to have binaries under /usr/bin but other parts of the
6394 installation under /usr/local, that's ok: you will be prompted
6395 separately for each of the installation directories, the prefix being
6396 only used to set the defaults.
6400 rp='Installation prefix to use?'
6408 *) oldprefix="$prefix";;
6417 *) afsroot=$afsroot ;;
6423 $define|true) afs=true ;;
6424 $undef|false) afs=false ;;
6425 *) if test -d $afsroot; then
6433 echo "AFS may be running... I'll be extra cautious then..." >&4
6435 echo "AFS does not seem to be running..." >&4
6438 : determine installation prefix for where package is to be installed.
6442 Since you are running AFS, I need to distinguish the directory in which
6443 files will reside from the directory in which they are installed (and from
6444 which they are presumably copied to the former directory by occult means).
6447 case "$installprefix" in
6448 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6449 *) dflt="$installprefix";;
6454 In some special cases, particularly when building $package for distribution,
6455 it is convenient to distinguish between the directory in which files should
6456 be installed from the directory ($prefix) in which they
6457 will eventually reside. For most users, these two directories are the same.
6460 case "$installprefix" in
6462 *) dflt=$installprefix;;
6466 rp='What installation prefix should I use for installing files?'
6468 installprefix="$ans"
6469 installprefixexp="$ansexp"
6471 : set the prefixit variable, to compute a suitable default value
6472 prefixit='case "$3" in
6474 case "$oldprefix" in
6475 "") eval "$1=\"\$$2\"";;
6482 ""|" ") eval "$1=\"\$$2\"";;
6488 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6490 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6491 /*-$oldprefix/*|\~*-$oldprefix/*)
6492 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6493 *) eval "$1=\"\$$2\"";;
6497 : get the patchlevel
6499 echo "Getting the current patchlevel..." >&4
6500 if $test -r $rsrc/patchlevel.h;then
6501 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6502 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6503 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6504 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6505 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6506 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6507 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6516 $echo "(You do not have patchlevel.h. Eek.)"
6518 if $test -r $rsrc/.patch ; then
6519 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6520 perl_patchlevel=`cat $rsrc/.patch`
6523 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6524 version_patchlevel_string="version $patchlevel subversion $subversion"
6525 case "$perl_patchlevel" in
6527 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6530 $echo "(You have $package $version_patchlevel_string.)"
6534 : XXX Should be a Configure test for double-dots in filenames.
6535 version=`echo $revision $patchlevel $subversion | \
6536 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6537 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6538 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6541 version=`echo $revision $patchlevel $subversion | \
6542 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6543 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6544 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6547 : Special case the 5.005_xx maintenance series, which used 5.005
6548 : without any subversion label as a subdirectory in $sitelib
6549 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6550 api_versionstring='5.005'
6553 : determine installation style
6554 : For now, try to deduce it from prefix unless it is already set.
6555 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6556 case "$installstyle" in
6557 '') case "$prefix" in
6558 *perl*) dflt='lib';;
6559 *) dflt='lib/perl5' ;;
6562 *) dflt="$installstyle" ;;
6564 : Probably not worth prompting for this since we prompt for all
6565 : the directories individually, and the prompt would be too long and
6569 : determine where private library files go
6570 : Usual default is /usr/local/lib/perl5/$version.
6571 : Also allow things like /opt/perl/lib/$version, since
6572 : /opt/perl/lib/perl5... would be redundant.
6573 : The default "style" setting is made in installstyle.U
6574 case "$installstyle" in
6575 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6576 *) set dflt privlib lib/$version ;;
6581 There are some auxiliary files for $package that need to be put into a
6582 private library directory that is accessible by everyone.
6586 rp='Pathname where the private library files will reside?'
6589 privlibexp="$ansexp"
6590 : Change installation prefix, if necessary.
6591 if $test X"$prefix" != X"$installprefix"; then
6592 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6594 installprivlib="$privlibexp"
6597 : set the prefixup variable, to restore leading tilda escape
6598 prefixup='case "$prefixexp" in
6600 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6603 : determine where public architecture dependent libraries go
6606 : privlib default is /usr/local/lib/$package/$version
6607 : archlib default is /usr/local/lib/$package/$version/$archname
6608 : privlib may have an optional trailing /share.
6609 tdflt=`echo $privlib | $sed 's,/share$,,'`
6610 tdflt=$tdflt/$archname
6619 $spackage contains architecture-dependent library files. If you are
6620 sharing libraries in a heterogeneous environment, you might store
6621 these files in a separate location. Otherwise, you can just include
6622 them with the rest of the public library files.
6626 rp='Where do you want to put the public architecture-dependent libraries?'
6629 archlibexp="$ansexp"
6630 if $test X"$archlib" = X"$privlib"; then
6635 : Change installation prefix, if necessary.
6636 if $test X"$prefix" != X"$installprefix"; then
6637 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6639 installarchlib="$archlibexp"
6643 : Binary compatibility with 5.005 is not possible for builds
6644 : with advanced features
6645 case "$usethreads$usemultiplicity" in
6647 bincompat5005="$undef"
6648 d_bincompat5005="$undef"
6652 This version of Perl can be compiled for binary compatibility with 5.005.
6653 If you decide to do so, you will be able to continue using most of the
6654 extensions that were compiled for Perl 5.005.
6657 case "$bincompat5005$d_bincompat5005" in
6658 *"$undef"*) dflt=n ;;
6661 rp='Binary compatibility with Perl 5.005?'
6664 y*) val="$define" ;;
6669 case "$d_bincompat5005" in
6671 bincompat5005="$define"
6673 *) bincompat5005="$undef"
6674 d_bincompat5005="$undef"
6681 : see if setuid scripts can be secure
6684 Some kernels have a bug that prevents setuid #! scripts from being
6685 secure. Some sites have disabled setuid #! scripts because of this.
6687 First let's decide if your kernel supports secure setuid #! scripts.
6688 (If setuid #! scripts would be secure but have been disabled anyway,
6689 don't say that they are secure if asked.)
6694 if $test -d /dev/fd; then
6695 echo "#!$ls" >reflect
6696 chmod +x,u+s reflect
6697 ./reflect >flect 2>&1
6698 if $contains "/dev/fd" flect >/dev/null; then
6699 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6703 If you are not sure if they are secure, I can check but I'll need a
6704 username and password different from the one you are using right now.
6705 If you don't have such a username or don't want me to test, simply
6709 rp='Other username to test security of setuid scripts with?'
6714 case "$d_suidsafe" in
6715 '') echo "I'll assume setuid scripts are *not* secure." >&4
6718 echo "Well, the $hint value is *not* secure." >&4
6720 *) echo "Well, the $hint value *is* secure." >&4
6725 $rm -f reflect flect
6726 echo "#!$ls" >reflect
6727 chmod +x,u+s reflect
6730 echo '"su" will (probably) prompt you for '"$ans's password."
6731 su $ans -c './reflect >flect'
6732 if $contains "/dev/fd" flect >/dev/null; then
6733 echo "Okay, it looks like setuid scripts are secure." >&4
6736 echo "I don't think setuid scripts are secure." >&4
6741 rp='Does your kernel have *secure* setuid scripts?'
6744 [yY]*) val="$define";;
6749 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6750 echo "(That's for file descriptors, not floppy disks.)"
6756 $rm -f reflect flect
6758 : now see if they want to do setuid emulation
6761 case "$d_suidsafe" in
6764 echo "No need to emulate SUID scripts since they are secure here." >&4
6768 Some systems have disabled setuid scripts, especially systems where
6769 setuid scripts cannot be secure. On systems where setuid scripts have
6770 been disabled, the setuid/setgid bits on scripts are currently
6771 useless. It is possible for $package to detect those bits and emulate
6772 setuid/setgid in a secure fashion. This emulation will only work if
6773 setuid scripts have been disabled in your kernel.
6777 "$define") dflt=y ;;
6780 rp="Do you want to do setuid/setgid emulation?"
6783 [yY]*) val="$define";;
6791 : see if this is a malloc.h system
6792 set malloc.h i_malloc
6795 : see if stdlib is available
6796 set stdlib.h i_stdlib
6799 : determine which malloc to compile in
6801 case "$usemymalloc" in
6802 [yY]*|true|$define) dflt='y' ;;
6803 [nN]*|false|$undef) dflt='n' ;;
6804 *) case "$ptrsize" in
6810 rp="Do you wish to attempt to use the malloc that comes with $package?"
6816 mallocsrc='malloc.c'
6817 mallocobj="malloc$_o"
6818 d_mymalloc="$define"
6821 : Remove malloc from list of libraries to use
6822 echo "Removing unneeded -lmalloc from library list" >&4
6823 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6826 echo "libs = $libs" >&4
6838 : compute the return types of malloc and free
6840 $cat >malloc.c <<END
6844 #include <sys/types.h>
6858 case "$malloctype" in
6860 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6867 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6871 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6878 echo "Your system uses $freetype free(), it would seem." >&4
6882 After $package is installed, you may wish to install various
6883 add-on modules and utilities. Typically, these add-ons will
6884 be installed under $prefix with the rest
6885 of this package. However, you may wish to install such add-ons
6886 elsewhere under a different prefix.
6888 If you do not wish to put everything under a single prefix, that's
6889 ok. You will be prompted for the individual locations; this siteprefix
6890 is only used to suggest the defaults.
6892 The default should be fine for most people.
6896 rp='Installation prefix to use for add-on modules and utilities?'
6897 : XXX Here might be another good place for an installstyle setting.
6898 case "$siteprefix" in
6900 *) dflt=$siteprefix ;;
6903 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6905 case "$siteprefix" in
6909 *) oldsiteprefix="$prefix";;
6914 siteprefixexp="$ansexp"
6916 : determine where site specific libraries go.
6917 : Usual default is /usr/local/lib/perl5/site_perl/$version
6918 : The default "style" setting is made in installstyle.U
6919 : XXX No longer works with Prefixit stuff.
6920 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6922 '') case "$installstyle" in
6923 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6924 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6932 The installation process will create a directory for
6933 site-specific extensions and modules. Most users find it convenient
6934 to place all site-specific files in this directory rather than in the
6935 main distribution directory.
6939 rp='Pathname for the site-specific library files?'
6942 sitelibexp="$ansexp"
6943 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6944 : Change installation prefix, if necessary.
6945 if $test X"$prefix" != X"$installprefix"; then
6946 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6948 installsitelib="$sitelibexp"
6951 : determine where site specific architecture-dependent libraries go.
6952 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6953 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6954 : sitelib may have an optional trailing /share.
6956 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6957 dflt="$dflt/$archname"
6962 set sitearch sitearch none
6966 The installation process will also create a directory for
6967 architecture-dependent site-specific extensions and modules.
6971 rp='Pathname for the site-specific architecture-dependent library files?'
6974 sitearchexp="$ansexp"
6975 : Change installation prefix, if necessary.
6976 if $test X"$prefix" != X"$installprefix"; then
6977 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6979 installsitearch="$sitearchexp"
6984 The installation process will also create a directory for
6985 vendor-supplied add-ons. Vendors who supply perl with their system
6986 may find it convenient to place all vendor-supplied files in this
6987 directory rather than in the main distribution directory. This will
6988 ease upgrades between binary-compatible maintenance versions of perl.
6990 Of course you may also use these directories in whatever way you see
6991 fit. For example, you might use them to access modules shared over a
6992 company-wide network.
6994 The default answer should be fine for most people.
6995 This causes further questions about vendor add-ons to be skipped
6996 and no vendor-specific directories will be configured for perl.
6999 rp='Do you want to configure vendor-specific add-on directories?'
7000 case "$usevendorprefix" in
7001 define|true|[yY]*) dflt=y ;;
7002 *) : User may have set vendorprefix directly on Configure command line.
7003 case "$vendorprefix" in
7012 rp='Installation prefix to use for vendor-supplied add-ons?'
7013 case "$vendorprefix" in
7015 *) dflt=$vendorprefix ;;
7018 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
7020 case "$vendorprefix" in
7024 *) oldvendorprefix="$prefix";;
7028 usevendorprefix="$define"
7030 vendorprefixexp="$ansexp"
7032 *) usevendorprefix="$undef"
7038 case "$vendorprefix" in
7039 '') d_vendorlib="$undef"
7043 *) d_vendorlib="$define"
7044 : determine where vendor-supplied modules go.
7045 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
7046 case "$vendorlib" in
7048 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7049 case "$installstyle" in
7050 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
7051 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
7054 *) dflt="$vendorlib"
7058 rp='Pathname for the vendor-supplied library files?'
7061 vendorlibexp="$ansexp"
7064 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
7065 : Change installation prefix, if necessary.
7066 if $test X"$prefix" != X"$installprefix"; then
7067 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
7069 installvendorlib="$vendorlibexp"
7072 case "$vendorprefix" in
7073 '') d_vendorarch="$undef"
7077 *) d_vendorarch="$define"
7078 : determine where vendor-supplied architecture-dependent libraries go.
7079 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
7080 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
7081 : vendorlib may have an optional trailing /share.
7082 case "$vendorarch" in
7083 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
7084 dflt="$dflt/$archname"
7086 *) dflt="$vendorarch" ;;
7089 rp='Pathname for vendor-supplied architecture-dependent files?'
7092 vendorarchexp="$ansexp"
7095 : Change installation prefix, if necessary.
7096 if $test X"$prefix" != X"$installprefix"; then
7097 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
7099 installvendorarch="$vendorarchexp"
7102 : Final catch-all directories to search
7105 Lastly, you can have perl look in other directories for extensions and
7106 modules in addition to those already specified.
7107 These directories will be searched after
7111 test X"$vendorlib" != "X" && echo ' ' $vendorlib
7112 test X"$vendorarch" != "X" && echo ' ' $vendorarch
7114 case "$otherlibdirs" in
7115 ''|' ') dflt='none' ;;
7116 *) dflt="$otherlibdirs" ;;
7119 Enter a colon-separated set of extra paths to include in perl's @INC
7120 search path, or enter 'none' for no extra paths.
7124 rp='Colon-separated list of additional directories for perl to search?'
7127 ' '|''|none) otherlibdirs=' ' ;;
7128 *) otherlibdirs="$ans" ;;
7130 case "$otherlibdirs" in
7134 set d_perl_otherlibdirs
7137 : Cruising for prototypes
7139 echo "Checking out function prototypes..." >&4
7140 $cat >prototype.c <<'EOCP'
7141 int main(int argc, char *argv[]) {
7144 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
7145 echo "Your C compiler appears to support function prototypes."
7148 echo "Your C compiler doesn't seem to understand function prototypes."
7155 case "$prototype" in
7157 *) ansi2knr='ansi2knr'
7162 This version of $package can only be compiled by a compiler that
7163 understands function prototypes. Unfortunately, your C compiler
7165 doesn't seem to understand them. Sorry about that.
7167 If GNU cc is available for your system, perhaps you could try that instead.
7169 Eventually, we hope to support building Perl with pre-ANSI compilers.
7170 If you would like to help in that effort, please contact <perlbug@perl.org>.
7172 Aborting Configure now.
7178 : determine where public executables go
7183 rp='Pathname where the public executables will reside?'
7185 if $test "X$ansexp" != "X$binexp"; then
7190 : Change installation prefix, if necessary.
7191 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
7192 if $test X"$prefix" != X"$installprefix"; then
7193 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
7195 installbin="$binexp"
7204 Perl can be built with extra modules or bundles of modules which
7205 will be fetched from the CPAN and installed alongside Perl.
7207 Notice that you will need access to the CPAN; either via the Internet,
7208 or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
7209 be asked later to configure the CPAN.pm module which will in turn do
7210 the installation of the rest of the extra modules or bundles.)
7212 Notice also that if the modules require any external software such as
7213 libraries and headers (the libz library and the zlib.h header for the
7214 Compress::Zlib module, for example) you MUST have any such software
7215 already installed, this configuration process will NOT install such
7218 If this doesn't make any sense to you, just accept the default '$dflt'.
7220 rp='Install any extra modules (y or n)?'
7226 Please list any extra modules or bundles to be installed from CPAN,
7227 with spaces between the names. The names can be in any format the
7228 'install' command of CPAN.pm will understand. (Answer 'none',
7229 without the quotes, to install no extra modules or bundles.)
7239 $rm -f ../extras.lst
7241 *) echo "(Saving the list of extras for later...)"
7242 echo "$extras" > ../extras.lst
7250 : Find perl5.005 or later.
7251 echo "Looking for a previously installed perl5.005 or later... "
7253 '') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
7254 : Check if this perl is recent and can load a simple module
7255 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7258 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
7268 '') echo "None found. That's ok.";;
7269 *) echo "Using $perl5." ;;
7272 : Determine list of previous versions to include in @INC
7273 $cat > getverlist <<EOPL
7276 \$api_versionstring = "$api_versionstring";
7277 \$version = "$version";
7278 \$stem = "$sitelib_stem";
7279 \$archname = "$archname";
7281 $cat >> getverlist <<'EOPL'
7282 # Can't have leading @ because metaconfig interprets it as a command!
7283 ;@inc_version_list=();
7284 # XXX Redo to do opendir/readdir?
7287 ;@candidates = glob("5.*");
7293 # XXX ToDo: These comparisons must be reworked when two-digit
7294 # subversions come along, so that 5.7.10 compares as greater than
7295 # 5.7.3! By that time, hope that 5.6.x is sufficiently
7296 # widespread that we can use the built-in version vectors rather
7297 # than reinventing them here. For 5.6.0, however, we must
7298 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
7299 foreach $d (@candidates) {
7300 if ($d lt $version) {
7301 if ($d ge $api_versionstring) {
7302 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
7304 elsif ($d ge "5.005") {
7305 unshift(@inc_version_list, grep { -d } $d);
7309 # Skip newer version. I.e. don't look in
7310 # 5.7.0 if we're installing 5.6.1.
7314 if (@inc_version_list) {
7315 print join(' ', @inc_version_list);
7318 # Blank space to preserve value for next Configure run.
7323 case "$inc_version_list" in
7324 '') if test -x "$perl5$exe_ext"; then
7325 dflt=`$perl5 getverlist`
7330 $undef) dflt='none' ;;
7331 *) eval dflt=\"$inc_version_list\" ;;
7334 ''|' ') dflt=none ;;
7337 5.005) case "$bincompat5005" in
7338 $define|true|[yY]*) ;;
7345 In order to ease the process of upgrading, this version of perl
7346 can be configured to use modules built and installed with earlier
7347 versions of perl that were installed under $prefix. Specify here
7348 the list of earlier versions that this version of perl should check.
7349 If Configure detected no earlier versions of perl installed under
7350 $prefix, then the list will be empty. Answer 'none' to tell perl
7351 to not search earlier versions.
7353 The default should almost always be sensible, so if you're not sure,
7354 just accept the default.
7357 rp='List of earlier versions to include in @INC?'
7360 [Nn]one|''|' ') inc_version_list=' ' ;;
7361 *) inc_version_list="$ans" ;;
7363 case "$inc_version_list" in
7365 inc_version_list_init='0';;
7366 *) inc_version_list_init=`echo $inc_version_list |
7367 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7372 : determine whether to install perl also as /usr/bin/perl
7375 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7377 Many scripts expect perl to be installed as /usr/bin/perl.
7378 I can install the perl you are about to compile also as /usr/bin/perl
7379 (in addition to $installbin/perl).
7381 case "$installusrbinperl" in
7382 "$undef"|[nN]*) dflt='n';;
7385 rp="Do you want to install perl as /usr/bin/perl?"
7388 [yY]*) val="$define";;
7394 set installusrbinperl
7397 : see if dld is available
7401 : see if dlopen exists
7408 : determine which dynamic loading, if any, to compile in
7410 dldir="ext/DynaLoader"
7423 $define) dflt='y' ;;
7426 $define) dflt='y' ;;
7428 : Does a dl_xxx.xs file exist for this operating system
7429 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7432 rp="Do you wish to use dynamic loading?"
7439 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7440 dflt="$dldir/dl_${osname}.xs"
7441 elif $test "$d_dlopen" = "$define" ; then
7442 dflt="$dldir/dl_dlopen.xs"
7443 elif $test "$i_dld" = "$define" ; then
7444 dflt="$dldir/dl_dld.xs"
7449 *) dflt="$dldir/$dlsrc"
7452 echo "The following dynamic loading files are available:"
7453 : Can not go over to $dldir because getfile has path hard-coded in.
7454 tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7455 rp="Source file to use for dynamic loading"
7461 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7465 Some systems may require passing special flags to $cc -c to
7466 compile modules that will be used to create a shared library.
7467 To use no flags, say "none".
7470 case "$cccdlflags" in
7471 '') case "$gccversion" in
7472 '') case "$osname" in
7474 next) dflt='none' ;;
7475 irix*) dflt='-KPIC' ;;
7476 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7477 sunos) dflt='-pic' ;;
7481 *) case "$osname" in
7482 darwin) dflt='none' ;;
7483 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7488 *) dflt="$cccdlflags" ;;
7490 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7493 none) cccdlflags=' ' ;;
7494 *) cccdlflags="$ans" ;;
7499 Some systems use ld to create libraries that can be dynamically loaded,
7500 while other systems (such as those using ELF) use $cc.
7504 '') $cat >try.c <<'EOM'
7505 /* Test for whether ELF binaries are produced */
7510 int i = open("a.out",O_RDONLY);
7513 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7514 exit(0); /* succeed (yes, it's ELF) */
7519 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7521 You appear to have ELF support. I'll use $cc to build dynamic libraries.
7525 echo "I'll use ld to build dynamic libraries."
7534 rp="What command should be used to create dynamic libraries?"
7540 Some systems may require passing special flags to $ld to create a
7541 library that can be dynamically loaded. If your ld flags include
7542 -L/other/path options to locate libraries outside your loader's normal
7543 search path, you may need to specify those -L options here as well. To
7544 use no flags, say "none".
7547 case "$lddlflags" in
7548 '') case "$osname" in
7549 beos) dflt='-nostart' ;;
7551 case "$gccversion" in
7552 '') dflt="$dflt +vnocompatwarnings" ;;
7555 linux|irix*) dflt='-shared' ;;
7556 next) dflt='none' ;;
7557 solaris) dflt='-G' ;;
7558 sunos) dflt='-assert nodefinitions' ;;
7559 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7563 *) dflt="$lddlflags" ;;
7566 : Try to guess additional flags to pick up local libraries.
7567 : Be careful not to append to a plain 'none'
7571 for thisflag in $ldflags; do
7576 *) dflt="$dflt $thisflag" ;;
7583 ''|' ') dflt='none' ;;
7586 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7589 none) lddlflags=' ' ;;
7590 *) lddlflags="$ans" ;;
7595 Some systems may require passing special flags to $cc to indicate that
7596 the resulting executable will use dynamic linking. To use no flags,
7600 case "$ccdlflags" in
7601 '') case "$osname" in
7602 hpux) dflt='-Wl,-E' ;;
7603 linux) dflt='-rdynamic' ;;
7604 next) dflt='none' ;;
7605 sunos) dflt='none' ;;
7609 *) dflt="$ccdlflags" ;;
7611 rp="Any special flags to pass to $cc to use dynamic linking?"
7614 none) ccdlflags=' ' ;;
7615 *) ccdlflags="$ans" ;;
7629 # No dynamic loading being used, so don't bother even to prompt.
7632 *) case "$useshrplib" in
7633 '') case "$osname" in
7634 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7636 also='Building a shared libperl is required for dynamic loading to work on your system.'
7641 also='Building a shared libperl is needed for MAB support.'
7659 The perl executable is normally obtained by linking perlmain.c with
7660 libperl${_a}, any static extensions (usually just DynaLoader), and
7661 any other libraries needed on this system (such as -lm, etc.). Since
7662 your system supports dynamic loading, it is probably possible to build
7663 a shared libperl.$so. If you will have more than one executable linked
7664 to libperl.$so, this will significantly reduce the size of each
7665 executable, but it may have a noticeable affect on performance. The
7666 default is probably sensible for your system.
7670 rp="Build a shared libperl.$so (y/n)"
7674 useshrplib='true' ;;
7675 *) useshrplib='false' ;;
7680 case "$useshrplib" in
7684 # Figure out a good name for libperl.so. Since it gets stored in
7685 # a version-specific architecture-dependent library, the version
7686 # number isn't really that important, except for making cc/ld happy.
7688 # A name such as libperl.so.3.1
7689 majmin="libperl.$so.$patchlevel.$subversion"
7690 # A name such as libperl.so.301
7691 majonly=`echo $patchlevel $subversion |
7692 $awk '{printf "%d%02d", $1, $2}'`
7693 majonly=libperl.$so.$majonly
7694 # I'd prefer to keep the os-specific stuff here to a minimum, and
7695 # rely on figuring it out from the naming of libc.
7696 case "${osname}${osvers}" in
7699 # XXX How handle the --version stuff for MAB?
7701 linux*) # ld won't link with a bare -lperl otherwise.
7704 cygwin*) # ld links against an importlib
7705 dflt=libperl$lib_ext
7707 *) # Try to guess based on whether libc has major.minor.
7709 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7710 *libc.$so.[0-9]*) dflt=$majonly ;;
7711 *) dflt=libperl.$so ;;
7721 I need to select a good name for the shared libperl. If your system uses
7722 library names with major and minor numbers, then you might want something
7723 like $majmin. Alternatively, if your system uses a single version
7724 number for shared libraries, then you might want to use $majonly.
7725 Or, your system might be quite happy with a simple libperl.$so.
7727 Since the shared libperl will get installed into a version-specific
7728 architecture-dependent directory, the version number of the shared perl
7729 library probably isn't important, so the default should be o.k.
7732 rp='What name do you want to give to the shared libperl?'
7735 echo "Ok, I'll use $libperl"
7738 libperl="libperl${_a}"
7742 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7746 WARNING: Use of the shrpdir variable for the installation location of
7747 the shared $libperl is not supported. It was never documented and
7748 will not work in this version. Let me (perlbug@perl.org)
7749 know of any problems this may cause.
7755 But your current setting of $shrpdir is
7756 the default anyway, so it's harmless.
7761 Further, your current attempted setting of $shrpdir
7762 conflicts with the value of $archlibexp/CORE
7763 that installperl will use.
7770 # How will the perl executable find the installed shared $libperl?
7771 # Add $xxx to ccdlflags.
7772 # If we can't figure out a command-line option, use $shrpenv to
7773 # set env LD_RUN_PATH. The main perl makefile uses this.
7774 shrpdir=$archlibexp/CORE
7777 if "$useshrplib"; then
7780 # We'll set it in Makefile.SH...
7786 xxx="-Wl,-R$shrpdir"
7788 bsdos|linux|irix*|dec_osf)
7789 xxx="-Wl,-rpath,$shrpdir"
7792 # next doesn't like the default...
7795 # beos doesn't like the default, either.
7798 # hpux doesn't like the default, either.
7799 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7802 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7808 # Only add $xxx if it isn't already in ccdlflags.
7809 case " $ccdlflags " in
7811 *) ccdlflags="$ccdlflags $xxx"
7814 Adding $xxx to the flags
7815 passed to $ld so that the perl executable will find the
7816 installed shared $libperl.
7824 # Fix ccdlflags in AIX for building external extensions.
7825 # (For building Perl itself bare -bE:perl.exp is needed,
7826 # Makefile.SH takes care of this.)
7828 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7830 # Respect a hint or command-line value.
7832 '') shrpenv="$tmp_shrpenv" ;;
7834 case "$ldlibpthname" in
7835 '') ldlibpthname=LD_LIBRARY_PATH ;;
7836 none) ldlibpthname='' ;;
7839 : determine where manual pages are on this system
7843 syspath='/usr/share/man/man1 /usr/man/man1'
7844 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7845 syspath="$syspath /usr/man/u_man/man1"
7846 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7847 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7848 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7849 sysman=`./loc . /usr/man/man1 $syspath`
7852 if $test -d "$sysman"; then
7853 echo "System manual is in $sysman." >&4
7855 echo "Could not find manual pages in source form." >&4
7858 : determine where manual pages go
7859 set man1dir man1dir none
7863 $spackage has manual pages available in source form.
7867 echo "However, you don't have nroff, so they're probably useless to you."
7869 '') man1dir="none";;
7872 echo "If you don't want the manual sources installed, answer 'none'."
7877 lookpath="$prefixexp/share/man/man1"
7878 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7879 lookpath="$lookpath $prefixexp/man/p_man/man1"
7880 lookpath="$lookpath $prefixexp/man/u_man/man1"
7881 lookpath="$lookpath $prefixexp/man/man.1"
7883 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7884 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7894 rp="Where do the main $spackage manual pages (source) go?"
7896 if $test "X$man1direxp" != "X$ansexp"; then
7900 man1direxp="$ansexp"
7906 : Change installation prefix, if necessary.
7907 if $test X"$prefix" != X"$installprefix"; then
7908 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7910 installman1dir="$man1direxp"
7913 : What suffix to use on installed man pages
7920 rp="What suffix should be used for the main $spackage man pages?"
7922 '') case "$man1dir" in
7936 *) dflt="$man1ext";;
7943 : see if we can have long filenames
7945 first=123456789abcdef
7947 if (echo hi >$first) 2>/dev/null; then
7948 if $test -f 123456789abcde; then
7949 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7952 echo 'You can have filenames longer than 14 characters.'>&4
7957 You can't have filenames longer than 14 chars.
7958 You can't even think about them!
7964 $rm -rf 123456789abcde*
7966 : determine where library module manual pages go
7967 set man3dir man3dir none
7971 $spackage has manual pages for many of the library modules.
7977 However, you don't have nroff, so they're probably useless to you.
7980 '') man3dir="none";;
7984 case "$d_flexfnam" in
7987 However, your system can't handle the long file names like File::Basename.3.
7990 '') man3dir="none";;
7994 echo "If you don't want the manual sources installed, answer 'none'."
7995 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7997 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7998 if $test -d "$privlib/man/man3"; then
8001 WARNING: Previous versions of perl installed man3 pages into
8002 $privlib/man/man3. This version will suggest a
8003 new default of $dflt.
8007 rp='Do you wish to preserve the old behavior?(y/n)'
8010 y*) dflt="$privlib/man/man3" ;;
8015 *) dflt="$man3dir" ;;
8022 rp="Where do the $package library man pages (source) go?"
8025 man3direxp="$ansexp"
8031 : Change installation prefix, if necessary.
8032 if $test X"$prefix" != X"$installprefix"; then
8033 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8035 installman3dir="$man3direxp"
8038 : What suffix to use on installed man pages
8044 rp="What suffix should be used for the $package library man pages?"
8046 '') case "$man3dir" in
8060 *) dflt="$man3ext";;
8067 : see if we have to deal with yellow pages, now NIS.
8068 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8069 if $test -f /usr/etc/nibindd; then
8071 echo "I'm fairly confident you're on a NeXT."
8073 rp='Do you get the hosts file via NetInfo?'
8082 y*) hostcat='nidump hosts .';;
8083 *) case "$hostcat" in
8084 nidump*) hostcat='';;
8094 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8102 rp='Are you getting the hosts file via yellow pages?'
8105 y*) hostcat='ypcat hosts';;
8106 *) hostcat='cat /etc/hosts';;
8112 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8115 '') test -f /etc/group && groupcat='cat /etc/group';;
8118 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8121 : now get the host name
8123 echo "Figuring out host name..." >&4
8124 case "$myhostname" in
8126 echo 'Maybe "hostname" will work...'
8127 if tans=`sh -c hostname 2>&1` ; then
8135 if $test "$cont"; then
8137 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
8138 if tans=`cat /etc/systemid 2>&1` ; then
8140 phostname='cat /etc/systemid'
8141 echo "Whadyaknow. Xenix always was a bit strange..."
8144 elif $test -r /etc/systemid; then
8145 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8148 if $test "$cont"; then
8149 echo 'No, maybe "uuname -l" will work...'
8150 if tans=`sh -c 'uuname -l' 2>&1` ; then
8152 phostname='uuname -l'
8154 echo 'Strange. Maybe "uname -n" will work...'
8155 if tans=`sh -c 'uname -n' 2>&1` ; then
8157 phostname='uname -n'
8159 echo 'Oh well, maybe I can mine it out of whoami.h...'
8160 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8161 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8162 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8164 case "$myhostname" in
8165 '') echo "Does this machine have an identity crisis or something?"
8168 echo "Well, you said $myhostname before..."
8169 phostname='echo $myhostname';;
8175 case "$myhostname" in
8176 '') myhostname=noname ;;
8178 : you do not want to know about this
8183 if $test "$myhostname" ; then
8185 rp='Your host name appears to be "'$myhostname'".'" Right?"
8193 : bad guess or no guess
8194 while $test "X$myhostname" = X ; do
8196 rp="Please type the (one word) name of your host:"
8201 : translate upper to lower if necessary
8202 case "$myhostname" in
8204 echo "(Normalizing case in your host name)"
8205 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8209 case "$myhostname" in
8211 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8212 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8213 echo "(Trimming domain name from host name--host name is now $myhostname)"
8215 *) case "$mydomain" in
8218 test "X$hostcat" = "Xypcat hosts" &&
8219 ypmatch "$myhostname" hosts 2>/dev/null |\
8220 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
8223 test "X$hostcat" != "X" &&
8224 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
8225 /[ ]$myhostname[ . ]/p" > hosts
8228 if $test -f hosts; then
8229 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
8230 END { print sum }" hosts` = x1 || tmp_re="[ ]"
8231 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8232 hosts | $sort | $uniq | \
8233 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8234 case `$echo X$dflt` in
8235 X*\ *) echo "(Several hosts in the database matched hostname)"
8238 X.) echo "(You do not have fully-qualified names in the hosts database)"
8242 echo "(I cannot locate a hosts database anywhere)"
8247 tans=`./loc resolv.conf X /etc /usr/etc`
8248 if $test -f "$tans"; then
8249 echo "(Attempting domain name extraction from $tans)"
8250 dflt=.`$sed -n -e 's/ / /g' \
8251 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
8252 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8254 .) dflt=.`$sed -n -e 's/ / /g' \
8255 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
8256 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8263 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8264 dflt=.`sh -c domainname 2>/dev/null`
8267 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8271 case "$dflt$osname" in
8272 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8273 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8277 .) echo "(Lost all hope -- silly guess then)"
8283 *) dflt="$mydomain";;
8287 rp="What is your domain name?"
8297 : translate upper to lower if necessary
8300 echo "(Normalizing case in your domain name)"
8301 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8305 : a little sanity check here
8306 case "$phostname" in
8309 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8310 $myhostname$mydomain|$myhostname) ;;
8312 case "$phostname" in
8314 echo "(That doesn't agree with your whoami.h file, by the way.)"
8317 echo "(That doesn't agree with your $phostname command, by the way.)"
8327 I need to get your e-mail address in Internet format if possible, i.e.
8328 something like user@host.domain. Please answer accurately since I have
8329 no easy means to double check it. The default value provided below
8330 is most probably close to reality but may not be valid from outside
8331 your organization...
8335 while test "$cont"; do
8337 '') dflt="$cf_by@$myhostname$mydomain";;
8338 *) dflt="$cf_email";;
8340 rp='What is your e-mail address?'
8346 rp='Address does not look like an Internet one. Use it anyway?'
8362 If you or somebody else will be maintaining perl at your site, please
8363 fill in the correct e-mail address here so that they may be contacted
8364 if necessary. Currently, the "perlbug" program included with perl
8365 will send mail to this address in addition to perlbug@perl.org. You may
8366 enter "none" for no administrator.
8369 case "$perladmin" in
8370 '') dflt="$cf_email";;
8371 *) dflt="$perladmin";;
8373 rp='Perl administrator e-mail address'
8377 : determine whether to only install version-specific parts.
8380 Do you want to install only the version-specific parts of the perl
8381 distribution? Usually you do *not* want to do this.
8383 case "$versiononly" in
8384 "$define"|[Yy]*|true) dflt='y' ;;
8387 rp="Do you want to install only the version-specific parts of perl?"
8390 [yY]*) val="$define";;
8396 case "$versiononly" in
8397 "$define") inc_version_list=''
8398 inc_version_list_init=0
8402 : figure out how to guarantee perl startup
8403 case "$startperl" in
8405 case "$sharpbang" in
8409 I can use the #! construct to start perl on your system. This will
8410 make startup of perl scripts faster, but may cause problems if you
8411 want to share those scripts and perl is not in a standard place
8412 ($binexp/perl) on all your platforms. The alternative is to force
8413 a shell by starting the script with a single ':' character.
8416 case "$versiononly" in
8417 "$define") dflt="$binexp/perl$version";;
8418 *) dflt="$binexp/perl";;
8420 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8423 none) startperl=": # use perl";;
8424 *) startperl="#!$ans"
8425 if $test 30 -lt `echo "$ans" | wc -c`; then
8428 WARNING: Some systems limit the #! command to 32 characters.
8429 If you experience difficulty running Perl scripts with #!, try
8430 installing Perl in a directory with a shorter pathname.
8436 *) startperl=": # use perl"
8441 echo "I'll use $startperl to start perl scripts."
8443 : figure best path for perl in scripts
8446 case "$versiononly" in
8447 "$define") perlpath="$binexp/perl$version";;
8448 *) perlpath="$binexp/perl";;
8450 case "$startperl" in
8455 I will use the "eval 'exec'" idiom to start Perl on your system.
8456 I can use the full path of your Perl binary for this purpose, but
8457 doing so may cause problems if you want to share those scripts and
8458 Perl is not always in a standard place ($binexp/perl).
8462 rp="What path shall I use in \"eval 'exec'\"?"
8469 case "$startperl" in
8471 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8474 : determine where public executable scripts go
8475 set scriptdir scriptdir
8477 case "$scriptdir" in
8480 : guess some guesses
8481 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8482 $test -d /usr/share/bin && dflt=/usr/share/bin
8483 $test -d /usr/local/script && dflt=/usr/local/script
8484 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8485 $test -d $prefixexp/script && dflt=$prefixexp/script
8489 *) dflt="$scriptdir"
8494 Some installations have a separate directory just for executable scripts so
8495 that they can mount it across multiple architectures but keep the scripts in
8496 one spot. You might, for example, have a subdirectory of /usr/share for this.
8497 Or you might just lump your scripts in with all your other executables.
8501 rp='Where do you keep publicly executable scripts?'
8503 if $test "X$ansexp" != "X$scriptdirexp"; then
8507 scriptdirexp="$ansexp"
8508 : Change installation prefix, if necessary.
8509 if $test X"$prefix" != X"$installprefix"; then
8510 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8512 installscript="$scriptdirexp"
8515 : determine where add-on public executables go
8517 '') dflt=$siteprefix/bin ;;
8521 rp='Pathname where the add-on public executables should be installed?'
8524 sitebinexp="$ansexp"
8525 : Change installation prefix, if necessary.
8526 if $test X"$prefix" != X"$installprefix"; then
8527 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8529 installsitebin="$sitebinexp"
8532 : define an is-a-typedef? function
8533 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8535 "") inclist="sys/types.h";;
8537 eval "varval=\$$var";
8541 for inc in $inclist; do
8542 echo "#include <$inc>" >>temp.c;
8544 echo "#ifdef $type" >> temp.c;
8545 echo "printf(\"We have $type\");" >> temp.c;
8546 echo "#endif" >> temp.c;
8547 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8548 if $contains $type temp.E >/dev/null 2>&1; then
8554 *) eval "$var=\$varval";;
8557 : define an is-a-typedef? function that prompts if the type is not available.
8558 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8560 "") inclist="sys/types.h";;
8562 eval "varval=\$$var";
8566 for inc in $inclist; do
8567 echo "#include <$inc>" >>temp.c;
8569 echo "#ifdef $type" >> temp.c;
8570 echo "printf(\"We have $type\");" >> temp.c;
8571 echo "#endif" >> temp.c;
8572 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8574 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8575 if $contains $type temp.E >/dev/null 2>&1; then
8576 echo "$type found." >&4;
8579 echo "$type NOT found." >&4;
8585 *) eval "$var=\$varval";;
8588 : see what type lseek is declared as in the kernel
8589 rp="What is the type used for lseek's offset on this system?"
8590 set off_t lseektype long stdio.h sys/types.h
8594 echo "Checking to see how big your file offsets are..." >&4
8596 #include <sys/types.h>
8600 printf("%d\n", (int)sizeof($lseektype));
8605 if eval $compile_ok; then
8606 lseeksize=`$run ./try`
8607 echo "Your file offsets are $lseeksize bytes long."
8611 echo "(I can't seem to compile the test program. Guessing...)"
8612 rp="What is the size of your file offsets (in bytes)?"
8618 : see what type file positions are declared as in the library
8619 rp="What is the type for file position used by fsetpos()?"
8620 set fpos_t fpostype long stdio.h sys/types.h
8625 *_t) zzz="$fpostype" ;;
8628 echo "Checking the size of $zzz..." >&4
8630 #include <sys/types.h>
8633 printf("%d\n", (int)sizeof($fpostype));
8638 if eval $compile_ok; then
8642 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8645 echo "Your $zzz is $fpossize bytes long."
8651 echo "(I can't compile the test program. Guessing...)" >&4
8652 rp="What is the size of your file positions (in bytes)?"
8659 # Backward compatibility (uselfs is deprecated).
8661 "$define"|true|[yY]*)
8664 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8666 uselargefiles="$define"
8670 case "$lseeksize:$fpossize" in
8673 You can have files larger than 2 gigabytes.
8676 *) case "$uselargefiles" in
8677 "$undef"|false|[nN]*) dflt='n' ;;
8682 Perl can be built to understand large files (files larger than 2 gigabytes)
8683 on some systems. To do so, Configure can be run with -Duselargefiles.
8685 If this doesn't make any sense to you, just accept the default '$dflt'.
8687 rp='Try to understand large files, if available?'
8690 y|Y) val="$define" ;;
8697 case "$uselargefiles" in
8699 : Look for a hint-file generated 'call-back-unit'. If the
8700 : user has specified that a large files perl is to be built,
8701 : we may need to set or change some other defaults.
8702 if $test -f uselargefiles.cbu; then
8703 echo "Your platform has some specific hints for large file builds, using them..."
8704 . ./uselargefiles.cbu
8706 echo "Rechecking to see how big your file offsets are..." >&4
8708 #include <sys/types.h>
8712 printf("%d\n", (int)sizeof($lseektype));
8717 if eval $compile_ok; then
8718 lseeksize=`$run ./try`
8719 $echo "Your file offsets are now $lseeksize bytes long."
8723 echo "(I can't seem to compile the test program. Guessing...)"
8724 rp="What is the size of your file offsets (in bytes)?"
8729 *_t) zzz="$fpostype" ;;
8732 $echo $n "Rechecking the size of $zzz...$c" >&4
8734 #include <sys/types.h>
8737 printf("%d\n", (int)sizeof($fpostype));
8742 if eval $compile_ok; then
8747 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8750 echo " $fpossize bytes." >&4
8756 echo "(I can't compile the test program. Guessing...)" >&4
8757 rp="What is the size of your file positions (in bytes)?"
8766 case "$vendorprefix" in
8767 '') d_vendorbin="$undef"
8771 *) d_vendorbin="$define"
8772 : determine where vendor-supplied executables go.
8773 case "$vendorbin" in
8774 '') dflt=$vendorprefix/bin ;;
8775 *) dflt="$vendorbin" ;;
8778 rp='Pathname for the vendor-supplied executables directory?'
8781 vendorbinexp="$ansexp"
8784 : Change installation prefix, if necessary.
8785 if $test X"$prefix" != X"$installprefix"; then
8786 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8788 installvendorbin="$vendorbinexp"
8791 : see if qgcvt exists
8795 : Check how to convert floats to strings.
8797 if test "X$d_Gconvert" = X; then
8800 echo "Checking for an efficient way to convert floats to strings."
8802 case "$uselongdouble" in
8803 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8805 case "$d_longdbl" in
8806 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8808 case "$d_PRIgldbl" in
8809 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8813 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8814 char *myname = "gconvert";
8817 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8818 char *myname = "gcvt";
8821 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8822 char *myname = "qgcvt";
8823 #define DOUBLETYPE long double
8826 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8828 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8830 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
8833 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8835 char *myname = "sprintf";
8839 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8840 #define DOUBLETYPE long double
8842 #define DOUBLETYPE double
8848 #define I_STDLIB $i_stdlib
8854 checkit(expect, got)
8858 if (strcmp(expect, got)) {
8859 printf("%s oddity: Expected %s, got %s\n",
8860 myname, expect, got);
8870 /* This must be 1st test on (which?) platform */
8871 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8872 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8873 checkit("0.1", buf);
8875 Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
8876 checkit("0.01", buf);
8878 Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
8879 checkit("0.001", buf);
8881 Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
8882 checkit("0.0001", buf);
8884 Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
8885 if (strlen(buf) > 5)
8886 checkit("9e-005", buf); /* for Microsoft ?? */
8888 checkit("9e-05", buf);
8890 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8893 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8894 checkit("1.1", buf);
8896 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8897 checkit("1.01", buf);
8899 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8900 checkit("1.001", buf);
8902 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8903 checkit("1.0001", buf);
8905 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8906 checkit("1.00001", buf);
8908 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8909 checkit("1.000001", buf);
8911 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8914 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8917 /* Some Linux gcvt's give 1.e+5 here. */
8918 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8919 checkit("100000", buf);
8921 /* Some Linux gcvt's give -1.e+5 here. */
8922 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8923 checkit("-100000", buf);
8925 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8926 checkit("123.456", buf);
8928 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8929 Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
8930 /* 34 should be enough to scare even long double
8931 * places into using the e notation. */
8932 if (strlen(buf) > 5)
8933 checkit("1e+034", buf); /* for Microsoft */
8935 checkit("1e+34", buf);
8937 /* For Perl, if you add additional tests here, also add them to
8938 * t/base/num.t for benefit of platforms not using Configure or
8939 * overriding d_Gconvert */
8944 : first add preferred functions to our list
8946 for xxx_convert in $gconvert_preference; do
8947 case $xxx_convert in
8948 gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
8949 *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
8952 : then add any others
8953 for xxx_convert in gconvert gcvt sprintf; do
8956 *) xxx_list="$xxx_list $xxx_convert" ;;
8960 case "$d_longdbl$uselongdouble" in
8962 : again, add prefered functions to our list first
8964 for xxx_convert in $gconvert_ld_preference; do
8965 case $xxx_convert in
8966 qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8967 *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
8970 : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
8971 for xxx_convert in qgcvt sprintf $xxx_list; do
8972 case "$xxx_ld_list" in
8973 $xxx_convert*|*" $xxx_convert"*) ;;
8974 *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
8977 : if sprintf cannot do long doubles, move it to the end
8978 if test "$d_PRIgldbl" != "$define"; then
8979 xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
8981 : if no qgcvt, remove it
8982 if test "$d_qgcvt" != "$define"; then
8983 xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
8986 xxx_list="$xxx_ld_list"
8990 for xxx_convert in $xxx_list; do
8991 echo "Trying $xxx_convert..."
8993 set try -DTRY_$xxx_convert
8994 if eval $compile; then
8995 echo "$xxx_convert() found." >&4
8997 echo "I'll use $xxx_convert to convert floats into a string." >&4
9000 echo "...But $xxx_convert didn't work as I expected."
9004 echo "$xxx_convert NOT found." >&4
9008 if test X$xxx_convert = X; then
9009 echo "*** WHOA THERE!!! ***" >&4
9010 echo "None of ($xxx_list) seemed to work properly. I'll use sprintf." >&4
9014 case "$xxx_convert" in
9015 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9016 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9017 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9018 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9019 "$define$define$define")
9020 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9021 "$define$define$undef")
9022 d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9023 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9030 : see if _fwalk exists
9034 : Initialize h_fcntl
9037 : Initialize h_sysfile
9040 : access call always available on UNIX
9044 : locate the flags for 'access()'
9048 $cat >access.c <<'EOCP'
9049 #include <sys/types.h>
9054 #include <sys/file.h>
9063 : check sys/file.h first, no particular reason here
9064 if $test `./findhdr sys/file.h` && \
9065 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9067 echo "<sys/file.h> defines the *_OK access constants." >&4
9068 elif $test `./findhdr fcntl.h` && \
9069 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9071 echo "<fcntl.h> defines the *_OK access constants." >&4
9072 elif $test `./findhdr unistd.h` && \
9073 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9074 echo "<unistd.h> defines the *_OK access constants." >&4
9076 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9082 : see if accessx exists
9083 set accessx d_accessx
9086 : see if alarm exists
9090 : define a fucntion to check prototypes
9091 $cat > protochk <<EOSH
9094 optimize="$optimize"
9096 prototype="$prototype"
9101 $cat >> protochk <<'EOSH'
9106 while test $# -ge 2; do
9108 $define) echo "#include <$2>" >> try.c ;;
9109 literal) echo "$2" >> try.c ;;
9113 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
9114 cat >> try.c <<'EOCP'
9115 #ifdef CAN_PROTOTYPE
9116 #define _(args) args
9121 echo "$foo" >> try.c
9122 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9123 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9131 hasproto='varname=$1; func=$2; shift; shift;
9132 while $test $# -ge 2; do
9134 $define) echo "#include <$2>";;
9138 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9139 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9140 echo "$func() prototype found.";
9143 echo "$func() prototype NOT found.";
9148 $rm -f try.c tryout.c'
9150 : see if sys/types.h has to be included
9151 set sys/types.h i_systypes
9154 : see if sys/select.h has to be included
9155 set sys/select.h i_sysselct
9158 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9159 while $test $# -ge 2; do
9161 $define) echo "#include <$2>";;
9165 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9167 if eval $compile; then
9176 : see if we should include time.h, sys/time.h, or both
9178 if test "X$timeincl" = X; then
9179 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9180 $echo $n "I'm now running the test program...$c"
9181 $cat >try.c <<'EOCP'
9182 #include <sys/types.h>
9187 #ifdef SYSTIMEKERNEL
9190 #include <sys/time.h>
9193 #include <sys/select.h>
9202 struct timezone tzp;
9204 if (foo.tm_sec == foo.tm_sec)
9207 if (bar.tv_sec == bar.tv_sec)
9214 for s_timezone in '-DS_TIMEZONE' ''; do
9216 for s_timeval in '-DS_TIMEVAL' ''; do
9217 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9218 for i_time in '' '-DI_TIME'; do
9219 for i_systime in '-DI_SYSTIME' ''; do
9222 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9223 if eval $compile; then
9224 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9228 $echo $n "Succeeded with $flags$c"
9240 *SYSTIMEKERNEL*) i_systimek="$define"
9241 timeincl=`./findhdr sys/time.h`
9242 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9243 *) i_systimek="$undef";;
9246 *I_TIME*) i_time="$define"
9247 timeincl=`./findhdr time.h`" $timeincl"
9248 echo "We'll include <time.h>." >&4;;
9249 *) i_time="$undef";;
9252 *I_SYSTIME*) i_systime="$define"
9253 timeincl=`./findhdr sys/time.h`" $timeincl"
9254 echo "We'll include <sys/time.h>." >&4;;
9255 *) i_systime="$undef";;
9259 : see if struct tm knows about tm_zone
9260 case "$i_systime$i_time" in
9263 echo "Checking to see if your struct tm has tm_zone field..." >&4
9264 set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9272 case "$d_tm_tm_zone" in
9273 "$define") echo "Yes, it does." ;;
9274 *) echo "No, it doesn't." ;;
9276 : see if struct tm knows about tm_gmtoff
9277 case "$i_systime$i_time" in
9280 echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9281 set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9289 case "$d_tm_tm_gmtoff" in
9290 "$define") echo "Yes, it does." ;;
9291 *) echo "No, it doesn't." ;;
9294 : see if asctime_r exists
9295 set asctime_r d_asctime_r
9297 case "$d_asctime_r" in
9299 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
9302 hdrs="$hdrs $i_systime sys/time.h"
9305 case "$d_asctime_r_proto:$usethreads" in
9306 ":define") d_asctime_r_proto=define
9307 set d_asctime_r_proto asctime_r $hdrs
9311 case "$d_asctime_r_proto" in
9313 case "$asctime_r_proto" in
9314 ''|0) try='char* asctime_r(const struct tm*, char*);'
9315 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9317 case "$asctime_r_proto" in
9318 ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9319 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9321 case "$asctime_r_proto" in
9322 ''|0) try='int asctime_r(const struct tm*, char*);'
9323 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9325 case "$asctime_r_proto" in
9326 ''|0) try='int asctime_r(const struct tm*, char*, int);'
9327 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9329 case "$asctime_r_proto" in
9330 ''|0) d_asctime_r=undef
9332 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9333 * ) case "$asctime_r_proto" in
9334 REENTRANT_PROTO*) ;;
9335 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9337 echo "Prototype: $try" ;;
9340 *) case "$usethreads" in
9341 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9348 *) asctime_r_proto=0
9352 : see if atolf exists
9356 : see if atoll exists
9360 : Look for GNU-cc style attribute checking
9362 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9363 $cat >attrib.c <<'EOCP'
9365 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
9367 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9368 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9369 echo "Your C compiler doesn't fully support __attribute__."
9372 echo "Your C compiler supports __attribute__."
9376 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9383 : see if bcmp exists
9387 : see if bcopy exists
9391 : see if this is a unistd.h system
9392 set unistd.h i_unistd
9395 : see if getpgrp exists
9396 set getpgrp d_getpgrp
9399 case "$d_getpgrp" in
9402 echo "Checking to see which flavor of getpgrp is in use..."
9405 #include <sys/types.h>
9407 # include <unistd.h>
9411 if (getuid() == 0) {
9412 printf("(I see you are running Configure as super-user...)\n");
9416 if (getpgrp(1) == 0)
9425 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9426 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9428 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9429 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9432 echo "I can't seem to compile and run the test program."
9434 xxx="a USG one, i.e. you use getpgrp()."
9436 # SVR4 systems can appear rather BSD-ish.
9439 xxx="a BSD one, i.e. you use getpgrp(pid)."
9443 xxx="probably a USG one, i.e. you use getpgrp()."
9448 echo "Assuming your getpgrp is $xxx" >&4
9457 : see if setpgrp exists
9458 set setpgrp d_setpgrp
9461 case "$d_setpgrp" in
9464 echo "Checking to see which flavor of setpgrp is in use..."
9467 #include <sys/types.h>
9469 # include <unistd.h>
9473 if (getuid() == 0) {
9474 printf("(I see you are running Configure as super-user...)\n");
9478 if (-1 == setpgrp(1, 1))
9481 if (setpgrp() != -1)
9487 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9488 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
9490 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9491 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
9494 echo "(I can't seem to compile and run the test program.)"
9496 xxx="a USG one, i.e. you use setpgrp()."
9498 # SVR4 systems can appear rather BSD-ish.
9501 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
9505 xxx="probably a USG one, i.e. you use setpgrp()."
9510 echo "Assuming your setpgrp is $xxx" >&4
9518 : see if bzero exists
9522 : see if signal is declared as pointer to function returning int or void
9524 xxx=`./findhdr signal.h`
9525 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
9526 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
9527 echo "You have int (*signal())() instead of void." >&4
9529 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
9530 echo "You have void (*signal())()." >&4
9532 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
9533 echo "You have int (*signal())() instead of void." >&4
9535 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
9536 echo "You have void (*signal())()." >&4
9539 case "$d_voidsig" in
9541 echo "I can't determine whether signal handler returns void or int..." >&4
9543 rp="What type does your signal handler return?"
9550 echo "As you already told me, signal handler returns void." >&4
9553 *) echo "As you already told me, signal handler returns int." >&4
9560 case "$d_voidsig" in
9561 "$define") signal_t="void";;
9566 : check for ability to cast large floats to 32-bit ints.
9568 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
9569 if $test "$intsize" -ge 4; then
9576 #include <sys/types.h>
9578 $signal_t blech(s) int s; { exit(3); }
9585 signal(SIGFPE, blech);
9587 /* Don't let compiler optimize the test away. Store the number
9588 in a writable string for gcc to pass to sscanf under HP/UX.
9590 sprintf(str, "2147483647");
9591 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
9595 /* x86 processors will probably give 0x8000 0000, which is a
9596 sign change. We don't want that. We want to mimic SPARC
9597 behavior here, which is to preserve the sign and give
9600 if (i32 != ($xxx) f)
9606 if eval $compile_ok; then
9610 echo "(I can't seem to compile the test program--assuming it can't)"
9618 echo "Nope, it can't."
9625 : check for ability to cast negative floats to unsigned
9627 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
9630 #include <sys/types.h>
9632 $signal_t blech(s) int s; { exit(7); }
9633 $signal_t blech_in_list(s) int s; { exit(4); }
9634 unsigned long dummy_long(p) unsigned long p; { return p; }
9635 unsigned int dummy_int(p) unsigned int p; { return p; }
9636 unsigned short dummy_short(p) unsigned short p; { return p; }
9640 unsigned long along;
9642 unsigned short ashort;
9646 /* Frustrate gcc-2.7.2's optimizer which failed this test with
9647 a direct f = -123. assignment. gcc-2.8.0 reportedly
9648 optimized the whole file away
9650 /* Store the number in a writable string for gcc to pass to
9653 sprintf(str, "-123");
9654 sscanf(str, "%lf", &f); /* f = -123.; */
9656 signal(SIGFPE, blech);
9657 along = (unsigned long)f;
9658 aint = (unsigned int)f;
9659 ashort = (unsigned short)f;
9660 if (along != (unsigned long)-123)
9662 if (aint != (unsigned int)-123)
9664 if (ashort != (unsigned short)-123)
9666 sprintf(str, "1073741824.");
9667 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9670 along = (unsigned long)f;
9671 if (along != 0x80000000)
9675 along = (unsigned long)f;
9676 if (along != 0x7fffffff)
9680 along = (unsigned long)f;
9681 if (along != 0x80000001)
9685 signal(SIGFPE, blech_in_list);
9686 sprintf(str, "123.");
9687 sscanf(str, "%lf", &f); /* f = 123.; */
9688 along = dummy_long((unsigned long)f);
9689 aint = dummy_int((unsigned int)f);
9690 ashort = dummy_short((unsigned short)f);
9691 if (along != (unsigned long)123)
9693 if (aint != (unsigned int)123)
9695 if (ashort != (unsigned short)123)
9702 if eval $compile_ok; then
9706 echo "(I can't seem to compile the test program--assuming it can't)"
9709 case "$castflags" in
9714 echo "Nope, it can't."
9721 : see if vprintf exists
9723 if set vprintf val -f d_vprintf; eval $csym; $val; then
9724 echo 'vprintf() found.' >&4
9727 #include <varargs.h>
9729 int main() { xxx("foo"); }
9738 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9742 if eval $compile && $run ./try; then
9743 echo "Your vsprintf() returns (int)." >&4
9746 echo "Your vsprintf() returns (char*)." >&4
9750 echo 'vprintf() NOT found.' >&4
9761 : see if chown exists
9765 : see if chroot exists
9769 : see if chsize exists
9773 : see if class exists
9777 hasstruct='varname=$1; struct=$2; shift; shift;
9778 while $test $# -ge 2; do
9780 $define) echo "#include <$2>";;
9784 echo "int main () { struct $struct foo; }" >> try.c;
9786 if eval $compile; then
9797 : see whether socket exists
9799 $echo $n "Hmm... $c" >&4
9800 if set socket val -f d_socket; eval $csym; $val; then
9801 echo "Looks like you have Berkeley networking support." >&4
9803 if set setsockopt val -f; eval $csym; $val; then
9806 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9810 if $contains socklib libc.list >/dev/null 2>&1; then
9811 echo "Looks like you have Berkeley networking support." >&4
9813 : we will have to assume that it supports the 4.2 BSD interface
9816 echo "You don't have Berkeley networking in libc$_a..." >&4
9817 if test "X$d_socket" = "X$define"; then
9818 echo "...but you seem to believe that you have sockets." >&4
9820 for net in net socket
9822 if test -f /usr/lib/lib$net$_a; then
9823 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9824 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9825 if $contains socket libc.list >/dev/null 2>&1; then
9830 echo "...but the Wollongong group seems to have hacked it in." >&4
9831 sockethdr="-I/usr/netinclude"
9834 echo "Found Berkeley sockets interface in lib$net." >&4
9835 if $contains setsockopt libc.list >/dev/null 2>&1; then
9838 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9845 if test "X$d_socket" != "X$define"; then
9846 echo "or anywhere else I see." >&4
9854 : see if socketpair exists
9855 set socketpair d_sockpair
9860 echo "Checking the availability of certain socket constants..." >&4
9861 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9862 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9864 #include <sys/types.h>
9865 #include <sys/socket.h>
9871 set try; if eval $compile; then
9874 set d_${enum}; eval $setvar
9878 : see if this is a sys/uio.h system
9879 set sys/uio.h i_sysuio
9884 echo "Checking to see if your system supports struct cmsghdr..." >&4
9885 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9887 case "$d_cmsghdr_s" in
9888 "$define") echo "Yes, it does." ;;
9889 *) echo "No, it doesn't." ;;
9893 : check for const keyword
9895 echo 'Checking to see if your C compiler knows about "const"...' >&4
9896 $cat >const.c <<'EOCP'
9897 typedef struct spug { int drokk; } spug;
9904 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9906 echo "Yup, it does."
9909 echo "Nope, it doesn't."
9914 : see if crypt exists
9919 $define) cryptlib='' ;;
9920 *) if set crypt val -f d_crypt; eval $csym; $val; then
9921 echo 'crypt() found.' >&4
9925 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9926 if $test -z "$cryptlib"; then
9927 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9931 if $test -z "$cryptlib"; then
9932 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9936 if $test -z "$cryptlib"; then
9937 cryptlib=`./loc libcrypt$_a "" $libpth`
9941 if $test -z "$cryptlib"; then
9942 echo 'crypt() NOT found.' >&4
9953 : see if this is a crypt.h system
9957 : see if crypt_r exists
9958 set crypt_r d_crypt_r
9960 case "$d_crypt_r" in
9962 hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
9965 hdrs="$hdrs $i_systime sys/time.h"
9968 case "$d_crypt_r_proto:$usethreads" in
9969 ":define") d_crypt_r_proto=define
9970 set d_crypt_r_proto crypt_r $hdrs
9974 case "$d_crypt_r_proto" in
9976 case "$crypt_r_proto" in
9977 ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
9978 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
9980 case "$crypt_r_proto" in
9981 ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
9982 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
9984 case "$crypt_r_proto" in
9985 ''|0) d_crypt_r=undef
9987 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
9988 * ) case "$crypt_r_proto" in
9989 REENTRANT_PROTO*) ;;
9990 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
9992 echo "Prototype: $try" ;;
9995 *) case "$usethreads" in
9996 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10007 : get csh whereabouts
10009 'csh') val="$undef" ;;
10010 *) val="$define" ;;
10014 : Respect a hint or command line value for full_csh.
10015 case "$full_csh" in
10016 '') full_csh=$csh ;;
10019 : see if ctermid_r exists
10020 set ctermid_r d_ctermid_r
10022 case "$d_ctermid_r" in
10024 hdrs="$i_systypes sys/types.h define stdio.h "
10027 hdrs="$hdrs $i_systime sys/time.h"
10030 case "$d_ctermid_r_proto:$usethreads" in
10031 ":define") d_ctermid_r_proto=define
10032 set d_ctermid_r_proto ctermid_r $hdrs
10036 case "$d_ctermid_r_proto" in
10038 case "$ctermid_r_proto" in
10039 ''|0) try='char* ctermid_r(char*);'
10040 ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10042 case "$ctermid_r_proto" in
10043 ''|0) d_ctermid_r=undef
10045 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10046 * ) case "$ctermid_r_proto" in
10047 REENTRANT_PROTO*) ;;
10048 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10050 echo "Prototype: $try" ;;
10053 *) case "$usethreads" in
10054 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10061 *) ctermid_r_proto=0
10065 : see if ctime_r exists
10066 set ctime_r d_ctime_r
10068 case "$d_ctime_r" in
10070 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
10073 hdrs="$hdrs $i_systime sys/time.h"
10076 case "$d_ctime_r_proto:$usethreads" in
10077 ":define") d_ctime_r_proto=define
10078 set d_ctime_r_proto ctime_r $hdrs
10082 case "$d_ctime_r_proto" in
10084 case "$ctime_r_proto" in
10085 ''|0) try='char* ctime_r(const time_t*, char*);'
10086 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10088 case "$ctime_r_proto" in
10089 ''|0) try='char* ctime_r(const time_t*, char*, int);'
10090 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10092 case "$ctime_r_proto" in
10093 ''|0) try='int ctime_r(const time_t*, char*);'
10094 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10096 case "$ctime_r_proto" in
10097 ''|0) try='int ctime_r(const time_t*, char*, int);'
10098 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10100 case "$ctime_r_proto" in
10101 ''|0) d_ctime_r=undef
10103 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10104 * ) case "$ctime_r_proto" in
10105 REENTRANT_PROTO*) ;;
10106 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10108 echo "Prototype: $try" ;;
10111 *) case "$usethreads" in
10112 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10123 : see if cuserid exists
10124 set cuserid d_cuserid
10127 : see if this is a limits.h system
10128 set limits.h i_limits
10131 : see if this is a float.h system
10132 set float.h i_float
10135 : See if number of significant digits in a double precision number is known
10137 $cat >dbl_dig.c <<EOM
10138 #$i_limits I_LIMITS
10141 #include <limits.h>
10147 printf("Contains DBL_DIG");
10150 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10151 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10152 echo "DBL_DIG found." >&4
10155 echo "DBL_DIG NOT found." >&4
10162 : see if dbm.h is available
10163 : see if dbmclose exists
10164 set dbmclose d_dbmclose
10167 case "$d_dbmclose" in
10177 *) set rpcsvc/dbm.h i_rpcsvcdbm
10182 *) echo "We won't be including <dbm.h>"
10192 : see if prototype for dbminit is available
10194 set d_dbminitproto dbminit $i_dbm dbm.h
10197 : see if difftime exists
10198 set difftime d_difftime
10201 : see if this is a dirent system
10203 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10205 echo "<dirent.h> found." >&4
10208 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10209 echo "<sys/dir.h> found." >&4
10212 xinc=`./findhdr sys/ndir.h`
10214 echo "<dirent.h> NOT found." >&4
10219 : Look for type of directory structure.
10221 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10223 case "$direntrytype" in
10225 case "$i_dirent" in
10226 $define) guess1='struct dirent' ;;
10227 *) guess1='struct direct' ;;
10230 *) guess1="$direntrytype"
10235 'struct dirent') guess2='struct direct' ;;
10236 *) guess2='struct dirent' ;;
10239 if $contains "$guess1" try.c >/dev/null 2>&1; then
10240 direntrytype="$guess1"
10241 echo "Your directory entries are $direntrytype." >&4
10242 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10243 direntrytype="$guess2"
10244 echo "Your directory entries seem to be $direntrytype." >&4
10246 echo "I don't recognize your system's directory entries." >&4
10247 rp="What type is used for directory entries on this system?"
10250 direntrytype="$ans"
10255 : see if the directory entry stores field length
10257 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10258 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10259 echo "Good, your directory entry keeps length information in d_namlen." >&4
10262 echo "Your directory entry does not know about the d_namlen field." >&4
10269 : see if this is an sysdir system
10270 set sys/dir.h i_sysdir
10273 : see if this is an sysndir system
10274 set sys/ndir.h i_sysndir
10279 $cat >dirfd.c <<EOM
10281 #$i_dirent I_DIRENT /**/
10282 #$i_sysdir I_SYS_DIR /**/
10283 #$i_sysndir I_SYS_NDIR /**/
10284 #$i_systypes I_SYS_TYPES /**/
10285 #if defined(I_SYS_TYPES)
10286 #include <sys/types.h>
10288 #if defined(I_DIRENT)
10289 #include <dirent.h>
10290 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10291 #include <sys/dir.h>
10295 #include <sys/ndir.h>
10299 #include <ndir.h> /* may be wrong in the future */
10301 #include <sys/dir.h>
10307 DIR *dirp = opendir(".");
10308 if (dirfd(dirp) >= 0)
10315 if eval $compile; then
10319 $define) echo "dirfd() found." >&4 ;;
10320 *) echo "dirfd() NOT found." >&4 ;;
10326 : see if dlerror exists
10329 set dlerror d_dlerror
10333 : see if dlfcn is available
10334 set dlfcn.h i_dlfcn
10341 On a few systems, the dynamically loaded modules that perl generates and uses
10342 will need a different extension than shared libs. The default will probably
10348 *) dflt="$dlext" ;;
10350 rp='What is the extension of dynamically loaded modules'
10359 : Check if dlsym need a leading underscore
10365 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10366 $cat >dyna.c <<'EOM'
10375 #include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
10377 #include <sys/types.h>
10382 extern int fred() ;
10391 int mode = RTLD_LAZY ;
10393 handle = dlopen("./dyna.$dlext", mode) ;
10394 if (handle == NULL) {
10399 symbol = dlsym(handle, "fred") ;
10400 if (symbol == NULL) {
10401 /* try putting a leading underscore */
10402 symbol = dlsym(handle, "_fred") ;
10403 if (symbol == NULL) {
10416 : Call the object file tmp-dyna.o in case dlext=o.
10417 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
10418 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
10419 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
10420 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10423 1) echo "Test program failed using dlopen." >&4
10424 echo "Perhaps you should not use dynamic loading." >&4;;
10425 2) echo "Test program failed using dlsym." >&4
10426 echo "Perhaps you should not use dynamic loading." >&4;;
10427 3) echo "dlsym needs a leading underscore" >&4
10429 4) echo "dlsym doesn't need a leading underscore." >&4;;
10432 echo "I can't compile and run the test program." >&4
10433 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10438 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10443 : see if drand48_r exists
10444 set drand48_r d_drand48_r
10446 case "$d_drand48_r" in
10448 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10451 hdrs="$hdrs $i_systime sys/time.h"
10454 case "$d_drand48_r_proto:$usethreads" in
10455 ":define") d_drand48_r_proto=define
10456 set d_drand48_r_proto drand48_r $hdrs
10460 case "$d_drand48_r_proto" in
10462 case "$drand48_r_proto" in
10463 ''|0) try='int drand48_r(struct drand48_data*, double*);'
10464 ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
10466 case "$drand48_r_proto" in
10467 ''|0) d_drand48_r=undef
10469 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
10470 * ) case "$drand48_r_proto" in
10471 REENTRANT_PROTO*) ;;
10472 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
10474 echo "Prototype: $try" ;;
10477 *) case "$usethreads" in
10478 define) echo "drand48_r has no prototype, not using it." >&4 ;;
10485 *) drand48_r_proto=0
10489 : see if prototype for drand48 is available
10491 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
10494 : see if dup2 exists
10498 : see if eaccess exists
10499 set eaccess d_eaccess
10502 : see if endgrent exists
10503 set endgrent d_endgrent
10506 : see if this is an grp system
10512 xxx=`./findhdr grp.h`
10513 $cppstdin $cppflags $cppminus < $xxx >$$.h
10515 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10527 set d_grpasswd; eval $setvar
10531 : see if endgrent_r exists
10532 set endgrent_r d_endgrent_r
10534 case "$d_endgrent_r" in
10536 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
10539 hdrs="$hdrs $i_systime sys/time.h"
10542 case "$d_endgrent_r_proto:$usethreads" in
10543 ":define") d_endgrent_r_proto=define
10544 set d_endgrent_r_proto endgrent_r $hdrs
10548 case "$d_endgrent_r_proto" in
10550 case "$endgrent_r_proto" in
10551 ''|0) try='int endgrent_r(FILE**);'
10552 ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
10554 case "$endgrent_r_proto" in
10555 ''|0) try='void endgrent_r(FILE**);'
10556 ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
10558 case "$endgrent_r_proto" in
10559 ''|0) d_endgrent_r=undef
10561 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
10562 * ) case "$endgrent_r_proto" in
10563 REENTRANT_PROTO*) ;;
10564 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
10566 echo "Prototype: $try" ;;
10569 *) case "$usethreads" in
10570 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
10577 *) endgrent_r_proto=0
10581 : see if endhostent exists
10582 set endhostent d_endhent
10585 : see if this is a netdb.h system
10586 set netdb.h i_netdb
10589 : see if endhostent_r exists
10590 set endhostent_r d_endhostent_r
10592 case "$d_endhostent_r" in
10594 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10597 hdrs="$hdrs $i_systime sys/time.h"
10600 case "$d_endhostent_r_proto:$usethreads" in
10601 ":define") d_endhostent_r_proto=define
10602 set d_endhostent_r_proto endhostent_r $hdrs
10606 case "$d_endhostent_r_proto" in
10608 case "$endhostent_r_proto" in
10609 ''|0) try='int endhostent_r(struct hostent_data*);'
10610 ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
10612 case "$endhostent_r_proto" in
10613 ''|0) try='void endhostent_r(struct hostent_data*);'
10614 ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
10616 case "$endhostent_r_proto" in
10617 ''|0) d_endhostent_r=undef
10618 endhostent_r_proto=0
10619 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
10620 * ) case "$endhostent_r_proto" in
10621 REENTRANT_PROTO*) ;;
10622 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
10624 echo "Prototype: $try" ;;
10627 *) case "$usethreads" in
10628 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
10630 d_endhostent_r=undef
10631 endhostent_r_proto=0
10635 *) endhostent_r_proto=0
10639 : see if endnetent exists
10640 set endnetent d_endnent
10643 : see if endnetent_r exists
10644 set endnetent_r d_endnetent_r
10646 case "$d_endnetent_r" in
10648 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10651 hdrs="$hdrs $i_systime sys/time.h"
10654 case "$d_endnetent_r_proto:$usethreads" in
10655 ":define") d_endnetent_r_proto=define
10656 set d_endnetent_r_proto endnetent_r $hdrs
10660 case "$d_endnetent_r_proto" in
10662 case "$endnetent_r_proto" in
10663 ''|0) try='int endnetent_r(struct netent_data*);'
10664 ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
10666 case "$endnetent_r_proto" in
10667 ''|0) try='void endnetent_r(struct netent_data*);'
10668 ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
10670 case "$endnetent_r_proto" in
10671 ''|0) d_endnetent_r=undef
10672 endnetent_r_proto=0
10673 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
10674 * ) case "$endnetent_r_proto" in
10675 REENTRANT_PROTO*) ;;
10676 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
10678 echo "Prototype: $try" ;;
10681 *) case "$usethreads" in
10682 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
10684 d_endnetent_r=undef
10685 endnetent_r_proto=0
10689 *) endnetent_r_proto=0
10693 : see if endprotoent exists
10694 set endprotoent d_endpent
10697 : see if endprotoent_r exists
10698 set endprotoent_r d_endprotoent_r
10700 case "$d_endprotoent_r" in
10702 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10705 hdrs="$hdrs $i_systime sys/time.h"
10708 case "$d_endprotoent_r_proto:$usethreads" in
10709 ":define") d_endprotoent_r_proto=define
10710 set d_endprotoent_r_proto endprotoent_r $hdrs
10714 case "$d_endprotoent_r_proto" in
10716 case "$endprotoent_r_proto" in
10717 ''|0) try='int endprotoent_r(struct protoent_data*);'
10718 ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
10720 case "$endprotoent_r_proto" in
10721 ''|0) try='void endprotoent_r(struct protoent_data*);'
10722 ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
10724 case "$endprotoent_r_proto" in
10725 ''|0) d_endprotoent_r=undef
10726 endprotoent_r_proto=0
10727 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
10728 * ) case "$endprotoent_r_proto" in
10729 REENTRANT_PROTO*) ;;
10730 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
10732 echo "Prototype: $try" ;;
10735 *) case "$usethreads" in
10736 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
10738 d_endprotoent_r=undef
10739 endprotoent_r_proto=0
10743 *) endprotoent_r_proto=0
10747 : see if endpwent exists
10748 set endpwent d_endpwent
10751 : see if this is a pwd.h system
10757 xxx=`./findhdr pwd.h`
10758 $cppstdin $cppflags $cppminus < $xxx >$$.h
10760 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10768 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10776 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10784 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10792 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10800 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10808 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10816 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10828 set d_pwquota; eval $setvar
10829 set d_pwage; eval $setvar
10830 set d_pwchange; eval $setvar
10831 set d_pwclass; eval $setvar
10832 set d_pwexpire; eval $setvar
10833 set d_pwcomment; eval $setvar
10834 set d_pwgecos; eval $setvar
10835 set d_pwpasswd; eval $setvar
10839 : see if endpwent_r exists
10840 set endpwent_r d_endpwent_r
10842 case "$d_endpwent_r" in
10844 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
10847 hdrs="$hdrs $i_systime sys/time.h"
10850 case "$d_endpwent_r_proto:$usethreads" in
10851 ":define") d_endpwent_r_proto=define
10852 set d_endpwent_r_proto endpwent_r $hdrs
10856 case "$d_endpwent_r_proto" in
10858 case "$endpwent_r_proto" in
10859 ''|0) try='int endpwent_r(FILE**);'
10860 ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
10862 case "$endpwent_r_proto" in
10863 ''|0) try='void endpwent_r(FILE**);'
10864 ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
10866 case "$endpwent_r_proto" in
10867 ''|0) d_endpwent_r=undef
10869 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
10870 * ) case "$endpwent_r_proto" in
10871 REENTRANT_PROTO*) ;;
10872 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
10874 echo "Prototype: $try" ;;
10877 *) case "$usethreads" in
10878 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
10885 *) endpwent_r_proto=0
10889 : see if endservent exists
10890 set endservent d_endsent
10893 : see if endservent_r exists
10894 set endservent_r d_endservent_r
10896 case "$d_endservent_r" in
10898 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
10901 hdrs="$hdrs $i_systime sys/time.h"
10904 case "$d_endservent_r_proto:$usethreads" in
10905 ":define") d_endservent_r_proto=define
10906 set d_endservent_r_proto endservent_r $hdrs
10910 case "$d_endservent_r_proto" in
10912 case "$endservent_r_proto" in
10913 ''|0) try='int endservent_r(struct servent_data*);'
10914 ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
10916 case "$endservent_r_proto" in
10917 ''|0) try='void endservent_r(struct servent_data*);'
10918 ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
10920 case "$endservent_r_proto" in
10921 ''|0) d_endservent_r=undef
10922 endservent_r_proto=0
10923 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
10924 * ) case "$endservent_r_proto" in
10925 REENTRANT_PROTO*) ;;
10926 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
10928 echo "Prototype: $try" ;;
10931 *) case "$usethreads" in
10932 define) echo "endservent_r has no prototype, not using it." >&4 ;;
10934 d_endservent_r=undef
10935 endservent_r_proto=0
10939 *) endservent_r_proto=0
10943 : Locate the flags for 'open()'
10945 $cat >try.c <<'EOCP'
10946 #include <sys/types.h>
10951 #include <sys/file.h>
10962 : check sys/file.h first to get FREAD on Sun
10963 if $test `./findhdr sys/file.h` && \
10964 set try -DI_SYS_FILE && eval $compile; then
10966 echo "<sys/file.h> defines the O_* constants..." >&4
10967 if $run ./try; then
10968 echo "and you have the 3 argument form of open()." >&4
10971 echo "but not the 3 argument form of open(). Oh, well." >&4
10974 elif $test `./findhdr fcntl.h` && \
10975 set try -DI_FCNTL && eval $compile; then
10977 echo "<fcntl.h> defines the O_* constants..." >&4
10978 if $run ./try; then
10979 echo "and you have the 3 argument form of open()." >&4
10982 echo "but not the 3 argument form of open(). Oh, well." >&4
10987 echo "I can't find the O_* constant definitions! You got problems." >&4
10993 : see which of string.h or strings.h is needed
10995 strings=`./findhdr string.h`
10996 if $test "$strings" && $test -r "$strings"; then
10997 echo "Using <string.h> instead of <strings.h>." >&4
11001 strings=`./findhdr strings.h`
11002 if $test "$strings" && $test -r "$strings"; then
11003 echo "Using <strings.h> instead of <string.h>." >&4
11005 echo "No string header found -- You'll surely have problems." >&4
11010 case "$i_string" in
11011 "$undef") strings=`./findhdr strings.h`;;
11012 *) strings=`./findhdr string.h`;;
11015 : see if this is a sys/file.h system
11020 : do we need to include sys/file.h ?
11024 if $h_sysfile; then
11026 echo "We'll be including <sys/file.h>." >&4
11029 echo "We won't be including <sys/file.h>." >&4
11039 : see if fcntl.h is there
11044 : see if we can include fcntl.h
11050 echo "We'll be including <fcntl.h>." >&4
11053 if $h_sysfile; then
11054 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11056 echo "We won't be including <fcntl.h>." >&4
11068 : check for non-blocking I/O stuff
11069 case "$h_sysfile" in
11070 true) echo "#include <sys/file.h>" > head.c;;
11073 true) echo "#include <fcntl.h>" > head.c;;
11074 *) echo "#include <sys/fcntl.h>" > head.c;;
11079 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11080 case "$o_nonblock" in
11082 $cat head.c > try.c
11083 $cat >>try.c <<EOCP
11085 #include <stdlib.h>
11092 printf("O_NONBLOCK\n");
11096 printf("O_NDELAY\n");
11100 printf("FNDELAY\n");
11107 if eval $compile_ok; then
11108 o_nonblock=`$run ./try`
11109 case "$o_nonblock" in
11110 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11111 *) echo "Seems like we can use $o_nonblock.";;
11114 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11117 *) echo "Using $hint value $o_nonblock.";;
11119 $rm -f try try.* .out core
11122 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11125 $cat head.c > try.c
11126 $cat >>try.c <<EOCP
11128 #include <sys/types.h>
11129 #include <signal.h>
11131 #include <stdlib.h>
11136 #define MY_O_NONBLOCK $o_nonblock
11137 #ifndef errno /* XXX need better Configure test */
11140 #$i_unistd I_UNISTD
11142 #include <unistd.h>
11144 #$i_string I_STRING
11146 #include <string.h>
11148 #include <strings.h>
11150 $signal_t blech(x) int x; { exit(3); }
11152 $cat >> try.c <<'EOCP'
11160 pipe(pd); /* Down: child -> parent */
11161 pipe(pu); /* Up: parent -> child */
11164 close(pd[1]); /* Parent reads from pd[0] */
11165 close(pu[0]); /* Parent writes (blocking) to pu[1] */
11167 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11172 signal(SIGALRM, blech);
11174 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
11176 sprintf(string, "%d\n", ret);
11177 write(2, string, strlen(string));
11180 if (errno == EAGAIN) {
11181 printf("EAGAIN\n");
11186 if (errno == EWOULDBLOCK)
11187 printf("EWOULDBLOCK\n");
11190 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
11191 sleep(2); /* Give it time to close our pipe */
11193 ret = read(pd[0], buf, 1); /* Should read EOF */
11195 sprintf(string, "%d\n", ret);
11196 write(4, string, strlen(string));
11200 close(pd[0]); /* We write to pd[1] */
11201 close(pu[1]); /* We read from pu[0] */
11202 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
11203 close(pd[1]); /* Pipe pd is now fully closed! */
11204 exit(0); /* Bye bye, thank you for playing! */
11208 if eval $compile_ok; then
11209 echo "$startsh" >mtry
11210 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11212 ./mtry >/dev/null 2>&1
11214 0) eagain=`$cat try.out`;;
11215 1) echo "Could not perform non-blocking setting!";;
11216 2) echo "I did a successful read() for something that was not there!";;
11217 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11218 4) echo "Could not find F_SETFL!";;
11219 *) echo "Something terribly wrong happened during testing.";;
11221 rd_nodata=`$cat try.ret`
11222 echo "A read() system call with no data present returns $rd_nodata."
11223 case "$rd_nodata" in
11226 echo "(That's peculiar, fixing that to be -1.)"
11232 echo "Forcing errno EAGAIN on read() with no data available."
11236 echo "Your read() sets errno to $eagain when no data is available."
11239 status=`$cat try.err`
11241 0) echo "And it correctly returns 0 to signal EOF.";;
11242 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11243 *) echo "However, your read() returns '$status' on EOF??";;
11246 if test "$status" = "$rd_nodata"; then
11247 echo "WARNING: you can't distinguish between EOF and no data!"
11251 echo "I can't compile the test program--assuming errno EAGAIN will do."
11258 echo "Using $hint value $eagain."
11259 echo "Your read() returns $rd_nodata when no data is present."
11260 case "$d_eofnblk" in
11261 "$define") echo "And you can see EOF because read() returns 0.";;
11262 "$undef") echo "But you can't see EOF status from read() returned value.";;
11264 echo "(Assuming you can't see EOF status from read anyway.)"
11270 $rm -f try try.* .out core head.c mtry
11272 : see if fchdir exists
11273 set fchdir d_fchdir
11276 : see if fchmod exists
11277 set fchmod d_fchmod
11280 : see if fchown exists
11281 set fchown d_fchown
11284 : see if this is an fcntl system
11289 : See if fcntl-based locking works.
11291 #include <stdlib.h>
11292 #include <unistd.h>
11294 #include <signal.h>
11295 $signal_t blech(x) int x; { exit(3); }
11297 #if defined(F_SETLK) && defined(F_SETLKW)
11298 struct flock flock;
11300 fd = open("try.c", O_RDONLY);
11301 flock.l_type = F_RDLCK;
11302 flock.l_whence = SEEK_SET;
11303 flock.l_start = flock.l_len = 0;
11304 signal(SIGALRM, blech);
11306 retval = fcntl(fd, F_SETLK, &flock);
11308 (retval < 0 ? exit(2) : exit(0));
11314 echo "Checking if fcntl-based file locking works... "
11318 if eval $compile_ok; then
11319 if $run ./try; then
11320 echo "Yes, it seems to work."
11323 echo "Nope, it didn't work."
11328 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
11329 *** This is (almost) impossible.
11330 *** If your NFS lock daemons are not feeling well, something like
11331 *** this may happen, please investigate. Cannot continue, aborting.
11339 echo "I'm unable to compile the test program, so I'll assume not."
11344 echo "Nope, since you don't even have fcntl()."
11347 set d_fcntl_can_lock
11352 : check for fd_set items
11355 Checking to see how well your C compiler handles fd_set and friends ...
11358 #$i_systime I_SYS_TIME
11359 #$i_sysselct I_SYS_SELECT
11360 #$d_socket HAS_SOCKET
11361 #include <sys/types.h>
11363 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
11366 #include <sys/time.h>
11368 #ifdef I_SYS_SELECT
11369 #include <sys/select.h>
11378 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
11386 if eval $compile; then
11387 d_fds_bits="$define"
11389 echo "Well, your system knows about the normal fd_set typedef..." >&4
11390 if $run ./try; then
11391 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
11392 d_fd_macros="$define"
11395 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
11397 d_fd_macros="$undef"
11401 Hmm, your compiler has some difficulty with fd_set. Checking further...
11404 if eval $compile; then
11405 d_fds_bits="$undef"
11407 echo "Well, your system has some sort of fd_set available..." >&4
11408 if $run ./try; then
11409 echo "and you have the normal fd_set macros." >&4
11410 d_fd_macros="$define"
11413 but not the normal fd_set macros! Gross! More work for me...
11415 d_fd_macros="$undef"
11418 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
11420 d_fds_bits="$undef"
11421 d_fd_macros="$undef"
11426 : see if fgetpos exists
11427 set fgetpos d_fgetpos
11430 : see if finite exists
11431 set finite d_finite
11434 : see if finitel exists
11435 set finitel d_finitel
11438 : see if flock exists
11442 : see if prototype for flock is available
11444 set d_flockproto flock $i_sysfile sys/file.h
11447 : see if fork exists
11451 : see if fp_class exists
11452 set fp_class d_fp_class
11455 : see if pathconf exists
11456 set pathconf d_pathconf
11459 : see if fpathconf exists
11460 set fpathconf d_fpathconf
11463 : see if fpclass exists
11464 set fpclass d_fpclass
11467 : see if fpclassify exists
11468 set fpclassify d_fpclassify
11471 : see if fpclassl exists
11472 set fpclassl d_fpclassl
11476 : check for fpos64_t
11478 echo "Checking to see if you have fpos64_t..." >&4
11481 int main() { fpos64_t x = 7; }
11484 if eval $compile; then
11486 echo "You have fpos64_t."
11489 echo "You do not have fpos64_t."
11490 case "$fpossize" in
11491 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
11498 : see if frexpl exists
11499 set frexpl d_frexpl
11502 : see if this is a sys/param system
11503 set sys/param.h i_sysparam
11506 : see if this is a sys/mount.h system
11507 set sys/mount.h i_sysmount
11512 echo "Checking to see if your system supports struct fs_data..." >&4
11513 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
11515 case "$d_fs_data_s" in
11516 "$define") echo "Yes, it does." ;;
11517 *) echo "No, it doesn't." ;;
11520 : see if fseeko exists
11521 set fseeko d_fseeko
11523 case "$longsize" in
11524 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
11527 : see if fsetpos exists
11528 set fsetpos d_fsetpos
11532 : see if fstatfs exists
11533 set fstatfs d_fstatfs
11537 : see if statvfs exists
11538 set statvfs d_statvfs
11541 : see if fstatvfs exists
11542 set fstatvfs d_fstatvfs
11546 : see if fsync exists
11550 : see if ftello exists
11551 set ftello d_ftello
11553 case "$longsize" in
11554 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
11557 : see if getcwd exists
11558 set getcwd d_getcwd
11561 : see if getespwnam exists
11562 set getespwnam d_getespwnam
11566 : see if getfsstat exists
11567 set getfsstat d_getfsstat
11570 : see if getgrent exists
11571 set getgrent d_getgrent
11574 : see if getgrent_r exists
11575 set getgrent_r d_getgrent_r
11577 case "$d_getgrent_r" in
11579 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11582 hdrs="$hdrs $i_systime sys/time.h"
11585 case "$d_getgrent_r_proto:$usethreads" in
11586 ":define") d_getgrent_r_proto=define
11587 set d_getgrent_r_proto getgrent_r $hdrs
11591 case "$d_getgrent_r_proto" in
11593 case "$getgrent_r_proto" in
11594 ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
11595 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
11597 case "$getgrent_r_proto" in
11598 ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
11599 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
11601 case "$getgrent_r_proto" in
11602 ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
11603 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
11605 case "$getgrent_r_proto" in
11606 ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
11607 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
11609 case "$getgrent_r_proto" in
11610 ''|0) try='int getgrent_r(struct group*, char*, int);'
11611 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
11613 case "$getgrent_r_proto" in
11614 ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
11615 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
11617 case "$getgrent_r_proto" in
11618 ''|0) d_getgrent_r=undef
11620 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
11621 * ) case "$getgrent_r_proto" in
11622 REENTRANT_PROTO*) ;;
11623 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
11625 echo "Prototype: $try" ;;
11628 *) case "$usethreads" in
11629 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
11636 *) getgrent_r_proto=0
11640 : see if getgrgid_r exists
11641 set getgrgid_r d_getgrgid_r
11643 case "$d_getgrgid_r" in
11645 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11648 hdrs="$hdrs $i_systime sys/time.h"
11651 case "$d_getgrgid_r_proto:$usethreads" in
11652 ":define") d_getgrgid_r_proto=define
11653 set d_getgrgid_r_proto getgrgid_r $hdrs
11657 case "$d_getgrgid_r_proto" in
11659 case "$getgrgid_r_proto" in
11660 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
11661 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
11663 case "$getgrgid_r_proto" in
11664 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
11665 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
11667 case "$getgrgid_r_proto" in
11668 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
11669 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
11671 case "$getgrgid_r_proto" in
11672 ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
11673 ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
11675 case "$getgrgid_r_proto" in
11676 ''|0) d_getgrgid_r=undef
11678 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
11679 * ) case "$getgrgid_r_proto" in
11680 REENTRANT_PROTO*) ;;
11681 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
11683 echo "Prototype: $try" ;;
11686 *) case "$usethreads" in
11687 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
11694 *) getgrgid_r_proto=0
11698 : see if getgrnam_r exists
11699 set getgrnam_r d_getgrnam_r
11701 case "$d_getgrnam_r" in
11703 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11706 hdrs="$hdrs $i_systime sys/time.h"
11709 case "$d_getgrnam_r_proto:$usethreads" in
11710 ":define") d_getgrnam_r_proto=define
11711 set d_getgrnam_r_proto getgrnam_r $hdrs
11715 case "$d_getgrnam_r_proto" in
11717 case "$getgrnam_r_proto" in
11718 ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
11719 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
11721 case "$getgrnam_r_proto" in
11722 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
11723 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
11725 case "$getgrnam_r_proto" in
11726 ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
11727 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
11729 case "$getgrnam_r_proto" in
11730 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
11731 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
11733 case "$getgrnam_r_proto" in
11734 ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
11735 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
11737 case "$getgrnam_r_proto" in
11738 ''|0) d_getgrnam_r=undef
11740 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
11741 * ) case "$getgrnam_r_proto" in
11742 REENTRANT_PROTO*) ;;
11743 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
11745 echo "Prototype: $try" ;;
11748 *) case "$usethreads" in
11749 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
11756 *) getgrnam_r_proto=0
11760 : see if gethostbyaddr exists
11761 set gethostbyaddr d_gethbyaddr
11764 : see if gethostbyname exists
11765 set gethostbyname d_gethbyname
11768 : see if gethostent exists
11769 set gethostent d_gethent
11772 : see how we will look up host name
11775 if set gethostname val -f d_gethname; eval $csym; $val; then
11776 echo 'gethostname() found.' >&4
11777 d_gethname="$define"
11780 if set uname val -f d_uname; eval $csym; $val; then
11783 uname() was found, but you're running xenix, and older versions of xenix
11784 have a broken uname(). If you don't really know whether your xenix is old
11785 enough to have a broken system call, use the default answer.
11790 "$define") dflt=n;;
11792 rp='Is your uname() broken?'
11795 n*) d_uname="$define"; call=uname;;
11798 echo 'uname() found.' >&4
11805 case "$d_gethname" in
11806 '') d_gethname="$undef";;
11809 '') d_uname="$undef";;
11811 case "$d_uname$d_gethname" in
11816 Every now and then someone has a $call() that lies about the hostname
11817 but can't be fixed for political or economic reasons. If you wish, I can
11818 pretend $call() isn't there and maybe compute hostname at run-time
11819 thanks to the '$phostname' command.
11822 rp="Shall I ignore $call() from now on?"
11825 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
11828 case "$phostname" in
11829 '') aphostname='';;
11830 *) case "$aphostname" in
11832 *) set X $phostname
11836 file=`./loc $file $file $pth`
11837 aphostname=`echo $file $*`
11842 case "$d_uname$d_gethname" in
11845 case "$phostname" in
11847 echo "There will be no way for $package to get your hostname." >&4;;
11849 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
11853 case "$d_phostname" in
11854 '') d_phostname="$undef";;
11857 : see if gethostbyaddr_r exists
11858 set gethostbyaddr_r d_gethostbyaddr_r
11860 case "$d_gethostbyaddr_r" in
11862 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11865 hdrs="$hdrs $i_systime sys/time.h"
11868 case "$d_gethostbyaddr_r_proto:$usethreads" in
11869 ":define") d_gethostbyaddr_r_proto=define
11870 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
11874 case "$d_gethostbyaddr_r_proto" in
11876 case "$gethostbyaddr_r_proto" in
11877 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
11878 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
11880 case "$gethostbyaddr_r_proto" in
11881 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
11882 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
11884 case "$gethostbyaddr_r_proto" in
11885 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
11886 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
11888 case "$gethostbyaddr_r_proto" in
11889 ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
11890 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
11892 case "$gethostbyaddr_r_proto" in
11893 ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
11894 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
11896 case "$gethostbyaddr_r_proto" in
11897 ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
11898 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
11900 case "$gethostbyaddr_r_proto" in
11901 ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
11902 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
11904 case "$gethostbyaddr_r_proto" in
11905 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
11906 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
11908 case "$gethostbyaddr_r_proto" in
11909 ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
11910 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
11912 case "$gethostbyaddr_r_proto" in
11913 ''|0) try='int gethostbyaddr_r(const char*, int, int);'
11914 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
11916 case "$gethostbyaddr_r_proto" in
11917 ''|0) d_gethostbyaddr_r=undef
11918 gethostbyaddr_r_proto=0
11919 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
11920 * ) case "$gethostbyaddr_r_proto" in
11921 REENTRANT_PROTO*) ;;
11922 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
11924 echo "Prototype: $try" ;;
11927 *) case "$usethreads" in
11928 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
11930 d_gethostbyaddr_r=undef
11931 gethostbyaddr_r_proto=0
11935 *) gethostbyaddr_r_proto=0
11939 : see if gethostbyname_r exists
11940 set gethostbyname_r d_gethostbyname_r
11942 case "$d_gethostbyname_r" in
11944 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11947 hdrs="$hdrs $i_systime sys/time.h"
11950 case "$d_gethostbyname_r_proto:$usethreads" in
11951 ":define") d_gethostbyname_r_proto=define
11952 set d_gethostbyname_r_proto gethostbyname_r $hdrs
11956 case "$d_gethostbyname_r_proto" in
11958 case "$gethostbyname_r_proto" in
11959 ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
11960 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
11962 case "$gethostbyname_r_proto" in
11963 ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
11964 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
11966 case "$gethostbyname_r_proto" in
11967 ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
11968 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
11970 case "$gethostbyname_r_proto" in
11971 ''|0) d_gethostbyname_r=undef
11972 gethostbyname_r_proto=0
11973 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
11974 * ) case "$gethostbyname_r_proto" in
11975 REENTRANT_PROTO*) ;;
11976 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
11978 echo "Prototype: $try" ;;
11981 *) case "$usethreads" in
11982 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
11984 d_gethostbyname_r=undef
11985 gethostbyname_r_proto=0
11989 *) gethostbyname_r_proto=0
11993 : see if gethostent_r exists
11994 set gethostent_r d_gethostent_r
11996 case "$d_gethostent_r" in
11998 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12001 hdrs="$hdrs $i_systime sys/time.h"
12004 case "$d_gethostent_r_proto:$usethreads" in
12005 ":define") d_gethostent_r_proto=define
12006 set d_gethostent_r_proto gethostent_r $hdrs
12010 case "$d_gethostent_r_proto" in
12012 case "$gethostent_r_proto" in
12013 ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12014 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12016 case "$gethostent_r_proto" in
12017 ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12018 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12020 case "$gethostent_r_proto" in
12021 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12022 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12024 case "$gethostent_r_proto" in
12025 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12026 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12028 case "$gethostent_r_proto" in
12029 ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12030 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12032 case "$gethostent_r_proto" in
12033 ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12034 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12036 case "$gethostent_r_proto" in
12037 ''|0) d_gethostent_r=undef
12038 gethostent_r_proto=0
12039 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12040 * ) case "$gethostent_r_proto" in
12041 REENTRANT_PROTO*) ;;
12042 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12044 echo "Prototype: $try" ;;
12047 *) case "$usethreads" in
12048 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12050 d_gethostent_r=undef
12051 gethostent_r_proto=0
12055 *) gethostent_r_proto=0
12059 : see if prototypes for various gethostxxx netdb.h functions are available
12061 set d_gethostprotos gethostent $i_netdb netdb.h
12064 : see if getitimer exists
12065 set getitimer d_getitimer
12068 : see if getlogin exists
12069 set getlogin d_getlogin
12072 : see if getlogin_r exists
12073 set getlogin_r d_getlogin_r
12075 case "$d_getlogin_r" in
12077 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12080 hdrs="$hdrs $i_systime sys/time.h"
12083 case "$d_getlogin_r_proto:$usethreads" in
12084 ":define") d_getlogin_r_proto=define
12085 set d_getlogin_r_proto getlogin_r $hdrs
12089 case "$d_getlogin_r_proto" in
12091 case "$getlogin_r_proto" in
12092 ''|0) try='int getlogin_r(char*, size_t);'
12093 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12095 case "$getlogin_r_proto" in
12096 ''|0) try='int getlogin_r(char*, int);'
12097 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12099 case "$getlogin_r_proto" in
12100 ''|0) try='char* getlogin_r(char*, size_t);'
12101 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12103 case "$getlogin_r_proto" in
12104 ''|0) try='char* getlogin_r(char*, int);'
12105 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12107 case "$getlogin_r_proto" in
12108 ''|0) d_getlogin_r=undef
12110 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12111 * ) case "$getlogin_r_proto" in
12112 REENTRANT_PROTO*) ;;
12113 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12115 echo "Prototype: $try" ;;
12118 *) case "$usethreads" in
12119 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12126 *) getlogin_r_proto=0
12130 : see if getmnt exists
12131 set getmnt d_getmnt
12134 : see if getmntent exists
12135 set getmntent d_getmntent
12138 : see if getnetbyaddr exists
12139 set getnetbyaddr d_getnbyaddr
12142 : see if getnetbyname exists
12143 set getnetbyname d_getnbyname
12146 : see if getnetent exists
12147 set getnetent d_getnent
12150 : see if getnetbyaddr_r exists
12151 set getnetbyaddr_r d_getnetbyaddr_r
12153 case "$d_getnetbyaddr_r" in
12155 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12158 hdrs="$hdrs $i_systime sys/time.h"
12161 case "$d_getnetbyaddr_r_proto:$usethreads" in
12162 ":define") d_getnetbyaddr_r_proto=define
12163 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12167 case "$d_getnetbyaddr_r_proto" in
12169 case "$getnetbyaddr_r_proto" in
12170 ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12171 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12173 case "$getnetbyaddr_r_proto" in
12174 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12175 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12177 case "$getnetbyaddr_r_proto" in
12178 ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12179 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12181 case "$getnetbyaddr_r_proto" in
12182 ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12183 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12185 case "$getnetbyaddr_r_proto" in
12186 ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12187 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12189 case "$getnetbyaddr_r_proto" in
12190 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12191 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12193 case "$getnetbyaddr_r_proto" in
12194 ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12195 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12197 case "$getnetbyaddr_r_proto" in
12198 ''|0) d_getnetbyaddr_r=undef
12199 getnetbyaddr_r_proto=0
12200 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12201 * ) case "$getnetbyaddr_r_proto" in
12202 REENTRANT_PROTO*) ;;
12203 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12205 echo "Prototype: $try" ;;
12208 *) case "$usethreads" in
12209 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12211 d_getnetbyaddr_r=undef
12212 getnetbyaddr_r_proto=0
12216 *) getnetbyaddr_r_proto=0
12220 : see if getnetbyname_r exists
12221 set getnetbyname_r d_getnetbyname_r
12223 case "$d_getnetbyname_r" in
12225 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12228 hdrs="$hdrs $i_systime sys/time.h"
12231 case "$d_getnetbyname_r_proto:$usethreads" in
12232 ":define") d_getnetbyname_r_proto=define
12233 set d_getnetbyname_r_proto getnetbyname_r $hdrs
12237 case "$d_getnetbyname_r_proto" in
12239 case "$getnetbyname_r_proto" in
12240 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
12241 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
12243 case "$getnetbyname_r_proto" in
12244 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
12245 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
12247 case "$getnetbyname_r_proto" in
12248 ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
12249 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
12251 case "$getnetbyname_r_proto" in
12252 ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
12253 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
12255 case "$getnetbyname_r_proto" in
12256 ''|0) d_getnetbyname_r=undef
12257 getnetbyname_r_proto=0
12258 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
12259 * ) case "$getnetbyname_r_proto" in
12260 REENTRANT_PROTO*) ;;
12261 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
12263 echo "Prototype: $try" ;;
12266 *) case "$usethreads" in
12267 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
12269 d_getnetbyname_r=undef
12270 getnetbyname_r_proto=0
12274 *) getnetbyname_r_proto=0
12278 : see if getnetent_r exists
12279 set getnetent_r d_getnetent_r
12281 case "$d_getnetent_r" in
12283 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12286 hdrs="$hdrs $i_systime sys/time.h"
12289 case "$d_getnetent_r_proto:$usethreads" in
12290 ":define") d_getnetent_r_proto=define
12291 set d_getnetent_r_proto getnetent_r $hdrs
12295 case "$d_getnetent_r_proto" in
12297 case "$getnetent_r_proto" in
12298 ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
12299 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
12301 case "$getnetent_r_proto" in
12302 ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
12303 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
12305 case "$getnetent_r_proto" in
12306 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
12307 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
12309 case "$getnetent_r_proto" in
12310 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
12311 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
12313 case "$getnetent_r_proto" in
12314 ''|0) try='int getnetent_r(struct netent*, char*, int);'
12315 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
12317 case "$getnetent_r_proto" in
12318 ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
12319 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
12321 case "$getnetent_r_proto" in
12322 ''|0) d_getnetent_r=undef
12323 getnetent_r_proto=0
12324 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
12325 * ) case "$getnetent_r_proto" in
12326 REENTRANT_PROTO*) ;;
12327 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
12329 echo "Prototype: $try" ;;
12332 *) case "$usethreads" in
12333 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
12335 d_getnetent_r=undef
12336 getnetent_r_proto=0
12340 *) getnetent_r_proto=0
12344 : see if prototypes for various getnetxxx netdb.h functions are available
12346 set d_getnetprotos getnetent $i_netdb netdb.h
12349 : see if getpagesize exists
12350 set getpagesize d_getpagsz
12354 : see if getprotobyname exists
12355 set getprotobyname d_getpbyname
12358 : see if getprotobynumber exists
12359 set getprotobynumber d_getpbynumber
12362 : see if getprotoent exists
12363 set getprotoent d_getpent
12366 : see if getpgid exists
12367 set getpgid d_getpgid
12370 : see if getpgrp2 exists
12371 set getpgrp2 d_getpgrp2
12374 : see if getppid exists
12375 set getppid d_getppid
12378 : see if getpriority exists
12379 set getpriority d_getprior
12382 : see if getprotobyname_r exists
12383 set getprotobyname_r d_getprotobyname_r
12385 case "$d_getprotobyname_r" in
12387 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12390 hdrs="$hdrs $i_systime sys/time.h"
12393 case "$d_getprotobyname_r_proto:$usethreads" in
12394 ":define") d_getprotobyname_r_proto=define
12395 set d_getprotobyname_r_proto getprotobyname_r $hdrs
12399 case "$d_getprotobyname_r_proto" in
12401 case "$getprotobyname_r_proto" in
12402 ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
12403 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
12405 case "$getprotobyname_r_proto" in
12406 ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
12407 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
12409 case "$getprotobyname_r_proto" in
12410 ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
12411 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
12413 case "$getprotobyname_r_proto" in
12414 ''|0) d_getprotobyname_r=undef
12415 getprotobyname_r_proto=0
12416 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
12417 * ) case "$getprotobyname_r_proto" in
12418 REENTRANT_PROTO*) ;;
12419 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
12421 echo "Prototype: $try" ;;
12424 *) case "$usethreads" in
12425 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
12427 d_getprotobyname_r=undef
12428 getprotobyname_r_proto=0
12432 *) getprotobyname_r_proto=0
12436 : see if getprotobynumber_r exists
12437 set getprotobynumber_r d_getprotobynumber_r
12439 case "$d_getprotobynumber_r" in
12441 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12444 hdrs="$hdrs $i_systime sys/time.h"
12447 case "$d_getprotobynumber_r_proto:$usethreads" in
12448 ":define") d_getprotobynumber_r_proto=define
12449 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
12453 case "$d_getprotobynumber_r_proto" in
12455 case "$getprotobynumber_r_proto" in
12456 ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
12457 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
12459 case "$getprotobynumber_r_proto" in
12460 ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
12461 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
12463 case "$getprotobynumber_r_proto" in
12464 ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
12465 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
12467 case "$getprotobynumber_r_proto" in
12468 ''|0) d_getprotobynumber_r=undef
12469 getprotobynumber_r_proto=0
12470 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
12471 * ) case "$getprotobynumber_r_proto" in
12472 REENTRANT_PROTO*) ;;
12473 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
12475 echo "Prototype: $try" ;;
12478 *) case "$usethreads" in
12479 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
12481 d_getprotobynumber_r=undef
12482 getprotobynumber_r_proto=0
12486 *) getprotobynumber_r_proto=0
12490 : see if getprotoent_r exists
12491 set getprotoent_r d_getprotoent_r
12493 case "$d_getprotoent_r" in
12495 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12498 hdrs="$hdrs $i_systime sys/time.h"
12501 case "$d_getprotoent_r_proto:$usethreads" in
12502 ":define") d_getprotoent_r_proto=define
12503 set d_getprotoent_r_proto getprotoent_r $hdrs
12507 case "$d_getprotoent_r_proto" in
12509 case "$getprotoent_r_proto" in
12510 ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
12511 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
12513 case "$getprotoent_r_proto" in
12514 ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
12515 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
12517 case "$getprotoent_r_proto" in
12518 ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
12519 ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
12521 case "$getprotoent_r_proto" in
12522 ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
12523 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
12525 case "$getprotoent_r_proto" in
12526 ''|0) d_getprotoent_r=undef
12527 getprotoent_r_proto=0
12528 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
12529 * ) case "$getprotoent_r_proto" in
12530 REENTRANT_PROTO*) ;;
12531 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
12533 echo "Prototype: $try" ;;
12536 *) case "$usethreads" in
12537 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
12539 d_getprotoent_r=undef
12540 getprotoent_r_proto=0
12544 *) getprotoent_r_proto=0
12548 : see if prototypes for various getprotoxxx netdb.h functions are available
12550 set d_getprotoprotos getprotoent $i_netdb netdb.h
12553 : see if getprpwnam exists
12554 set getprpwnam d_getprpwnam
12557 : see if getpwent exists
12558 set getpwent d_getpwent
12561 : see if getpwent_r exists
12562 set getpwent_r d_getpwent_r
12564 case "$d_getpwent_r" in
12566 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12569 hdrs="$hdrs $i_systime sys/time.h"
12572 case "$d_getpwent_r_proto:$usethreads" in
12573 ":define") d_getpwent_r_proto=define
12574 set d_getpwent_r_proto getpwent_r $hdrs
12578 case "$d_getpwent_r_proto" in
12580 case "$getpwent_r_proto" in
12581 ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
12582 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
12584 case "$getpwent_r_proto" in
12585 ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
12586 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
12588 case "$getpwent_r_proto" in
12589 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
12590 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
12592 case "$getpwent_r_proto" in
12593 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
12594 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
12596 case "$getpwent_r_proto" in
12597 ''|0) try='int getpwent_r(struct passwd*, char*, int);'
12598 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
12600 case "$getpwent_r_proto" in
12601 ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
12602 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
12604 case "$getpwent_r_proto" in
12605 ''|0) d_getpwent_r=undef
12607 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
12608 * ) case "$getpwent_r_proto" in
12609 REENTRANT_PROTO*) ;;
12610 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
12612 echo "Prototype: $try" ;;
12615 *) case "$usethreads" in
12616 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
12623 *) getpwent_r_proto=0
12627 : see if getpwnam_r exists
12628 set getpwnam_r d_getpwnam_r
12630 case "$d_getpwnam_r" in
12632 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12635 hdrs="$hdrs $i_systime sys/time.h"
12638 case "$d_getpwnam_r_proto:$usethreads" in
12639 ":define") d_getpwnam_r_proto=define
12640 set d_getpwnam_r_proto getpwnam_r $hdrs
12644 case "$d_getpwnam_r_proto" in
12646 case "$getpwnam_r_proto" in
12647 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
12648 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
12650 case "$getpwnam_r_proto" in
12651 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
12652 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
12654 case "$getpwnam_r_proto" in
12655 ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
12656 ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
12658 case "$getpwnam_r_proto" in
12659 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
12660 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
12662 case "$getpwnam_r_proto" in
12663 ''|0) d_getpwnam_r=undef
12665 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
12666 * ) case "$getpwnam_r_proto" in
12667 REENTRANT_PROTO*) ;;
12668 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
12670 echo "Prototype: $try" ;;
12673 *) case "$usethreads" in
12674 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
12681 *) getpwnam_r_proto=0
12685 : see if getpwuid_r exists
12686 set getpwuid_r d_getpwuid_r
12688 case "$d_getpwuid_r" in
12690 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
12693 hdrs="$hdrs $i_systime sys/time.h"
12696 case "$d_getpwuid_r_proto:$usethreads" in
12697 ":define") d_getpwuid_r_proto=define
12698 set d_getpwuid_r_proto getpwuid_r $hdrs
12702 case "$d_getpwuid_r_proto" in
12704 case "$getpwuid_r_proto" in
12705 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
12706 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
12708 case "$getpwuid_r_proto" in
12709 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
12710 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
12712 case "$getpwuid_r_proto" in
12713 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
12714 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
12716 case "$getpwuid_r_proto" in
12717 ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
12718 ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
12720 case "$getpwuid_r_proto" in
12721 ''|0) d_getpwuid_r=undef
12723 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
12724 * ) case "$getpwuid_r_proto" in
12725 REENTRANT_PROTO*) ;;
12726 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
12728 echo "Prototype: $try" ;;
12731 *) case "$usethreads" in
12732 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
12739 *) getpwuid_r_proto=0
12744 : see if getservbyname exists
12745 set getservbyname d_getsbyname
12748 : see if getservbyport exists
12749 set getservbyport d_getsbyport
12752 : see if getservent exists
12753 set getservent d_getsent
12756 : see if getservbyname_r exists
12757 set getservbyname_r d_getservbyname_r
12759 case "$d_getservbyname_r" in
12761 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12764 hdrs="$hdrs $i_systime sys/time.h"
12767 case "$d_getservbyname_r_proto:$usethreads" in
12768 ":define") d_getservbyname_r_proto=define
12769 set d_getservbyname_r_proto getservbyname_r $hdrs
12773 case "$d_getservbyname_r_proto" in
12775 case "$getservbyname_r_proto" in
12776 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
12777 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
12779 case "$getservbyname_r_proto" in
12780 ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
12781 ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
12783 case "$getservbyname_r_proto" in
12784 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
12785 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
12787 case "$getservbyname_r_proto" in
12788 ''|0) d_getservbyname_r=undef
12789 getservbyname_r_proto=0
12790 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
12791 * ) case "$getservbyname_r_proto" in
12792 REENTRANT_PROTO*) ;;
12793 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
12795 echo "Prototype: $try" ;;
12798 *) case "$usethreads" in
12799 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
12801 d_getservbyname_r=undef
12802 getservbyname_r_proto=0
12806 *) getservbyname_r_proto=0
12810 : see if getservbyport_r exists
12811 set getservbyport_r d_getservbyport_r
12813 case "$d_getservbyport_r" in
12815 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12818 hdrs="$hdrs $i_systime sys/time.h"
12821 case "$d_getservbyport_r_proto:$usethreads" in
12822 ":define") d_getservbyport_r_proto=define
12823 set d_getservbyport_r_proto getservbyport_r $hdrs
12827 case "$d_getservbyport_r_proto" in
12829 case "$getservbyport_r_proto" in
12830 ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
12831 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
12833 case "$getservbyport_r_proto" in
12834 ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
12835 ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
12837 case "$getservbyport_r_proto" in
12838 ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
12839 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
12841 case "$getservbyport_r_proto" in
12842 ''|0) d_getservbyport_r=undef
12843 getservbyport_r_proto=0
12844 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
12845 * ) case "$getservbyport_r_proto" in
12846 REENTRANT_PROTO*) ;;
12847 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
12849 echo "Prototype: $try" ;;
12852 *) case "$usethreads" in
12853 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
12855 d_getservbyport_r=undef
12856 getservbyport_r_proto=0
12860 *) getservbyport_r_proto=0
12864 : see if getservent_r exists
12865 set getservent_r d_getservent_r
12867 case "$d_getservent_r" in
12869 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12872 hdrs="$hdrs $i_systime sys/time.h"
12875 case "$d_getservent_r_proto:$usethreads" in
12876 ":define") d_getservent_r_proto=define
12877 set d_getservent_r_proto getservent_r $hdrs
12881 case "$d_getservent_r_proto" in
12883 case "$getservent_r_proto" in
12884 ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
12885 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
12887 case "$getservent_r_proto" in
12888 ''|0) try='int getservent_r(struct servent*, char*, int);'
12889 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
12891 case "$getservent_r_proto" in
12892 ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
12893 ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
12895 case "$getservent_r_proto" in
12896 ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
12897 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
12899 case "$getservent_r_proto" in
12900 ''|0) d_getservent_r=undef
12901 getservent_r_proto=0
12902 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
12903 * ) case "$getservent_r_proto" in
12904 REENTRANT_PROTO*) ;;
12905 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
12907 echo "Prototype: $try" ;;
12910 *) case "$usethreads" in
12911 define) echo "getservent_r has no prototype, not using it." >&4 ;;
12913 d_getservent_r=undef
12914 getservent_r_proto=0
12918 *) getservent_r_proto=0
12922 : see if prototypes for various getservxxx netdb.h functions are available
12924 set d_getservprotos getservent $i_netdb netdb.h
12927 : see if getspnam exists
12928 set getspnam d_getspnam
12931 : see if this is a shadow.h system
12932 set shadow.h i_shadow
12935 : see if getspnam_r exists
12936 set getspnam_r d_getspnam_r
12938 case "$d_getspnam_r" in
12940 hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
12943 hdrs="$hdrs $i_systime sys/time.h"
12946 case "$d_getspnam_r_proto:$usethreads" in
12947 ":define") d_getspnam_r_proto=define
12948 set d_getspnam_r_proto getspnam_r $hdrs
12952 case "$d_getspnam_r_proto" in
12954 case "$getspnam_r_proto" in
12955 ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
12956 ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
12958 case "$getspnam_r_proto" in
12959 ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
12960 ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
12962 case "$getspnam_r_proto" in
12963 ''|0) d_getspnam_r=undef
12965 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
12966 * ) case "$getspnam_r_proto" in
12967 REENTRANT_PROTO*) ;;
12968 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
12970 echo "Prototype: $try" ;;
12973 *) case "$usethreads" in
12974 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
12981 *) getspnam_r_proto=0
12985 : see if gettimeofday or ftime exists
12986 set gettimeofday d_gettimeod
12988 case "$d_gettimeod" in
12994 val="$undef"; set d_ftime; eval $setvar
12997 case "$d_gettimeod$d_ftime" in
13000 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13004 : see if gmtime_r exists
13005 set gmtime_r d_gmtime_r
13007 case "$d_gmtime_r" in
13009 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
13012 hdrs="$hdrs $i_systime sys/time.h"
13015 case "$d_gmtime_r_proto:$usethreads" in
13016 ":define") d_gmtime_r_proto=define
13017 set d_gmtime_r_proto gmtime_r $hdrs
13021 case "$d_gmtime_r_proto" in
13023 case "$gmtime_r_proto" in
13024 ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13025 ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13027 case "$gmtime_r_proto" in
13028 ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13029 ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13031 case "$gmtime_r_proto" in
13032 ''|0) d_gmtime_r=undef
13034 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13035 * ) case "$gmtime_r_proto" in
13036 REENTRANT_PROTO*) ;;
13037 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13039 echo "Prototype: $try" ;;
13042 *) case "$usethreads" in
13043 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13050 *) gmtime_r_proto=0
13054 : see if hasmntopt exists
13055 set hasmntopt d_hasmntopt
13058 : see if this is a netinet/in.h or sys/in.h system
13059 set netinet/in.h i_niin sys/in.h i_sysin
13062 : see if arpa/inet.h has to be included
13063 set arpa/inet.h i_arpainet
13066 : see if htonl --and friends-- exists
13071 : Maybe they are macros.
13074 $cat >htonl.c <<EOM
13076 #include <sys/types.h>
13077 #$i_niin I_NETINET_IN
13079 #$i_arpainet I_ARPA_INET
13080 #ifdef I_NETINET_IN
13081 #include <netinet/in.h>
13084 #include <sys/in.h>
13087 #include <arpa/inet.h>
13090 printf("Defined as a macro.");
13093 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13094 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13096 echo "But it seems to be defined as a macro." >&4
13106 if set index val -f; eval $csym; $val; then
13107 if set strchr val -f d_strchr; eval $csym; $val; then
13108 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13111 echo "strchr() found." >&4
13115 echo "index() found." >&4
13120 echo "index() found." >&4
13123 if set strchr val -f d_strchr; eval $csym; $val; then
13126 echo "strchr() found." >&4
13128 echo "No index() or strchr() found!" >&4
13133 set d_strchr; eval $setvar
13135 set d_index; eval $setvar
13137 : check whether inet_aton exists
13138 set inet_aton d_inetaton
13143 $cat >isascii.c <<'EOCP'
13155 if eval $compile; then
13156 echo "isascii() found." >&4
13159 echo "isascii() NOT found." >&4
13166 : see if isfinite exists
13167 set isfinite d_isfinite
13170 : see if isinf exists
13174 : see if isnan exists
13178 : see if isnanl exists
13179 set isnanl d_isnanl
13182 : see if killpg exists
13183 set killpg d_killpg
13186 : see if lchown exists
13188 $cat > try.c <<'EOCP'
13189 /* System header to define __stub macros and hopefully few prototypes,
13190 which can conflict with char lchown(); below. */
13191 #include <assert.h>
13192 /* Override any gcc2 internal prototype to avoid an error. */
13193 /* We use char because int might match the return type of a gcc2
13194 builtin and then its argument prototype would still apply. */
13197 /* The GNU C library defines this for functions which it implements
13198 to always fail with ENOSYS. Some functions are actually named
13199 something starting with __ and the normal name is an alias. */
13200 #if defined (__stub_lchown) || defined (__stub___lchown)
13208 if eval $compile; then
13209 $echo "lchown() found." >&4
13212 $echo "lchown() NOT found." >&4
13218 : See if number of significant digits in a double precision number is known
13220 $cat >ldbl_dig.c <<EOM
13221 #$i_limits I_LIMITS
13224 #include <limits.h>
13230 printf("Contains LDBL_DIG");
13233 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13234 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13235 echo "LDBL_DIG found." >&4
13238 echo "LDBL_DIG NOT found." >&4
13245 : see if link exists
13249 : see if localtime_r exists
13250 set localtime_r d_localtime_r
13252 case "$d_localtime_r" in
13254 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h"
13257 hdrs="$hdrs $i_systime sys/time.h"
13260 case "$d_localtime_r_proto:$usethreads" in
13261 ":define") d_localtime_r_proto=define
13262 set d_localtime_r_proto localtime_r $hdrs
13266 case "$d_localtime_r_proto" in
13268 case "$localtime_r_proto" in
13269 ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
13270 ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
13272 case "$localtime_r_proto" in
13273 ''|0) try='int localtime_r(const time_t*, struct tm*);'
13274 ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
13276 case "$localtime_r_proto" in
13277 ''|0) d_localtime_r=undef
13278 localtime_r_proto=0
13279 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
13280 * ) case "$localtime_r_proto" in
13281 REENTRANT_PROTO*) ;;
13282 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
13284 echo "Prototype: $try" ;;
13287 *) case "$usethreads" in
13288 define) echo "localtime_r has no prototype, not using it." >&4 ;;
13290 d_localtime_r=undef
13291 localtime_r_proto=0
13295 *) localtime_r_proto=0
13299 : see if localeconv exists
13300 set localeconv d_locconv
13303 : see if lockf exists
13307 : see if prototype for lseek is available
13309 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
13312 : see if lstat exists
13316 : see if madvise exists
13317 set madvise d_madvise
13320 : see if mblen exists
13324 : see if mbstowcs exists
13325 set mbstowcs d_mbstowcs
13328 : see if mbtowc exists
13329 set mbtowc d_mbtowc
13332 : see if memchr exists
13333 set memchr d_memchr
13336 : see if memcmp exists
13337 set memcmp d_memcmp
13340 : see if memcpy exists
13341 set memcpy d_memcpy
13344 : see if memmove exists
13345 set memmove d_memmove
13348 : see if memset exists
13349 set memset d_memset
13352 : see if mkdir exists
13356 : see if mkdtemp exists
13357 set mkdtemp d_mkdtemp
13360 : see if mkfifo exists
13361 set mkfifo d_mkfifo
13364 : see if mkstemp exists
13365 set mkstemp d_mkstemp
13368 : see if mkstemps exists
13369 set mkstemps d_mkstemps
13372 : see if mktime exists
13373 set mktime d_mktime
13376 : see if this is a sys/mman.h system
13377 set sys/mman.h i_sysmman
13380 : see if mmap exists
13383 : see what shmat returns
13384 : default to something harmless
13386 case "$i_sysmman$d_mmap" in
13388 $cat >mmap.c <<'END'
13389 #include <sys/mman.h>
13392 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
13397 echo "and it returns ($mmaptype)." >&4
13403 : see if mprotect exists
13404 set mprotect d_mprotect
13407 : see if msgctl exists
13408 set msgctl d_msgctl
13411 : see if msgget exists
13412 set msgget d_msgget
13415 : see if msgsnd exists
13416 set msgsnd d_msgsnd
13419 : see if msgrcv exists
13420 set msgrcv d_msgrcv
13423 : see how much of the 'msg*(2)' library is present.
13426 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
13427 *"$undef"*) h_msg=false;;
13431 case "`ipcs 2>&1`" in
13432 "SVID messages"*"not configured"*)
13433 echo "Your $osname does not have the msg*(2) configured." >&4
13436 set msgctl d_msgctl
13438 set msgget d_msgget
13440 set msgsnd d_msgsnd
13442 set msgrcv d_msgrcv
13448 : we could also check for sys/ipc.h ...
13449 if $h_msg && $test `./findhdr sys/msg.h`; then
13450 echo "You have the full msg*(2) library." >&4
13453 echo "You don't have the full msg*(2) library." >&4
13461 echo "Checking to see if your system supports struct msghdr..." >&4
13462 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
13464 case "$d_msghdr_s" in
13465 "$define") echo "Yes, it does." ;;
13466 *) echo "No, it doesn't." ;;
13470 : see if msync exists
13474 : see if munmap exists
13475 set munmap d_munmap
13478 : see if nice exists
13482 : see if this is a langinfo.h system
13483 set langinfo.h i_langinfo
13486 : see if nl_langinfo exists
13487 set nl_langinfo d_nl_langinfo
13490 : check for length of character
13492 case "$charsize" in
13494 echo "Checking to see how big your characters are (hey, you never know)..." >&4
13495 $cat >try.c <<'EOCP'
13499 printf("%d\n", (int)sizeof(char));
13504 if eval $compile_ok; then
13508 echo "(I can't seem to compile the test program. Guessing...)"
13515 rp="What is the size of a character (in bytes)?"
13520 : check for volatile keyword
13522 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
13523 $cat >try.c <<'EOCP'
13526 typedef struct _goo_struct goo_struct;
13527 goo_struct * volatile goo = ((goo_struct *)0);
13528 struct _goo_struct {
13533 typedef unsigned short foo_t;
13534 char *volatile foo;
13536 volatile foo_t blech;
13540 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
13542 echo "Yup, it does."
13545 echo "Nope, it doesn't."
13553 $echo "Choosing the C types to be used for Perl's internal types..." >&4
13555 case "$use64bitint:$d_quad:$quadtype" in
13558 uvtype="$uquadtype"
13563 uvtype="unsigned long"
13569 case "$uselongdouble:$d_longdbl" in
13571 nvtype="long double"
13572 nvsize=$longdblsize
13579 $echo "(IV will be "$ivtype", $ivsize bytes)"
13580 $echo "(UV will be "$uvtype", $uvsize bytes)"
13581 $echo "(NV will be "$nvtype", $nvsize bytes)"
13584 #$i_inttypes I_INTTYPES
13586 #include <inttypes.h>
13591 int8_t i = INT8_MAX;
13592 uint8_t u = UINT8_MAX;
13593 printf("int8_t\n");
13596 int16_t i = INT16_MAX;
13597 uint16_t i = UINT16_MAX;
13598 printf("int16_t\n");
13601 int32_t i = INT32_MAX;
13602 uint32_t u = UINT32_MAX;
13603 printf("int32_t\n");
13609 '') case "$charsize" in
13611 u8type="unsigned char"
13620 if eval $compile; then
13621 case "`$run ./try`" in
13622 int8_t) i8type=int8_t
13632 '') if $test $charsize -ge 1; then
13634 u8type="unsigned char"
13642 '') case "$shortsize" in
13644 u16type="unsigned short"
13652 '') set try -DINT16
13653 if eval $compile; then
13654 case "`$run ./try`" in
13666 '') if $test $shortsize -ge 2; then
13668 u16type="unsigned short"
13676 '') case "$longsize" in
13678 u32type="unsigned long"
13682 *) case "$intsize" in
13684 u32type="unsigned int"
13694 '') set try -DINT32
13695 if eval $compile; then
13696 case "`$run ./try`" in
13708 '') if $test $intsize -ge 4; then
13710 u32type="unsigned int"
13718 '') case "$d_quad:$quadtype" in
13720 i64type="$quadtype"
13721 u64type="$uquadtype"
13729 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
13730 : volatile so that the compiler has to store it out to memory.
13731 if test X"$d_volatile" = X"$define"; then
13736 #include <sys/types.h>
13737 #include <signal.h>
13739 $volatile int bletched = 0;
13740 $signal_t blech(s) int s; { bletched = 1; }
13745 int n = 8 * $uvsize;
13748 signal(SIGFPE, blech);
13751 for (i = 0; i < n; i++) {
13752 u = u << 1 | ($uvtype)1;
13754 if (($uvtype)d != u)
13758 d = ($nvtype)(u - 1);
13759 if (($uvtype)d != (u - 1))
13767 printf("%d\n", ((i == n) ? -n : i));
13773 d_nv_preserves_uv="$undef"
13774 if eval $compile; then
13775 nv_preserves_uv_bits="`$run ./try`"
13777 case "$nv_preserves_uv_bits" in
13779 nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
13780 $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs." 2>&1
13781 d_nv_preserves_uv="$define"
13783 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs." 2>&1
13784 d_nv_preserves_uv="$undef" ;;
13785 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
13786 nv_preserves_uv_bits="$undef" ;;
13792 : check for off64_t
13794 echo "Checking to see if you have off64_t..." >&4
13796 #include <sys/types.h>
13797 #include <unistd.h>
13798 int main() { off64_t x = 7; }
13801 if eval $compile; then
13803 echo "You have off64_t."
13806 echo "You do not have off64_t."
13807 case "$lseeksize" in
13808 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
13815 : see if POSIX threads are available
13816 set pthread.h i_pthread
13822 : how to create joinable pthreads
13823 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
13825 echo "Checking what constant to use for creating joinable pthreads..." >&4
13826 $cat >try.c <<'EOCP'
13827 #include <pthread.h>
13829 int detachstate = JOINABLE;
13832 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
13833 if eval $compile; then
13834 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
13835 val="$undef" # Yes, undef.
13836 set d_old_pthread_create_joinable
13839 set old_pthread_create_joinable
13842 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
13843 if eval $compile; then
13844 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
13846 set d_old_pthread_create_joinable
13848 val=PTHREAD_CREATE_UNDETACHED
13849 set old_pthread_create_joinable
13852 set try -DJOINABLE=__UNDETACHED
13853 if eval $compile; then
13854 echo "You seem to use __UNDETACHED." >&4
13856 set d_old_pthread_create_joinable
13859 set old_pthread_create_joinable
13862 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
13864 set d_old_pthread_create_joinable
13867 set old_pthread_create_joinable
13874 d_old_pthread_create_joinable="$undef"
13875 old_pthread_create_joinable=""
13878 : see if pause exists
13882 : see if pipe exists
13886 : see if poll exists
13890 : see if readlink exists
13891 set readlink d_readlink
13897 case "$d_readlink" in
13899 if $issymlink /proc/self/exe ; then
13900 $ls -l /proc/self/exe > reflect
13901 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
13902 echo "You have Linux-like /proc/self/exe."
13903 procselfexe='"/proc/self/exe"'
13907 if $issymlink /proc/curproc/file ; then
13908 $ls -l /proc/curproc/file > reflect
13909 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
13910 echo "You have BSD-like /proc/curproc/file."
13911 procselfexe='"/proc/curproc/file"'
13921 : see whether the pthread_atfork exists
13923 #include <pthread.h>
13926 #ifdef PTHREAD_ATFORK
13927 pthread_atfork(NULL,NULL,NULL);
13932 : see if pthread_atfork exists
13933 set try -DPTHREAD_ATFORK
13934 if eval $compile; then
13939 case "$usethreads" in
13942 $define) echo 'pthread_atfork found.' >&4 ;;
13943 *) echo 'pthread_atfork NOT found.' >&4 ;;
13946 set d_pthread_atfork
13950 : see whether the various POSIXish _yields exist
13952 #include <pthread.h>
13958 #ifdef PTHREAD_YIELD
13961 #ifdef PTHREAD_YIELD_NULL
13962 pthread_yield(NULL);
13968 : see if sched_yield exists
13969 set try -DSCHED_YIELD
13970 if eval $compile; then
13972 sched_yield='sched_yield()'
13976 case "$usethreads" in
13979 $define) echo 'sched_yield() found.' >&4 ;;
13980 *) echo 'sched_yield() NOT found.' >&4 ;;
13986 : see if pthread_yield exists
13987 set try -DPTHREAD_YIELD
13988 if eval $compile; then
13990 case "$sched_yield" in
13991 '') sched_yield='pthread_yield()' ;;
13994 set try -DPTHREAD_YIELD_NULL
13995 if eval $compile; then
13997 case "$sched_yield" in
13998 '') sched_yield='pthread_yield(NULL)' ;;
14004 case "$usethreads" in
14007 $define) echo 'pthread_yield() found.' >&4 ;;
14008 *) echo 'pthread_yield() NOT found.' >&4 ;;
14012 set d_pthread_yield
14015 case "$sched_yield" in
14016 '') sched_yield=undef ;;
14021 : see if random_r exists
14022 set random_r d_random_r
14024 case "$d_random_r" in
14026 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14029 hdrs="$hdrs $i_systime sys/time.h"
14032 case "$d_random_r_proto:$usethreads" in
14033 ":define") d_random_r_proto=define
14034 set d_random_r_proto random_r $hdrs
14038 case "$d_random_r_proto" in
14040 case "$random_r_proto" in
14041 ''|0) try='int random_r(int*, struct random_data*);'
14042 ./protochk "extern $try" $hdrs && random_r_proto=I_TS ;;
14044 case "$random_r_proto" in
14045 ''|0) d_random_r=undef
14047 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14048 * ) case "$random_r_proto" in
14049 REENTRANT_PROTO*) ;;
14050 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14052 echo "Prototype: $try" ;;
14055 *) case "$usethreads" in
14056 define) echo "random_r has no prototype, not using it." >&4 ;;
14063 *) random_r_proto=0
14067 : see if readdir and friends exist
14068 set readdir d_readdir
14070 set seekdir d_seekdir
14072 set telldir d_telldir
14074 set rewinddir d_rewinddir
14077 : see if readdir64_r exists
14078 set readdir64_r d_readdir64_r
14080 case "$d_readdir64_r" in
14082 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14085 hdrs="$hdrs $i_systime sys/time.h"
14088 case "$d_readdir64_r_proto:$usethreads" in
14089 ":define") d_readdir64_r_proto=define
14090 set d_readdir64_r_proto readdir64_r $hdrs
14094 case "$d_readdir64_r_proto" in
14096 case "$readdir64_r_proto" in
14097 ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14098 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14100 case "$readdir64_r_proto" in
14101 ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14102 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14104 case "$readdir64_r_proto" in
14105 ''|0) d_readdir64_r=undef
14106 readdir64_r_proto=0
14107 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14108 * ) case "$readdir64_r_proto" in
14109 REENTRANT_PROTO*) ;;
14110 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14112 echo "Prototype: $try" ;;
14115 *) case "$usethreads" in
14116 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14118 d_readdir64_r=undef
14119 readdir64_r_proto=0
14123 *) readdir64_r_proto=0
14127 : see if readdir_r exists
14128 set readdir_r d_readdir_r
14130 case "$d_readdir_r" in
14132 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14135 hdrs="$hdrs $i_systime sys/time.h"
14138 case "$d_readdir_r_proto:$usethreads" in
14139 ":define") d_readdir_r_proto=define
14140 set d_readdir_r_proto readdir_r $hdrs
14144 case "$d_readdir_r_proto" in
14146 case "$readdir_r_proto" in
14147 ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
14148 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
14150 case "$readdir_r_proto" in
14151 ''|0) try='int readdir_r(DIR*, struct dirent*);'
14152 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
14154 case "$readdir_r_proto" in
14155 ''|0) d_readdir_r=undef
14157 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
14158 * ) case "$readdir_r_proto" in
14159 REENTRANT_PROTO*) ;;
14160 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
14162 echo "Prototype: $try" ;;
14165 *) case "$usethreads" in
14166 define) echo "readdir_r has no prototype, not using it." >&4 ;;
14173 *) readdir_r_proto=0
14177 : see if readv exists
14181 : see if recvmsg exists
14182 set recvmsg d_recvmsg
14185 : see if rename exists
14186 set rename d_rename
14189 : see if rmdir exists
14193 : see if memory.h is available.
14198 : See if it conflicts with string.h
14204 $cppstdin $cppflags $cppminus < $strings > mem.h
14205 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
14207 echo "We won't be including <memory.h>."
14217 : can bcopy handle overlapping blocks?
14220 case "$d_memmove" in
14221 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
14222 *) case "$d_bcopy" in
14224 echo "Checking to see if bcopy() can do overlapping copies..." >&4
14226 #$i_memory I_MEMORY
14227 #$i_stdlib I_STDLIB
14228 #$i_string I_STRING
14229 #$i_unistd I_UNISTD
14231 $cat >>try.c <<'EOCP'
14234 # include <memory.h>
14237 # include <stdlib.h>
14240 # include <string.h>
14242 # include <strings.h>
14245 # include <unistd.h> /* Needed for NetBSD */
14249 char buf[128], abc[128];
14255 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14256 try to store the string in read-only memory. */
14257 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
14259 for (align = 7; align >= 0; align--) {
14260 for (len = 36; len; len--) {
14262 bcopy(abc, b, len);
14263 for (off = 1; off <= len; off++) {
14264 bcopy(b, b+off, len);
14265 bcopy(b+off, b, len);
14266 if (bcmp(b, abc, len))
14275 if eval $compile_ok; then
14276 if ./try 2>/dev/null; then
14277 echo "Yes, it can."
14280 echo "It can't, sorry."
14283 echo "(I can't compile the test program, so we'll assume not...)"
14287 $rm -f try.* try core
14293 : can memcpy handle overlapping blocks?
14296 case "$d_memmove" in
14297 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
14298 *) case "$d_memcpy" in
14300 echo "Checking to see if memcpy() can do overlapping copies..." >&4
14302 #$i_memory I_MEMORY
14303 #$i_stdlib I_STDLIB
14304 #$i_string I_STRING
14305 #$i_unistd I_UNISTD
14307 $cat >>try.c <<'EOCP'
14310 # include <memory.h>
14313 # include <stdlib.h>
14316 # include <string.h>
14318 # include <strings.h>
14321 # include <unistd.h> /* Needed for NetBSD */
14325 char buf[128], abc[128];
14331 /* Copy "abcde..." string to char abc[] so that gcc doesn't
14332 try to store the string in read-only memory. */
14333 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
14335 for (align = 7; align >= 0; align--) {
14336 for (len = 36; len; len--) {
14338 memcpy(b, abc, len);
14339 for (off = 1; off <= len; off++) {
14340 memcpy(b+off, b, len);
14341 memcpy(b, b+off, len);
14342 if (memcmp(b, abc, len))
14351 if eval $compile_ok; then
14352 if ./try 2>/dev/null; then
14353 echo "Yes, it can."
14356 echo "It can't, sorry."
14359 echo "(I can't compile the test program, so we'll assume not...)"
14363 $rm -f try.* try core
14369 : can memcmp be trusted to compare relative magnitude?
14371 case "$d_memcmp" in
14374 echo "Checking if your memcmp() can compare relative magnitude..." >&4
14376 #$i_memory I_MEMORY
14377 #$i_stdlib I_STDLIB
14378 #$i_string I_STRING
14379 #$i_unistd I_UNISTD
14381 $cat >>try.c <<'EOCP'
14384 # include <memory.h>
14387 # include <stdlib.h>
14390 # include <string.h>
14392 # include <strings.h>
14395 # include <unistd.h> /* Needed for NetBSD */
14401 if ((a < b) && memcmp(&a, &b, 1) < 0)
14407 if eval $compile_ok; then
14408 if $run ./try 2>/dev/null; then
14409 echo "Yes, it can."
14412 echo "No, it can't (it uses signed chars)."
14415 echo "(I can't compile the test program, so we'll assume not...)"
14419 $rm -f try.* try core
14423 : see if prototype for sbrk is available
14425 set d_sbrkproto sbrk $i_unistd unistd.h
14428 : see if select exists
14429 set select d_select
14432 : see if semctl exists
14433 set semctl d_semctl
14436 : see if semget exists
14437 set semget d_semget
14440 : see if semop exists
14444 : see how much of the 'sem*(2)' library is present.
14447 case "$d_semctl$d_semget$d_semop" in
14448 *"$undef"*) h_sem=false;;
14452 case "`ipcs 2>&1`" in
14453 "SVID messages"*"not configured"*)
14454 echo "Your $osname does not have the sem*(2) configured." >&4
14457 set semctl d_semctl
14459 set semget d_semget
14467 : we could also check for sys/ipc.h ...
14468 if $h_sem && $test `./findhdr sys/sem.h`; then
14469 echo "You have the full sem*(2) library." >&4
14472 echo "You don't have the full sem*(2) library." >&4
14478 : see whether sys/sem.h defines union semun
14480 $cat > try.c <<'END'
14481 #include <sys/types.h>
14482 #include <sys/ipc.h>
14483 #include <sys/sem.h>
14484 int main () { union semun semun; semun.buf = 0; }
14487 if eval $compile; then
14488 echo "You have union semun in <sys/sem.h>." >&4
14491 echo "You do not have union semun in <sys/sem.h>." >&4
14494 $rm -f try try.c try.h
14498 : see how to do semctl IPC_STAT
14501 : see whether semctl IPC_STAT can use union semun
14506 # define S_IRUSR S_IREAD
14507 # define S_IWUSR S_IWRITE
14508 # define S_IXUSR S_IEXEC
14510 # define S_IRUSR 0400
14511 # define S_IWUSR 0200
14512 # define S_IXUSR 0100
14514 # define S_IRGRP (S_IRUSR>>3)
14515 # define S_IWGRP (S_IWUSR>>3)
14516 # define S_IXGRP (S_IXUSR>>3)
14517 # define S_IROTH (S_IRUSR>>6)
14518 # define S_IWOTH (S_IWUSR>>6)
14519 # define S_IXOTH (S_IXUSR>>6)
14522 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
14523 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
14524 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
14529 #include <sys/types.h>
14530 #include <sys/ipc.h>
14531 #include <sys/sem.h>
14532 #include <sys/stat.h>
14539 #$d_union_semun HAS_UNION_SEMUN
14542 #ifndef HAS_UNION_SEMUN
14545 struct semid_ds *buf;
14546 unsigned short *array;
14552 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
14553 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14555 struct semid_ds argbuf;
14558 st = semctl(sem, 0, IPC_STAT, arg);
14562 # endif /* IPC_STAT */
14563 printf("semctl IPC_STAT failed: errno = %d\n", errno);
14565 if (semctl(sem, 0, IPC_RMID, arg) != 0)
14566 # endif /* IPC_RMID */
14567 printf("semctl IPC_RMID failed: errno = %d\n", errno);
14569 #endif /* IPC_PRIVATE && ... */
14570 printf("semget failed: errno = %d\n", errno);
14576 if eval $compile; then
14579 semun) val="$define" ;;
14585 case "$d_semctl_semun" in
14587 echo "You can use union semun for semctl IPC_STAT." >&4
14590 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
14595 : see whether semctl IPC_STAT can use struct semid_ds pointer
14596 $cat > try.c <<'END'
14597 #include <sys/types.h>
14598 #include <sys/ipc.h>
14599 #include <sys/sem.h>
14600 #include <sys/stat.h>
14608 struct semid_ds arg;
14611 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
14612 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
14615 st = semctl(sem, 0, IPC_STAT, &arg);
14617 printf("semid_ds\n");
14619 # endif /* IPC_STAT */
14620 printf("semctl IPC_STAT failed: errno = %d\n", errno);
14622 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
14623 # endif /* IPC_RMID */
14624 printf("semctl IPC_RMID failed: errno = %d\n", errno);
14626 #endif /* IPC_PRIVATE && ... */
14627 printf("semget failed: errno = %d\n", errno);
14634 if eval $compile; then
14637 semid_ds) val="$define" ;;
14641 set d_semctl_semid_ds
14643 case "$d_semctl_semid_ds" in
14645 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
14647 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
14654 # We do not have the full sem*(2) library, so assume we can not
14660 set d_semctl_semid_ds
14665 : see if sendmsg exists
14666 set sendmsg d_sendmsg
14669 : see if setegid exists
14670 set setegid d_setegid
14673 : see if seteuid exists
14674 set seteuid d_seteuid
14677 : see if setgrent exists
14678 set setgrent d_setgrent
14681 : see if setgrent_r exists
14682 set setgrent_r d_setgrent_r
14684 case "$d_setgrent_r" in
14686 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
14689 hdrs="$hdrs $i_systime sys/time.h"
14692 case "$d_setgrent_r_proto:$usethreads" in
14693 ":define") d_setgrent_r_proto=define
14694 set d_setgrent_r_proto setgrent_r $hdrs
14698 case "$d_setgrent_r_proto" in
14700 case "$setgrent_r_proto" in
14701 ''|0) try='int setgrent_r(FILE**);'
14702 ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
14704 case "$setgrent_r_proto" in
14705 ''|0) try='void setgrent_r(FILE**);'
14706 ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
14708 case "$setgrent_r_proto" in
14709 ''|0) d_setgrent_r=undef
14711 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
14712 * ) case "$setgrent_r_proto" in
14713 REENTRANT_PROTO*) ;;
14714 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
14716 echo "Prototype: $try" ;;
14719 *) case "$usethreads" in
14720 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
14727 *) setgrent_r_proto=0
14731 : see if sethostent exists
14732 set sethostent d_sethent
14735 : see if sethostent_r exists
14736 set sethostent_r d_sethostent_r
14738 case "$d_sethostent_r" in
14740 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14743 hdrs="$hdrs $i_systime sys/time.h"
14746 case "$d_sethostent_r_proto:$usethreads" in
14747 ":define") d_sethostent_r_proto=define
14748 set d_sethostent_r_proto sethostent_r $hdrs
14752 case "$d_sethostent_r_proto" in
14754 case "$sethostent_r_proto" in
14755 ''|0) try='int sethostent_r(int, struct hostent_data*);'
14756 ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
14758 case "$sethostent_r_proto" in
14759 ''|0) try='void sethostent_r(int, struct hostent_data*);'
14760 ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
14762 case "$sethostent_r_proto" in
14763 ''|0) d_sethostent_r=undef
14764 sethostent_r_proto=0
14765 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
14766 * ) case "$sethostent_r_proto" in
14767 REENTRANT_PROTO*) ;;
14768 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
14770 echo "Prototype: $try" ;;
14773 *) case "$usethreads" in
14774 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
14776 d_sethostent_r=undef
14777 sethostent_r_proto=0
14781 *) sethostent_r_proto=0
14785 : see if setitimer exists
14786 set setitimer d_setitimer
14789 : see if setlinebuf exists
14790 set setlinebuf d_setlinebuf
14793 : see if setlocale exists
14794 set setlocale d_setlocale
14797 : see if locale.h is available
14798 set locale.h i_locale
14801 : see if setlocale_r exists
14802 set setlocale_r d_setlocale_r
14804 case "$d_setlocale_r" in
14806 hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
14809 hdrs="$hdrs $i_systime sys/time.h"
14812 case "$d_setlocale_r_proto:$usethreads" in
14813 ":define") d_setlocale_r_proto=define
14814 set d_setlocale_r_proto setlocale_r $hdrs
14818 case "$d_setlocale_r_proto" in
14820 case "$setlocale_r_proto" in
14821 ''|0) try='int setlocale_r(int, const char*, char*, int);'
14822 ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
14824 case "$setlocale_r_proto" in
14825 ''|0) d_setlocale_r=undef
14826 setlocale_r_proto=0
14827 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
14828 * ) case "$setlocale_r_proto" in
14829 REENTRANT_PROTO*) ;;
14830 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
14832 echo "Prototype: $try" ;;
14835 *) case "$usethreads" in
14836 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
14838 d_setlocale_r=undef
14839 setlocale_r_proto=0
14843 *) setlocale_r_proto=0
14847 : see if setnetent exists
14848 set setnetent d_setnent
14851 : see if setnetent_r exists
14852 set setnetent_r d_setnetent_r
14854 case "$d_setnetent_r" in
14856 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14859 hdrs="$hdrs $i_systime sys/time.h"
14862 case "$d_setnetent_r_proto:$usethreads" in
14863 ":define") d_setnetent_r_proto=define
14864 set d_setnetent_r_proto setnetent_r $hdrs
14868 case "$d_setnetent_r_proto" in
14870 case "$setnetent_r_proto" in
14871 ''|0) try='int setnetent_r(int, struct netent_data*);'
14872 ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
14874 case "$setnetent_r_proto" in
14875 ''|0) try='void setnetent_r(int, struct netent_data*);'
14876 ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
14878 case "$setnetent_r_proto" in
14879 ''|0) d_setnetent_r=undef
14880 setnetent_r_proto=0
14881 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
14882 * ) case "$setnetent_r_proto" in
14883 REENTRANT_PROTO*) ;;
14884 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
14886 echo "Prototype: $try" ;;
14889 *) case "$usethreads" in
14890 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
14892 d_setnetent_r=undef
14893 setnetent_r_proto=0
14897 *) setnetent_r_proto=0
14901 : see if setprotoent exists
14902 set setprotoent d_setpent
14905 : see if setpgid exists
14906 set setpgid d_setpgid
14909 : see if setpgrp2 exists
14910 set setpgrp2 d_setpgrp2
14913 : see if setpriority exists
14914 set setpriority d_setprior
14917 : see if setproctitle exists
14918 set setproctitle d_setproctitle
14921 : see if setprotoent_r exists
14922 set setprotoent_r d_setprotoent_r
14924 case "$d_setprotoent_r" in
14926 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14929 hdrs="$hdrs $i_systime sys/time.h"
14932 case "$d_setprotoent_r_proto:$usethreads" in
14933 ":define") d_setprotoent_r_proto=define
14934 set d_setprotoent_r_proto setprotoent_r $hdrs
14938 case "$d_setprotoent_r_proto" in
14940 case "$setprotoent_r_proto" in
14941 ''|0) try='int setprotoent_r(int, struct protoent_data*);'
14942 ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
14944 case "$setprotoent_r_proto" in
14945 ''|0) try='void setprotoent_r(int, struct protoent_data*);'
14946 ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
14948 case "$setprotoent_r_proto" in
14949 ''|0) d_setprotoent_r=undef
14950 setprotoent_r_proto=0
14951 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
14952 * ) case "$setprotoent_r_proto" in
14953 REENTRANT_PROTO*) ;;
14954 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
14956 echo "Prototype: $try" ;;
14959 *) case "$usethreads" in
14960 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
14962 d_setprotoent_r=undef
14963 setprotoent_r_proto=0
14967 *) setprotoent_r_proto=0
14971 : see if setpwent exists
14972 set setpwent d_setpwent
14975 : see if setpwent_r exists
14976 set setpwent_r d_setpwent_r
14978 case "$d_setpwent_r" in
14980 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14983 hdrs="$hdrs $i_systime sys/time.h"
14986 case "$d_setpwent_r_proto:$usethreads" in
14987 ":define") d_setpwent_r_proto=define
14988 set d_setpwent_r_proto setpwent_r $hdrs
14992 case "$d_setpwent_r_proto" in
14994 case "$setpwent_r_proto" in
14995 ''|0) try='int setpwent_r(FILE**);'
14996 ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
14998 case "$setpwent_r_proto" in
14999 ''|0) try='void setpwent_r(FILE**);'
15000 ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15002 case "$setpwent_r_proto" in
15003 ''|0) d_setpwent_r=undef
15005 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15006 * ) case "$setpwent_r_proto" in
15007 REENTRANT_PROTO*) ;;
15008 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15010 echo "Prototype: $try" ;;
15013 *) case "$usethreads" in
15014 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15021 *) setpwent_r_proto=0
15025 : see if setregid exists
15026 set setregid d_setregid
15028 set setresgid d_setresgid
15031 : see if setreuid exists
15032 set setreuid d_setreuid
15034 set setresuid d_setresuid
15037 : see if setrgid exists
15038 set setrgid d_setrgid
15041 : see if setruid exists
15042 set setruid d_setruid
15045 : see if setservent exists
15046 set setservent d_setsent
15049 : see if setservent_r exists
15050 set setservent_r d_setservent_r
15052 case "$d_setservent_r" in
15054 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15057 hdrs="$hdrs $i_systime sys/time.h"
15060 case "$d_setservent_r_proto:$usethreads" in
15061 ":define") d_setservent_r_proto=define
15062 set d_setservent_r_proto setservent_r $hdrs
15066 case "$d_setservent_r_proto" in
15068 case "$setservent_r_proto" in
15069 ''|0) try='int setservent_r(int, struct servent_data*);'
15070 ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15072 case "$setservent_r_proto" in
15073 ''|0) try='void setservent_r(int, struct servent_data*);'
15074 ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15076 case "$setservent_r_proto" in
15077 ''|0) d_setservent_r=undef
15078 setservent_r_proto=0
15079 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15080 * ) case "$setservent_r_proto" in
15081 REENTRANT_PROTO*) ;;
15082 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15084 echo "Prototype: $try" ;;
15087 *) case "$usethreads" in
15088 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15090 d_setservent_r=undef
15091 setservent_r_proto=0
15095 *) setservent_r_proto=0
15099 : see if setsid exists
15100 set setsid d_setsid
15103 : see if setvbuf exists
15104 set setvbuf d_setvbuf
15107 : see if sfio.h is available
15112 : see if sfio library is available
15123 : Ok, but do we want to use it.
15127 true|$define|[yY]*) dflt='y';;
15130 echo "$package can use the sfio library, but it is experimental."
15131 case "$useperlio" in
15133 echo "For sfio also the PerlIO abstraction layer is needed."
15134 echo "Earlier you said you wouldn't want that."
15137 rp="You seem to have sfio available, do you want to try using it?"
15140 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
15141 useperlio="$define"
15144 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
15149 *) case "$usesfio" in
15150 true|$define|[yY]*)
15151 echo "Sorry, cannot find sfio on this machine." >&4
15152 echo "Ignoring your setting of usesfio=$usesfio." >&4
15161 $define) usesfio='true';;
15162 *) usesfio='false';;
15166 *) : Remove sfio from list of libraries to use
15169 echo "Removing unneeded -lsfio from library list" >&4
15170 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
15173 echo "libs = $libs" >&4
15180 : see if shmctl exists
15181 set shmctl d_shmctl
15184 : see if shmget exists
15185 set shmget d_shmget
15188 : see if shmat exists
15191 : see what shmat returns
15194 $cat >shmat.c <<'END'
15195 #include <sys/shm.h>
15198 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
15203 echo "and it returns ($shmattype)." >&4
15204 : see if a prototype for shmat is available
15205 xxx=`./findhdr sys/shm.h`
15206 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
15207 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
15218 set d_shmatprototype
15221 : see if shmdt exists
15225 : see how much of the 'shm*(2)' library is present.
15228 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
15229 *"$undef"*) h_shm=false;;
15233 case "`ipcs 2>&1`" in
15234 "SVID shared memory"*"not configured"*)
15235 echo "Your $osname does not have the shm*(2) configured." >&4
15238 set shmctl d_shmctl
15240 set shmget d_shmget
15250 : we could also check for sys/ipc.h ...
15251 if $h_shm && $test `./findhdr sys/shm.h`; then
15252 echo "You have the full shm*(2) library." >&4
15255 echo "You don't have the full shm*(2) library." >&4
15262 : see if we have sigaction
15263 if set sigaction val -f d_sigaction; eval $csym; $val; then
15264 echo 'sigaction() found.' >&4
15265 $cat > try.c <<'EOP'
15267 #include <sys/types.h>
15268 #include <signal.h>
15271 struct sigaction act, oact;
15273 oact.sa_handler = 0;
15274 /* so that act and oact are used */
15275 exit(act.sa_flags == 0 && oact.sa_handler == 0);
15279 if eval $compile_ok; then
15282 echo "But you don't seem to have a useable struct sigaction." >&4
15286 echo 'sigaction NOT found.' >&4
15289 set d_sigaction; eval $setvar
15290 $rm -f try try$_o try.c
15292 : see if sigprocmask exists
15293 set sigprocmask d_sigprocmask
15296 : see if sigsetjmp exists
15298 case "$d_sigsetjmp" in
15300 $cat >try.c <<'EOP'
15301 #include <setjmp.h>
15306 if (sigsetjmp(env,1))
15309 siglongjmp(env, 1);
15314 if eval $compile; then
15315 if $run ./try >/dev/null 2>&1; then
15316 echo "POSIX sigsetjmp found." >&4
15320 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
15326 echo "sigsetjmp not found." >&4
15330 *) val="$d_sigsetjmp"
15331 case "$d_sigsetjmp" in
15332 $define) echo "POSIX sigsetjmp found." >&4;;
15333 $undef) echo "sigsetjmp not found." >&4;;
15341 : see if sockatmark exists
15342 set sockatmark d_sockatmark
15345 : see if prototype for sockatmark is available
15347 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
15350 : see if socks5_init exists
15351 set socks5_init d_socks5_init
15354 : see if srand48_r exists
15355 set srand48_r d_srand48_r
15357 case "$d_srand48_r" in
15359 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15362 hdrs="$hdrs $i_systime sys/time.h"
15365 case "$d_srand48_r_proto:$usethreads" in
15366 ":define") d_srand48_r_proto=define
15367 set d_srand48_r_proto srand48_r $hdrs
15371 case "$d_srand48_r_proto" in
15373 case "$srand48_r_proto" in
15374 ''|0) try='int srand48_r(long, struct drand48_data*);'
15375 ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
15377 case "$srand48_r_proto" in
15378 ''|0) d_srand48_r=undef
15380 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
15381 * ) case "$srand48_r_proto" in
15382 REENTRANT_PROTO*) ;;
15383 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
15385 echo "Prototype: $try" ;;
15388 *) case "$usethreads" in
15389 define) echo "srand48_r has no prototype, not using it." >&4 ;;
15396 *) srand48_r_proto=0
15400 : see if srandom_r exists
15401 set srandom_r d_srandom_r
15403 case "$d_srandom_r" in
15405 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15408 hdrs="$hdrs $i_systime sys/time.h"
15411 case "$d_srandom_r_proto:$usethreads" in
15412 ":define") d_srandom_r_proto=define
15413 set d_srandom_r_proto srandom_r $hdrs
15417 case "$d_srandom_r_proto" in
15419 case "$srandom_r_proto" in
15420 ''|0) try='int srandom_r(unsigned int, struct random_data*);'
15421 ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
15423 case "$srandom_r_proto" in
15424 ''|0) d_srandom_r=undef
15426 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
15427 * ) case "$srandom_r_proto" in
15428 REENTRANT_PROTO*) ;;
15429 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
15431 echo "Prototype: $try" ;;
15434 *) case "$usethreads" in
15435 define) echo "srandom_r has no prototype, not using it." >&4 ;;
15442 *) srandom_r_proto=0
15446 : see if prototype for setresgid is available
15448 set d_sresgproto setresgid $i_unistd unistd.h
15451 : see if prototype for setresuid is available
15453 set d_sresuproto setresuid $i_unistd unistd.h
15456 : see if sys/stat.h is available
15457 set sys/stat.h i_sysstat
15461 : see if stat knows about block sizes
15463 echo "Checking to see if your struct stat has st_blocks field..." >&4
15464 set d_statblks stat st_blocks $i_sysstat sys/stat.h
15468 : see if this is a sys/vfs.h system
15469 set sys/vfs.h i_sysvfs
15473 : see if this is a sys/statfs.h system
15474 set sys/statfs.h i_sysstatfs
15479 echo "Checking to see if your system supports struct statfs..." >&4
15480 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
15482 case "$d_statfs_s" in
15483 "$define") echo "Yes, it does." ;;
15484 *) echo "No, it doesn't." ;;
15489 : see if struct statfs knows about f_flags
15490 case "$d_statfs_s" in
15493 echo "Checking to see if your struct statfs has f_flags field..." >&4
15494 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
15498 set d_statfs_f_flags
15502 case "$d_statfs_f_flags" in
15503 "$define") echo "Yes, it does." ;;
15504 *) echo "No, it doesn't." ;;
15507 : see if _ptr and _cnt from stdio act std
15510 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
15511 echo "(Looks like you have stdio.h from BSD.)"
15512 case "$stdio_ptr" in
15513 '') stdio_ptr='((fp)->_p)'
15516 *) ptr_lval=$d_stdio_ptr_lval;;
15518 case "$stdio_cnt" in
15519 '') stdio_cnt='((fp)->_r)'
15522 *) cnt_lval=$d_stdio_cnt_lval;;
15524 case "$stdio_base" in
15525 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
15527 case "$stdio_bufsiz" in
15528 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
15530 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
15531 echo "(Looks like you have stdio.h from Linux.)"
15532 case "$stdio_ptr" in
15533 '') stdio_ptr='((fp)->_IO_read_ptr)'
15536 *) ptr_lval=$d_stdio_ptr_lval;;
15538 case "$stdio_cnt" in
15539 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
15542 *) cnt_lval=$d_stdio_cnt_lval;;
15544 case "$stdio_base" in
15545 '') stdio_base='((fp)->_IO_read_base)';;
15547 case "$stdio_bufsiz" in
15548 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
15551 case "$stdio_ptr" in
15552 '') stdio_ptr='((fp)->_ptr)'
15555 *) ptr_lval=$d_stdio_ptr_lval;;
15557 case "$stdio_cnt" in
15558 '') stdio_cnt='((fp)->_cnt)'
15561 *) cnt_lval=$d_stdio_cnt_lval;;
15563 case "$stdio_base" in
15564 '') stdio_base='((fp)->_base)';;
15566 case "$stdio_bufsiz" in
15567 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
15571 : test whether _ptr and _cnt really work
15572 echo "Checking how std your stdio is..." >&4
15575 #define FILE_ptr(fp) $stdio_ptr
15576 #define FILE_cnt(fp) $stdio_cnt
15578 FILE *fp = fopen("try.c", "r");
15581 18 <= FILE_cnt(fp) &&
15582 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
15590 if eval $compile && $to try.c; then
15591 if $run ./try; then
15592 echo "Your stdio acts pretty std."
15595 echo "Your stdio isn't very std."
15598 echo "Your stdio doesn't appear very std."
15604 : Can _ptr be used as an lvalue?
15605 case "$d_stdstdio$ptr_lval" in
15606 $define$define) val=$define ;;
15609 set d_stdio_ptr_lval
15612 : Can _cnt be used as an lvalue?
15613 case "$d_stdstdio$cnt_lval" in
15614 $define$define) val=$define ;;
15617 set d_stdio_cnt_lval
15621 : test whether setting _ptr sets _cnt as a side effect
15622 d_stdio_ptr_lval_sets_cnt="$undef"
15623 d_stdio_ptr_lval_nochange_cnt="$undef"
15624 case "$d_stdio_ptr_lval$d_stdstdio" in
15626 echo "Checking to see what happens if we set the stdio ptr..." >&4
15629 /* Can we scream? */
15630 /* Eat dust sed :-) */
15631 /* In the buffer space, no one can hear you scream. */
15632 #define FILE_ptr(fp) $stdio_ptr
15633 #define FILE_cnt(fp) $stdio_cnt
15634 #include <sys/types.h>
15636 FILE *fp = fopen("try.c", "r");
15641 puts("Fail even to read");
15644 c = getc(fp); /* Read away the first # */
15646 puts("Fail even to read");
15650 18 <= FILE_cnt(fp) &&
15651 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
15653 puts("Fail even to read");
15656 ptr = (char*) FILE_ptr(fp);
15657 cnt = (size_t)FILE_cnt(fp);
15659 FILE_ptr(fp) += 42;
15661 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
15662 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
15665 if (FILE_cnt(fp) <= 20) {
15666 printf ("Fail (<20 chars to test)");
15669 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
15670 puts("Fail compare");
15673 if (cnt == FILE_cnt(fp)) {
15674 puts("Pass_unchanged");
15677 if (FILE_cnt(fp) == (cnt - 42)) {
15678 puts("Pass_changed");
15681 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
15687 if eval $compile && $to try.c; then
15688 case `$run ./try` in
15690 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
15691 d_stdio_ptr_lval_sets_cnt="$define" ;;
15693 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
15694 d_stdio_ptr_lval_nochange_cnt="$define" ;;
15696 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
15698 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
15701 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
15707 : see if _base is also standard
15709 case "$d_stdstdio" in
15713 #define FILE_base(fp) $stdio_base
15714 #define FILE_bufsiz(fp) $stdio_bufsiz
15716 FILE *fp = fopen("try.c", "r");
15719 19 <= FILE_bufsiz(fp) &&
15720 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
15727 if eval $compile && $to try.c; then
15728 if $run ./try; then
15729 echo "And its _base field acts std."
15732 echo "But its _base field isn't std."
15735 echo "However, it seems to be lacking the _base field."
15744 Checking how to access stdio streams by file descriptor number...
15746 case "$stdio_stream_array" in
15747 '') $cat >try.c <<EOCP
15750 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
15754 for s in _iob __iob __sF
15756 set try -DSTDIO_STREAM_ARRAY=$s
15757 if eval $compile; then
15758 case "`$run ./try`" in
15759 yes) stdio_stream_array=$s; break ;;
15763 $rm -f try.* try$exe_ext
15765 case "$stdio_stream_array" in
15767 I can't figure out how to access stdio streams by file descriptor number.
15769 d_stdio_stream_array="$undef"
15772 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
15774 d_stdio_stream_array="$define"
15778 : see if strcoll exists
15779 set strcoll d_strcoll
15782 : check for structure copying
15784 echo "Checking to see if your C compiler can copy structs..." >&4
15785 $cat >try.c <<'EOCP'
15795 if $cc -c try.c >/dev/null 2>&1 ; then
15797 echo "Yup, it can."
15800 echo "Nope, it can't."
15806 : see if strerror and/or sys_errlist[] exist
15808 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
15809 if set strerror val -f d_strerror; eval $csym; $val; then
15810 echo 'strerror() found.' >&4
15811 d_strerror="$define"
15812 d_strerrm='strerror(e)'
15813 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
15814 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
15815 d_syserrlst="$define"
15817 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
15818 d_syserrlst="$undef"
15820 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
15821 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
15822 echo 'strerror() found in string header.' >&4
15823 d_strerror="$define"
15824 d_strerrm='strerror(e)'
15825 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
15826 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
15827 d_syserrlst="$define"
15829 echo "(You don't appear to have any sys_errlist[], how can this be?)"
15830 d_syserrlst="$undef"
15832 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
15833 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
15834 d_strerror="$undef"
15835 d_syserrlst="$define"
15836 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
15838 echo 'strerror() and sys_errlist[] NOT found.' >&4
15839 d_strerror="$undef"
15840 d_syserrlst="$undef"
15841 d_strerrm='"unknown"'
15845 : see if strerror_r exists
15846 set strerror_r d_strerror_r
15848 case "$d_strerror_r" in
15850 hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
15853 hdrs="$hdrs $i_systime sys/time.h"
15856 case "$d_strerror_r_proto:$usethreads" in
15857 ":define") d_strerror_r_proto=define
15858 set d_strerror_r_proto strerror_r $hdrs
15862 case "$d_strerror_r_proto" in
15864 case "$strerror_r_proto" in
15865 ''|0) try='int strerror_r(int, char*, size_t);'
15866 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
15868 case "$strerror_r_proto" in
15869 ''|0) try='int strerror_r(int, char*, int);'
15870 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
15872 case "$strerror_r_proto" in
15873 ''|0) try='char* strerror_r(int, char*, size_t);'
15874 ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
15876 case "$strerror_r_proto" in
15877 ''|0) d_strerror_r=undef
15879 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
15880 * ) case "$strerror_r_proto" in
15881 REENTRANT_PROTO*) ;;
15882 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
15884 echo "Prototype: $try" ;;
15887 *) case "$usethreads" in
15888 define) echo "strerror_r has no prototype, not using it." >&4 ;;
15895 *) strerror_r_proto=0
15899 : see if strftime exists
15900 set strftime d_strftime
15903 : see if strtod exists
15904 set strtod d_strtod
15907 : see if strtol exists
15908 set strtol d_strtol
15911 : see if strtold exists
15912 set strtold d_strtold
15915 : see if strtoll exists
15916 set strtoll d_strtoll
15919 case "$d_longlong-$d_strtoll" in
15922 Checking whether your strtoll() works okay...
15924 $cat >try.c <<'EOCP'
15927 #define strtoll __strtoll
15930 #define strtoll _strtoll
15933 extern long long int strtoll(char *s, char **, int);
15934 static int bad = 0;
15935 int check(char *s, long long ell, int een) {
15938 gll = strtoll(s, 0, 10);
15939 if (!((gll == ell) && (errno == een)))
15943 check(" 1", 1LL, 0);
15944 check(" 0", 0LL, 0);
15945 check("-1", -1LL, 0);
15946 check("-9223372036854775808", -9223372036854775808LL, 0);
15947 check("-9223372036854775808", -9223372036854775808LL, 0);
15948 check(" 9223372036854775807", 9223372036854775807LL, 0);
15949 check("-9223372036854775808", -9223372036854775808LL, 0);
15950 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
15951 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
15957 if eval $compile; then
15960 ok) echo "Your strtoll() seems to be working okay." ;;
15962 Your strtoll() doesn't seem to be working okay.
15968 echo "(I can't seem to compile the test program--assuming it doesn't)"
15974 : see if strtoq exists
15975 set strtoq d_strtoq
15978 : see if strtoul exists
15979 set strtoul d_strtoul
15982 case "$d_strtoul" in
15985 Checking whether your strtoul() works okay...
15987 $cat >try.c <<'EOCP'
15990 extern unsigned long int strtoul(char *s, char **, int);
15991 static int bad = 0;
15992 void check(char *s, unsigned long eul, int een) {
15995 gul = strtoul(s, 0, 10);
15996 if (!((gul == eul) && (errno == een)))
16000 check(" 1", 1L, 0);
16001 check(" 0", 0L, 0);
16003 case "$longsize" in
16005 $cat >>try.c <<'EOCP'
16006 check("18446744073709551615", 18446744073709551615UL, 0);
16007 check("18446744073709551616", 18446744073709551615UL, ERANGE);
16008 #if 0 /* strtoul() for /^-/ strings is undefined. */
16009 check("-1", 18446744073709551615UL, 0);
16010 check("-18446744073709551614", 2, 0);
16011 check("-18446744073709551615", 1, 0);
16012 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16013 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16018 $cat >>try.c <<'EOCP'
16019 check("4294967295", 4294967295UL, 0);
16020 check("4294967296", 4294967295UL, ERANGE);
16021 #if 0 /* strtoul() for /^-/ strings is undefined. */
16022 check("-1", 4294967295UL, 0);
16023 check("-4294967294", 2, 0);
16024 check("-4294967295", 1, 0);
16025 check("-4294967296", 4294967295UL, ERANGE);
16026 check("-4294967297", 4294967295UL, ERANGE);
16031 : Should we write these tests to be more portable by sprintf-ing
16032 : ~0 and then manipulating that char string as input for strtol?
16035 $cat >>try.c <<'EOCP'
16042 if eval $compile; then
16043 case "`$run ./try`" in
16044 ok) echo "Your strtoul() seems to be working okay." ;;
16046 Your strtoul() doesn't seem to be working okay.
16055 : see if strtoull exists
16056 set strtoull d_strtoull
16059 case "$d_longlong-$d_strtoull" in
16062 Checking whether your strtoull() works okay...
16064 $cat >try.c <<'EOCP'
16067 #define strtoull __strtoull
16070 extern unsigned long long int strtoull(char *s, char **, int);
16071 static int bad = 0;
16072 int check(char *s, long long eull, int een) {
16075 gull = strtoull(s, 0, 10);
16076 if (!((gull == eull) && (errno == een)))
16080 check(" 1", 1LL, 0);
16081 check(" 0", 0LL, 0);
16082 check("18446744073709551615", 18446744073709551615ULL, 0);
16083 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
16084 #if 0 /* strtoull() for /^-/ strings is undefined. */
16085 check("-1", 18446744073709551615ULL, 0);
16086 check("-18446744073709551614", 2LL, 0);
16087 check("-18446744073709551615", 1LL, 0);
16088 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16089 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16096 if eval $compile; then
16097 case "`$run ./try`" in
16098 ok) echo "Your strtoull() seems to be working okay." ;;
16100 Your strtoull() doesn't seem to be working okay.
16102 d_strtoull="$undef"
16109 : see if strtouq exists
16110 set strtouq d_strtouq
16113 case "$d_strtouq" in
16116 Checking whether your strtouq() works okay...
16118 $cat >try.c <<'EOCP'
16121 extern unsigned long long int strtouq(char *s, char **, int);
16122 static int bad = 0;
16123 void check(char *s, unsigned long long eull, int een) {
16124 unsigned long long gull;
16126 gull = strtouq(s, 0, 10);
16127 if (!((gull == eull) && (errno == een)))
16131 check(" 1", 1LL, 0);
16132 check(" 0", 0LL, 0);
16133 check("18446744073709551615", 18446744073709551615ULL, 0);
16134 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
16135 #if 0 /* strtouq() for /^-/ strings is undefined. */
16136 check("-1", 18446744073709551615ULL, 0);
16137 check("-18446744073709551614", 2LL, 0);
16138 check("-18446744073709551615", 1LL, 0);
16139 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16140 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16148 if eval $compile; then
16149 case "`$run ./try`" in
16150 ok) echo "Your strtouq() seems to be working okay." ;;
16152 Your strtouq() doesn't seem to be working okay.
16161 : see if strxfrm exists
16162 set strxfrm d_strxfrm
16165 : see if symlink exists
16166 set symlink d_symlink
16169 : see if syscall exists
16170 set syscall d_syscall
16173 : see if prototype for syscall is available
16175 set d_syscallproto syscall $i_unistd unistd.h
16178 : see if sysconf exists
16179 set sysconf d_sysconf
16182 : see if system exists
16183 set system d_system
16186 : see if tcgetpgrp exists
16187 set tcgetpgrp d_tcgetpgrp
16190 : see if tcsetpgrp exists
16191 set tcsetpgrp d_tcsetpgrp
16194 : see if prototype for telldir is available
16196 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16199 : see if time exists
16201 if test "X$d_time" = X -o X"$timetype" = X; then
16202 if set time val -f d_time; eval $csym; $val; then
16203 echo 'time() found.' >&4
16205 rp="What is the type returned by time() on this system?"
16206 set time_t timetype long stdio.h sys/types.h
16209 echo 'time() not found, hope that will do.' >&4
16217 : see if this is a sys/times.h system
16218 set sys/times.h i_systimes
16221 : see if times exists
16223 if set times val -f d_times; eval $csym; $val; then
16224 echo 'times() found.' >&4
16227 case "$i_systimes" in
16228 "$define") inc='sys/times.h';;
16230 rp="What is the type returned by times() on this system?"
16231 set clock_t clocktype long stdio.h sys/types.h $inc
16234 echo 'times() NOT found, hope that will do.' >&4
16239 : see if tmpnam_r exists
16240 set tmpnam_r d_tmpnam_r
16242 case "$d_tmpnam_r" in
16244 hdrs="$i_systypes sys/types.h define stdio.h "
16247 hdrs="$hdrs $i_systime sys/time.h"
16250 case "$d_tmpnam_r_proto:$usethreads" in
16251 ":define") d_tmpnam_r_proto=define
16252 set d_tmpnam_r_proto tmpnam_r $hdrs
16256 case "$d_tmpnam_r_proto" in
16258 case "$tmpnam_r_proto" in
16259 ''|0) try='char* tmpnam_r(char*);'
16260 ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16262 case "$tmpnam_r_proto" in
16263 ''|0) d_tmpnam_r=undef
16265 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16266 * ) case "$tmpnam_r_proto" in
16267 REENTRANT_PROTO*) ;;
16268 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16270 echo "Prototype: $try" ;;
16273 *) case "$usethreads" in
16274 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16281 *) tmpnam_r_proto=0
16285 : see if truncate exists
16286 set truncate d_truncate
16289 : see if ttyname_r exists
16290 set ttyname_r d_ttyname_r
16292 case "$d_ttyname_r" in
16294 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16297 hdrs="$hdrs $i_systime sys/time.h"
16300 case "$d_ttyname_r_proto:$usethreads" in
16301 ":define") d_ttyname_r_proto=define
16302 set d_ttyname_r_proto ttyname_r $hdrs
16306 case "$d_ttyname_r_proto" in
16308 case "$ttyname_r_proto" in
16309 ''|0) try='int ttyname_r(int, char*, size_t);'
16310 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16312 case "$ttyname_r_proto" in
16313 ''|0) try='int ttyname_r(int, char*, int);'
16314 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16316 case "$ttyname_r_proto" in
16317 ''|0) try='char* ttyname_r(int, char*, int);'
16318 ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16320 case "$ttyname_r_proto" in
16321 ''|0) d_ttyname_r=undef
16323 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16324 * ) case "$ttyname_r_proto" in
16325 REENTRANT_PROTO*) ;;
16326 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16328 echo "Prototype: $try" ;;
16331 *) case "$usethreads" in
16332 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16339 *) ttyname_r_proto=0
16343 : see if tzname[] exists
16345 if set tzname val -a d_tzname; eval $csym; $val; then
16347 echo 'tzname[] found.' >&4
16350 echo 'tzname[] NOT found.' >&4
16356 next|rhapsody|darwin) multiarch="$define" ;;
16358 case "$multiarch" in
16359 ''|[nN]*) multiarch="$undef" ;;
16362 : check for ordering of bytes in a long
16364 case "$usecrosscompile$multiarch" in
16367 You seem to be either cross-compiling or doing a multiarchitecture build,
16368 skipping the byteorder check.
16374 case "$byteorder" in
16377 In the following, larger digits indicate more significance. A big-endian
16378 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16379 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16380 machines may have weird orders like 3412. A Cray will report 87654321,
16381 an Alpha will report 12345678. If the test program works the default is
16383 I'm now running the test program...
16385 $cat >try.c <<'EOCP'
16392 char c[sizeof(long)];
16395 if (sizeof(long) > 4)
16396 u.l = (0x08070605L << 32) | 0x04030201L;
16399 for (i = 0; i < sizeof(long); i++)
16400 printf("%c", u.c[i]+'0');
16407 if eval $compile && ./try > /dev/null; then
16410 [1-4][1-4][1-4][1-4]|12345678|87654321)
16411 echo "(The test program ran ok.)"
16412 echo "byteorder=$dflt"
16415 ????|????????) echo "(The test program ran ok.)" ;;
16416 *) echo "(The test program didn't run right for some reason.)" ;;
16421 (I can't seem to compile the test program. Guessing big-endian...)
16424 case "$xxx_prompt" in
16426 rp="What is the order of bytes in a long?"
16442 Checking to see whether you can access character data unalignedly...
16444 case "$d_u32align" in
16445 '') $cat >try.c <<EOCP
16447 #define U32 $u32type
16448 #define BYTEORDER 0x$byteorder
16450 #include <signal.h>
16452 $signal_t bletch(s) int s; { exit(4); }
16455 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
16460 if (sizeof(U32) != 4) {
16461 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
16468 signal(SIGBUS, bletch);
16480 for (i = 0; i < 4; i++) {
16481 up = (U32*)(buf + i);
16482 if (! ((*up == 1 << (8*i)) || /* big-endian */
16483 (*up == 1 << (8*(3-i))) /* little-endian */
16487 printf("read failed (%x)\n", *up);
16493 for (i = 0; i < 4; i++) {
16494 up = (U32*)(buf + i);
16496 if (*up != 0xBeef) {
16497 printf("write failed (%x)\n", *up);
16511 if eval $compile_ok; then
16512 echo "(Testing for character data alignment may crash the test. That's okay.)" >&4
16513 $run ./try 2>&1 >/dev/null
16516 You can access character data pretty unalignedly.
16518 d_u32align="$undef"
16521 It seems that you must access character data in an aligned manner.
16523 d_u32align="$define"
16527 rp='Can you access character data at unaligned addresses?'
16531 [yY]*) d_u32align="$undef" ;;
16532 *) d_u32align="$define" ;;
16535 $rm -f core core.try.* try.core
16539 : see if ualarm exists
16540 set ualarm d_ualarm
16543 : see if umask exists
16547 : see if unordered exists
16548 set unordered d_unordered
16551 : see if usleep exists
16552 set usleep d_usleep
16555 : see if prototype for usleep is available
16557 set d_usleepproto usleep $i_unistd unistd.h
16560 : see if ustat exists
16564 : backward compatibility for d_hvfork
16565 if test X$d_hvfork != X; then
16566 d_vfork="$d_hvfork"
16569 : see if there is a vfork
16574 : Ok, but do we want to use it. vfork is reportedly unreliable in
16575 : perl on Solaris 2.x, and probably elsewhere.
16579 case "$usevfork" in
16585 Perl can only use a vfork() that doesn't suffer from strict
16586 restrictions on calling functions or modifying global data in
16587 the child. For example, glibc-2.1 contains such a vfork()
16588 that is unsuitable. If your system provides a proper fork()
16589 call, chances are that you do NOT want perl to use vfork().
16592 rp="Do you still want to use vfork()?"
16597 echo "Ok, we won't use vfork()."
16606 $define) usevfork='true';;
16607 *) usevfork='false';;
16610 : see if closedir exists
16611 set closedir d_closedir
16614 case "$d_closedir" in
16617 echo "Checking whether closedir() returns a status..." >&4
16619 #$i_dirent I_DIRENT /**/
16620 #$i_sysdir I_SYS_DIR /**/
16621 #$i_sysndir I_SYS_NDIR /**/
16622 #$i_systypes I_SYS_TYPES /**/
16624 #if defined(I_SYS_TYPES)
16625 #include <sys/types.h>
16627 #if defined(I_DIRENT)
16628 #include <dirent.h>
16629 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
16630 #include <sys/dir.h>
16634 #include <sys/ndir.h>
16638 #include <ndir.h> /* may be wrong in the future */
16640 #include <sys/dir.h>
16645 int main() { return closedir(opendir(".")); }
16648 if eval $compile_ok; then
16649 if $run ./try > /dev/null 2>&1 ; then
16650 echo "Yes, it does."
16653 echo "No, it doesn't."
16657 echo "(I can't seem to compile the test program--assuming it doesn't)"
16665 set d_void_closedir
16668 : see if there is a wait4
16672 : see if waitpid exists
16673 set waitpid d_waitpid
16676 : see if wcstombs exists
16677 set wcstombs d_wcstombs
16680 : see if wctomb exists
16681 set wctomb d_wctomb
16684 : see if writev exists
16685 set writev d_writev
16688 : preserve RCS keywords in files with variable substitution, grrr
16693 Revision='$Revision'
16695 : check for alignment requirements
16697 case "$usecrosscompile$multiarch" in
16700 You seem to be either cross-compiling or doing a multiarchitecture build,
16701 skipping the memory alignment check.
16704 case "$alignbytes" in
16705 '') alignbytes=8 ;;
16709 case "$alignbytes" in
16710 '') echo "Checking alignment constraints..." >&4
16711 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
16712 $cat >try.c <<'EOCP'
16713 typedef long double NV;
16716 $cat >try.c <<'EOCP'
16720 $cat >>try.c <<'EOCP'
16728 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
16733 if eval $compile_ok; then
16737 echo "(I can't seem to compile the test program...)"
16740 *) dflt="$alignbytes"
16743 rp="Doubles must be aligned on a how-many-byte boundary?"
16751 : set the base revision
16754 : how do we catenate cpp tokens here?
16756 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
16757 $cat >cpp_stuff.c <<'EOCP'
16758 #define RCAT(a,b)a/**/b
16759 #define ACAT(a,b)a ## b
16763 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
16764 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
16765 echo "Oh! Smells like ANSI's been here." >&4
16766 echo "We can catify or stringify, separately or together!"
16768 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
16769 echo "Ah, yes! The good old days!" >&4
16770 echo "However, in the good old days we don't know how to stringify and"
16771 echo "catify at the same time."
16775 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
16776 to have to edit the values of CAT[2-5] in config.h...
16778 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
16782 : see if this is a db.h system
16788 : Check db version.
16790 echo "Checking Berkeley DB version ..." >&4
16796 #include <sys/types.h>
16799 int main(int argc, char *argv[])
16801 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
16802 int Major, Minor, Patch ;
16803 unsigned long Version ;
16804 (void)db_version(&Major, &Minor, &Patch) ;
16806 printf("%d %d %d %d %d %d\n",
16807 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
16808 Major, Minor, Patch);
16811 printf("You have Berkeley DB Version 2 or greater.\n");
16813 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
16814 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
16815 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
16816 Major, Minor, Patch) ;
16818 /* check that db.h & libdb are compatible */
16819 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
16820 printf("db.h and libdb are incompatible.\n") ;
16824 printf("db.h and libdb are compatible.\n") ;
16826 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
16827 + DB_VERSION_PATCH ;
16829 /* needs to be >= 2.3.4 */
16830 if (Version < 2003004) {
16831 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
16832 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
16838 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
16843 printf("You have Berkeley DB Version 1.\n");
16844 exit(0); /* DB version < 2: the coast is clear. */
16846 exit(1); /* <db.h> not Berkeley DB? */
16852 if eval $compile_ok && $run ./try; then
16853 echo 'Looks OK.' >&4
16855 db_version_major=$1
16856 db_version_minor=$2
16857 db_version_patch=$3
16859 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
16863 : Remove db from list of libraries to use
16864 echo "Removing unusable -ldb from library list" >&4
16865 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
16868 echo "libs = $libs" >&4
16878 : Check the return type needed for hash
16880 echo "Checking return type needed for hash for Berkeley DB ..." >&4
16886 #include <sys/types.h>
16889 #ifndef DB_VERSION_MAJOR
16890 u_int32_t hash_cb (ptr, size)
16898 info.hash = hash_cb;
16902 if $cc $ccflags -c try.c >try.out 2>&1 ; then
16903 if $contains warning try.out >>/dev/null 2>&1 ; then
16906 db_hashtype='u_int32_t'
16909 : XXX Maybe we should just give up here.
16910 db_hashtype=u_int32_t
16912 echo "Help: I can't seem to compile the db test program." >&4
16913 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
16916 echo "Your version of Berkeley DB uses $db_hashtype for hash."
16918 *) db_hashtype=u_int32_t
16923 : Check the return type needed for prefix
16925 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
16931 #include <sys/types.h>
16934 #ifndef DB_VERSION_MAJOR
16935 size_t prefix_cb (key1, key2)
16943 info.prefix = prefix_cb;
16947 if $cc $ccflags -c try.c >try.out 2>&1 ; then
16948 if $contains warning try.out >>/dev/null 2>&1 ; then
16949 db_prefixtype='int'
16951 db_prefixtype='size_t'
16954 db_prefixtype='size_t'
16955 : XXX Maybe we should just give up here.
16957 echo "Help: I can't seem to compile the db test program." >&4
16958 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
16961 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
16963 *) db_prefixtype='size_t'
16968 : How can we generate normalized random numbers ?
16970 echo "Looking for a random number function..." >&4
16971 case "$randfunc" in
16973 if set drand48 val -f; eval $csym; $val; then
16975 echo "Good, found drand48()." >&4
16976 elif set random val -f; eval $csym; $val; then
16978 echo "OK, found random()." >&4
16981 echo "Yick, looks like I have to use rand()." >&4
16992 *-Dmy_rand=*|*-Dmy_srand=*)
16993 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
16994 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
16995 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
16996 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17000 while $test "$cont"; do
17001 rp="Use which function to generate random numbers?"
17003 if $test "$ans" = "$dflt"; then
17009 if set $ans val -f; eval $csym; $val; then
17013 rp="I cannot find function $ans. Use that name anyway?"
17022 case "$randfunc" in
17024 drand01="drand48()"
17030 case "$randbits" in
17032 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17034 #$i_unistd I_UNISTD
17035 #$i_stdlib I_STDLIB
17038 # include <unistd.h>
17041 # include <stdlib.h>
17046 register unsigned long tmp;
17047 register unsigned long max = 0L;
17049 for (i = 1000; i; i--) {
17050 tmp = (unsigned long) $randfunc();
17051 if (tmp > max) max = tmp;
17053 for (i = 0; max; i++)
17059 if eval $compile_ok; then
17063 echo "(I can't seem to compile the test program...)"
17070 rp="How many bits does your $randfunc() function produce?"
17074 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17075 seedfunc="s$randfunc"
17076 randseedtype=unsigned
17080 rp="How many bits does your $randfunc() function produce?"
17083 seedfunc="s$randfunc"
17084 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17085 if set $seedfunc val -f; eval $csym; $val; then
17086 echo "(Using $seedfunc() to seed random generator)"
17088 echo "(Warning: no $seedfunc() to seed random generator)"
17091 randseedtype=unsigned
17099 echo "Determining whether or not we are on an EBCDIC system..." >&4
17100 $cat >try.c <<'EOM'
17103 if ('M'==0xd4) return 0;
17110 if eval $compile_ok; then
17111 if $run ./try; then
17112 echo "You seem to speak EBCDIC." >&4
17115 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17118 echo "I'm unable to compile the test program." >&4
17119 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17127 Checking how to flush all pending stdio output...
17129 # I only know how to find the first 32 possibly open files on SunOS.
17130 # See also hints/sunos_4_1.sh and util.c --AD
17132 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17134 $cat >>try.c <<EOCP
17136 #$i_unistd I_UNISTD
17138 # include <unistd.h>
17140 #$d_sysconf HAS_SYSCONF
17141 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17142 #ifdef HAS_STDIO_STREAM_ARRAY
17143 # define STDIO_STREAM_ARRAY $stdio_stream_array
17148 p = fopen("try.out", "w");
17152 # ifdef TRY_FPRINTF
17156 #ifdef TRY_FFLUSH_NULL
17159 #ifdef TRY_FFLUSH_ALL
17161 long open_max = -1;
17162 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17163 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17165 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17166 open_max = sysconf(_SC_OPEN_MAX);
17169 open_max = FOPEN_MAX;
17172 open_max = OPEN_MAX;
17181 # ifdef HAS_STDIO_STREAM_ARRAY
17182 if (open_max > 0) {
17184 for (i = 0; i < open_max; i++)
17185 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17186 STDIO_STREAM_ARRAY[i]._file < open_max &&
17187 STDIO_STREAM_ARRAY[i]._flag)
17188 fflush(&STDIO_STREAM_ARRAY[i]);
17196 : first we have to find out how _not_ to flush
17198 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17200 set try -DTRY_FPUTC
17201 if eval $compile; then
17202 $run ./try 2>/dev/null
17205 if $test ! -s try.out -a "X$code" = X42; then
17211 set try -DTRY_FPRINTF
17212 if eval $compile; then
17213 $run ./try 2>/dev/null
17216 if $test ! -s try.out -a "X$code" = X42; then
17217 output=-DTRY_FPRINTF
17223 : check for fflush NULL behaviour
17224 case "$fflushNULL" in
17225 '') set try -DTRY_FFLUSH_NULL $output
17226 if eval $compile; then
17227 $run ./try 2>/dev/null
17230 if $test -s try.out -a "X$code" = X42; then
17231 fflushNULL="`$cat try.out`"
17233 if $test "X$code" != X42; then
17235 (If this test failed, don't worry, we'll try another method shortly.)
17240 $rm -f core try.core core.try.*
17241 case "$fflushNULL" in
17243 Your fflush(NULL) works okay for output streams.
17244 Let's see if it clobbers input pipes...
17246 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17247 # bug that improperly flushes the input end of pipes. So we avoid the
17248 # autoflush on fork/system/exec support for now. :-(
17249 $cat >tryp.c <<EOCP
17252 main(int argc, char **argv)
17258 while ((i = getc(stdin)) != -1
17259 && (*bp++ = i) != '\n'
17260 && bp < &buf[1024])
17263 fprintf(stdout, "%s", buf);
17271 fflushNULL="$define"
17273 if eval $compile; then
17275 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17276 if cmp tryp.c tryp.out >/dev/null 2>&1; then
17278 fflush(NULL) seems to behave okay with input streams.
17280 fflushNULL="$define"
17283 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
17285 fflushNULL="$undef"
17288 $rm -f core tryp.c tryp.core core.tryp.*
17291 Your fflush(NULL) isn't working (contrary to ANSI C).
17293 fflushNULL="$undef"
17296 Cannot figure out whether your fflush(NULL) works or not.
17297 I'm assuming it doesn't (contrary to ANSI C).
17299 fflushNULL="$undef"
17303 $define|true|[yY]*)
17304 fflushNULL="$define"
17307 fflushNULL="$undef"
17310 : check explicit looping only if NULL did not work, and if the pipe
17311 : bug does not show up on an explicit flush too
17312 case "$fflushNULL" in
17314 $cat >tryp.c <<EOCP
17317 main(int argc, char **argv)
17323 while ((i = getc(stdin)) != -1
17324 && (*bp++ = i) != '\n'
17325 && bp < &buf[1024])
17328 fprintf(stdout, "%s", buf);
17337 if eval $compile; then
17339 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17340 if cmp tryp.c tryp.out >/dev/null 2>&1; then
17342 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17344 : now check for fflushall behaviour
17345 case "$fflushall" in
17346 '') set try -DTRY_FFLUSH_ALL $output
17347 if eval $compile; then
17349 (Now testing the other method--but note that this also may fail.)
17351 $run ./try 2>/dev/null
17354 if $test -s try.out -a "X$code" = X42; then
17355 fflushall="`$cat try.out`"
17358 $rm -f core try.core core.try.*
17359 case "$fflushall" in
17361 Whew. Flushing explicitly all the stdio streams works.
17363 fflushall="$define"
17366 Sigh. Flushing explicitly all the stdio streams doesn't work.
17371 Cannot figure out whether flushing stdio streams explicitly works or not.
17372 I'm assuming it doesn't.
17378 "$define"|true|[yY]*)
17379 fflushall="$define"
17387 All is futile. Even fflush(stdin) clobbers input pipes!
17394 $rm -f core tryp.c tryp.core core.tryp.*
17396 *) fflushall="$undef"
17400 case "$fflushNULL$fflushall" in
17403 OK, I give up. I cannot figure out how to flush pending stdio output.
17404 We won't be flushing handles at all before fork/exec/popen.
17408 $rm -f try.* try$exe_ext
17410 : Store the full pathname to the ar program for use in the C program
17411 : Respect a hint or command line value for full_ar.
17416 : Store the full pathname to the sed program for use in the C program
17419 : see what type gids are declared as in the kernel
17421 echo "Looking for the type for group ids returned by getgid()."
17422 set gid_t gidtype xxx stdio.h sys/types.h
17426 xxx=`./findhdr sys/user.h`
17427 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
17429 unsigned) dflt="$1 $2" ;;
17433 *) dflt="$gidtype";;
17436 gid_t) echo "gid_t found." ;;
17437 *) rp="What is the type for group ids returned by getgid()?"
17445 *_t) zzz="$gidtype" ;;
17448 echo "Checking the size of $zzz..." >&4
17450 #include <sys/types.h>
17453 printf("%d\n", (int)sizeof($gidtype));
17458 if eval $compile_ok; then
17462 echo "(I can't execute the test program--guessing $gidsize.)" >&4
17465 echo "Your $zzz is $gidsize bytes long."
17470 echo "(I can't compile the test program--guessing $gidsize.)" >&4
17476 *_t) zzz="$gidtype" ;;
17479 echo "Checking the sign of $zzz..." >&4
17481 #include <sys/types.h>
17492 if eval $compile; then
17496 echo "(I can't execute the test program--guessing unsigned.)" >&4
17500 1) echo "Your $zzz is unsigned." ;;
17501 -1) echo "Your $zzz is signed." ;;
17507 echo "(I can't compile the test program--guessing unsigned.)" >&4
17513 if $test X"$quadtype" != X; then
17515 echo "Checking how to print 64-bit integers..." >&4
17517 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
17518 $cat >try.c <<'EOCP'
17519 #include <sys/types.h>
17522 int q = 12345678901;
17523 printf("%ld\n", q);
17527 if eval $compile; then
17531 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
17532 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
17533 echo "We will use %d."
17539 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
17540 $cat >try.c <<'EOCP'
17541 #include <sys/types.h>
17544 long q = 12345678901;
17545 printf("%ld\n", q);
17549 if eval $compile; then
17553 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
17554 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
17555 echo "We will use %ld."
17561 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
17562 $cat >try.c <<'EOCP'
17563 #include <sys/types.h>
17564 #include <inttypes.h>
17567 int64_t q = 12345678901;
17568 printf("%" PRId64 "\n", q);
17572 if eval $compile; then
17576 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
17577 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
17578 echo "We will use the C9X style."
17584 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
17586 #include <sys/types.h>
17589 $quadtype q = 12345678901;
17590 printf("%Ld\n", q);
17594 if eval $compile; then
17598 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
17599 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
17600 echo "We will use %Ld."
17606 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
17607 $cat >try.c <<'EOCP'
17608 #include <sys/types.h>
17611 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
17612 printf("%lld\n", q);
17616 if eval $compile; then
17620 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
17621 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
17622 echo "We will use the %lld style."
17628 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
17630 #include <sys/types.h>
17633 $quadtype q = 12345678901;
17634 printf("%qd\n", q);
17638 if eval $compile; then
17642 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
17643 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
17644 echo "We will use %qd."
17650 if $test X"$sPRId64" = X; then
17651 echo "Cannot figure out how to print 64-bit integers." >&4
17659 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
17660 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
17662 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
17663 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
17669 $echo "Checking the format strings to be used for Perl's internal types..." >&4
17671 if $test X"$ivsize" = X8; then
17672 ivdformat="$sPRId64"
17673 uvuformat="$sPRIu64"
17674 uvoformat="$sPRIo64"
17675 uvxformat="$sPRIx64"
17676 uvXUformat="$sPRIXU64"
17678 if $test X"$ivsize" = X"$longsize"; then
17685 if $test X"$ivsize" = X"$intsize"; then
17693 if $test X"$ivsize" = X"$shortsize"; then
17704 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
17705 nveformat="$sPRIeldbl"
17706 nvfformat="$sPRIfldbl"
17707 nvgformat="$sPRIgldbl"
17708 nvEUformat="$sPRIEUldbl"
17709 nvFUformat="$sPRIFUldbl"
17710 nvGUformat="$sPRIGUldbl"
17720 case "$ivdformat" in
17721 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
17728 $echo "Checking the format string to be used for gids..." >&4
17731 -1) if $test X"$gidsize" = X"$ivsize"; then
17732 gidformat="$ivdformat"
17734 if $test X"$gidsize" = X"$longsize"; then
17737 if $test X"$gidsize" = X"$intsize"; then
17740 if $test X"$gidsize" = X"$shortsize"; then
17747 *) if $test X"$gidsize" = X"$uvsize"; then
17748 gidformat="$uvuformat"
17750 if $test X"$gidsize" = X"$longsize"; then
17753 if $test X"$gidsize" = X"$intsize"; then
17756 if $test X"$gidsize" = X"$shortsize"; then
17765 : see if getgroups exists
17766 set getgroups d_getgrps
17769 : see if setgroups exists
17770 set setgroups d_setgrps
17774 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
17776 case "$d_getgrps$d_setgrps" in
17778 case "$groupstype" in
17779 '') dflt="$gidtype" ;;
17780 *) dflt="$groupstype" ;;
17783 What type of pointer is the second argument to getgroups() and setgroups()?
17784 Usually this is the same as group ids, $gidtype, but not always.
17787 rp='What type pointer is the second argument to getgroups() and setgroups()?'
17791 *) groupstype="$gidtype";;
17795 echo "Checking if your $make program sets \$(MAKE)..." >&4
17796 case "$make_set_make" in
17798 $sed 's/^X //' > testmake.mak << 'EOF'
17800 X @echo 'maketemp="$(MAKE)"'
17802 case "`$make -f testmake.mak 2>/dev/null`" in
17803 *maketemp=*) make_set_make='#' ;;
17804 *) make_set_make="MAKE=$make" ;;
17806 $rm -f testmake.mak
17809 case "$make_set_make" in
17810 '#') echo "Yup, it does.";;
17811 *) echo "Nope, it doesn't.";;
17814 : see what type is used for mode_t
17815 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
17816 set mode_t modetype int stdio.h sys/types.h
17819 : see if stdarg is available
17821 if $test `./findhdr stdarg.h`; then
17822 echo "<stdarg.h> found." >&4
17825 echo "<stdarg.h> NOT found." >&4
17829 : see if varags is available
17831 if $test `./findhdr varargs.h`; then
17832 echo "<varargs.h> found." >&4
17834 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
17837 : set up the varargs testing programs
17838 $cat > varargs.c <<EOP
17840 #include <stdarg.h>
17843 #include <varargs.h>
17847 int f(char *p, ...)
17861 p = va_arg(ap, char *);
17866 $cat > varargs <<EOP
17868 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
17877 : now check which varargs header should be included
17882 if `./varargs I_STDARG`; then
17884 elif `./varargs I_VARARGS`; then
17889 if `./varargs I_VARARGS`; then
17896 echo "I could not find the definition for va_dcl... You have problems..." >&4
17897 val="$undef"; set i_stdarg; eval $setvar
17898 val="$undef"; set i_varargs; eval $setvar
17903 case "$i_varhdr" in
17905 val="$define"; set i_stdarg; eval $setvar
17906 val="$undef"; set i_varargs; eval $setvar
17909 val="$undef"; set i_stdarg; eval $setvar
17910 val="$define"; set i_varargs; eval $setvar
17913 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
17917 : see if we need va_copy
17919 case "$i_stdarg" in
17922 #include <stdarg.h>
17924 #$i_stdlib I_STDLIB
17926 #include <stdlib.h>
17928 #include <signal.h>
17931 ivfprintf(FILE *f, const char *fmt, va_list *valp)
17933 return vfprintf(f, fmt, *valp);
17937 myvfprintf(FILE *f, const char *fmt, va_list val)
17939 return ivfprintf(f, fmt, &val);
17943 myprintf(char *fmt, ...)
17946 va_start(val, fmt);
17947 return myvfprintf(stdout, fmt, val);
17951 main(int ac, char **av)
17953 signal(SIGSEGV, exit);
17955 myprintf("%s%cs all right, then\n", "that", '\'');
17960 if eval $compile && $run ./try 2>&1 >/dev/null; then
17961 case "`$run ./try`" in
17962 "that's all right, then")
17968 yes) echo "It seems that you don't need va_copy()." >&4
17969 need_va_copy="$undef"
17971 *) echo "It seems that va_copy() or similar will be needed." >&4
17972 need_va_copy="$define"
17975 $rm -f try.* core core.* *.core *.core.*
17977 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
17981 : see what type is used for size_t
17982 rp="What is the type used for the length parameter for string functions?"
17983 set size_t sizetype 'unsigned int' stdio.h sys/types.h
17986 : check for type of arguments to gethostbyaddr.
17987 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
17988 case "$d_gethbyaddr" in
17992 Checking to see what type of arguments are accepted by gethostbyaddr().
17994 hdrs="$define sys/types.h
17995 $d_socket sys/socket.h
17996 $i_niin netinet/in.h
17998 $i_unistd unistd.h"
17999 : The first arg can 'char *' or 'void *'
18000 : The second arg is some of integral type
18001 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18002 for yyy in size_t long int; do
18003 case "$netdb_host_type" in
18004 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18005 if ./protochk "$try" $hdrs; then
18006 echo "Your system accepts $xxx for the first arg."
18007 echo "...and $yyy for the second arg."
18008 netdb_host_type="$xxx"
18009 netdb_hlen_type="$yyy"
18015 : In case none of those worked, prompt the user.
18016 case "$netdb_host_type" in
18017 '') rp='What is the type for the 1st argument to gethostbyaddr?'
18020 netdb_host_type=$ans
18021 rp='What is the type for the 2nd argument to gethostbyaddr?'
18024 netdb_hlen_type=$ans
18028 *) : no gethostbyaddr, so pick harmless defaults
18029 netdb_host_type='char *'
18030 netdb_hlen_type="$sizetype"
18033 # Remove the "const" if needed. -- but then we'll have a
18035 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18038 : check for type of argument to gethostbyname.
18039 if test "X$netdb_name_type" = X ; then
18040 case "$d_gethbyname" in
18044 Checking to see what type of argument is accepted by gethostbyname().
18046 hdrs="$define sys/types.h
18047 $d_socket sys/socket.h
18048 $i_niin netinet/in.h
18050 $i_unistd unistd.h"
18051 for xxx in "const char *" "char *"; do
18052 case "$netdb_name_type" in
18053 '') try="extern struct hostent *gethostbyname($xxx);"
18054 if ./protochk "$try" $hdrs; then
18055 echo "Your system accepts $xxx."
18056 netdb_name_type="$xxx"
18061 : In case none of those worked, prompt the user.
18062 case "$netdb_name_type" in
18063 '') rp='What is the type for the 1st argument to gethostbyname?'
18066 netdb_name_type=$ans
18070 *) : no gethostbyname, so pick harmless default
18071 netdb_name_type='char *'
18076 : check for type of 1st argument to getnetbyaddr.
18077 if test "X$netdb_net_type" = X ; then
18078 case "$d_getnbyaddr" in
18082 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18084 hdrs="$define sys/types.h
18085 $d_socket sys/socket.h
18086 $i_niin netinet/in.h
18088 $i_unistd unistd.h"
18089 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18090 case "$netdb_net_type" in
18091 '') try="extern struct netent *getnetbyaddr($xxx, int);"
18092 if ./protochk "$try" $hdrs; then
18093 echo "Your system accepts $xxx."
18094 netdb_net_type="$xxx"
18099 : In case none of those worked, prompt the user.
18100 case "$netdb_net_type" in
18101 '') rp='What is the type for the 1st argument to getnetbyaddr?'
18104 netdb_net_type=$ans
18108 *) : no getnetbyaddr, so pick harmless default
18109 netdb_net_type='long'
18113 : locate the preferred pager for this system
18119 [a-zA-Z]:/*) dflt=$pg;;
18123 [a-zA-Z]:/*) dflt=$more;;
18127 [a-zA-Z]:/*) dflt=$less;;
18130 '') dflt=/usr/ucb/more;;
18137 rp='What pager is used on your system?'
18141 : see what type pids are declared as in the kernel
18142 rp="What is the type of process ids on this system?"
18143 set pid_t pidtype int stdio.h sys/types.h
18146 : Find earliest binary compatible site_perl subdirectory perl can use.
18147 case "$bincompat5005" in
18148 "$define") xs_apiversion='5.005' ;;
18149 *) xs_apiversion=$version ;; # The current site_perl version.
18151 : Find earliest pure perl site_perl subdirectory perl can use.
18152 : The versioned directories started at 5.005.
18153 pm_apiversion='5.005'
18155 : see if ar generates random libraries by itself
18157 echo "Checking how to generate random libraries on your machine..." >&4
18158 echo 'int bar1() { return bar2(); }' > bar1.c
18159 echo 'int bar2() { return 2; }' > bar2.c
18160 $cat > foo.c <<'EOP'
18161 int main() { printf("%d\n", bar1()); exit(0); }
18163 $cc $ccflags -c bar1.c >/dev/null 2>&1
18164 $cc $ccflags -c bar2.c >/dev/null 2>&1
18165 $cc $ccflags -c foo.c >/dev/null 2>&1
18166 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18167 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18168 $run ./foobar >/dev/null 2>&1; then
18169 echo "$ar appears to generate random libraries itself."
18172 elif $ar ts bar$_a >/dev/null 2>&1 &&
18173 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18174 $run ./foobar >/dev/null 2>&1; then
18175 echo "a table of contents needs to be added with '$ar ts'."
18182 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18183 $test -f $ranlib || ranlib=''
18186 if $test -n "$ranlib"; then
18187 echo "your system has '$ranlib'; we'll use that."
18190 echo "your system doesn't seem to support random libraries"
18191 echo "so we'll use lorder and tsort to order the libraries."
18198 : check for type of arguments to select.
18199 case "$selecttype" in
18200 '') case "$d_select" in
18204 Checking to see what type of arguments are accepted by select().
18206 hdrs="$define sys/types.h
18207 $i_systime sys/time.h
18208 $i_sysselct sys/select.h
18209 $d_socket sys/socket.h"
18210 : The first arg can be int, unsigned, or size_t
18211 : The last arg may or may not be 'const'
18213 : void pointer has been seen but using that
18214 : breaks the selectminbits test
18215 for xxx in 'fd_set *' 'int *'; do
18216 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18217 for tmo in 'struct timeval *' 'const struct timeval *'; do
18219 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18220 if ./protochk "$try" $hdrs; then
18221 echo "Your system accepts $xxx."
18230 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18231 case "$d_fd_set" in
18232 $define) dflt="fd_set *" ;;
18241 *) : no select, so pick a harmless default
18248 : check for the select 'width'
18249 case "$selectminbits" in
18250 '') case "$d_select" in
18254 Checking to see on how many bits at a time your select() operates...
18257 #include <sys/types.h>
18259 #$i_systime I_SYS_TIME
18260 #$i_systimek I_SYS_TIME_KERNEL
18265 # ifdef I_SYS_TIME_KERNEL
18268 # include <sys/time.h>
18269 # ifdef I_SYS_TIME_KERNEL
18273 #$i_sysselct I_SYS_SELECT
18274 #ifdef I_SYS_SELECT
18275 #include <sys/select.h>
18277 #$d_socket HAS_SOCKET
18279 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18283 #define S sizeof(*(b))
18285 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18286 #define NBITS (NBYTES * 8)
18295 fp = fopen("try.c", "r");
18301 b = ($selecttype)s;
18302 for (i = 0; i < NBITS; i++)
18306 select(fd + 1, b, 0, 0, &t);
18307 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18308 printf("%d\n", i + 1);
18313 if eval $compile_ok; then
18314 selectminbits=`$run ./try`
18315 case "$selectminbits" in
18317 Cannot figure out on how many bits at a time your select() operates.
18318 I'll play safe and guess it is 32 bits.
18324 *) bits="$selectminbits bits" ;;
18326 echo "Your select() operates on $bits at a time." >&4
18328 rp='What is the minimum number of bits your select() operates on?'
18329 case "$byteorder" in
18330 1234|12345678) dflt=32 ;;
18335 selectminbits="$val"
18339 *) : no select, so pick a harmless default
18346 : Trace out the files included by signal.h, then look for SIGxxx names.
18347 : Remove SIGARRAYSIZE used by HPUX.
18348 : Remove SIGSTKSIZE used by Linux.
18349 : Remove SIGSTKSZ used by Posix.
18350 : Remove SIGTYP void lines used by OS2.
18351 : Some cpps, like os390, dont give the file name anywhere
18352 if [ "X$fieldn" = X ]; then
18353 : Just make some guesses. We check them later.
18354 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18356 xxx=`echo '#include <signal.h>' |
18357 $cppstdin $cppminus $cppflags 2>/dev/null |
18358 $grep '^[ ]*#.*include' |
18359 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18361 : Check this list of files to be sure we have parsed the cpp output ok.
18362 : This will also avoid potentially non-existent files, such
18365 for xx in $xxx /dev/null ; do
18366 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18368 : If we have found no files, at least try signal.h
18369 case "$xxxfiles" in
18370 '') xxxfiles=`./findhdr signal.h` ;;
18373 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18374 print substr($2, 4, 20)
18376 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18377 print substr($3, 4, 20)
18379 : Append some common names just in case the awk scan failed.
18380 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
18381 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
18382 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
18383 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
18384 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
18386 : generate a few handy files for later
18387 $cat > signal.c <<'EOCP'
18388 #include <sys/types.h>
18389 #include <signal.h>
18393 /* Strange style to avoid deeply-nested #if/#else/#endif */
18396 # define NSIG (_NSIG)
18402 # define NSIG (SIGMAX+1)
18408 # define NSIG (SIG_MAX+1)
18414 # define NSIG (MAXSIG+1)
18420 # define NSIG (MAX_SIG+1)
18425 # ifdef SIGARRAYSIZE
18426 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
18432 # define NSIG (_sys_nsig) /* Solaris 2.5 */
18436 /* Default to some arbitrary number that's big enough to get most
18437 of the common signals.
18443 printf("NSIG %d\n", NSIG);
18449 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
18451 printf "#ifdef SIG"; printf $1; printf "\n"
18452 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
18453 printf $1; printf ");\n"
18457 printf "#endif /* JUST_NSIG */\n";
18458 printf "exit(0);\n}\n";
18461 $cat >signal.awk <<'EOP'
18462 BEGIN { ndups = 0 }
18463 $1 ~ /^NSIG$/ { nsig = $2 }
18464 ($1 !~ /^NSIG$/) && (NF == 2) {
18465 if ($2 > maxsig) { maxsig = $2 }
18466 if (sig_name[$2]) {
18467 dup_name[ndups] = $1
18468 dup_num[ndups] = $2
18480 printf("NSIG %d\n", nsig);
18481 for (n = 1; n < nsig; n++) {
18483 printf("%s %d\n", sig_name[n], sig_num[n])
18486 printf("NUM%d %d\n", n, n)
18489 for (n = 0; n < ndups; n++) {
18490 printf("%s %d\n", dup_name[n], dup_num[n])
18494 $cat >signal_cmd <<EOS
18496 if $test -s signal.lst; then
18497 echo "Using your existing signal.lst file"
18502 $cat >>signal_cmd <<'EOS'
18505 if eval $compile_ok; then
18506 $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
18508 echo "(I can't seem be able to compile the whole test program)" >&4
18509 echo "(I'll try it in little pieces.)" >&4
18510 set signal -DJUST_NSIG
18511 if eval $compile_ok; then
18512 $run ./signal$_exe > signal.nsg
18515 echo "I can't seem to figure out how many signals you have." >&4
18516 echo "Guessing 50." >&4
18517 echo 'NSIG 50' > signal.nsg
18519 : Now look at all the signal names, one at a time.
18520 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
18521 $cat > signal.c <<EOCP
18522 #include <sys/types.h>
18523 #include <signal.h>
18526 printf("$xx %d\n", SIG${xx});
18531 if eval $compile; then
18532 echo "SIG${xx} found."
18533 $run ./signal$_exe >> signal.ls1
18535 echo "SIG${xx} NOT found."
18538 if $test -s signal.ls1; then
18539 $cat signal.nsg signal.ls1 |
18540 $sort -n | $uniq | $awk -f signal.awk >signal.lst
18544 if $test -s signal.lst; then
18547 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
18548 echo 'kill -l' >signal
18549 set X `csh -f <signal`
18553 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
18555 echo $@ | $tr ' ' $trnl | \
18556 $awk '{ printf "%s %d\n", $1, ++s; }
18557 END { printf "NSIG %d\n", ++s }' >signal.lst
18559 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
18561 chmod a+x signal_cmd
18562 $eunicefix signal_cmd
18564 : generate list of signal names
18566 case "$sig_name_init" in
18568 *) case "$sig_num_init" in
18569 ''|*,*) doinit=yes ;;
18574 echo "Generating a list of signal names and numbers..." >&4
18576 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
18577 sig_name=`$awk 'BEGIN { printf "ZERO " }
18578 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
18579 sig_num=`$awk 'BEGIN { printf "0 " }
18580 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
18581 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
18582 !/^NSIG/ { printf "\"%s\", ", $1 }
18583 END { printf "0\n" }' signal.lst`
18584 sig_num_init=`$awk 'BEGIN { printf "0, " }
18585 !/^NSIG/ { printf "%d, ", $2}
18586 END { printf "0\n"}' signal.lst`
18589 echo "The following $sig_count signals are available:"
18591 echo $sig_name | $awk \
18592 'BEGIN { linelen = 0 }
18594 for (i = 1; i <= NF; i++) {
18595 name = "SIG" $i " "
18596 linelen = linelen + length(name)
18597 if (linelen > 70) {
18599 linelen = length(name)
18605 sig_size=`echo $sig_name | awk '{print NF}'`
18606 $rm -f signal signal.c signal.awk signal.lst signal_cmd
18609 case "$sizetype" in
18610 *_t) zzz="$sizetype" ;;
18611 *) zzz="filesize" ;;
18613 echo "Checking the size of $zzz..." >&4
18615 #include <sys/types.h>
18618 printf("%d\n", (int)sizeof($sizetype));
18623 if eval $compile_ok; then
18627 echo "(I can't execute the test program--guessing $sizesize.)" >&4
18630 echo "Your $zzz size is $sizesize bytes."
18635 echo "(I can't compile the test program--guessing $sizesize.)" >&4
18639 : check for socklen_t
18641 echo "Checking to see if you have socklen_t..." >&4
18643 #include <sys/types.h>
18644 #$d_socket HAS_SOCKET
18646 #include <sys/socket.h>
18648 int main() { socklen_t x = 16; }
18651 if eval $compile; then
18653 echo "You have socklen_t."
18656 echo "You do not have socklen_t."
18657 case "$sizetype" in
18658 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
18665 : see if this is a socks.h system
18666 set socks.h i_socks
18669 : check for type of the size argument to socket calls
18670 case "$d_socket" in
18674 Checking to see what type is the last argument of accept().
18677 case "$d_socklen_t" in
18678 "$define") yyy="$yyy socklen_t"
18680 yyy="$yyy $sizetype int long unsigned"
18681 for xxx in $yyy; do
18682 case "$socksizetype" in
18683 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
18684 case "$usesocks" in
18686 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
18687 echo "Your system accepts '$xxx *' for the last argument of accept()."
18688 socksizetype="$xxx"
18691 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
18692 echo "Your system accepts '$xxx *' for the last argument of accept()."
18693 socksizetype="$xxx"
18700 : In case none of those worked, prompt the user.
18701 case "$socksizetype" in
18702 '') rp='What is the type for socket address structure sizes?'
18709 *) : no sockets, so pick relatively harmless default
18714 : see what type is used for signed size_t
18715 set ssize_t ssizetype int stdio.h sys/types.h
18720 #include <sys/types.h>
18721 #define Size_t $sizetype
18722 #define SSize_t $dflt
18725 if (sizeof(Size_t) == sizeof(SSize_t))
18727 else if (sizeof(Size_t) == sizeof(int))
18736 if eval $compile_ok && $run ./try > /dev/null; then
18737 ssizetype=`$run ./try`
18738 echo "I'll be using $ssizetype for functions returning a byte count." >&4
18741 Help! I can't compile and run the ssize_t test program: please enlighten me!
18742 (This is probably a misconfiguration in your system or libraries, and
18743 you really ought to fix it. Still, I'll try anyway.)
18745 I need a type that is the same size as $sizetype, but is guaranteed to
18746 be signed. Common values are ssize_t, int and long.
18749 rp="What signed type is the same size as $sizetype?"
18755 : see what type of char stdio uses.
18757 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
18758 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
18759 echo "Your stdio uses unsigned chars." >&4
18760 stdchar="unsigned char"
18762 echo "Your stdio uses signed chars." >&4
18769 : see what type uids are declared as in the kernel
18771 echo "Looking for the type for user ids returned by getuid()."
18772 set uid_t uidtype xxx stdio.h sys/types.h
18776 xxx=`./findhdr sys/user.h`
18777 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
18779 unsigned) dflt="$1 $2" ;;
18783 *) dflt="$uidtype";;
18786 uid_t) echo "uid_t found." ;;
18787 *) rp="What is the type for user ids returned by getuid()?"
18795 *_t) zzz="$uidtype" ;;
18798 echo "Checking the size of $zzz..." >&4
18800 #include <sys/types.h>
18803 printf("%d\n", (int)sizeof($uidtype));
18808 if eval $compile_ok; then
18812 echo "(I can't execute the test program--guessing $uidsize.)" >&4
18815 echo "Your $zzz is $uidsize bytes long."
18820 echo "(I can't compile the test program--guessing $uidsize.)" >&4
18825 *_t) zzz="$uidtype" ;;
18828 echo "Checking the sign of $zzz..." >&4
18830 #include <sys/types.h>
18841 if eval $compile; then
18845 echo "(I can't execute the test program--guessing unsigned.)" >&4
18849 1) echo "Your $zzz is unsigned." ;;
18850 -1) echo "Your $zzz is signed." ;;
18856 echo "(I can't compile the test program--guessing unsigned.)" >&4
18862 $echo "Checking the format string to be used for uids..." >&4
18865 -1) if $test X"$uidsize" = X"$ivsize"; then
18866 uidformat="$ivdformat"
18868 if $test X"$uidsize" = X"$longsize"; then
18871 if $test X"$uidsize" = X"$intsize"; then
18874 if $test X"$uidsize" = X"$shortsize"; then
18881 *) if $test X"$uidsize" = X"$uvsize"; then
18882 uidformat="$uvuformat"
18884 if $test X"$uidsize" = X"$longsize"; then
18887 if $test X"$uidsize" = X"$intsize"; then
18890 if $test X"$uidsize" = X"$shortsize"; then
18899 : determine compiler compiler
18908 if $test -f "$byacc$_exe"; then
18910 comp="byacc or $comp"
18912 if $test -f "$bison$_exe"; then
18913 comp="$comp or bison -y"
18915 rp="Which compiler compiler ($comp) shall I use?"
18924 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
18930 : see if this is a fp.h system
18934 : see if this is a fp_class.h system
18935 set fp_class.h i_fp_class
18938 : see if this is a ieeefp.h system
18939 case "$i_ieeefp" in
18940 '' ) set ieeefp.h i_ieeefp
18945 : see if this is a libutil.h system
18946 set libutil.h i_libutil
18949 : see if mach cthreads are available
18950 if test "X$usethreads" = "X$define"; then
18951 set mach/cthreads.h i_machcthr
18954 i_machcthr="$undef"
18959 : see if this is a math.h system
18963 : see if this is a mntent.h system
18964 set mntent.h i_mntent
18967 : see if ndbm.h is available
18973 # Some Linux distributions such as RedHat 7.1 put the
18974 # ndbm.h header in /usr/include/gdbm/ndbm.h.
18975 if $test -f /usr/include/gdbm/ndbm.h; then
18976 echo '<gdbm/ndbm.h> found.'
18977 ccflags="$ccflags -I/usr/include/gdbm"
18978 cppflags="$cppflags -I/usr/include/gdbm"
18986 : see if dbm_open exists
18987 set dbm_open d_dbm_open
18989 case "$d_dbm_open" in
18992 echo "We won't be including <ndbm.h>"
19001 : see if net/errno.h is available
19003 set net/errno.h val
19006 : Unfortunately, it causes problems on some systems. Arrgh.
19009 cat > try.c <<'EOM'
19012 #include <net/errno.h>
19018 if $cc $ccflags -c try.c >/dev/null 2>&1; then
19019 echo "We'll be including <net/errno.h>." >&4
19021 echo "We won't be including <net/errno.h>." >&4
19030 : see if netinet/tcp.h is available
19031 set netinet/tcp.h i_netinettcp
19034 : see if this is a poll.h system
19038 : see if this is a prot.h system
19043 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
19044 $cat <<'EOSH' > Cppsym.know
19045 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19046 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19047 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19048 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19049 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19050 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19051 bull c cadmus clipper CMU COFF COMPILER_VERSION
19052 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19053 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19054 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19055 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19057 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19058 H3050R H3050RX hbullx20 hcx host_mips
19059 hp200 hp300 hp700 HP700 hp800 hp9000
19060 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19061 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19062 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19063 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19064 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19065 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19066 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19067 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19068 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19069 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19070 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19071 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19072 MATH_HAS_NO_SIDE_EFFECTS
19073 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19074 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19075 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19076 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19077 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19078 NetBSD news1500 news1700 news1800 news1900 news3700
19079 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19080 ns32016 ns32332 ns32k nsc32000
19081 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19082 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19083 pc532 pdp11 PGC PIC plexus PORTAR posix
19084 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19085 POSIX_C_SOURCE POSIX_SOURCE POWER
19086 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19087 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19088 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19089 sony sony_news sonyrisc sparc sparclite spectrum
19090 stardent stdc STDC_EXT stratos sun sun3 sun386
19091 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19092 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19093 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19094 sysV68 sysV88 Tek4132 Tek4300 titan
19095 TM3200 TM5400 TM5600
19096 tower tower32 tower32_200 tower32_600 tower32_700
19097 tower32_800 tower32_850 tss
19098 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19099 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19100 unix UNIX95 UNIX99 unixpc unos
19101 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19102 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19103 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19105 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19106 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19107 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19110 # Maybe put other stuff here too.
19111 cat <<EOSH >>Cppsym.know
19114 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19115 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19116 $cat Cppsym.know > Cppsym.c
19117 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19118 $rm -f Cppsym.a Cppsym.b Cppsym.c
19119 cat <<EOSH > Cppsym
19121 if $test \$# -gt 0; then
19122 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19123 if $test -s Cppsym.got; then
19130 $tr " " "$trnl" | ./Cppsym.try
19136 cat <<EOSH > Cppsym.try
19138 cat <<'EOCP' > try.c
19144 cat <<'EOSH' >> Cppsym.try
19146 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
19147 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
19148 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
19149 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
19151 echo 'return 0;}' >> try.c
19153 cat <<EOSH >> Cppsym.try
19155 case "$osname-$gccversion" in
19156 irix-) ccflags="\$ccflags -woff 1178" ;;
19157 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19159 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19161 chmod +x Cppsym.try
19162 $eunicefix Cppsym.try
19163 ./Cppsym < Cppsym.know > Cppsym.true
19164 : now check the C compiler for additional symbols
19165 postprocess_cc_v=''
19167 aix) postprocess_cc_v="|$tr , ' '" ;;
19174 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19177 -D*) echo "\$i" | $sed 's/^-D//';;
19178 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
19183 postprocess_cc_v=''
19186 ./ccsym > ccsym1.raw
19187 if $test -s ccsym1.raw; then
19188 $sort ccsym1.raw | $uniq >ccsym.raw
19190 mv ccsym1.raw ccsym.raw
19193 $awk '/\=/ { print $0; next }
19194 { print $0"=1" }' ccsym.raw >ccsym.list
19195 $awk '/\=/ { print $0; next }
19196 { print $0"=1" }' Cppsym.true >ccsym.true
19197 $comm -13 ccsym.true ccsym.list >ccsym.own
19198 $comm -12 ccsym.true ccsym.list >ccsym.com
19199 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19201 if $test -z ccsym.raw; then
19202 echo "Your C compiler doesn't seem to define any symbols!" >&4
19204 echo "However, your C preprocessor defines the following symbols:"
19207 cppsymbols=`$cat Cppsym.true`
19208 cppsymbols=`echo $cppsymbols`
19209 cppccsymbols="$cppsymbols"
19211 if $test -s ccsym.com; then
19212 echo "Your C compiler and pre-processor define these symbols:"
19213 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19216 cppccsymbols=`$cat ccsym.com`
19217 cppccsymbols=`echo $cppccsymbols`
19218 $test "$silent" || sleep 1
19220 if $test -s ccsym.cpp; then
19221 $test "$also" && echo " "
19222 echo "Your C pre-processor ${also}defines the following symbols:"
19223 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19225 cppsymbols=`$cat ccsym.cpp`
19226 cppsymbols=`echo $cppsymbols`
19227 $test "$silent" || sleep 1
19229 if $test -s ccsym.own; then
19230 $test "$also" && echo " "
19231 echo "Your C compiler ${also}defines the following cpp symbols:"
19232 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19233 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19234 ccsymbols=`$cat ccsym.own`
19235 ccsymbols=`echo $ccsymbols`
19236 $test "$silent" || sleep 1
19240 : see if this is a termio system
19244 if $test `./findhdr termios.h`; then
19245 set tcsetattr i_termios
19251 "$define") echo "You have POSIX termios.h... good!" >&4;;
19252 *) if ./Cppsym pyr; then
19253 case "`/bin/universe`" in
19254 ucb) if $test `./findhdr sgtty.h`; then
19256 echo "<sgtty.h> found." >&4
19258 echo "System is pyramid with BSD universe."
19259 echo "<sgtty.h> not found--you could have problems." >&4
19261 *) if $test `./findhdr termio.h`; then
19263 echo "<termio.h> found." >&4
19265 echo "System is pyramid with USG universe."
19266 echo "<termio.h> not found--you could have problems." >&4
19270 if $test `./findhdr termio.h`; then
19271 echo "<termio.h> found." >&4
19273 elif $test `./findhdr sgtty.h`; then
19274 echo "<sgtty.h> found." >&4
19277 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19280 if $test `./findhdr sgtty.h`; then
19281 echo "<sgtty.h> found." >&4
19283 elif $test `./findhdr termio.h`; then
19284 echo "<termio.h> found." >&4
19287 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19291 set i_termio; eval $setvar
19292 val=$val2; set i_sgtty; eval $setvar
19293 val=$val3; set i_termios; eval $setvar
19295 : see if stddef is available
19296 set stddef.h i_stddef
19299 : see if this is a sunmath.h system
19300 set sunmath.h i_sunmath
19303 : see if sys/access.h is available
19304 set sys/access.h i_sysaccess
19307 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19308 set sys/filio.h i_sysfilio
19311 if $test `./findhdr sys/ioctl.h`; then
19313 echo '<sys/ioctl.h> found.' >&4
19316 if $test $i_sysfilio = "$define"; then
19317 echo '<sys/ioctl.h> NOT found.' >&4
19319 $test $i_sgtty = "$define" && xxx="sgtty.h"
19320 $test $i_termio = "$define" && xxx="termio.h"
19321 $test $i_termios = "$define" && xxx="termios.h"
19322 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19328 : see if socket ioctl defs are in sys/sockio.h
19330 xxx=`./findhdr sys/sockio.h`
19331 if $test "$xxx"; then
19332 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19334 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19337 echo "No socket ioctls found in <sys/sockio.h>." >&4
19342 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19349 : see if this is a syslog.h system
19350 set syslog.h i_syslog
19354 : see if this is a sys/mode.h system
19355 set sys/mode.h i_sysmode
19358 : see if sys/resource.h has to be included
19359 set sys/resource.h i_sysresrc
19362 : see if sys/security.h is available
19363 set sys/security.h i_syssecrt
19366 : see if this is a sys/statvfs.h system
19367 set sys/statvfs.h i_sysstatvfs
19370 : see if this is a sys/un.h system
19371 set sys/un.h i_sysun
19375 : see if this is a sys/utsname.h system
19376 set sys/utsname.h i_sysutsname
19379 : see if this is a syswait system
19380 set sys/wait.h i_syswait
19383 : see if this is a ustat.h system
19384 set ustat.h i_ustat
19387 : see if this is an utime system
19388 set utime.h i_utime
19391 : see if this is a values.h system
19392 set values.h i_values
19395 : see if this is a vfork system
19398 set vfork.h i_vfork
19406 : see if gdbm.h is available
19411 : see if gdbm_open exists
19412 set gdbm_open d_gdbm_open
19414 case "$d_gdbm_open" in
19417 echo "We won't be including <gdbm.h>"
19427 echo "Looking for extensions..." >&4
19428 : If we are using the old config.sh, known_extensions may contain
19429 : old or inaccurate or duplicate values.
19430 known_extensions=''
19431 nonxs_extensions=''
19432 : We do not use find because it might not be available.
19433 : We do not just use MANIFEST because the user may have dropped
19434 : some additional extensions into the source tree and expect them
19437 : Function to recursively find available extensions, ignoring DynaLoader
19438 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
19442 DynaLoader|dynaload) ;;
19444 if $test -f $xxx/$xxx.xs; then
19445 known_extensions="$known_extensions $1$xxx";
19446 elif $test -f $xxx/Makefile.PL; then
19447 nonxs_extensions="$nonxs_extensions $1$xxx";
19449 if $test -d $xxx -a $# -lt 10; then
19452 eval $find_extensions;
19464 eval $find_extensions
19465 # Special case: Add in threads/shared since it is not picked up by the
19466 # recursive find above (and adding in general recursive finding breaks
19467 # SDBM_File/sdbm). A.D. 10/25/2001.
19468 known_extensions="$known_extensions threads/shared"
19469 set X $nonxs_extensions
19471 nonxs_extensions="$*"
19472 set X $known_extensions
19474 known_extensions="$*"
19477 : Now see which are supported on this system.
19479 for xxx in $known_extensions ; do
19483 $define) avail_ext="$avail_ext $xxx" ;;
19486 GDBM_File|gdbm_fil)
19488 $define) avail_ext="$avail_ext $xxx" ;;
19491 I18N/Langinfo|i18n_lan)
19492 case "$i_langinfo$d_nl_langinfo" in
19493 $define$define) avail_ext="$avail_ext $xxx" ;;
19496 NDBM_File|ndbm_fil)
19499 case "$osname-$use64bitint" in
19500 cygwin-*|hpux-define)
19502 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
19505 *) avail_ext="$avail_ext $xxx" ;;
19510 ODBM_File|odbm_fil)
19511 case "${i_dbm}${i_rpcsvcdbm}" in
19513 case "$osname-$use64bitint" in
19514 cygwin-*|hpux-define)
19516 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
19519 *) avail_ext="$avail_ext $xxx" ;;
19525 case "$useposix" in
19526 true|define|y) avail_ext="$avail_ext $xxx" ;;
19530 case "$useopcode" in
19531 true|define|y) avail_ext="$avail_ext $xxx" ;;
19535 case "$d_socket" in
19538 beos) ;; # not unless BONE
19539 *) avail_ext="$avail_ext $xxx" ;;
19544 Sys/Syslog|sys/syslog)
19545 : XXX syslog requires socket
19546 case "$d_socket" in
19547 true|$define|y) avail_ext="$avail_ext $xxx" ;;
19551 case "$usethreads" in
19553 case "$useithreads" in
19554 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
19558 threads|threads/shared)
19559 case "$usethreads" in
19561 case "$useithreads" in
19562 $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
19567 : XXX Do we need a useipcsysv variable here
19568 case "${d_msg}${d_sem}${d_shm}" in
19569 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
19572 *) avail_ext="$avail_ext $xxx"
19581 : Now see which nonxs extensions are supported on this system.
19582 : For now assume all are.
19584 for xxx in $nonxs_extensions ; do
19586 *) nonxs_ext="$nonxs_ext $xxx"
19598 A number of extensions are supplied with $package. You may choose to
19599 compile these extensions for dynamic loading (the default), compile
19600 them into the $package executable (static loading), or not include
19601 them at all. Answer "none" to include no extensions.
19602 Note that DynaLoader is always built and need not be mentioned here.
19605 case "$dynamic_ext" in
19606 '') dflt="$avail_ext" ;;
19607 *) dflt="$dynamic_ext"
19608 # Perhaps we are reusing an old out-of-date config.sh.
19611 if test X"$dynamic_ext" != X"$avail_ext"; then
19613 NOTICE: Your previous config.sh list may be incorrect.
19614 The extensions now available to you are
19616 but the default list from your previous config.sh is
19628 rp="What extensions do you wish to load dynamically?"
19631 none) dynamic_ext=' ' ;;
19632 *) dynamic_ext="$ans" ;;
19635 case "$static_ext" in
19637 : Exclude those already listed in dynamic linking
19639 for xxx in $avail_ext; do
19640 case " $dynamic_ext " in
19642 *) dflt="$dflt $xxx" ;;
19649 *) dflt="$static_ext"
19656 rp="What extensions do you wish to load statically?"
19659 none) static_ext=' ' ;;
19660 *) static_ext="$ans" ;;
19665 A number of extensions are supplied with $package. Answer "none"
19666 to include no extensions.
19667 Note that DynaLoader is always built and need not be mentioned here.
19670 case "$static_ext" in
19671 '') dflt="$avail_ext" ;;
19672 *) dflt="$static_ext"
19673 # Perhaps we are reusing an old out-of-date config.sh.
19676 if test X"$static_ext" != X"$avail_ext"; then
19678 NOTICE: Your previous config.sh list may be incorrect.
19679 The extensions now available to you are
19681 but the default list from your previous config.sh is
19690 : Exclude those that are not xs extensions
19693 *) case " $dflt " in
19694 *" Encode "*) # Add the subextensions of Encode
19696 for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
19697 dflt="$dflt Encode/$xxx"
19704 rp="What extensions do you wish to include?"
19707 none) static_ext=' ' ;;
19708 *) static_ext="$ans" ;;
19713 set X $dynamic_ext $static_ext $nonxs_ext
19717 : Remove libraries needed only for extensions
19718 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
19719 : The exception is SunOS 4.x, which needs them.
19720 case "${osname}X${osvers}" in
19724 *) case "$usedl" in
19725 $define|true|[yY]*)
19726 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
19730 *) perllibs="$libs"
19736 : Remove build directory name from cppstdin so it can be used from
19737 : either the present location or the final installed location.
19739 : Get out of the UU directory to get correct path name.
19741 case "$cppstdin" in
19743 echo "Stripping down cppstdin path name"
19749 : end of configuration questions
19751 echo "End of configuration questions."
19754 : back to where it started
19755 if test -d ../UU; then
19759 : configuration may be patched via a 'config.arch' file
19760 if $test -f config.arch; then
19761 echo "I see a config.arch file, loading it."
19765 : configuration may be patched via a 'config.over' file
19766 if $test -f config.over; then
19769 rp='I see a config.over file. Do you wish to load it?'
19772 n*) echo "OK, I'll ignore it.";;
19774 echo "Configuration override changes have been loaded."
19779 : in case they want portability, strip down executable paths
19780 case "$d_portable" in
19783 echo "Stripping down executable paths..." >&4
19784 for file in $loclist $trylist; do
19786 eval $file=`basename $temp`
19791 : create config.sh file
19793 echo "Creating config.sh..." >&4
19794 $spitshell <<EOT >config.sh
19797 # This file was produced by running the Configure script. It holds all the
19798 # definitions figured out by Configure. Should you modify one of these values,
19799 # do not forget to propagate your changes by running "Configure -der". You may
19800 # instead choose to run each of the .SH files by yourself, or "Configure -S".
19803 # Package name : $package
19804 # Source directory : $src
19805 # Configuration time: $cf_time
19806 # Configured by : $cf_by
19807 # Target system : $myuname
19817 Revision='$Revision'
19825 alignbytes='$alignbytes'
19826 ansi2knr='$ansi2knr'
19827 aphostname='$aphostname'
19828 api_revision='$api_revision'
19829 api_subversion='$api_subversion'
19830 api_version='$api_version'
19831 api_versionstring='$api_versionstring'
19834 archlibexp='$archlibexp'
19835 archname64='$archname64'
19836 archname='$archname'
19837 archobjs='$archobjs'
19838 asctime_r_proto='$asctime_r_proto'
19843 bincompat5005='$bincompat5005'
19847 byteorder='$byteorder'
19849 castflags='$castflags'
19852 cccdlflags='$cccdlflags'
19853 ccdlflags='$ccdlflags'
19855 ccflags_uselargefiles='$ccflags_uselargefiles'
19857 ccsymbols='$ccsymbols'
19858 ccversion='$ccversion'
19860 cf_email='$cf_email'
19862 charsize='$charsize'
19866 clocktype='$clocktype'
19868 compress='$compress'
19869 contains='$contains'
19873 cpp_stuff='$cpp_stuff'
19874 cppccsymbols='$cppccsymbols'
19875 cppflags='$cppflags'
19877 cppminus='$cppminus'
19879 cppstdin='$cppstdin'
19880 cppsymbols='$cppsymbols'
19881 crypt_r_proto='$crypt_r_proto'
19882 cryptlib='$cryptlib'
19884 ctermid_r_proto='$ctermid_r_proto'
19885 ctime_r_proto='$ctime_r_proto'
19886 d_Gconvert='$d_Gconvert'
19887 d_PRIEUldbl='$d_PRIEUldbl'
19888 d_PRIFUldbl='$d_PRIFUldbl'
19889 d_PRIGUldbl='$d_PRIGUldbl'
19890 d_PRIXU64='$d_PRIXU64'
19891 d_PRId64='$d_PRId64'
19892 d_PRIeldbl='$d_PRIeldbl'
19893 d_PRIfldbl='$d_PRIfldbl'
19894 d_PRIgldbl='$d_PRIgldbl'
19895 d_PRIi64='$d_PRIi64'
19896 d_PRIo64='$d_PRIo64'
19897 d_PRIu64='$d_PRIu64'
19898 d_PRIx64='$d_PRIx64'
19899 d_SCNfldbl='$d_SCNfldbl'
19900 d__fwalk='$d__fwalk'
19901 d_access='$d_access'
19902 d_accessx='$d_accessx'
19904 d_archlib='$d_archlib'
19905 d_asctime_r='$d_asctime_r'
19908 d_attribut='$d_attribut'
19911 d_bincompat5005='$d_bincompat5005'
19913 d_bsdgetpgrp='$d_bsdgetpgrp'
19914 d_bsdsetpgrp='$d_bsdsetpgrp'
19916 d_casti32='$d_casti32'
19917 d_castneg='$d_castneg'
19918 d_charvspr='$d_charvspr'
19920 d_chroot='$d_chroot'
19921 d_chsize='$d_chsize'
19923 d_closedir='$d_closedir'
19924 d_cmsghdr_s='$d_cmsghdr_s'
19927 d_crypt_r='$d_crypt_r'
19929 d_ctermid_r='$d_ctermid_r'
19930 d_ctime_r='$d_ctime_r'
19931 d_cuserid='$d_cuserid'
19932 d_dbl_dig='$d_dbl_dig'
19933 d_dbminitproto='$d_dbminitproto'
19934 d_difftime='$d_difftime'
19936 d_dirnamlen='$d_dirnamlen'
19937 d_dlerror='$d_dlerror'
19938 d_dlopen='$d_dlopen'
19939 d_dlsymun='$d_dlsymun'
19940 d_dosuid='$d_dosuid'
19941 d_drand48_r='$d_drand48_r'
19942 d_drand48proto='$d_drand48proto'
19944 d_eaccess='$d_eaccess'
19945 d_endgrent='$d_endgrent'
19946 d_endgrent_r='$d_endgrent_r'
19947 d_endhent='$d_endhent'
19948 d_endhostent_r='$d_endhostent_r'
19949 d_endnent='$d_endnent'
19950 d_endnetent_r='$d_endnetent_r'
19951 d_endpent='$d_endpent'
19952 d_endprotoent_r='$d_endprotoent_r'
19953 d_endpwent='$d_endpwent'
19954 d_endpwent_r='$d_endpwent_r'
19955 d_endsent='$d_endsent'
19956 d_endservent_r='$d_endservent_r'
19957 d_eofnblk='$d_eofnblk'
19958 d_eunice='$d_eunice'
19959 d_fchdir='$d_fchdir'
19960 d_fchmod='$d_fchmod'
19961 d_fchown='$d_fchown'
19963 d_fcntl_can_lock='$d_fcntl_can_lock'
19964 d_fd_macros='$d_fd_macros'
19965 d_fd_set='$d_fd_set'
19966 d_fds_bits='$d_fds_bits'
19967 d_fgetpos='$d_fgetpos'
19968 d_finite='$d_finite'
19969 d_finitel='$d_finitel'
19970 d_flexfnam='$d_flexfnam'
19972 d_flockproto='$d_flockproto'
19974 d_fp_class='$d_fp_class'
19975 d_fpathconf='$d_fpathconf'
19976 d_fpclass='$d_fpclass'
19977 d_fpclassify='$d_fpclassify'
19978 d_fpclassl='$d_fpclassl'
19979 d_fpos64_t='$d_fpos64_t'
19980 d_frexpl='$d_frexpl'
19981 d_fs_data_s='$d_fs_data_s'
19982 d_fseeko='$d_fseeko'
19983 d_fsetpos='$d_fsetpos'
19984 d_fstatfs='$d_fstatfs'
19985 d_fstatvfs='$d_fstatvfs'
19987 d_ftello='$d_ftello'
19989 d_getcwd='$d_getcwd'
19990 d_getespwnam='$d_getespwnam'
19991 d_getfsstat='$d_getfsstat'
19992 d_getgrent='$d_getgrent'
19993 d_getgrent_r='$d_getgrent_r'
19994 d_getgrgid_r='$d_getgrgid_r'
19995 d_getgrnam_r='$d_getgrnam_r'
19996 d_getgrps='$d_getgrps'
19997 d_gethbyaddr='$d_gethbyaddr'
19998 d_gethbyname='$d_gethbyname'
19999 d_gethent='$d_gethent'
20000 d_gethname='$d_gethname'
20001 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20002 d_gethostbyname_r='$d_gethostbyname_r'
20003 d_gethostent_r='$d_gethostent_r'
20004 d_gethostprotos='$d_gethostprotos'
20005 d_getitimer='$d_getitimer'
20006 d_getlogin='$d_getlogin'
20007 d_getlogin_r='$d_getlogin_r'
20008 d_getmnt='$d_getmnt'
20009 d_getmntent='$d_getmntent'
20010 d_getnbyaddr='$d_getnbyaddr'
20011 d_getnbyname='$d_getnbyname'
20012 d_getnent='$d_getnent'
20013 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20014 d_getnetbyname_r='$d_getnetbyname_r'
20015 d_getnetent_r='$d_getnetent_r'
20016 d_getnetprotos='$d_getnetprotos'
20017 d_getpagsz='$d_getpagsz'
20018 d_getpbyname='$d_getpbyname'
20019 d_getpbynumber='$d_getpbynumber'
20020 d_getpent='$d_getpent'
20021 d_getpgid='$d_getpgid'
20022 d_getpgrp2='$d_getpgrp2'
20023 d_getpgrp='$d_getpgrp'
20024 d_getppid='$d_getppid'
20025 d_getprior='$d_getprior'
20026 d_getprotobyname_r='$d_getprotobyname_r'
20027 d_getprotobynumber_r='$d_getprotobynumber_r'
20028 d_getprotoent_r='$d_getprotoent_r'
20029 d_getprotoprotos='$d_getprotoprotos'
20030 d_getprpwnam='$d_getprpwnam'
20031 d_getpwent='$d_getpwent'
20032 d_getpwent_r='$d_getpwent_r'
20033 d_getpwnam_r='$d_getpwnam_r'
20034 d_getpwuid_r='$d_getpwuid_r'
20035 d_getsbyname='$d_getsbyname'
20036 d_getsbyport='$d_getsbyport'
20037 d_getsent='$d_getsent'
20038 d_getservbyname_r='$d_getservbyname_r'
20039 d_getservbyport_r='$d_getservbyport_r'
20040 d_getservent_r='$d_getservent_r'
20041 d_getservprotos='$d_getservprotos'
20042 d_getspnam='$d_getspnam'
20043 d_getspnam_r='$d_getspnam_r'
20044 d_gettimeod='$d_gettimeod'
20045 d_gmtime_r='$d_gmtime_r'
20046 d_gnulibc='$d_gnulibc'
20047 d_grpasswd='$d_grpasswd'
20048 d_hasmntopt='$d_hasmntopt'
20051 d_inetaton='$d_inetaton'
20052 d_int64_t='$d_int64_t'
20053 d_isascii='$d_isascii'
20054 d_isfinite='$d_isfinite'
20057 d_isnanl='$d_isnanl'
20058 d_killpg='$d_killpg'
20059 d_lchown='$d_lchown'
20060 d_ldbl_dig='$d_ldbl_dig'
20062 d_localtime_r='$d_localtime_r'
20063 d_locconv='$d_locconv'
20065 d_longdbl='$d_longdbl'
20066 d_longlong='$d_longlong'
20067 d_lseekproto='$d_lseekproto'
20069 d_madvise='$d_madvise'
20071 d_mbstowcs='$d_mbstowcs'
20072 d_mbtowc='$d_mbtowc'
20073 d_memchr='$d_memchr'
20074 d_memcmp='$d_memcmp'
20075 d_memcpy='$d_memcpy'
20076 d_memmove='$d_memmove'
20077 d_memset='$d_memset'
20079 d_mkdtemp='$d_mkdtemp'
20080 d_mkfifo='$d_mkfifo'
20081 d_mkstemp='$d_mkstemp'
20082 d_mkstemps='$d_mkstemps'
20083 d_mktime='$d_mktime'
20086 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20087 d_mprotect='$d_mprotect'
20089 d_msg_ctrunc='$d_msg_ctrunc'
20090 d_msg_dontroute='$d_msg_dontroute'
20091 d_msg_oob='$d_msg_oob'
20092 d_msg_peek='$d_msg_peek'
20093 d_msg_proxy='$d_msg_proxy'
20094 d_msgctl='$d_msgctl'
20095 d_msgget='$d_msgget'
20096 d_msghdr_s='$d_msghdr_s'
20097 d_msgrcv='$d_msgrcv'
20098 d_msgsnd='$d_msgsnd'
20100 d_munmap='$d_munmap'
20101 d_mymalloc='$d_mymalloc'
20103 d_nl_langinfo='$d_nl_langinfo'
20104 d_nv_preserves_uv='$d_nv_preserves_uv'
20105 d_off64_t='$d_off64_t'
20106 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20107 d_oldpthreads='$d_oldpthreads'
20108 d_oldsock='$d_oldsock'
20110 d_pathconf='$d_pathconf'
20112 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20113 d_phostname='$d_phostname'
20116 d_portable='$d_portable'
20117 d_procselfexe='$d_procselfexe'
20118 d_pthread_atfork='$d_pthread_atfork'
20119 d_pthread_yield='$d_pthread_yield'
20121 d_pwchange='$d_pwchange'
20122 d_pwclass='$d_pwclass'
20123 d_pwcomment='$d_pwcomment'
20124 d_pwexpire='$d_pwexpire'
20125 d_pwgecos='$d_pwgecos'
20126 d_pwpasswd='$d_pwpasswd'
20127 d_pwquota='$d_pwquota'
20130 d_random_r='$d_random_r'
20131 d_readdir64_r='$d_readdir64_r'
20132 d_readdir='$d_readdir'
20133 d_readdir_r='$d_readdir_r'
20134 d_readlink='$d_readlink'
20136 d_recvmsg='$d_recvmsg'
20137 d_rename='$d_rename'
20138 d_rewinddir='$d_rewinddir'
20140 d_safebcpy='$d_safebcpy'
20141 d_safemcpy='$d_safemcpy'
20142 d_sanemcmp='$d_sanemcmp'
20143 d_sbrkproto='$d_sbrkproto'
20144 d_sched_yield='$d_sched_yield'
20145 d_scm_rights='$d_scm_rights'
20146 d_seekdir='$d_seekdir'
20147 d_select='$d_select'
20149 d_semctl='$d_semctl'
20150 d_semctl_semid_ds='$d_semctl_semid_ds'
20151 d_semctl_semun='$d_semctl_semun'
20152 d_semget='$d_semget'
20154 d_sendmsg='$d_sendmsg'
20155 d_setegid='$d_setegid'
20156 d_seteuid='$d_seteuid'
20157 d_setgrent='$d_setgrent'
20158 d_setgrent_r='$d_setgrent_r'
20159 d_setgrps='$d_setgrps'
20160 d_sethent='$d_sethent'
20161 d_sethostent_r='$d_sethostent_r'
20162 d_setitimer='$d_setitimer'
20163 d_setlinebuf='$d_setlinebuf'
20164 d_setlocale='$d_setlocale'
20165 d_setlocale_r='$d_setlocale_r'
20166 d_setnent='$d_setnent'
20167 d_setnetent_r='$d_setnetent_r'
20168 d_setpent='$d_setpent'
20169 d_setpgid='$d_setpgid'
20170 d_setpgrp2='$d_setpgrp2'
20171 d_setpgrp='$d_setpgrp'
20172 d_setprior='$d_setprior'
20173 d_setproctitle='$d_setproctitle'
20174 d_setprotoent_r='$d_setprotoent_r'
20175 d_setpwent='$d_setpwent'
20176 d_setpwent_r='$d_setpwent_r'
20177 d_setregid='$d_setregid'
20178 d_setresgid='$d_setresgid'
20179 d_setresuid='$d_setresuid'
20180 d_setreuid='$d_setreuid'
20181 d_setrgid='$d_setrgid'
20182 d_setruid='$d_setruid'
20183 d_setsent='$d_setsent'
20184 d_setservent_r='$d_setservent_r'
20185 d_setsid='$d_setsid'
20186 d_setvbuf='$d_setvbuf'
20190 d_shmatprototype='$d_shmatprototype'
20191 d_shmctl='$d_shmctl'
20193 d_shmget='$d_shmget'
20194 d_sigaction='$d_sigaction'
20195 d_sigprocmask='$d_sigprocmask'
20196 d_sigsetjmp='$d_sigsetjmp'
20197 d_sockatmark='$d_sockatmark'
20198 d_sockatmarkproto='$d_sockatmarkproto'
20199 d_socket='$d_socket'
20200 d_socklen_t='$d_socklen_t'
20201 d_sockpair='$d_sockpair'
20202 d_socks5_init='$d_socks5_init'
20204 d_srand48_r='$d_srand48_r'
20205 d_srandom_r='$d_srandom_r'
20206 d_sresgproto='$d_sresgproto'
20207 d_sresuproto='$d_sresuproto'
20208 d_statblks='$d_statblks'
20209 d_statfs_f_flags='$d_statfs_f_flags'
20210 d_statfs_s='$d_statfs_s'
20211 d_statvfs='$d_statvfs'
20212 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20213 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20214 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20215 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20216 d_stdio_stream_array='$d_stdio_stream_array'
20217 d_stdiobase='$d_stdiobase'
20218 d_stdstdio='$d_stdstdio'
20219 d_strchr='$d_strchr'
20220 d_strcoll='$d_strcoll'
20221 d_strctcpy='$d_strctcpy'
20222 d_strerrm='$d_strerrm'
20223 d_strerror='$d_strerror'
20224 d_strerror_r='$d_strerror_r'
20225 d_strftime='$d_strftime'
20226 d_strtod='$d_strtod'
20227 d_strtol='$d_strtol'
20228 d_strtold='$d_strtold'
20229 d_strtoll='$d_strtoll'
20230 d_strtoq='$d_strtoq'
20231 d_strtoul='$d_strtoul'
20232 d_strtoull='$d_strtoull'
20233 d_strtouq='$d_strtouq'
20234 d_strxfrm='$d_strxfrm'
20235 d_suidsafe='$d_suidsafe'
20236 d_symlink='$d_symlink'
20237 d_syscall='$d_syscall'
20238 d_syscallproto='$d_syscallproto'
20239 d_sysconf='$d_sysconf'
20240 d_sysernlst='$d_sysernlst'
20241 d_syserrlst='$d_syserrlst'
20242 d_system='$d_system'
20243 d_tcgetpgrp='$d_tcgetpgrp'
20244 d_tcsetpgrp='$d_tcsetpgrp'
20245 d_telldir='$d_telldir'
20246 d_telldirproto='$d_telldirproto'
20249 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20250 d_tm_tm_zone='$d_tm_tm_zone'
20251 d_tmpnam_r='$d_tmpnam_r'
20252 d_truncate='$d_truncate'
20253 d_ttyname_r='$d_ttyname_r'
20254 d_tzname='$d_tzname'
20255 d_u32align='$d_u32align'
20256 d_ualarm='$d_ualarm'
20259 d_union_semun='$d_union_semun'
20260 d_unordered='$d_unordered'
20261 d_usleep='$d_usleep'
20262 d_usleepproto='$d_usleepproto'
20264 d_vendorarch='$d_vendorarch'
20265 d_vendorbin='$d_vendorbin'
20266 d_vendorlib='$d_vendorlib'
20268 d_void_closedir='$d_void_closedir'
20269 d_voidsig='$d_voidsig'
20270 d_voidtty='$d_voidtty'
20271 d_volatile='$d_volatile'
20272 d_vprintf='$d_vprintf'
20274 d_waitpid='$d_waitpid'
20275 d_wcstombs='$d_wcstombs'
20276 d_wctomb='$d_wctomb'
20277 d_writev='$d_writev'
20280 db_hashtype='$db_hashtype'
20281 db_prefixtype='$db_prefixtype'
20282 db_version_major='$db_version_major'
20283 db_version_minor='$db_version_minor'
20284 db_version_patch='$db_version_patch'
20285 defvoidused='$defvoidused'
20286 direntrytype='$direntrytype'
20289 doublesize='$doublesize'
20291 drand48_r_proto='$drand48_r_proto'
20292 dynamic_ext='$dynamic_ext'
20298 endgrent_r_proto='$endgrent_r_proto'
20299 endhostent_r_proto='$endhostent_r_proto'
20300 endnetent_r_proto='$endnetent_r_proto'
20301 endprotoent_r_proto='$endprotoent_r_proto'
20302 endpwent_r_proto='$endpwent_r_proto'
20303 endservent_r_proto='$endservent_r_proto'
20304 eunicefix='$eunicefix'
20307 extensions='$extensions'
20309 fflushNULL='$fflushNULL'
20310 fflushall='$fflushall'
20312 firstmakefile='$firstmakefile'
20314 fpossize='$fpossize'
20315 fpostype='$fpostype'
20316 freetype='$freetype'
20319 full_csh='$full_csh'
20320 full_sed='$full_sed'
20321 gccosandvers='$gccosandvers'
20322 gccversion='$gccversion'
20323 getgrent_r_proto='$getgrent_r_proto'
20324 getgrgid_r_proto='$getgrgid_r_proto'
20325 getgrnam_r_proto='$getgrnam_r_proto'
20326 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
20327 gethostbyname_r_proto='$gethostbyname_r_proto'
20328 gethostent_r_proto='$gethostent_r_proto'
20329 getlogin_r_proto='$getlogin_r_proto'
20330 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
20331 getnetbyname_r_proto='$getnetbyname_r_proto'
20332 getnetent_r_proto='$getnetent_r_proto'
20333 getprotobyname_r_proto='$getprotobyname_r_proto'
20334 getprotobynumber_r_proto='$getprotobynumber_r_proto'
20335 getprotoent_r_proto='$getprotoent_r_proto'
20336 getpwent_r_proto='$getpwent_r_proto'
20337 getpwnam_r_proto='$getpwnam_r_proto'
20338 getpwuid_r_proto='$getpwuid_r_proto'
20339 getservbyname_r_proto='$getservbyname_r_proto'
20340 getservbyport_r_proto='$getservbyport_r_proto'
20341 getservent_r_proto='$getservent_r_proto'
20342 getspnam_r_proto='$getspnam_r_proto'
20343 gidformat='$gidformat'
20349 gmtime_r_proto='$gmtime_r_proto'
20351 groupcat='$groupcat'
20352 groupstype='$groupstype'
20355 h_sysfile='$h_sysfile'
20366 i_arpainet='$i_arpainet'
20367 i_bsdioctl='$i_bsdioctl'
20371 i_dirent='$i_dirent'
20377 i_fp_class='$i_fp_class'
20380 i_ieeefp='$i_ieeefp'
20381 i_inttypes='$i_inttypes'
20382 i_langinfo='$i_langinfo'
20383 i_libutil='$i_libutil'
20384 i_limits='$i_limits'
20385 i_locale='$i_locale'
20386 i_machcthr='$i_machcthr'
20387 i_malloc='$i_malloc'
20389 i_memory='$i_memory'
20390 i_mntent='$i_mntent'
20393 i_neterrno='$i_neterrno'
20394 i_netinettcp='$i_netinettcp'
20398 i_pthread='$i_pthread'
20400 i_rpcsvcdbm='$i_rpcsvcdbm'
20403 i_shadow='$i_shadow'
20405 i_stdarg='$i_stdarg'
20406 i_stddef='$i_stddef'
20407 i_stdlib='$i_stdlib'
20408 i_string='$i_string'
20409 i_sunmath='$i_sunmath'
20410 i_sysaccess='$i_sysaccess'
20411 i_sysdir='$i_sysdir'
20412 i_sysfile='$i_sysfile'
20413 i_sysfilio='$i_sysfilio'
20415 i_sysioctl='$i_sysioctl'
20416 i_syslog='$i_syslog'
20417 i_sysmman='$i_sysmman'
20418 i_sysmode='$i_sysmode'
20419 i_sysmount='$i_sysmount'
20420 i_sysndir='$i_sysndir'
20421 i_sysparam='$i_sysparam'
20422 i_sysresrc='$i_sysresrc'
20423 i_syssecrt='$i_syssecrt'
20424 i_sysselct='$i_sysselct'
20425 i_syssockio='$i_syssockio'
20426 i_sysstat='$i_sysstat'
20427 i_sysstatfs='$i_sysstatfs'
20428 i_sysstatvfs='$i_sysstatvfs'
20429 i_systime='$i_systime'
20430 i_systimek='$i_systimek'
20431 i_systimes='$i_systimes'
20432 i_systypes='$i_systypes'
20433 i_sysuio='$i_sysuio'
20435 i_sysutsname='$i_sysutsname'
20436 i_sysvfs='$i_sysvfs'
20437 i_syswait='$i_syswait'
20438 i_termio='$i_termio'
20439 i_termios='$i_termios'
20441 i_unistd='$i_unistd'
20444 i_values='$i_values'
20445 i_varargs='$i_varargs'
20446 i_varhdr='$i_varhdr'
20448 ignore_versioned_solibs='$ignore_versioned_solibs'
20449 inc_version_list='$inc_version_list'
20450 inc_version_list_init='$inc_version_list_init'
20453 installarchlib='$installarchlib'
20454 installbin='$installbin'
20455 installman1dir='$installman1dir'
20456 installman3dir='$installman3dir'
20457 installprefix='$installprefix'
20458 installprefixexp='$installprefixexp'
20459 installprivlib='$installprivlib'
20460 installscript='$installscript'
20461 installsitearch='$installsitearch'
20462 installsitebin='$installsitebin'
20463 installsitelib='$installsitelib'
20464 installstyle='$installstyle'
20465 installusrbinperl='$installusrbinperl'
20466 installvendorarch='$installvendorarch'
20467 installvendorbin='$installvendorbin'
20468 installvendorlib='$installvendorlib'
20470 issymlink='$issymlink'
20471 ivdformat='$ivdformat'
20474 known_extensions='$known_extensions'
20477 lddlflags='$lddlflags'
20479 ldflags_uselargefiles='$ldflags_uselargefiles'
20480 ldlibpthname='$ldlibpthname'
20487 libsdirs='$libsdirs'
20488 libsfiles='$libsfiles'
20489 libsfound='$libsfound'
20490 libspath='$libspath'
20491 libswanted='$libswanted'
20492 libswanted_uselargefiles='$libswanted_uselargefiles'
20498 localtime_r_proto='$localtime_r_proto'
20499 locincpth='$locincpth'
20500 loclibpth='$loclibpth'
20501 longdblsize='$longdblsize'
20502 longlongsize='$longlongsize'
20503 longsize='$longsize'
20507 lseeksize='$lseeksize'
20508 lseektype='$lseektype'
20512 make_set_make='$make_set_make'
20513 mallocobj='$mallocobj'
20514 mallocsrc='$mallocsrc'
20515 malloctype='$malloctype'
20517 man1direxp='$man1direxp'
20520 man3direxp='$man3direxp'
20522 mips_type='$mips_type'
20524 mmaptype='$mmaptype'
20525 modetype='$modetype'
20527 multiarch='$multiarch'
20529 myarchname='$myarchname'
20530 mydomain='$mydomain'
20531 myhostname='$myhostname'
20534 need_va_copy='$need_va_copy'
20535 netdb_hlen_type='$netdb_hlen_type'
20536 netdb_host_type='$netdb_host_type'
20537 netdb_name_type='$netdb_name_type'
20538 netdb_net_type='$netdb_net_type'
20541 nm_so_opt='$nm_so_opt'
20542 nonxs_ext='$nonxs_ext'
20544 nvEUformat='$nvEUformat'
20545 nvFUformat='$nvFUformat'
20546 nvGUformat='$nvGUformat'
20547 nv_preserves_uv_bits='$nv_preserves_uv_bits'
20548 nveformat='$nveformat'
20549 nvfformat='$nvfformat'
20550 nvgformat='$nvgformat'
20553 o_nonblock='$o_nonblock'
20555 old_pthread_create_joinable='$old_pthread_create_joinable'
20556 optimize='$optimize'
20557 orderlib='$orderlib'
20560 otherlibdirs='$otherlibdirs'
20564 patchlevel='$patchlevel'
20565 path_sep='$path_sep'
20568 perl_patchlevel='$perl_patchlevel'
20569 perladmin='$perladmin'
20570 perllibs='$perllibs'
20571 perlpath='$perlpath'
20573 phostname='$phostname'
20576 pm_apiversion='$pm_apiversion'
20580 prefixexp='$prefixexp'
20582 privlibexp='$privlibexp'
20583 procselfexe='$procselfexe'
20584 prototype='$prototype'
20586 quadkind='$quadkind'
20587 quadtype='$quadtype'
20588 randbits='$randbits'
20589 randfunc='$randfunc'
20590 random_r_proto='$random_r_proto'
20591 randseedtype='$randseedtype'
20593 rd_nodata='$rd_nodata'
20594 readdir64_r_proto='$readdir64_r_proto'
20595 readdir_r_proto='$readdir_r_proto'
20596 revision='$revision'
20601 sPRIEUldbl='$sPRIEUldbl'
20602 sPRIFUldbl='$sPRIFUldbl'
20603 sPRIGUldbl='$sPRIGUldbl'
20604 sPRIXU64='$sPRIXU64'
20606 sPRIeldbl='$sPRIeldbl'
20607 sPRIfldbl='$sPRIfldbl'
20608 sPRIgldbl='$sPRIgldbl'
20613 sSCNfldbl='$sSCNfldbl'
20614 sched_yield='$sched_yield'
20615 scriptdir='$scriptdir'
20616 scriptdirexp='$scriptdirexp'
20618 seedfunc='$seedfunc'
20619 selectminbits='$selectminbits'
20620 selecttype='$selecttype'
20621 sendmail='$sendmail'
20622 setgrent_r_proto='$setgrent_r_proto'
20623 sethostent_r_proto='$sethostent_r_proto'
20624 setlocale_r_proto='$setlocale_r_proto'
20625 setnetent_r_proto='$setnetent_r_proto'
20626 setprotoent_r_proto='$setprotoent_r_proto'
20627 setpwent_r_proto='$setpwent_r_proto'
20628 setservent_r_proto='$setservent_r_proto'
20631 sharpbang='$sharpbang'
20632 shmattype='$shmattype'
20633 shortsize='$shortsize'
20636 sig_count='$sig_count'
20637 sig_name='$sig_name'
20638 sig_name_init='$sig_name_init'
20640 sig_num_init='$sig_num_init'
20641 sig_size='$sig_size'
20642 signal_t='$signal_t'
20643 sitearch='$sitearch'
20644 sitearchexp='$sitearchexp'
20646 sitebinexp='$sitebinexp'
20648 sitelib_stem='$sitelib_stem'
20649 sitelibexp='$sitelibexp'
20650 siteprefix='$siteprefix'
20651 siteprefixexp='$siteprefixexp'
20652 sizesize='$sizesize'
20653 sizetype='$sizetype'
20657 sockethdr='$sockethdr'
20658 socketlib='$socketlib'
20659 socksizetype='$socksizetype'
20661 spackage='$spackage'
20662 spitshell='$spitshell'
20663 srand48_r_proto='$srand48_r_proto'
20664 srandom_r_proto='$srandom_r_proto'
20666 ssizetype='$ssizetype'
20667 startperl='$startperl'
20669 static_ext='$static_ext'
20671 stdio_base='$stdio_base'
20672 stdio_bufsiz='$stdio_bufsiz'
20673 stdio_cnt='$stdio_cnt'
20674 stdio_filbuf='$stdio_filbuf'
20675 stdio_ptr='$stdio_ptr'
20676 stdio_stream_array='$stdio_stream_array'
20677 strerror_r_proto='$strerror_r_proto'
20680 subversion='$subversion'
20684 targetarch='$targetarch'
20688 timeincl='$timeincl'
20689 timetype='$timetype'
20690 tmpnam_r_proto='$tmpnam_r_proto'
20696 ttyname_r_proto='$ttyname_r_proto'
20705 uidformat='$uidformat'
20711 uquadtype='$uquadtype'
20712 use5005threads='$use5005threads'
20713 use64bitall='$use64bitall'
20714 use64bitint='$use64bitint'
20715 usecrosscompile='$usecrosscompile'
20717 useithreads='$useithreads'
20718 uselargefiles='$uselargefiles'
20719 uselongdouble='$uselongdouble'
20720 usemorebits='$usemorebits'
20721 usemultiplicity='$usemultiplicity'
20722 usemymalloc='$usemymalloc'
20724 useopcode='$useopcode'
20725 useperlio='$useperlio'
20726 useposix='$useposix'
20727 usereentrant='$usereentrant'
20729 useshrplib='$useshrplib'
20730 usesocks='$usesocks'
20731 usethreads='$usethreads'
20732 usevendorprefix='$usevendorprefix'
20733 usevfork='$usevfork'
20736 uvXUformat='$uvXUformat'
20737 uvoformat='$uvoformat'
20740 uvuformat='$uvuformat'
20741 uvxformat='$uvxformat'
20742 vendorarch='$vendorarch'
20743 vendorarchexp='$vendorarchexp'
20744 vendorbin='$vendorbin'
20745 vendorbinexp='$vendorbinexp'
20746 vendorlib='$vendorlib'
20747 vendorlib_stem='$vendorlib_stem'
20748 vendorlibexp='$vendorlibexp'
20749 vendorprefix='$vendorprefix'
20750 vendorprefixexp='$vendorprefixexp'
20752 version_patchlevel_string='$version_patchlevel_string'
20753 versiononly='$versiononly'
20755 voidflags='$voidflags'
20757 xs_apiversion='$xs_apiversion'
20759 yaccflags='$yaccflags'
20764 : Add in command line options if available
20765 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
20767 : add special variables
20768 $test -f $src/patchlevel.h && \
20769 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
20770 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
20771 echo "PERL_CONFIG_SH=true" >>config.sh
20773 : propagate old symbols
20774 if $test -f UU/config.sh; then
20775 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
20776 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
20777 $sort | $uniq -u >UU/oldsyms
20778 set X `cat UU/oldsyms`
20784 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
20786 echo "# Variables propagated from previous config.sh file." >>config.sh
20787 for sym in `cat UU/oldsyms`; do
20788 echo " Propagating $hint variable "'$'"$sym..."
20789 eval 'tmp="$'"${sym}"'"'
20791 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
20797 : Finish up by extracting the .SH files
20801 echo "Extraction done."
20811 If you'd like to make any changes to the config.sh file before I begin
20812 to configure things, do it as a shell escape now (e.g. !vi config.sh).
20815 rp="Press return or use a shell escape to edit config.sh:"
20820 *) : in case they cannot read
20821 sh 1>&4 -c "$ans";;
20826 : if this fails, just run all the .SH files by hand
20835 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
20842 Now you need to generate make dependencies by running "$make depend".
20843 You might prefer to run it in background: "$make depend > makedepend.out &"
20844 It can take a while, so you might not want to run it right now.
20849 rp="Run $make depend now?"
20853 $make depend && echo "Now you must run '$make'."
20856 echo "You must run '$make depend' then '$make'."
20859 elif test -f [Mm]akefile; then
20861 echo "Now you must run a $make."
20863 echo "Configure done."
20866 if $test -f Policy.sh; then
20869 If you compile $package on a different machine or from a different object
20870 directory, copy the Policy.sh file from this object directory to the
20871 new one before you run Configure -- this will help you with most of
20872 the policy defaults.
20876 if $test -f config.msg; then
20877 echo "Hmm. I also noted the following information while running:"
20879 $cat config.msg >&4
20882 $rm -f kit*isdone ark*isdone