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 # Though this script was generated by metaconfig, it is OK to send
22 # patches against it. It's up to the Configure pumpkin to backport
23 # the patch to the metaunits if it is accepted.
24 # See Porting/pumpkin.pod for more information on metaconfig.
27 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
29 # Generated on Wed Mar 8 09:08:03 CET 2006 [metaconfig 3.0 PL70]
30 # (with additional metaconfig patches by perlbug@perl.org)
35 SCO csh still thinks true is false. Write to SCO today and tell them that next
36 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
38 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
39 we'd have to do is go in and swap the && and || tokens, wherever they are.)
41 [End of diatribe. We now return you to your regularly scheduled programming...]
45 OOPS! You naughty creature! You didn't run Configure with sh!
46 I will attempt to remedy the situation by running sh for you...
50 true || exec sh $0 $argv:q
52 (exit $?0) || cat c2$$
53 (exit $?0) || exec sh $0 $argv:q
56 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
59 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
60 *** Configure that well. (Plan 9 is close to UNIX but not close enough.)
61 *** Please read the README.plan9 for further instructions.
62 *** Cannot continue, aborting.
68 : compute my invocation name
72 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
77 : Proper separator for the PATH environment variable
79 : On OS/2 this directory should exist if this is not floppy only system :-]
80 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
81 if test -n "$OS2_SHELL"; then
83 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
84 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
86 elif test -n "$DJGPP"; then
87 case "X${MACHTYPE:-nonesuchmach}" in
95 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
96 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
97 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
98 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
99 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
100 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
101 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
102 paths="$paths /sbin /usr/sbin /usr/libexec"
103 paths="$paths /system/gnu_library/bin"
107 case "$p_$PATH$p_" in
109 *) test -d $p && PATH=$PATH$p_$p ;;
116 : shall we be using ksh?
122 if (PATH=.; alias -x) >/dev/null 2>&1; then
125 if test -f /hp-ux -a -f /bin/ksh; then
126 needksh='to avoid sh bug in "here document" expansion'
128 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
129 if test X`/usr/bin/uname -v` = X4; then
130 avoidksh="to avoid AIX 4's /bin/sh"
134 if test -f /osf_boot -a -f /usr/sbin/setld; then
135 if test X`/usr/bin/uname -s` = XOSF1; then
136 avoidksh="to avoid Digital UNIX' ksh"
138 unset BIN_SH # if this is 'xpg4' sh will start up ksh
141 case "$inksh/$needksh" in
148 case "$inksh/$avoidksh" in
154 case "$inksh/$needksh-$avoidksh-" in
157 (I see you are using the Korn shell. Some ksh's blow up on $me,
158 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
165 echo "(Feeding myself to $newsh $reason.)"
167 Configure|*/Configure) exec $newsh $0 "$@";;
168 *) exec $newsh Configure "$@";;
173 : if needed set CDPATH to a harmless value that is not chatty
174 : avoid bash 2.02 problems with empty CDPATH.
178 *bash*) CDPATH='.' ;;
183 : Configure runs within the UU subdirectory
184 test -d UU || mkdir UU
348 d_attribute_format=''
349 d_attribute_malloc=''
350 d_attribute_nonnull=''
351 d_attribute_noreturn=''
353 d_attribute_unused=''
354 d_attribute_warn_unused_result=''
357 d_builtin_choose_expr=''
403 endhostent_r_proto=''
409 endprotoent_r_proto=''
415 endservent_r_proto=''
467 gethostbyaddr_r_proto=''
469 gethostbyname_r_proto=''
471 gethostent_r_proto=''
483 getnetbyaddr_r_proto=''
485 getnetbyname_r_proto=''
499 d_getprotobyname_r=''
500 getprotobyname_r_proto=''
501 d_getprotobynumber_r=''
502 getprotobynumber_r_proto=''
504 getprotoent_r_proto=''
516 getservbyname_r_proto=''
518 getservbyport_r_proto=''
520 getservent_r_proto=''
544 d_libm_lib_version=''
557 d_malloc_good_size=''
599 d_old_pthread_create_joinable=''
600 old_pthread_create_joinable=''
602 d_pthread_attr_setscope=''
641 sethostent_r_proto=''
658 setprotoent_r_proto=''
670 setservent_r_proto=''
703 d_sprintf_returns_strlen=''
718 d_stdio_ptr_lval_nochange_cnt=''
719 d_stdio_ptr_lval_sets_cnt=''
923 inc_version_list_init=''
942 ignore_versioned_solibs=''
1006 d_perl_otherlibdirs=''
1014 api_versionstring=''
1020 version_patchlevel_string=''
1024 d_nv_preserves_uv=''
1025 d_nv_zero_is_allbits_zero=''
1036 nv_preserves_uv_bits=''
1107 installsitehtml1dir=''
1110 installsitehtml3dir=''
1117 installsiteman1dir=''
1120 installsiteman3dir=''
1125 installsitescript=''
1140 d_stdio_stream_array=''
1141 stdio_stream_array=''
1152 ccflags_uselargefiles=''
1153 ldflags_uselargefiles=''
1154 libswanted_uselargefiles=''
1164 userelocatableinc=''
1175 installvendorarch=''
1182 installvendorhtml1dir=''
1184 vendorhtml1direxp=''
1185 installvendorhtml3dir=''
1187 vendorhtml3direxp=''
1193 installvendorman1dir=''
1196 installvendorman3dir=''
1203 installvendorscript=''
1215 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1218 : We must find out about Eunice early
1220 if test -f /etc/unixtovms; then
1221 eunicefix=/etc/unixtovms
1223 if test -f /etc/unixtovms.exe; then
1224 eunicefix=/etc/unixtovms.exe
1227 : Set executable suffix now -- needed before hints available
1228 if test -f "/libs/version.library"; then
1231 elif test -f "/system/gnu_library/bin/ar.pm"; then
1234 elif test -n "$DJGPP"; then
1237 elif test -d c:/. -o -n "$is_os2" ; then
1246 : set useposix=false in your hint file to disable the POSIX extension.
1248 : set useopcode=false in your hint file to disable the Opcode extension.
1250 : Trailing extension. Override this in a hint file, if needed.
1251 : Extra object files, if any, needed on this platform.
1254 : Possible local include directories to search.
1255 : Set locincpth to "" in a hint file to defeat local include searches.
1256 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1257 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1259 : no include file wanted by default
1264 : change the next line if compiling for Xenix/286 on Xenix/386
1265 xlibpth='/usr/lib/386 /lib/386'
1266 : Possible local library directories to search.
1267 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1268 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1270 : general looking path for locating libraries
1271 glibpth="/lib /usr/lib $xlibpth"
1272 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1273 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1274 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1276 : Private path used by Configure to find libraries. Its value
1277 : is prepended to libpth. This variable takes care of special
1278 : machines, like the mips. Usually, it should be empty.
1281 : default library list
1283 : some systems want to use only the non-versioned libso:s
1284 ignore_versioned_solibs=''
1289 ccflags_uselargefiles=''
1290 ldflags_uselargefiles=''
1291 libswanted_uselargefiles=''
1292 : set usemultiplicity on the Configure command line to enable multiplicity.
1293 : set usesocks on the Configure command line to enable socks.
1294 : set usethreads on the Configure command line to enable threads.
1295 usereentrant='undef'
1296 : full support for void wanted by default
1299 : List of libraries we want.
1300 : If anyone needs extra -lxxx, put those in a hint file.
1301 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1302 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1303 : We probably want to search /usr/shlib before most other libraries.
1304 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1305 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1306 glibpth="/usr/shlib $glibpth"
1307 : Do not use vfork unless overridden by a hint file.
1310 : Find the basic shell for Bourne shell scripts
1314 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1317 if test -f "$xxx"; then
1320 : Build up a list and do a single loop so we can 'break' out.
1321 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1322 for xxx in sh bash ksh pdksh ash; do
1324 try="$try ${p}/${xxx}"
1328 if test -f "$xxx"; then
1331 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1334 elif test -f "$xxx.exe"; then
1345 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1347 Usually it's in /bin/sh. How did you even get this far?
1348 Please contact me (Perl Maintainers) at perlbug@perl.org and
1349 we'll try to straighten this all out.
1355 : see if sh knows # comments
1356 if `$sh -c '#' >/dev/null 2>&1`; then
1360 test -f $xcat$_exe || xcat=/usr/bin/cat
1361 if test ! -f $xcat$_exe; then
1362 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1363 if test -f $p/cat$_exe; then
1368 if test ! -f $xcat$_exe; then
1369 echo "Can't find cat anywhere!"
1373 echo "#!$xcat" >sharp
1377 if test -s today; then
1380 echo "#! $xcat" > sharp
1384 if test -s today; then
1392 echo "Your $sh doesn't grok # comments--I will strip them later on."
1395 echo "exec grep -v '^[ ]*#'" >spitshell
1397 $eunicefix spitshell
1398 spitshell=`pwd`/spitshell
1400 echo "I presume that if # doesn't work, #! won't work either!"
1405 : figure out how to guarantee sh startup
1407 '') startsh=${sharpbang}${sh} ;;
1419 : echo "Yup, it does."
1421 echo "Hmm... '$startsh' does not guarantee sh startup..."
1422 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1427 : Save command line options in file UU/cmdline.opt for later use in
1428 : generating config.sh.
1429 cat > cmdline.opt <<EOSH
1430 # Configure command line arguments.
1439 cat >>cmdline.opt <<EOSH
1440 config_arg$argn='$arg'
1442 # Extreme backslashitis: replace each ' by '"'"'
1443 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1446 arg_exp=`cat cmdl.opt`
1447 args_exp="$args_exp$args_sep'$arg_exp'"
1448 argn=`expr $argn + 1`
1451 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1452 # used by ./hints/os2.sh
1455 : produce awk script to parse command line options
1456 cat >options.awk <<'EOF'
1458 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1460 len = length(optstr);
1461 for (i = 1; i <= len; i++) {
1462 c = substr(optstr, i, 1);
1463 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1474 if (substr(str, 1, 1) != "-") {
1475 printf("'%s'\n", str);
1479 for (i = 2; i <= len; i++) {
1480 c = substr(str, i, 1);
1482 printf("-%s\n", substr(str, i));
1488 printf("'%s'\n", substr(str, i + 1));
1501 : process the command line options
1502 set X `for arg in "$@"; do echo "X$arg"; done |
1503 sed -e s/X// | awk -f options.awk`
1508 : set up default values
1518 rm -f optdef.sh posthint.sh
1519 cat >optdef.sh <<EOS
1525 while test $# -gt 0; do
1527 -d) shift; fastread=yes;;
1528 -e) shift; alldone=cont;;
1532 if test -r "$1"; then
1535 echo "$me: cannot read config file $1." >&2
1540 -h) shift; error=true;;
1541 -r) shift; reuseval=true;;
1542 -s) shift; silent=true; realsilent=true;;
1543 -E) shift; alldone=exit;;
1544 -K) shift; knowitall=true;;
1545 -O) shift; override=true;;
1546 -S) shift; silent=true; extractsh=true;;
1551 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1552 echo "$me: ignoring -D $1" >&2
1555 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1556 *) echo "$1='define'" >> optdef.sh;;
1563 *=) echo "$1" >> optdef.sh;;
1565 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1566 echo "$me: ignoring -U $1" >&2
1568 *) echo "$1='undef'" >> optdef.sh;;
1579 *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1583 zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1584 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1590 *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1591 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1592 zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1593 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1594 *) xxx=`echo "$yyy"|sed 's!:.*!!'`
1595 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1601 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1603 echo "$yyy=''" >> posthint.sh ;;
1608 echo "$yyy='$zzz'" >> posthint.sh ;;
1610 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1612 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1617 echo "$yyy=$zzz" >> posthint.sh ;;
1618 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1622 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1625 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1633 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1634 [-U symbol] [-U symbol=] [-A command:symbol...]
1635 -d : use defaults for all answers.
1636 -e : go on without questioning past the production of config.sh.
1637 -f : specify an alternate default configuration file.
1638 -h : print this help message and exit (with an error status).
1639 -r : reuse C symbols value if possible (skips costly nm extraction).
1640 -s : silent mode, only echoes questions and essential information.
1641 -D : define symbol to have some value:
1642 -D symbol symbol gets the value 'define'
1643 -D symbol=value symbol gets the value 'value'
1644 -E : stop at the end of questions, after having produced config.sh.
1645 -K : do not use unless you know what you are doing.
1646 -O : let -D and -U override definitions from loaded configuration file.
1647 -S : perform variable substitutions on all .SH files (can mix with -f)
1648 -U : undefine symbol:
1649 -U symbol symbol gets the value 'undef'
1650 -U symbol= symbol gets completely empty
1651 -A : manipulate symbol after the platform specific hints have been applied:
1652 -A symbol=value append " "value to symbol
1653 -A append:symbol=value append value to symbol
1654 -A define:symbol=value define symbol to have value
1655 -A clear:symbol define symbol to be ''
1656 -A define:symbol define symbol to be 'define'
1657 -A eval:symbol=value define symbol to be eval of value
1658 -A prepend:symbol=value prepend value to symbol
1659 -A undef:symbol define symbol to be 'undef'
1660 -A undef:symbol= define symbol to be ''
1661 -V : print version number and exit (with a zero status).
1668 case "$fastread$alldone" in
1671 case "$extractsh" in
1674 if test ! -t 0; then
1675 echo "Say 'sh Configure', not 'sh <Configure'"
1685 true) exec 1>/dev/null;;
1688 : run the defines and the undefines, if any, but leave the file out there...
1691 : create the posthint manipulation script and leave the file out there...
1696 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1697 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1698 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1699 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1700 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1703 : Some greps do not return status, grrr.
1704 echo "grimblepritz" >grimble
1705 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1707 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1713 : the following should work in any shell
1717 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1718 cat >contains <<'EOSS'
1719 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1724 : Find the path to the source tree
1727 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1731 *) src=`cd ../$src && pwd` ;;
1744 if test -f $rsrc/Configure && \
1745 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1747 : found it, so we are ok.
1750 for src in . .. ../.. ../../.. ../../../..; do
1751 if test -f ../$src/Configure && \
1752 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1763 Sorry, I can't seem to locate the source dir for $package. Please start
1764 Configure with an explicit path -- i.e. /some/path/Configure.
1772 echo "Sources for $package found in \"$src\"." >&4
1776 : script used to extract .SH files with variable substitutions
1777 cat >extract <<'EOS'
1779 echo "Doing variable substitutions on .SH files..."
1780 if test -f MANIFEST; then
1781 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1783 echo "(Looking for .SH files under the source directory.)"
1784 set x `(cd "$src"; find . -name "*.SH" -print)`
1788 0) set x `(cd "$src"; echo *.SH)`; shift;;
1790 if test ! -f "$src/$1"; then
1796 while test $name; do
1797 if test ! -d "$name"; then
1798 create="$name $create";
1799 name=`echo $name | sed -e "s|^[^/]*$||"`;
1800 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1805 for file in $create; do
1814 dir=`expr X$file : 'X\(.*\)/'`
1815 file=`expr X$file : 'X.*/\(.*\)'`
1816 (cd "$dir" && . ./$file)
1826 dir=`expr X$file : 'X\(.*\)/'`
1827 file=`expr X$file : 'X.*/\(.*\)'`
1828 (set x $dir; shift; eval $mkdir_p)
1829 sh <"$src/$dir/$file"
1838 if test -f "$src/config_h.SH"; then
1839 if test ! -f config.h; then
1840 : oops, they left it out of MANIFEST, probably, so do it anyway.
1841 . "$src/config_h.SH"
1846 : extract files and exit if asked to do so
1847 case "$extractsh" in
1849 case "$realsilent" in
1853 case "$config_sh" in
1854 '') config_sh='config.sh';;
1857 echo "Fetching answers from $config_sh..."
1860 test "$override" && . ./optdef.sh
1864 echo "Extraction done."
1869 : Eunice requires " " instead of "", can you believe it
1872 echo "Beginning of configuration questions for $package."
1874 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1876 : first determine how to suppress newline on echo command
1878 echo "Checking echo to see how to suppress newlines..."
1879 (echo "hi there\c" ; echo " ") >.echotmp
1880 if $contains c .echotmp >/dev/null 2>&1 ; then
1891 echo $n "The star should be here-->$c"
1895 : Now test for existence of everything in MANIFEST
1897 if test -f "$rsrc/MANIFEST"; then
1898 echo "First let's make sure your kit is complete. Checking..." >&4
1899 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1902 for filelist in x??; do
1903 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1905 if test -s missing; then
1909 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1911 You have the option of continuing the configuration process, despite the
1912 distinct possibility that your kit is damaged, by typing 'y'es. If you
1913 do, don't blame me if something goes wrong. I advise you to type 'n'o
1914 and contact the author (perlbug@perl.org).
1917 echo $n "Continue? [n] $c" >&4
1921 echo "Continuing..." >&4
1925 echo "ABORTING..." >&4
1930 echo "Looks good..."
1933 echo "There is no MANIFEST file. I hope your kit is complete !"
1938 : Find the appropriate value for a newline for tr
1939 if test -n "$DJGPP"; then
1942 if test X"$trnl" = X; then
1943 case "`echo foo|tr '\n' x 2>/dev/null`" in
1947 if test X"$trnl" = X; then
1948 case "`echo foo|tr '\012' x 2>/dev/null`" in
1949 foox) trnl='\012' ;;
1952 if test X"$trnl" = X; then
1953 case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1954 fooxy) trnl='\n\r' ;;
1957 if test X"$trnl" = X; then
1960 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1966 : compute the number of columns on the terminal for proper question formatting
1971 : set up the echo used in my read
1972 myecho="case \"\$xxxm\" in
1973 '') echo $n \"\$rp $c\" >&4;;
1975 '') echo $n \"[\$xxxm] $c\";;
1977 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1979 echo $n \"[\$xxxm] $c\" >&4
1981 echo $n \"\$rp [\$xxxm] $c\" >&4
1987 : now set up to do reads with possible shell escape and default assignment
1993 case "\$fastread" in
1994 yes) case "\$dflt" in
1997 case "\$silent-\$rp" in
2002 *) case "\$silent" in
2003 true) case "\$rp" in
2008 while expr "X\$ans" : "X!" >/dev/null; do
2012 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2020 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2029 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2034 echo "(OK, I'll run with -d after this question.)" >&4
2037 echo "*** Sorry, \$1 not supported yet." >&4
2047 echo "*** Substitution done -- please confirm."
2049 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2054 echo "*** Error -- try again."
2061 case "\$ans\$xxxm\$nostick" in
2073 : create .config dir to save info across Configure sessions
2074 test -d ../.config || mkdir ../.config
2075 cat >../.config/README <<EOF
2076 This directory created by Configure to save information that should
2077 persist across sessions for $package.
2079 You may safely delete it if you wish.
2082 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2084 $define|true|[yY]*) ;;
2085 *) case "$xversion" in
2088 *** WHOA THERE!!! ***
2090 This is an UNSTABLE DEVELOPMENT release.
2091 The version of this $package distribution is $xversion, that is, odd,
2092 (as opposed to even) and that signifies a development release.
2093 If you want a maintenance release, you want an even-numbered version.
2095 Do ***NOT*** install this into production use.
2096 Data corruption and crashes are possible.
2098 It is most seriously suggested that you do not continue any further
2099 unless you want to help in developing and debugging Perl.
2101 If you *still* want to build perl, you can answer 'y' now,
2102 or pass -Dusedevel to Configure.
2105 rp='Do you really want to continue?'
2109 [yY]) echo >&4 "Okay, continuing."
2110 usedevel="$define" ;;
2111 *) echo >&4 "Okay, bye."
2121 case "$versiononly" in
2122 '') versiononly="$define" ;;
2124 case "$installusrbinperl" in
2125 '') installusrbinperl="$undef" ;;
2130 : general instructions
2133 user=`(logname) 2>/dev/null`
2135 '') user=`whoami 2>&1`;;
2137 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2140 rp='Would you like to see the instructions?'
2151 This installation shell script will examine your system and ask you questions
2152 to determine how the perl5 package should be installed. If you get
2153 stuck on a question, you may use a ! shell escape to start a subshell or
2154 execute a command. Many of the questions will have default answers in square
2155 brackets; typing carriage return will give you the default.
2157 On some of the questions which ask for file or directory names you are allowed
2158 to use the ~name construct to specify the login directory belonging to "name",
2159 even if you don't have a shell which knows about that. Questions where this is
2160 allowed will be marked "(~name ok)".
2164 dflt='Type carriage return to continue'
2168 The prompter used in this script allows you to use shell variables and
2169 backticks in your answers. You may use $1, $2, etc... to refer to the words
2170 in the default answer, as if the default line was a set of arguments given to a
2171 script shell. This means you may also use $* to repeat the whole default line,
2172 so you do not have to re-type everything to add something to the default.
2174 Everytime there is a substitution, you will have to confirm. If there is an
2175 error (e.g. an unmatched backtick), the default answer will remain unchanged
2176 and you will be prompted again.
2178 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
2179 the questions and use the computed defaults (or the previous answers if there
2180 was already a config.sh file). Type 'Configure -h' for a list of options.
2181 You may also start interactively and then answer '& -d' at any prompt to turn
2182 on the non-interactive behaviour for the remainder of the execution.
2188 Much effort has been expended to ensure that this shell script will run on any
2189 Unix system. If despite that it blows up on yours, your best bet is to edit
2190 Configure and run it again. If you can't run Configure for some reason,
2191 you'll have to generate a config.sh file by hand. Whatever problems you
2192 have, let me (perlbug@perl.org) know how I blew it.
2194 This installation script affects things in two ways:
2196 1) it may do direct variable substitutions on some of the files included
2198 2) it builds a config.h file for inclusion in C programs. You may edit
2199 any of these files as the need arises after running this script.
2201 If you make a mistake on a question, there is no easy way to back up to it
2202 currently. The easiest thing to do is to edit config.sh and rerun all the SH
2203 files. Configure will offer to let you do this before it runs the SH files.
2206 dflt='Type carriage return to continue'
2208 case "$firsttime" in
2209 true) echo $user >>../.config/instruct;;
2213 : find out where common programs are
2215 echo "Locating common programs..." >&4
2228 if test -d \$dir/\$thing; then
2234 for thisthing in \$dir/\$thing; do
2235 : just loop through to pick last item
2237 if test -f \$thisthing; then
2240 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2243 elif test -f \$dir/\$thing.exe; then
2244 if test -n "$DJGPP"; then
2245 echo \$dir/\$thing.exe
2246 elif test "$eunicefix" != ":"; then
2247 : on Eunice apparently
2301 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2302 pth="$pth /lib /usr/lib"
2303 for file in $loclist; do
2307 if test -f "$xxx"; then
2310 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2311 xxx=`./loc $file $file $pth`
2314 '') xxx=`./loc $file $file $pth`;;
2315 *) xxx=`./loc $xxx $xxx $pth`;;
2317 eval $file=$xxx$_exe
2321 echo $file is in $xxx.
2324 echo $file is in $xxx.
2327 echo "I don't know where '$file' is, and my life depends on it." >&4
2328 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2334 echo "Don't worry if any of the following aren't found..."
2336 for file in $trylist; do
2340 if test -f "$xxx"; then
2343 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2344 xxx=`./loc $file $file $pth`
2347 '') xxx=`./loc $file $file $pth`;;
2348 *) xxx=`./loc $xxx $xxx $pth`;;
2350 eval $file=$xxx$_exe
2354 echo $file is in $xxx.
2357 echo $file is in $xxx.
2360 echo "I don't see $file out there, $say."
2367 echo "Substituting grep for egrep."
2374 echo "Substituting cp for ln."
2383 echo "I can't find make or gmake, and my life depends on it." >&4
2384 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2392 *) # We can't have osname yet.
2393 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2394 # Assume that gmake, if found, is definitely GNU make
2395 # and prefer it over the system make.
2396 echo "Substituting gmake for make."
2404 echo "Hopefully test is built into your sh."
2407 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2408 echo "Using the test built into your sh."
2416 echo "Hopefully echo is built into your sh."
2421 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2422 $echo $n "hi there$c" >foo1
2423 echo $n "hi there$c" >foo2
2424 if cmp foo1 foo2 >/dev/null 2>&1; then
2425 echo "They are compatible. In fact, they may be identical."
2432 They are not compatible! You are probably running ksh on a non-USG system.
2433 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2434 have echo built in and we may have to run some Bourne shell scripts. That
2435 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2438 $echo $n "The star should be here-->$c"
2448 cat <<'EOSC' >>trygcc
2453 int main(int argc, char *argv[]) {
2457 if $cc -o try $ccflags $ldflags try.c; then
2460 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2466 case "`$cc -v -c try.c 2>&1`" in
2469 if $test X"$trygcc" = Xyes; then
2470 if gcc -o try -c try.c; then
2472 echo "You seem to have a working gcc, though." >&4
2473 rp="Would you like to use it?"
2475 if $test -f myread; then
2478 if $test -f UU/myread; then
2481 echo "Cannot find myread, sorry. Aborting." >&2
2486 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2487 if $test -f usethreads.cbu; then
2490 *** However, any setting of the C compiler flags (e.g. for thread support)
2491 *** has been lost. It may be necessary to pass -Dcc=gcc to Configure
2492 *** (together with e.g. -Dusethreads).
2508 cat <<'EOSC' >>checkcc
2513 int main(int argc, char *argv[]) {
2517 if $cc -o try $ccflags $ldflags try.c; then
2520 if $test X"$despair" = Xyes; then
2521 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2524 You need to find a working C compiler.
2525 Either (purchase and) install the C compiler supplied by your OS vendor,
2526 or for a free C compiler try http://gcc.gnu.org/
2527 I cannot continue any further, aborting.
2536 : determine whether symbolic links are supported
2539 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2540 echo "Symbolic links are supported." >&4
2543 echo "Symbolic links are NOT supported." >&4
2548 : determine whether symbolic links are supported
2552 echo "Checking how to test for symbolic links..." >&4
2554 if $test "X$issymlink" = X; then
2556 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2557 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2559 if test $? = 0; then
2562 echo "Your builtin 'test -h' may be broken." >&4
2565 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2568 if test -f "$p/$test"; then
2577 echo "Trying external '$test -h'." >&4
2578 issymlink="$test -h"
2579 if $test ! -h sym >/dev/null 2>&1; then
2580 echo "External '$test -h' is broken, too." >&4
2588 if $test "X$issymlink" = X; then
2589 if $test -L sym 2>/dev/null; then
2590 issymlink="$test -L"
2591 echo "The builtin '$test -L' worked." >&4
2594 if $test "X$issymlink" != X; then
2595 echo "You can test for symbolic links with '$issymlink'." >&4
2597 echo "I do not know how you can test for symbolic links." >&4
2601 *) echo "No symbolic links, so not testing for their testing..." >&4
2607 case "$mksymlinks" in
2610 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2613 *) case "$lns:$issymlink" in
2614 *"ln"*" -s:"*"test -"?)
2615 echo "Creating the symbolic links..." >&4
2616 echo "(First creating the subdirectories...)" >&4
2618 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2620 test -z "$directory" && break
2624 if test ! -d t/base; then
2625 echo "Failed to create the subdirectories. Aborting." >&4
2628 echo "(Then creating the symlinks...)" >&4
2629 awk '{print $1}' $src/MANIFEST | while true; do
2631 test -z "$filename" && break
2632 if test -f $filename; then
2633 if $issymlink $filename; then
2637 if test -f $filename; then
2638 echo "$filename already exists, not symlinking."
2640 ln -s $src/$filename $filename
2644 if test ! -f t/base/lex.t; then
2645 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
2650 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2659 case "$usecrosscompile" in
2661 $echo "Cross-compiling..."
2664 *-*-gcc) # A cross-compiling gcc, probably.
2665 targetarch=`$echo $cc|$sed 's/-gcc$//'`
2667 # leave out ld, choosing it is more complex
2669 ranlib=$targetarch-ranlib
2670 $echo 'extern int foo;' > try.c
2671 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2673 if $test $# -gt 0; then
2675 incpth="`$echo $incpth|$sed 's/^ //'`"
2676 echo "Guessing incpth '$incpth'." >&4
2678 j="`$echo $i|$sed 's,/include$,/lib,'`"
2679 if $test -d $j; then
2683 libpth="`$echo $libpth|$sed 's/^ //'`"
2684 echo "Guessing libpth '$libpth'." >&4
2689 case "$targetarch" in
2690 '') echo "Targetarch not defined." >&4; croak=y ;;
2691 *) echo "Using targetarch $targetarch." >&4 ;;
2694 '') echo "Incpth not defined." >&4; croak=y ;;
2695 *) echo "Using incpth '$incpth'." >&4 ;;
2698 '') echo "Libpth not defined." >&4; croak=y ;;
2699 *) echo "Using libpth '$libpth'." >&4 ;;
2702 '') for i in $incpth; do
2703 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2705 echo "Guessing usrinc $usrinc." >&4
2710 '') echo "Usrinc not defined." >&4; croak=y ;;
2713 *) echo "Using usrinc $usrinc." >&4 ;;
2715 case "$targethost" in
2716 '') echo "Targethost not defined." >&4; croak=y ;;
2717 *) echo "Using targethost $targethost." >&4
2722 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2725 /*) run=$src/Cross/run
2726 targetmkdir=$src/Cross/mkdir
2728 from=$src/Cross/from
2730 *) pwd=`$test -f ../Configure & cd ..; pwd`
2732 targetmkdir=$pwd/Cross/mkdir
2734 from=$pwd/Cross/from
2737 case "$targetrun" in
2738 '') targetrun=ssh ;;
2743 case "$targetfrom" in
2744 '') targetfrom=scp ;;
2748 from=$from-$targetfrom
2749 case "$targetdir" in
2751 echo "Guessing targetdir $targetdir." >&4
2754 case "$targetuser" in
2756 echo "Guessing targetuser $targetuser." >&4
2759 case "$targetfrom" in
2763 case "$targetrun" in
2775 '') cwd=$targetdir ;;
2779 if $test ! -f \$exe.xok; then
2783 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2786 *) echo "Unknown targetrun '$targetrun'" >&4
2790 case "$targetmkdir" in
2792 cat >$targetmkdir <<EOF
2794 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2796 $chmod a+rx $targetmkdir
2798 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2810 $targetmkdir \`dirname \$f\`
2811 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2814 $targetmkdir $targetdir/\`dirname \$f\`
2815 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2828 $mkdir -p $targetdir/\`dirname \$f\`
2829 $cp \$f $targetdir/\$f || exit 1
2832 $targetmkdir $targetdir/\`dirname \$f\`
2833 $cp \$f $targetdir/\$f || exit 1
2840 *) echo "Unknown targetto '$targetto'" >&4
2844 case "$targetfrom" in
2851 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2856 cp) cat >$from <<EOF
2861 cp $targetdir/\$f . || exit 1
2866 *) echo "Unknown targetfrom '$targetfrom'" >&4
2870 if $test ! -f $run; then
2871 echo "Target 'run' script '$run' not found." >&4
2875 if $test ! -f $to; then
2876 echo "Target 'to' script '$to' not found." >&4
2880 if $test ! -f $from; then
2881 echo "Target 'from' script '$from' not found." >&4
2885 if $test ! -f $run -o ! -f $to -o ! -f $from; then
2889 Using '$run' for remote execution,
2890 and '$from' and '$to'
2891 for remote file transfer.
2897 usecrosscompile='undef'
2902 : see whether [:lower:] and [:upper:] are supported character classes
2904 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2906 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2910 *) # There is a discontinuity in EBCDIC between 'R' and 'S'
2911 # (0xd9 and 0xe2), therefore that is a nice testing point.
2912 if test "X$up" = X -o "X$low" = X; then
2913 case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2919 if test "X$up" = X -o "X$low" = X; then
2920 case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2926 if test "X$up" = X -o "X$low" = X; then
2927 case "`echo RS | od -x 2>/dev/null`" in
2929 echo "Hey, this might be EBCDIC." >&4
2930 if test "X$up" = X -o "X$low" = X; then
2931 case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2932 rs) up='[A-IJ-RS-Z]'
2937 if test "X$up" = X -o "X$low" = X; then
2938 case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2948 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2950 echo "Using $up and $low to convert case." >&4
2953 echo "I don't know how to translate letters from upper to lower case." >&4
2954 echo "Your tr is not acting any way I know of." >&4
2958 : set up the translation script tr, must be called with ./tr of course
2962 '[A-Z][a-z]') exec $tr '$up' '$low';;
2963 '[a-z][A-Z]') exec $tr '$low' '$up';;
2970 : Try to determine whether config.sh was made on this system
2971 case "$config_sh" in
2973 myuname=`$uname -a 2>/dev/null`
2974 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2975 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2976 # because the A-Z/a-z are not consecutive.
2977 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2978 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2979 newmyuname="$myuname"
2981 case "$knowitall" in
2983 if test -f ../config.sh; then
2984 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2985 eval "`grep myuname= ../config.sh`"
2987 if test "X$myuname" = "X$newmyuname"; then
2995 : Get old answers from old config file if Configure was run on the
2996 : same system, otherwise use the hints.
2999 if test -f config.sh; then
3001 rp="I see a config.sh file. Shall I use it to set the defaults?"
3004 n*|N*) echo "OK, I'll ignore it."
3005 mv config.sh config.sh.old
3006 myuname="$newmyuname"
3008 *) echo "Fetching default answers from your old config.sh file..." >&4
3016 : Older versions did not always set $sh. Catch re-use of such
3026 if test ! -f config.sh; then
3029 First time through, eh? I have some defaults handy for some systems
3030 that need some extra help getting the Configure answers right:
3033 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
3035 : Half the following guesses are probably wrong... If you have better
3036 : tests or hints, please send them to perlbug@perl.org
3037 : The metaconfig authors would also appreciate a copy...
3038 $test -f /irix && osname=irix
3039 $test -f /xenix && osname=sco_xenix
3040 $test -f /dynix && osname=dynix
3041 $test -f /dnix && osname=dnix
3042 $test -f /lynx.os && osname=lynxos
3043 $test -f /unicos && osname=unicos && osvers=`$uname -r`
3044 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3045 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3046 $test -f /bin/mips && /bin/mips && osname=mips
3047 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3048 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3049 $test -d /usr/apollo/bin && osname=apollo
3050 $test -f /etc/saf/_sactab && osname=svr4
3051 $test -d /usr/include/minix && osname=minix
3052 $test -f /system/gnu_library/bin/ar.pm && osname=vos
3053 if $test -d /MachTen -o -d /MachTen_Folder; then
3055 if $test -x /sbin/version; then
3056 osvers=`/sbin/version | $awk '{print $2}' |
3057 $sed -e 's/[A-Za-z]$//'`
3058 elif $test -x /usr/etc/version; then
3059 osvers=`/usr/etc/version | $awk '{print $2}' |
3060 $sed -e 's/[A-Za-z]$//'`
3066 $test -f /sys/posix.dll &&
3067 $test -f /usr/bin/what &&
3068 set X `/usr/bin/what /sys/posix.dll` &&
3069 $test "$3" = UWIN &&
3073 if $test -f $uname; then
3081 umips) osname=umips ;;
3084 [23]100) osname=mips ;;
3085 next*) osname=next ;;
3087 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3088 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3091 elif $test -f /etc/kconfig; then
3093 if test "$lns" = "$ln -s"; then
3095 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3097 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3104 if test -n "$DJGPP"; then
3113 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3115 # oslevel can fail with:
3116 # oslevel: Unable to acquire lock.
3117 *not\ found) osvers="$4"."$3" ;;
3118 '<3240'|'<>3240') osvers=3.2.0 ;;
3119 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3120 '=3250'|'>3250') osvers=3.2.5 ;;
3124 bsd386) osname=bsd386
3127 cygwin*) osname=cygwin
3130 *dc.osx) osname=dcosx
3136 domainos) osname=apollo
3142 dragonfly) osname=dragonfly
3145 dynixptx*) osname=dynixptx
3146 osvers=`echo "$4"|sed 's/^v//'`
3148 freebsd) osname=freebsd
3150 genix) osname=genix ;;
3154 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3170 netbsd*) osname=netbsd
3173 news-os) osvers="$3"
3175 4*) osname=newsos4 ;;
3179 next*) osname=next ;;
3180 nonstop-ux) osname=nonstopux ;;
3181 openbsd) osname=openbsd
3187 POSIX-BC | posix-bc ) osname=posix-bc
3190 powerux | power_ux | powermax_os | powermaxos | \
3191 powerunix | power_unix) osname=powerux
3197 solaris) osname=solaris
3199 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3206 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3210 titanos) osname=titanos
3219 ultrix) osname=ultrix
3222 osf1|mls+) case "$5" in
3225 osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3228 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3231 hp*) osname=hp_osf1 ;;
3232 mips) osname=mips_osf1 ;;
3235 # UnixWare 7.1.2 is known as Open UNIX 8
3236 openunix|unixware) osname=svr5
3244 $2) case "$osname" in
3248 : svr4.x or possibly later
3258 if test -f /stand/boot ; then
3259 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3260 if test -n "$INITPROG" -a -f "$INITPROG"; then
3261 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3262 if test -n "$isesix"; then
3270 *) if test -f /etc/systemid; then
3272 set `echo $3 | $sed 's/\./ /g'` $4
3273 if $test -f $src/hints/sco_$1_$2_$3.sh; then
3275 elif $test -f $src/hints/sco_$1_$2.sh; then
3277 elif $test -f $src/hints/sco_$1.sh; then
3282 '') : Still unknown. Probably a generic Sys V.
3291 *) case "$osname" in
3292 '') : Still unknown. Probably a generic BSD.
3300 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3301 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3302 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3305 $rm -f UU/kernel.what
3306 elif test -d c:/. -o -n "$is_os2" ; then
3313 case "$targetarch" in
3316 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3321 : Now look for a hint file osname_osvers, unless one has been
3322 : specified already.
3325 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3326 : Also try without trailing minor version numbers.
3327 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3328 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3329 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3330 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3333 *) case "$osvers" in
3336 *) if $test -f $src/hints/$file.sh ; then
3338 elif $test -f $src/hints/$xfile.sh ; then
3340 elif $test -f $src/hints/$xxfile.sh ; then
3342 elif $test -f $src/hints/$xxxfile.sh ; then
3344 elif $test -f $src/hints/$xxxxfile.sh ; then
3346 elif $test -f "$src/hints/${osname}.sh" ; then
3355 if $test -f Policy.sh ; then
3358 none) dflt="Policy" ;;
3359 *) dflt="Policy $dflt" ;;
3364 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3368 if $test -f Policy.sh ; then
3371 There's also a Policy hint file available, which should make the
3372 site-specific (policy) questions easier to answer.
3379 You may give one or more space-separated answers, or "none" if appropriate.
3380 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3381 is a good thing. DO NOT give a wrong version or a wrong OS.
3385 rp="Which of these apply, if any?"
3388 for file in $tans; do
3389 if $test X$file = XPolicy -a -f Policy.sh; then
3391 $cat Policy.sh >> UU/config.sh
3392 elif $test -f $src/hints/$file.sh; then
3393 . $src/hints/$file.sh
3394 $cat $src/hints/$file.sh >> UU/config.sh
3395 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3398 : Give one chance to correct a possible typo.
3399 echo "$file.sh does not exist"
3401 rp="hint to use instead?"
3403 for file in $ans; do
3404 if $test -f "$src/hints/$file.sh"; then
3405 . $src/hints/$file.sh
3406 $cat $src/hints/$file.sh >> UU/config.sh
3407 elif $test X$ans = X -o X$ans = Xnone ; then
3410 echo "$file.sh does not exist -- ignored."
3417 : Remember our hint file for later.
3418 if $test -f "$src/hints/$file.sh" ; then
3428 echo "Fetching default answers from $config_sh..." >&4
3432 cp $config_sh config.sh 2>/dev/null
3442 test "$override" && . ./optdef.sh
3444 : Restore computed paths
3445 for file in $loclist $trylist; do
3446 eval $file="\$_$file"
3451 Configure uses the operating system name and version to set some defaults.
3452 The default value is probably right if the name rings a bell. Otherwise,
3453 since spelling matters for me, either accept the default or answer "none"
3460 ''|' '|none) dflt=none ;;
3461 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3464 *) dflt="$osname" ;;
3466 rp="Operating system name?"
3470 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3476 ''|' '|none) dflt=none ;;
3477 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3478 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3480 ''|' ') dflt=none ;;
3485 *) dflt="$osvers" ;;
3487 rp="Operating system version?"
3497 : who configured the system
3498 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3501 cf_by=`(logname) 2>/dev/null`
3504 cf_by=`(whoami) 2>/dev/null`
3506 "") cf_by=unknown ;;
3511 : set up the script used to warn in case of inconsistency
3518 echo "*** WHOA THERE!!! ***" >&4
3519 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3520 rp=" Keep the $hint value?"
3523 y) td=$was; tu=$was;;
3527 : function used to set $1 to $val
3528 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3530 $define$undef) . ./whoa; eval "$var=\$td";;
3531 $undef$define) . ./whoa; eval "$var=\$tu";;
3532 *) eval "$var=$val";;
3536 $define|true|[yY]*) dflt='y';;
3541 Perl can be built to use the SOCKS proxy protocol library. To do so,
3542 Configure must be run with -Dusesocks. If you use SOCKS you also need
3543 to use the PerlIO abstraction layer, this will be implicitly selected.
3545 If this doesn't make any sense to you, just accept the default '$dflt'.
3547 rp='Build Perl for SOCKS?'
3550 y|Y) val="$define" ;;
3557 $define|true|[yY]*) useperlio="$define";;
3560 case "$useperlio" in
3561 $define|true|[yY]*|'') dflt='y';;
3566 Previous version of $package used the standard IO mechanisms as
3567 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
3568 alternate IO mechanisms via the PerlIO abstraction layer, but the
3569 stdio mechanism is still available if needed. The abstraction layer
3570 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3571 Using PerlIO with sfio may cause problems with some extension modules.
3573 If this doesn't make any sense to you, just accept the default '$dflt'.
3575 rp='Use the PerlIO abstraction layer?'
3582 echo "Ok, doing things the stdio way."
3591 case "$useperlio" in
3592 $define|true|[yY]*) ;;
3595 You are using the SOCKS proxy protocol library which means that you
3596 should also use the PerlIO layer. You may be headed for trouble.
3605 case "$usethreads" in
3606 $define|true|[yY]*) dflt='y';;
3607 *) # Catch case where user specified ithreads or 5005threads but
3608 # forgot -Dusethreads (A.D. 4/2002)
3609 case "$useithreads$use5005threads" in
3611 case "$useperlio" in
3612 "$define") dflt='y' ;;
3622 Perl can be built to take advantage of threads on some systems.
3623 To do so, Configure can be run with -Dusethreads.
3625 Note that Perl built with threading support runs slightly slower
3626 and uses more memory than plain Perl. The current implementation
3627 is believed to be stable, but it is fairly new, and so should be
3628 treated with caution.
3630 If this doesn't make any sense to you, just accept the default '$dflt'.
3632 rp='Build a threading Perl?'
3635 y|Y) val="$define" ;;
3641 case "$usethreads" in
3645 Since release 5.6, Perl has had two different threading implementations,
3646 the newer interpreter-based version (ithreads) with one interpreter per
3647 thread, and the older 5.005 version (5005threads).
3648 The 5005threads version is effectively unmaintained and will probably be
3649 removed in Perl 5.10, so there should be no need to build a Perl using it
3650 unless needed for backwards compatibility with some existing 5.005threads
3654 : Default to ithreads unless overridden on command line or with
3657 case "$use5005threads" in
3658 $define|true|[yY]*) dflt='n';;
3660 case "$useithreads" in
3661 $undef|false|[nN]*) dflt='n';;
3663 rp='Use the newer interpreter-based ithreads?'
3666 y|Y) val="$define" ;;
3671 : Now set use5005threads to the opposite value.
3672 case "$useithreads" in
3673 $define) val="$undef" ;;
3680 useithreads="$undef"
3681 use5005threads="$undef"
3685 case "$useithreads$use5005threads" in
3689 You cannot have both the ithreads and the 5.005 threads enabled
3690 at the same time. Disabling the 5.005 threads since they are
3691 much less stable than the ithreads.
3694 use5005threads="$undef"
3698 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3701 *** To build with ithreads you must also use the PerlIO layer.
3702 *** Cannot continue, aborting.
3708 case "$d_oldpthreads" in
3709 '') : Configure tests would be welcome here. For now, assume undef.
3711 *) val="$d_oldpthreads" ;;
3717 : Look for a hint-file generated 'call-back-unit'. If the
3718 : user has specified that a threading perl is to be built,
3719 : we may need to set or change some other defaults.
3720 if $test -f usethreads.cbu; then
3721 echo "Your platform has some specific hints regarding threaded builds, using them..."
3724 case "$usethreads" in
3725 "$define"|true|[yY]*)
3727 (Your platform does not have any specific hints for threaded builds.
3728 Assuming POSIX threads, then.)
3736 Perl can be built so that multiple Perl interpreters can coexist
3737 within the same Perl executable.
3740 case "$useithreads" in
3743 This multiple interpreter support is required for interpreter-based threads.
3747 *) case "$usemultiplicity" in
3748 $define|true|[yY]*) dflt='y';;
3752 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3753 rp='Build Perl for multiplicity?'
3756 y|Y) val="$define" ;;
3765 case "$usemorebits" in
3766 "$define"|true|[yY]*)
3767 use64bitint="$define"
3768 uselongdouble="$define"
3769 usemorebits="$define"
3771 *) usemorebits="$undef"
3775 : make some quick guesses about what we are up against
3777 $echo $n "Hmm... $c"
3787 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3788 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3790 echo "Looks kind of like an OSF/1 system, but we'll see..."
3792 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3793 xxx=`./loc addbib blurfl $pth`
3794 if $test -f $xxx; then
3795 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3799 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3800 echo "Looks kind of like an extended USG system, but we'll see..."
3802 echo "Looks kind of like a USG system, but we'll see..."
3806 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3807 echo "Looks kind of like a BSD system, but we'll see..."
3811 echo "Looks kind of like a Version 7 system, but we'll see..."
3814 case "$eunicefix" in
3817 There is, however, a strange, musty smell in the air that reminds me of
3818 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3822 : it so happens the Eunice I know will not run shell scripts in Unix format
3826 echo "Congratulations. You aren't running Eunice."
3830 : Detect OS2. The p_ variable is set above in the Head.U unit.
3831 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3832 : semicolon as a patch separator
3837 I have the feeling something is not exactly right, however...don't tell me...
3838 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3839 (Or you may be running DOS with DJGPP.)
3844 if test -f /xenix; then
3845 echo "Actually, this looks more like a XENIX system..."
3850 echo "It's not Xenix..."
3855 if test -f /venix; then
3856 echo "Actually, this looks more like a VENIX system..."
3863 echo "Nor is it Venix..."
3866 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3867 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3874 rp="Use which C compiler?"
3878 : See if they have not cc but they do have gcc
3880 : Look for a hint-file generated 'call-back-unit'. Now that the
3881 : user has specified the compiler, we may need to set or change some
3883 if $test -f cc.cbu; then
3889 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3895 printf("%s\n", __VERSION__);
3897 printf("%s\n", "1");
3903 if $cc -o try $ccflags $ldflags try.c; then
3904 gccversion=`$run ./try`
3905 case "$gccversion" in
3906 '') echo "You are not using GNU cc." ;;
3907 *) echo "You are using GNU cc $gccversion."
3913 echo "*** WHOA THERE!!! ***" >&4
3914 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3915 case "$knowitall" in
3917 echo " You'd better start hunting for one and let me know about it." >&4
3923 case "$gccversion" in
3924 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3926 case "$gccversion" in
3927 '') gccosandvers='' ;;
3928 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3929 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3931 case "$gccosandvers" in
3932 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3933 $osname$osvers) ;; # looking good
3934 $osname*) cat <<EOM >&4
3936 *** WHOA THERE!!! ***
3938 Your gcc has not been compiled for the exact release of
3939 your operating system ($gccosandvers versus $osname$osvers).
3941 In general it is a good idea to keep gcc synchronized with
3942 the operating system because otherwise serious problems
3943 may ensue when trying to compile software, like Perl.
3945 I'm trying to be optimistic here, though, and will continue.
3946 If later during the configuration and build icky compilation
3947 problems appear (headerfile conflicts being the most common
3948 manifestation), I suggest reinstalling the gcc to match
3949 your operating system release.
3953 *) gccosandvers='' ;; # failed to parse, better be silent
3961 # gcc 3.* complain about adding -Idirectories that they already know about,
3962 # so we will take those off from locincpth.
3963 case "$gccversion" in
3965 echo "main(){}">try.c
3966 for incdir in $locincpth; do
3967 warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3968 grep '^c[cp]p*[01]: warning: changing search order '`
3969 if test "X$warn" != X; then
3970 locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3976 : decide how portable to be. Allow command line overrides.
3977 case "$d_portable" in
3979 *) d_portable="$define" ;;
3982 : set up shell script to do ~ expansion
3988 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3991 if $test -f /bin/csh; then
3992 /bin/csh -f -c "glob \$1"
3997 name=\`$expr x\$1 : '..\([^/]*\)'\`
3998 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3999 if $test ! -d "\$dir"; then
4001 echo "\$me: can't locate home directory for: \$name" >&2
4006 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
4022 : now set up to get a file name
4026 cat <<'EOSC' >>getfile
4042 : getfile will accept an answer from the comma-separated list
4043 : enclosed in parentheses even if it does not meet other criteria.
4044 expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4045 fn=`echo $fn | sed 's/(.*)//'`
4051 loc_file=`expr $fn : '.*:\(.*\)'`
4052 fn=`expr $fn : '\(.*\):.*'`
4060 */*) fullpath=true;;
4069 *e*) exp_file=true;;
4072 *p*) nopath_ok=true;;
4077 *d*) type='Directory';;
4078 *l*) type='Locate';;
4083 Locate) what='File';;
4088 case "$d_portable" in
4096 while test "$type"; do
4101 true) rp="$rp (~name ok)";;
4104 if test -f UU/getfile.ok && \
4105 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4124 value=`UU/filexp $ans`
4127 if test "$ans" != "$value"; then
4128 echo "(That expands to $value on this system.)"
4142 /*) value="$ansexp" ;;
4143 [a-zA-Z]:/*) value="$ansexp" ;;
4148 echo "I shall only accept a full path name, as in /bin/ls." >&4
4149 echo "Use a ! shell escape if you wish to check pathnames." >&4
4152 echo "Please give a full path name, starting with slash." >&4
4155 echo "Note that using ~name is ok provided it expands well." >&4
4168 for fp in $gfpth; do
4169 if test "X$fp" = X.; then
4174 if test -f "$pf"; then
4176 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4178 echo "($value is not a plain file, but that's ok.)"
4181 if test X"$type" = X; then
4188 for fp in $gfpth; do
4189 if test "X$fp" = X.; then
4194 direxp="$fp/$ansexp"
4196 if test -d "$direxp"; then
4204 if test -d "$ansexp"; then
4205 echo "(Looking for $loc_file in directory $value.)"
4206 value="$value/$loc_file"
4207 ansexp="$ansexp/$loc_file"
4209 if test -f "$ansexp"; then
4212 case "$nopath_ok" in
4213 true) case "$value" in
4215 *) echo "Assuming $value will be in people's path."
4231 if test "$fastread" = yes; then
4236 rp="$what $value doesn't exist. Use that name anyway?"
4255 test "X$gfpthkeep" != Xy && gfpth=""
4258 : What should the include directory be ?
4260 $echo $n "Hmm... $c"
4264 if $test -f /bin/mips && /bin/mips; then
4265 echo "Looks like a MIPS system..."
4266 $cat >usr.c <<'EOCP'
4267 #ifdef SYSTYPE_BSD43
4271 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4272 dflt='/bsd43/usr/include'
4276 mips_type='System V'
4278 $rm -f usr.c usr.out
4279 echo "and you're compiling with the $mips_type compiler and libraries."
4283 echo "Doesn't look like a MIPS system."
4293 case "$xxx_prompt" in
4296 rp='Where are the include files you want to use?'
4304 : see how we invoke the C preprocessor
4306 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4307 cat <<'EOT' >testcpp.c
4313 if test ! -f cppstdin; then
4314 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4315 # AIX cc -E doesn't show the absolute headerfile
4316 # locations but we'll cheat by using the -M flag.
4317 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
4319 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4322 echo "Keeping your $hint cppstdin wrapper."
4325 wrapper=`pwd`/cppstdin
4329 if $test "X$cppstdin" != "X" && \
4330 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4331 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4333 echo "You used to use $cppstdin $cppminus so we'll use that again."
4335 '') echo "But let's see if we can live without a wrapper..." ;;
4337 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4338 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4340 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4343 echo "(However, $cpprun $cpplast does not work, let's see...)"
4351 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4358 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4359 $cc -E <testcpp.c >testcpp.out 2>&1; \
4360 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4361 echo "Yup, it does."
4364 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4365 $cc -E - <testcpp.c >testcpp.out 2>&1; \
4366 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4367 echo "Yup, it does."
4370 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4371 $cc -P <testcpp.c >testcpp.out 2>&1; \
4372 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4373 echo "Yipee, that works!"
4376 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4377 $cc -P - <testcpp.c >testcpp.out 2>&1; \
4378 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4379 echo "At long last!"
4382 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4383 $cpp <testcpp.c >testcpp.out 2>&1; \
4384 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4388 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4389 $cpp - <testcpp.c >testcpp.out 2>&1; \
4390 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4391 echo "Hooray, it works! I was beginning to wonder."
4394 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
4395 $wrapper <testcpp.c >testcpp.out 2>&1; \
4396 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4402 rp="No dice. I can't find a C preprocessor. Name one:"
4406 $x_cpp <testcpp.c >testcpp.out 2>&1
4407 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4408 echo "OK, that will do." >&4
4410 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4425 echo "Perhaps can we force $cc -E using a wrapper..."
4426 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4427 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4433 echo "Nope, we'll have to live without it..."
4447 "$wrapper"|'cppstdin') ;;
4448 *) $rm -f $wrapper;;
4450 $rm -f testcpp.c testcpp.out
4452 : Set private lib path
4455 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4460 '') dlist="$loclibpth $plibpth $glibpth";;
4461 *) dlist="$libpth";;
4464 : Now check and see which directories actually exist, avoiding duplicates
4468 if $test -d $xxx; then
4471 *) libpth="$libpth $xxx";;
4477 Some systems have incompatible or broken versions of libraries. Among
4478 the directories listed in the question below, please remove any you
4479 know not to be holding relevant libraries, and add any that are needed.
4480 Say "none" for none.
4491 rp="Directories to use for library searches?"
4498 : compute shared library extension
4501 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4511 On some systems, shared libraries may be available. Answer 'none' if
4512 you want to suppress searching of shared libraries for the remainder
4513 of this configuration.
4516 rp='What is the file extension used for shared libraries?'
4520 : Define several unixisms.
4521 : Hints files or command line option can be used to override them.
4522 : The convoluted testing is in case hints files set either the old
4525 '') case "$exe_ext" in
4527 *) _exe="$exe_ext" ;;
4532 '') case "$lib_ext" in
4539 '') case "$obj_ext" in
4546 '') case "$path_sep" in
4557 : Which makefile gets called first. This is used by make depend.
4558 case "$firstmakefile" in
4559 '') firstmakefile='makefile';;
4563 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4566 case "$uselongdouble" in
4567 $define|true|[yY]*) dflt='y';;
4572 Perl can be built to take advantage of long doubles which
4573 (if available) may give more accuracy and range for floating point numbers.
4575 If this doesn't make any sense to you, just accept the default '$dflt'.
4577 rp='Try to use long doubles if available?'
4580 y|Y) val="$define" ;;
4586 case "$uselongdouble" in
4587 true|[yY]*) uselongdouble="$define" ;;
4590 : Look for a hint-file generated 'call-back-unit'. If the
4591 : user has specified that long doubles should be used,
4592 : we may need to set or change some other defaults.
4593 if $test -f uselongdouble.cbu; then
4594 echo "Your platform has some specific hints regarding long doubles, using them..."
4595 . ./uselongdouble.cbu
4597 case "$uselongdouble" in
4600 (Your platform does not have any specific hints for long doubles.)
4606 : Looking for optional libraries
4608 echo "Checking for optional libraries..." >&4
4613 case "$libswanted" in
4614 '') libswanted='c_s';;
4617 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4623 for thisdir in $libpth $xlibpth; do
4624 test -d $thisdir && libspath="$libspath $thisdir"
4626 for thislib in $libswanted; do
4627 for thisdir in $libspath; do
4629 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4630 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4631 $test -f "$xxx" && eval $libscheck
4632 $test -f "$xxx" && libstyle=shared
4634 if test ! -f "$xxx"; then
4635 xxx=$thisdir/lib$thislib.$so
4636 $test -f "$xxx" && eval $libscheck
4637 $test -f "$xxx" && libstyle=shared
4639 if test ! -f "$xxx"; then
4640 xxx=$thisdir/lib$thislib$_a
4641 $test -f "$xxx" && eval $libscheck
4642 $test -f "$xxx" && libstyle=static
4644 if test ! -f "$xxx"; then
4645 xxx=$thisdir/$thislib$_a
4646 $test -f "$xxx" && eval $libscheck
4647 $test -f "$xxx" && libstyle=static
4649 if test ! -f "$xxx"; then
4650 xxx=$thisdir/lib${thislib}_s$_a
4651 $test -f "$xxx" && eval $libscheck
4652 $test -f "$xxx" && libstyle=static
4653 $test -f "$xxx" && thislib=${thislib}_s
4655 if test ! -f "$xxx"; then
4656 xxx=$thisdir/Slib$thislib$_a
4657 $test -f "$xxx" && eval $libscheck
4658 $test -f "$xxx" && libstyle=static
4660 if $test -f "$xxx"; then
4662 shared) echo "Found -l$thislib (shared)." ;;
4663 static) echo "Found -l$thislib." ;;
4664 *) echo "Found -l$thislib ($libstyle)." ;;
4668 *) dflt="$dflt -l$thislib"
4669 libsfound="$libsfound $xxx"
4671 libsfiles="$libsfiles $yyy"
4672 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4673 case " $libsdirs " in
4675 *) libsdirs="$libsdirs $yyy" ;;
4682 if $test ! -f "$xxx"; then
4683 echo "No -l$thislib."
4694 ' '|'') dflt='none';;
4699 In order to compile $package on your machine, a number of libraries
4700 are usually needed. Include any other special libraries here as well.
4701 Say "none" for none. The default list is almost always right.
4705 rp="What libraries to use?"
4712 : determine optimization, if desired, or use for debug flag also
4714 ' '|$undef) dflt='none';;
4716 *) dflt="$optimize";;
4720 By default, $package compiles with the -O flag to use the optimizer.
4721 Alternately, you might want to use the symbolic debugger, which uses
4722 the -g flag (on traditional Unix systems). Either flag can be
4723 specified here. To use neither flag, specify the word "none".
4726 rp="What optimizer/debugger flag should be used?"
4730 'none') optimize=" ";;
4734 : We will not override a previous value, but we might want to
4735 : augment a hint file
4737 default|recommended)
4738 case "$gccversion" in
4739 1*) dflt='-fpcc-struct-return' ;;
4742 *-g*) dflt="$dflt -DDEBUGGING";;
4744 case "$gccversion" in
4745 2*) if test -d /etc/conf/kconfig.d &&
4746 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4748 # Interactive Systems (ISC) POSIX mode.
4753 case "$gccversion" in
4757 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4758 echo 'int main(void) { return 0; }' > gcctest.c
4759 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4760 echo "Yes, it does." 2>&1
4763 echo "Leaving current flags $ccflags alone." 2>&1
4765 *) dflt="$dflt -fno-strict-aliasing" ;;
4768 echo "Nope, it doesn't, but that's ok." 2>&1
4772 # For gcc, adding -pipe speeds up compilations for some, but apparently
4773 # some assemblers can't read from stdin. (It also slows down compilations
4774 # in other cases, but those are apparently rarer these days.) AD 5/2004.
4775 case "$gccversion" in
4777 echo "Checking if your compiler accepts -pipe" 2>&1
4778 echo 'int main(void) { return 0; }' > gcctest.c
4779 if $cc -pipe -o gcctest gcctest.c; then
4780 echo "Yes, it does." 2>&1
4783 echo "Leaving current flags $ccflags alone." 2>&1
4785 *) dflt="$dflt -pipe" ;;
4788 echo "Nope, it doesn't, but that's ok." 2>&1
4791 echo "Checking if your compiler accepts -Wdeclaration-after-statement" 2>&1
4792 echo 'int main(void) { return 0; }' > gcctest.c
4793 if $cc -Wdeclaration-after-statement -o gcctest gcctest.c; then
4794 echo "Yes, it does." 2>&1
4796 *-Wdeclaration-after-statement*)
4797 echo "Leaving current flags $ccflags alone." 2>&1
4799 *) dflt="$dflt -Wdeclaration-after-statement" ;;
4802 echo "Nope, it doesn't, but that's ok." 2>&1
4809 case "$mips_type" in
4810 *BSD*|'') inclwanted="$locincpth $usrinc";;
4811 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4813 for thisincl in $inclwanted; do
4814 if $test -d $thisincl; then
4815 if $test x$thisincl != x$usrinc; then
4817 *" -I$thisincl "*);;
4818 *) dflt="$dflt -I$thisincl ";;
4824 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4826 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4834 *) dflt="$dflt -D$2";;
4838 set signal.h LANGUAGE_C; eval $inctest
4842 ccflags="$ccflags -DSOCKS"
4847 default|recommended) dflt="$ccflags $dflt" ;;
4848 *) dflt="$ccflags";;
4857 Your C compiler may want other flags. For this question you should include
4858 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4859 but you should NOT include libraries or ld flags like -lwhatever. If you
4860 want $package to honor its debug switch, you should include -DDEBUGGING here.
4861 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4863 To use no flags, specify the word "none".
4869 rp="Any additional cc flags?"
4876 : the following weeds options from ccflags that are of no interest to cpp
4878 '') cppflags="$ccflags" ;;
4879 *) cppflags="$cppflags $ccflags" ;;
4881 case "$gccversion" in
4882 1*) cppflags="$cppflags -D__GNUC__"
4884 case "$mips_type" in
4886 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4892 echo "Let me guess what the preprocessor flags are..." >&4
4906 *) ftry="$previous $flag";;
4908 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4909 >cpp1.out 2>/dev/null && \
4910 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4911 >cpp2.out 2>/dev/null && \
4912 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4913 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4915 cppflags="$cppflags $ftry"
4925 *-*) echo "They appear to be: $cppflags";;
4927 $rm -f cpp.c cpp?.out
4931 : flags used in final linking phase
4933 '') if ./venix; then
4939 *-posix*) dflt="$dflt -posix" ;;
4942 *) dflt="$ldflags";;
4945 : Try to guess additional flags to pick up local libraries.
4946 for thislibdir in $libpth; do
4947 case " $loclibpth " in
4950 *"-L$thislibdir "*) ;;
4951 *) dflt="$dflt -L$thislibdir" ;;
4963 Your C linker may need flags. For this question you should
4964 include -L/whatever and any other flags used by the C linker, but you
4965 should NOT include libraries like -lwhatever.
4967 Make sure you include the appropriate -L/path flags if your C linker
4968 does not normally search all of the directories you specified above,
4971 To use no flags, specify the word "none".
4975 rp="Any additional ld flags (NOT including libraries)?"
4981 rmlist="$rmlist pdp11"
4985 echo "Checking your choice of C compiler and flags for coherency..." >&4
4986 $cat > try.c <<'EOF'
4988 int main() { printf("Ok\n"); return(0); }
4990 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4992 $cat >try.msg <<'EOM'
4993 I've tried to compile and run the following simple program:
4996 $cat try.c >> try.msg
4998 $cat >> try.msg <<EOM
5005 and I got the following output:
5009 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5010 if $sh -c "$run ./try" >>try.msg 2>&1; then
5014 *) echo 'The program compiled OK, but produced no output.' >> try.msg
5017 cat >> try.msg <<'EOQS'
5018 If $libs contains -lsfio, and sfio is mis-configured, then it
5019 sometimes (apparently) runs and exits with a 0 status, but with no
5020 output! It may have to do with sfio's use of _exit vs. exit.
5023 rp="You have a big problem. Shall I abort Configure"
5030 echo "The program compiled OK, but exited with status $?." >>try.msg
5031 rp="You have a problem. Shall I abort Configure"
5035 echo "I can't compile the test program." >>try.msg
5036 rp="You have a BIG problem. Shall I abort Configure"
5042 case "$knowitall" in
5044 echo "(The supplied flags or libraries might be incorrect.)"
5052 *) echo "Ok. Stopping Configure." >&4
5057 n) echo "OK, that should do.";;
5059 $rm -f try try.* core
5061 : define a shorthand compile call
5065 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5066 : define a shorthand compile call for compilations that should be ok.
5070 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5072 : determine filename position in cpp output
5074 echo "Computing filename position in cpp output for #include directives..." >&4
5076 vos) testaccess=-e ;;
5079 echo '#include <stdio.h>' > foo.c
5082 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5083 $grep '^[ ]*#.*stdio\.h' | \
5084 while read cline; do
5087 while $test \$# -gt 0; do
5088 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5093 pos=\`expr \$pos + 1\`
5105 *) pos="${fieldn}th";;
5107 echo "Your cpp writes the filename in the $pos field of the line."
5110 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5111 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5114 : locate header file
5119 for usrincdir in $usrinc
5121 if test -f \$usrincdir/\$wanted; then
5122 echo "\$usrincdir/\$wanted"
5126 awkprg='{ print \$$fieldn }'
5127 echo "#include <\$wanted>" > foo\$\$.c
5128 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5129 $cppfilter $grep "^[ ]*#.*\$wanted" | \
5130 while read cline; do
5131 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5133 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5134 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5139 # status = 0: grep returned 0 lines, case statement not executed
5140 # status = 1: headerfile found
5141 # status = 2: while loop executed, no headerfile found
5145 if test \$status -eq 1; then
5152 : define an alternate in-header-list? function
5153 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5154 cont=true; xxf="echo \"<\$1> found.\" >&4";
5155 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5156 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5158 case $# in 4) instead=instead;; *) instead="at last";; esac;
5159 while $test "$cont"; do
5161 var=$2; eval "was=\$$2";
5162 if $test "$xxx" && $test -r "$xxx";
5164 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5167 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5168 set $yyy; shift; shift; yyy=$@;
5169 case $# in 0) cont="";;
5170 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5171 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5172 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5173 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5177 do set $yyy; var=$2; eval "was=\$$2";
5178 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5179 set $yyy; shift; shift; yyy=$@;
5182 : see if stdlib is available
5183 set stdlib.h i_stdlib
5186 : check for lengths of integral types
5190 echo "Checking to see how big your integers are..." >&4
5199 printf("intsize=%d;\n", (int)sizeof(int));
5200 printf("longsize=%d;\n", (int)sizeof(long));
5201 printf("shortsize=%d;\n", (int)sizeof(short));
5206 if eval $compile_ok && $run ./try > /dev/null; then
5208 echo "Your integers are $intsize bytes long."
5209 echo "Your long integers are $longsize bytes long."
5210 echo "Your short integers are $shortsize bytes long."
5214 Help! I can't compile and run the intsize test program: please enlighten me!
5215 (This is probably a misconfiguration in your system or libraries, and
5216 you really ought to fix it. Still, I'll try anyway.)
5220 rp="What is the size of an integer (in bytes)?"
5224 rp="What is the size of a long integer (in bytes)?"
5228 rp="What is the size of a short integer (in bytes)?"
5236 : check for long long
5238 echo "Checking to see if you have long long..." >&4
5239 echo 'int main() { long long x = 7; return 0; }' > try.c
5241 if eval $compile; then
5243 echo "You have long long."
5246 echo "You do not have long long."
5252 : check for length of long long
5253 case "${d_longlong}${longlongsize}" in
5256 echo "Checking to see how big your long longs are..." >&4
5257 $cat >try.c <<'EOCP'
5261 printf("%d\n", (int)sizeof(long long));
5266 if eval $compile_ok; then
5267 longlongsize=`$run ./try`
5268 echo "Your long longs are $longlongsize bytes long."
5272 echo "(I can't seem to compile the test program. Guessing...)"
5273 rp="What is the size of a long long (in bytes)?"
5277 if $test "X$longsize" = "X$longlongsize"; then
5278 echo "(That isn't any different from an ordinary long.)"
5284 : see if inttypes.h is available
5285 : we want a real compile instead of Inhdr because some systems
5286 : have an inttypes.h which includes non-existent headers
5289 #include <inttypes.h>
5291 static int32_t foo32 = 0x12345678;
5295 if eval $compile; then
5296 echo "<inttypes.h> found." >&4
5299 echo "<inttypes.h> NOT found." >&4
5308 echo "Checking to see if you have int64_t..." >&4
5310 #include <sys/types.h>
5311 #$i_inttypes I_INTTYPES
5313 #include <inttypes.h>
5315 int main() { int64_t x = 7; }
5318 if eval $compile; then
5320 echo "You have int64_t."
5323 echo "You do not have int64_t."
5331 echo "Checking which 64-bit integer type we could use..." >&4
5337 val='"unsigned int"'
5342 *) case "$longsize" in
5346 val='"unsigned long"'
5351 *) case "$d_longlong:$longlongsize" in
5356 val='"unsigned long long"'
5361 *) case "$d_int64_t" in
5380 '') echo "Alas, no 64-bit integer types in sight." >&4
5383 *) echo "We could use '$quadtype' for 64-bit integers." >&4
5389 case "$uselonglong" in
5390 "$define"|true|[yY]*)
5393 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5395 use64bitint="$define"
5398 case "$use64bits" in
5399 "$define"|true|[yY]*)
5402 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5404 use64bitint="$define"
5407 case "$use64bitints" in
5408 "$define"|true|[yY]*)
5411 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5413 use64bitint="$define"
5416 case "$use64bitsint" in
5417 "$define"|true|[yY]*)
5420 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5422 use64bitint="$define"
5425 case "$uselonglongs" in
5426 "$define"|true|[yY]*)
5429 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5431 use64bitint="$define"
5434 case "$use64bitsall" in
5435 "$define"|true|[yY]*)
5438 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5440 use64bitall="$define"
5445 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5447 case "$use64bitall" in
5448 "$define"|true|[yY]*) use64bitint="$define" ;;
5454 You have natively 64-bit long integers.
5458 *) case "$use64bitint" in
5459 "$define"|true|[yY]*) dflt='y';;
5468 Perl can be built to take advantage of 64-bit integer types
5469 on some systems. To do so, Configure can be run with -Duse64bitint.
5470 Choosing this option will most probably introduce binary incompatibilities.
5472 If this doesn't make any sense to you, just accept the default '$dflt'.
5473 (The default has been chosen based on your configuration.)
5475 rp='Try to use 64-bit integers, if available?'
5478 [yY]*) val="$define" ;;
5486 case "$use64bitall" in
5487 "$define"|true|[yY]*) dflt='y' ;;
5488 *) case "$longsize" in
5496 You may also choose to try maximal 64-bitness. It means using as much
5497 64-bitness as possible on the platform. This in turn means even more
5498 binary incompatibilities. On the other hand, your platform may not
5499 have any more 64-bitness available than what you already have chosen.
5501 If this doesn't make any sense to you, just accept the default '$dflt'.
5502 (The default has been chosen based on your configuration.)
5504 rp='Try to use maximal 64-bit support, if available?'
5507 [yY]*) val="$define" ;;
5512 case "$use64bitall" in
5514 case "$use64bitint" in
5518 Since you have chosen a maximally 64-bit build, I'm also turning on
5519 the use of 64-bit integers.
5521 use64bitint="$define" ;;
5526 : Look for a hint-file generated 'call-back-unit'. If the
5527 : user has specified that a 64-bit perl is to be built,
5528 : we may need to set or change some other defaults.
5529 if $test -f use64bitint.cbu; then
5530 echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5533 case "$use64bitint" in
5534 "$define"|true|[yY]*)
5536 4) case "$archname64" in
5537 '') archname64=64int ;;
5544 : Look for a hint-file generated 'call-back-unit'. If the
5545 : user has specified that a maximally 64-bit perl is to be built,
5546 : we may need to set or change some other defaults.
5547 if $test -f use64bitall.cbu; then
5548 echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5551 case "$use64bitall" in
5552 "$define"|true|[yY]*)
5554 4) case "$archname64" in
5555 ''|64int) archname64=64all ;;
5562 case "$d_quad:$use64bitint" in
5566 *** You have chosen to use 64-bit integers,
5567 *** but none can be found.
5568 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5569 *** Cannot continue, aborting.
5576 : check for length of double
5578 case "$doublesize" in
5580 echo "Checking to see how big your double precision numbers are..." >&4
5589 printf("%d\n", (int)sizeof(double));
5594 if eval $compile_ok; then
5595 doublesize=`$run ./try`
5596 echo "Your double is $doublesize bytes long."
5599 echo "(I can't seem to compile the test program. Guessing...)"
5600 rp="What is the size of a double precision number (in bytes)?"
5608 : check for long doubles
5610 echo "Checking to see if you have long double..." >&4
5611 echo 'int main() { long double x = 7.0; }' > try.c
5613 if eval $compile; then
5615 echo "You have long double."
5618 echo "You do not have long double."
5624 : check for length of long double
5625 case "${d_longdbl}${longdblsize}" in
5628 echo "Checking to see how big your long doubles are..." >&4
5629 $cat >try.c <<'EOCP'
5633 printf("%d\n", sizeof(long double));
5638 if eval $compile; then
5639 longdblsize=`$run ./try`
5640 echo "Your long doubles are $longdblsize bytes long."
5644 echo "(I can't seem to compile the test program. Guessing...)" >&4
5645 rp="What is the size of a long double (in bytes)?"
5649 if $test "X$doublesize" = "X$longdblsize"; then
5650 echo "That isn't any different from an ordinary double."
5651 echo "I'll keep your setting anyway, but you may see some"
5652 echo "harmless compilation warnings."
5658 : determine the architecture name
5660 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5661 tarch=`arch`"-$osname"
5662 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5663 if uname -m > tmparch 2>&1 ; then
5664 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5665 -e 's/$/'"-$osname/" tmparch`
5673 case "$myarchname" in
5676 echo "(Your architecture name used to be $myarchname.)"
5680 case "$targetarch" in
5682 *) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5687 *) dflt="$archname";;
5689 rp='What is your architecture name'
5692 case "$usethreads" in
5694 echo "Threads selected." >&4
5696 *-thread*) echo "...and architecture name already has -thread." >&4
5698 *) archname="$archname-thread"
5699 echo "...setting architecture name to $archname." >&4
5704 case "$usemultiplicity" in
5706 echo "Multiplicity selected." >&4
5708 *-multi*) echo "...and architecture name already has -multi." >&4
5710 *) archname="$archname-multi"
5711 echo "...setting architecture name to $archname." >&4
5716 case "$use64bitint$use64bitall" in
5718 case "$archname64" in
5720 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5723 case "$use64bitint" in
5724 "$define") echo "64 bit integers selected." >&4 ;;
5726 case "$use64bitall" in
5727 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5730 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5732 *) archname="$archname-$archname64"
5733 echo "...setting architecture name to $archname." >&4
5739 case "$uselongdouble" in
5741 echo "Long doubles selected." >&4
5742 case "$longdblsize" in
5744 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5748 *-ld*) echo "...and architecture name already has -ld." >&4
5750 *) archname="$archname-ld"
5751 echo "...setting architecture name to $archname." >&4
5758 case "$useperlio" in
5760 echo "Perlio selected." >&4
5763 echo "Perlio not selected, using stdio." >&4
5765 *-stdio*) echo "...and architecture name already has -stdio." >&4
5767 *) archname="$archname-stdio"
5768 echo "...setting architecture name to $archname." >&4
5773 if $test -f archname.cbu; then
5774 echo "Your platform has some specific hints for architecture name, using them..."
5778 : determine root of directory hierarchy where package will be installed.
5781 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5784 dflt=`echo "$prefix" | sed 's/.$//'`
5792 By default, $package will be installed in $dflt/bin, manual pages
5793 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5794 installation directories. Typically this is something like /usr/local.
5795 If you wish to have binaries under /usr/bin but other parts of the
5796 installation under /usr/local, that's ok: you will be prompted
5797 separately for each of the installation directories, the prefix being
5798 only used to set the defaults.
5802 rp='Installation prefix to use?'
5810 *) oldprefix="$prefix";;
5819 *) afsroot=$afsroot ;;
5825 $define|true) afs=true ;;
5826 $undef|false) afs=false ;;
5827 *) if test -d $afsroot; then
5835 echo "AFS may be running... I'll be extra cautious then..." >&4
5837 echo "AFS does not seem to be running..." >&4
5840 : determine installation prefix for where package is to be installed.
5844 Since you are running AFS, I need to distinguish the directory in which
5845 files will reside from the directory in which they are installed (and from
5846 which they are presumably copied to the former directory by occult means).
5849 case "$installprefix" in
5850 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5851 *) dflt="$installprefix";;
5856 In some special cases, particularly when building $package for distribution,
5857 it is convenient to distinguish the directory in which files should be
5858 installed from the directory ($prefix) in which they will
5859 eventually reside. For most users, these two directories are the same.
5862 case "$installprefix" in
5864 *) dflt=$installprefix;;
5868 rp='What installation prefix should I use for installing files?'
5870 installprefix="$ans"
5871 installprefixexp="$ansexp"
5873 : set the prefixit variable, to compute a suitable default value
5874 prefixit='case "$3" in
5876 case "$oldprefix" in
5877 "") eval "$1=\"\$$2\"";;
5884 ""|" ") eval "$1=\"\$$2\"";;
5890 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5892 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5893 /*-$oldprefix/*|\~*-$oldprefix/*)
5894 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5895 *) eval "$1=\"\$$2\"";;
5899 : get the patchlevel
5901 echo "Getting the current patchlevel..." >&4
5902 if $test -r $rsrc/patchlevel.h;then
5903 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5904 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5905 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5906 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5907 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5908 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5909 perl_patchlevel=`egrep 'define PERL_PATCHNUM [0-9][0-9]|,"MAINT[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5918 $echo "(You do not have patchlevel.h. Eek.)"
5920 if $test -r $rsrc/.patch ; then
5921 if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5922 perl_patchlevel=`cat $rsrc/.patch`
5925 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5926 version_patchlevel_string="version $patchlevel subversion $subversion"
5927 case "$perl_patchlevel" in
5929 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5932 $echo "(You have $package $version_patchlevel_string.)"
5936 : XXX Should be a Configure test for double-dots in filenames.
5937 version=`echo $revision $patchlevel $subversion | \
5938 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5939 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5940 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5943 version=`echo $revision $patchlevel $subversion | \
5944 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5945 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5946 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5949 : Special case the 5.005_xx maintenance series, which used 5.005
5950 : without any subversion label as a subdirectory in $sitelib
5951 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5952 api_versionstring='5.005'
5955 : determine installation style
5956 : For now, try to deduce it from prefix unless it is already set.
5957 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5958 case "$installstyle" in
5959 '') case "$prefix" in
5960 *perl*) dflt='lib';;
5961 *) dflt='lib/perl5' ;;
5964 *) dflt="$installstyle" ;;
5966 : Probably not worth prompting for this since we prompt for all
5967 : the directories individually, and the prompt would be too long and
5972 : Perform the prefixexp/installprefixexp correction if necessary
5973 cat <<EOS >installprefix
5976 cat <<'EOSC' >>installprefix
5977 : Change installation prefix, if necessary.
5978 if $test X"$prefix" != X"$installprefix"; then
5979 eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
5981 eval "install${prefixvar}=\"\$${prefixvar}exp\""
5985 : Set variables such as privlib and privlibexp from the output of ./getfile
5986 : performing the prefixexp/installprefixexp correction if necessary.
5987 cat <<EOS >setprefixvar
5990 cat <<'EOSC' >>setprefixvar
5991 eval "${prefixvar}=\"\$ans\""
5992 eval "${prefixvar}exp=\"\$ansexp\""
5996 : determine where private library files go
5997 : Usual default is /usr/local/lib/perl5/$version.
5998 : Also allow things like /opt/perl/lib/$version, since
5999 : /opt/perl/lib/perl5... would be redundant.
6000 : The default "style" setting is made in installstyle.U
6001 case "$installstyle" in
6002 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6003 *) set dflt privlib lib/$version ;;
6008 There are some auxiliary files for $package that need to be put into a
6009 private library directory that is accessible by everyone.
6013 rp='Pathname where the private library files will reside?'
6018 : set the prefixup variable, to restore leading tilda escape
6019 prefixup='case "$prefixexp" in
6021 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6024 : determine where public architecture dependent libraries go
6027 : privlib default is /usr/local/lib/$package/$version
6028 : archlib default is /usr/local/lib/$package/$version/$archname
6029 : privlib may have an optional trailing /share.
6030 tdflt=`echo $privlib | $sed 's,/share$,,'`
6031 tdflt=$tdflt/$archname
6040 $spackage contains architecture-dependent library files. If you are
6041 sharing libraries in a heterogeneous environment, you might store
6042 these files in a separate location. Otherwise, you can just include
6043 them with the rest of the public library files.
6047 rp='Where do you want to put the public architecture-dependent libraries?'
6051 if $test X"$archlib" = X"$privlib"; then
6057 : see if setuid scripts can be secure
6060 Some kernels have a bug that prevents setuid #! scripts from being
6061 secure. Some sites have disabled setuid #! scripts because of this.
6063 First let's decide if your kernel supports secure setuid #! scripts.
6064 (If setuid #! scripts would be secure but have been disabled anyway,
6065 don't say that they are secure if asked.)
6070 if $test -d /dev/fd; then
6071 echo "#!$ls" >reflect
6072 chmod +x,u+s reflect
6073 ./reflect >flect 2>&1
6074 if $contains "/dev/fd" flect >/dev/null; then
6075 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6079 If you are not sure if they are secure, I can check but I'll need a
6080 username and password different from the one you are using right now.
6081 If you don't have such a username or don't want me to test, simply
6085 rp='Other username to test security of setuid scripts with?'
6090 case "$d_suidsafe" in
6091 '') echo "I'll assume setuid scripts are *not* secure." >&4
6094 echo "Well, the $hint value is *not* secure." >&4
6096 *) echo "Well, the $hint value *is* secure." >&4
6101 $rm -f reflect flect
6102 echo "#!$ls" >reflect
6103 chmod +x,u+s reflect
6106 echo '"su" will (probably) prompt you for '"$ans's password."
6107 su $ans -c './reflect >flect'
6108 if $contains "/dev/fd" flect >/dev/null; then
6109 echo "Okay, it looks like setuid scripts are secure." >&4
6112 echo "I don't think setuid scripts are secure." >&4
6117 rp='Does your kernel have *secure* setuid scripts?'
6120 [yY]*) val="$define";;
6125 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6126 echo "(That's for file descriptors, not floppy disks.)"
6132 $rm -f reflect flect
6134 : now see if they want to do setuid emulation
6137 case "$d_suidsafe" in
6140 echo "No need to emulate SUID scripts since they are secure here." >&4
6144 Some systems have disabled setuid scripts, especially systems where
6145 setuid scripts cannot be secure. On systems where setuid scripts have
6146 been disabled, the setuid/setgid bits on scripts are currently
6147 useless. It is possible for $package to detect those bits and emulate
6148 setuid/setgid in a secure fashion. This emulation will only work if
6149 setuid scripts have been disabled in your kernel.
6153 "$define") dflt=y ;;
6156 rp="Do you want to do setuid/setgid emulation?"
6159 [yY]*) val="$define";;
6167 : see if this is a malloc.h system
6168 : we want a real compile instead of Inhdr because some systems have a
6169 : malloc.h that just gives a compile error saying to use stdlib.h instead
6174 int main () { return 0; }
6177 if eval $compile; then
6178 echo "<malloc.h> found." >&4
6181 echo "<malloc.h> NOT found." >&4
6188 : check for void type
6190 echo "Checking to see how well your C compiler groks the void type..." >&4
6191 case "$voidflags" in
6203 extern void moo(); /* function returning void */
6204 void (*goo)(); /* ptr to func returning void */
6206 void *hue; /* generic ptr */
6219 int main() { sub(); }
6221 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6222 voidflags=$defvoidused
6223 echo "Good. It appears to support void to the level $package wants.">&4
6224 if $contains warning .out >/dev/null 2>&1; then
6225 echo "However, you might get some warnings that look like this:"
6229 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6230 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6231 echo "It supports 1..."
6232 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6233 echo "It also supports 2..."
6234 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6236 echo "And it supports 4 but not 8 definitely."
6238 echo "It doesn't support 4..."
6239 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6241 echo "But it supports 8."
6244 echo "Neither does it support 8."
6248 echo "It does not support 2..."
6249 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6251 echo "But it supports 4 and 8."
6253 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6255 echo "And it supports 4 but has not heard about 8."
6257 echo "However it supports 8 but not 4."
6262 echo "There is no support at all for void."
6267 case "$voidflags" in
6270 Support flag bits are:
6271 1: basic void declarations.
6272 2: arrays of pointers to functions returning void.
6273 4: operations between pointers to and addresses of void functions.
6274 8: generic void pointers.
6277 rp="Your void support flags add up to what?"
6284 : check for length of pointer
6288 echo "Checking to see how big your pointers are..." >&4
6289 if test "$voidflags" -gt 7; then
6290 echo '#define VOID_PTR char *' > try.c
6292 echo '#define VOID_PTR void *' > try.c
6302 printf("%d\n", (int)sizeof(VOID_PTR));
6307 if eval $compile_ok; then
6308 ptrsize=`$run ./try`
6309 echo "Your pointers are $ptrsize bytes long."
6312 echo "(I can't seem to compile the test program. Guessing...)" >&4
6313 rp="What is the size of a pointer (in bytes)?"
6320 case "$use64bitall" in
6321 "$define"|true|[yY]*)
6325 *** You have chosen a maximally 64-bit build,
6326 *** but your pointers are only 4 bytes wide.
6327 *** Please rerun Configure without -Duse64bitall.
6332 *** Since you have quads, you could possibly try with -Duse64bitint.
6337 *** Cannot continue, aborting.
6348 : determine whether to use malloc wrapping
6350 case "$usemallocwrap" in
6351 [yY]*|true|$define) dflt='y' ;;
6352 [nN]*|false|$undef) dflt='n' ;;
6353 *) case "$usedevel" in
6354 [yY]*|true|$define) dflt='y' ;;
6359 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6361 usemallocwrap="$ans"
6364 usemallocwrap="$define" ;;
6366 usemallocwrap="$undef" ;;
6369 : determine which malloc to compile in
6371 case "$usemymalloc" in
6372 [yY]*|true|$define) dflt='y' ;;
6373 [nN]*|false|$undef) dflt='n' ;;
6374 *) case "$ptrsize" in
6380 rp="Do you wish to attempt to use the malloc that comes with $package?"
6386 mallocsrc='malloc.c'
6387 mallocobj="malloc$_o"
6388 d_mymalloc="$define"
6391 : Remove malloc from list of libraries to use
6392 echo "Removing unneeded -lmalloc from library list" >&4
6393 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6396 echo "libs = $libs" >&4
6408 : compute the return types of malloc and free
6410 $cat >malloc.c <<END
6414 #include <sys/types.h>
6428 case "$malloctype" in
6430 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6437 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6441 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6448 echo "Your system uses $freetype free(), it would seem." >&4
6452 After $package is installed, you may wish to install various
6453 add-on modules and utilities. Typically, these add-ons will
6454 be installed under $prefix with the rest
6455 of this package. However, you may wish to install such add-ons
6456 elsewhere under a different prefix.
6458 If you do not wish to put everything under a single prefix, that's
6459 ok. You will be prompted for the individual locations; this siteprefix
6460 is only used to suggest the defaults.
6462 The default should be fine for most people.
6466 rp='Installation prefix to use for add-on modules and utilities?'
6467 : XXX Here might be another good place for an installstyle setting.
6468 case "$siteprefix" in
6470 *) dflt=$siteprefix ;;
6473 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6475 case "$siteprefix" in
6479 *) oldsiteprefix="$prefix";;
6484 siteprefixexp="$ansexp"
6486 : determine where site specific libraries go.
6487 : Usual default is /usr/local/lib/perl5/site_perl/$version
6488 : The default "style" setting is made in installstyle.U
6489 : XXX No longer works with Prefixit stuff.
6490 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6492 '') case "$installstyle" in
6493 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6494 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6502 The installation process will create a directory for
6503 site-specific extensions and modules. Most users find it convenient
6504 to place all site-specific files in this directory rather than in the
6505 main distribution directory.
6509 rp='Pathname for the site-specific library files?'
6513 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6515 : determine where site specific architecture-dependent libraries go.
6516 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6517 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6518 : sitelib may have an optional trailing /share.
6520 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6521 dflt="$dflt/$archname"
6526 set sitearch sitearch none
6530 The installation process will also create a directory for
6531 architecture-dependent site-specific extensions and modules.
6535 rp='Pathname for the site-specific architecture-dependent library files?'
6542 The installation process will also create a directory for
6543 vendor-supplied add-ons. Vendors who supply perl with their system
6544 may find it convenient to place all vendor-supplied files in this
6545 directory rather than in the main distribution directory. This will
6546 ease upgrades between binary-compatible maintenance versions of perl.
6548 Of course you may also use these directories in whatever way you see
6549 fit. For example, you might use them to access modules shared over a
6550 company-wide network.
6552 The default answer should be fine for most people.
6553 This causes further questions about vendor add-ons to be skipped
6554 and no vendor-specific directories will be configured for perl.
6557 rp='Do you want to configure vendor-specific add-on directories?'
6558 case "$usevendorprefix" in
6559 define|true|[yY]*) dflt=y ;;
6560 *) : User may have set vendorprefix directly on Configure command line.
6561 case "$vendorprefix" in
6570 rp='Installation prefix to use for vendor-supplied add-ons?'
6571 case "$vendorprefix" in
6573 *) dflt=$vendorprefix ;;
6576 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6578 case "$vendorprefix" in
6582 *) oldvendorprefix="$prefix";;
6586 usevendorprefix="$define"
6588 vendorprefixexp="$ansexp"
6590 *) usevendorprefix="$undef"
6596 case "$vendorprefix" in
6597 '') d_vendorlib="$undef"
6601 *) d_vendorlib="$define"
6602 : determine where vendor-supplied modules go.
6603 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6604 case "$vendorlib" in
6606 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6607 case "$installstyle" in
6608 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6609 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6612 *) dflt="$vendorlib"
6616 rp='Pathname for the vendor-supplied library files?'
6619 vendorlibexp="$ansexp"
6622 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6626 case "$vendorprefix" in
6627 '') d_vendorarch="$undef"
6631 *) d_vendorarch="$define"
6632 : determine where vendor-supplied architecture-dependent libraries go.
6633 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6634 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6635 : vendorlib may have an optional trailing /share.
6636 case "$vendorarch" in
6637 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6638 dflt="$dflt/$archname"
6640 *) dflt="$vendorarch" ;;
6643 rp='Pathname for vendor-supplied architecture-dependent files?'
6646 vendorarchexp="$ansexp"
6649 prefixvar=vendorarch
6652 : Final catch-all directories to search
6655 Lastly, you can have perl look in other directories for extensions and
6656 modules in addition to those already specified.
6657 These directories will be searched after
6661 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6662 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6664 case "$otherlibdirs" in
6665 ''|' ') dflt='none' ;;
6666 *) dflt="$otherlibdirs" ;;
6669 Enter a colon-separated set of extra paths to include in perl's @INC
6670 search path, or enter 'none' for no extra paths.
6674 rp='Colon-separated list of additional directories for perl to search?'
6677 ' '|''|none) otherlibdirs=' ' ;;
6678 *) otherlibdirs="$ans" ;;
6680 case "$otherlibdirs" in
6684 set d_perl_otherlibdirs
6687 : Cruising for prototypes
6689 echo "Checking out function prototypes..." >&4
6690 $cat >prototype.c <<EOCP
6695 int main(int argc, char *argv[]) {
6698 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6699 echo "Your C compiler appears to support function prototypes."
6702 echo "Your C compiler doesn't seem to understand function prototypes."
6709 case "$prototype" in
6711 *) ansi2knr='ansi2knr'
6716 This version of $package can only be compiled by a compiler that
6717 understands function prototypes. Unfortunately, your C compiler
6719 doesn't seem to understand them. Sorry about that.
6721 If GNU cc is available for your system, perhaps you could try that instead.
6723 Eventually, we hope to support building Perl with pre-ANSI compilers.
6724 If you would like to help in that effort, please contact <perlbug@perl.org>.
6726 Aborting Configure now.
6732 : determine where public executables go
6737 rp='Pathname where the public executables will reside?'
6739 if $test "X$ansexp" != "X$binexp"; then
6743 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6752 Perl can be built with extra modules or bundles of modules which
6753 will be fetched from the CPAN and installed alongside Perl.
6755 Notice that you will need access to the CPAN; either via the Internet,
6756 or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
6757 be asked later to configure the CPAN.pm module which will in turn do
6758 the installation of the rest of the extra modules or bundles.)
6760 Notice also that if the modules require any external software such as
6761 libraries and headers (the libz library and the zlib.h header for the
6762 Compress::Zlib module, for example) you MUST have any such software
6763 already installed, this configuration process will NOT install such
6766 If this doesn't make any sense to you, just accept the default '$dflt'.
6768 rp='Install any extra modules (y or n)?'
6774 Please list any extra modules or bundles to be installed from CPAN,
6775 with spaces between the names. The names can be in any format the
6776 'install' command of CPAN.pm will understand. (Answer 'none',
6777 without the quotes, to install no extra modules or bundles.)
6787 $rm -f ../extras.lst
6789 *) echo "(Saving the list of extras for later...)"
6790 echo "$extras" > ../extras.lst
6798 : determine where html pages for programs go
6799 set html1dir html1dir none
6803 If you wish to install html files for programs in $spackage, indicate
6804 the appropriate directory here. To skip installing html files,
6808 ''|none|$undef|' ') dflt=none ;;
6809 *) dflt=$html1dir ;;
6812 rp="Directory for the main $spackage html pages?"
6816 : Use ' ' for none so value is preserved next time through Configure
6817 $test X"$html1dir" = "X" && html1dir=' '
6819 : determine where html pages for libraries and modules go
6820 set html3dir html3dir none
6824 If you wish to install html files for modules associated with $spackage,
6825 indicate the appropriate directory here. To skip installing html files,
6828 : There is no obvious default. If they have specified html1dir, then
6829 : try to key off that, possibly changing .../html1 into .../html3.
6831 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6832 *) dflt=$html3dir ;;
6835 rp="Directory for the $spackage module html pages?"
6839 : Use ' ' for none so value is preserved next time through Configure
6840 $test X"$html3dir" = "X" && html3dir=' '
6842 : Find perl5.005 or later.
6843 echo "Looking for a previously installed perl5.005 or later... "
6845 '') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6846 : Check if this perl is recent and can load a simple module
6847 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6850 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6860 '') echo "None found. That's ok.";;
6861 *) echo "Using $perl5." ;;
6864 : Determine list of previous versions to include in @INC
6865 $cat > getverlist <<EOPL
6868 \$api_versionstring = "$api_versionstring";
6869 \$version = "$version";
6870 \$stem = "$sitelib_stem";
6871 \$archname = "$archname";
6873 $cat >> getverlist <<'EOPL'
6874 # Can't have leading @ because metaconfig interprets it as a command!
6875 ;@inc_version_list=();
6876 # XXX Redo to do opendir/readdir?
6879 ;@candidates = glob("5.*");
6885 # XXX ToDo: These comparisons must be reworked when two-digit
6886 # subversions come along, so that 5.7.10 compares as greater than
6887 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6888 # widespread that we can use the built-in version vectors rather
6889 # than reinventing them here. For 5.6.0, however, we must
6890 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6891 foreach $d (@candidates) {
6892 if ($d lt $version) {
6893 if ($d ge $api_versionstring) {
6894 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6896 elsif ($d ge "5.005") {
6897 unshift(@inc_version_list, grep { -d } $d);
6901 # Skip newer version. I.e. don't look in
6902 # 5.7.0 if we're installing 5.6.1.
6906 if (@inc_version_list) {
6907 print join(' ', @inc_version_list);
6910 # Blank space to preserve value for next Configure run.
6915 case "$inc_version_list" in
6916 '') if test -x "$perl5$exe_ext"; then
6917 dflt=`$perl5 getverlist`
6922 $undef) dflt='none' ;;
6923 *) eval dflt=\"$inc_version_list\" ;;
6926 ''|' ') dflt=none ;;
6933 In order to ease the process of upgrading, this version of perl
6934 can be configured to use modules built and installed with earlier
6935 versions of perl that were installed under $prefix. Specify here
6936 the list of earlier versions that this version of perl should check.
6937 If Configure detected no earlier versions of perl installed under
6938 $prefix, then the list will be empty. Answer 'none' to tell perl
6939 to not search earlier versions.
6941 The default should almost always be sensible, so if you're not sure,
6942 just accept the default.
6945 rp='List of earlier versions to include in @INC?'
6948 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6949 *) inc_version_list="$ans" ;;
6951 case "$inc_version_list" in
6953 inc_version_list_init='0';;
6954 *) inc_version_list_init=`echo $inc_version_list |
6955 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6960 : determine whether to install perl also as /usr/bin/perl
6963 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6965 Many scripts expect perl to be installed as /usr/bin/perl.
6967 If you want to, I can install the perl you are about to compile
6968 as /usr/bin/perl (in addition to $bin/perl).
6970 if test -f /usr/bin/perl; then
6973 However, please note that because you already have a /usr/bin/perl,
6974 overwriting that with a new Perl would very probably cause problems.
6975 Therefore I'm assuming you don't want to do that (unless you insist).
6978 case "$installusrbinperl" in
6979 "$define"|[yY]*) dflt='y';;
6985 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6988 case "$installusrbinperl" in
6989 "$undef"|[nN]*) dflt='n';;
6993 rp="Do you want to install perl as /usr/bin/perl?"
6996 [yY]*) val="$define";;
7002 set installusrbinperl
7006 echo "Checking for GNU C Library..." >&4
7008 /* Find out version of GNU C library. __GLIBC__ and __GLIBC_MINOR__
7009 alone are insufficient to distinguish different versions, such as
7010 2.0.6 and 2.0.7. The function gnu_get_libc_version() appeared in
7011 libc version 2.1.0. A. Dougherty, June 3, 2002.
7017 # ifdef __GLIBC_MINOR__
7018 # if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
7019 # include <gnu/libc-version.h>
7020 printf("%s\n", gnu_get_libc_version());
7022 printf("%d.%d\n", __GLIBC__, __GLIBC_MINOR__);
7025 printf("%d\n", __GLIBC__);
7034 if eval $compile_ok && $run ./try > glibc.ver; then
7036 gnulibc_version=`$cat glibc.ver`
7037 echo "You are using the GNU C Library version $gnulibc_version"
7041 echo "You are not using the GNU C Library"
7043 $rm -f try try.* glibc.ver
7047 : see if nm is to be used to determine whether a symbol is defined or not
7051 case "$d_gnulibc" in
7054 echo "nm probably won't work on the GNU C Library." >&4
7060 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7062 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
7063 echo "'nm' won't be sufficient on this sytem." >&4
7069 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7070 if $test $dflt -gt 20; then
7080 true|$define) dflt=y;;
7087 I can use $nm to extract the symbols from your C libraries. This
7088 is a time consuming task which may generate huge output on the disk (up
7089 to 3 megabytes) but that should make the symbols extraction faster. The
7090 alternative is to skip the 'nm' extraction part and to compile a small
7091 test program instead to determine whether each symbol is present. If
7092 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7093 this may be the best solution.
7095 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7098 rp="Shall I use $nm to extract C symbols from the libraries?"
7101 [Nn]*) usenm=false;;
7110 : nm options which may be necessary
7112 '') if $test -f /mach_boot; then
7114 elif $test -d /usr/ccs/lib; then
7115 nm_opt='-p' # Solaris (and SunOS?)
7116 elif $test -f /dgux; then
7118 elif $test -f /lib64/rld; then
7119 nm_opt='-p' # 64-bit Irix
7125 : nm options which may be necessary for shared libraries but illegal
7126 : for archive libraries. Thank you, Linux.
7127 case "$nm_so_opt" in
7128 '') case "$myuname" in
7130 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7131 nm_so_opt='--dynamic'
7140 : get list of predefined functions in a handy place
7145 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7151 *) for thislib in $libs; do
7154 : Handle C library specially below.
7157 thislib=`echo $thislib | $sed -e 's/^-l//'`
7158 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7160 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7162 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7164 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7166 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7168 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7170 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7175 libnames="$libnames $try"
7177 *) libnames="$libnames $thislib" ;;
7186 for xxx in $libpth; do
7187 $test -r $1 || set $xxx/libc.$so
7188 : The messy sed command sorts on library version numbers.
7190 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7191 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7193 s/[0-9][0-9]*/0000&/g
7194 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7197 $sort | $sed -e 's/^.* //'`
7200 $test -r $1 || set /usr/ccs/lib/libc.$so
7201 $test -r $1 || set /lib/libsys_s$_a
7207 if $test -r "$1"; then
7208 echo "Your (shared) C library seems to be in $1."
7210 elif $test -r /lib/libc && $test -r /lib/clib; then
7211 echo "Your C library seems to be in both /lib/clib and /lib/libc."
7213 libc='/lib/clib /lib/libc'
7214 if $test -r /lib/syslib; then
7215 echo "(Your math library is in /lib/syslib.)"
7216 libc="$libc /lib/syslib"
7218 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7219 echo "Your C library seems to be in $libc, as you said before."
7220 elif $test -r $incpath/usr/lib/libc$_a; then
7221 libc=$incpath/usr/lib/libc$_a;
7222 echo "Your C library seems to be in $libc. That's fine."
7223 elif $test -r /lib/libc$_a; then
7225 echo "Your C library seems to be in $libc. You're normal."
7227 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7229 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7230 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7231 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7233 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7235 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7238 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7240 if $test -r "$tans"; then
7241 echo "Your C library seems to be in $tans, of all places."
7247 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7251 If the guess above is wrong (which it might be if you're using a strange
7252 compiler, or your machine supports multiple models), you can override it here.
7257 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7259 I can't seem to find your C library. I've looked in the following places:
7262 $sed 's/^/ /' libpath
7265 None of these seems to contain your C library. I need to get its name...
7270 rp='Where is your C library?'
7275 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7276 set X `cat libnames`
7279 case $# in 1) xxx=file; esac
7280 echo "Extracting names from the following $xxx for later perusal:" >&4
7282 $sed 's/^/ /' libnames >&4
7284 $echo $n "This may take a while...$c" >&4
7288 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7289 *) $nm $nm_opt $file 2>/dev/null;;
7294 $grep fprintf libc.tmp > libc.ptf
7295 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7296 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7298 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *//p'";\
7300 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7302 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7304 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7306 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7308 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7310 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7312 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7314 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7316 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7318 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7320 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7322 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7323 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
7325 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7327 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7329 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7331 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7333 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7335 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7337 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7339 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7341 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7343 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7345 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7347 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7349 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7351 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
7353 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7356 $nm -p $* 2>/dev/null >libc.tmp
7357 $grep fprintf libc.tmp > libc.ptf
7358 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7359 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7365 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7367 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7368 for thisname in $libnames $libc; do
7369 $ar t $thisname >>libc.tmp
7371 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7373 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7374 # Repeat libc to extract forwarders to DLL entries too
7375 for thisname in $libnames $libc; do
7376 $ar tv $thisname >>libc.tmp
7377 # Revision 50 of EMX has bug in $ar.
7378 # it will not extract forwarders to DLL entries
7379 # Use emximp which will extract exactly them.
7380 emximp -o tmp.imp $thisname \
7382 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7383 < tmp.imp >>libc.tmp
7386 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7389 echo "$ar didn't seem to work right." >&4
7390 echo "Maybe this is a Cray...trying bld instead..." >&4
7391 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7393 for thisname in $libnames; do
7395 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7396 $ar t $thisname >>libc.tmp
7400 echo "That didn't work either. Giving up." >&4
7410 echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7411 dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7413 *) if $test -f /lib/syscalls.exp; then
7415 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7416 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
7422 $rm -f libnames libpath
7424 : see if dld is available
7428 : is a C symbol defined?
7431 -v) tf=libc.tmp; tdc="";;
7432 -a) tf=libc.tmp; tdc="[]";;
7433 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7436 case "$reuseval-$4" in
7438 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7443 if $test "$runnm" = true; then
7444 if $contains $tlook $tf >/dev/null 2>&1; then
7446 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7447 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7448 $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7449 $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7450 $rm -f try$_exe try.c core core.* try.core;
7453 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7454 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7455 $rm -f try$_exe try.c;
7460 $define) tval=true;;
7467 : define an is-in-libc? function
7468 inlibc='echo " "; td=$define; tu=$undef;
7469 sym=$1; var=$2; eval "was=\$$2";
7471 case "$reuseval$was" in
7481 echo "$sym() found." >&4;
7482 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7484 echo "$sym() NOT found." >&4;
7485 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7489 $define) echo "$sym() found." >&4;;
7490 *) echo "$sym() NOT found." >&4;;
7494 : see if dlopen exists
7501 : determine which dynamic loading, if any, to compile in
7503 dldir="ext/DynaLoader"
7516 $define) dflt='y' ;;
7519 $define) dflt='y' ;;
7521 : Does a dl_xxx.xs file exist for this operating system
7522 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7525 rp="Do you wish to use dynamic loading?"
7532 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7533 dflt="$dldir/dl_${osname}.xs"
7534 elif $test "$d_dlopen" = "$define" ; then
7535 dflt="$dldir/dl_dlopen.xs"
7536 elif $test "$i_dld" = "$define" ; then
7537 dflt="$dldir/dl_dld.xs"
7542 *) dflt="$dldir/$dlsrc"
7545 echo "The following dynamic loading files are available:"
7546 : Can not go over to $dldir because getfile has path hard-coded in.
7547 tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7548 rp="Source file to use for dynamic loading"
7554 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7558 Some systems may require passing special flags to $cc -c to
7559 compile modules that will be used to create a shared library.
7560 To use no flags, say "none".
7563 case "$cccdlflags" in
7564 '') case "$gccversion" in
7565 '') case "$osname" in
7567 next) dflt='none' ;;
7568 irix*) dflt='-KPIC' ;;
7569 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7570 sunos) dflt='-pic' ;;
7574 *) case "$osname" in
7575 darwin) dflt='none' ;;
7576 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7581 *) dflt="$cccdlflags" ;;
7583 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7586 none) cccdlflags=' ' ;;
7587 *) cccdlflags="$ans" ;;
7592 Some systems use ld to create libraries that can be dynamically loaded,
7593 while other systems (such as those using ELF) use $cc.
7597 '') $cat >try.c <<EOM
7598 /* Test for whether ELF binaries are produced */
7606 int i = open("a.out",O_RDONLY);
7609 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7610 exit(0); /* succeed (yes, it's ELF) */
7615 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7617 You appear to have ELF support. I'll use $cc to build dynamic libraries.
7621 echo "I'll use ld to build dynamic libraries."
7630 rp="What command should be used to create dynamic libraries?"
7636 Some systems may require passing special flags to $ld to create a
7637 library that can be dynamically loaded. If your ld flags include
7638 -L/other/path options to locate libraries outside your loader's normal
7639 search path, you may need to specify those -L options here as well. To
7640 use no flags, say "none".
7643 case "$lddlflags" in
7644 '') case "$osname" in
7645 beos) dflt='-nostart' ;;
7647 case "$gccversion" in
7648 '') dflt="$dflt +vnocompatwarnings" ;;
7651 linux|irix*|gnu*) dflt='-shared' ;;
7652 next) dflt='none' ;;
7653 solaris) dflt='-G' ;;
7654 sunos) dflt='-assert nodefinitions' ;;
7655 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7659 *) dflt="$lddlflags" ;;
7662 : Try to guess additional flags to pick up local libraries.
7663 : Be careful not to append to a plain 'none'
7667 for thisflag in $ldflags; do
7672 *) dflt="$dflt $thisflag" ;;
7679 ''|' ') dflt='none' ;;
7682 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7685 none) lddlflags=' ' ;;
7686 *) lddlflags="$ans" ;;
7691 Some systems may require passing special flags to $cc to indicate that
7692 the resulting executable will use dynamic linking. To use no flags,
7696 case "$ccdlflags" in
7697 '') case "$osname" in
7698 linux|hpux|gnu*) dflt='-Wl,-E' ;;
7699 next|sunos) dflt='none' ;;
7703 *) dflt="$ccdlflags" ;;
7705 rp="Any special flags to pass to $cc to use dynamic linking?"
7708 none) ccdlflags=' ' ;;
7709 *) ccdlflags="$ans" ;;
7723 # No dynamic loading being used, so don't bother even to prompt.
7726 *) case "$useshrplib" in
7727 '') case "$osname" in
7728 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7730 also='Building a shared libperl is required for dynamic loading to work on your system.'
7735 also='Building a shared libperl is needed for MAB support.'
7753 The perl executable is normally obtained by linking perlmain.c with
7754 libperl${_a}, any static extensions (usually just DynaLoader), and
7755 any other libraries needed on this system (such as -lm, etc.). Since
7756 your system supports dynamic loading, it is probably possible to build
7757 a shared libperl.$so. If you will have more than one executable linked
7758 to libperl.$so, this will significantly reduce the size of each
7759 executable, but it may have a noticeable effect on performance. The
7760 default is probably sensible for your system.
7764 rp="Build a shared libperl.$so (y/n)"
7768 useshrplib='true' ;;
7769 *) useshrplib='false' ;;
7774 case "$useshrplib" in
7778 # Figure out a good name for libperl.so. Since it gets stored in
7779 # a version-specific architecture-dependent library, the version
7780 # number isn't really that important, except for making cc/ld happy.
7782 # A name such as libperl.so.3.1
7783 majmin="libperl.$so.$patchlevel.$subversion"
7784 # A name such as libperl.so.301
7785 majonly=`echo $patchlevel $subversion |
7786 $awk '{printf "%d%02d", $1, $2}'`
7787 majonly=libperl.$so.$majonly
7788 # I'd prefer to keep the os-specific stuff here to a minimum, and
7789 # rely on figuring it out from the naming of libc.
7790 case "${osname}${osvers}" in
7793 # XXX How handle the --version stuff for MAB?
7795 linux*|gnu*) # ld won't link with a bare -lperl otherwise.
7798 cygwin*) # ld links against an importlib
7799 dflt=libperl$lib_ext
7801 *) # Try to guess based on whether libc has major.minor.
7803 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7804 *libc.$so.[0-9]*) dflt=$majonly ;;
7805 *) dflt=libperl.$so ;;
7815 I need to select a good name for the shared libperl. If your system uses
7816 library names with major and minor numbers, then you might want something
7817 like $majmin. Alternatively, if your system uses a single version
7818 number for shared libraries, then you might want to use $majonly.
7819 Or, your system might be quite happy with a simple libperl.$so.
7821 Since the shared libperl will get installed into a version-specific
7822 architecture-dependent directory, the version number of the shared perl
7823 library probably isn't important, so the default should be o.k.
7826 rp='What name do you want to give to the shared libperl?'
7829 echo "Ok, I'll use $libperl"
7832 libperl="libperl${_a}"
7836 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7840 WARNING: Use of the shrpdir variable for the installation location of
7841 the shared $libperl is not supported. It was never documented and
7842 will not work in this version. Let me (perlbug@perl.org)
7843 know of any problems this may cause.
7849 But your current setting of $shrpdir is
7850 the default anyway, so it's harmless.
7855 Further, your current attempted setting of $shrpdir
7856 conflicts with the value of $archlibexp/CORE
7857 that installperl will use.
7864 # How will the perl executable find the installed shared $libperl?
7865 # Add $xxx to ccdlflags.
7866 # If we can't figure out a command-line option, use $shrpenv to
7867 # set env LD_RUN_PATH. The main perl makefile uses this.
7868 shrpdir=$archlibexp/CORE
7871 if "$useshrplib"; then
7874 # We'll set it in Makefile.SH...
7879 freebsd|netbsd|openbsd|interix|dragonfly)
7880 xxx="-Wl,-R$shrpdir"
7882 bsdos|linux|irix*|dec_osf|gnu*)
7883 xxx="-Wl,-rpath,$shrpdir"
7886 # next doesn't like the default...
7889 # beos doesn't like the default, either.
7892 # hpux doesn't like the default, either.
7893 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7896 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7902 # Only add $xxx if it isn't already in ccdlflags.
7903 case " $ccdlflags " in
7905 *) ccdlflags="$ccdlflags $xxx"
7908 Adding $xxx to the flags
7909 passed to $ld so that the perl executable will find the
7910 installed shared $libperl.
7918 # Fix ccdlflags in AIX for building external extensions.
7919 # (For building Perl itself bare -bE:perl.exp is needed,
7920 # Makefile.SH takes care of this.)
7922 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7924 # Respect a hint or command-line value.
7926 '') shrpenv="$tmp_shrpenv" ;;
7928 case "$ldlibpthname" in
7929 '') ldlibpthname=LD_LIBRARY_PATH ;;
7930 none) ldlibpthname='' ;;
7933 : determine where manual pages are on this system
7937 syspath='/usr/share/man/man1 /usr/man/man1'
7938 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7939 syspath="$syspath /usr/man/u_man/man1"
7940 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7941 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7942 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7943 sysman=`./loc . /usr/man/man1 $syspath`
7946 if $test -d "$sysman"; then
7947 echo "System manual is in $sysman." >&4
7949 echo "Could not find manual pages in source form." >&4
7952 : determine where manual pages go
7953 set man1dir man1dir none
7957 $spackage has manual pages available in source form.
7961 echo "However, you don't have nroff, so they're probably useless to you."
7963 '') man1dir="none";;
7966 echo "If you don't want the manual sources installed, answer 'none'."
7971 lookpath="$prefixexp/share/man/man1"
7972 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7973 lookpath="$lookpath $prefixexp/man/p_man/man1"
7974 lookpath="$lookpath $prefixexp/man/u_man/man1"
7975 lookpath="$lookpath $prefixexp/man/man.1"
7977 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7978 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7988 rp="Where do the main $spackage manual pages (source) go?"
7990 if $test "X$man1direxp" != "X$ansexp"; then
8001 : What suffix to use on installed man pages
8008 rp="What suffix should be used for the main $spackage man pages?"
8010 '') case "$man1dir" in
8024 *) dflt="$man1ext";;
8031 : see if we can have long filenames
8033 first=123456789abcdef
8035 if (echo hi >$first) 2>/dev/null; then
8036 if $test -f 123456789abcde; then
8037 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
8040 echo 'You can have filenames longer than 14 characters.'>&4
8045 You can't have filenames longer than 14 chars.
8046 You can't even think about them!
8052 $rm -rf 123456789abcde*
8054 : determine where library module manual pages go
8055 set man3dir man3dir none
8059 $spackage has manual pages for many of the library modules.
8065 However, you don't have nroff, so they're probably useless to you.
8068 '') man3dir="none";;
8072 case "$d_flexfnam" in
8075 However, your system can't handle the long file names like File::Basename.3.
8078 '') man3dir="none";;
8082 echo "If you don't want the manual sources installed, answer 'none'."
8083 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8085 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8086 if $test -d "$privlib/man/man3"; then
8089 WARNING: Previous versions of perl installed man3 pages into
8090 $privlib/man/man3. This version will suggest a
8091 new default of $dflt.
8095 rp='Do you wish to preserve the old behavior?(y/n)'
8098 y*) dflt="$privlib/man/man3" ;;
8103 *) dflt="$man3dir" ;;
8110 rp="Where do the $package library man pages (source) go?"
8120 : What suffix to use on installed man pages
8126 rp="What suffix should be used for the $package library man pages?"
8128 '') case "$man3dir" in
8142 *) dflt="$man3ext";;
8149 : see if we have to deal with yellow pages, now NIS.
8150 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8151 if $test -f /usr/etc/nibindd; then
8153 echo "I'm fairly confident you're on a NeXT."
8155 rp='Do you get the hosts file via NetInfo?'
8164 y*) hostcat='nidump hosts .';;
8165 *) case "$hostcat" in
8166 nidump*) hostcat='';;
8176 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8184 rp='Are you getting the hosts file via yellow pages?'
8187 y*) hostcat='ypcat hosts';;
8188 *) hostcat='cat /etc/hosts';;
8194 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8197 '') test -f /etc/group && groupcat='cat /etc/group';;
8200 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8203 : now get the host name
8205 echo "Figuring out host name..." >&4
8206 case "$myhostname" in
8208 echo 'Maybe "hostname" will work...'
8209 if tans=`sh -c hostname 2>&1` ; then
8217 if $test "$cont"; then
8219 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
8220 if tans=`cat /etc/systemid 2>&1` ; then
8222 phostname='cat /etc/systemid'
8223 echo "Whadyaknow. Xenix always was a bit strange..."
8226 elif $test -r /etc/systemid; then
8227 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8230 if $test "$cont"; then
8231 echo 'No, maybe "uuname -l" will work...'
8232 if tans=`sh -c 'uuname -l' 2>&1` ; then
8234 phostname='uuname -l'
8236 echo 'Strange. Maybe "uname -n" will work...'
8237 if tans=`sh -c 'uname -n' 2>&1` ; then
8239 phostname='uname -n'
8241 echo 'Oh well, maybe I can mine it out of whoami.h...'
8242 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8243 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8244 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8246 case "$myhostname" in
8247 '') echo "Does this machine have an identity crisis or something?"
8250 echo "Well, you said $myhostname before..."
8251 phostname='echo $myhostname';;
8257 case "$myhostname" in
8258 '') myhostname=noname ;;
8260 : you do not want to know about this
8265 if $test "$myhostname" ; then
8267 rp='Your host name appears to be "'$myhostname'".'" Right?"
8275 : bad guess or no guess
8276 while $test "X$myhostname" = X ; do
8278 rp="Please type the (one word) name of your host:"
8283 : translate upper to lower if necessary
8284 case "$myhostname" in
8286 echo "(Normalizing case in your host name)"
8287 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8291 case "$myhostname" in
8293 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8294 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8295 echo "(Trimming domain name from host name--host name is now $myhostname)"
8297 *) case "$mydomain" in
8300 test "X$hostcat" = "Xypcat hosts" &&
8301 ypmatch "$myhostname" hosts 2>/dev/null |\
8302 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
8305 test "X$hostcat" != "X" &&
8306 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
8307 /[ ]$myhostname[ . ]/p" > hosts
8310 if $test -f hosts; then
8311 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
8312 END { print sum }" hosts` = x1 || tmp_re="[ ]"
8313 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8314 hosts | $sort | $uniq | \
8315 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8316 case `$echo X$dflt` in
8317 X*\ *) echo "(Several hosts in the database matched hostname)"
8320 X.) echo "(You do not have fully-qualified names in the hosts database)"
8324 echo "(I cannot locate a hosts database anywhere)"
8329 tans=`./loc resolv.conf X /etc /usr/etc`
8330 if $test -f "$tans"; then
8331 echo "(Attempting domain name extraction from $tans)"
8332 dflt=.`$sed -n -e 's/ / /g' \
8333 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
8334 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8336 .) dflt=.`$sed -n -e 's/ / /g' \
8337 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
8338 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8345 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8346 dflt=.`sh -c domainname 2>/dev/null`
8349 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8353 case "$dflt$osname" in
8354 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8355 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8359 .) echo "(Lost all hope -- silly guess then)"
8365 *) dflt="$mydomain";;
8369 rp="What is your domain name?"
8379 : translate upper to lower if necessary
8382 echo "(Normalizing case in your domain name)"
8383 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8387 : a little sanity check here
8388 case "$phostname" in
8391 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8392 $myhostname$mydomain|$myhostname) ;;
8394 case "$phostname" in
8396 echo "(That doesn't agree with your whoami.h file, by the way.)"
8399 echo "(That doesn't agree with your $phostname command, by the way.)"
8409 I need to get your e-mail address in Internet format if possible, i.e.
8410 something like user@host.domain. Please answer accurately since I have
8411 no easy means to double check it. The default value provided below
8412 is most probably close to reality but may not be valid from outside
8413 your organization...
8417 while test "$cont"; do
8419 '') dflt="$cf_by@$myhostname$mydomain";;
8420 *) dflt="$cf_email";;
8422 rp='What is your e-mail address?'
8428 rp='Address does not look like an Internet one. Use it anyway?'
8444 If you or somebody else will be maintaining perl at your site, please
8445 fill in the correct e-mail address here so that they may be contacted
8446 if necessary. Currently, the "perlbug" program included with perl
8447 will send mail to this address in addition to perlbug@perl.org. You may
8448 enter "none" for no administrator.
8451 case "$perladmin" in
8452 '') dflt="$cf_email";;
8453 *) dflt="$perladmin";;
8455 rp='Perl administrator e-mail address'
8459 : determine whether to only install version-specific parts.
8462 Do you want to install only the version-specific parts of the perl
8463 distribution? Usually you do *not* want to do this.
8465 case "$versiononly" in
8466 "$define"|[Yy]*|true) dflt='y' ;;
8469 rp="Do you want to install only the version-specific parts of perl?"
8472 [yY]*) val="$define";;
8478 case "$versiononly" in
8479 "$define") inc_version_list=''
8480 inc_version_list_init=0
8484 : figure out how to guarantee perl startup
8485 case "$startperl" in
8487 case "$sharpbang" in
8491 I can use the #! construct to start perl on your system. This will
8492 make startup of perl scripts faster, but may cause problems if you
8493 want to share those scripts and perl is not in a standard place
8494 ($binexp/perl) on all your platforms. The alternative is to force
8495 a shell by starting the script with a single ':' character.
8498 case "$versiononly" in
8499 "$define") dflt="$binexp/perl$version";;
8500 *) dflt="$binexp/perl";;
8502 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8505 none) startperl=": # use perl";;
8506 *) startperl="#!$ans"
8507 if $test 30 -lt `echo "$ans" | wc -c`; then
8510 WARNING: Some systems limit the #! command to 32 characters.
8511 If you experience difficulty running Perl scripts with #!, try
8512 installing Perl in a directory with a shorter pathname.
8518 *) startperl=": # use perl"
8523 echo "I'll use $startperl to start perl scripts."
8525 : figure best path for perl in scripts
8528 case "$versiononly" in
8529 "$define") perlpath="$binexp/perl$version";;
8530 *) perlpath="$binexp/perl";;
8532 case "$startperl" in
8537 I will use the "eval 'exec'" idiom to start Perl on your system.
8538 I can use the full path of your Perl binary for this purpose, but
8539 doing so may cause problems if you want to share those scripts and
8540 Perl is not always in a standard place ($binexp/perl).
8544 rp="What path shall I use in \"eval 'exec'\"?"
8551 case "$startperl" in
8553 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8556 : determine where public executable scripts go
8557 set scriptdir scriptdir
8559 case "$scriptdir" in
8562 : guess some guesses
8563 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8564 $test -d /usr/share/bin && dflt=/usr/share/bin
8565 $test -d /usr/local/script && dflt=/usr/local/script
8566 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8567 $test -d $prefixexp/script && dflt=$prefixexp/script
8571 *) dflt="$scriptdir"
8576 Some installations have a separate directory just for executable scripts so
8577 that they can mount it across multiple architectures but keep the scripts in
8578 one spot. You might, for example, have a subdirectory of /usr/share for this.
8579 Or you might just lump your scripts in with all your other executables.
8583 rp='Where do you keep publicly executable scripts?'
8585 if $test "X$ansexp" != "X$scriptdirexp"; then
8590 : A little fix up for an irregularly named variable.
8591 installscript="$installscriptdir"
8594 : determine where add-on public executables go
8596 '') dflt=$siteprefix/bin ;;
8600 rp='Pathname where the add-on public executables should be installed?'
8605 : determine where add-on html pages go
8606 : There is no standard location, so try to copy the previously-selected
8607 : directory structure for the core html pages.
8608 case "$sitehtml1dir" in
8609 '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8610 *) dflt=$sitehtml1dir ;;
8613 ''|' ') dflt=none ;;
8616 rp='Pathname where the site-specific html pages should be installed?'
8618 prefixvar=sitehtml1dir
8621 : determine where add-on library html pages go
8622 : There is no standard location, so try to copy the previously-selected
8623 : directory structure for the core html pages.
8624 case "$sitehtml3dir" in
8625 '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8626 *) dflt=$sitehtml3dir ;;
8629 ''|' ') dflt=none ;;
8632 rp='Pathname where the site-specific library html pages should be installed?'
8634 prefixvar=sitehtml3dir
8637 : determine where add-on manual pages go
8638 case "$siteman1dir" in
8639 '') dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8640 *) dflt=$siteman1dir ;;
8643 ''|' ') dflt=none ;;
8646 rp='Pathname where the site-specific manual pages should be installed?'
8648 prefixvar=siteman1dir
8651 : determine where add-on library man pages go
8652 case "$siteman3dir" in
8653 '') dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8654 *) dflt=$siteman3dir ;;
8657 ''|' ') dflt=none ;;
8660 rp='Pathname where the site-specific library manual pages should be installed?'
8662 prefixvar=siteman3dir
8665 : determine where add-on public executable scripts go
8666 case "$sitescript" in
8667 '') dflt=$siteprefix/script
8668 $test -d $dflt || dflt=$sitebin ;;
8669 *) dflt="$sitescript" ;;
8672 rp='Pathname where add-on public executable scripts should be installed?'
8674 prefixvar=sitescript
8677 case "$usefaststdio" in
8678 $define|true|[yY]*|'')
8679 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8689 Perl can be built to use 'fast stdio', which means using the stdio
8690 library but also directly manipulating the stdio buffers to enable
8691 faster I/O. Using stdio is better for backward compatibility (especially
8692 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8693 interface has been preferred instead of stdio.
8695 If this doesn't make any sense to you, just accept the default '$dflt'.
8697 rp='Use the "fast stdio" if available?'
8700 y|Y) val="$define" ;;
8707 : define an is-a-typedef? function
8708 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8710 "") inclist="sys/types.h";;
8712 eval "varval=\$$var";
8716 for inc in $inclist; do
8717 echo "#include <$inc>" >>temp.c;
8719 echo "#ifdef $type" >> temp.c;
8720 echo "printf(\"We have $type\");" >> temp.c;
8721 echo "#endif" >> temp.c;
8722 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8723 if $contains $type temp.E >/dev/null 2>&1; then
8729 *) eval "$var=\$varval";;
8732 : define an is-a-typedef? function that prompts if the type is not available.
8733 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8735 "") inclist="sys/types.h";;
8737 eval "varval=\$$var";
8741 for inc in $inclist; do
8742 echo "#include <$inc>" >>temp.c;
8744 echo "#ifdef $type" >> temp.c;
8745 echo "printf(\"We have $type\");" >> temp.c;
8746 echo "#endif" >> temp.c;
8747 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8749 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8750 if $contains $type temp.E >/dev/null 2>&1; then
8751 echo "$type found." >&4;
8754 echo "$type NOT found." >&4;
8760 *) eval "$var=\$varval";;
8763 : see what type lseek is declared as in the kernel
8764 rp="What is the type used for lseek's offset on this system?"
8765 set off_t lseektype long stdio.h sys/types.h
8769 echo "Checking to see how big your file offsets are..." >&4
8771 #include <sys/types.h>
8775 printf("%d\n", (int)sizeof($lseektype));
8780 if eval $compile_ok; then
8781 lseeksize=`$run ./try`
8782 echo "Your file offsets are $lseeksize bytes long."
8786 echo "(I can't seem to compile the test program. Guessing...)"
8787 rp="What is the size of your file offsets (in bytes)?"
8793 : see what type file positions are declared as in the library
8794 rp="What is the type for file position used by fsetpos()?"
8795 set fpos_t fpostype long stdio.h sys/types.h
8800 *_t) zzz="$fpostype" ;;
8803 echo "Checking the size of $zzz..." >&4
8805 #include <sys/types.h>
8812 printf("%d\n", (int)sizeof($fpostype));
8817 if eval $compile_ok; then
8821 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8824 echo "Your $zzz is $fpossize bytes long."
8830 echo "(I can't compile the test program. Guessing...)" >&4
8831 rp="What is the size of your file positions (in bytes)?"
8836 # Backward compatibility (uselfs is deprecated).
8838 "$define"|true|[yY]*)
8841 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8843 uselargefiles="$define"
8847 case "$lseeksize:$fpossize" in
8850 You can have files larger than 2 gigabytes.
8853 *) case "$uselargefiles" in
8854 "$undef"|false|[nN]*) dflt='n' ;;
8859 Perl can be built to understand large files (files larger than 2 gigabytes)
8860 on some systems. To do so, Configure can be run with -Duselargefiles.
8862 If this doesn't make any sense to you, just accept the default '$dflt'.
8864 rp='Try to understand large files, if available?'
8867 y|Y) val="$define" ;;
8874 : Look for a hint-file generated 'call-back-unit'. If the
8875 : user has specified that a large files perl is to be built,
8876 : we may need to set or change some other defaults.
8877 if $test -f uselargefiles.cbu; then
8878 echo "Your platform has some specific hints regarding large file builds, using them..."
8879 . ./uselargefiles.cbu
8881 case "$uselargefiles" in
8883 if $test -f uselargefiles.cbu; then
8885 echo "Rechecking to see how big your file offsets are..." >&4
8887 #include <sys/types.h>
8891 printf("%d\n", (int)sizeof($lseektype));
8896 if eval $compile_ok; then
8897 lseeksize=`$run ./try`
8898 $echo "Your file offsets are now $lseeksize bytes long."
8902 echo "(I can't seem to compile the test program. Guessing...)"
8903 rp="What is the size of your file offsets (in bytes)?"
8908 *_t) zzz="$fpostype" ;;
8911 $echo $n "Rechecking the size of $zzz...$c" >&4
8913 #include <sys/types.h>
8920 printf("%d\n", (int)sizeof($fpostype));
8925 if eval $compile_ok; then
8930 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8933 echo " $fpossize bytes." >&4
8939 echo "(I can't compile the test program. Guessing...)" >&4
8940 rp="What is the size of your file positions (in bytes)?"
8949 # probably will refer to
8950 # $archlib $privlib $sitearch $sitelib $vendorarch $vendorlib
8952 userelocatableinc=undef
8954 case "$vendorprefix" in
8955 '') d_vendorbin="$undef"
8959 *) d_vendorbin="$define"
8960 : determine where vendor-supplied executables go.
8961 case "$vendorbin" in
8962 '') dflt=$vendorprefix/bin ;;
8963 *) dflt="$vendorbin" ;;
8966 rp='Pathname for the vendor-supplied executables directory?'
8969 vendorbinexp="$ansexp"
8975 case "$vendorprefix" in
8976 '') vendorhtml1dir=''
8977 vendorhtml1direxp=''
8979 *) : determine where vendor-supplied html pages go.
8980 : There is no standard location, so try to copy the previously-selected
8981 : directory structure for the core html pages.
8982 : XXX Better default suggestions would be welcome.
8983 case "$vendorhtml1dir" in
8984 '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
8985 *) dflt=$vendorhtml1dir ;;
8988 ''|' ') dflt=none ;;
8991 rp='Pathname for the vendor-supplied html pages?'
8993 vendorhtml1dir="$ans"
8994 vendorhtml1direxp="$ansexp"
8997 : Use ' ' for none so value is preserved next time through Configure
8998 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
8999 prefixvar=vendorhtml1dir
9002 case "$vendorprefix" in
9003 '') vendorhtml3dir=''
9004 vendorhtml3direxp=''
9006 *) : determine where vendor-supplied module html pages go.
9007 : There is no standard location, so try to copy the previously-selected
9008 : directory structure for the core html pages.
9009 : XXX Better default suggestions would be welcome.
9010 case "$vendorhtml3dir" in
9011 '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9012 *) dflt=$vendorhtml3dir ;;
9015 ''|' ') dflt=none ;;
9018 rp='Pathname for the vendor-supplied html pages?'
9020 vendorhtml3dir="$ans"
9021 vendorhtml3direxp="$ansexp"
9024 : Use ' ' for none so value is preserved next time through Configure
9025 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9026 prefixvar=vendorhtml3dir
9029 case "$vendorprefix" in
9030 '') vendorman1dir=''
9033 *) : determine where vendor-supplied manual pages go.
9034 case "$vendorman1dir" in
9035 '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9036 *) dflt=$vendorman1dir ;;
9039 ''|' ') dflt=none ;;
9042 rp='Pathname for the vendor-supplied manual section 1 pages?'
9044 vendorman1dir="$ans"
9045 vendorman1direxp="$ansexp"
9048 : Use ' ' for none so value is preserved next time through Configure
9049 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9050 prefixvar=vendorman1dir
9053 case "$vendorprefix" in
9054 '') vendorman3dir=''
9057 *) : determine where vendor-supplied module manual pages go.
9058 case "$vendorman3dir" in
9059 '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9060 *) dflt=$vendorman3dir ;;
9063 ''|' ') dflt=none ;;
9066 rp='Pathname for the vendor-supplied manual section 3 pages?'
9068 vendorman3dir="$ans"
9069 vendorman3direxp="$ansexp"
9072 : Use ' ' for none so value is preserved next time through Configure
9073 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9074 prefixvar=vendorman3dir
9077 case "$vendorprefix" in
9078 '') d_vendorscript="$undef"
9082 *) d_vendorscript="$define"
9083 : determine where vendor-supplied scripts go.
9084 case "$vendorscript" in
9085 '') dflt=$vendorprefix/script
9086 $test -d $dflt || dflt=$vendorbin ;;
9087 *) dflt="$vendorscript" ;;
9091 The installation process will create a directory for
9092 vendor-supplied scripts.
9096 rp='Pathname for the vendor-supplied scripts directory?'
9099 vendorscriptexp="$ansexp"
9102 prefixvar=vendorscript
9105 : see if qgcvt exists
9111 if $test X"$d_longdbl" = X"$define"; then
9113 echo "Checking how to print long doubles..." >&4
9115 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9116 $cat >try.c <<'EOCP'
9117 #include <sys/types.h>
9121 printf("%.3f\n", d);
9125 if eval $compile; then
9129 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9130 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9131 echo "We will use %f."
9137 if $test X"$sPRIfldbl" = X; then
9138 $cat >try.c <<'EOCP'
9139 #include <sys/types.h>
9142 long double d = 123.456;
9143 printf("%.3Lf\n", d);
9147 if eval $compile; then
9151 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9152 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9153 echo "We will use %Lf."
9159 if $test X"$sPRIfldbl" = X; then
9160 $cat >try.c <<'EOCP'
9161 #include <sys/types.h>
9164 long double d = 123.456;
9165 printf("%.3llf\n", d);
9169 if eval $compile; then
9173 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9174 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9175 echo "We will use %llf."
9181 if $test X"$sPRIfldbl" = X; then
9182 $cat >try.c <<'EOCP'
9183 #include <sys/types.h>
9186 long double d = 123.456;
9187 printf("%.3lf\n", d);
9191 if eval $compile; then
9195 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9196 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9197 echo "We will use %lf."
9203 if $test X"$sPRIfldbl" = X; then
9204 echo "Cannot figure out how to print long doubles." >&4
9206 sSCNfldbl=$sPRIfldbl # expect consistency
9213 case "$sPRIfldbl" in
9214 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9215 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9216 d_SCNfldbl="$undef";
9218 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9219 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9220 d_SCNfldbl="$define";
9224 : Check how to convert floats to strings.
9226 if test "X$d_Gconvert" = X; then
9229 echo "Checking for an efficient way to convert floats to strings."
9231 case "$uselongdouble" in
9232 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9234 case "$d_longdbl" in
9235 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9237 case "$d_PRIgldbl" in
9238 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
9242 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9243 char *myname = "gconvert";
9246 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9247 char *myname = "gcvt";
9250 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9251 char *myname = "qgcvt";
9252 #define DOUBLETYPE long double
9255 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9257 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9259 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9262 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9264 char *myname = "sprintf";
9268 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9269 #define DOUBLETYPE long double
9271 #define DOUBLETYPE double
9277 #define I_STDLIB $i_stdlib
9283 checkit(expect, got)
9287 if (strcmp(expect, got)) {
9288 printf("%s oddity: Expected %s, got %s\n",
9289 myname, expect, got);
9299 /* This must be 1st test on (which?) platform */
9300 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9301 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9302 checkit("0.1", buf);
9304 Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9305 checkit("0.01", buf);
9307 Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9308 checkit("0.001", buf);
9310 Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9311 checkit("0.0001", buf);
9313 Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9314 if (strlen(buf) > 5)
9315 checkit("9e-005", buf); /* for Microsoft ?? */
9317 checkit("9e-05", buf);
9319 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9322 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9323 checkit("1.1", buf);
9325 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9326 checkit("1.01", buf);
9328 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9329 checkit("1.001", buf);
9331 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9332 checkit("1.0001", buf);
9334 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9335 checkit("1.00001", buf);
9337 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9338 checkit("1.000001", buf);
9340 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9343 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9346 /* Some Linux gcvt's give 1.e+5 here. */
9347 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9348 checkit("100000", buf);
9350 /* Some Linux gcvt's give -1.e+5 here. */
9351 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9352 checkit("-100000", buf);
9354 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9355 checkit("123.456", buf);
9357 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9358 Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9359 /* 34 should be enough to scare even long double
9360 * places into using the e notation. */
9361 if (strlen(buf) > 5)
9362 checkit("1e+034", buf); /* for Microsoft */
9364 checkit("1e+34", buf);
9366 /* For Perl, if you add additional tests here, also add them to
9367 * t/base/num.t for benefit of platforms not using Configure or
9368 * overriding d_Gconvert */
9373 : first add preferred functions to our list
9375 for xxx_convert in $gconvert_preference; do
9376 case $xxx_convert in
9377 gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9378 *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9381 : then add any others
9382 for xxx_convert in gconvert gcvt sprintf; do
9385 *) xxx_list="$xxx_list $xxx_convert" ;;
9389 case "$d_longdbl$uselongdouble" in
9391 : again, add prefered functions to our list first
9393 for xxx_convert in $gconvert_ld_preference; do
9394 case $xxx_convert in
9395 qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9396 *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9399 : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9400 for xxx_convert in qgcvt sprintf $xxx_list; do
9401 case "$xxx_ld_list" in
9402 $xxx_convert*|*" $xxx_convert"*) ;;
9403 *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9406 : if sprintf cannot do long doubles, move it to the end
9407 if test "$d_PRIgldbl" != "$define"; then
9408 xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9410 : if no qgcvt, remove it
9411 if test "$d_qgcvt" != "$define"; then
9412 xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9415 xxx_list="$xxx_ld_list"
9419 for xxx_convert in $xxx_list; do
9420 echo "Trying $xxx_convert..."
9422 set try -DTRY_$xxx_convert
9423 if eval $compile; then
9424 echo "$xxx_convert() found." >&4
9426 echo "I'll use $xxx_convert to convert floats into a string." >&4
9429 echo "...But $xxx_convert didn't work as I expected."
9433 echo "$xxx_convert NOT found." >&4
9437 if test X$xxx_convert = X; then
9438 echo "*** WHOA THERE!!! ***" >&4
9439 echo "None of ($xxx_list) seemed to work properly. I'll use sprintf." >&4
9443 case "$xxx_convert" in
9444 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9445 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9446 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9447 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9448 "$define$define$define")
9449 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9450 "$define$define$undef")
9451 d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9452 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9459 : see if _fwalk exists
9463 : Initialize h_fcntl
9466 : Initialize h_sysfile
9469 : access call always available on UNIX
9473 : locate the flags for 'access()'
9477 $cat >access.c <<EOCP
9478 #include <sys/types.h>
9483 #include <sys/file.h>
9496 : check sys/file.h first, no particular reason here
9497 if $test `./findhdr sys/file.h` && \
9498 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9500 echo "<sys/file.h> defines the *_OK access constants." >&4
9501 elif $test `./findhdr fcntl.h` && \
9502 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9504 echo "<fcntl.h> defines the *_OK access constants." >&4
9505 elif $test `./findhdr unistd.h` && \
9506 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9507 echo "<unistd.h> defines the *_OK access constants." >&4
9509 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9515 : see if accessx exists
9516 set accessx d_accessx
9519 : see if aintl exists
9523 : see if alarm exists
9527 : see if POSIX threads are available
9528 set pthread.h i_pthread
9531 : define a fucntion to check prototypes
9532 $cat > protochk <<EOSH
9535 optimize="$optimize"
9537 prototype="$prototype"
9540 usethreads=$usethreads
9541 i_pthread=$i_pthread
9542 pthread_h_first=$pthread_h_first
9545 $cat >> protochk <<'EOSH'
9550 while test $# -ge 2; do
9552 $define) echo "#include <$2>" >> try.c ;;
9553 literal) echo "$2" >> try.c ;;
9555 # Extra magic for the benefit of systems that need pthread.h
9556 # to be included early to correctly detect threadsafe functions.
9557 # Such functions must guarantee themselves, though, that the usethreads
9558 # and i_pthread have been defined, before calling protochk.
9559 if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9560 echo "#include <pthread.h>" >> try.c
9565 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
9566 cat >> try.c <<'EOCP'
9567 #ifdef CAN_PROTOTYPE
9568 #define _(args) args
9573 echo "$foo" >> try.c
9574 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9575 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9583 hasproto='varname=$1; func=$2; shift; shift;
9584 while $test $# -ge 2; do
9586 $define) echo "#include <$2>";;
9590 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9591 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9592 echo "$func() prototype found.";
9595 echo "$func() prototype NOT found.";
9600 $rm -f try.c tryout.c'
9602 : see if sys/types.h has to be included
9603 set sys/types.h i_systypes
9606 : see if sys/select.h has to be included
9607 set sys/select.h i_sysselct
9610 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9611 while $test $# -ge 2; do
9613 $define) echo "#include <$2>";;
9617 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9619 if eval $compile; then
9628 : see if we should include time.h, sys/time.h, or both
9630 if test "X$timeincl" = X; then
9631 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9632 $echo $n "I'm now running the test program...$c"
9634 #include <sys/types.h>
9639 #ifdef SYSTIMEKERNEL
9642 #include <sys/time.h>
9645 #include <sys/select.h>
9658 struct timezone tzp;
9660 if (foo.tm_sec == foo.tm_sec)
9663 if (bar.tv_sec == bar.tv_sec)
9670 for s_timezone in '-DS_TIMEZONE' ''; do
9672 for s_timeval in '-DS_TIMEVAL' ''; do
9673 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9674 for i_time in '' '-DI_TIME'; do
9675 for i_systime in '-DI_SYSTIME' ''; do
9678 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9679 if eval $compile; then
9680 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9684 $echo $n "Succeeded with $flags$c"
9696 *SYSTIMEKERNEL*) i_systimek="$define"
9697 timeincl=`./findhdr sys/time.h`
9698 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9699 *) i_systimek="$undef";;
9702 *I_TIME*) i_time="$define"
9703 timeincl=`./findhdr time.h`" $timeincl"
9704 echo "We'll include <time.h>." >&4;;
9705 *) i_time="$undef";;
9708 *I_SYSTIME*) i_systime="$define"
9709 timeincl=`./findhdr sys/time.h`" $timeincl"
9710 echo "We'll include <sys/time.h>." >&4;;
9711 *) i_systime="$undef";;
9715 : see if struct tm knows about tm_zone
9716 case "$i_systime$i_time" in
9719 echo "Checking to see if your struct tm has tm_zone field..." >&4
9720 set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9728 case "$d_tm_tm_zone" in
9729 "$define") echo "Yes, it does." ;;
9730 *) echo "No, it doesn't." ;;
9732 : see if struct tm knows about tm_gmtoff
9733 case "$i_systime$i_time" in
9736 echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9737 set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9745 case "$d_tm_tm_gmtoff" in
9746 "$define") echo "Yes, it does." ;;
9747 *) echo "No, it doesn't." ;;
9750 : see if asctime_r exists
9751 set asctime_r d_asctime_r
9753 case "$d_asctime_r" in
9755 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9756 case "$d_asctime_r_proto:$usethreads" in
9757 ":define") d_asctime_r_proto=define
9758 set d_asctime_r_proto asctime_r $hdrs
9762 case "$d_asctime_r_proto" in
9764 case "$asctime_r_proto" in
9765 ''|0) try='char* asctime_r(const struct tm*, char*);'
9766 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9768 case "$asctime_r_proto" in
9769 ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9770 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9772 case "$asctime_r_proto" in
9773 ''|0) try='int asctime_r(const struct tm*, char*);'
9774 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9776 case "$asctime_r_proto" in
9777 ''|0) try='int asctime_r(const struct tm*, char*, int);'
9778 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9780 case "$asctime_r_proto" in
9781 ''|0) d_asctime_r=undef
9783 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9784 * ) case "$asctime_r_proto" in
9785 REENTRANT_PROTO*) ;;
9786 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9788 echo "Prototype: $try" ;;
9791 *) case "$usethreads" in
9792 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9799 *) asctime_r_proto=0
9803 : see if atolf exists
9807 : see if atoll exists
9811 : Look for GCC-style attribute format
9812 case "$d_attribute_format" in
9815 echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4
9816 $cat >attrib.c <<'EOCP'
9818 void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2)));
9820 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9821 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9822 echo "Your C compiler doesn't support __attribute__((format))."
9825 echo "Your C compiler supports __attribute__((format))."
9829 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9833 *) val="$d_attribute_format" ;;
9835 set d_attribute_format
9839 : Look for GCC-style attribute malloc
9840 case "$d_attribute_malloc" in
9843 echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4
9844 $cat >attrib.c <<'EOCP'
9846 char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc));
9848 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9849 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9850 echo "Your C compiler doesn't support __attribute__((malloc))."
9853 echo "Your C compiler supports __attribute__((malloc))."
9857 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9861 *) val="$d_attribute_malloc" ;;
9863 set d_attribute_malloc
9867 : Look for GCC-style attribute nonnull
9868 case "$d_attribute_nonnull" in
9871 echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4
9872 $cat >attrib.c <<'EOCP'
9874 void do_something (char *some_pointer,...) __attribute__((nonnull(1)));
9876 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9877 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9878 echo "Your C compiler doesn't support __attribute__((nonnull))."
9881 echo "Your C compiler supports __attribute__((nonnull))."
9885 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9889 *) val="$d_attribute_nonnull" ;;
9891 set d_attribute_nonnull
9895 : Look for GCC-style attribute noreturn
9896 case "$d_attribute_noreturn" in
9899 echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4
9900 $cat >attrib.c <<'EOCP'
9902 void fall_over_dead( void ) __attribute__((noreturn));
9904 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9905 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9906 echo "Your C compiler doesn't support __attribute__((noreturn))."
9909 echo "Your C compiler supports __attribute__((noreturn))."
9913 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9917 *) val="$d_attribute_noreturn" ;;
9919 set d_attribute_noreturn
9923 : Look for GCC-style attribute pure
9924 case "$d_attribute_pure" in
9927 echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4
9928 $cat >attrib.c <<'EOCP'
9930 int square( int n ) __attribute__((pure));
9932 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9933 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9934 echo "Your C compiler doesn't support __attribute__((pure))."
9937 echo "Your C compiler supports __attribute__((pure))."
9941 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9945 *) val="$d_attribute_pure" ;;
9947 set d_attribute_pure
9951 : Look for GCC-style attribute unused
9952 case "$d_attribute_unused" in
9955 echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4
9956 $cat >attrib.c <<'EOCP'
9958 int do_something( int dummy __attribute__((unused)), int n );
9960 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9961 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9962 echo "Your C compiler doesn't support __attribute__((unused))."
9965 echo "Your C compiler supports __attribute__((unused))."
9969 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9973 *) val="$d_attribute_unused" ;;
9975 set d_attribute_unused
9979 : Look for GCC-style attribute warn_unused_result
9980 case "$d_attribute_warn_unused_result" in
9983 echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4
9984 $cat >attrib.c <<'EOCP'
9986 int I_will_not_be_ignored(void) __attribute__((warn_unused_result));
9988 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9989 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9990 echo "Your C compiler doesn't support __attribute__((warn_unused_result))."
9993 echo "Your C compiler supports __attribute__((warn_unused_result))."
9997 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10001 *) val="$d_attribute_warn_unused_result" ;;
10003 set d_attribute_warn_unused_result
10007 : see if bcmp exists
10011 : see if bcopy exists
10015 : see if this is a unistd.h system
10016 set unistd.h i_unistd
10019 : see if getpgrp exists
10020 set getpgrp d_getpgrp
10023 case "$d_getpgrp" in
10026 echo "Checking to see which flavor of getpgrp is in use..."
10028 #$i_unistd I_UNISTD
10029 #include <sys/types.h>
10031 # include <unistd.h>
10033 #$i_stdlib I_STDLIB
10035 #include <stdlib.h>
10039 if (getuid() == 0) {
10040 printf("(I see you are running Configure as super-user...)\n");
10043 #ifdef TRY_BSD_PGRP
10044 if (getpgrp(1) == 0)
10053 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10054 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
10056 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10057 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
10060 echo "I can't seem to compile and run the test program."
10062 xxx="a USG one, i.e. you use getpgrp()."
10064 # SVR4 systems can appear rather BSD-ish.
10065 case "$i_unistd" in
10067 xxx="a BSD one, i.e. you use getpgrp(pid)."
10071 xxx="probably a USG one, i.e. you use getpgrp()."
10076 echo "Assuming your getpgrp is $xxx" >&4
10085 : see if setpgrp exists
10086 set setpgrp d_setpgrp
10089 case "$d_setpgrp" in
10092 echo "Checking to see which flavor of setpgrp is in use..."
10094 #$i_unistd I_UNISTD
10095 #include <sys/types.h>
10097 # include <unistd.h>
10099 #$i_stdlib I_STDLIB
10101 #include <stdlib.h>
10105 if (getuid() == 0) {
10106 printf("(I see you are running Configure as super-user...)\n");
10109 #ifdef TRY_BSD_PGRP
10110 if (-1 == setpgrp(1, 1))
10113 if (setpgrp() != -1)
10119 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10120 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10122 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10123 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10126 echo "(I can't seem to compile and run the test program.)"
10128 xxx="a USG one, i.e. you use setpgrp()."
10130 # SVR4 systems can appear rather BSD-ish.
10131 case "$i_unistd" in
10133 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10137 xxx="probably a USG one, i.e. you use setpgrp()."
10142 echo "Assuming your setpgrp is $xxx" >&4
10150 : Look for GCC-style __builtin_choose_expr
10151 case "$d_builtin_choose_expr" in
10154 echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4
10155 $cat >try.c <<'EOCP'
10156 #include <assert.h>
10157 #include <stdlib.h>
10160 #define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) )
10163 assert( SYRINX(1) == 2112 );
10164 assert( SYRINX(1) != 5150 );
10165 assert( SYRINX(0) == 5150 );
10166 assert( SYRINX(0) != 2112 );
10167 puts( "All good!" );
10173 if eval $compile; then
10174 echo "Your C compiler supports __builtin_choose_expr."
10177 echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10181 *) val="$d_builtin_choose_expr" ;;
10184 set d_builtin_choose_expr
10186 $rm -f try.* try core core.try.*
10188 : Look for GCC-style __builtin_expect
10189 case "$d_builtin_expect" in
10192 echo "Checking whether your compiler can handle __builtin_expect ..." >&4
10193 $cat >builtin.c <<'EOCP'
10196 if ( __builtin_expect(n, 0) ) n = 1;
10200 if eval $compile; then
10201 echo "Your C compiler supports __builtin_choose_expr."
10204 echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10208 *) val="$d_builtin_expect" ;;
10211 set d_builtin_expect
10213 $rm -f try.* try core core.try.*
10215 : see if bzero exists
10219 : see if signal is declared as pointer to function returning int or void
10221 xxx=`./findhdr signal.h`
10222 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10223 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
10224 echo "You have int (*signal())() instead of void." >&4
10226 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
10227 echo "You have void (*signal())()." >&4
10229 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10230 echo "You have int (*signal())() instead of void." >&4
10232 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10233 echo "You have void (*signal())()." >&4
10236 case "$d_voidsig" in
10238 echo "I can't determine whether signal handler returns void or int..." >&4
10240 rp="What type does your signal handler return?"
10243 v*) val="$define";;
10247 echo "As you already told me, signal handler returns void." >&4
10250 *) echo "As you already told me, signal handler returns int." >&4
10257 case "$d_voidsig" in
10258 "$define") signal_t="void";;
10259 *) signal_t="int";;
10263 : check for ability to cast large floats to 32-bit ints.
10265 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10266 if $test "$intsize" -ge 4; then
10273 #$i_stdlib I_STDLIB
10275 #include <stdlib.h>
10277 #include <sys/types.h>
10278 #include <signal.h>
10279 $signal_t blech(s) int s; { exit(3); }
10286 signal(SIGFPE, blech);
10288 /* Don't let compiler optimize the test away. Store the number
10289 in a writable string for gcc to pass to sscanf under HP/UX.
10291 sprintf(str, "2147483647");
10292 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10296 /* x86 processors will probably give 0x8000 0000, which is a
10297 sign change. We don't want that. We want to mimic SPARC
10298 behavior here, which is to preserve the sign and give
10301 if (i32 != ($xxx) f)
10307 if eval $compile_ok; then
10311 echo "(I can't seem to compile the test program--assuming it can't)"
10316 echo "Yup, it can."
10319 echo "Nope, it can't."
10326 : check for ability to cast negative floats to unsigned
10328 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10331 #$i_stdlib I_STDLIB
10333 #include <stdlib.h>
10335 #include <sys/types.h>
10336 #include <signal.h>
10337 $signal_t blech(s) int s; { exit(7); }
10338 $signal_t blech_in_list(s) int s; { exit(4); }
10339 unsigned long dummy_long(p) unsigned long p; { return p; }
10340 unsigned int dummy_int(p) unsigned int p; { return p; }
10341 unsigned short dummy_short(p) unsigned short p; { return p; }
10345 unsigned long along;
10347 unsigned short ashort;
10351 /* Frustrate gcc-2.7.2's optimizer which failed this test with
10352 a direct f = -123. assignment. gcc-2.8.0 reportedly
10353 optimized the whole file away
10355 /* Store the number in a writable string for gcc to pass to
10356 sscanf under HP/UX.
10358 sprintf(str, "-123");
10359 sscanf(str, "%lf", &f); /* f = -123.; */
10361 signal(SIGFPE, blech);
10362 along = (unsigned long)f;
10363 aint = (unsigned int)f;
10364 ashort = (unsigned short)f;
10365 if (along != (unsigned long)-123)
10367 if (aint != (unsigned int)-123)
10369 if (ashort != (unsigned short)-123)
10371 sprintf(str, "1073741824.");
10372 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10375 along = (unsigned long)f;
10376 if (along != 0x80000000)
10380 along = (unsigned long)f;
10381 if (along != 0x7fffffff)
10385 along = (unsigned long)f;
10386 if (along != 0x80000001)
10390 signal(SIGFPE, blech_in_list);
10391 sprintf(str, "123.");
10392 sscanf(str, "%lf", &f); /* f = 123.; */
10393 along = dummy_long((unsigned long)f);
10394 aint = dummy_int((unsigned int)f);
10395 ashort = dummy_short((unsigned short)f);
10396 if (along != (unsigned long)123)
10398 if (aint != (unsigned int)123)
10400 if (ashort != (unsigned short)123)
10407 if eval $compile_ok; then
10411 echo "(I can't seem to compile the test program--assuming it can't)"
10414 case "$castflags" in
10416 echo "Yup, it can."
10419 echo "Nope, it can't."
10426 : see if vprintf exists
10428 if set vprintf val -f d_vprintf; eval $csym; $val; then
10429 echo 'vprintf() found.' >&4
10432 #include <varargs.h>
10433 #$i_stdlib I_STDLIB
10435 #include <stdlib.h>
10438 int main() { xxx("foo"); }
10447 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10451 if eval $compile && $run ./try; then
10452 echo "Your vsprintf() returns (int)." >&4
10455 echo "Your vsprintf() returns (char*)." >&4
10459 echo 'vprintf() NOT found.' >&4
10470 : see if chown exists
10474 : see if chroot exists
10475 set chroot d_chroot
10478 : see if chsize exists
10479 set chsize d_chsize
10482 : see if class exists
10486 : see if clearenv exists
10487 set clearenv d_clearenv
10490 hasstruct='varname=$1; struct=$2; shift; shift;
10491 while $test $# -ge 2; do
10493 $define) echo "#include <$2>";;
10497 echo "int main () { struct $struct foo; }" >> try.c;
10499 if eval $compile; then
10506 $rm -f try.c try.o'
10510 : see whether socket exists
10512 $echo $n "Hmm... $c" >&4
10513 if set socket val -f d_socket; eval $csym; $val; then
10514 echo "Looks like you have Berkeley networking support." >&4
10516 if set setsockopt val -f; eval $csym; $val; then
10519 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10520 d_oldsock="$define"
10523 if $contains socklib libc.list >/dev/null 2>&1; then
10524 echo "Looks like you have Berkeley networking support." >&4
10526 : we will have to assume that it supports the 4.2 BSD interface
10529 echo "You don't have Berkeley networking in libc$_a..." >&4
10530 if test "X$d_socket" = "X$define"; then
10531 echo "...but you seem to believe that you have sockets." >&4
10533 for net in net socket
10535 if test -f /usr/lib/lib$net$_a; then
10536 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
10537 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10538 if $contains socket libc.list >/dev/null 2>&1; then
10543 echo "...but the Wollongong group seems to have hacked it in." >&4
10544 sockethdr="-I/usr/netinclude"
10547 echo "Found Berkeley sockets interface in lib$net." >&4
10548 if $contains setsockopt libc.list >/dev/null 2>&1; then
10551 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10552 d_oldsock="$define"
10558 if test "X$d_socket" != "X$define"; then
10559 echo "or anywhere else I see." >&4
10567 : see if socketpair exists
10568 set socketpair d_sockpair
10573 echo "Checking the availability of certain socket constants..." >&4
10574 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10575 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10577 #include <sys/types.h>
10578 #include <sys/socket.h>
10584 set try; if eval $compile; then
10587 set d_${enum}; eval $setvar
10591 : see if this is a sys/uio.h system
10592 set sys/uio.h i_sysuio
10597 echo "Checking to see if your system supports struct cmsghdr..." >&4
10598 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10600 case "$d_cmsghdr_s" in
10601 "$define") echo "Yes, it does." ;;
10602 *) echo "No, it doesn't." ;;
10606 : check for const keyword
10608 echo 'Checking to see if your C compiler knows about "const"...' >&4
10609 $cat >const.c <<'EOCP'
10610 typedef struct spug { int drokk; } spug;
10617 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10619 echo "Yup, it does."
10622 echo "Nope, it doesn't."
10627 : see if copysignl exists
10628 set copysignl d_copysignl
10631 : see if crypt exists
10636 $define) cryptlib='' ;;
10637 *) if set crypt val -f d_crypt; eval $csym; $val; then
10638 echo 'crypt() found.' >&4
10642 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10643 if $test -z "$cryptlib"; then
10644 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10648 if $test -z "$cryptlib"; then
10649 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10653 if $test -z "$cryptlib"; then
10654 cryptlib=`./loc libcrypt$_a "" $libpth`
10658 if $test -z "$cryptlib"; then
10659 echo 'crypt() NOT found.' >&4
10670 : see if this is a crypt.h system
10671 set crypt.h i_crypt
10674 : see if crypt_r exists
10675 set crypt_r d_crypt_r
10677 case "$d_crypt_r" in
10679 hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10680 case "$d_crypt_r_proto:$usethreads" in
10681 ":define") d_crypt_r_proto=define
10682 set d_crypt_r_proto crypt_r $hdrs
10686 case "$d_crypt_r_proto" in
10688 case "$crypt_r_proto" in
10689 ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10690 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10692 case "$crypt_r_proto" in
10693 ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10694 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10696 case "$crypt_r_proto" in
10697 ''|0) d_crypt_r=undef
10699 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10700 * ) case "$crypt_r_proto" in
10701 REENTRANT_PROTO*) ;;
10702 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10704 echo "Prototype: $try" ;;
10707 *) case "$usethreads" in
10708 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10719 : get csh whereabouts
10721 'csh') val="$undef" ;;
10722 *) val="$define" ;;
10726 : Respect a hint or command line value for full_csh.
10727 case "$full_csh" in
10728 '') full_csh=$csh ;;
10731 : see if ctermid_r exists
10732 set ctermid_r d_ctermid_r
10734 case "$d_ctermid_r" in
10736 hdrs="$i_systypes sys/types.h define stdio.h "
10737 case "$d_ctermid_r_proto:$usethreads" in
10738 ":define") d_ctermid_r_proto=define
10739 set d_ctermid_r_proto ctermid_r $hdrs
10743 case "$d_ctermid_r_proto" in
10745 case "$ctermid_r_proto" in
10746 ''|0) try='char* ctermid_r(char*);'
10747 ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10749 case "$ctermid_r_proto" in
10750 ''|0) d_ctermid_r=undef
10752 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10753 * ) case "$ctermid_r_proto" in
10754 REENTRANT_PROTO*) ;;
10755 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10757 echo "Prototype: $try" ;;
10760 *) case "$usethreads" in
10761 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10768 *) ctermid_r_proto=0
10772 : see if ctime_r exists
10773 set ctime_r d_ctime_r
10775 case "$d_ctime_r" in
10777 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10778 case "$d_ctime_r_proto:$usethreads" in
10779 ":define") d_ctime_r_proto=define
10780 set d_ctime_r_proto ctime_r $hdrs
10784 case "$d_ctime_r_proto" in
10786 case "$ctime_r_proto" in
10787 ''|0) try='char* ctime_r(const time_t*, char*);'
10788 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10790 case "$ctime_r_proto" in
10791 ''|0) try='char* ctime_r(const time_t*, char*, int);'
10792 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10794 case "$ctime_r_proto" in
10795 ''|0) try='int ctime_r(const time_t*, char*);'
10796 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10798 case "$ctime_r_proto" in
10799 ''|0) try='int ctime_r(const time_t*, char*, int);'
10800 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10802 case "$ctime_r_proto" in
10803 ''|0) d_ctime_r=undef
10805 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10806 * ) case "$ctime_r_proto" in
10807 REENTRANT_PROTO*) ;;
10808 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10810 echo "Prototype: $try" ;;
10813 *) case "$usethreads" in
10814 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10825 : see if cuserid exists
10826 set cuserid d_cuserid
10829 : see if this is a limits.h system
10830 set limits.h i_limits
10833 : see if this is a float.h system
10834 set float.h i_float
10837 : See if number of significant digits in a double precision number is known
10839 $cat >dbl_dig.c <<EOM
10840 #$i_limits I_LIMITS
10843 #include <limits.h>
10849 printf("Contains DBL_DIG");
10852 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10853 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10854 echo "DBL_DIG found." >&4
10857 echo "DBL_DIG NOT found." >&4
10864 : see if dbm.h is available
10865 : see if dbmclose exists
10866 set dbmclose d_dbmclose
10869 case "$d_dbmclose" in
10879 *) set rpcsvc/dbm.h i_rpcsvcdbm
10884 *) echo "We won't be including <dbm.h>"
10894 : see if prototype for dbminit is available
10896 set d_dbminitproto dbminit $i_dbm dbm.h
10899 : see if difftime exists
10900 set difftime d_difftime
10903 : see if this is a dirent system
10905 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10907 echo "<dirent.h> found." >&4
10910 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10911 echo "<sys/dir.h> found." >&4
10914 xinc=`./findhdr sys/ndir.h`
10916 echo "<dirent.h> NOT found." >&4
10921 : Look for type of directory structure.
10923 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10925 case "$direntrytype" in
10927 case "$i_dirent" in
10928 $define) guess1='struct dirent' ;;
10929 *) guess1='struct direct' ;;
10932 *) guess1="$direntrytype"
10937 'struct dirent') guess2='struct direct' ;;
10938 *) guess2='struct dirent' ;;
10941 if $contains "$guess1" try.c >/dev/null 2>&1; then
10942 direntrytype="$guess1"
10943 echo "Your directory entries are $direntrytype." >&4
10944 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10945 direntrytype="$guess2"
10946 echo "Your directory entries seem to be $direntrytype." >&4
10948 echo "I don't recognize your system's directory entries." >&4
10949 rp="What type is used for directory entries on this system?"
10952 direntrytype="$ans"
10957 : see if the directory entry stores field length
10959 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10960 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10961 echo "Good, your directory entry keeps length information in d_namlen." >&4
10964 echo "Your directory entry does not know about the d_namlen field." >&4
10971 : see if this is an sysdir system
10972 set sys/dir.h i_sysdir
10975 : see if this is an sysndir system
10976 set sys/ndir.h i_sysndir
10981 $cat >dirfd.c <<EOM
10983 #$i_stdlib I_STDLIB
10985 #include <stdlib.h>
10987 #$i_dirent I_DIRENT /**/
10988 #$i_sysdir I_SYS_DIR /**/
10989 #$i_sysndir I_SYS_NDIR /**/
10990 #$i_systypes I_SYS_TYPES /**/
10991 #if defined(I_SYS_TYPES)
10992 #include <sys/types.h>
10994 #if defined(I_DIRENT)
10995 #include <dirent.h>
10996 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10997 #include <sys/dir.h>
11001 #include <sys/ndir.h>
11005 #include <ndir.h> /* may be wrong in the future */
11007 #include <sys/dir.h>
11013 DIR *dirp = opendir(".");
11014 if (dirfd(dirp) >= 0)
11022 if eval $compile; then
11026 $define) echo "dirfd() found." >&4 ;;
11027 *) echo "dirfd() NOT found." >&4 ;;
11033 : see if dlerror exists
11036 set dlerror d_dlerror
11040 : see if dlfcn is available
11041 set dlfcn.h i_dlfcn
11048 On a few systems, the dynamically loaded modules that perl generates and uses
11049 will need a different extension than shared libs. The default will probably
11055 *) dflt="$dlext" ;;
11057 rp='What is the extension of dynamically loaded modules'
11066 : Check if dlsym need a leading underscore
11072 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
11073 $cat >dyna.c <<'EOM'
11080 #$i_stdlib I_STDLIB
11082 #include <stdlib.h>
11086 #include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
11088 #include <sys/types.h>
11093 extern int fred() ;
11102 int mode = RTLD_LAZY ;
11104 handle = dlopen("./dyna.$dlext", mode) ;
11105 if (handle == NULL) {
11110 symbol = dlsym(handle, "fred") ;
11111 if (symbol == NULL) {
11112 /* try putting a leading underscore */
11113 symbol = dlsym(handle, "_fred") ;
11114 if (symbol == NULL) {
11127 : Call the object file tmp-dyna.o in case dlext=o.
11128 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
11129 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
11130 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
11131 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
11134 1) echo "Test program failed using dlopen." >&4
11135 echo "Perhaps you should not use dynamic loading." >&4;;
11136 2) echo "Test program failed using dlsym." >&4
11137 echo "Perhaps you should not use dynamic loading." >&4;;
11138 3) echo "dlsym needs a leading underscore" >&4
11140 4) echo "dlsym doesn't need a leading underscore." >&4;;
11143 echo "I can't compile and run the test program." >&4
11144 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
11149 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
11154 : see if drand48_r exists
11155 set drand48_r d_drand48_r
11157 case "$d_drand48_r" in
11159 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
11160 case "$d_drand48_r_proto:$usethreads" in
11161 ":define") d_drand48_r_proto=define
11162 set d_drand48_r_proto drand48_r $hdrs
11166 case "$d_drand48_r_proto" in
11168 case "$drand48_r_proto" in
11169 ''|0) try='int drand48_r(struct drand48_data*, double*);'
11170 ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11172 case "$drand48_r_proto" in
11173 ''|0) d_drand48_r=undef
11175 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11176 * ) case "$drand48_r_proto" in
11177 REENTRANT_PROTO*) ;;
11178 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11180 echo "Prototype: $try" ;;
11183 *) case "$usethreads" in
11184 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11191 *) drand48_r_proto=0
11195 : see if prototype for drand48 is available
11197 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11200 : see if dup2 exists
11204 : see if eaccess exists
11205 set eaccess d_eaccess
11208 : see if endgrent exists
11209 set endgrent d_endgrent
11212 : see if this is an grp system
11218 xxx=`./findhdr grp.h`
11219 $cppstdin $cppflags $cppminus < $xxx >$$.h
11221 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11233 set d_grpasswd; eval $setvar
11237 : see if endgrent_r exists
11238 set endgrent_r d_endgrent_r
11240 case "$d_endgrent_r" in
11242 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11243 case "$d_endgrent_r_proto:$usethreads" in
11244 ":define") d_endgrent_r_proto=define
11245 set d_endgrent_r_proto endgrent_r $hdrs
11249 case "$d_endgrent_r_proto" in
11251 case "$endgrent_r_proto" in
11252 ''|0) try='int endgrent_r(FILE**);'
11253 ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11255 case "$endgrent_r_proto" in
11256 ''|0) try='void endgrent_r(FILE**);'
11257 ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11259 case "$endgrent_r_proto" in
11260 ''|0) d_endgrent_r=undef
11262 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11263 * ) case "$endgrent_r_proto" in
11264 REENTRANT_PROTO*) ;;
11265 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11267 echo "Prototype: $try" ;;
11270 *) case "$usethreads" in
11271 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11278 *) endgrent_r_proto=0
11282 : see if endhostent exists
11283 set endhostent d_endhent
11286 : see if this is a netdb.h system
11287 set netdb.h i_netdb
11290 : see if endhostent_r exists
11291 set endhostent_r d_endhostent_r
11293 case "$d_endhostent_r" in
11295 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11296 case "$d_endhostent_r_proto:$usethreads" in
11297 ":define") d_endhostent_r_proto=define
11298 set d_endhostent_r_proto endhostent_r $hdrs
11302 case "$d_endhostent_r_proto" in
11304 case "$endhostent_r_proto" in
11305 ''|0) try='int endhostent_r(struct hostent_data*);'
11306 ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11308 case "$endhostent_r_proto" in
11309 ''|0) try='void endhostent_r(struct hostent_data*);'
11310 ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11312 case "$endhostent_r_proto" in
11313 ''|0) d_endhostent_r=undef
11314 endhostent_r_proto=0
11315 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11316 * ) case "$endhostent_r_proto" in
11317 REENTRANT_PROTO*) ;;
11318 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11320 echo "Prototype: $try" ;;
11323 *) case "$usethreads" in
11324 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11326 d_endhostent_r=undef
11327 endhostent_r_proto=0
11331 *) endhostent_r_proto=0
11335 : see if endnetent exists
11336 set endnetent d_endnent
11339 : see if endnetent_r exists
11340 set endnetent_r d_endnetent_r
11342 case "$d_endnetent_r" in
11344 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11345 case "$d_endnetent_r_proto:$usethreads" in
11346 ":define") d_endnetent_r_proto=define
11347 set d_endnetent_r_proto endnetent_r $hdrs
11351 case "$d_endnetent_r_proto" in
11353 case "$endnetent_r_proto" in
11354 ''|0) try='int endnetent_r(struct netent_data*);'
11355 ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11357 case "$endnetent_r_proto" in
11358 ''|0) try='void endnetent_r(struct netent_data*);'
11359 ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11361 case "$endnetent_r_proto" in
11362 ''|0) d_endnetent_r=undef
11363 endnetent_r_proto=0
11364 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11365 * ) case "$endnetent_r_proto" in
11366 REENTRANT_PROTO*) ;;
11367 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11369 echo "Prototype: $try" ;;
11372 *) case "$usethreads" in
11373 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11375 d_endnetent_r=undef
11376 endnetent_r_proto=0
11380 *) endnetent_r_proto=0
11384 : see if endprotoent exists
11385 set endprotoent d_endpent
11388 : see if endprotoent_r exists
11389 set endprotoent_r d_endprotoent_r
11391 case "$d_endprotoent_r" in
11393 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11394 case "$d_endprotoent_r_proto:$usethreads" in
11395 ":define") d_endprotoent_r_proto=define
11396 set d_endprotoent_r_proto endprotoent_r $hdrs
11400 case "$d_endprotoent_r_proto" in
11402 case "$endprotoent_r_proto" in
11403 ''|0) try='int endprotoent_r(struct protoent_data*);'
11404 ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11406 case "$endprotoent_r_proto" in
11407 ''|0) try='void endprotoent_r(struct protoent_data*);'
11408 ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11410 case "$endprotoent_r_proto" in
11411 ''|0) d_endprotoent_r=undef
11412 endprotoent_r_proto=0
11413 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11414 * ) case "$endprotoent_r_proto" in
11415 REENTRANT_PROTO*) ;;
11416 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11418 echo "Prototype: $try" ;;
11421 *) case "$usethreads" in
11422 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11424 d_endprotoent_r=undef
11425 endprotoent_r_proto=0
11429 *) endprotoent_r_proto=0
11433 : see if endpwent exists
11434 set endpwent d_endpwent
11437 : see if this is a pwd.h system
11443 xxx=`./findhdr pwd.h`
11444 $cppstdin $cppflags $cppminus < $xxx >$$.h
11446 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11454 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11462 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11470 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11478 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11486 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11494 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11502 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11514 set d_pwquota; eval $setvar
11515 set d_pwage; eval $setvar
11516 set d_pwchange; eval $setvar
11517 set d_pwclass; eval $setvar
11518 set d_pwexpire; eval $setvar
11519 set d_pwcomment; eval $setvar
11520 set d_pwgecos; eval $setvar
11521 set d_pwpasswd; eval $setvar
11525 : see if endpwent_r exists
11526 set endpwent_r d_endpwent_r
11528 case "$d_endpwent_r" in
11530 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11531 case "$d_endpwent_r_proto:$usethreads" in
11532 ":define") d_endpwent_r_proto=define
11533 set d_endpwent_r_proto endpwent_r $hdrs
11537 case "$d_endpwent_r_proto" in
11539 case "$endpwent_r_proto" in
11540 ''|0) try='int endpwent_r(FILE**);'
11541 ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11543 case "$endpwent_r_proto" in
11544 ''|0) try='void endpwent_r(FILE**);'
11545 ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11547 case "$endpwent_r_proto" in
11548 ''|0) d_endpwent_r=undef
11550 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11551 * ) case "$endpwent_r_proto" in
11552 REENTRANT_PROTO*) ;;
11553 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11555 echo "Prototype: $try" ;;
11558 *) case "$usethreads" in
11559 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11566 *) endpwent_r_proto=0
11570 : see if endservent exists
11571 set endservent d_endsent
11574 : see if endservent_r exists
11575 set endservent_r d_endservent_r
11577 case "$d_endservent_r" in
11579 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11580 case "$d_endservent_r_proto:$usethreads" in
11581 ":define") d_endservent_r_proto=define
11582 set d_endservent_r_proto endservent_r $hdrs
11586 case "$d_endservent_r_proto" in
11588 case "$endservent_r_proto" in
11589 ''|0) try='int endservent_r(struct servent_data*);'
11590 ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11592 case "$endservent_r_proto" in
11593 ''|0) try='void endservent_r(struct servent_data*);'
11594 ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11596 case "$endservent_r_proto" in
11597 ''|0) d_endservent_r=undef
11598 endservent_r_proto=0
11599 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11600 * ) case "$endservent_r_proto" in
11601 REENTRANT_PROTO*) ;;
11602 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11604 echo "Prototype: $try" ;;
11607 *) case "$usethreads" in
11608 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11610 d_endservent_r=undef
11611 endservent_r_proto=0
11615 *) endservent_r_proto=0
11619 : Locate the flags for 'open()'
11622 #include <sys/types.h>
11627 #include <sys/file.h>
11629 #$i_stdlib I_STDLIB
11631 #include <stdlib.h>
11642 : check sys/file.h first to get FREAD on Sun
11643 if $test `./findhdr sys/file.h` && \
11644 set try -DI_SYS_FILE && eval $compile; then
11646 echo "<sys/file.h> defines the O_* constants..." >&4
11647 if $run ./try; then
11648 echo "and you have the 3 argument form of open()." >&4
11651 echo "but not the 3 argument form of open(). Oh, well." >&4
11654 elif $test `./findhdr fcntl.h` && \
11655 set try -DI_FCNTL && eval $compile; then
11657 echo "<fcntl.h> defines the O_* constants..." >&4
11658 if $run ./try; then
11659 echo "and you have the 3 argument form of open()." >&4
11662 echo "but not the 3 argument form of open(). Oh, well." >&4
11667 echo "I can't find the O_* constant definitions! You got problems." >&4
11673 : see which of string.h or strings.h is needed
11675 strings=`./findhdr string.h`
11676 if $test "$strings" && $test -r "$strings"; then
11677 echo "Using <string.h> instead of <strings.h>." >&4
11681 strings=`./findhdr strings.h`
11682 if $test "$strings" && $test -r "$strings"; then
11683 echo "Using <strings.h> instead of <string.h>." >&4
11685 echo "No string header found -- You'll surely have problems." >&4
11690 case "$i_string" in
11691 "$undef") strings=`./findhdr strings.h`;;
11692 *) strings=`./findhdr string.h`;;
11695 : see if this is a sys/file.h system
11700 : do we need to include sys/file.h ?
11704 if $h_sysfile; then
11706 echo "We'll be including <sys/file.h>." >&4
11709 echo "We won't be including <sys/file.h>." >&4
11719 : see if fcntl.h is there
11724 : see if we can include fcntl.h
11730 echo "We'll be including <fcntl.h>." >&4
11733 if $h_sysfile; then
11734 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11736 echo "We won't be including <fcntl.h>." >&4
11748 : check for non-blocking I/O stuff
11749 case "$h_sysfile" in
11750 true) echo "#include <sys/file.h>" > head.c;;
11753 true) echo "#include <fcntl.h>" > head.c;;
11754 *) echo "#include <sys/fcntl.h>" > head.c;;
11759 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11760 case "$o_nonblock" in
11762 $cat head.c > try.c
11763 $cat >>try.c <<EOCP
11765 #$i_stdlib I_STDLIB
11767 #include <stdlib.h>
11775 printf("O_NONBLOCK\n");
11779 printf("O_NDELAY\n");
11783 printf("FNDELAY\n");
11790 if eval $compile_ok; then
11791 o_nonblock=`$run ./try`
11792 case "$o_nonblock" in
11793 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11794 *) echo "Seems like we can use $o_nonblock.";;
11797 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11800 *) echo "Using $hint value $o_nonblock.";;
11802 $rm -f try try.* .out core
11805 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11808 $cat head.c > try.c
11809 $cat >>try.c <<EOCP
11811 #include <sys/types.h>
11812 #include <signal.h>
11814 #$i_stdlib I_STDLIB
11816 #include <stdlib.h>
11822 #define MY_O_NONBLOCK $o_nonblock
11823 #ifndef errno /* XXX need better Configure test */
11826 #$i_unistd I_UNISTD
11828 #include <unistd.h>
11830 #$i_string I_STRING
11832 #include <string.h>
11834 #include <strings.h>
11836 $signal_t blech(x) int x; { exit(3); }
11838 $cat >> try.c <<'EOCP'
11846 pipe(pd); /* Down: child -> parent */
11847 pipe(pu); /* Up: parent -> child */
11850 close(pd[1]); /* Parent reads from pd[0] */
11851 close(pu[0]); /* Parent writes (blocking) to pu[1] */
11853 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11858 signal(SIGALRM, blech);
11860 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
11862 sprintf(string, "%d\n", ret);
11863 write(2, string, strlen(string));
11866 if (errno == EAGAIN) {
11867 printf("EAGAIN\n");
11872 if (errno == EWOULDBLOCK)
11873 printf("EWOULDBLOCK\n");
11876 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
11877 sleep(2); /* Give it time to close our pipe */
11879 ret = read(pd[0], buf, 1); /* Should read EOF */
11881 sprintf(string, "%d\n", ret);
11882 write(4, string, strlen(string));
11886 close(pd[0]); /* We write to pd[1] */
11887 close(pu[1]); /* We read from pu[0] */
11888 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
11889 close(pd[1]); /* Pipe pd is now fully closed! */
11890 exit(0); /* Bye bye, thank you for playing! */
11894 if eval $compile_ok; then
11895 echo "$startsh" >mtry
11896 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11898 ./mtry >/dev/null 2>&1
11900 0) eagain=`$cat try.out`;;
11901 1) echo "Could not perform non-blocking setting!";;
11902 2) echo "I did a successful read() for something that was not there!";;
11903 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11904 4) echo "Could not find F_SETFL!";;
11905 *) echo "Something terribly wrong happened during testing.";;
11907 rd_nodata=`$cat try.ret`
11908 echo "A read() system call with no data present returns $rd_nodata."
11909 case "$rd_nodata" in
11912 echo "(That's peculiar, fixing that to be -1.)"
11918 echo "Forcing errno EAGAIN on read() with no data available."
11922 echo "Your read() sets errno to $eagain when no data is available."
11925 status=`$cat try.err`
11927 0) echo "And it correctly returns 0 to signal EOF.";;
11928 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11929 *) echo "However, your read() returns '$status' on EOF??";;
11932 if test "$status" = "$rd_nodata"; then
11933 echo "WARNING: you can't distinguish between EOF and no data!"
11937 echo "I can't compile the test program--assuming errno EAGAIN will do."
11944 echo "Using $hint value $eagain."
11945 echo "Your read() returns $rd_nodata when no data is present."
11946 case "$d_eofnblk" in
11947 "$define") echo "And you can see EOF because read() returns 0.";;
11948 "$undef") echo "But you can't see EOF status from read() returned value.";;
11950 echo "(Assuming you can't see EOF status from read anyway.)"
11956 $rm -f try try.* .out core head.c mtry
11958 : see if _ptr and _cnt from stdio act std
11961 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11962 echo "(Looks like you have stdio.h from BSD.)"
11963 case "$stdio_ptr" in
11964 '') stdio_ptr='((fp)->_p)'
11967 *) ptr_lval=$d_stdio_ptr_lval;;
11969 case "$stdio_cnt" in
11970 '') stdio_cnt='((fp)->_r)'
11973 *) cnt_lval=$d_stdio_cnt_lval;;
11975 case "$stdio_base" in
11976 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11978 case "$stdio_bufsiz" in
11979 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11981 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11982 echo "(Looks like you have stdio.h from Linux.)"
11983 case "$stdio_ptr" in
11984 '') stdio_ptr='((fp)->_IO_read_ptr)'
11987 *) ptr_lval=$d_stdio_ptr_lval;;
11989 case "$stdio_cnt" in
11990 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11993 *) cnt_lval=$d_stdio_cnt_lval;;
11995 case "$stdio_base" in
11996 '') stdio_base='((fp)->_IO_read_base)';;
11998 case "$stdio_bufsiz" in
11999 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12002 case "$stdio_ptr" in
12003 '') stdio_ptr='((fp)->_ptr)'
12006 *) ptr_lval=$d_stdio_ptr_lval;;
12008 case "$stdio_cnt" in
12009 '') stdio_cnt='((fp)->_cnt)'
12012 *) cnt_lval=$d_stdio_cnt_lval;;
12014 case "$stdio_base" in
12015 '') stdio_base='((fp)->_base)';;
12017 case "$stdio_bufsiz" in
12018 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12022 : test whether _ptr and _cnt really work
12023 echo "Checking how std your stdio is..." >&4
12026 #$i_stdlib I_STDLIB
12028 #include <stdlib.h>
12030 #define FILE_ptr(fp) $stdio_ptr
12031 #define FILE_cnt(fp) $stdio_cnt
12033 FILE *fp = fopen("try.c", "r");
12036 18 <= FILE_cnt(fp) &&
12037 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12045 if eval $compile && $to try.c; then
12046 if $run ./try; then
12047 echo "Your stdio acts pretty std."
12050 echo "Your stdio isn't very std."
12053 echo "Your stdio doesn't appear very std."
12057 # glibc 2.2.90 and above apparently change stdio streams so Perl's
12058 # direct buffer manipulation no longer works. The Configure tests
12059 # should be changed to correctly detect this, but until then,
12060 # the following check should at least let perl compile and run.
12061 # (This quick fix should be updated before 5.8.1.)
12062 # To be defensive, reject all unknown versions, and all versions > 2.2.9.
12063 # A. Dougherty, June 3, 2002.
12064 case "$d_gnulibc" in
12066 case "$gnulibc_version" in
12070 *) echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
12079 : Can _ptr be used as an lvalue?
12080 case "$d_stdstdio$ptr_lval" in
12081 $define$define) val=$define ;;
12084 set d_stdio_ptr_lval
12087 : Can _cnt be used as an lvalue?
12088 case "$d_stdstdio$cnt_lval" in
12089 $define$define) val=$define ;;
12092 set d_stdio_cnt_lval
12096 : test whether setting _ptr sets _cnt as a side effect
12097 d_stdio_ptr_lval_sets_cnt="$undef"
12098 d_stdio_ptr_lval_nochange_cnt="$undef"
12099 case "$d_stdio_ptr_lval$d_stdstdio" in
12101 echo "Checking to see what happens if we set the stdio ptr..." >&4
12104 /* Can we scream? */
12105 /* Eat dust sed :-) */
12106 /* In the buffer space, no one can hear you scream. */
12107 #$i_stdlib I_STDLIB
12109 #include <stdlib.h>
12111 #define FILE_ptr(fp) $stdio_ptr
12112 #define FILE_cnt(fp) $stdio_cnt
12113 #include <sys/types.h>
12115 FILE *fp = fopen("try.c", "r");
12120 puts("Fail even to read");
12123 c = getc(fp); /* Read away the first # */
12125 puts("Fail even to read");
12129 18 <= FILE_cnt(fp) &&
12130 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12132 puts("Fail even to read");
12135 ptr = (char*) FILE_ptr(fp);
12136 cnt = (size_t)FILE_cnt(fp);
12138 FILE_ptr(fp) += 42;
12140 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12141 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12144 if (FILE_cnt(fp) <= 20) {
12145 printf ("Fail (<20 chars to test)");
12148 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12149 puts("Fail compare");
12152 if (cnt == FILE_cnt(fp)) {
12153 puts("Pass_unchanged");
12156 if (FILE_cnt(fp) == (cnt - 42)) {
12157 puts("Pass_changed");
12160 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12166 if eval $compile && $to try.c; then
12167 case `$run ./try` in
12169 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
12170 d_stdio_ptr_lval_sets_cnt="$define" ;;
12172 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12173 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12175 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12177 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12180 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12186 : see if _base is also standard
12188 case "$d_stdstdio" in
12192 #$i_stdlib I_STDLIB
12194 #include <stdlib.h>
12196 #define FILE_base(fp) $stdio_base
12197 #define FILE_bufsiz(fp) $stdio_bufsiz
12199 FILE *fp = fopen("try.c", "r");
12202 19 <= FILE_bufsiz(fp) &&
12203 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12210 if eval $compile && $to try.c; then
12211 if $run ./try; then
12212 echo "And its _base field acts std."
12215 echo "But its _base field isn't std."
12218 echo "However, it seems to be lacking the _base field."
12226 : see if fast_stdio exists
12228 case "$d_stdstdio:$d_stdio_ptr_lval" in
12230 case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12232 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12243 : see if fchdir exists
12244 set fchdir d_fchdir
12247 : see if fchmod exists
12248 set fchmod d_fchmod
12251 : see if fchown exists
12252 set fchown d_fchown
12255 : see if this is an fcntl system
12260 : See if fcntl-based locking works.
12262 #$i_stdlib I_STDLIB
12264 #include <stdlib.h>
12266 #include <unistd.h>
12268 #include <signal.h>
12269 $signal_t blech(x) int x; { exit(3); }
12271 #if defined(F_SETLK) && defined(F_SETLKW)
12272 struct flock flock;
12274 fd = open("try.c", O_RDONLY);
12275 flock.l_type = F_RDLCK;
12276 flock.l_whence = SEEK_SET;
12277 flock.l_start = flock.l_len = 0;
12278 signal(SIGALRM, blech);
12280 retval = fcntl(fd, F_SETLK, &flock);
12282 (retval < 0 ? exit(2) : exit(0));
12288 echo "Checking if fcntl-based file locking works... "
12292 if eval $compile_ok; then
12293 if $run ./try; then
12294 echo "Yes, it seems to work."
12297 echo "Nope, it didn't work."
12302 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12303 *** This is (almost) impossible.
12304 *** If your NFS lock daemons are not feeling well, something like
12305 *** this may happen, please investigate. Cannot continue, aborting.
12313 echo "I'm unable to compile the test program, so I'll assume not."
12318 echo "Nope, since you don't even have fcntl()."
12321 set d_fcntl_can_lock
12326 : check for fd_set items
12329 Checking to see how well your C compiler handles fd_set and friends ...
12332 #$i_stdlib I_STDLIB
12334 #include <stdlib.h>
12336 #$i_systime I_SYS_TIME
12337 #$i_sysselct I_SYS_SELECT
12338 #$d_socket HAS_SOCKET
12339 #include <sys/types.h>
12341 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12344 #include <sys/time.h>
12346 #ifdef I_SYS_SELECT
12347 #include <sys/select.h>
12356 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12364 if eval $compile; then
12365 d_fds_bits="$define"
12367 echo "Well, your system knows about the normal fd_set typedef..." >&4
12368 if $run ./try; then
12369 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12370 d_fd_macros="$define"
12373 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
12375 d_fd_macros="$undef"
12379 Hmm, your compiler has some difficulty with fd_set. Checking further...
12382 if eval $compile; then
12383 d_fds_bits="$undef"
12385 echo "Well, your system has some sort of fd_set available..." >&4
12386 if $run ./try; then
12387 echo "and you have the normal fd_set macros." >&4
12388 d_fd_macros="$define"
12391 but not the normal fd_set macros! Gross! More work for me...
12393 d_fd_macros="$undef"
12396 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
12398 d_fds_bits="$undef"
12399 d_fd_macros="$undef"
12404 : see if fgetpos exists
12405 set fgetpos d_fgetpos
12408 : see if finite exists
12409 set finite d_finite
12412 : see if finitel exists
12413 set finitel d_finitel
12416 : see if flock exists
12420 : see if prototype for flock is available
12422 set d_flockproto flock $i_sysfile sys/file.h
12425 : see if fork exists
12429 : see if fp_class exists
12430 set fp_class d_fp_class
12433 : see if pathconf exists
12434 set pathconf d_pathconf
12437 : see if fpathconf exists
12438 set fpathconf d_fpathconf
12441 : see if fpclass exists
12442 set fpclass d_fpclass
12445 : see if fpclassify exists
12446 set fpclassify d_fpclassify
12449 : see if fpclassl exists
12450 set fpclassl d_fpclassl
12454 : check for fpos64_t
12456 echo "Checking to see if you have fpos64_t..." >&4
12459 int main() { fpos64_t x = 7; }
12462 if eval $compile; then
12464 echo "You have fpos64_t."
12467 echo "You do not have fpos64_t."
12468 case "$fpossize" in
12469 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12476 : see if frexpl exists
12477 set frexpl d_frexpl
12480 : see if this is a sys/param system
12481 set sys/param.h i_sysparam
12484 : see if this is a sys/mount.h system
12485 set sys/mount.h i_sysmount
12490 echo "Checking to see if your system supports struct fs_data..." >&4
12491 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12493 case "$d_fs_data_s" in
12494 "$define") echo "Yes, it does." ;;
12495 *) echo "No, it doesn't." ;;
12498 : see if fseeko exists
12499 set fseeko d_fseeko
12501 case "$longsize" in
12502 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12505 : see if fsetpos exists
12506 set fsetpos d_fsetpos
12510 : see if fstatfs exists
12511 set fstatfs d_fstatfs
12515 : see if statvfs exists
12516 set statvfs d_statvfs
12519 : see if fstatvfs exists
12520 set fstatvfs d_fstatvfs
12524 : see if fsync exists
12528 : see if ftello exists
12529 set ftello d_ftello
12531 case "$longsize" in
12532 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12536 : check for a working futimes
12538 echo "Checking for a working futimes()" >&4
12541 #include <sys/time.h>
12548 fd = open ("try.c", O_RDWR);
12549 if (-1 == fd) exit (1);
12550 rv = futimes (fd, NULL);
12551 exit (rv == -1 ? errno : 0);
12555 if eval $compile; then
12559 0) echo "Yes, it does" >&4
12560 d_futimes="$define"
12562 *) echo "No, it has futimes, but it isn't working ($rc) (probably harmless)\n" >&4
12566 echo "No, it does not (probably harmless)\n" >&4
12568 $rm -f try.* try core core.try.*
12570 : see if getcwd exists
12571 set getcwd d_getcwd
12574 : see if getespwnam exists
12575 set getespwnam d_getespwnam
12579 : see if getfsstat exists
12580 set getfsstat d_getfsstat
12583 : see if getgrent exists
12584 set getgrent d_getgrent
12587 : see if getgrent_r exists
12588 set getgrent_r d_getgrent_r
12590 case "$d_getgrent_r" in
12592 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12593 case "$d_getgrent_r_proto:$usethreads" in
12594 ":define") d_getgrent_r_proto=define
12595 set d_getgrent_r_proto getgrent_r $hdrs
12599 case "$d_getgrent_r_proto" in
12601 case "$getgrent_r_proto" in
12602 ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12603 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12605 case "$getgrent_r_proto" in
12606 ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12607 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12609 case "$getgrent_r_proto" in
12610 ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12611 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12613 case "$getgrent_r_proto" in
12614 ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12615 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12617 case "$getgrent_r_proto" in
12618 ''|0) try='int getgrent_r(struct group*, char*, int);'
12619 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12621 case "$getgrent_r_proto" in
12622 ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12623 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12625 case "$getgrent_r_proto" in
12626 ''|0) d_getgrent_r=undef
12628 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12629 * ) case "$getgrent_r_proto" in
12630 REENTRANT_PROTO*) ;;
12631 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12633 echo "Prototype: $try" ;;
12636 *) case "$usethreads" in
12637 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12644 *) getgrent_r_proto=0
12648 : see if getgrgid_r exists
12649 set getgrgid_r d_getgrgid_r
12651 case "$d_getgrgid_r" in
12653 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12654 case "$d_getgrgid_r_proto:$usethreads" in
12655 ":define") d_getgrgid_r_proto=define
12656 set d_getgrgid_r_proto getgrgid_r $hdrs
12660 case "$d_getgrgid_r_proto" in
12662 case "$getgrgid_r_proto" in
12663 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12664 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12666 case "$getgrgid_r_proto" in
12667 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12668 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12670 case "$getgrgid_r_proto" in
12671 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12672 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12674 case "$getgrgid_r_proto" in
12675 ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12676 ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12678 case "$getgrgid_r_proto" in
12679 ''|0) d_getgrgid_r=undef
12681 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12682 * ) case "$getgrgid_r_proto" in
12683 REENTRANT_PROTO*) ;;
12684 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12686 echo "Prototype: $try" ;;
12689 *) case "$usethreads" in
12690 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12697 *) getgrgid_r_proto=0
12701 : see if getgrnam_r exists
12702 set getgrnam_r d_getgrnam_r
12704 case "$d_getgrnam_r" in
12706 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12707 case "$d_getgrnam_r_proto:$usethreads" in
12708 ":define") d_getgrnam_r_proto=define
12709 set d_getgrnam_r_proto getgrnam_r $hdrs
12713 case "$d_getgrnam_r_proto" in
12715 case "$getgrnam_r_proto" in
12716 ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12717 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12719 case "$getgrnam_r_proto" in
12720 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12721 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12723 case "$getgrnam_r_proto" in
12724 ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12725 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12727 case "$getgrnam_r_proto" in
12728 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12729 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12731 case "$getgrnam_r_proto" in
12732 ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12733 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12735 case "$getgrnam_r_proto" in
12736 ''|0) d_getgrnam_r=undef
12738 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12739 * ) case "$getgrnam_r_proto" in
12740 REENTRANT_PROTO*) ;;
12741 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12743 echo "Prototype: $try" ;;
12746 *) case "$usethreads" in
12747 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12754 *) getgrnam_r_proto=0
12758 : see if gethostbyaddr exists
12759 set gethostbyaddr d_gethbyaddr
12762 : see if gethostbyname exists
12763 set gethostbyname d_gethbyname
12766 : see if gethostent exists
12767 set gethostent d_gethent
12770 : see how we will look up host name
12773 if set gethostname val -f d_gethname; eval $csym; $val; then
12774 echo 'gethostname() found.' >&4
12775 d_gethname="$define"
12778 if set uname val -f d_uname; eval $csym; $val; then
12781 uname() was found, but you're running xenix, and older versions of xenix
12782 have a broken uname(). If you don't really know whether your xenix is old
12783 enough to have a broken system call, use the default answer.
12788 "$define") dflt=n;;
12790 rp='Is your uname() broken?'
12793 n*) d_uname="$define"; call=uname;;
12796 echo 'uname() found.' >&4
12803 case "$d_gethname" in
12804 '') d_gethname="$undef";;
12807 '') d_uname="$undef";;
12809 case "$d_uname$d_gethname" in
12814 Every now and then someone has a $call() that lies about the hostname
12815 but can't be fixed for political or economic reasons. If you wish, I can
12816 pretend $call() isn't there and maybe compute hostname at run-time
12817 thanks to the '$phostname' command.
12820 rp="Shall I ignore $call() from now on?"
12823 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12826 case "$phostname" in
12827 '') aphostname='';;
12828 *) case "$aphostname" in
12830 *) set X $phostname
12834 file=`./loc $file $file $pth`
12835 aphostname=`echo $file $*`
12840 case "$d_uname$d_gethname" in
12843 case "$phostname" in
12845 echo "There will be no way for $package to get your hostname." >&4;;
12847 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12851 case "$d_phostname" in
12852 '') d_phostname="$undef";;
12855 : see if gethostbyaddr_r exists
12856 set gethostbyaddr_r d_gethostbyaddr_r
12858 case "$d_gethostbyaddr_r" in
12860 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12861 case "$d_gethostbyaddr_r_proto:$usethreads" in
12862 ":define") d_gethostbyaddr_r_proto=define
12863 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12867 case "$d_gethostbyaddr_r_proto" in
12869 case "$gethostbyaddr_r_proto" in
12870 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12871 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12873 case "$gethostbyaddr_r_proto" in
12874 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12875 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12877 case "$gethostbyaddr_r_proto" in
12878 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12879 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12881 case "$gethostbyaddr_r_proto" in
12882 ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12883 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12885 case "$gethostbyaddr_r_proto" in
12886 ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12887 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12889 case "$gethostbyaddr_r_proto" in
12890 ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12891 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12893 case "$gethostbyaddr_r_proto" in
12894 ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12895 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12897 case "$gethostbyaddr_r_proto" in
12898 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12899 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12901 case "$gethostbyaddr_r_proto" in
12902 ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12903 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12905 case "$gethostbyaddr_r_proto" in
12906 ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12907 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12909 case "$gethostbyaddr_r_proto" in
12910 ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12911 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12913 case "$gethostbyaddr_r_proto" in
12914 ''|0) d_gethostbyaddr_r=undef
12915 gethostbyaddr_r_proto=0
12916 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12917 * ) case "$gethostbyaddr_r_proto" in
12918 REENTRANT_PROTO*) ;;
12919 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12921 echo "Prototype: $try" ;;
12924 *) case "$usethreads" in
12925 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12927 d_gethostbyaddr_r=undef
12928 gethostbyaddr_r_proto=0
12932 *) gethostbyaddr_r_proto=0
12936 : see if gethostbyname_r exists
12937 set gethostbyname_r d_gethostbyname_r
12939 case "$d_gethostbyname_r" in
12941 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12942 case "$d_gethostbyname_r_proto:$usethreads" in
12943 ":define") d_gethostbyname_r_proto=define
12944 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12948 case "$d_gethostbyname_r_proto" in
12950 case "$gethostbyname_r_proto" in
12951 ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12952 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12954 case "$gethostbyname_r_proto" in
12955 ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12956 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12958 case "$gethostbyname_r_proto" in
12959 ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12960 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12962 case "$gethostbyname_r_proto" in
12963 ''|0) d_gethostbyname_r=undef
12964 gethostbyname_r_proto=0
12965 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12966 * ) case "$gethostbyname_r_proto" in
12967 REENTRANT_PROTO*) ;;
12968 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12970 echo "Prototype: $try" ;;
12973 *) case "$usethreads" in
12974 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12976 d_gethostbyname_r=undef
12977 gethostbyname_r_proto=0
12981 *) gethostbyname_r_proto=0
12985 : see if gethostent_r exists
12986 set gethostent_r d_gethostent_r
12988 case "$d_gethostent_r" in
12990 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12991 case "$d_gethostent_r_proto:$usethreads" in
12992 ":define") d_gethostent_r_proto=define
12993 set d_gethostent_r_proto gethostent_r $hdrs
12997 case "$d_gethostent_r_proto" in
12999 case "$gethostent_r_proto" in
13000 ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
13001 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
13003 case "$gethostent_r_proto" in
13004 ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
13005 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
13007 case "$gethostent_r_proto" in
13008 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
13009 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
13011 case "$gethostent_r_proto" in
13012 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
13013 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
13015 case "$gethostent_r_proto" in
13016 ''|0) try='int gethostent_r(struct hostent*, char*, int);'
13017 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
13019 case "$gethostent_r_proto" in
13020 ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
13021 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
13023 case "$gethostent_r_proto" in
13024 ''|0) d_gethostent_r=undef
13025 gethostent_r_proto=0
13026 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
13027 * ) case "$gethostent_r_proto" in
13028 REENTRANT_PROTO*) ;;
13029 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
13031 echo "Prototype: $try" ;;
13034 *) case "$usethreads" in
13035 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
13037 d_gethostent_r=undef
13038 gethostent_r_proto=0
13042 *) gethostent_r_proto=0
13046 : see if prototypes for various gethostxxx netdb.h functions are available
13048 set d_gethostprotos gethostent $i_netdb netdb.h
13051 : see if getitimer exists
13052 set getitimer d_getitimer
13055 : see if getlogin exists
13056 set getlogin d_getlogin
13059 : see if getlogin_r exists
13060 set getlogin_r d_getlogin_r
13062 case "$d_getlogin_r" in
13064 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
13065 case "$d_getlogin_r_proto:$usethreads" in
13066 ":define") d_getlogin_r_proto=define
13067 set d_getlogin_r_proto getlogin_r $hdrs
13071 case "$d_getlogin_r_proto" in
13073 case "$getlogin_r_proto" in
13074 ''|0) try='int getlogin_r(char*, size_t);'
13075 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
13077 case "$getlogin_r_proto" in
13078 ''|0) try='int getlogin_r(char*, int);'
13079 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
13081 case "$getlogin_r_proto" in
13082 ''|0) try='char* getlogin_r(char*, size_t);'
13083 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
13085 case "$getlogin_r_proto" in
13086 ''|0) try='char* getlogin_r(char*, int);'
13087 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
13089 case "$getlogin_r_proto" in
13090 ''|0) d_getlogin_r=undef
13092 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
13093 * ) case "$getlogin_r_proto" in
13094 REENTRANT_PROTO*) ;;
13095 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
13097 echo "Prototype: $try" ;;
13100 *) case "$usethreads" in
13101 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
13108 *) getlogin_r_proto=0
13112 : see if getmnt exists
13113 set getmnt d_getmnt
13116 : see if getmntent exists
13117 set getmntent d_getmntent
13120 : see if getnetbyaddr exists
13121 set getnetbyaddr d_getnbyaddr
13124 : see if getnetbyname exists
13125 set getnetbyname d_getnbyname
13128 : see if getnetent exists
13129 set getnetent d_getnent
13132 : see if getnetbyaddr_r exists
13133 set getnetbyaddr_r d_getnetbyaddr_r
13135 case "$d_getnetbyaddr_r" in
13137 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13138 case "$d_getnetbyaddr_r_proto:$usethreads" in
13139 ":define") d_getnetbyaddr_r_proto=define
13140 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
13144 case "$d_getnetbyaddr_r_proto" in
13146 case "$getnetbyaddr_r_proto" in
13147 ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
13148 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
13150 case "$getnetbyaddr_r_proto" in
13151 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
13152 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
13154 case "$getnetbyaddr_r_proto" in
13155 ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
13156 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
13158 case "$getnetbyaddr_r_proto" in
13159 ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
13160 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
13162 case "$getnetbyaddr_r_proto" in
13163 ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
13164 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
13166 case "$getnetbyaddr_r_proto" in
13167 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
13168 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
13170 case "$getnetbyaddr_r_proto" in
13171 ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
13172 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
13174 case "$getnetbyaddr_r_proto" in
13175 ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
13176 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
13178 case "$getnetbyaddr_r_proto" in
13179 ''|0) d_getnetbyaddr_r=undef
13180 getnetbyaddr_r_proto=0
13181 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
13182 * ) case "$getnetbyaddr_r_proto" in
13183 REENTRANT_PROTO*) ;;
13184 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
13186 echo "Prototype: $try" ;;
13189 *) case "$usethreads" in
13190 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
13192 d_getnetbyaddr_r=undef
13193 getnetbyaddr_r_proto=0
13197 *) getnetbyaddr_r_proto=0
13201 : see if getnetbyname_r exists
13202 set getnetbyname_r d_getnetbyname_r
13204 case "$d_getnetbyname_r" in
13206 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13207 case "$d_getnetbyname_r_proto:$usethreads" in
13208 ":define") d_getnetbyname_r_proto=define
13209 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13213 case "$d_getnetbyname_r_proto" in
13215 case "$getnetbyname_r_proto" in
13216 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13217 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13219 case "$getnetbyname_r_proto" in
13220 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13221 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13223 case "$getnetbyname_r_proto" in
13224 ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13225 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13227 case "$getnetbyname_r_proto" in
13228 ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13229 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13231 case "$getnetbyname_r_proto" in
13232 ''|0) d_getnetbyname_r=undef
13233 getnetbyname_r_proto=0
13234 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13235 * ) case "$getnetbyname_r_proto" in
13236 REENTRANT_PROTO*) ;;
13237 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13239 echo "Prototype: $try" ;;
13242 *) case "$usethreads" in
13243 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13245 d_getnetbyname_r=undef
13246 getnetbyname_r_proto=0
13250 *) getnetbyname_r_proto=0
13254 : see if getnetent_r exists
13255 set getnetent_r d_getnetent_r
13257 case "$d_getnetent_r" in
13259 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13260 case "$d_getnetent_r_proto:$usethreads" in
13261 ":define") d_getnetent_r_proto=define
13262 set d_getnetent_r_proto getnetent_r $hdrs
13266 case "$d_getnetent_r_proto" in
13268 case "$getnetent_r_proto" in
13269 ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13270 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13272 case "$getnetent_r_proto" in
13273 ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13274 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13276 case "$getnetent_r_proto" in
13277 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13278 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13280 case "$getnetent_r_proto" in
13281 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13282 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13284 case "$getnetent_r_proto" in
13285 ''|0) try='int getnetent_r(struct netent*, char*, int);'
13286 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13288 case "$getnetent_r_proto" in
13289 ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13290 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13292 case "$getnetent_r_proto" in
13293 ''|0) d_getnetent_r=undef
13294 getnetent_r_proto=0
13295 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13296 * ) case "$getnetent_r_proto" in
13297 REENTRANT_PROTO*) ;;
13298 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13300 echo "Prototype: $try" ;;
13303 *) case "$usethreads" in
13304 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13306 d_getnetent_r=undef
13307 getnetent_r_proto=0
13311 *) getnetent_r_proto=0
13315 : see if prototypes for various getnetxxx netdb.h functions are available
13317 set d_getnetprotos getnetent $i_netdb netdb.h
13320 : see if getpagesize exists
13321 set getpagesize d_getpagsz
13325 : see if getprotobyname exists
13326 set getprotobyname d_getpbyname
13329 : see if getprotobynumber exists
13330 set getprotobynumber d_getpbynumber
13333 : see if getprotoent exists
13334 set getprotoent d_getpent
13337 : see if getpgid exists
13338 set getpgid d_getpgid
13341 : see if getpgrp2 exists
13342 set getpgrp2 d_getpgrp2
13345 : see if getppid exists
13346 set getppid d_getppid
13349 : see if getpriority exists
13350 set getpriority d_getprior
13353 : see if getprotobyname_r exists
13354 set getprotobyname_r d_getprotobyname_r
13356 case "$d_getprotobyname_r" in
13358 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13359 case "$d_getprotobyname_r_proto:$usethreads" in
13360 ":define") d_getprotobyname_r_proto=define
13361 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13365 case "$d_getprotobyname_r_proto" in
13367 case "$getprotobyname_r_proto" in
13368 ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13369 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13371 case "$getprotobyname_r_proto" in
13372 ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13373 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13375 case "$getprotobyname_r_proto" in
13376 ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13377 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13379 case "$getprotobyname_r_proto" in
13380 ''|0) d_getprotobyname_r=undef
13381 getprotobyname_r_proto=0
13382 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13383 * ) case "$getprotobyname_r_proto" in
13384 REENTRANT_PROTO*) ;;
13385 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13387 echo "Prototype: $try" ;;
13390 *) case "$usethreads" in
13391 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13393 d_getprotobyname_r=undef
13394 getprotobyname_r_proto=0
13398 *) getprotobyname_r_proto=0
13402 : see if getprotobynumber_r exists
13403 set getprotobynumber_r d_getprotobynumber_r
13405 case "$d_getprotobynumber_r" in
13407 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13408 case "$d_getprotobynumber_r_proto:$usethreads" in
13409 ":define") d_getprotobynumber_r_proto=define
13410 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13414 case "$d_getprotobynumber_r_proto" in
13416 case "$getprotobynumber_r_proto" in
13417 ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13418 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13420 case "$getprotobynumber_r_proto" in
13421 ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13422 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13424 case "$getprotobynumber_r_proto" in
13425 ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13426 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13428 case "$getprotobynumber_r_proto" in
13429 ''|0) d_getprotobynumber_r=undef
13430 getprotobynumber_r_proto=0
13431 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13432 * ) case "$getprotobynumber_r_proto" in
13433 REENTRANT_PROTO*) ;;
13434 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13436 echo "Prototype: $try" ;;
13439 *) case "$usethreads" in
13440 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13442 d_getprotobynumber_r=undef
13443 getprotobynumber_r_proto=0
13447 *) getprotobynumber_r_proto=0
13451 : see if getprotoent_r exists
13452 set getprotoent_r d_getprotoent_r
13454 case "$d_getprotoent_r" in
13456 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13457 case "$d_getprotoent_r_proto:$usethreads" in
13458 ":define") d_getprotoent_r_proto=define
13459 set d_getprotoent_r_proto getprotoent_r $hdrs
13463 case "$d_getprotoent_r_proto" in
13465 case "$getprotoent_r_proto" in
13466 ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13467 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13469 case "$getprotoent_r_proto" in
13470 ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13471 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13473 case "$getprotoent_r_proto" in
13474 ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13475 ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13477 case "$getprotoent_r_proto" in
13478 ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13479 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13481 case "$getprotoent_r_proto" in
13482 ''|0) d_getprotoent_r=undef
13483 getprotoent_r_proto=0
13484 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13485 * ) case "$getprotoent_r_proto" in
13486 REENTRANT_PROTO*) ;;
13487 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13489 echo "Prototype: $try" ;;
13492 *) case "$usethreads" in
13493 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13495 d_getprotoent_r=undef
13496 getprotoent_r_proto=0
13500 *) getprotoent_r_proto=0
13504 : see if prototypes for various getprotoxxx netdb.h functions are available
13506 set d_getprotoprotos getprotoent $i_netdb netdb.h
13509 : see if getprpwnam exists
13510 set getprpwnam d_getprpwnam
13513 : see if getpwent exists
13514 set getpwent d_getpwent
13517 : see if getpwent_r exists
13518 set getpwent_r d_getpwent_r
13520 case "$d_getpwent_r" in
13522 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13523 case "$d_getpwent_r_proto:$usethreads" in
13524 ":define") d_getpwent_r_proto=define
13525 set d_getpwent_r_proto getpwent_r $hdrs
13529 case "$d_getpwent_r_proto" in
13531 case "$getpwent_r_proto" in
13532 ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13533 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13535 case "$getpwent_r_proto" in
13536 ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13537 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13539 case "$getpwent_r_proto" in
13540 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13541 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13543 case "$getpwent_r_proto" in
13544 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13545 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13547 case "$getpwent_r_proto" in
13548 ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13549 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13551 case "$getpwent_r_proto" in
13552 ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13553 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13555 case "$getpwent_r_proto" in
13556 ''|0) d_getpwent_r=undef
13558 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13559 * ) case "$getpwent_r_proto" in
13560 REENTRANT_PROTO*) ;;
13561 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13563 echo "Prototype: $try" ;;
13566 *) case "$usethreads" in
13567 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13574 *) getpwent_r_proto=0
13578 : see if getpwnam_r exists
13579 set getpwnam_r d_getpwnam_r
13581 case "$d_getpwnam_r" in
13583 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13584 case "$d_getpwnam_r_proto:$usethreads" in
13585 ":define") d_getpwnam_r_proto=define
13586 set d_getpwnam_r_proto getpwnam_r $hdrs
13590 case "$d_getpwnam_r_proto" in
13592 case "$getpwnam_r_proto" in
13593 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13594 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13596 case "$getpwnam_r_proto" in
13597 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13598 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13600 case "$getpwnam_r_proto" in
13601 ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13602 ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13604 case "$getpwnam_r_proto" in
13605 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13606 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13608 case "$getpwnam_r_proto" in
13609 ''|0) d_getpwnam_r=undef
13611 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13612 * ) case "$getpwnam_r_proto" in
13613 REENTRANT_PROTO*) ;;
13614 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13616 echo "Prototype: $try" ;;
13619 *) case "$usethreads" in
13620 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13627 *) getpwnam_r_proto=0
13631 : see if getpwuid_r exists
13632 set getpwuid_r d_getpwuid_r
13634 case "$d_getpwuid_r" in
13636 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13637 case "$d_getpwuid_r_proto:$usethreads" in
13638 ":define") d_getpwuid_r_proto=define
13639 set d_getpwuid_r_proto getpwuid_r $hdrs
13643 case "$d_getpwuid_r_proto" in
13645 case "$getpwuid_r_proto" in
13646 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13647 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13649 case "$getpwuid_r_proto" in
13650 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13651 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13653 case "$getpwuid_r_proto" in
13654 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13655 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13657 case "$getpwuid_r_proto" in
13658 ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13659 ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13661 case "$getpwuid_r_proto" in
13662 ''|0) d_getpwuid_r=undef
13664 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13665 * ) case "$getpwuid_r_proto" in
13666 REENTRANT_PROTO*) ;;
13667 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13669 echo "Prototype: $try" ;;
13672 *) case "$usethreads" in
13673 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13680 *) getpwuid_r_proto=0
13685 : see if getservbyname exists
13686 set getservbyname d_getsbyname
13689 : see if getservbyport exists
13690 set getservbyport d_getsbyport
13693 : see if getservent exists
13694 set getservent d_getsent
13697 : see if getservbyname_r exists
13698 set getservbyname_r d_getservbyname_r
13700 case "$d_getservbyname_r" in
13702 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13703 case "$d_getservbyname_r_proto:$usethreads" in
13704 ":define") d_getservbyname_r_proto=define
13705 set d_getservbyname_r_proto getservbyname_r $hdrs
13709 case "$d_getservbyname_r_proto" in
13711 case "$getservbyname_r_proto" in
13712 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13713 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13715 case "$getservbyname_r_proto" in
13716 ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13717 ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13719 case "$getservbyname_r_proto" in
13720 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13721 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13723 case "$getservbyname_r_proto" in
13724 ''|0) d_getservbyname_r=undef
13725 getservbyname_r_proto=0
13726 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13727 * ) case "$getservbyname_r_proto" in
13728 REENTRANT_PROTO*) ;;
13729 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13731 echo "Prototype: $try" ;;
13734 *) case "$usethreads" in
13735 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13737 d_getservbyname_r=undef
13738 getservbyname_r_proto=0
13742 *) getservbyname_r_proto=0
13746 : see if getservbyport_r exists
13747 set getservbyport_r d_getservbyport_r
13749 case "$d_getservbyport_r" in
13751 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13752 case "$d_getservbyport_r_proto:$usethreads" in
13753 ":define") d_getservbyport_r_proto=define
13754 set d_getservbyport_r_proto getservbyport_r $hdrs
13758 case "$d_getservbyport_r_proto" in
13760 case "$getservbyport_r_proto" in
13761 ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13762 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13764 case "$getservbyport_r_proto" in
13765 ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13766 ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13768 case "$getservbyport_r_proto" in
13769 ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13770 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13772 case "$getservbyport_r_proto" in
13773 ''|0) d_getservbyport_r=undef
13774 getservbyport_r_proto=0
13775 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13776 * ) case "$getservbyport_r_proto" in
13777 REENTRANT_PROTO*) ;;
13778 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13780 echo "Prototype: $try" ;;
13783 *) case "$usethreads" in
13784 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13786 d_getservbyport_r=undef
13787 getservbyport_r_proto=0
13791 *) getservbyport_r_proto=0
13795 : see if getservent_r exists
13796 set getservent_r d_getservent_r
13798 case "$d_getservent_r" in
13800 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13801 case "$d_getservent_r_proto:$usethreads" in
13802 ":define") d_getservent_r_proto=define
13803 set d_getservent_r_proto getservent_r $hdrs
13807 case "$d_getservent_r_proto" in
13809 case "$getservent_r_proto" in
13810 ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13811 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13813 case "$getservent_r_proto" in
13814 ''|0) try='int getservent_r(struct servent*, char*, int);'
13815 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13817 case "$getservent_r_proto" in
13818 ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13819 ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13821 case "$getservent_r_proto" in
13822 ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13823 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13825 case "$getservent_r_proto" in
13826 ''|0) d_getservent_r=undef
13827 getservent_r_proto=0
13828 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13829 * ) case "$getservent_r_proto" in
13830 REENTRANT_PROTO*) ;;
13831 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13833 echo "Prototype: $try" ;;
13836 *) case "$usethreads" in
13837 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13839 d_getservent_r=undef
13840 getservent_r_proto=0
13844 *) getservent_r_proto=0
13848 : see if prototypes for various getservxxx netdb.h functions are available
13850 set d_getservprotos getservent $i_netdb netdb.h
13853 : see if getspnam exists
13854 set getspnam d_getspnam
13857 : see if this is a shadow.h system
13858 set shadow.h i_shadow
13861 : see if getspnam_r exists
13862 set getspnam_r d_getspnam_r
13864 case "$d_getspnam_r" in
13866 hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13867 case "$d_getspnam_r_proto:$usethreads" in
13868 ":define") d_getspnam_r_proto=define
13869 set d_getspnam_r_proto getspnam_r $hdrs
13873 case "$d_getspnam_r_proto" in
13875 case "$getspnam_r_proto" in
13876 ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13877 ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13879 case "$getspnam_r_proto" in
13880 ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13881 ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13883 case "$getspnam_r_proto" in
13884 ''|0) d_getspnam_r=undef
13886 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13887 * ) case "$getspnam_r_proto" in
13888 REENTRANT_PROTO*) ;;
13889 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13891 echo "Prototype: $try" ;;
13894 *) case "$usethreads" in
13895 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13902 *) getspnam_r_proto=0
13906 : see if gettimeofday or ftime exists
13907 set gettimeofday d_gettimeod
13909 case "$d_gettimeod" in
13915 val="$undef"; set d_ftime; eval $setvar
13918 case "$d_gettimeod$d_ftime" in
13921 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13925 : see if gmtime_r exists
13926 set gmtime_r d_gmtime_r
13928 case "$d_gmtime_r" in
13930 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13931 case "$d_gmtime_r_proto:$usethreads" in
13932 ":define") d_gmtime_r_proto=define
13933 set d_gmtime_r_proto gmtime_r $hdrs
13937 case "$d_gmtime_r_proto" in
13939 case "$gmtime_r_proto" in
13940 ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13941 ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13943 case "$gmtime_r_proto" in
13944 ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13945 ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13947 case "$gmtime_r_proto" in
13948 ''|0) d_gmtime_r=undef
13950 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13951 * ) case "$gmtime_r_proto" in
13952 REENTRANT_PROTO*) ;;
13953 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13955 echo "Prototype: $try" ;;
13958 *) case "$usethreads" in
13959 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13966 *) gmtime_r_proto=0
13970 : see if hasmntopt exists
13971 set hasmntopt d_hasmntopt
13974 : see if this is a netinet/in.h or sys/in.h system
13975 set netinet/in.h i_niin sys/in.h i_sysin
13978 : see if arpa/inet.h has to be included
13979 set arpa/inet.h i_arpainet
13982 : see if htonl --and friends-- exists
13987 : Maybe they are macros.
13990 $cat >htonl.c <<EOM
13992 #include <sys/types.h>
13993 #$i_niin I_NETINET_IN
13995 #$i_arpainet I_ARPA_INET
13996 #ifdef I_NETINET_IN
13997 #include <netinet/in.h>
14000 #include <sys/in.h>
14003 #include <arpa/inet.h>
14006 printf("Defined as a macro.");
14009 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
14010 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
14012 echo "But it seems to be defined as a macro." >&4
14020 : see if ilogbl exists
14021 set ilogbl d_ilogbl
14026 if set index val -f; eval $csym; $val; then
14027 if set strchr val -f d_strchr; eval $csym; $val; then
14028 if $contains strchr "$strings" >/dev/null 2>&1 ; then
14031 echo "strchr() found." >&4
14035 echo "index() found." >&4
14040 echo "index() found." >&4
14043 if set strchr val -f d_strchr; eval $csym; $val; then
14046 echo "strchr() found." >&4
14048 echo "No index() or strchr() found!" >&4
14053 set d_strchr; eval $setvar
14055 set d_index; eval $setvar
14057 : check whether inet_aton exists
14058 set inet_aton d_inetaton
14063 $cat >isascii.c <<EOCP
14066 #$i_stdlib I_STDLIB
14068 #include <stdlib.h>
14079 if eval $compile; then
14080 echo "isascii() found." >&4
14083 echo "isascii() NOT found." >&4
14090 : see if isfinite exists
14091 set isfinite d_isfinite
14094 : see if isinf exists
14098 : see if isnan exists
14102 : see if isnanl exists
14103 set isnanl d_isnanl
14106 : see if killpg exists
14107 set killpg d_killpg
14110 : see if lchown exists
14112 $cat > try.c <<'EOCP'
14113 /* System header to define __stub macros and hopefully few prototypes,
14114 which can conflict with char lchown(); below. */
14115 #include <assert.h>
14116 /* Override any gcc2 internal prototype to avoid an error. */
14117 /* We use char because int might match the return type of a gcc2
14118 builtin and then its argument prototype would still apply. */
14121 /* The GNU C library defines this for functions which it implements
14122 to always fail with ENOSYS. Some functions are actually named
14123 something starting with __ and the normal name is an alias. */
14124 #if defined (__stub_lchown) || defined (__stub___lchown)
14132 if eval $compile; then
14133 $echo "lchown() found." >&4
14136 $echo "lchown() NOT found." >&4
14142 : See if number of significant digits in a double precision number is known
14144 $cat >ldbl_dig.c <<EOM
14145 #$i_limits I_LIMITS
14148 #include <limits.h>
14154 printf("Contains LDBL_DIG");
14157 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
14158 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
14159 echo "LDBL_DIG found." >&4
14162 echo "LDBL_DIG NOT found." >&4
14169 : see if this is a math.h system
14173 d_libm_lib_version="$undef"
14176 : check to see if math.h defines _LIB_VERSION
14178 echo "Checking to see if your libm supports _LIB_VERSION..." >&4
14180 #include <unistd.h>
14182 int main (int argc, char *argv[])
14184 printf ("%d\n", _LIB_VERSION);
14189 if eval $compile; then
14191 echo "Yes, it does ($foo)" >&4
14192 d_libm_lib_version="$define"
14194 echo "No, it does not (probably harmless)\n" >&4
14196 $rm -f try.* try core core.try.*
14201 : see if link exists
14205 : see if localtime_r exists
14206 set localtime_r d_localtime_r
14208 case "$d_localtime_r" in
14210 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14211 case "$d_localtime_r_proto:$usethreads" in
14212 ":define") d_localtime_r_proto=define
14213 set d_localtime_r_proto localtime_r $hdrs
14217 case "$d_localtime_r_proto" in
14219 case "$localtime_r_proto" in
14220 ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14221 ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14223 case "$localtime_r_proto" in
14224 ''|0) try='int localtime_r(const time_t*, struct tm*);'
14225 ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14227 case "$localtime_r_proto" in
14228 ''|0) d_localtime_r=undef
14229 localtime_r_proto=0
14230 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14231 * ) case "$localtime_r_proto" in
14232 REENTRANT_PROTO*) ;;
14233 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14235 echo "Prototype: $try" ;;
14238 *) case "$usethreads" in
14239 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14241 d_localtime_r=undef
14242 localtime_r_proto=0
14246 *) localtime_r_proto=0
14250 : see if localeconv exists
14251 set localeconv d_locconv
14254 : see if lockf exists
14258 : see if prototype for lseek is available
14260 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14263 : see if lstat exists
14267 : see if madvise exists
14268 set madvise d_madvise
14271 : see if malloc_size exists
14272 set malloc_size d_malloc_size
14275 : see if malloc_size_good exists
14276 set malloc_good_size d_malloc_good_size
14279 : see if mblen exists
14283 : see if mbstowcs exists
14284 set mbstowcs d_mbstowcs
14287 : see if mbtowc exists
14288 set mbtowc d_mbtowc
14291 : see if memchr exists
14292 set memchr d_memchr
14295 : see if memcmp exists
14296 set memcmp d_memcmp
14299 : see if memcpy exists
14300 set memcpy d_memcpy
14303 : see if memmove exists
14304 set memmove d_memmove
14307 : see if memset exists
14308 set memset d_memset
14311 : see if mkdir exists
14315 : see if mkdtemp exists
14316 set mkdtemp d_mkdtemp
14319 : see if mkfifo exists
14320 set mkfifo d_mkfifo
14323 : see if mkstemp exists
14324 set mkstemp d_mkstemp
14327 : see if mkstemps exists
14328 set mkstemps d_mkstemps
14331 : see if mktime exists
14332 set mktime d_mktime
14335 : see if this is a sys/mman.h system
14336 set sys/mman.h i_sysmman
14339 : see if mmap exists
14342 : see what shmat returns
14343 : default to something harmless
14345 case "$i_sysmman$d_mmap" in
14347 $cat >mmap.c <<'END'
14348 #include <sys/mman.h>
14351 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14356 echo "and it returns ($mmaptype)." >&4
14362 : see if sqrtl exists
14366 : see if scalbnl exists
14367 set scalbnl d_scalbnl
14370 : see if modfl exists
14374 : see if prototype for modfl is available
14376 set d_modflproto modfl $i_math math.h
14379 d_modfl_pow32_bug="$undef"
14381 case "$d_longdbl$d_modfl" in
14384 Checking to see whether your modfl() is okay for large values...
14390 if $test "X$d_modflproto" != "X$define"; then
14391 $cat >>try.c <<EOCP
14392 /* Sigh. many current glibcs provide the function, but do not prototype it. */
14393 long double modfl (long double, long double *);
14396 $cat >>try.c <<EOCP
14398 long double nv = 4294967303.15;
14404 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14408 case "$osname:$gccversion" in
14409 aix:) saveccflags="$ccflags"
14410 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14413 if eval $compile; then
14416 *" 4294967303.150000 1.150000 4294967302.000000")
14417 echo >&4 "Your modfl() is broken for large values."
14418 d_modfl_pow32_bug="$define"
14420 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14424 *" 4294967303.150000 0.150000 4294967303.000000")
14425 echo >&4 "Your modfl() seems okay for large values."
14427 *) echo >&4 "I don't understand your modfl() at all."
14431 $rm -f try.* try core core.try.*
14433 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14436 case "$osname:$gccversion" in
14437 aix:) ccflags="$saveccflags" ;; # restore
14442 if $test "$uselongdouble" = "$define"; then
14444 if $test "$d_sqrtl" != "$define"; then
14445 message="$message sqrtl"
14447 if $test "$d_modfl" != "$define"; then
14448 if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14449 echo "You have both aintl and copysignl, so I can emulate modfl."
14451 message="$message modfl"
14454 if $test "$d_frexpl" != "$define"; then
14455 if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14456 echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14458 message="$message frexpl"
14462 if $test "$message" != ""; then
14465 *** You requested the use of long doubles but you do not seem to have
14466 *** the following mathematical functions needed for long double support:
14468 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14469 *** Cannot continue, aborting.
14477 : see if mprotect exists
14478 set mprotect d_mprotect
14481 : see if msgctl exists
14482 set msgctl d_msgctl
14485 : see if msgget exists
14486 set msgget d_msgget
14489 : see if msgsnd exists
14490 set msgsnd d_msgsnd
14493 : see if msgrcv exists
14494 set msgrcv d_msgrcv
14497 : see how much of the 'msg*(2)' library is present.
14500 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14501 *"$undef"*) h_msg=false;;
14505 case "`ipcs 2>&1`" in
14506 "SVID messages"*"not configured"*)
14507 echo "Your $osname does not have the msg*(2) configured." >&4
14510 set msgctl d_msgctl
14512 set msgget d_msgget
14514 set msgsnd d_msgsnd
14516 set msgrcv d_msgrcv
14522 : we could also check for sys/ipc.h ...
14523 if $h_msg && $test `./findhdr sys/msg.h`; then
14524 echo "You have the full msg*(2) library." >&4
14527 echo "You don't have the full msg*(2) library." >&4
14535 echo "Checking to see if your system supports struct msghdr..." >&4
14536 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14538 case "$d_msghdr_s" in
14539 "$define") echo "Yes, it does." ;;
14540 *) echo "No, it doesn't." ;;
14544 : see if msync exists
14548 : see if munmap exists
14549 set munmap d_munmap
14552 : see if nice exists
14556 : see if this is a langinfo.h system
14557 set langinfo.h i_langinfo
14560 : see if nl_langinfo exists
14561 set nl_langinfo d_nl_langinfo
14564 : check for length of character
14566 case "$charsize" in
14568 echo "Checking to see how big your characters are (hey, you never know)..." >&4
14571 #$i_stdlib I_STDLIB
14573 #include <stdlib.h>
14577 printf("%d\n", (int)sizeof(char));
14582 if eval $compile_ok; then
14586 echo "(I can't seem to compile the test program. Guessing...)"
14593 rp="What is the size of a character (in bytes)?"
14598 : check for volatile keyword
14600 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14601 $cat >try.c <<'EOCP'
14604 typedef struct _goo_struct goo_struct;
14605 goo_struct * volatile goo = ((goo_struct *)0);
14606 struct _goo_struct {
14611 typedef unsigned short foo_t;
14612 char *volatile foo;
14614 volatile foo_t blech;
14618 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14620 echo "Yup, it does."
14623 echo "Nope, it doesn't."
14631 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14633 case "$use64bitint:$d_quad:$quadtype" in
14636 uvtype="$uquadtype"
14641 uvtype="unsigned long"
14647 case "$uselongdouble:$d_longdbl" in
14649 nvtype="long double"
14650 nvsize=$longdblsize
14657 $echo "(IV will be "$ivtype", $ivsize bytes)"
14658 $echo "(UV will be "$uvtype", $uvsize bytes)"
14659 $echo "(NV will be "$nvtype", $nvsize bytes)"
14662 #$i_inttypes I_INTTYPES
14664 #include <inttypes.h>
14669 int8_t i = INT8_MAX;
14670 uint8_t u = UINT8_MAX;
14671 printf("int8_t\n");
14674 int16_t i = INT16_MAX;
14675 uint16_t i = UINT16_MAX;
14676 printf("int16_t\n");
14679 int32_t i = INT32_MAX;
14680 uint32_t u = UINT32_MAX;
14681 printf("int32_t\n");
14687 '') case "$charsize" in
14689 u8type="unsigned char"
14698 if eval $compile; then
14699 case "`$run ./try`" in
14700 int8_t) i8type=int8_t
14710 '') if $test $charsize -ge 1; then
14712 u8type="unsigned char"
14720 '') case "$shortsize" in
14722 u16type="unsigned short"
14730 '') set try -DINT16
14731 if eval $compile; then
14732 case "`$run ./try`" in
14744 '') if $test $shortsize -ge 2; then
14746 u16type="unsigned short"
14754 '') case "$longsize" in
14756 u32type="unsigned long"
14760 *) case "$intsize" in
14762 u32type="unsigned int"
14772 '') set try -DINT32
14773 if eval $compile; then
14774 case "`$run ./try`" in
14786 '') if $test $intsize -ge 4; then
14788 u32type="unsigned int"
14796 '') case "$d_quad:$quadtype" in
14798 i64type="$quadtype"
14799 u64type="$uquadtype"
14807 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14808 : volatile so that the compiler has to store it out to memory.
14809 if test X"$d_volatile" = X"$define"; then
14814 #$i_stdlib I_STDLIB
14816 #include <stdlib.h>
14818 #include <sys/types.h>
14819 #include <signal.h>
14821 $volatile int bletched = 0;
14822 $signal_t blech(s) int s; { bletched = 1; }
14827 int n = 8 * $uvsize;
14830 signal(SIGFPE, blech);
14833 for (i = 0; i < n; i++) {
14834 u = u << 1 | ($uvtype)1;
14836 if (($uvtype)d != u)
14840 d = ($nvtype)(u - 1);
14841 if (($uvtype)d != (u - 1))
14849 printf("%d\n", ((i == n) ? -n : i));
14855 d_nv_preserves_uv="$undef"
14856 if eval $compile; then
14857 nv_preserves_uv_bits="`$run ./try`"
14859 case "$nv_preserves_uv_bits" in
14861 nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14862 $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs." 2>&1
14863 d_nv_preserves_uv="$define"
14865 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs." 2>&1
14866 d_nv_preserves_uv="$undef" ;;
14867 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
14868 nv_preserves_uv_bits="$undef" ;;
14873 $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
14874 : volatile so that the compiler has to store it out to memory.
14875 if test X"$d_volatile" = X"$define"; then
14880 #$i_stdlib I_STDLIB
14882 #include <stdlib.h>
14884 #$i_string I_STRING
14886 # include <string.h>
14888 # include <strings.h>
14890 #include <sys/types.h>
14891 #include <signal.h>
14893 $volatile int bletched = 0;
14894 $signal_t blech(s) int s; { bletched = 1; }
14897 int checkit($nvtype d, char *where) {
14898 unsigned char *p = (char *)&d;
14899 unsigned char *end = p + sizeof(d);
14909 printf("No - %s: 0x", where);
14911 printf ("%02X", *p++);
14916 int main(int argc, char **argv) {
14919 fail += checkit(d, "0.0");
14921 /* The compiler shouldn't be assuming that bletched is 0 */
14924 fail += checkit(d, "bleched");
14927 signal(SIGFPE, blech);
14930 /* Paranoia - the compiler should have no way of knowing that ANSI says
14931 that argv[argc] will always be NULL. Actually, if it did assume this it
14932 would be buggy, as this is C and main() can be called from elsewhere in
14934 d = argv[argc] ? 1 : 0;
14937 printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d);
14940 fail += checkit(d, "ternary");
14942 memset(&d, sizeof(d), argv[argc] ? 1 : 0);
14945 printf("No - memset doesn't give 0.0\n");
14946 /* This might just blow up: */
14947 printf("(gives %g)\n", d);
14953 printf("No - something bleched\n");
14958 printf("No - %d fail(s)\n", fail);
14967 d_nv_zero_is_allbits_zero="$undef"
14968 if eval $compile; then
14974 0.0 is represented as all bits zero in memory
14976 d_nv_zero_is_allbits_zero="$define"
14979 0.0 is not represented as all bits zero in memory
14981 d_nv_zero_is_allbits_zero="$undef"
14986 0.0 is not represented as all bits zero in memory
14988 d_nv_zero_is_allbits_zero="$undef"
14996 : check for off64_t
14998 echo "Checking to see if you have off64_t..." >&4
15000 #include <sys/types.h>
15001 #include <unistd.h>
15002 int main() { off64_t x = 7; }
15005 if eval $compile; then
15007 echo "You have off64_t."
15010 echo "You do not have off64_t."
15011 case "$lseeksize" in
15012 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
15019 : how to create joinable pthreads
15020 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
15022 echo "Checking what constant to use for creating joinable pthreads..." >&4
15023 $cat >try.c <<'EOCP'
15024 #include <pthread.h>
15026 int detachstate = JOINABLE;
15029 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
15030 if eval $compile; then
15031 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
15032 val="$undef" # Yes, undef.
15033 set d_old_pthread_create_joinable
15036 set old_pthread_create_joinable
15039 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
15040 if eval $compile; then
15041 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
15043 set d_old_pthread_create_joinable
15045 val=PTHREAD_CREATE_UNDETACHED
15046 set old_pthread_create_joinable
15049 set try -DJOINABLE=__UNDETACHED
15050 if eval $compile; then
15051 echo "You seem to use __UNDETACHED." >&4
15053 set d_old_pthread_create_joinable
15056 set old_pthread_create_joinable
15059 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
15061 set d_old_pthread_create_joinable
15064 set old_pthread_create_joinable
15071 d_old_pthread_create_joinable="$undef"
15072 old_pthread_create_joinable=""
15075 : see if pause exists
15079 : see if pipe exists
15083 : see if poll exists
15087 : see if readlink exists
15088 set readlink d_readlink
15094 case "$d_readlink" in
15096 if $issymlink /proc/self/exe ; then
15097 $ls -l /proc/self/exe > reflect
15098 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15099 echo "You have Linux-like /proc/self/exe."
15100 procselfexe='"/proc/self/exe"'
15104 if $issymlink /proc/curproc/file ; then
15105 $ls -l /proc/curproc/file > reflect
15106 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15107 echo "You have BSD-like /proc/curproc/file."
15108 procselfexe='"/proc/curproc/file"'
15118 : see whether the pthread_atfork exists
15120 #include <pthread.h>
15123 #ifdef PTHREAD_ATFORK
15124 pthread_atfork(NULL,NULL,NULL);
15129 : see if pthread_atfork exists
15130 set try -DPTHREAD_ATFORK
15131 if eval $compile; then
15136 case "$usethreads" in
15139 $define) echo 'pthread_atfork found.' >&4 ;;
15140 *) echo 'pthread_atfork NOT found.' >&4 ;;
15143 set d_pthread_atfork
15146 : see if pthread_attr_setscope exists
15147 set pthread_attr_setscope d_pthread_attr_setscope
15151 : see whether the various POSIXish _yields exist
15153 #include <pthread.h>
15159 #ifdef PTHREAD_YIELD
15162 #ifdef PTHREAD_YIELD_NULL
15163 pthread_yield(NULL);
15169 : see if sched_yield exists
15170 set try -DSCHED_YIELD
15171 if eval $compile; then
15173 sched_yield='sched_yield()'
15177 case "$usethreads" in
15180 $define) echo 'sched_yield() found.' >&4 ;;
15181 *) echo 'sched_yield() NOT found.' >&4 ;;
15187 : see if pthread_yield exists
15188 set try -DPTHREAD_YIELD
15189 if eval $compile; then
15191 case "$sched_yield" in
15192 '') sched_yield='pthread_yield()' ;;
15195 set try -DPTHREAD_YIELD_NULL
15196 if eval $compile; then
15198 case "$sched_yield" in
15199 '') sched_yield='pthread_yield(NULL)' ;;
15205 case "$usethreads" in
15208 $define) echo 'pthread_yield() found.' >&4 ;;
15209 *) echo 'pthread_yield() NOT found.' >&4 ;;
15213 set d_pthread_yield
15216 case "$sched_yield" in
15217 '') sched_yield=undef ;;
15222 : see if random_r exists
15223 set random_r d_random_r
15225 case "$d_random_r" in
15227 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15228 case "$d_random_r_proto:$usethreads" in
15229 ":define") d_random_r_proto=define
15230 set d_random_r_proto random_r $hdrs
15234 case "$d_random_r_proto" in
15236 case "$random_r_proto" in
15237 ''|0) try='int random_r(int*, struct random_data*);'
15238 ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
15240 case "$random_r_proto" in
15241 ''|0) try='int random_r(long*, struct random_data*);'
15242 ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
15244 case "$random_r_proto" in
15245 ''|0) try='int random_r(struct random_data*, int32_t*);'
15246 ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
15248 case "$random_r_proto" in
15249 ''|0) d_random_r=undef
15251 echo "Disabling random_r, cannot determine prototype." >&4 ;;
15252 * ) case "$random_r_proto" in
15253 REENTRANT_PROTO*) ;;
15254 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
15256 echo "Prototype: $try" ;;
15259 *) case "$usethreads" in
15260 define) echo "random_r has no prototype, not using it." >&4 ;;
15267 *) random_r_proto=0
15271 : see if readdir and friends exist
15272 set readdir d_readdir
15274 set seekdir d_seekdir
15276 set telldir d_telldir
15278 set rewinddir d_rewinddir
15281 : see if readdir64_r exists
15282 set readdir64_r d_readdir64_r
15284 case "$d_readdir64_r" in
15286 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15287 case "$d_readdir64_r_proto:$usethreads" in
15288 ":define") d_readdir64_r_proto=define
15289 set d_readdir64_r_proto readdir64_r $hdrs
15293 case "$d_readdir64_r_proto" in
15295 case "$readdir64_r_proto" in
15296 ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
15297 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
15299 case "$readdir64_r_proto" in
15300 ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
15301 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
15303 case "$readdir64_r_proto" in
15304 ''|0) d_readdir64_r=undef
15305 readdir64_r_proto=0
15306 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
15307 * ) case "$readdir64_r_proto" in
15308 REENTRANT_PROTO*) ;;
15309 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
15311 echo "Prototype: $try" ;;
15314 *) case "$usethreads" in
15315 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
15317 d_readdir64_r=undef
15318 readdir64_r_proto=0
15322 *) readdir64_r_proto=0
15326 : see if readdir_r exists
15327 set readdir_r d_readdir_r
15329 case "$d_readdir_r" in
15331 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15332 case "$d_readdir_r_proto:$usethreads" in
15333 ":define") d_readdir_r_proto=define
15334 set d_readdir_r_proto readdir_r $hdrs
15338 case "$d_readdir_r_proto" in
15340 case "$readdir_r_proto" in
15341 ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
15342 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
15344 case "$readdir_r_proto" in
15345 ''|0) try='int readdir_r(DIR*, struct dirent*);'
15346 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
15348 case "$readdir_r_proto" in
15349 ''|0) d_readdir_r=undef
15351 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
15352 * ) case "$readdir_r_proto" in
15353 REENTRANT_PROTO*) ;;
15354 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
15356 echo "Prototype: $try" ;;
15359 *) case "$usethreads" in
15360 define) echo "readdir_r has no prototype, not using it." >&4 ;;
15367 *) readdir_r_proto=0
15371 : see if readv exists
15375 : see if recvmsg exists
15376 set recvmsg d_recvmsg
15379 : see if rename exists
15380 set rename d_rename
15383 : see if rmdir exists
15387 : see if memory.h is available.
15392 : See if it conflicts with string.h
15398 $cppstdin $cppflags $cppminus < $strings > mem.h
15399 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15401 echo "We won't be including <memory.h>."
15411 : can bcopy handle overlapping blocks?
15414 case "$d_memmove" in
15415 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15416 *) case "$d_bcopy" in
15418 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15420 #$i_memory I_MEMORY
15421 #$i_stdlib I_STDLIB
15422 #$i_string I_STRING
15423 #$i_unistd I_UNISTD
15425 $cat >>try.c <<'EOCP'
15428 # include <memory.h>
15431 # include <stdlib.h>
15434 # include <string.h>
15436 # include <strings.h>
15439 # include <unistd.h> /* Needed for NetBSD */
15443 char buf[128], abc[128];
15449 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15450 try to store the string in read-only memory. */
15451 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15453 for (align = 7; align >= 0; align--) {
15454 for (len = 36; len; len--) {
15456 bcopy(abc, b, len);
15457 for (off = 1; off <= len; off++) {
15458 bcopy(b, b+off, len);
15459 bcopy(b+off, b, len);
15460 if (bcmp(b, abc, len))
15469 if eval $compile_ok; then
15470 if ./try 2>/dev/null; then
15471 echo "Yes, it can."
15474 echo "It can't, sorry."
15477 echo "(I can't compile the test program, so we'll assume not...)"
15481 $rm -f try.* try core
15487 : can memcpy handle overlapping blocks?
15490 case "$d_memmove" in
15491 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15492 *) case "$d_memcpy" in
15494 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15496 #$i_memory I_MEMORY
15497 #$i_stdlib I_STDLIB
15498 #$i_string I_STRING
15499 #$i_unistd I_UNISTD
15501 $cat >>try.c <<'EOCP'
15504 # include <memory.h>
15507 # include <stdlib.h>
15510 # include <string.h>
15512 # include <strings.h>
15515 # include <unistd.h> /* Needed for NetBSD */
15519 char buf[128], abc[128];
15525 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15526 try to store the string in read-only memory. */
15527 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15529 for (align = 7; align >= 0; align--) {
15530 for (len = 36; len; len--) {
15532 memcpy(b, abc, len);
15533 for (off = 1; off <= len; off++) {
15534 memcpy(b+off, b, len);
15535 memcpy(b, b+off, len);
15536 if (memcmp(b, abc, len))
15545 if eval $compile_ok; then
15546 if ./try 2>/dev/null; then
15547 echo "Yes, it can."
15550 echo "It can't, sorry."
15553 echo "(I can't compile the test program, so we'll assume not...)"
15557 $rm -f try.* try core
15563 : can memcmp be trusted to compare relative magnitude?
15565 case "$d_memcmp" in
15568 echo "Checking if your memcmp() can compare relative magnitude..." >&4
15570 #$i_memory I_MEMORY
15571 #$i_stdlib I_STDLIB
15572 #$i_string I_STRING
15573 #$i_unistd I_UNISTD
15575 $cat >>try.c <<'EOCP'
15578 # include <memory.h>
15581 # include <stdlib.h>
15584 # include <string.h>
15586 # include <strings.h>
15589 # include <unistd.h> /* Needed for NetBSD */
15595 if ((a < b) && memcmp(&a, &b, 1) < 0)
15601 if eval $compile_ok; then
15602 if $run ./try 2>/dev/null; then
15603 echo "Yes, it can."
15606 echo "No, it can't (it uses signed chars)."
15609 echo "(I can't compile the test program, so we'll assume not...)"
15613 $rm -f try.* try core
15617 : see if prototype for sbrk is available
15619 set d_sbrkproto sbrk $i_unistd unistd.h
15622 : see if select exists
15623 set select d_select
15626 : see if semctl exists
15627 set semctl d_semctl
15630 : see if semget exists
15631 set semget d_semget
15634 : see if semop exists
15638 : see how much of the 'sem*(2)' library is present.
15641 case "$d_semctl$d_semget$d_semop" in
15642 *"$undef"*) h_sem=false;;
15646 case "`ipcs 2>&1`" in
15647 "SVID messages"*"not configured"*)
15648 echo "Your $osname does not have the sem*(2) configured." >&4
15651 set semctl d_semctl
15653 set semget d_semget
15661 : we could also check for sys/ipc.h ...
15662 if $h_sem && $test `./findhdr sys/sem.h`; then
15663 echo "You have the full sem*(2) library." >&4
15666 echo "You don't have the full sem*(2) library." >&4
15672 : see whether sys/sem.h defines union semun
15674 $cat > try.c <<'END'
15675 #include <sys/types.h>
15676 #include <sys/ipc.h>
15677 #include <sys/sem.h>
15678 int main () { union semun semun; semun.buf = 0; }
15681 if eval $compile; then
15682 echo "You have union semun in <sys/sem.h>." >&4
15685 echo "You do not have union semun in <sys/sem.h>." >&4
15692 : see how to do semctl IPC_STAT
15699 # define S_IRUSR S_IREAD
15700 # define S_IWUSR S_IWRITE
15701 # define S_IXUSR S_IEXEC
15703 # define S_IRUSR 0400
15704 # define S_IWUSR 0200
15705 # define S_IXUSR 0100
15707 # define S_IRGRP (S_IRUSR>>3)
15708 # define S_IWGRP (S_IWUSR>>3)
15709 # define S_IXGRP (S_IXUSR>>3)
15710 # define S_IROTH (S_IRUSR>>6)
15711 # define S_IWOTH (S_IWUSR>>6)
15712 # define S_IXOTH (S_IXUSR>>6)
15715 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15716 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15717 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15720 : see whether semctl IPC_STAT can use union semun
15721 case "$d_semctl_semun" in
15725 #include <sys/types.h>
15726 #include <sys/ipc.h>
15727 #include <sys/sem.h>
15728 #include <sys/stat.h>
15735 #$d_union_semun HAS_UNION_SEMUN
15738 #ifndef HAS_UNION_SEMUN
15741 struct semid_ds *buf;
15742 unsigned short *array;
15748 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15749 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15751 struct semid_ds argbuf;
15754 st = semctl(sem, 0, IPC_STAT, arg);
15758 # endif /* IPC_STAT */
15759 printf("semctl IPC_STAT failed: errno = %d\n", errno);
15761 if (semctl(sem, 0, IPC_RMID, arg) != 0)
15762 # endif /* IPC_RMID */
15763 printf("semctl IPC_RMID failed: errno = %d\n", errno);
15765 #endif /* IPC_PRIVATE && ... */
15766 printf("semget failed: errno = %d\n", errno);
15771 if eval $compile; then
15774 semun) val="$define" ;;
15782 case "$d_semctl_semun" in
15784 echo "You can use union semun for semctl IPC_STAT." >&4
15787 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
15792 : see whether semctl IPC_STAT can use struct semid_ds pointer
15793 case "$d_semctl_semid_ds" in
15796 $cat > try.c <<'END'
15797 #include <sys/types.h>
15798 #include <sys/ipc.h>
15799 #include <sys/sem.h>
15800 #include <sys/stat.h>
15808 struct semid_ds arg;
15811 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15812 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15815 st = semctl(sem, 0, IPC_STAT, &arg);
15817 printf("semid_ds\n");
15819 # endif /* IPC_STAT */
15820 printf("semctl IPC_STAT failed: errno = %d\n", errno);
15822 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15823 # endif /* IPC_RMID */
15824 printf("semctl IPC_RMID failed: errno = %d\n", errno);
15826 #endif /* IPC_PRIVATE && ... */
15827 printf("semget failed: errno = %d\n", errno);
15833 if eval $compile; then
15836 semid_ds) val="$define" ;;
15840 set d_semctl_semid_ds
15844 case "$d_semctl_semid_ds" in
15846 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15848 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15855 # We do not have the full sem*(2) library, so assume we can not
15861 set d_semctl_semid_ds
15866 : see if sendmsg exists
15867 set sendmsg d_sendmsg
15870 : see if setegid exists
15871 set setegid d_setegid
15874 : see if seteuid exists
15875 set seteuid d_seteuid
15878 : see if setgrent exists
15879 set setgrent d_setgrent
15882 : see if setgrent_r exists
15883 set setgrent_r d_setgrent_r
15885 case "$d_setgrent_r" in
15887 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15888 case "$d_setgrent_r_proto:$usethreads" in
15889 ":define") d_setgrent_r_proto=define
15890 set d_setgrent_r_proto setgrent_r $hdrs
15894 case "$d_setgrent_r_proto" in
15896 case "$setgrent_r_proto" in
15897 ''|0) try='int setgrent_r(FILE**);'
15898 ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15900 case "$setgrent_r_proto" in
15901 ''|0) try='void setgrent_r(FILE**);'
15902 ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15904 case "$setgrent_r_proto" in
15905 ''|0) d_setgrent_r=undef
15907 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15908 * ) case "$setgrent_r_proto" in
15909 REENTRANT_PROTO*) ;;
15910 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15912 echo "Prototype: $try" ;;
15915 *) case "$usethreads" in
15916 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15923 *) setgrent_r_proto=0
15927 : see if sethostent exists
15928 set sethostent d_sethent
15931 : see if sethostent_r exists
15932 set sethostent_r d_sethostent_r
15934 case "$d_sethostent_r" in
15936 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15937 case "$d_sethostent_r_proto:$usethreads" in
15938 ":define") d_sethostent_r_proto=define
15939 set d_sethostent_r_proto sethostent_r $hdrs
15943 case "$d_sethostent_r_proto" in
15945 case "$sethostent_r_proto" in
15946 ''|0) try='int sethostent_r(int, struct hostent_data*);'
15947 ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15949 case "$sethostent_r_proto" in
15950 ''|0) try='void sethostent_r(int, struct hostent_data*);'
15951 ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15953 case "$sethostent_r_proto" in
15954 ''|0) d_sethostent_r=undef
15955 sethostent_r_proto=0
15956 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15957 * ) case "$sethostent_r_proto" in
15958 REENTRANT_PROTO*) ;;
15959 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15961 echo "Prototype: $try" ;;
15964 *) case "$usethreads" in
15965 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15967 d_sethostent_r=undef
15968 sethostent_r_proto=0
15972 *) sethostent_r_proto=0
15976 : see if setitimer exists
15977 set setitimer d_setitimer
15980 : see if setlinebuf exists
15981 set setlinebuf d_setlinebuf
15984 : see if setlocale exists
15985 set setlocale d_setlocale
15988 : see if locale.h is available
15989 set locale.h i_locale
15992 : see if setlocale_r exists
15993 set setlocale_r d_setlocale_r
15995 case "$d_setlocale_r" in
15997 hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15998 case "$d_setlocale_r_proto:$usethreads" in
15999 ":define") d_setlocale_r_proto=define
16000 set d_setlocale_r_proto setlocale_r $hdrs
16004 case "$d_setlocale_r_proto" in
16006 case "$setlocale_r_proto" in
16007 ''|0) try='int setlocale_r(int, const char*, char*, int);'
16008 ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
16010 case "$setlocale_r_proto" in
16011 ''|0) d_setlocale_r=undef
16012 setlocale_r_proto=0
16013 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
16014 * ) case "$setlocale_r_proto" in
16015 REENTRANT_PROTO*) ;;
16016 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
16018 echo "Prototype: $try" ;;
16021 *) case "$usethreads" in
16022 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
16024 d_setlocale_r=undef
16025 setlocale_r_proto=0
16029 *) setlocale_r_proto=0
16033 : see if setnetent exists
16034 set setnetent d_setnent
16037 : see if setnetent_r exists
16038 set setnetent_r d_setnetent_r
16040 case "$d_setnetent_r" in
16042 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16043 case "$d_setnetent_r_proto:$usethreads" in
16044 ":define") d_setnetent_r_proto=define
16045 set d_setnetent_r_proto setnetent_r $hdrs
16049 case "$d_setnetent_r_proto" in
16051 case "$setnetent_r_proto" in
16052 ''|0) try='int setnetent_r(int, struct netent_data*);'
16053 ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
16055 case "$setnetent_r_proto" in
16056 ''|0) try='void setnetent_r(int, struct netent_data*);'
16057 ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
16059 case "$setnetent_r_proto" in
16060 ''|0) d_setnetent_r=undef
16061 setnetent_r_proto=0
16062 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
16063 * ) case "$setnetent_r_proto" in
16064 REENTRANT_PROTO*) ;;
16065 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
16067 echo "Prototype: $try" ;;
16070 *) case "$usethreads" in
16071 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
16073 d_setnetent_r=undef
16074 setnetent_r_proto=0
16078 *) setnetent_r_proto=0
16082 : see if setprotoent exists
16083 set setprotoent d_setpent
16086 : see if setpgid exists
16087 set setpgid d_setpgid
16090 : see if setpgrp2 exists
16091 set setpgrp2 d_setpgrp2
16094 : see if setpriority exists
16095 set setpriority d_setprior
16098 : see if setproctitle exists
16099 set setproctitle d_setproctitle
16102 : see if setprotoent_r exists
16103 set setprotoent_r d_setprotoent_r
16105 case "$d_setprotoent_r" in
16107 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16108 case "$d_setprotoent_r_proto:$usethreads" in
16109 ":define") d_setprotoent_r_proto=define
16110 set d_setprotoent_r_proto setprotoent_r $hdrs
16114 case "$d_setprotoent_r_proto" in
16116 case "$setprotoent_r_proto" in
16117 ''|0) try='int setprotoent_r(int, struct protoent_data*);'
16118 ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
16120 case "$setprotoent_r_proto" in
16121 ''|0) try='void setprotoent_r(int, struct protoent_data*);'
16122 ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
16124 case "$setprotoent_r_proto" in
16125 ''|0) d_setprotoent_r=undef
16126 setprotoent_r_proto=0
16127 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
16128 * ) case "$setprotoent_r_proto" in
16129 REENTRANT_PROTO*) ;;
16130 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
16132 echo "Prototype: $try" ;;
16135 *) case "$usethreads" in
16136 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
16138 d_setprotoent_r=undef
16139 setprotoent_r_proto=0
16143 *) setprotoent_r_proto=0
16147 : see if setpwent exists
16148 set setpwent d_setpwent
16151 : see if setpwent_r exists
16152 set setpwent_r d_setpwent_r
16154 case "$d_setpwent_r" in
16156 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
16157 case "$d_setpwent_r_proto:$usethreads" in
16158 ":define") d_setpwent_r_proto=define
16159 set d_setpwent_r_proto setpwent_r $hdrs
16163 case "$d_setpwent_r_proto" in
16165 case "$setpwent_r_proto" in
16166 ''|0) try='int setpwent_r(FILE**);'
16167 ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
16169 case "$setpwent_r_proto" in
16170 ''|0) try='void setpwent_r(FILE**);'
16171 ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
16173 case "$setpwent_r_proto" in
16174 ''|0) d_setpwent_r=undef
16176 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
16177 * ) case "$setpwent_r_proto" in
16178 REENTRANT_PROTO*) ;;
16179 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
16181 echo "Prototype: $try" ;;
16184 *) case "$usethreads" in
16185 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
16192 *) setpwent_r_proto=0
16196 : see if setregid exists
16197 set setregid d_setregid
16199 set setresgid d_setresgid
16202 : see if setreuid exists
16203 set setreuid d_setreuid
16205 set setresuid d_setresuid
16208 : see if setrgid exists
16209 set setrgid d_setrgid
16212 : see if setruid exists
16213 set setruid d_setruid
16216 : see if setservent exists
16217 set setservent d_setsent
16220 : see if setservent_r exists
16221 set setservent_r d_setservent_r
16223 case "$d_setservent_r" in
16225 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16226 case "$d_setservent_r_proto:$usethreads" in
16227 ":define") d_setservent_r_proto=define
16228 set d_setservent_r_proto setservent_r $hdrs
16232 case "$d_setservent_r_proto" in
16234 case "$setservent_r_proto" in
16235 ''|0) try='int setservent_r(int, struct servent_data*);'
16236 ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
16238 case "$setservent_r_proto" in
16239 ''|0) try='void setservent_r(int, struct servent_data*);'
16240 ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
16242 case "$setservent_r_proto" in
16243 ''|0) d_setservent_r=undef
16244 setservent_r_proto=0
16245 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
16246 * ) case "$setservent_r_proto" in
16247 REENTRANT_PROTO*) ;;
16248 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
16250 echo "Prototype: $try" ;;
16253 *) case "$usethreads" in
16254 define) echo "setservent_r has no prototype, not using it." >&4 ;;
16256 d_setservent_r=undef
16257 setservent_r_proto=0
16261 *) setservent_r_proto=0
16265 : see if setsid exists
16266 set setsid d_setsid
16269 : see if setvbuf exists
16270 set setvbuf d_setvbuf
16273 : see if sfio.h is available
16278 : see if sfio library is available
16289 : Ok, but do we want to use it.
16293 true|$define|[yY]*) dflt='y';;
16296 echo "$package can use the sfio library, but it is experimental."
16297 case "$useperlio" in
16299 echo "For sfio also the PerlIO abstraction layer is needed."
16300 echo "Earlier you said you wouldn't want that."
16303 rp="You seem to have sfio available, do you want to try using it?"
16306 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
16307 useperlio="$define"
16310 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
16315 *) case "$usesfio" in
16316 true|$define|[yY]*)
16317 echo "Sorry, cannot find sfio on this machine." >&4
16318 echo "Ignoring your setting of usesfio=$usesfio." >&4
16327 $define) usesfio='true';;
16328 *) usesfio='false';;
16332 *) : Remove sfio from list of libraries to use
16335 echo "Removing unneeded -lsfio from library list" >&4
16336 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
16339 echo "libs = $libs" >&4
16346 : see if shmctl exists
16347 set shmctl d_shmctl
16350 : see if shmget exists
16351 set shmget d_shmget
16354 : see if shmat exists
16357 : see what shmat returns
16360 $cat >shmat.c <<'END'
16361 #include <sys/shm.h>
16364 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
16369 echo "and it returns ($shmattype)." >&4
16370 : see if a prototype for shmat is available
16371 xxx=`./findhdr sys/shm.h`
16372 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
16373 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
16384 set d_shmatprototype
16387 : see if shmdt exists
16391 : see how much of the 'shm*(2)' library is present.
16394 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
16395 *"$undef"*) h_shm=false;;
16399 case "`ipcs 2>&1`" in
16400 "SVID shared memory"*"not configured"*)
16401 echo "Your $osname does not have the shm*(2) configured." >&4
16404 set shmctl d_shmctl
16406 set shmget d_shmget
16416 : we could also check for sys/ipc.h ...
16417 if $h_shm && $test `./findhdr sys/shm.h`; then
16418 echo "You have the full shm*(2) library." >&4
16421 echo "You don't have the full shm*(2) library." >&4
16428 : see if we have sigaction
16429 if set sigaction val -f d_sigaction; eval $csym; $val; then
16430 echo 'sigaction() found.' >&4
16433 #include <sys/types.h>
16434 #include <signal.h>
16435 #$i_stdlib I_STDLIB
16437 #include <stdlib.h>
16441 struct sigaction act, oact;
16443 oact.sa_handler = 0;
16444 /* so that act and oact are used */
16445 exit(act.sa_flags == 0 && oact.sa_handler == 0);
16449 if eval $compile_ok; then
16452 echo "But you don't seem to have a useable struct sigaction." >&4
16456 echo 'sigaction NOT found.' >&4
16459 set d_sigaction; eval $setvar
16460 $rm -f try try$_o try.c
16462 : see if sigprocmask exists
16463 set sigprocmask d_sigprocmask
16466 : see if sigsetjmp exists
16468 case "$d_sigsetjmp" in
16471 #include <setjmp.h>
16472 #$i_stdlib I_STDLIB
16474 #include <stdlib.h>
16480 if (sigsetjmp(env,1))
16483 siglongjmp(env, 1);
16488 if eval $compile; then
16489 if $run ./try >/dev/null 2>&1; then
16490 echo "POSIX sigsetjmp found." >&4
16494 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16500 echo "sigsetjmp not found." >&4
16504 *) val="$d_sigsetjmp"
16505 case "$d_sigsetjmp" in
16506 $define) echo "POSIX sigsetjmp found." >&4;;
16507 $undef) echo "sigsetjmp not found." >&4;;
16515 : see if snprintf exists
16516 set snprintf d_snprintf
16519 : see if vsnprintf exists
16520 set vsnprintf d_vsnprintf
16523 case "$d_snprintf-$d_vsnprintf" in
16526 Checking whether your snprintf() and vsnprintf() work okay...
16528 $cat >try.c <<'EOCP'
16529 /* v?snprintf testing logic courtesy of Russ Allbery.
16530 * According to C99:
16531 * - if the buffer is too short it still must be \0-terminated
16532 * - if the buffer is too short the potentially required length
16533 * must be returned and not -1
16534 * - if the buffer is NULL the potentially required length
16535 * must be returned and not -1 or core dump
16538 #include <stdarg.h>
16542 int test (char *format, ...)
16547 va_start (args, format);
16548 count = vsnprintf (buf, sizeof buf, format, args);
16555 return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
16556 && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
16560 if eval $compile; then
16563 0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
16565 Your snprintf() and snprintf() don't seem to be working okay.
16567 d_snprintf="$undef"
16568 d_vsnprintf="$undef"
16572 echo "(I can't seem to compile the test program--assuming they don't)"
16573 d_snprintf="$undef"
16574 d_vsnprintf="$undef"
16576 $rm -f try.* try core core.try.*
16580 : see if sockatmark exists
16581 set sockatmark d_sockatmark
16584 : see if prototype for sockatmark is available
16586 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16589 : see if socks5_init exists
16590 set socks5_init d_socks5_init
16593 : see if sprintf returns the length of the string in the buffer as per ANSI
16594 $echo "Checking whether sprintf returns the length of the string..." >&4
16597 #$i_stdlib I_STDLIB
16599 #include <stdlib.h>
16601 #$i_string I_STRING
16603 # include <string.h>
16605 # include <strings.h>
16614 int check (size_t expect, int test) {
16615 size_t got = strlen(buffer);
16619 printf("expected %ld, got %ld in test %d '%s'\n", (long) expect, (long) got,
16624 int main(int argc, char **argv) {
16627 check(sprintf(buffer, ""), ++test);
16628 check(sprintf(buffer, "%s %s", "perl", "rules"), ++test);
16629 check(sprintf(buffer, "I like %g", atan2(0,-1)), ++test);
16636 d_sprintf_returns_strlen="$undef"
16637 if eval $compile; then
16641 sprintf returns the length of the string (as ANSI says it should)
16643 d_sprintf_returns_strlen="$define"
16646 sprintf does not return the length of the string (how old is this system?)
16648 d_sprintf_returns_strlen="$undef"
16655 : see if srand48_r exists
16656 set srand48_r d_srand48_r
16658 case "$d_srand48_r" in
16660 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16661 case "$d_srand48_r_proto:$usethreads" in
16662 ":define") d_srand48_r_proto=define
16663 set d_srand48_r_proto srand48_r $hdrs
16667 case "$d_srand48_r_proto" in
16669 case "$srand48_r_proto" in
16670 ''|0) try='int srand48_r(long, struct drand48_data*);'
16671 ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16673 case "$srand48_r_proto" in
16674 ''|0) d_srand48_r=undef
16676 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16677 * ) case "$srand48_r_proto" in
16678 REENTRANT_PROTO*) ;;
16679 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16681 echo "Prototype: $try" ;;
16684 *) case "$usethreads" in
16685 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16692 *) srand48_r_proto=0
16696 : see if srandom_r exists
16697 set srandom_r d_srandom_r
16699 case "$d_srandom_r" in
16701 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16702 case "$d_srandom_r_proto:$usethreads" in
16703 ":define") d_srandom_r_proto=define
16704 set d_srandom_r_proto srandom_r $hdrs
16708 case "$d_srandom_r_proto" in
16710 case "$srandom_r_proto" in
16711 ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16712 ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16714 case "$srandom_r_proto" in
16715 ''|0) d_srandom_r=undef
16717 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16718 * ) case "$srandom_r_proto" in
16719 REENTRANT_PROTO*) ;;
16720 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16722 echo "Prototype: $try" ;;
16725 *) case "$usethreads" in
16726 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16733 *) srandom_r_proto=0
16737 : see if prototype for setresgid is available
16739 set d_sresgproto setresgid $i_unistd unistd.h
16742 : see if prototype for setresuid is available
16744 set d_sresuproto setresuid $i_unistd unistd.h
16747 : see if sys/stat.h is available
16748 set sys/stat.h i_sysstat
16752 : see if stat knows about block sizes
16754 echo "Checking to see if your struct stat has st_blocks field..." >&4
16755 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16759 : see if this is a sys/vfs.h system
16760 set sys/vfs.h i_sysvfs
16764 : see if this is a sys/statfs.h system
16765 set sys/statfs.h i_sysstatfs
16770 echo "Checking to see if your system supports struct statfs..." >&4
16771 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
16773 case "$d_statfs_s" in
16774 "$define") echo "Yes, it does." ;;
16775 *) echo "No, it doesn't." ;;
16780 : see if struct statfs knows about f_flags
16781 case "$d_statfs_s" in
16784 echo "Checking to see if your struct statfs has f_flags field..." >&4
16785 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
16789 set d_statfs_f_flags
16793 case "$d_statfs_f_flags" in
16794 "$define") echo "Yes, it does." ;;
16795 *) echo "No, it doesn't." ;;
16799 Checking how to access stdio streams by file descriptor number...
16801 case "$stdio_stream_array" in
16802 '') $cat >try.c <<EOCP
16805 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16809 for s in _iob __iob __sF
16811 set try -DSTDIO_STREAM_ARRAY=$s
16812 if eval $compile; then
16813 case "`$run ./try`" in
16814 yes) stdio_stream_array=$s; break ;;
16818 $rm -f try.* try$exe_ext
16820 case "$stdio_stream_array" in
16822 I can't figure out how to access stdio streams by file descriptor number.
16824 d_stdio_stream_array="$undef"
16827 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16829 d_stdio_stream_array="$define"
16833 : see if strcoll exists
16834 set strcoll d_strcoll
16837 : check for structure copying
16839 echo "Checking to see if your C compiler can copy structs..." >&4
16840 $cat >try.c <<'EOCP'
16850 if $cc -c try.c >/dev/null 2>&1 ; then
16852 echo "Yup, it can."
16855 echo "Nope, it can't."
16861 : see if strerror and/or sys_errlist[] exist
16863 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16864 if set strerror val -f d_strerror; eval $csym; $val; then
16865 echo 'strerror() found.' >&4
16866 d_strerror="$define"
16867 d_strerrm='strerror(e)'
16868 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16869 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
16870 d_syserrlst="$define"
16872 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16873 d_syserrlst="$undef"
16875 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16876 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16877 echo 'strerror() found in string header.' >&4
16878 d_strerror="$define"
16879 d_strerrm='strerror(e)'
16880 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16881 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16882 d_syserrlst="$define"
16884 echo "(You don't appear to have any sys_errlist[], how can this be?)"
16885 d_syserrlst="$undef"
16887 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16888 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16889 d_strerror="$undef"
16890 d_syserrlst="$define"
16891 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16893 echo 'strerror() and sys_errlist[] NOT found.' >&4
16894 d_strerror="$undef"
16895 d_syserrlst="$undef"
16896 d_strerrm='"unknown"'
16900 : see if strerror_r exists
16901 set strerror_r d_strerror_r
16903 case "$d_strerror_r" in
16905 hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16906 case "$d_strerror_r_proto:$usethreads" in
16907 ":define") d_strerror_r_proto=define
16908 set d_strerror_r_proto strerror_r $hdrs
16912 case "$d_strerror_r_proto" in
16914 case "$strerror_r_proto" in
16915 ''|0) try='int strerror_r(int, char*, size_t);'
16916 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16918 case "$strerror_r_proto" in
16919 ''|0) try='int strerror_r(int, char*, int);'
16920 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16922 case "$strerror_r_proto" in
16923 ''|0) try='char* strerror_r(int, char*, size_t);'
16924 ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16926 case "$strerror_r_proto" in
16927 ''|0) d_strerror_r=undef
16929 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16930 * ) case "$strerror_r_proto" in
16931 REENTRANT_PROTO*) ;;
16932 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16934 echo "Prototype: $try" ;;
16937 *) case "$usethreads" in
16938 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16945 *) strerror_r_proto=0
16949 : see if strftime exists
16950 set strftime d_strftime
16953 : see if strlcat exists
16954 set strlcat d_strlcat
16957 : see if strlcpy exists
16958 set strlcpy d_strlcpy
16961 : see if strtod exists
16962 set strtod d_strtod
16965 : see if strtol exists
16966 set strtol d_strtol
16969 : see if strtold exists
16970 set strtold d_strtold
16973 : see if strtoll exists
16974 set strtoll d_strtoll
16977 case "$d_longlong-$d_strtoll" in
16980 Checking whether your strtoll() works okay...
16982 $cat >try.c <<'EOCP'
16985 #define strtoll __strtoll
16988 #define strtoll _strtoll
16991 extern long long int strtoll(char *s, char **, int);
16992 static int bad = 0;
16993 int check(char *s, long long ell, int een) {
16996 gll = strtoll(s, 0, 10);
16997 if (!((gll == ell) && (errno == een)))
17001 check(" 1", 1LL, 0);
17002 check(" 0", 0LL, 0);
17003 check("-1", -1LL, 0);
17004 check("-9223372036854775808", -9223372036854775808LL, 0);
17005 check("-9223372036854775808", -9223372036854775808LL, 0);
17006 check(" 9223372036854775807", 9223372036854775807LL, 0);
17007 check("-9223372036854775808", -9223372036854775808LL, 0);
17008 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
17009 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
17015 if eval $compile; then
17018 ok) echo "Your strtoll() seems to be working okay." ;;
17020 Your strtoll() doesn't seem to be working okay.
17026 echo "(I can't seem to compile the test program--assuming it doesn't)"
17032 : see if strtoq exists
17033 set strtoq d_strtoq
17036 : see if strtoul exists
17037 set strtoul d_strtoul
17040 case "$d_strtoul" in
17043 Checking whether your strtoul() works okay...
17045 $cat >try.c <<'EOCP'
17048 extern unsigned long int strtoul(char *s, char **, int);
17049 static int bad = 0;
17050 void check(char *s, unsigned long eul, int een) {
17053 gul = strtoul(s, 0, 10);
17054 if (!((gul == eul) && (errno == een)))
17058 check(" 1", 1L, 0);
17059 check(" 0", 0L, 0);
17061 case "$longsize" in
17063 $cat >>try.c <<'EOCP'
17064 check("18446744073709551615", 18446744073709551615UL, 0);
17065 check("18446744073709551616", 18446744073709551615UL, ERANGE);
17066 #if 0 /* strtoul() for /^-/ strings is undefined. */
17067 check("-1", 18446744073709551615UL, 0);
17068 check("-18446744073709551614", 2, 0);
17069 check("-18446744073709551615", 1, 0);
17070 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
17071 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
17076 $cat >>try.c <<'EOCP'
17077 check("4294967295", 4294967295UL, 0);
17078 check("4294967296", 4294967295UL, ERANGE);
17079 #if 0 /* strtoul() for /^-/ strings is undefined. */
17080 check("-1", 4294967295UL, 0);
17081 check("-4294967294", 2, 0);
17082 check("-4294967295", 1, 0);
17083 check("-4294967296", 4294967295UL, ERANGE);
17084 check("-4294967297", 4294967295UL, ERANGE);
17089 : Should we write these tests to be more portable by sprintf-ing
17090 : ~0 and then manipulating that char string as input for strtol?
17093 $cat >>try.c <<'EOCP'
17100 if eval $compile; then
17101 case "`$run ./try`" in
17102 ok) echo "Your strtoul() seems to be working okay." ;;
17104 Your strtoul() doesn't seem to be working okay.
17113 : see if strtoull exists
17114 set strtoull d_strtoull
17117 case "$d_longlong-$d_strtoull" in
17120 Checking whether your strtoull() works okay...
17122 $cat >try.c <<'EOCP'
17125 #define strtoull __strtoull
17128 extern unsigned long long int strtoull(char *s, char **, int);
17129 static int bad = 0;
17130 int check(char *s, long long eull, int een) {
17133 gull = strtoull(s, 0, 10);
17134 if (!((gull == eull) && (errno == een)))
17138 check(" 1", 1LL, 0);
17139 check(" 0", 0LL, 0);
17140 check("18446744073709551615", 18446744073709551615ULL, 0);
17141 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
17142 #if 0 /* strtoull() for /^-/ strings is undefined. */
17143 check("-1", 18446744073709551615ULL, 0);
17144 check("-18446744073709551614", 2LL, 0);
17145 check("-18446744073709551615", 1LL, 0);
17146 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17147 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17154 if eval $compile; then
17155 case "`$run ./try`" in
17156 ok) echo "Your strtoull() seems to be working okay." ;;
17158 Your strtoull() doesn't seem to be working okay.
17160 d_strtoull="$undef"
17167 : see if strtouq exists
17168 set strtouq d_strtouq
17171 case "$d_strtouq" in
17174 Checking whether your strtouq() works okay...
17176 $cat >try.c <<'EOCP'
17179 extern unsigned long long int strtouq(char *s, char **, int);
17180 static int bad = 0;
17181 void check(char *s, unsigned long long eull, int een) {
17182 unsigned long long gull;
17184 gull = strtouq(s, 0, 10);
17185 if (!((gull == eull) && (errno == een)))
17189 check(" 1", 1LL, 0);
17190 check(" 0", 0LL, 0);
17191 check("18446744073709551615", 18446744073709551615ULL, 0);
17192 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
17193 #if 0 /* strtouq() for /^-/ strings is undefined. */
17194 check("-1", 18446744073709551615ULL, 0);
17195 check("-18446744073709551614", 2LL, 0);
17196 check("-18446744073709551615", 1LL, 0);
17197 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17198 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17206 if eval $compile; then
17207 case "`$run ./try`" in
17208 ok) echo "Your strtouq() seems to be working okay." ;;
17210 Your strtouq() doesn't seem to be working okay.
17219 : see if strxfrm exists
17220 set strxfrm d_strxfrm
17223 : see if symlink exists
17224 set symlink d_symlink
17227 : see if syscall exists
17228 set syscall d_syscall
17231 : see if prototype for syscall is available
17233 set d_syscallproto syscall $i_unistd unistd.h
17236 : see if sysconf exists
17237 set sysconf d_sysconf
17240 : see if system exists
17241 set system d_system
17244 : see if tcgetpgrp exists
17245 set tcgetpgrp d_tcgetpgrp
17248 : see if tcsetpgrp exists
17249 set tcsetpgrp d_tcsetpgrp
17252 : see if prototype for telldir is available
17254 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
17257 : see if time exists
17259 if test "X$d_time" = X -o X"$timetype" = X; then
17260 if set time val -f d_time; eval $csym; $val; then
17261 echo 'time() found.' >&4
17263 rp="What is the type returned by time() on this system?"
17264 set time_t timetype long stdio.h sys/types.h
17267 echo 'time() not found, hope that will do.' >&4
17275 : see if this is a sys/times.h system
17276 set sys/times.h i_systimes
17279 : see if times exists
17281 if set times val -f d_times; eval $csym; $val; then
17282 echo 'times() found.' >&4
17285 case "$i_systimes" in
17286 "$define") inc='sys/times.h';;
17288 rp="What is the type returned by times() on this system?"
17289 set clock_t clocktype long stdio.h sys/types.h $inc
17292 echo 'times() NOT found, hope that will do.' >&4
17297 : see if tmpnam_r exists
17298 set tmpnam_r d_tmpnam_r
17300 case "$d_tmpnam_r" in
17302 hdrs="$i_systypes sys/types.h define stdio.h "
17303 case "$d_tmpnam_r_proto:$usethreads" in
17304 ":define") d_tmpnam_r_proto=define
17305 set d_tmpnam_r_proto tmpnam_r $hdrs
17309 case "$d_tmpnam_r_proto" in
17311 case "$tmpnam_r_proto" in
17312 ''|0) try='char* tmpnam_r(char*);'
17313 ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
17315 case "$tmpnam_r_proto" in
17316 ''|0) d_tmpnam_r=undef
17318 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
17319 * ) case "$tmpnam_r_proto" in
17320 REENTRANT_PROTO*) ;;
17321 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
17323 echo "Prototype: $try" ;;
17326 *) case "$usethreads" in
17327 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
17334 *) tmpnam_r_proto=0
17338 : see if truncate exists
17339 set truncate d_truncate
17342 : see if ttyname_r exists
17343 set ttyname_r d_ttyname_r
17345 case "$d_ttyname_r" in
17347 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
17348 case "$d_ttyname_r_proto:$usethreads" in
17349 ":define") d_ttyname_r_proto=define
17350 set d_ttyname_r_proto ttyname_r $hdrs
17354 case "$d_ttyname_r_proto" in
17356 case "$ttyname_r_proto" in
17357 ''|0) try='int ttyname_r(int, char*, size_t);'
17358 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
17360 case "$ttyname_r_proto" in
17361 ''|0) try='int ttyname_r(int, char*, int);'
17362 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
17364 case "$ttyname_r_proto" in
17365 ''|0) try='char* ttyname_r(int, char*, int);'
17366 ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
17368 case "$ttyname_r_proto" in
17369 ''|0) d_ttyname_r=undef
17371 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
17372 * ) case "$ttyname_r_proto" in
17373 REENTRANT_PROTO*) ;;
17374 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
17376 echo "Prototype: $try" ;;
17379 *) case "$usethreads" in
17380 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
17387 *) ttyname_r_proto=0
17391 : see if tzname[] exists
17393 if set tzname val -a d_tzname; eval $csym; $val; then
17395 echo 'tzname[] found.' >&4
17398 echo 'tzname[] NOT found.' >&4
17404 next|rhapsody|darwin) multiarch="$define" ;;
17406 case "$multiarch" in
17407 ''|[nN]*) multiarch="$undef" ;;
17410 : check for ordering of bytes in a UV
17412 case "$usecrosscompile$multiarch" in
17415 You seem to be either cross-compiling or doing a multiarchitecture build,
17416 skipping the byteorder check.
17422 case "$byteorder" in
17425 In the following, larger digits indicate more significance. A big-endian
17426 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
17427 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
17428 machines may have weird orders like 3412. A Cray will report 87654321,
17429 an Alpha will report 12345678. If the test program works the default is
17431 I'm now running the test program...
17435 #$i_stdlib I_STDLIB
17437 #include <stdlib.h>
17439 #include <sys/types.h>
17440 typedef $uvtype UV;
17450 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
17452 u.l = (UV)0x04030201;
17453 for (i = 0; i < $uvsize; i++)
17454 printf("%c", u.c[i]+'0');
17461 if eval $compile && ./try > /dev/null; then
17464 [1-4][1-4][1-4][1-4]|12345678|87654321)
17465 echo "(The test program ran ok.)"
17466 echo "byteorder=$dflt"
17469 ????|????????) echo "(The test program ran ok.)" ;;
17470 *) echo "(The test program didn't run right for some reason.)" ;;
17475 (I can't seem to compile the test program. Guessing big-endian...)
17478 case "$xxx_prompt" in
17480 rp="What is the order of bytes in $uvtype?"
17496 Checking to see whether you can access character data unalignedly...
17498 case "$d_u32align" in
17499 '') $cat >try.c <<EOCP
17501 #$i_stdlib I_STDLIB
17503 #include <stdlib.h>
17505 #define U32 $u32type
17506 #define BYTEORDER 0x$byteorder
17508 #include <signal.h>
17510 $signal_t bletch(s) int s; { exit(4); }
17513 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
17518 if (sizeof(U32) != 4) {
17519 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
17526 signal(SIGBUS, bletch);
17538 for (i = 0; i < 4; i++) {
17539 up = (U32*)(buf + i);
17540 if (! ((*up == 1 << (8*i)) || /* big-endian */
17541 (*up == 1 << (8*(3-i))) /* little-endian */
17545 printf("read failed (%x)\n", *up);
17551 for (i = 0; i < 4; i++) {
17552 up = (U32*)(buf + i);
17554 if (*up != 0xBeef) {
17555 printf("write failed (%x)\n", *up);
17569 if eval $compile_ok; then
17570 echo "(Testing for character data alignment may crash the test. That's okay.)" >&4
17571 $run ./try 2>&1 >/dev/null
17574 You can access character data pretty unalignedly.
17576 d_u32align="$undef"
17579 It seems that you must access character data in an aligned manner.
17581 d_u32align="$define"
17585 rp='Can you access character data at unaligned addresses?'
17589 [yY]*) d_u32align="$undef" ;;
17590 *) d_u32align="$define" ;;
17593 $rm -f core core.try.* try.core
17597 : see if ualarm exists
17598 set ualarm d_ualarm
17601 : see if umask exists
17605 : see if unordered exists
17606 set unordered d_unordered
17609 : see if unsetenv exists
17610 set unsetenv d_unsetenv
17613 : see if usleep exists
17614 set usleep d_usleep
17617 : see if prototype for usleep is available
17619 set d_usleepproto usleep $i_unistd unistd.h
17622 : see if ustat exists
17626 : backward compatibility for d_hvfork
17627 if test X$d_hvfork != X; then
17628 d_vfork="$d_hvfork"
17631 : see if there is a vfork
17636 : Ok, but do we want to use it. vfork is reportedly unreliable in
17637 : perl on Solaris 2.x, and probably elsewhere.
17641 case "$usevfork" in
17647 Perl can only use a vfork() that doesn't suffer from strict
17648 restrictions on calling functions or modifying global data in
17649 the child. For example, glibc-2.1 contains such a vfork()
17650 that is unsuitable. If your system provides a proper fork()
17651 call, chances are that you do NOT want perl to use vfork().
17654 rp="Do you still want to use vfork()?"
17659 echo "Ok, we won't use vfork()."
17668 $define) usevfork='true';;
17669 *) usevfork='false';;
17672 : see if closedir exists
17673 set closedir d_closedir
17676 case "$d_closedir" in
17679 echo "Checking whether closedir() returns a status..." >&4
17681 #$i_dirent I_DIRENT /**/
17682 #$i_sysdir I_SYS_DIR /**/
17683 #$i_sysndir I_SYS_NDIR /**/
17684 #$i_systypes I_SYS_TYPES /**/
17686 #if defined(I_SYS_TYPES)
17687 #include <sys/types.h>
17689 #if defined(I_DIRENT)
17690 #include <dirent.h>
17691 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17692 #include <sys/dir.h>
17696 #include <sys/ndir.h>
17700 #include <ndir.h> /* may be wrong in the future */
17702 #include <sys/dir.h>
17707 int main() { return closedir(opendir(".")); }
17710 if eval $compile_ok; then
17711 if $run ./try > /dev/null 2>&1 ; then
17712 echo "Yes, it does."
17715 echo "No, it doesn't."
17719 echo "(I can't seem to compile the test program--assuming it doesn't)"
17727 set d_void_closedir
17730 : see if there is a wait4
17734 : see if waitpid exists
17735 set waitpid d_waitpid
17738 : see if wcstombs exists
17739 set wcstombs d_wcstombs
17742 : see if wctomb exists
17743 set wctomb d_wctomb
17746 : see if writev exists
17747 set writev d_writev
17750 : preserve RCS keywords in files with variable substitution, grrr
17755 Revision='$Revision'
17757 : check for alignment requirements
17759 case "$usecrosscompile$multiarch" in
17762 You seem to be either cross-compiling or doing a multiarchitecture build,
17763 skipping the memory alignment check.
17766 case "$alignbytes" in
17767 '') alignbytes=8 ;;
17771 case "$alignbytes" in
17772 '') echo "Checking alignment constraints..." >&4
17773 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17774 $cat >try.c <<'EOCP'
17775 typedef long double NV;
17778 $cat >try.c <<'EOCP'
17782 $cat >>try.c <<'EOCP'
17790 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17795 if eval $compile_ok; then
17799 echo "(I can't seem to compile the test program...)"
17802 *) dflt="$alignbytes"
17805 rp="Doubles must be aligned on a how-many-byte boundary?"
17813 : set the base revision
17816 : how do we concatenate cpp tokens here?
17818 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17819 $cat >cpp_stuff.c <<'EOCP'
17820 #define RCAT(a,b)a/**/b
17821 #define ACAT(a,b)a ## b
17825 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17826 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17827 echo "Oh! Smells like ANSI's been here." >&4
17828 echo "We can catify or stringify, separately or together!"
17830 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17831 echo "Ah, yes! The good old days!" >&4
17832 echo "However, in the good old days we don't know how to stringify and"
17833 echo "catify at the same time."
17837 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17838 You're going to have to edit the values of CAT[2-5] in config.h...
17840 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17844 : see if this is a db.h system
17850 : Check db version.
17852 echo "Checking Berkeley DB version ..." >&4
17858 #include <sys/types.h>
17860 #$i_stdlib I_STDLIB
17862 #include <stdlib.h>
17865 int main(int argc, char *argv[])
17867 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17868 int Major, Minor, Patch ;
17869 unsigned long Version ;
17870 (void)db_version(&Major, &Minor, &Patch) ;
17872 printf("%d %d %d %d %d %d\n",
17873 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17874 Major, Minor, Patch);
17877 printf("You have Berkeley DB Version 2 or greater.\n");
17879 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17880 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17881 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17882 Major, Minor, Patch) ;
17884 /* check that db.h & libdb are compatible */
17885 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17886 printf("db.h and libdb are incompatible.\n") ;
17890 printf("db.h and libdb are compatible.\n") ;
17892 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17893 + DB_VERSION_PATCH ;
17895 /* needs to be >= 2.3.4 */
17896 if (Version < 2003004) {
17897 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17898 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17904 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17909 printf("You have Berkeley DB Version 1.\n");
17910 exit(0); /* DB version < 2: the coast is clear. */
17912 exit(1); /* <db.h> not Berkeley DB? */
17918 if eval $compile_ok && $run ./try; then
17919 echo 'Looks OK.' >&4
17921 db_version_major=$1
17922 db_version_minor=$2
17923 db_version_patch=$3
17925 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
17929 : Remove db from list of libraries to use
17930 echo "Removing unusable -ldb from library list" >&4
17931 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17934 echo "libs = $libs" >&4
17944 : Check the return type needed for hash
17946 echo "Checking return type needed for hash for Berkeley DB ..." >&4
17952 #include <sys/types.h>
17955 #ifndef DB_VERSION_MAJOR
17956 u_int32_t hash_cb (ptr, size)
17964 info.hash = hash_cb;
17968 if $cc $ccflags -c try.c >try.out 2>&1 ; then
17969 if $contains warning try.out >>/dev/null 2>&1 ; then
17972 db_hashtype='u_int32_t'
17975 : XXX Maybe we should just give up here.
17976 db_hashtype=u_int32_t
17978 echo "Help: I can't seem to compile the db test program." >&4
17979 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17982 echo "Your version of Berkeley DB uses $db_hashtype for hash."
17984 *) db_hashtype=u_int32_t
17989 : Check the return type needed for prefix
17991 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17997 #include <sys/types.h>
18000 #ifndef DB_VERSION_MAJOR
18001 size_t prefix_cb (key1, key2)
18009 info.prefix = prefix_cb;
18013 if $cc $ccflags -c try.c >try.out 2>&1 ; then
18014 if $contains warning try.out >>/dev/null 2>&1 ; then
18015 db_prefixtype='int'
18017 db_prefixtype='size_t'
18020 db_prefixtype='size_t'
18021 : XXX Maybe we should just give up here.
18023 echo "Help: I can't seem to compile the db test program." >&4
18024 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
18027 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
18029 *) db_prefixtype='size_t'
18034 : How can we generate normalized random numbers ?
18036 echo "Looking for a random number function..." >&4
18037 case "$randfunc" in
18039 if set drand48 val -f; eval $csym; $val; then
18041 echo "Good, found drand48()." >&4
18042 elif set random val -f; eval $csym; $val; then
18044 echo "OK, found random()." >&4
18047 echo "Yick, looks like I have to use rand()." >&4
18058 *-Dmy_rand=*|*-Dmy_srand=*)
18059 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
18060 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
18061 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
18062 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
18066 while $test "$cont"; do
18067 rp="Use which function to generate random numbers?"
18069 if $test "$ans" = "$dflt"; then
18075 if set $ans val -f; eval $csym; $val; then
18079 rp="I cannot find function $ans. Use that name anyway?"
18088 case "$randfunc" in
18090 drand01="drand48()"
18096 case "$randbits" in
18098 echo "Checking to see how many bits your $randfunc() function produces..." >&4
18100 #$i_unistd I_UNISTD
18101 #$i_stdlib I_STDLIB
18104 # include <unistd.h>
18107 # include <stdlib.h>
18112 register unsigned long tmp;
18113 register unsigned long max = 0L;
18115 for (i = 1000; i; i--) {
18116 tmp = (unsigned long) $randfunc();
18117 if (tmp > max) max = tmp;
18119 for (i = 0; max; i++)
18125 if eval $compile_ok; then
18129 echo "(I can't seem to compile the test program...)"
18136 rp="How many bits does your $randfunc() function produce?"
18140 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18141 seedfunc="s$randfunc"
18142 randseedtype=unsigned
18146 rp="How many bits does your $randfunc() function produce?"
18149 seedfunc="s$randfunc"
18150 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18151 if set $seedfunc val -f; eval $csym; $val; then
18152 echo "(Using $seedfunc() to seed random generator)"
18154 echo "(Warning: no $seedfunc() to seed random generator)"
18157 randseedtype=unsigned
18165 echo "Determining whether or not we are on an EBCDIC system..." >&4
18166 $cat >try.c <<'EOM'
18169 if ('M'==0xd4) return 0;
18176 if eval $compile_ok; then
18177 if $run ./try; then
18178 echo "You seem to speak EBCDIC." >&4
18181 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
18184 echo "I'm unable to compile the test program." >&4
18185 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
18193 Checking how to flush all pending stdio output...
18195 # I only know how to find the first 32 possibly open files on SunOS.
18196 # See also hints/sunos_4_1.sh and util.c --AD
18198 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
18200 $cat >>try.c <<EOCP
18202 #$i_stdlib I_STDLIB
18204 #include <stdlib.h>
18206 #$i_unistd I_UNISTD
18208 # include <unistd.h>
18210 #$d_sysconf HAS_SYSCONF
18211 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
18212 #ifdef HAS_STDIO_STREAM_ARRAY
18213 # define STDIO_STREAM_ARRAY $stdio_stream_array
18218 p = fopen("try.out", "w");
18222 # ifdef TRY_FPRINTF
18226 #ifdef TRY_FFLUSH_NULL
18229 #ifdef TRY_FFLUSH_ALL
18231 long open_max = -1;
18232 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
18233 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
18235 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
18236 open_max = sysconf(_SC_OPEN_MAX);
18239 open_max = FOPEN_MAX;
18242 open_max = OPEN_MAX;
18251 # ifdef HAS_STDIO_STREAM_ARRAY
18252 if (open_max > 0) {
18254 for (i = 0; i < open_max; i++)
18255 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
18256 STDIO_STREAM_ARRAY[i]._file < open_max &&
18257 STDIO_STREAM_ARRAY[i]._flag)
18258 fflush(&STDIO_STREAM_ARRAY[i]);
18266 : first we have to find out how _not_ to flush
18268 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
18270 set try -DTRY_FPUTC
18271 if eval $compile; then
18272 $run ./try 2>/dev/null
18275 if $test ! -s try.out -a "X$code" = X42; then
18281 set try -DTRY_FPRINTF
18282 if eval $compile; then
18283 $run ./try 2>/dev/null
18286 if $test ! -s try.out -a "X$code" = X42; then
18287 output=-DTRY_FPRINTF
18293 : check for fflush NULL behaviour
18294 case "$fflushNULL" in
18295 '') set try -DTRY_FFLUSH_NULL $output
18296 if eval $compile; then
18297 $run ./try 2>/dev/null
18300 if $test -s try.out -a "X$code" = X42; then
18301 fflushNULL="`$cat try.out`"
18303 if $test "X$code" != X42; then
18305 (If this test failed, don't worry, we'll try another method shortly.)
18310 $rm -f core try.core core.try.*
18311 case "$fflushNULL" in
18313 Your fflush(NULL) works okay for output streams.
18314 Let's see if it clobbers input pipes...
18316 # As of mid-March 2000 all versions of Solaris appear to have a stdio
18317 # bug that improperly flushes the input end of pipes. So we avoid the
18318 # autoflush on fork/system/exec support for now. :-(
18319 $cat >tryp.c <<EOCP
18322 main(int argc, char **argv)
18328 while ((i = getc(stdin)) != -1
18329 && (*bp++ = i) != '\n'
18330 && bp < &buf[1024])
18333 fprintf(stdout, "%s", buf);
18341 fflushNULL="$define"
18343 if eval $compile; then
18345 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18346 if cmp tryp.c tryp.out >/dev/null 2>&1; then
18348 fflush(NULL) seems to behave okay with input streams.
18350 fflushNULL="$define"
18353 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
18355 fflushNULL="$undef"
18358 $rm -f core tryp.c tryp.core core.tryp.*
18361 Your fflush(NULL) isn't working (contrary to ANSI C).
18363 fflushNULL="$undef"
18366 Cannot figure out whether your fflush(NULL) works or not.
18367 I'm assuming it doesn't (contrary to ANSI C).
18369 fflushNULL="$undef"
18373 $define|true|[yY]*)
18374 fflushNULL="$define"
18377 fflushNULL="$undef"
18380 : check explicit looping only if NULL did not work, and if the pipe
18381 : bug does not show up on an explicit flush too
18382 case "$fflushNULL" in
18384 $cat >tryp.c <<EOCP
18387 main(int argc, char **argv)
18393 while ((i = getc(stdin)) != -1
18394 && (*bp++ = i) != '\n'
18395 && bp < &buf[1024])
18398 fprintf(stdout, "%s", buf);
18407 if eval $compile; then
18409 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18410 if cmp tryp.c tryp.out >/dev/null 2>&1; then
18412 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
18414 : now check for fflushall behaviour
18415 case "$fflushall" in
18416 '') set try -DTRY_FFLUSH_ALL $output
18417 if eval $compile; then
18419 (Now testing the other method--but note that this also may fail.)
18421 $run ./try 2>/dev/null
18424 if $test -s try.out -a "X$code" = X42; then
18425 fflushall="`$cat try.out`"
18428 $rm -f core try.core core.try.*
18429 case "$fflushall" in
18431 Whew. Flushing explicitly all the stdio streams works.
18433 fflushall="$define"
18436 Sigh. Flushing explicitly all the stdio streams doesn't work.
18441 Cannot figure out whether flushing stdio streams explicitly works or not.
18442 I'm assuming it doesn't.
18448 "$define"|true|[yY]*)
18449 fflushall="$define"
18457 All is futile. Even fflush(stdin) clobbers input pipes!
18464 $rm -f core tryp.c tryp.core core.tryp.*
18466 *) fflushall="$undef"
18470 case "$fflushNULL$fflushall" in
18473 OK, I give up. I cannot figure out how to flush pending stdio output.
18474 We won't be flushing handles at all before fork/exec/popen.
18478 $rm -f try.* try$exe_ext
18480 : Store the full pathname to the ar program for use in the C program
18481 : Respect a hint or command line value for full_ar.
18486 : Store the full pathname to the sed program for use in the C program
18489 : see what type gids are declared as in the kernel
18491 echo "Looking for the type for group ids returned by getgid()."
18492 set gid_t gidtype xxx stdio.h sys/types.h
18496 xxx=`./findhdr sys/user.h`
18497 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
18499 unsigned) dflt="$1 $2" ;;
18503 *) dflt="$gidtype";;
18506 gid_t) echo "gid_t found." ;;
18507 *) rp="What is the type for group ids returned by getgid()?"
18515 *_t) zzz="$gidtype" ;;
18518 echo "Checking the size of $zzz..." >&4
18520 #include <sys/types.h>
18522 #$i_stdlib I_STDLIB
18524 #include <stdlib.h>
18527 printf("%d\n", (int)sizeof($gidtype));
18532 if eval $compile_ok; then
18536 echo "(I can't execute the test program--guessing $gidsize.)" >&4
18539 echo "Your $zzz is $gidsize bytes long."
18544 echo "(I can't compile the test program--guessing $gidsize.)" >&4
18550 *_t) zzz="$gidtype" ;;
18553 echo "Checking the sign of $zzz..." >&4
18555 #include <sys/types.h>
18566 if eval $compile; then
18570 echo "(I can't execute the test program--guessing unsigned.)" >&4
18574 1) echo "Your $zzz is unsigned." ;;
18575 -1) echo "Your $zzz is signed." ;;
18581 echo "(I can't compile the test program--guessing unsigned.)" >&4
18587 if $test X"$quadtype" != X; then
18589 echo "Checking how to print 64-bit integers..." >&4
18591 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18592 $cat >try.c <<'EOCP'
18593 #include <sys/types.h>
18596 int q = 12345678901;
18597 printf("%ld\n", q);
18601 if eval $compile; then
18605 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18606 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18607 echo "We will use %d."
18613 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18614 $cat >try.c <<'EOCP'
18615 #include <sys/types.h>
18618 long q = 12345678901;
18619 printf("%ld\n", q);
18623 if eval $compile; then
18627 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18628 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18629 echo "We will use %ld."
18635 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18636 $cat >try.c <<'EOCP'
18637 #include <sys/types.h>
18638 #include <inttypes.h>
18641 int64_t q = 12345678901;
18642 printf("%" PRId64 "\n", q);
18646 if eval $compile; then
18650 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18651 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18652 echo "We will use the C9X style."
18658 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18660 #include <sys/types.h>
18663 $quadtype q = 12345678901;
18664 printf("%Ld\n", q);
18668 if eval $compile; then
18672 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18673 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18674 echo "We will use %Ld."
18680 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18681 $cat >try.c <<'EOCP'
18682 #include <sys/types.h>
18685 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18686 printf("%lld\n", q);
18690 if eval $compile; then
18694 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18695 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18696 echo "We will use the %lld style."
18702 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18704 #include <sys/types.h>
18707 $quadtype q = 12345678901;
18708 printf("%qd\n", q);
18712 if eval $compile; then
18716 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18717 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18718 echo "We will use %qd."
18724 if $test X"$sPRId64" = X; then
18725 echo "Cannot figure out how to print 64-bit integers." >&4
18733 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
18734 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
18736 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
18737 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
18743 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18745 if $test X"$ivsize" = X8; then
18746 ivdformat="$sPRId64"
18747 uvuformat="$sPRIu64"
18748 uvoformat="$sPRIo64"
18749 uvxformat="$sPRIx64"
18750 uvXUformat="$sPRIXU64"
18752 if $test X"$ivsize" = X"$longsize"; then
18759 if $test X"$ivsize" = X"$intsize"; then
18767 if $test X"$ivsize" = X"$shortsize"; then
18778 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18779 nveformat="$sPRIeldbl"
18780 nvfformat="$sPRIfldbl"
18781 nvgformat="$sPRIgldbl"
18782 nvEUformat="$sPRIEUldbl"
18783 nvFUformat="$sPRIFUldbl"
18784 nvGUformat="$sPRIGUldbl"
18794 case "$ivdformat" in
18795 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18802 $echo "Checking the format string to be used for gids..." >&4
18805 -1) if $test X"$gidsize" = X"$ivsize"; then
18806 gidformat="$ivdformat"
18808 if $test X"$gidsize" = X"$longsize"; then
18811 if $test X"$gidsize" = X"$intsize"; then
18814 if $test X"$gidsize" = X"$shortsize"; then
18821 *) if $test X"$gidsize" = X"$uvsize"; then
18822 gidformat="$uvuformat"
18824 if $test X"$gidsize" = X"$longsize"; then
18827 if $test X"$gidsize" = X"$intsize"; then
18830 if $test X"$gidsize" = X"$shortsize"; then
18839 : see if getgroups exists
18840 set getgroups d_getgrps
18843 : see if setgroups exists
18844 set setgroups d_setgrps
18848 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18850 case "$d_getgrps$d_setgrps" in
18852 case "$groupstype" in
18853 '') dflt="$gidtype" ;;
18854 *) dflt="$groupstype" ;;
18857 What type of pointer is the second argument to getgroups() and setgroups()?
18858 Usually this is the same as group ids, $gidtype, but not always.
18861 rp='What type pointer is the second argument to getgroups() and setgroups()?'
18865 *) groupstype="$gidtype";;
18870 $define|true|[yY]*) dflt='y' ;;
18875 Would you like to build with Misc Attribute Decoration? This is development
18876 work leading to a Perl 5 to Perl 6 convertor, which imposes a space and speed
18877 overhead on the interpreter.
18879 If this doesn't make any sense to you, just accept the default '$dflt'.
18881 rp='Build Perl with MAD?'
18885 madlyh='madly.h madly.act madly.tab'
18887 madlyobj="madly$_o" ;;
18897 echo "Checking if your $make program sets \$(MAKE)..." >&4
18898 case "$make_set_make" in
18900 $sed 's/^X //' > testmake.mak << 'EOF'
18902 X @echo 'maketemp="$(MAKE)"'
18904 case "`$make -f testmake.mak 2>/dev/null`" in
18905 *maketemp=*) make_set_make='#' ;;
18906 *) make_set_make="MAKE=$make" ;;
18908 $rm -f testmake.mak
18911 case "$make_set_make" in
18912 '#') echo "Yup, it does.";;
18913 *) echo "Nope, it doesn't.";;
18916 : see what type is used for mode_t
18917 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18918 set mode_t modetype int stdio.h sys/types.h
18921 : see if stdarg is available
18923 if $test `./findhdr stdarg.h`; then
18924 echo "<stdarg.h> found." >&4
18927 echo "<stdarg.h> NOT found." >&4
18931 : see if varags is available
18933 if $test `./findhdr varargs.h`; then
18934 echo "<varargs.h> found." >&4
18936 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18939 : set up the varargs testing programs
18940 $cat > varargs.c <<EOP
18942 #include <stdarg.h>
18945 #include <varargs.h>
18949 int f(char *p, ...)
18963 p = va_arg(ap, char *);
18968 $cat > varargs <<EOP
18970 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18979 : now check which varargs header should be included
18984 if `./varargs I_STDARG`; then
18986 elif `./varargs I_VARARGS`; then
18991 if `./varargs I_VARARGS`; then
18998 echo "I could not find the definition for va_dcl... You have problems..." >&4
18999 val="$undef"; set i_stdarg; eval $setvar
19000 val="$undef"; set i_varargs; eval $setvar
19005 case "$i_varhdr" in
19007 val="$define"; set i_stdarg; eval $setvar
19008 val="$undef"; set i_varargs; eval $setvar
19011 val="$undef"; set i_stdarg; eval $setvar
19012 val="$define"; set i_varargs; eval $setvar
19015 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
19019 : see if we need va_copy
19021 case "$i_stdarg" in
19024 #include <stdarg.h>
19026 #$i_stdlib I_STDLIB
19028 #include <stdlib.h>
19030 #include <signal.h>
19033 ivfprintf(FILE *f, const char *fmt, va_list *valp)
19035 return vfprintf(f, fmt, *valp);
19039 myvfprintf(FILE *f, const char *fmt, va_list val)
19041 return ivfprintf(f, fmt, &val);
19045 myprintf(char *fmt, ...)
19048 va_start(val, fmt);
19049 return myvfprintf(stdout, fmt, val);
19053 main(int ac, char **av)
19055 signal(SIGSEGV, exit);
19057 myprintf("%s%cs all right, then\n", "that", '\'');
19062 if eval $compile && $run ./try 2>&1 >/dev/null; then
19063 case "`$run ./try`" in
19064 "that's all right, then")
19070 yes) echo "It seems that you don't need va_copy()." >&4
19071 need_va_copy="$undef"
19073 *) echo "It seems that va_copy() or similar will be needed." >&4
19074 need_va_copy="$define"
19077 $rm -f try.* core core.* *.core *.core.*
19079 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
19083 : see what type is used for size_t
19084 rp="What is the type used for the length parameter for string functions?"
19085 set size_t sizetype 'unsigned int' stdio.h sys/types.h
19088 : check for type of arguments to gethostbyaddr.
19089 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
19090 case "$d_gethbyaddr" in
19094 Checking to see what type of arguments are accepted by gethostbyaddr().
19096 hdrs="$define sys/types.h
19097 $d_socket sys/socket.h
19098 $i_niin netinet/in.h
19100 $i_unistd unistd.h"
19101 : The first arg can 'char *' or 'void *'
19102 : The second arg is some of integral type
19103 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
19104 for yyy in size_t long int; do
19105 case "$netdb_host_type" in
19106 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
19107 if ./protochk "$try" $hdrs; then
19108 echo "Your system accepts $xxx for the first arg."
19109 echo "...and $yyy for the second arg."
19110 netdb_host_type="$xxx"
19111 netdb_hlen_type="$yyy"
19117 : In case none of those worked, prompt the user.
19118 case "$netdb_host_type" in
19119 '') rp='What is the type for the 1st argument to gethostbyaddr?'
19122 netdb_host_type=$ans
19123 rp='What is the type for the 2nd argument to gethostbyaddr?'
19126 netdb_hlen_type=$ans
19130 *) : no gethostbyaddr, so pick harmless defaults
19131 netdb_host_type='char *'
19132 netdb_hlen_type="$sizetype"
19135 # Remove the "const" if needed. -- but then we'll have a
19137 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
19140 : check for type of argument to gethostbyname.
19141 if test "X$netdb_name_type" = X ; then
19142 case "$d_gethbyname" in
19146 Checking to see what type of argument is accepted by gethostbyname().
19148 hdrs="$define sys/types.h
19149 $d_socket sys/socket.h
19150 $i_niin netinet/in.h
19152 $i_unistd unistd.h"
19153 for xxx in "const char *" "char *"; do
19154 case "$netdb_name_type" in
19155 '') try="extern struct hostent *gethostbyname($xxx);"
19156 if ./protochk "$try" $hdrs; then
19157 echo "Your system accepts $xxx."
19158 netdb_name_type="$xxx"
19163 : In case none of those worked, prompt the user.
19164 case "$netdb_name_type" in
19165 '') rp='What is the type for the 1st argument to gethostbyname?'
19168 netdb_name_type=$ans
19172 *) : no gethostbyname, so pick harmless default
19173 netdb_name_type='char *'
19178 : check for type of 1st argument to getnetbyaddr.
19179 if test "X$netdb_net_type" = X ; then
19180 case "$d_getnbyaddr" in
19184 Checking to see what type of 1st argument is accepted by getnetbyaddr().
19186 hdrs="$define sys/types.h
19187 $d_socket sys/socket.h
19188 $i_niin netinet/in.h
19190 $i_unistd unistd.h"
19191 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
19192 case "$netdb_net_type" in
19193 '') try="extern struct netent *getnetbyaddr($xxx, int);"
19194 if ./protochk "$try" $hdrs; then
19195 echo "Your system accepts $xxx."
19196 netdb_net_type="$xxx"
19201 : In case none of those worked, prompt the user.
19202 case "$netdb_net_type" in
19203 '') rp='What is the type for the 1st argument to getnetbyaddr?'
19206 netdb_net_type=$ans
19210 *) : no getnetbyaddr, so pick harmless default
19211 netdb_net_type='long'
19215 : locate the preferred pager for this system
19222 [a-zA-Z]:/*) dflt=$pg;;
19226 [a-zA-Z]:/*) dflt=$more;;
19230 [a-zA-Z]:/*) dflt=$less;;
19233 '') dflt=/usr/ucb/more;;
19237 : Instruct ./getfile to trust the hinted or previous pager value,
19238 : even if it does not begin with a slash. For example, on os2,
19239 : pager might be cmd /c more. See comments in UU/getfile.
19244 rp='What pager is used on your system?'
19248 : see what type pids are declared as in the kernel
19249 rp="What is the type of process ids on this system?"
19250 set pid_t pidtype int stdio.h sys/types.h
19253 : see if ar generates random libraries by itself
19255 echo "Checking how to generate random libraries on your machine..." >&4
19256 echo 'int bar1() { return bar2(); }' > bar1.c
19257 echo 'int bar2() { return 2; }' > bar2.c
19259 #$i_stdlib I_STDLIB
19261 #include <stdlib.h>
19263 int main() { printf("%d\n", bar1()); exit(0); }
19265 $cc $ccflags -c bar1.c >/dev/null 2>&1
19266 $cc $ccflags -c bar2.c >/dev/null 2>&1
19267 $cc $ccflags -c foo.c >/dev/null 2>&1
19268 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
19269 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19270 $run ./foobar >/dev/null 2>&1; then
19271 echo "$ar appears to generate random libraries itself."
19273 if [ "X$ranlib" = "X" ]; then
19276 elif $ar s bar$_a >/dev/null 2>&1 &&
19277 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19278 $run ./foobar >/dev/null 2>&1; then
19279 echo "a table of contents needs to be added with '$ar s'."
19282 elif $ar ts bar$_a >/dev/null 2>&1 &&
19283 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19284 $run ./foobar >/dev/null 2>&1; then
19285 echo "a table of contents needs to be added with '$ar ts'."
19292 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
19293 $test -f $ranlib || ranlib=''
19296 if $test -n "$ranlib"; then
19297 echo "your system has '$ranlib'; we'll use that."
19300 echo "your system doesn't seem to support random libraries"
19301 echo "so we'll use lorder and tsort to order the libraries."
19308 : check for type of arguments to select.
19309 case "$selecttype" in
19310 '') case "$d_select" in
19314 Checking to see what type of arguments are accepted by select().
19316 hdrs="$define sys/types.h
19317 $i_systime sys/time.h
19318 $i_sysselct sys/select.h
19319 $d_socket sys/socket.h"
19320 : The first arg can be int, unsigned, or size_t
19321 : The last arg may or may not be 'const'
19323 : void pointer has been seen but using that
19324 : breaks the selectminbits test
19325 for xxx in 'fd_set *' 'int *'; do
19326 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
19327 for tmo in 'struct timeval *' 'const struct timeval *'; do
19329 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
19330 if ./protochk "$try" $hdrs; then
19331 echo "Your system accepts $xxx."
19340 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
19341 case "$d_fd_set" in
19342 $define) dflt="fd_set *" ;;
19351 *) : no select, so pick a harmless default
19358 : check for the select 'width'
19359 case "$selectminbits" in
19360 '') safebits=`expr $ptrsize \* 8`
19361 case "$d_select" in
19365 Checking to see on how many bits at a time your select() operates...
19368 #include <sys/types.h>
19370 #$i_systime I_SYS_TIME
19371 #$i_systimek I_SYS_TIME_KERNEL
19376 # ifdef I_SYS_TIME_KERNEL
19379 # include <sys/time.h>
19380 # ifdef I_SYS_TIME_KERNEL
19384 #$i_sysselct I_SYS_SELECT
19385 #ifdef I_SYS_SELECT
19386 #include <sys/select.h>
19388 #$d_socket HAS_SOCKET
19390 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
19393 #$i_stdlib I_STDLIB
19395 #include <stdlib.h>
19398 #define S sizeof(*(b))
19400 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
19401 #define NBITS (NBYTES * 8)
19403 char *s = malloc(NBYTES);
19412 fp = fopen("try.c", "r");
19418 b = ($selecttype)s;
19419 for (i = 0; i < NBITS; i++)
19423 select(fd + 1, b, 0, 0, &t);
19424 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
19426 printf("%d\n", i + 1);
19431 if eval $compile_ok; then
19432 selectminbits=`$run ./try`
19433 case "$selectminbits" in
19435 Cannot figure out on how many bits at a time your select() operates.
19436 I'll play safe and guess it is $safebits bits.
19438 selectminbits=$safebits
19439 bits="$safebits bits"
19442 *) bits="$selectminbits bits" ;;
19444 echo "Your select() operates on $bits at a time." >&4
19446 rp='What is the minimum number of bits your select() operates on?'
19447 case "$byteorder" in
19448 12345678) dflt=64 ;;
19454 selectminbits="$val"
19458 *) : no select, so pick a harmless default
19459 selectminbits=$safebits
19465 : Trace out the files included by signal.h, then look for SIGxxx names.
19466 : Remove SIGARRAYSIZE used by HPUX.
19467 : Remove SIGSTKSIZE used by Linux.
19468 : Remove SIGSTKSZ used by Posix.
19469 : Remove SIGTYP void lines used by OS2.
19470 : Some cpps, like os390, dont give the file name anywhere
19471 if [ "X$fieldn" = X ]; then
19472 : Just make some guesses. We check them later.
19473 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
19475 xxx=`echo '#include <signal.h>' |
19476 $cppstdin $cppminus $cppflags 2>/dev/null |
19477 $grep '^[ ]*#.*include' |
19478 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
19480 : Check this list of files to be sure we have parsed the cpp output ok.
19481 : This will also avoid potentially non-existent files, such
19484 for xx in $xxx /dev/null ; do
19485 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
19487 : If we have found no files, at least try signal.h
19488 case "$xxxfiles" in
19489 '') xxxfiles=`./findhdr signal.h` ;;
19492 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
19493 print substr($2, 4, 20)
19495 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
19496 print substr($3, 4, 20)
19498 : Append some common names just in case the awk scan failed.
19499 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
19500 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
19501 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
19502 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
19503 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
19505 : generate a few handy files for later
19506 $cat > signal.c <<EOCP
19507 #include <sys/types.h>
19508 #include <signal.h>
19509 #$i_stdlib I_STDLIB
19511 #include <stdlib.h>
19516 /* Strange style to avoid deeply-nested #if/#else/#endif */
19519 # define NSIG (_NSIG)
19525 # define NSIG (SIGMAX+1)
19531 # define NSIG (SIG_MAX+1)
19537 # define NSIG (_SIG_MAX+1)
19543 # define NSIG (MAXSIG+1)
19549 # define NSIG (MAX_SIG+1)
19554 # ifdef SIGARRAYSIZE
19555 # define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
19561 # define NSIG (_sys_nsig) /* Solaris 2.5 */
19565 /* Default to some arbitrary number that's big enough to get most
19566 of the common signals.
19572 printf("NSIG %d\n", NSIG);
19578 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
19580 printf "#ifdef SIG"; printf $1; printf "\n"
19581 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
19582 printf $1; printf ");\n"
19586 printf "#endif /* JUST_NSIG */\n";
19587 printf "exit(0);\n}\n";
19590 $cat >signal.awk <<'EOP'
19591 BEGIN { ndups = 0 }
19592 $1 ~ /^NSIG$/ { nsig = $2 }
19593 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
19594 if ($2 > maxsig) { maxsig = $2 }
19595 if (sig_name[$2]) {
19596 dup_name[ndups] = $1
19597 dup_num[ndups] = $2
19609 printf("NSIG %d\n", nsig);
19610 for (n = 1; n < nsig; n++) {
19612 printf("%s %d\n", sig_name[n], sig_num[n])
19615 printf("NUM%d %d\n", n, n)
19618 for (n = 0; n < ndups; n++) {
19619 printf("%s %d\n", dup_name[n], dup_num[n])
19623 $cat >signal_cmd <<EOS
19625 if $test -s signal.lst; then
19626 echo "Using your existing signal.lst file"
19631 $cat >>signal_cmd <<'EOS'
19634 if eval $compile_ok; then
19635 $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19637 echo "(I can't seem be able to compile the whole test program)" >&4
19638 echo "(I'll try it in little pieces.)" >&4
19639 set signal -DJUST_NSIG
19640 if eval $compile_ok; then
19641 $run ./signal$_exe > signal.nsg
19644 echo "I can't seem to figure out how many signals you have." >&4
19645 echo "Guessing 50." >&4
19646 echo 'NSIG 50' > signal.nsg
19648 : Now look at all the signal names, one at a time.
19649 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19650 $cat > signal.c <<EOCP
19651 #include <sys/types.h>
19652 #include <signal.h>
19655 printf("$xx %d\n", SIG${xx});
19660 if eval $compile; then
19661 echo "SIG${xx} found."
19662 $run ./signal$_exe >> signal.ls1
19664 echo "SIG${xx} NOT found."
19667 if $test -s signal.ls1; then
19668 $cat signal.nsg signal.ls1 |
19669 $sort -n | $uniq | $awk -f signal.awk >signal.lst
19673 if $test -s signal.lst; then
19676 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19677 echo 'kill -l' >signal
19678 set X `csh -f <signal`
19682 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19684 echo $@ | $tr ' ' $trnl | \
19685 $awk '{ printf "%s %d\n", $1, ++s; }
19686 END { printf "NSIG %d\n", ++s }' >signal.lst
19688 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19690 chmod a+x signal_cmd
19691 $eunicefix signal_cmd
19693 : generate list of signal names
19695 case "$sig_name_init" in
19697 *) case "$sig_num_init" in
19698 ''|*,*) doinit=yes ;;
19703 echo "Generating a list of signal names and numbers..." >&4
19705 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19706 sig_name=`$awk 'BEGIN { printf "ZERO " }
19707 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19708 sig_num=`$awk 'BEGIN { printf "0 " }
19709 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19710 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
19711 !/^NSIG/ { printf "\"%s\", ", $1 }
19712 END { printf "0\n" }' signal.lst`
19713 sig_num_init=`$awk 'BEGIN { printf "0, " }
19714 !/^NSIG/ { printf "%d, ", $2}
19715 END { printf "0\n"}' signal.lst`
19718 echo "The following $sig_count signals are available:"
19720 echo $sig_name | $awk \
19721 'BEGIN { linelen = 0 }
19723 for (i = 1; i <= NF; i++) {
19724 name = "SIG" $i " "
19725 linelen = linelen + length(name)
19726 if (linelen > 70) {
19728 linelen = length(name)
19734 sig_size=`echo $sig_name | awk '{print NF}'`
19735 $rm -f signal signal.c signal.awk signal.lst signal_cmd
19738 case "$sizetype" in
19739 *_t) zzz="$sizetype" ;;
19740 *) zzz="filesize" ;;
19742 echo "Checking the size of $zzz..." >&4
19744 #include <sys/types.h>
19746 #$i_stdlib I_STDLIB
19748 #include <stdlib.h>
19751 printf("%d\n", (int)sizeof($sizetype));
19756 if eval $compile_ok; then
19760 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19763 echo "Your $zzz size is $sizesize bytes."
19768 echo "(I can't compile the test program--guessing $sizesize.)" >&4
19772 : check for socklen_t
19774 echo "Checking to see if you have socklen_t..." >&4
19776 #include <sys/types.h>
19777 #$d_socket HAS_SOCKET
19779 #include <sys/socket.h>
19781 int main() { socklen_t x = 16; }
19784 if eval $compile; then
19786 echo "You have socklen_t."
19789 echo "You do not have socklen_t."
19790 case "$sizetype" in
19791 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19798 : see if this is a socks.h system
19799 set socks.h i_socks
19802 : check for type of the size argument to socket calls
19803 case "$d_socket" in
19807 Checking to see what type is the last argument of accept().
19810 case "$d_socklen_t" in
19811 "$define") yyy="$yyy socklen_t"
19813 yyy="$yyy $sizetype int long unsigned"
19814 for xxx in $yyy; do
19815 case "$socksizetype" in
19816 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
19817 case "$usesocks" in
19819 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19820 echo "Your system accepts '$xxx *' for the last argument of accept()."
19821 socksizetype="$xxx"
19824 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
19825 echo "Your system accepts '$xxx *' for the last argument of accept()."
19826 socksizetype="$xxx"
19833 : In case none of those worked, prompt the user.
19834 case "$socksizetype" in
19835 '') rp='What is the type for socket address structure sizes?'
19842 *) : no sockets, so pick relatively harmless default
19847 : see what type is used for signed size_t
19848 set ssize_t ssizetype int stdio.h sys/types.h
19853 #$i_stdlib I_STDLIB
19855 #include <stdlib.h>
19857 #include <sys/types.h>
19858 #define Size_t $sizetype
19859 #define SSize_t $dflt
19862 if (sizeof(Size_t) == sizeof(SSize_t))
19864 else if (sizeof(Size_t) == sizeof(int))
19873 if eval $compile_ok && $run ./try > /dev/null; then
19874 ssizetype=`$run ./try`
19875 echo "I'll be using $ssizetype for functions returning a byte count." >&4
19878 Help! I can't compile and run the ssize_t test program: please enlighten me!
19879 (This is probably a misconfiguration in your system or libraries, and
19880 you really ought to fix it. Still, I'll try anyway.)
19882 I need a type that is the same size as $sizetype, but is guaranteed to
19883 be signed. Common values are ssize_t, int and long.
19886 rp="What signed type is the same size as $sizetype?"
19892 : see what type of char stdio uses.
19894 echo '#include <stdio.h>' > stdio.c
19895 $cppstdin $cppminus < stdio.c > stdioh
19896 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19897 echo "Your stdio uses unsigned chars." >&4
19898 stdchar="unsigned char"
19900 echo "Your stdio uses signed chars." >&4
19903 $rm -f stdio.* stdioh
19905 : see what type uids are declared as in the kernel
19907 echo "Looking for the type for user ids returned by getuid()."
19908 set uid_t uidtype xxx stdio.h sys/types.h
19912 xxx=`./findhdr sys/user.h`
19913 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19915 unsigned) dflt="$1 $2" ;;
19919 *) dflt="$uidtype";;
19922 uid_t) echo "uid_t found." ;;
19923 *) rp="What is the type for user ids returned by getuid()?"
19931 *_t) zzz="$uidtype" ;;
19934 echo "Checking the size of $zzz..." >&4
19936 #include <sys/types.h>
19938 #$i_stdlib I_STDLIB
19940 #include <stdlib.h>
19943 printf("%d\n", (int)sizeof($uidtype));
19948 if eval $compile_ok; then
19952 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19955 echo "Your $zzz is $uidsize bytes long."
19960 echo "(I can't compile the test program--guessing $uidsize.)" >&4
19965 *_t) zzz="$uidtype" ;;
19968 echo "Checking the sign of $zzz..." >&4
19970 #include <sys/types.h>
19981 if eval $compile; then
19985 echo "(I can't execute the test program--guessing unsigned.)" >&4
19989 1) echo "Your $zzz is unsigned." ;;
19990 -1) echo "Your $zzz is signed." ;;
19996 echo "(I can't compile the test program--guessing unsigned.)" >&4
20002 $echo "Checking the format string to be used for uids..." >&4
20005 -1) if $test X"$uidsize" = X"$ivsize"; then
20006 uidformat="$ivdformat"
20008 if $test X"$uidsize" = X"$longsize"; then
20011 if $test X"$uidsize" = X"$intsize"; then
20014 if $test X"$uidsize" = X"$shortsize"; then
20021 *) if $test X"$uidsize" = X"$uvsize"; then
20022 uidformat="$uvuformat"
20024 if $test X"$uidsize" = X"$longsize"; then
20027 if $test X"$uidsize" = X"$intsize"; then
20030 if $test X"$uidsize" = X"$shortsize"; then
20040 case "$usesitecustomize" in
20041 $define|true|[Yy]*)
20042 usesitecustomize="$define"
20045 usesitecustomize="$undef"
20049 : determine compiler compiler
20058 if $test -f "$byacc$_exe"; then
20060 comp="byacc or $comp"
20062 if $test -f "$bison$_exe"; then
20063 comp="$comp or bison -y"
20065 rp="Which compiler compiler ($comp) shall I use?"
20074 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
20080 : see if this is a fp.h system
20084 : see if this is a fp_class.h system
20085 set fp_class.h i_fp_class
20088 : see if this is a ieeefp.h system
20089 case "$i_ieeefp" in
20090 '' ) set ieeefp.h i_ieeefp
20095 : see if this is a libutil.h system
20096 set libutil.h i_libutil
20099 : see if mach cthreads are available
20100 if test "X$usethreads" = "X$define"; then
20101 set mach/cthreads.h i_machcthr
20104 i_machcthr="$undef"
20109 : see if this is a mntent.h system
20110 set mntent.h i_mntent
20113 : see if ndbm.h is available
20119 # Some Linux distributions such as RedHat 7.1 put the
20120 # ndbm.h header in /usr/include/gdbm/ndbm.h.
20121 if $test -f /usr/include/gdbm/ndbm.h; then
20122 echo '<gdbm/ndbm.h> found.'
20123 ccflags="$ccflags -I/usr/include/gdbm"
20124 cppflags="$cppflags -I/usr/include/gdbm"
20132 : see if dbm_open exists
20133 set dbm_open d_dbm_open
20135 case "$d_dbm_open" in
20138 echo "We won't be including <ndbm.h>"
20147 : see if net/errno.h is available
20149 set net/errno.h val
20152 : Unfortunately, it causes problems on some systems. Arrgh.
20155 cat > try.c <<'EOM'
20158 #include <net/errno.h>
20164 if $cc $ccflags -c try.c >/dev/null 2>&1; then
20165 echo "We'll be including <net/errno.h>." >&4
20167 echo "We won't be including <net/errno.h>." >&4
20176 : see if netinet/tcp.h is available
20177 set netinet/tcp.h i_netinettcp
20180 : see if this is a poll.h system
20184 : see if this is a prot.h system
20189 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
20190 $cat <<'EOSH' > Cppsym.know
20191 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
20192 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
20193 alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX
20194 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
20195 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
20196 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
20197 bull c cadmus clipper CMU COFF COMPILER_VERSION
20198 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
20199 CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
20200 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
20201 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
20203 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
20204 H3050R H3050RX hbullx20 hcx host_mips
20205 hp200 hp300 hp700 HP700 hp800 hp9000
20206 hp9000s200 hp9000s300 hp9000s400 hp9000s500
20207 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
20208 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
20209 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
20210 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
20211 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
20212 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
20213 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
20214 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
20215 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
20216 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
20217 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
20218 MATH_HAS_NO_SIDE_EFFECTS
20219 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
20220 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
20221 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
20222 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
20223 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
20224 NetBSD news1500 news1700 news1800 news1900 news3700
20225 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
20226 ns32016 ns32332 ns32k nsc32000
20227 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
20228 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
20229 pc532 pdp11 PGC PIC plexus PORTAR posix
20230 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
20231 POSIX_C_SOURCE POSIX_SOURCE POWER
20232 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
20233 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
20234 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
20235 sony sony_news sonyrisc sparc sparclite spectrum
20236 stardent stdc STDC_EXT stratos sun sun3 sun386
20237 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
20238 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
20239 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
20240 sysV68 sysV88 Tek4132 Tek4300 titan
20241 TM3200 TM5400 TM5600
20242 tower tower32 tower32_200 tower32_600 tower32_700
20243 tower32_800 tower32_850 tss
20244 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
20245 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
20246 unix UNIX95 UNIX99 unixpc unos
20247 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
20248 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
20249 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
20251 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286
20252 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
20253 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
20256 # Maybe put other stuff here too.
20257 cat <<EOSH >>Cppsym.know
20260 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
20261 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
20262 $cat Cppsym.know > Cppsym.c
20263 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
20264 $rm -f Cppsym.a Cppsym.b Cppsym.c
20265 cat <<EOSH > Cppsym
20267 if $test \$# -gt 0; then
20268 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
20269 if $test -s Cppsym.got; then
20276 $tr " " "$trnl" | ./Cppsym.try
20282 cat <<EOSH > Cppsym.try
20284 cat <<'EOCP' > try.c
20287 #define STRINGIFY(a) "a"
20289 #if cpp_stuff == 42
20290 #define StGiFy(a) #a
20291 #define STRINGIFY(a) StGiFy(a)
20293 #if $cpp_stuff != 1 && $cpp_stuff != 42
20294 # include "Bletch: How does this C preprocessor stringify macros?"
20300 cat <<'EOSH' >> Cppsym.try
20302 printf "#ifdef %s\nprintf(\"%s=%%s\\n\", STRINGIFY(%s));\n#endif\n", $1, $1, $1
20303 printf "#ifdef _%s\nprintf(\"_%s=%%s\\n\", STRINGIFY(_%s));\n#endif\n", $1, $1, $1
20304 printf "#ifdef __%s\nprintf(\"__%s=%%s\\n\", STRINGIFY(__%s));\n#endif\n", $1, $1, $1
20305 printf "#ifdef __%s__\nprintf(\"__%s__=%%s\\n\", STRINGIFY(__%s__));\n#endif\n", $1, $1, $1
20307 echo 'return 0;}' >> try.c
20309 cat <<EOSH >> Cppsym.try
20311 case "$osname-$gccversion" in
20312 irix-) ccflags="\$ccflags -woff 1178" ;;
20313 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
20315 $cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $run ./try | $sed 's/ /\\\\ /g'
20317 chmod +x Cppsym.try
20318 $eunicefix Cppsym.try
20319 ./Cppsym < Cppsym.know > Cppsym.true
20320 : Add in any linux cpp "predefined macros":
20321 case "$osname::$gccversion" in
20324 rm -f $tHdrH'.h' $tHdrH
20326 if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
20327 sed 's/#define[\ \ ]*//;s/[\ \ ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
20328 if [ -s $tHdrH'_cppsym.real' ]; then
20329 cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
20332 rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real'
20335 : now check the C compiler for additional symbols
20336 postprocess_cc_v=''
20338 aix) postprocess_cc_v="|$tr , ' '" ;;
20345 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
20348 -D*) echo "\$i" | $sed 's/^-D//';;
20349 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
20354 postprocess_cc_v=''
20357 ./ccsym > ccsym1.raw
20358 if $test -s ccsym1.raw; then
20359 $sort ccsym1.raw | $uniq >ccsym.raw
20361 mv ccsym1.raw ccsym.raw
20364 $awk '/\=/ { print $0; next }
20365 { print $0"=1" }' ccsym.raw >ccsym.list
20366 $comm -13 Cppsym.true ccsym.list >ccsym.own
20367 $comm -12 Cppsym.true ccsym.list >ccsym.com
20368 $comm -23 Cppsym.true ccsym.list >ccsym.cpp
20370 if $test -z ccsym.raw; then
20371 echo "Your C compiler doesn't seem to define any symbols!" >&4
20373 echo "However, your C preprocessor defines the following symbols:"
20376 cppsymbols=`$cat Cppsym.true`
20377 cppsymbols=`echo $cppsymbols`
20378 cppccsymbols="$cppsymbols"
20380 if $test -s ccsym.com; then
20381 echo "Your C compiler and pre-processor define these symbols:"
20382 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
20385 cppccsymbols=`$cat ccsym.com`
20386 cppccsymbols=`echo $cppccsymbols`
20387 $test "$silent" || sleep 1
20389 if $test -s ccsym.cpp; then
20390 $test "$also" && echo " "
20391 echo "Your C pre-processor ${also}defines the following symbols:"
20392 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
20394 cppsymbols=`$cat ccsym.cpp`
20395 cppsymbols=`echo $cppsymbols`
20396 $test "$silent" || sleep 1
20398 if $test -s ccsym.own; then
20399 $test "$also" && echo " "
20400 echo "Your C compiler ${also}defines the following cpp symbols:"
20401 $sed -e 's/\(..*\)=1/\1/' ccsym.own
20402 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
20403 ccsymbols=`$cat ccsym.own`
20404 ccsymbols=`echo $ccsymbols`
20405 $test "$silent" || sleep 1
20409 : see if this is a termio system
20413 if $test `./findhdr termios.h`; then
20414 set tcsetattr i_termios
20420 "$define") echo "You have POSIX termios.h... good!" >&4;;
20421 *) if ./Cppsym pyr; then
20422 case "`/bin/universe`" in
20423 ucb) if $test `./findhdr sgtty.h`; then
20425 echo "<sgtty.h> found." >&4
20427 echo "System is pyramid with BSD universe."
20428 echo "<sgtty.h> not found--you could have problems." >&4
20430 *) if $test `./findhdr termio.h`; then
20432 echo "<termio.h> found." >&4
20434 echo "System is pyramid with USG universe."
20435 echo "<termio.h> not found--you could have problems." >&4
20439 if $test `./findhdr termio.h`; then
20440 echo "<termio.h> found." >&4
20442 elif $test `./findhdr sgtty.h`; then
20443 echo "<sgtty.h> found." >&4
20446 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
20449 if $test `./findhdr sgtty.h`; then
20450 echo "<sgtty.h> found." >&4
20452 elif $test `./findhdr termio.h`; then
20453 echo "<termio.h> found." >&4
20456 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
20460 set i_termio; eval $setvar
20461 val=$val2; set i_sgtty; eval $setvar
20462 val=$val3; set i_termios; eval $setvar
20464 : see if stddef is available
20465 set stddef.h i_stddef
20468 : see if this is a sunmath.h system
20469 set sunmath.h i_sunmath
20472 : see if sys/access.h is available
20473 set sys/access.h i_sysaccess
20476 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
20477 set sys/filio.h i_sysfilio
20480 if $test `./findhdr sys/ioctl.h`; then
20482 echo '<sys/ioctl.h> found.' >&4
20485 if $test $i_sysfilio = "$define"; then
20486 echo '<sys/ioctl.h> NOT found.' >&4
20488 $test $i_sgtty = "$define" && xxx="sgtty.h"
20489 $test $i_termio = "$define" && xxx="termio.h"
20490 $test $i_termios = "$define" && xxx="termios.h"
20491 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
20497 : see if socket ioctl defs are in sys/sockio.h
20499 xxx=`./findhdr sys/sockio.h`
20500 if $test "$xxx"; then
20501 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
20503 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
20506 echo "No socket ioctls found in <sys/sockio.h>." >&4
20511 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
20518 : see if this is a syslog.h system
20519 set syslog.h i_syslog
20523 : see if this is a sys/mode.h system
20524 set sys/mode.h i_sysmode
20527 : see if sys/resource.h has to be included
20528 set sys/resource.h i_sysresrc
20531 : see if sys/security.h is available
20532 set sys/security.h i_syssecrt
20535 : see if this is a sys/statvfs.h system
20536 set sys/statvfs.h i_sysstatvfs
20539 : see if this is a sys/un.h system
20540 set sys/un.h i_sysun
20544 : see if this is a sys/utsname.h system
20545 set sys/utsname.h i_sysutsname
20548 : see if this is a syswait system
20549 set sys/wait.h i_syswait
20552 : see if this is a ustat.h system
20553 set ustat.h i_ustat
20556 : see if this is an utime system
20557 set utime.h i_utime
20560 : see if this is a values.h system
20561 set values.h i_values
20564 : see if this is a vfork system
20567 set vfork.h i_vfork
20575 : see if gdbm.h is available
20580 : see if gdbm_open exists
20581 set gdbm_open d_gdbm_open
20583 case "$d_gdbm_open" in
20586 echo "We won't be including <gdbm.h>"
20596 echo "Looking for extensions..." >&4
20597 : If we are using the old config.sh, known_extensions may contain
20598 : old or inaccurate or duplicate values.
20599 known_extensions=''
20600 nonxs_extensions=''
20601 : We do not use find because it might not be available.
20602 : We do not just use MANIFEST because the user may have dropped
20603 : some additional extensions into the source tree and expect them
20606 : Function to recursively find available extensions, ignoring DynaLoader
20607 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
20611 DynaLoader|dynaload) ;;
20613 if $test -f $xxx/$xxx.xs; then
20614 known_extensions="$known_extensions $1$xxx";
20615 elif $test -f $xxx/Makefile.PL; then
20616 nonxs_extensions="$nonxs_extensions $1$xxx";
20618 if $test -d $xxx -a $# -lt 10; then
20621 eval $find_extensions;
20633 eval $find_extensions
20634 # Special case: Add in threads/shared since it is not picked up by the
20635 # recursive find above (and adding in general recursive finding breaks
20636 # SDBM_File/sdbm). A.D. 10/25/2001.
20637 known_extensions="$known_extensions threads/shared"
20638 set X $nonxs_extensions
20640 nonxs_extensions="$*"
20641 set X $known_extensions
20643 known_extensions="$*"
20646 : Now see which are supported on this system.
20648 for xxx in $known_extensions ; do
20652 $define) avail_ext="$avail_ext $xxx" ;;
20655 GDBM_File|gdbm_fil)
20657 $define) avail_ext="$avail_ext $xxx" ;;
20660 I18N/Langinfo|i18n_lan)
20661 case "$i_langinfo$d_nl_langinfo" in
20662 $define$define) avail_ext="$avail_ext $xxx" ;;
20665 NDBM_File|ndbm_fil)
20668 case "$osname-$use64bitint" in
20671 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20674 *) avail_ext="$avail_ext $xxx" ;;
20679 ODBM_File|odbm_fil)
20680 case "${i_dbm}${i_rpcsvcdbm}" in
20682 case "$osname-$use64bitint" in
20685 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20688 *) avail_ext="$avail_ext $xxx" ;;
20694 case "$useposix" in
20695 true|define|y) avail_ext="$avail_ext $xxx" ;;
20699 case "$useopcode" in
20700 true|define|y) avail_ext="$avail_ext $xxx" ;;
20704 case "$d_socket" in
20707 beos) ;; # not unless BONE
20708 *) avail_ext="$avail_ext $xxx" ;;
20713 Sys/Syslog|sys/syslog)
20714 : XXX syslog requires socket
20715 case "$d_socket" in
20716 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20720 case "$usethreads" in
20722 case "$useithreads" in
20723 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20727 XS/APItest|xs/apitest)
20728 # This is just for testing. Skip it unless we have dynamic loading.
20731 $define) avail_ext="$avail_ext $xxx" ;;
20734 XS/Typemap|xs/typemap)
20735 # This is just for testing. Skip it unless we have dynamic loading.
20737 $define) avail_ext="$avail_ext $xxx" ;;
20740 threads|threads/shared)
20741 # threads and threads::shared are special cases.
20742 # To stop people from asking "Perl 5.8.0 was supposed
20743 # to have this new fancy threads implementation but my
20744 # perl doesn't have it" and from people trying to
20745 # (re)install the threads module using CPAN.pm and
20746 # CPAN.pm then offering to reinstall Perl 5.8.0,
20747 # the threads.pm and threads/shared.pm will always be
20748 # there, croaking informatively ("you need to rebuild
20749 # all of Perl with threads, sorry") when threads haven't
20750 # been compiled in.
20752 avail_ext="$avail_ext $xxx"
20755 : XXX Do we need a useipcsysv variable here
20756 case "${d_msg}${d_sem}${d_shm}" in
20757 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20760 *) avail_ext="$avail_ext $xxx"
20769 case "$onlyextensions" in
20771 *) keepextensions=''
20772 echo "You have requested that only certains extensions be included..." >&4
20773 for i in $onlyextensions; do
20774 case " $avail_ext " in
20776 echo "Keeping extension $i."
20777 keepextensions="$keepextensions $i"
20779 *) echo "Ignoring extension $i." ;;
20782 avail_ext="$keepextensions"
20786 case "$noextensions" in
20788 *) keepextensions=''
20789 echo "You have requested that certain extensions be ignored..." >&4
20790 for i in $avail_ext; do
20791 case " $noextensions " in
20792 *" $i "*) echo "Ignoring extension $i." ;;
20793 *) echo "Keeping extension $i.";
20794 keepextensions="$keepextensions $i"
20798 avail_ext="$keepextensions"
20802 : Now see which nonxs extensions are supported on this system.
20803 : For now assume all are.
20805 for xxx in $nonxs_extensions ; do
20807 *) nonxs_ext="$nonxs_ext $xxx"
20819 A number of extensions are supplied with $package. You may choose to
20820 compile these extensions for dynamic loading (the default), compile
20821 them into the $package executable (static loading), or not include
20822 them at all. Answer "none" to include no extensions.
20823 Note that DynaLoader is always built and need not be mentioned here.
20826 case "$dynamic_ext" in
20828 : Exclude those listed in static_ext
20830 for xxx in $avail_ext; do
20831 case " $static_ext " in
20833 *) dflt="$dflt $xxx" ;;
20840 *) dflt="$dynamic_ext"
20841 # Perhaps we are reusing an old out-of-date config.sh.
20844 if test X"$dynamic_ext" != X"$avail_ext"; then
20846 NOTICE: Your previous config.sh list may be incorrect.
20847 The extensions now available to you are
20849 but the default list from your previous config.sh is
20861 rp="What extensions do you wish to load dynamically?"
20864 none) dynamic_ext=' ' ;;
20865 *) dynamic_ext="$ans" ;;
20868 case "$static_ext" in
20870 : Exclude those already listed in dynamic linking
20872 for xxx in $avail_ext; do
20873 case " $dynamic_ext " in
20875 *) dflt="$dflt $xxx" ;;
20882 *) dflt="$static_ext"
20889 rp="What extensions do you wish to load statically?"
20892 none) static_ext=' ' ;;
20893 *) static_ext="$ans" ;;
20898 A number of extensions are supplied with $package. Answer "none"
20899 to include no extensions.
20900 Note that DynaLoader is always built and need not be mentioned here.
20903 case "$static_ext" in
20904 '') dflt="$avail_ext" ;;
20905 *) dflt="$static_ext"
20906 # Perhaps we are reusing an old out-of-date config.sh.
20909 if test X"$static_ext" != X"$avail_ext"; then
20911 NOTICE: Your previous config.sh list may be incorrect.
20912 The extensions now available to you are
20914 but the default list from your previous config.sh is
20923 : Exclude those that are not xs extensions
20927 rp="What extensions do you wish to include?"
20930 none) static_ext=' ' ;;
20931 *) static_ext="$ans" ;;
20936 # Encode is a special case. If we are building Encode as a static
20937 # extension, we need to explicitly list its subextensions as well.
20938 # For other nested extensions, this is handled automatically by
20939 # the appropriate Makefile.PL.
20940 case " $static_ext " in
20941 *" Encode "*) # Add the subextensions of Encode
20943 for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20944 static_ext="$static_ext Encode/$xxx"
20950 set X $dynamic_ext $static_ext $nonxs_ext
20954 # Sanity check: We require an extension suitable for use with
20955 # AnyDBM_File, as well as Fcntl and IO. (Failure to have these
20956 # should show up as failures in the test suite, but it's helpful to
20957 # catch them now.) The 'extensions' list is normally sorted
20958 # alphabetically, so we need to accept either
20959 # DB_File ... Fcntl ... IO ....
20960 # or something like
20961 # Fcntl ... NDBM_File ... IO ....
20962 case " $extensions" in
20963 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20964 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20965 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20966 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20967 echo "WARNING: The Perl you are building will be quite crippled." >& 4
20971 : Remove libraries needed only for extensions
20972 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20973 : The exception is SunOS 4.x, which needs them.
20974 case "${osname}X${osvers}" in
20978 *) case "$usedl" in
20979 $define|true|[yY]*)
20980 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
20984 *) perllibs="$libs"
20990 : Remove build directory name from cppstdin so it can be used from
20991 : either the present location or the final installed location.
20993 : Get out of the UU directory to get correct path name.
20995 case "$cppstdin" in
20997 echo "Stripping down cppstdin path name"
21003 : end of configuration questions
21005 echo "End of configuration questions."
21008 : back to where it started
21009 if test -d ../UU; then
21013 : configuration may be patched via a 'config.arch' file
21014 if $test -f config.arch; then
21015 echo "I see a config.arch file, loading it."
21019 : configuration may be patched via a 'config.over' file
21020 if $test -f config.over; then
21023 rp='I see a config.over file. Do you wish to load it?'
21026 n*) echo "OK, I'll ignore it.";;
21028 echo "Configuration override changes have been loaded."
21033 : in case they want portability, strip down executable paths
21034 case "$d_portable" in
21037 echo "Stripping down executable paths..." >&4
21038 for file in $loclist $trylist; do
21040 eval $file=`basename $temp`
21045 : create config.sh file
21047 echo "Creating config.sh..." >&4
21048 $spitshell <<EOT >config.sh
21051 # This file was produced by running the Configure script. It holds all the
21052 # definitions figured out by Configure. Should you modify one of these values,
21053 # do not forget to propagate your changes by running "Configure -der". You may
21054 # instead choose to run each of the .SH files by yourself, or "Configure -S".
21057 # Package name : $package
21058 # Source directory : $src
21059 # Configuration time: $cf_time
21060 # Configured by : $cf_by
21061 # Target system : $myuname
21071 Revision='$Revision'
21079 alignbytes='$alignbytes'
21080 ansi2knr='$ansi2knr'
21081 aphostname='$aphostname'
21082 api_revision='$api_revision'
21083 api_subversion='$api_subversion'
21084 api_version='$api_version'
21085 api_versionstring='$api_versionstring'
21088 archlibexp='$archlibexp'
21089 archname64='$archname64'
21090 archname='$archname'
21091 archobjs='$archobjs'
21092 asctime_r_proto='$asctime_r_proto'
21100 byteorder='$byteorder'
21102 castflags='$castflags'
21105 cccdlflags='$cccdlflags'
21106 ccdlflags='$ccdlflags'
21108 ccflags_uselargefiles='$ccflags_uselargefiles'
21110 ccsymbols='$ccsymbols'
21111 ccversion='$ccversion'
21113 cf_email='$cf_email'
21115 charsize='$charsize'
21119 clocktype='$clocktype'
21121 compress='$compress'
21122 contains='$contains'
21126 cpp_stuff='$cpp_stuff'
21127 cppccsymbols='$cppccsymbols'
21128 cppflags='$cppflags'
21130 cppminus='$cppminus'
21132 cppstdin='$cppstdin'
21133 cppsymbols='$cppsymbols'
21134 crypt_r_proto='$crypt_r_proto'
21135 cryptlib='$cryptlib'
21137 ctermid_r_proto='$ctermid_r_proto'
21138 ctime_r_proto='$ctime_r_proto'
21139 d_Gconvert='$d_Gconvert'
21140 d_PRIEUldbl='$d_PRIEUldbl'
21141 d_PRIFUldbl='$d_PRIFUldbl'
21142 d_PRIGUldbl='$d_PRIGUldbl'
21143 d_PRIXU64='$d_PRIXU64'
21144 d_PRId64='$d_PRId64'
21145 d_PRIeldbl='$d_PRIeldbl'
21146 d_PRIfldbl='$d_PRIfldbl'
21147 d_PRIgldbl='$d_PRIgldbl'
21148 d_PRIi64='$d_PRIi64'
21149 d_PRIo64='$d_PRIo64'
21150 d_PRIu64='$d_PRIu64'
21151 d_PRIx64='$d_PRIx64'
21152 d_SCNfldbl='$d_SCNfldbl'
21153 d__fwalk='$d__fwalk'
21154 d_access='$d_access'
21155 d_accessx='$d_accessx'
21158 d_archlib='$d_archlib'
21159 d_asctime_r='$d_asctime_r'
21162 d_attribute_format='$d_attribute_format'
21163 d_attribute_malloc='$d_attribute_malloc'
21164 d_attribute_nonnull='$d_attribute_nonnull'
21165 d_attribute_noreturn='$d_attribute_noreturn'
21166 d_attribute_pure='$d_attribute_pure'
21167 d_attribute_unused='$d_attribute_unused'
21168 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
21172 d_bsdgetpgrp='$d_bsdgetpgrp'
21173 d_bsdsetpgrp='$d_bsdsetpgrp'
21174 d_builtin_choose_expr='$d_builtin_choose_expr'
21175 d_builtin_expect='$d_builtin_expect'
21177 d_casti32='$d_casti32'
21178 d_castneg='$d_castneg'
21179 d_charvspr='$d_charvspr'
21181 d_chroot='$d_chroot'
21182 d_chsize='$d_chsize'
21184 d_clearenv='$d_clearenv'
21185 d_closedir='$d_closedir'
21186 d_cmsghdr_s='$d_cmsghdr_s'
21188 d_copysignl='$d_copysignl'
21190 d_crypt_r='$d_crypt_r'
21192 d_ctermid_r='$d_ctermid_r'
21193 d_ctime_r='$d_ctime_r'
21194 d_cuserid='$d_cuserid'
21195 d_dbl_dig='$d_dbl_dig'
21196 d_dbminitproto='$d_dbminitproto'
21197 d_difftime='$d_difftime'
21199 d_dirnamlen='$d_dirnamlen'
21200 d_dlerror='$d_dlerror'
21201 d_dlopen='$d_dlopen'
21202 d_dlsymun='$d_dlsymun'
21203 d_dosuid='$d_dosuid'
21204 d_drand48_r='$d_drand48_r'
21205 d_drand48proto='$d_drand48proto'
21207 d_eaccess='$d_eaccess'
21208 d_endgrent='$d_endgrent'
21209 d_endgrent_r='$d_endgrent_r'
21210 d_endhent='$d_endhent'
21211 d_endhostent_r='$d_endhostent_r'
21212 d_endnent='$d_endnent'
21213 d_endnetent_r='$d_endnetent_r'
21214 d_endpent='$d_endpent'
21215 d_endprotoent_r='$d_endprotoent_r'
21216 d_endpwent='$d_endpwent'
21217 d_endpwent_r='$d_endpwent_r'
21218 d_endsent='$d_endsent'
21219 d_endservent_r='$d_endservent_r'
21220 d_eofnblk='$d_eofnblk'
21221 d_eunice='$d_eunice'
21222 d_faststdio='$d_faststdio'
21223 d_fchdir='$d_fchdir'
21224 d_fchmod='$d_fchmod'
21225 d_fchown='$d_fchown'
21227 d_fcntl_can_lock='$d_fcntl_can_lock'
21228 d_fd_macros='$d_fd_macros'
21229 d_fd_set='$d_fd_set'
21230 d_fds_bits='$d_fds_bits'
21231 d_fgetpos='$d_fgetpos'
21232 d_finite='$d_finite'
21233 d_finitel='$d_finitel'
21234 d_flexfnam='$d_flexfnam'
21236 d_flockproto='$d_flockproto'
21238 d_fp_class='$d_fp_class'
21239 d_fpathconf='$d_fpathconf'
21240 d_fpclass='$d_fpclass'
21241 d_fpclassify='$d_fpclassify'
21242 d_fpclassl='$d_fpclassl'
21243 d_fpos64_t='$d_fpos64_t'
21244 d_frexpl='$d_frexpl'
21245 d_fs_data_s='$d_fs_data_s'
21246 d_fseeko='$d_fseeko'
21247 d_fsetpos='$d_fsetpos'
21248 d_fstatfs='$d_fstatfs'
21249 d_fstatvfs='$d_fstatvfs'
21251 d_ftello='$d_ftello'
21253 d_futimes='$d_futimes'
21254 d_getcwd='$d_getcwd'
21255 d_getespwnam='$d_getespwnam'
21256 d_getfsstat='$d_getfsstat'
21257 d_getgrent='$d_getgrent'
21258 d_getgrent_r='$d_getgrent_r'
21259 d_getgrgid_r='$d_getgrgid_r'
21260 d_getgrnam_r='$d_getgrnam_r'
21261 d_getgrps='$d_getgrps'
21262 d_gethbyaddr='$d_gethbyaddr'
21263 d_gethbyname='$d_gethbyname'
21264 d_gethent='$d_gethent'
21265 d_gethname='$d_gethname'
21266 d_gethostbyaddr_r='$d_gethostbyaddr_r'
21267 d_gethostbyname_r='$d_gethostbyname_r'
21268 d_gethostent_r='$d_gethostent_r'
21269 d_gethostprotos='$d_gethostprotos'
21270 d_getitimer='$d_getitimer'
21271 d_getlogin='$d_getlogin'
21272 d_getlogin_r='$d_getlogin_r'
21273 d_getmnt='$d_getmnt'
21274 d_getmntent='$d_getmntent'
21275 d_getnbyaddr='$d_getnbyaddr'
21276 d_getnbyname='$d_getnbyname'
21277 d_getnent='$d_getnent'
21278 d_getnetbyaddr_r='$d_getnetbyaddr_r'
21279 d_getnetbyname_r='$d_getnetbyname_r'
21280 d_getnetent_r='$d_getnetent_r'
21281 d_getnetprotos='$d_getnetprotos'
21282 d_getpagsz='$d_getpagsz'
21283 d_getpbyname='$d_getpbyname'
21284 d_getpbynumber='$d_getpbynumber'
21285 d_getpent='$d_getpent'
21286 d_getpgid='$d_getpgid'
21287 d_getpgrp2='$d_getpgrp2'
21288 d_getpgrp='$d_getpgrp'
21289 d_getppid='$d_getppid'
21290 d_getprior='$d_getprior'
21291 d_getprotobyname_r='$d_getprotobyname_r'
21292 d_getprotobynumber_r='$d_getprotobynumber_r'
21293 d_getprotoent_r='$d_getprotoent_r'
21294 d_getprotoprotos='$d_getprotoprotos'
21295 d_getprpwnam='$d_getprpwnam'
21296 d_getpwent='$d_getpwent'
21297 d_getpwent_r='$d_getpwent_r'
21298 d_getpwnam_r='$d_getpwnam_r'
21299 d_getpwuid_r='$d_getpwuid_r'
21300 d_getsbyname='$d_getsbyname'
21301 d_getsbyport='$d_getsbyport'
21302 d_getsent='$d_getsent'
21303 d_getservbyname_r='$d_getservbyname_r'
21304 d_getservbyport_r='$d_getservbyport_r'
21305 d_getservent_r='$d_getservent_r'
21306 d_getservprotos='$d_getservprotos'
21307 d_getspnam='$d_getspnam'
21308 d_getspnam_r='$d_getspnam_r'
21309 d_gettimeod='$d_gettimeod'
21310 d_gmtime_r='$d_gmtime_r'
21311 d_gnulibc='$d_gnulibc'
21312 d_grpasswd='$d_grpasswd'
21313 d_hasmntopt='$d_hasmntopt'
21315 d_ilogbl='$d_ilogbl'
21317 d_inetaton='$d_inetaton'
21318 d_int64_t='$d_int64_t'
21319 d_isascii='$d_isascii'
21320 d_isfinite='$d_isfinite'
21323 d_isnanl='$d_isnanl'
21324 d_killpg='$d_killpg'
21325 d_lchown='$d_lchown'
21326 d_ldbl_dig='$d_ldbl_dig'
21327 d_libm_lib_version='$d_libm_lib_version'
21329 d_localtime_r='$d_localtime_r'
21330 d_locconv='$d_locconv'
21332 d_longdbl='$d_longdbl'
21333 d_longlong='$d_longlong'
21334 d_lseekproto='$d_lseekproto'
21336 d_madvise='$d_madvise'
21337 d_malloc_good_size='$d_malloc_good_size'
21338 d_malloc_size='$d_malloc_size'
21340 d_mbstowcs='$d_mbstowcs'
21341 d_mbtowc='$d_mbtowc'
21342 d_memchr='$d_memchr'
21343 d_memcmp='$d_memcmp'
21344 d_memcpy='$d_memcpy'
21345 d_memmove='$d_memmove'
21346 d_memset='$d_memset'
21348 d_mkdtemp='$d_mkdtemp'
21349 d_mkfifo='$d_mkfifo'
21350 d_mkstemp='$d_mkstemp'
21351 d_mkstemps='$d_mkstemps'
21352 d_mktime='$d_mktime'
21355 d_modfl_pow32_bug='$d_modfl_pow32_bug'
21356 d_modflproto='$d_modflproto'
21357 d_mprotect='$d_mprotect'
21359 d_msg_ctrunc='$d_msg_ctrunc'
21360 d_msg_dontroute='$d_msg_dontroute'
21361 d_msg_oob='$d_msg_oob'
21362 d_msg_peek='$d_msg_peek'
21363 d_msg_proxy='$d_msg_proxy'
21364 d_msgctl='$d_msgctl'
21365 d_msgget='$d_msgget'
21366 d_msghdr_s='$d_msghdr_s'
21367 d_msgrcv='$d_msgrcv'
21368 d_msgsnd='$d_msgsnd'
21370 d_munmap='$d_munmap'
21371 d_mymalloc='$d_mymalloc'
21373 d_nl_langinfo='$d_nl_langinfo'
21374 d_nv_preserves_uv='$d_nv_preserves_uv'
21375 d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero'
21376 d_off64_t='$d_off64_t'
21377 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
21378 d_oldpthreads='$d_oldpthreads'
21379 d_oldsock='$d_oldsock'
21381 d_pathconf='$d_pathconf'
21383 d_perl_otherlibdirs='$d_perl_otherlibdirs'
21384 d_phostname='$d_phostname'
21387 d_portable='$d_portable'
21388 d_procselfexe='$d_procselfexe'
21389 d_pthread_atfork='$d_pthread_atfork'
21390 d_pthread_attr_setscope='$d_pthread_attr_setscope'
21391 d_pthread_yield='$d_pthread_yield'
21393 d_pwchange='$d_pwchange'
21394 d_pwclass='$d_pwclass'
21395 d_pwcomment='$d_pwcomment'
21396 d_pwexpire='$d_pwexpire'
21397 d_pwgecos='$d_pwgecos'
21398 d_pwpasswd='$d_pwpasswd'
21399 d_pwquota='$d_pwquota'
21402 d_random_r='$d_random_r'
21403 d_readdir64_r='$d_readdir64_r'
21404 d_readdir='$d_readdir'
21405 d_readdir_r='$d_readdir_r'
21406 d_readlink='$d_readlink'
21408 d_recvmsg='$d_recvmsg'
21409 d_rename='$d_rename'
21410 d_rewinddir='$d_rewinddir'
21412 d_safebcpy='$d_safebcpy'
21413 d_safemcpy='$d_safemcpy'
21414 d_sanemcmp='$d_sanemcmp'
21415 d_sbrkproto='$d_sbrkproto'
21416 d_scalbnl='$d_scalbnl'
21417 d_sched_yield='$d_sched_yield'
21418 d_scm_rights='$d_scm_rights'
21419 d_seekdir='$d_seekdir'
21420 d_select='$d_select'
21422 d_semctl='$d_semctl'
21423 d_semctl_semid_ds='$d_semctl_semid_ds'
21424 d_semctl_semun='$d_semctl_semun'
21425 d_semget='$d_semget'
21427 d_sendmsg='$d_sendmsg'
21428 d_setegid='$d_setegid'
21429 d_seteuid='$d_seteuid'
21430 d_setgrent='$d_setgrent'
21431 d_setgrent_r='$d_setgrent_r'
21432 d_setgrps='$d_setgrps'
21433 d_sethent='$d_sethent'
21434 d_sethostent_r='$d_sethostent_r'
21435 d_setitimer='$d_setitimer'
21436 d_setlinebuf='$d_setlinebuf'
21437 d_setlocale='$d_setlocale'
21438 d_setlocale_r='$d_setlocale_r'
21439 d_setnent='$d_setnent'
21440 d_setnetent_r='$d_setnetent_r'
21441 d_setpent='$d_setpent'
21442 d_setpgid='$d_setpgid'
21443 d_setpgrp2='$d_setpgrp2'
21444 d_setpgrp='$d_setpgrp'
21445 d_setprior='$d_setprior'
21446 d_setproctitle='$d_setproctitle'
21447 d_setprotoent_r='$d_setprotoent_r'
21448 d_setpwent='$d_setpwent'
21449 d_setpwent_r='$d_setpwent_r'
21450 d_setregid='$d_setregid'
21451 d_setresgid='$d_setresgid'
21452 d_setresuid='$d_setresuid'
21453 d_setreuid='$d_setreuid'
21454 d_setrgid='$d_setrgid'
21455 d_setruid='$d_setruid'
21456 d_setsent='$d_setsent'
21457 d_setservent_r='$d_setservent_r'
21458 d_setsid='$d_setsid'
21459 d_setvbuf='$d_setvbuf'
21463 d_shmatprototype='$d_shmatprototype'
21464 d_shmctl='$d_shmctl'
21466 d_shmget='$d_shmget'
21467 d_sigaction='$d_sigaction'
21468 d_sigprocmask='$d_sigprocmask'
21469 d_sigsetjmp='$d_sigsetjmp'
21470 d_snprintf='$d_snprintf'
21471 d_sockatmark='$d_sockatmark'
21472 d_sockatmarkproto='$d_sockatmarkproto'
21473 d_socket='$d_socket'
21474 d_socklen_t='$d_socklen_t'
21475 d_sockpair='$d_sockpair'
21476 d_socks5_init='$d_socks5_init'
21477 d_sprintf_returns_strlen='$d_sprintf_returns_strlen'
21479 d_srand48_r='$d_srand48_r'
21480 d_srandom_r='$d_srandom_r'
21481 d_sresgproto='$d_sresgproto'
21482 d_sresuproto='$d_sresuproto'
21483 d_statblks='$d_statblks'
21484 d_statfs_f_flags='$d_statfs_f_flags'
21485 d_statfs_s='$d_statfs_s'
21486 d_statvfs='$d_statvfs'
21487 d_stdio_cnt_lval='$d_stdio_cnt_lval'
21488 d_stdio_ptr_lval='$d_stdio_ptr_lval'
21489 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
21490 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
21491 d_stdio_stream_array='$d_stdio_stream_array'
21492 d_stdiobase='$d_stdiobase'
21493 d_stdstdio='$d_stdstdio'
21494 d_strchr='$d_strchr'
21495 d_strcoll='$d_strcoll'
21496 d_strctcpy='$d_strctcpy'
21497 d_strerrm='$d_strerrm'
21498 d_strerror='$d_strerror'
21499 d_strerror_r='$d_strerror_r'
21500 d_strftime='$d_strftime'
21501 d_strlcat='$d_strlcat'
21502 d_strlcpy='$d_strlcpy'
21503 d_strtod='$d_strtod'
21504 d_strtol='$d_strtol'
21505 d_strtold='$d_strtold'
21506 d_strtoll='$d_strtoll'
21507 d_strtoq='$d_strtoq'
21508 d_strtoul='$d_strtoul'
21509 d_strtoull='$d_strtoull'
21510 d_strtouq='$d_strtouq'
21511 d_strxfrm='$d_strxfrm'
21512 d_suidsafe='$d_suidsafe'
21513 d_symlink='$d_symlink'
21514 d_syscall='$d_syscall'
21515 d_syscallproto='$d_syscallproto'
21516 d_sysconf='$d_sysconf'
21517 d_sysernlst='$d_sysernlst'
21518 d_syserrlst='$d_syserrlst'
21519 d_system='$d_system'
21520 d_tcgetpgrp='$d_tcgetpgrp'
21521 d_tcsetpgrp='$d_tcsetpgrp'
21522 d_telldir='$d_telldir'
21523 d_telldirproto='$d_telldirproto'
21526 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
21527 d_tm_tm_zone='$d_tm_tm_zone'
21528 d_tmpnam_r='$d_tmpnam_r'
21529 d_truncate='$d_truncate'
21530 d_ttyname_r='$d_ttyname_r'
21531 d_tzname='$d_tzname'
21532 d_u32align='$d_u32align'
21533 d_ualarm='$d_ualarm'
21536 d_union_semun='$d_union_semun'
21537 d_unordered='$d_unordered'
21538 d_unsetenv='$d_unsetenv'
21539 d_usleep='$d_usleep'
21540 d_usleepproto='$d_usleepproto'
21542 d_vendorarch='$d_vendorarch'
21543 d_vendorbin='$d_vendorbin'
21544 d_vendorlib='$d_vendorlib'
21545 d_vendorscript='$d_vendorscript'
21547 d_void_closedir='$d_void_closedir'
21548 d_voidsig='$d_voidsig'
21549 d_voidtty='$d_voidtty'
21550 d_volatile='$d_volatile'
21551 d_vprintf='$d_vprintf'
21552 d_vsnprintf='$d_vsnprintf'
21554 d_waitpid='$d_waitpid'
21555 d_wcstombs='$d_wcstombs'
21556 d_wctomb='$d_wctomb'
21557 d_writev='$d_writev'
21560 db_hashtype='$db_hashtype'
21561 db_prefixtype='$db_prefixtype'
21562 db_version_major='$db_version_major'
21563 db_version_minor='$db_version_minor'
21564 db_version_patch='$db_version_patch'
21565 defvoidused='$defvoidused'
21566 direntrytype='$direntrytype'
21569 doublesize='$doublesize'
21571 drand48_r_proto='$drand48_r_proto'
21572 dynamic_ext='$dynamic_ext'
21578 endgrent_r_proto='$endgrent_r_proto'
21579 endhostent_r_proto='$endhostent_r_proto'
21580 endnetent_r_proto='$endnetent_r_proto'
21581 endprotoent_r_proto='$endprotoent_r_proto'
21582 endpwent_r_proto='$endpwent_r_proto'
21583 endservent_r_proto='$endservent_r_proto'
21584 eunicefix='$eunicefix'
21587 extensions='$extensions'
21589 fflushNULL='$fflushNULL'
21590 fflushall='$fflushall'
21592 firstmakefile='$firstmakefile'
21594 fpossize='$fpossize'
21595 fpostype='$fpostype'
21596 freetype='$freetype'
21599 full_csh='$full_csh'
21600 full_sed='$full_sed'
21601 gccansipedantic='$gccansipedantic'
21602 gccosandvers='$gccosandvers'
21603 gccversion='$gccversion'
21604 getgrent_r_proto='$getgrent_r_proto'
21605 getgrgid_r_proto='$getgrgid_r_proto'
21606 getgrnam_r_proto='$getgrnam_r_proto'
21607 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
21608 gethostbyname_r_proto='$gethostbyname_r_proto'
21609 gethostent_r_proto='$gethostent_r_proto'
21610 getlogin_r_proto='$getlogin_r_proto'
21611 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
21612 getnetbyname_r_proto='$getnetbyname_r_proto'
21613 getnetent_r_proto='$getnetent_r_proto'
21614 getprotobyname_r_proto='$getprotobyname_r_proto'
21615 getprotobynumber_r_proto='$getprotobynumber_r_proto'
21616 getprotoent_r_proto='$getprotoent_r_proto'
21617 getpwent_r_proto='$getpwent_r_proto'
21618 getpwnam_r_proto='$getpwnam_r_proto'
21619 getpwuid_r_proto='$getpwuid_r_proto'
21620 getservbyname_r_proto='$getservbyname_r_proto'
21621 getservbyport_r_proto='$getservbyport_r_proto'
21622 getservent_r_proto='$getservent_r_proto'
21623 getspnam_r_proto='$getspnam_r_proto'
21624 gidformat='$gidformat'
21630 gmtime_r_proto='$gmtime_r_proto'
21631 gnulibc_version='$gnulibc_version'
21633 groupcat='$groupcat'
21634 groupstype='$groupstype'
21637 h_sysfile='$h_sysfile'
21640 html1dir='$html1dir'
21641 html1direxp='$html1direxp'
21642 html3dir='$html3dir'
21643 html3direxp='$html3direxp'
21652 i_arpainet='$i_arpainet'
21653 i_bsdioctl='$i_bsdioctl'
21657 i_dirent='$i_dirent'
21663 i_fp_class='$i_fp_class'
21666 i_ieeefp='$i_ieeefp'
21667 i_inttypes='$i_inttypes'
21668 i_langinfo='$i_langinfo'
21669 i_libutil='$i_libutil'
21670 i_limits='$i_limits'
21671 i_locale='$i_locale'
21672 i_machcthr='$i_machcthr'
21673 i_malloc='$i_malloc'
21675 i_memory='$i_memory'
21676 i_mntent='$i_mntent'
21679 i_neterrno='$i_neterrno'
21680 i_netinettcp='$i_netinettcp'
21684 i_pthread='$i_pthread'
21686 i_rpcsvcdbm='$i_rpcsvcdbm'
21689 i_shadow='$i_shadow'
21691 i_stdarg='$i_stdarg'
21692 i_stddef='$i_stddef'
21693 i_stdlib='$i_stdlib'
21694 i_string='$i_string'
21695 i_sunmath='$i_sunmath'
21696 i_sysaccess='$i_sysaccess'
21697 i_sysdir='$i_sysdir'
21698 i_sysfile='$i_sysfile'
21699 i_sysfilio='$i_sysfilio'
21701 i_sysioctl='$i_sysioctl'
21702 i_syslog='$i_syslog'
21703 i_sysmman='$i_sysmman'
21704 i_sysmode='$i_sysmode'
21705 i_sysmount='$i_sysmount'
21706 i_sysndir='$i_sysndir'
21707 i_sysparam='$i_sysparam'
21708 i_sysresrc='$i_sysresrc'
21709 i_syssecrt='$i_syssecrt'
21710 i_sysselct='$i_sysselct'
21711 i_syssockio='$i_syssockio'
21712 i_sysstat='$i_sysstat'
21713 i_sysstatfs='$i_sysstatfs'
21714 i_sysstatvfs='$i_sysstatvfs'
21715 i_systime='$i_systime'
21716 i_systimek='$i_systimek'
21717 i_systimes='$i_systimes'
21718 i_systypes='$i_systypes'
21719 i_sysuio='$i_sysuio'
21721 i_sysutsname='$i_sysutsname'
21722 i_sysvfs='$i_sysvfs'
21723 i_syswait='$i_syswait'
21724 i_termio='$i_termio'
21725 i_termios='$i_termios'
21727 i_unistd='$i_unistd'
21730 i_values='$i_values'
21731 i_varargs='$i_varargs'
21732 i_varhdr='$i_varhdr'
21734 ignore_versioned_solibs='$ignore_versioned_solibs'
21735 inc_version_list='$inc_version_list'
21736 inc_version_list_init='$inc_version_list_init'
21739 installarchlib='$installarchlib'
21740 installbin='$installbin'
21741 installhtml1dir='$installhtml1dir'
21742 installhtml3dir='$installhtml3dir'
21743 installman1dir='$installman1dir'
21744 installman3dir='$installman3dir'
21745 installprefix='$installprefix'
21746 installprefixexp='$installprefixexp'
21747 installprivlib='$installprivlib'
21748 installscript='$installscript'
21749 installsitearch='$installsitearch'
21750 installsitebin='$installsitebin'
21751 installsitehtml1dir='$installsitehtml1dir'
21752 installsitehtml3dir='$installsitehtml3dir'
21753 installsitelib='$installsitelib'
21754 installsiteman1dir='$installsiteman1dir'
21755 installsiteman3dir='$installsiteman3dir'
21756 installsitescript='$installsitescript'
21757 installstyle='$installstyle'
21758 installusrbinperl='$installusrbinperl'
21759 installvendorarch='$installvendorarch'
21760 installvendorbin='$installvendorbin'
21761 installvendorhtml1dir='$installvendorhtml1dir'
21762 installvendorhtml3dir='$installvendorhtml3dir'
21763 installvendorlib='$installvendorlib'
21764 installvendorman1dir='$installvendorman1dir'
21765 installvendorman3dir='$installvendorman3dir'
21766 installvendorscript='$installvendorscript'
21768 issymlink='$issymlink'
21769 ivdformat='$ivdformat'
21772 known_extensions='$known_extensions'
21775 lddlflags='$lddlflags'
21777 ldflags_uselargefiles='$ldflags_uselargefiles'
21778 ldlibpthname='$ldlibpthname'
21785 libsdirs='$libsdirs'
21786 libsfiles='$libsfiles'
21787 libsfound='$libsfound'
21788 libspath='$libspath'
21789 libswanted='$libswanted'
21790 libswanted_uselargefiles='$libswanted_uselargefiles'
21796 localtime_r_proto='$localtime_r_proto'
21797 locincpth='$locincpth'
21798 loclibpth='$loclibpth'
21799 longdblsize='$longdblsize'
21800 longlongsize='$longlongsize'
21801 longsize='$longsize'
21805 lseeksize='$lseeksize'
21806 lseektype='$lseektype'
21811 make_set_make='$make_set_make'
21812 mallocobj='$mallocobj'
21813 mallocsrc='$mallocsrc'
21815 madlyobj='$madlyobj'
21816 madlysrc='$madlysrc'
21817 malloctype='$malloctype'
21819 man1direxp='$man1direxp'
21822 man3direxp='$man3direxp'
21824 mips_type='$mips_type'
21825 mistrustnm='$mistrustnm'
21827 mmaptype='$mmaptype'
21828 modetype='$modetype'
21830 multiarch='$multiarch'
21832 myarchname='$myarchname'
21833 mydomain='$mydomain'
21834 myhostname='$myhostname'
21837 need_va_copy='$need_va_copy'
21838 netdb_hlen_type='$netdb_hlen_type'
21839 netdb_host_type='$netdb_host_type'
21840 netdb_name_type='$netdb_name_type'
21841 netdb_net_type='$netdb_net_type'
21844 nm_so_opt='$nm_so_opt'
21845 nonxs_ext='$nonxs_ext'
21847 nvEUformat='$nvEUformat'
21848 nvFUformat='$nvFUformat'
21849 nvGUformat='$nvGUformat'
21850 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21851 nveformat='$nveformat'
21852 nvfformat='$nvfformat'
21853 nvgformat='$nvgformat'
21856 o_nonblock='$o_nonblock'
21858 old_pthread_create_joinable='$old_pthread_create_joinable'
21859 optimize='$optimize'
21860 orderlib='$orderlib'
21863 otherlibdirs='$otherlibdirs'
21867 patchlevel='$patchlevel'
21868 path_sep='$path_sep'
21871 perl_patchlevel='$perl_patchlevel'
21872 perladmin='$perladmin'
21873 perllibs='$perllibs'
21874 perlpath='$perlpath'
21876 phostname='$phostname'
21882 prefixexp='$prefixexp'
21884 privlibexp='$privlibexp'
21885 procselfexe='$procselfexe'
21886 prototype='$prototype'
21888 quadkind='$quadkind'
21889 quadtype='$quadtype'
21890 randbits='$randbits'
21891 randfunc='$randfunc'
21892 random_r_proto='$random_r_proto'
21893 randseedtype='$randseedtype'
21895 rd_nodata='$rd_nodata'
21896 readdir64_r_proto='$readdir64_r_proto'
21897 readdir_r_proto='$readdir_r_proto'
21898 revision='$revision'
21903 sPRIEUldbl='$sPRIEUldbl'
21904 sPRIFUldbl='$sPRIFUldbl'
21905 sPRIGUldbl='$sPRIGUldbl'
21906 sPRIXU64='$sPRIXU64'
21908 sPRIeldbl='$sPRIeldbl'
21909 sPRIfldbl='$sPRIfldbl'
21910 sPRIgldbl='$sPRIgldbl'
21915 sSCNfldbl='$sSCNfldbl'
21916 sched_yield='$sched_yield'
21917 scriptdir='$scriptdir'
21918 scriptdirexp='$scriptdirexp'
21920 seedfunc='$seedfunc'
21921 selectminbits='$selectminbits'
21922 selecttype='$selecttype'
21923 sendmail='$sendmail'
21924 setgrent_r_proto='$setgrent_r_proto'
21925 sethostent_r_proto='$sethostent_r_proto'
21926 setlocale_r_proto='$setlocale_r_proto'
21927 setnetent_r_proto='$setnetent_r_proto'
21928 setprotoent_r_proto='$setprotoent_r_proto'
21929 setpwent_r_proto='$setpwent_r_proto'
21930 setservent_r_proto='$setservent_r_proto'
21933 sharpbang='$sharpbang'
21934 shmattype='$shmattype'
21935 shortsize='$shortsize'
21938 sig_count='$sig_count'
21939 sig_name='$sig_name'
21940 sig_name_init='$sig_name_init'
21942 sig_num_init='$sig_num_init'
21943 sig_size='$sig_size'
21944 signal_t='$signal_t'
21945 sitearch='$sitearch'
21946 sitearchexp='$sitearchexp'
21948 sitebinexp='$sitebinexp'
21949 sitehtml1dir='$sitehtml1dir'
21950 sitehtml1direxp='$sitehtml1direxp'
21951 sitehtml3dir='$sitehtml3dir'
21952 sitehtml3direxp='$sitehtml3direxp'
21954 sitelib_stem='$sitelib_stem'
21955 sitelibexp='$sitelibexp'
21956 siteman1dir='$siteman1dir'
21957 siteman1direxp='$siteman1direxp'
21958 siteman3dir='$siteman3dir'
21959 siteman3direxp='$siteman3direxp'
21960 siteprefix='$siteprefix'
21961 siteprefixexp='$siteprefixexp'
21962 sitescript='$sitescript'
21963 sitescriptexp='$sitescriptexp'
21964 sizesize='$sizesize'
21965 sizetype='$sizetype'
21969 sockethdr='$sockethdr'
21970 socketlib='$socketlib'
21971 socksizetype='$socksizetype'
21973 spackage='$spackage'
21974 spitshell='$spitshell'
21975 srand48_r_proto='$srand48_r_proto'
21976 srandom_r_proto='$srandom_r_proto'
21978 ssizetype='$ssizetype'
21979 startperl='$startperl'
21981 static_ext='$static_ext'
21983 stdio_base='$stdio_base'
21984 stdio_bufsiz='$stdio_bufsiz'
21985 stdio_cnt='$stdio_cnt'
21986 stdio_filbuf='$stdio_filbuf'
21987 stdio_ptr='$stdio_ptr'
21988 stdio_stream_array='$stdio_stream_array'
21989 strerror_r_proto='$strerror_r_proto'
21992 subversion='$subversion'
21996 targetarch='$targetarch'
22000 timeincl='$timeincl'
22001 timetype='$timetype'
22002 tmpnam_r_proto='$tmpnam_r_proto'
22008 ttyname_r_proto='$ttyname_r_proto'
22017 uidformat='$uidformat'
22023 uquadtype='$uquadtype'
22024 use5005threads='$use5005threads'
22025 use64bitall='$use64bitall'
22026 use64bitint='$use64bitint'
22027 usecrosscompile='$usecrosscompile'
22029 usefaststdio='$usefaststdio'
22030 useithreads='$useithreads'
22031 uselargefiles='$uselargefiles'
22032 uselongdouble='$uselongdouble'
22033 usemallocwrap='$usemallocwrap'
22034 usemorebits='$usemorebits'
22035 usemultiplicity='$usemultiplicity'
22036 usemymalloc='$usemymalloc'
22038 useopcode='$useopcode'
22039 useperlio='$useperlio'
22040 useposix='$useposix'
22041 usereentrant='$usereentrant'
22042 userelocatableinc='$userelocatableinc'
22044 useshrplib='$useshrplib'
22045 usesitecustomize='$usesitecustomize'
22046 usesocks='$usesocks'
22047 usethreads='$usethreads'
22048 usevendorprefix='$usevendorprefix'
22049 usevfork='$usevfork'
22052 uvXUformat='$uvXUformat'
22053 uvoformat='$uvoformat'
22056 uvuformat='$uvuformat'
22057 uvxformat='$uvxformat'
22058 vendorarch='$vendorarch'
22059 vendorarchexp='$vendorarchexp'
22060 vendorbin='$vendorbin'
22061 vendorbinexp='$vendorbinexp'
22062 vendorhtml1dir='$vendorhtml1dir'
22063 vendorhtml1direxp='$vendorhtml1direxp'
22064 vendorhtml3dir='$vendorhtml3dir'
22065 vendorhtml3direxp='$vendorhtml3direxp'
22066 vendorlib='$vendorlib'
22067 vendorlib_stem='$vendorlib_stem'
22068 vendorlibexp='$vendorlibexp'
22069 vendorman1dir='$vendorman1dir'
22070 vendorman1direxp='$vendorman1direxp'
22071 vendorman3dir='$vendorman3dir'
22072 vendorman3direxp='$vendorman3direxp'
22073 vendorprefix='$vendorprefix'
22074 vendorprefixexp='$vendorprefixexp'
22075 vendorscript='$vendorscript'
22076 vendorscriptexp='$vendorscriptexp'
22078 version_patchlevel_string='$version_patchlevel_string'
22079 versiononly='$versiononly'
22081 voidflags='$voidflags'
22084 yaccflags='$yaccflags'
22089 : Add in command line options if available
22090 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
22092 : add special variables
22093 $test -f $src/patchlevel.h && \
22094 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
22095 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
22096 echo "PERL_CONFIG_SH=true" >>config.sh
22098 : propagate old symbols
22099 if $test -f UU/config.sh; then
22100 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
22101 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
22102 $sort | $uniq -u >UU/oldsyms
22103 set X `cat UU/oldsyms`
22109 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
22111 echo "# Variables propagated from previous config.sh file." >>config.sh
22112 for sym in `cat UU/oldsyms`; do
22113 echo " Propagating $hint variable "'$'"$sym..."
22114 eval 'tmp="$'"${sym}"'"'
22116 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
22122 : Finish up by extracting the .SH files
22126 echo "Extraction done."
22136 If you'd like to make any changes to the config.sh file before I begin
22137 to configure things, do it as a shell escape now (e.g. !vi config.sh).
22140 rp="Press return or use a shell escape to edit config.sh:"
22145 *) : in case they cannot read
22146 sh 1>&4 -c "$ans";;
22151 : if this fails, just run all the .SH files by hand
22160 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
22167 Now you need to generate make dependencies by running "$make depend".
22168 You might prefer to run it in background: "$make depend > makedepend.out &"
22169 It can take a while, so you might not want to run it right now.
22174 rp="Run $make depend now?"
22178 $make depend && echo "Now you must run '$make'."
22181 echo "You must run '$make depend' then '$make'."
22184 elif test -f [Mm]akefile; then
22186 echo "Now you must run a $make."
22188 echo "Configure done."
22191 if $test -f Policy.sh; then
22194 If you compile $package on a different machine or from a different object
22195 directory, copy the Policy.sh file from this object directory to the
22196 new one before you run Configure -- this will help you with most of
22197 the policy defaults.
22201 if $test -f config.msg; then
22202 echo "Hmm. I also noted the following information while running:"
22204 $cat config.msg >&4
22207 $rm -f kit*isdone ark*isdone