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
5971 : determine where private library files go
5972 : Usual default is /usr/local/lib/perl5/$version.
5973 : Also allow things like /opt/perl/lib/$version, since
5974 : /opt/perl/lib/perl5... would be redundant.
5975 : The default "style" setting is made in installstyle.U
5976 case "$installstyle" in
5977 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5978 *) set dflt privlib lib/$version ;;
5983 There are some auxiliary files for $package that need to be put into a
5984 private library directory that is accessible by everyone.
5988 rp='Pathname where the private library files will reside?'
5991 privlibexp="$ansexp"
5992 : Change installation prefix, if necessary.
5993 if $test X"$prefix" != X"$installprefix"; then
5994 installprivlib=`echo $privlibexp | sed "s#^$prefixexp#$installprefixexp#"`
5996 installprivlib="$privlibexp"
5999 : set the prefixup variable, to restore leading tilda escape
6000 prefixup='case "$prefixexp" in
6002 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6005 : determine where public architecture dependent libraries go
6008 : privlib default is /usr/local/lib/$package/$version
6009 : archlib default is /usr/local/lib/$package/$version/$archname
6010 : privlib may have an optional trailing /share.
6011 tdflt=`echo $privlib | $sed 's,/share$,,'`
6012 tdflt=$tdflt/$archname
6021 $spackage contains architecture-dependent library files. If you are
6022 sharing libraries in a heterogeneous environment, you might store
6023 these files in a separate location. Otherwise, you can just include
6024 them with the rest of the public library files.
6028 rp='Where do you want to put the public architecture-dependent libraries?'
6031 archlibexp="$ansexp"
6032 if $test X"$archlib" = X"$privlib"; then
6037 : Change installation prefix, if necessary.
6038 if $test X"$prefix" != X"$installprefix"; then
6039 installarchlib=`echo $archlibexp | sed "s#^$prefixexp#$installprefixexp#"`
6041 installarchlib="$archlibexp"
6044 : see if setuid scripts can be secure
6047 Some kernels have a bug that prevents setuid #! scripts from being
6048 secure. Some sites have disabled setuid #! scripts because of this.
6050 First let's decide if your kernel supports secure setuid #! scripts.
6051 (If setuid #! scripts would be secure but have been disabled anyway,
6052 don't say that they are secure if asked.)
6057 if $test -d /dev/fd; then
6058 echo "#!$ls" >reflect
6059 chmod +x,u+s reflect
6060 ./reflect >flect 2>&1
6061 if $contains "/dev/fd" flect >/dev/null; then
6062 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6066 If you are not sure if they are secure, I can check but I'll need a
6067 username and password different from the one you are using right now.
6068 If you don't have such a username or don't want me to test, simply
6072 rp='Other username to test security of setuid scripts with?'
6077 case "$d_suidsafe" in
6078 '') echo "I'll assume setuid scripts are *not* secure." >&4
6081 echo "Well, the $hint value is *not* secure." >&4
6083 *) echo "Well, the $hint value *is* secure." >&4
6088 $rm -f reflect flect
6089 echo "#!$ls" >reflect
6090 chmod +x,u+s reflect
6093 echo '"su" will (probably) prompt you for '"$ans's password."
6094 su $ans -c './reflect >flect'
6095 if $contains "/dev/fd" flect >/dev/null; then
6096 echo "Okay, it looks like setuid scripts are secure." >&4
6099 echo "I don't think setuid scripts are secure." >&4
6104 rp='Does your kernel have *secure* setuid scripts?'
6107 [yY]*) val="$define";;
6112 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6113 echo "(That's for file descriptors, not floppy disks.)"
6119 $rm -f reflect flect
6121 : now see if they want to do setuid emulation
6124 case "$d_suidsafe" in
6127 echo "No need to emulate SUID scripts since they are secure here." >&4
6131 Some systems have disabled setuid scripts, especially systems where
6132 setuid scripts cannot be secure. On systems where setuid scripts have
6133 been disabled, the setuid/setgid bits on scripts are currently
6134 useless. It is possible for $package to detect those bits and emulate
6135 setuid/setgid in a secure fashion. This emulation will only work if
6136 setuid scripts have been disabled in your kernel.
6140 "$define") dflt=y ;;
6143 rp="Do you want to do setuid/setgid emulation?"
6146 [yY]*) val="$define";;
6154 : see if this is a malloc.h system
6155 : we want a real compile instead of Inhdr because some systems have a
6156 : malloc.h that just gives a compile error saying to use stdlib.h instead
6161 int main () { return 0; }
6164 if eval $compile; then
6165 echo "<malloc.h> found." >&4
6168 echo "<malloc.h> NOT found." >&4
6175 : check for void type
6177 echo "Checking to see how well your C compiler groks the void type..." >&4
6178 case "$voidflags" in
6190 extern void moo(); /* function returning void */
6191 void (*goo)(); /* ptr to func returning void */
6193 void *hue; /* generic ptr */
6206 int main() { sub(); }
6208 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6209 voidflags=$defvoidused
6210 echo "Good. It appears to support void to the level $package wants.">&4
6211 if $contains warning .out >/dev/null 2>&1; then
6212 echo "However, you might get some warnings that look like this:"
6216 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6217 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6218 echo "It supports 1..."
6219 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6220 echo "It also supports 2..."
6221 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6223 echo "And it supports 4 but not 8 definitely."
6225 echo "It doesn't support 4..."
6226 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6228 echo "But it supports 8."
6231 echo "Neither does it support 8."
6235 echo "It does not support 2..."
6236 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6238 echo "But it supports 4 and 8."
6240 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6242 echo "And it supports 4 but has not heard about 8."
6244 echo "However it supports 8 but not 4."
6249 echo "There is no support at all for void."
6254 case "$voidflags" in
6257 Support flag bits are:
6258 1: basic void declarations.
6259 2: arrays of pointers to functions returning void.
6260 4: operations between pointers to and addresses of void functions.
6261 8: generic void pointers.
6264 rp="Your void support flags add up to what?"
6271 : check for length of pointer
6275 echo "Checking to see how big your pointers are..." >&4
6276 if test "$voidflags" -gt 7; then
6277 echo '#define VOID_PTR char *' > try.c
6279 echo '#define VOID_PTR void *' > try.c
6289 printf("%d\n", (int)sizeof(VOID_PTR));
6294 if eval $compile_ok; then
6295 ptrsize=`$run ./try`
6296 echo "Your pointers are $ptrsize bytes long."
6299 echo "(I can't seem to compile the test program. Guessing...)" >&4
6300 rp="What is the size of a pointer (in bytes)?"
6307 case "$use64bitall" in
6308 "$define"|true|[yY]*)
6312 *** You have chosen a maximally 64-bit build,
6313 *** but your pointers are only 4 bytes wide.
6314 *** Please rerun Configure without -Duse64bitall.
6319 *** Since you have quads, you could possibly try with -Duse64bitint.
6324 *** Cannot continue, aborting.
6335 : determine whether to use malloc wrapping
6337 case "$usemallocwrap" in
6338 [yY]*|true|$define) dflt='y' ;;
6339 [nN]*|false|$undef) dflt='n' ;;
6340 *) case "$usedevel" in
6341 [yY]*|true|$define) dflt='y' ;;
6346 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6348 usemallocwrap="$ans"
6351 usemallocwrap="$define" ;;
6353 usemallocwrap="$undef" ;;
6356 : determine which malloc to compile in
6358 case "$usemymalloc" in
6359 [yY]*|true|$define) dflt='y' ;;
6360 [nN]*|false|$undef) dflt='n' ;;
6361 *) case "$ptrsize" in
6367 rp="Do you wish to attempt to use the malloc that comes with $package?"
6373 mallocsrc='malloc.c'
6374 mallocobj="malloc$_o"
6375 d_mymalloc="$define"
6378 : Remove malloc from list of libraries to use
6379 echo "Removing unneeded -lmalloc from library list" >&4
6380 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6383 echo "libs = $libs" >&4
6395 : compute the return types of malloc and free
6397 $cat >malloc.c <<END
6401 #include <sys/types.h>
6415 case "$malloctype" in
6417 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6424 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6428 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6435 echo "Your system uses $freetype free(), it would seem." >&4
6439 After $package is installed, you may wish to install various
6440 add-on modules and utilities. Typically, these add-ons will
6441 be installed under $prefix with the rest
6442 of this package. However, you may wish to install such add-ons
6443 elsewhere under a different prefix.
6445 If you do not wish to put everything under a single prefix, that's
6446 ok. You will be prompted for the individual locations; this siteprefix
6447 is only used to suggest the defaults.
6449 The default should be fine for most people.
6453 rp='Installation prefix to use for add-on modules and utilities?'
6454 : XXX Here might be another good place for an installstyle setting.
6455 case "$siteprefix" in
6457 *) dflt=$siteprefix ;;
6460 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6462 case "$siteprefix" in
6466 *) oldsiteprefix="$prefix";;
6471 siteprefixexp="$ansexp"
6473 : determine where site specific libraries go.
6474 : Usual default is /usr/local/lib/perl5/site_perl/$version
6475 : The default "style" setting is made in installstyle.U
6476 : XXX No longer works with Prefixit stuff.
6477 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6479 '') case "$installstyle" in
6480 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6481 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6489 The installation process will create a directory for
6490 site-specific extensions and modules. Most users find it convenient
6491 to place all site-specific files in this directory rather than in the
6492 main distribution directory.
6496 rp='Pathname for the site-specific library files?'
6499 sitelibexp="$ansexp"
6500 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6501 : Change installation prefix, if necessary.
6502 if $test X"$prefix" != X"$installprefix"; then
6503 installsitelib=`echo $sitelibexp | $sed "s#^$prefixexp#$installprefixexp#"`
6505 installsitelib="$sitelibexp"
6508 : determine where site specific architecture-dependent libraries go.
6509 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6510 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6511 : sitelib may have an optional trailing /share.
6513 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6514 dflt="$dflt/$archname"
6519 set sitearch sitearch none
6523 The installation process will also create a directory for
6524 architecture-dependent site-specific extensions and modules.
6528 rp='Pathname for the site-specific architecture-dependent library files?'
6531 sitearchexp="$ansexp"
6532 : Change installation prefix, if necessary.
6533 if $test X"$prefix" != X"$installprefix"; then
6534 installsitearch=`echo $sitearchexp | sed "s#^$prefixexp#$installprefixexp#"`
6536 installsitearch="$sitearchexp"
6541 The installation process will also create a directory for
6542 vendor-supplied add-ons. Vendors who supply perl with their system
6543 may find it convenient to place all vendor-supplied files in this
6544 directory rather than in the main distribution directory. This will
6545 ease upgrades between binary-compatible maintenance versions of perl.
6547 Of course you may also use these directories in whatever way you see
6548 fit. For example, you might use them to access modules shared over a
6549 company-wide network.
6551 The default answer should be fine for most people.
6552 This causes further questions about vendor add-ons to be skipped
6553 and no vendor-specific directories will be configured for perl.
6556 rp='Do you want to configure vendor-specific add-on directories?'
6557 case "$usevendorprefix" in
6558 define|true|[yY]*) dflt=y ;;
6559 *) : User may have set vendorprefix directly on Configure command line.
6560 case "$vendorprefix" in
6569 rp='Installation prefix to use for vendor-supplied add-ons?'
6570 case "$vendorprefix" in
6572 *) dflt=$vendorprefix ;;
6575 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6577 case "$vendorprefix" in
6581 *) oldvendorprefix="$prefix";;
6585 usevendorprefix="$define"
6587 vendorprefixexp="$ansexp"
6589 *) usevendorprefix="$undef"
6595 case "$vendorprefix" in
6596 '') d_vendorlib="$undef"
6600 *) d_vendorlib="$define"
6601 : determine where vendor-supplied modules go.
6602 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6603 case "$vendorlib" in
6605 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6606 case "$installstyle" in
6607 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6608 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6611 *) dflt="$vendorlib"
6615 rp='Pathname for the vendor-supplied library files?'
6618 vendorlibexp="$ansexp"
6621 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6622 : Change installation prefix, if necessary.
6623 if $test X"$prefix" != X"$installprefix"; then
6624 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefixexp#$installprefixexp#"`
6626 installvendorlib="$vendorlibexp"
6629 case "$vendorprefix" in
6630 '') d_vendorarch="$undef"
6634 *) d_vendorarch="$define"
6635 : determine where vendor-supplied architecture-dependent libraries go.
6636 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6637 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6638 : vendorlib may have an optional trailing /share.
6639 case "$vendorarch" in
6640 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6641 dflt="$dflt/$archname"
6643 *) dflt="$vendorarch" ;;
6646 rp='Pathname for vendor-supplied architecture-dependent files?'
6649 vendorarchexp="$ansexp"
6652 : Change installation prefix, if necessary.
6653 if $test X"$prefix" != X"$installprefix"; then
6654 installvendorarch=`echo $vendorarchexp | sed "s#^$prefixexp#$installprefixexp#"`
6656 installvendorarch="$vendorarchexp"
6659 : Final catch-all directories to search
6662 Lastly, you can have perl look in other directories for extensions and
6663 modules in addition to those already specified.
6664 These directories will be searched after
6668 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6669 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6671 case "$otherlibdirs" in
6672 ''|' ') dflt='none' ;;
6673 *) dflt="$otherlibdirs" ;;
6676 Enter a colon-separated set of extra paths to include in perl's @INC
6677 search path, or enter 'none' for no extra paths.
6681 rp='Colon-separated list of additional directories for perl to search?'
6684 ' '|''|none) otherlibdirs=' ' ;;
6685 *) otherlibdirs="$ans" ;;
6687 case "$otherlibdirs" in
6691 set d_perl_otherlibdirs
6694 : Cruising for prototypes
6696 echo "Checking out function prototypes..." >&4
6697 $cat >prototype.c <<EOCP
6702 int main(int argc, char *argv[]) {
6705 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6706 echo "Your C compiler appears to support function prototypes."
6709 echo "Your C compiler doesn't seem to understand function prototypes."
6716 case "$prototype" in
6718 *) ansi2knr='ansi2knr'
6723 This version of $package can only be compiled by a compiler that
6724 understands function prototypes. Unfortunately, your C compiler
6726 doesn't seem to understand them. Sorry about that.
6728 If GNU cc is available for your system, perhaps you could try that instead.
6730 Eventually, we hope to support building Perl with pre-ANSI compilers.
6731 If you would like to help in that effort, please contact <perlbug@perl.org>.
6733 Aborting Configure now.
6739 : determine where public executables go
6744 rp='Pathname where the public executables will reside?'
6746 if $test "X$ansexp" != "X$binexp"; then
6751 : Change installation prefix, if necessary.
6752 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6753 if $test X"$prefix" != X"$installprefix"; then
6754 installbin=`echo $binexp | sed "s#^$prefixexp#$installprefixexp#"`
6756 installbin="$binexp"
6765 Perl can be built with extra modules or bundles of modules which
6766 will be fetched from the CPAN and installed alongside Perl.
6768 Notice that you will need access to the CPAN; either via the Internet,
6769 or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
6770 be asked later to configure the CPAN.pm module which will in turn do
6771 the installation of the rest of the extra modules or bundles.)
6773 Notice also that if the modules require any external software such as
6774 libraries and headers (the libz library and the zlib.h header for the
6775 Compress::Zlib module, for example) you MUST have any such software
6776 already installed, this configuration process will NOT install such
6779 If this doesn't make any sense to you, just accept the default '$dflt'.
6781 rp='Install any extra modules (y or n)?'
6787 Please list any extra modules or bundles to be installed from CPAN,
6788 with spaces between the names. The names can be in any format the
6789 'install' command of CPAN.pm will understand. (Answer 'none',
6790 without the quotes, to install no extra modules or bundles.)
6800 $rm -f ../extras.lst
6802 *) echo "(Saving the list of extras for later...)"
6803 echo "$extras" > ../extras.lst
6811 : determine where html pages for programs go
6812 set html1dir html1dir none
6816 If you wish to install html files for programs in $spackage, indicate
6817 the appropriate directory here. To skip installing html files,
6821 ''|none|$undef|' ') dflt=none ;;
6822 *) dflt=$html1dir ;;
6825 rp="Directory for the main $spackage html pages?"
6828 html1direxp="$ansexp"
6829 : Use ' ' for none so value is preserved next time through Configure
6830 $test X"$html1dir" = "X" && html1dir=' '
6831 : Change installation prefix, if necessary.
6832 if $test X"$prefix" != X"$installprefix"; then
6833 installhtml1dir=`echo $html1direxp | sed "s#^$prefixexp#$installprefixexp#"`
6835 installhtml1dir="$html1direxp"
6838 : determine where html pages for libraries and modules go
6839 set html3dir html3dir none
6843 If you wish to install html files for modules associated with $spackage,
6844 indicate the appropriate directory here. To skip installing html files,
6847 : There is no obvious default. If they have specified html1dir, then
6848 : try to key off that, possibly changing .../html1 into .../html3.
6850 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6851 *) dflt=$html3dir ;;
6854 rp="Directory for the $spackage module html pages?"
6857 html3direxp="$ansexp"
6858 : Use ' ' for none so value is preserved next time through Configure
6859 $test X"$html3dir" = "X" && html3dir=' '
6860 : Change installation prefix, if necessary.
6861 if $test X"$prefix" != X"$installprefix"; then
6862 installhtml3dir=`echo $html3direxp | sed "s#^$prefixexp#$installprefixexp#"`
6864 installhtml3dir="$html3direxp"
6867 : Find perl5.005 or later.
6868 echo "Looking for a previously installed perl5.005 or later... "
6870 '') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6871 : Check if this perl is recent and can load a simple module
6872 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6875 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6885 '') echo "None found. That's ok.";;
6886 *) echo "Using $perl5." ;;
6889 : Determine list of previous versions to include in @INC
6890 $cat > getverlist <<EOPL
6893 \$api_versionstring = "$api_versionstring";
6894 \$version = "$version";
6895 \$stem = "$sitelib_stem";
6896 \$archname = "$archname";
6898 $cat >> getverlist <<'EOPL'
6899 # Can't have leading @ because metaconfig interprets it as a command!
6900 ;@inc_version_list=();
6901 # XXX Redo to do opendir/readdir?
6904 ;@candidates = glob("5.*");
6910 # XXX ToDo: These comparisons must be reworked when two-digit
6911 # subversions come along, so that 5.7.10 compares as greater than
6912 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6913 # widespread that we can use the built-in version vectors rather
6914 # than reinventing them here. For 5.6.0, however, we must
6915 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6916 foreach $d (@candidates) {
6917 if ($d lt $version) {
6918 if ($d ge $api_versionstring) {
6919 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6921 elsif ($d ge "5.005") {
6922 unshift(@inc_version_list, grep { -d } $d);
6926 # Skip newer version. I.e. don't look in
6927 # 5.7.0 if we're installing 5.6.1.
6931 if (@inc_version_list) {
6932 print join(' ', @inc_version_list);
6935 # Blank space to preserve value for next Configure run.
6940 case "$inc_version_list" in
6941 '') if test -x "$perl5$exe_ext"; then
6942 dflt=`$perl5 getverlist`
6947 $undef) dflt='none' ;;
6948 *) eval dflt=\"$inc_version_list\" ;;
6951 ''|' ') dflt=none ;;
6958 In order to ease the process of upgrading, this version of perl
6959 can be configured to use modules built and installed with earlier
6960 versions of perl that were installed under $prefix. Specify here
6961 the list of earlier versions that this version of perl should check.
6962 If Configure detected no earlier versions of perl installed under
6963 $prefix, then the list will be empty. Answer 'none' to tell perl
6964 to not search earlier versions.
6966 The default should almost always be sensible, so if you're not sure,
6967 just accept the default.
6970 rp='List of earlier versions to include in @INC?'
6973 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6974 *) inc_version_list="$ans" ;;
6976 case "$inc_version_list" in
6978 inc_version_list_init='0';;
6979 *) inc_version_list_init=`echo $inc_version_list |
6980 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6985 : determine whether to install perl also as /usr/bin/perl
6988 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6990 Many scripts expect perl to be installed as /usr/bin/perl.
6992 If you want to, I can install the perl you are about to compile
6993 as /usr/bin/perl (in addition to $bin/perl).
6995 if test -f /usr/bin/perl; then
6998 However, please note that because you already have a /usr/bin/perl,
6999 overwriting that with a new Perl would very probably cause problems.
7000 Therefore I'm assuming you don't want to do that (unless you insist).
7003 case "$installusrbinperl" in
7004 "$define"|[yY]*) dflt='y';;
7010 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
7013 case "$installusrbinperl" in
7014 "$undef"|[nN]*) dflt='n';;
7018 rp="Do you want to install perl as /usr/bin/perl?"
7021 [yY]*) val="$define";;
7027 set installusrbinperl
7031 echo "Checking for GNU C Library..." >&4
7033 /* Find out version of GNU C library. __GLIBC__ and __GLIBC_MINOR__
7034 alone are insufficient to distinguish different versions, such as
7035 2.0.6 and 2.0.7. The function gnu_get_libc_version() appeared in
7036 libc version 2.1.0. A. Dougherty, June 3, 2002.
7042 # ifdef __GLIBC_MINOR__
7043 # if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
7044 # include <gnu/libc-version.h>
7045 printf("%s\n", gnu_get_libc_version());
7047 printf("%d.%d\n", __GLIBC__, __GLIBC_MINOR__);
7050 printf("%d\n", __GLIBC__);
7059 if eval $compile_ok && $run ./try > glibc.ver; then
7061 gnulibc_version=`$cat glibc.ver`
7062 echo "You are using the GNU C Library version $gnulibc_version"
7066 echo "You are not using the GNU C Library"
7068 $rm -f try try.* glibc.ver
7072 : see if nm is to be used to determine whether a symbol is defined or not
7076 case "$d_gnulibc" in
7079 echo "nm probably won't work on the GNU C Library." >&4
7085 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7087 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
7088 echo "'nm' won't be sufficient on this sytem." >&4
7094 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7095 if $test $dflt -gt 20; then
7105 true|$define) dflt=y;;
7112 I can use $nm to extract the symbols from your C libraries. This
7113 is a time consuming task which may generate huge output on the disk (up
7114 to 3 megabytes) but that should make the symbols extraction faster. The
7115 alternative is to skip the 'nm' extraction part and to compile a small
7116 test program instead to determine whether each symbol is present. If
7117 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7118 this may be the best solution.
7120 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7123 rp="Shall I use $nm to extract C symbols from the libraries?"
7126 [Nn]*) usenm=false;;
7135 : nm options which may be necessary
7137 '') if $test -f /mach_boot; then
7139 elif $test -d /usr/ccs/lib; then
7140 nm_opt='-p' # Solaris (and SunOS?)
7141 elif $test -f /dgux; then
7143 elif $test -f /lib64/rld; then
7144 nm_opt='-p' # 64-bit Irix
7150 : nm options which may be necessary for shared libraries but illegal
7151 : for archive libraries. Thank you, Linux.
7152 case "$nm_so_opt" in
7153 '') case "$myuname" in
7155 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7156 nm_so_opt='--dynamic'
7165 : get list of predefined functions in a handy place
7170 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7176 *) for thislib in $libs; do
7179 : Handle C library specially below.
7182 thislib=`echo $thislib | $sed -e 's/^-l//'`
7183 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7185 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7187 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7189 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7191 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7193 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7195 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7200 libnames="$libnames $try"
7202 *) libnames="$libnames $thislib" ;;
7211 for xxx in $libpth; do
7212 $test -r $1 || set $xxx/libc.$so
7213 : The messy sed command sorts on library version numbers.
7215 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7216 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7218 s/[0-9][0-9]*/0000&/g
7219 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7222 $sort | $sed -e 's/^.* //'`
7225 $test -r $1 || set /usr/ccs/lib/libc.$so
7226 $test -r $1 || set /lib/libsys_s$_a
7232 if $test -r "$1"; then
7233 echo "Your (shared) C library seems to be in $1."
7235 elif $test -r /lib/libc && $test -r /lib/clib; then
7236 echo "Your C library seems to be in both /lib/clib and /lib/libc."
7238 libc='/lib/clib /lib/libc'
7239 if $test -r /lib/syslib; then
7240 echo "(Your math library is in /lib/syslib.)"
7241 libc="$libc /lib/syslib"
7243 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7244 echo "Your C library seems to be in $libc, as you said before."
7245 elif $test -r $incpath/usr/lib/libc$_a; then
7246 libc=$incpath/usr/lib/libc$_a;
7247 echo "Your C library seems to be in $libc. That's fine."
7248 elif $test -r /lib/libc$_a; then
7250 echo "Your C library seems to be in $libc. You're normal."
7252 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7254 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7255 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7256 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7258 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7260 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7263 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7265 if $test -r "$tans"; then
7266 echo "Your C library seems to be in $tans, of all places."
7272 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7276 If the guess above is wrong (which it might be if you're using a strange
7277 compiler, or your machine supports multiple models), you can override it here.
7282 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7284 I can't seem to find your C library. I've looked in the following places:
7287 $sed 's/^/ /' libpath
7290 None of these seems to contain your C library. I need to get its name...
7295 rp='Where is your C library?'
7300 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7301 set X `cat libnames`
7304 case $# in 1) xxx=file; esac
7305 echo "Extracting names from the following $xxx for later perusal:" >&4
7307 $sed 's/^/ /' libnames >&4
7309 $echo $n "This may take a while...$c" >&4
7313 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7314 *) $nm $nm_opt $file 2>/dev/null;;
7319 $grep fprintf libc.tmp > libc.ptf
7320 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7321 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7323 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *//p'";\
7325 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7327 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7329 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7331 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7333 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7335 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7337 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7339 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7341 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7343 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7345 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7347 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7348 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
7350 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7352 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7354 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7356 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7358 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7360 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7362 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7364 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7366 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7368 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7370 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7372 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7374 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7376 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
7378 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7381 $nm -p $* 2>/dev/null >libc.tmp
7382 $grep fprintf libc.tmp > libc.ptf
7383 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7384 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7390 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7392 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7393 for thisname in $libnames $libc; do
7394 $ar t $thisname >>libc.tmp
7396 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7398 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7399 # Repeat libc to extract forwarders to DLL entries too
7400 for thisname in $libnames $libc; do
7401 $ar tv $thisname >>libc.tmp
7402 # Revision 50 of EMX has bug in $ar.
7403 # it will not extract forwarders to DLL entries
7404 # Use emximp which will extract exactly them.
7405 emximp -o tmp.imp $thisname \
7407 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7408 < tmp.imp >>libc.tmp
7411 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7414 echo "$ar didn't seem to work right." >&4
7415 echo "Maybe this is a Cray...trying bld instead..." >&4
7416 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7418 for thisname in $libnames; do
7420 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7421 $ar t $thisname >>libc.tmp
7425 echo "That didn't work either. Giving up." >&4
7435 echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7436 dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7438 *) if $test -f /lib/syscalls.exp; then
7440 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7441 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
7447 $rm -f libnames libpath
7449 : see if dld is available
7453 : is a C symbol defined?
7456 -v) tf=libc.tmp; tdc="";;
7457 -a) tf=libc.tmp; tdc="[]";;
7458 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7461 case "$reuseval-$4" in
7463 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7468 if $test "$runnm" = true; then
7469 if $contains $tlook $tf >/dev/null 2>&1; then
7471 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7472 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7473 $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7474 $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7475 $rm -f try$_exe try.c core core.* try.core;
7478 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7479 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7480 $rm -f try$_exe try.c;
7485 $define) tval=true;;
7492 : define an is-in-libc? function
7493 inlibc='echo " "; td=$define; tu=$undef;
7494 sym=$1; var=$2; eval "was=\$$2";
7496 case "$reuseval$was" in
7506 echo "$sym() found." >&4;
7507 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7509 echo "$sym() NOT found." >&4;
7510 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7514 $define) echo "$sym() found." >&4;;
7515 *) echo "$sym() NOT found." >&4;;
7519 : see if dlopen exists
7526 : determine which dynamic loading, if any, to compile in
7528 dldir="ext/DynaLoader"
7541 $define) dflt='y' ;;
7544 $define) dflt='y' ;;
7546 : Does a dl_xxx.xs file exist for this operating system
7547 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7550 rp="Do you wish to use dynamic loading?"
7557 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7558 dflt="$dldir/dl_${osname}.xs"
7559 elif $test "$d_dlopen" = "$define" ; then
7560 dflt="$dldir/dl_dlopen.xs"
7561 elif $test "$i_dld" = "$define" ; then
7562 dflt="$dldir/dl_dld.xs"
7567 *) dflt="$dldir/$dlsrc"
7570 echo "The following dynamic loading files are available:"
7571 : Can not go over to $dldir because getfile has path hard-coded in.
7572 tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7573 rp="Source file to use for dynamic loading"
7579 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7583 Some systems may require passing special flags to $cc -c to
7584 compile modules that will be used to create a shared library.
7585 To use no flags, say "none".
7588 case "$cccdlflags" in
7589 '') case "$gccversion" in
7590 '') case "$osname" in
7592 next) dflt='none' ;;
7593 irix*) dflt='-KPIC' ;;
7594 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7595 sunos) dflt='-pic' ;;
7599 *) case "$osname" in
7600 darwin) dflt='none' ;;
7601 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7606 *) dflt="$cccdlflags" ;;
7608 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7611 none) cccdlflags=' ' ;;
7612 *) cccdlflags="$ans" ;;
7617 Some systems use ld to create libraries that can be dynamically loaded,
7618 while other systems (such as those using ELF) use $cc.
7622 '') $cat >try.c <<EOM
7623 /* Test for whether ELF binaries are produced */
7631 int i = open("a.out",O_RDONLY);
7634 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7635 exit(0); /* succeed (yes, it's ELF) */
7640 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7642 You appear to have ELF support. I'll use $cc to build dynamic libraries.
7646 echo "I'll use ld to build dynamic libraries."
7655 rp="What command should be used to create dynamic libraries?"
7661 Some systems may require passing special flags to $ld to create a
7662 library that can be dynamically loaded. If your ld flags include
7663 -L/other/path options to locate libraries outside your loader's normal
7664 search path, you may need to specify those -L options here as well. To
7665 use no flags, say "none".
7668 case "$lddlflags" in
7669 '') case "$osname" in
7670 beos) dflt='-nostart' ;;
7672 case "$gccversion" in
7673 '') dflt="$dflt +vnocompatwarnings" ;;
7676 linux|irix*|gnu*) dflt='-shared' ;;
7677 next) dflt='none' ;;
7678 solaris) dflt='-G' ;;
7679 sunos) dflt='-assert nodefinitions' ;;
7680 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7684 *) dflt="$lddlflags" ;;
7687 : Try to guess additional flags to pick up local libraries.
7688 : Be careful not to append to a plain 'none'
7692 for thisflag in $ldflags; do
7697 *) dflt="$dflt $thisflag" ;;
7704 ''|' ') dflt='none' ;;
7707 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7710 none) lddlflags=' ' ;;
7711 *) lddlflags="$ans" ;;
7716 Some systems may require passing special flags to $cc to indicate that
7717 the resulting executable will use dynamic linking. To use no flags,
7721 case "$ccdlflags" in
7722 '') case "$osname" in
7723 linux|hpux|gnu*) dflt='-Wl,-E' ;;
7724 next|sunos) dflt='none' ;;
7728 *) dflt="$ccdlflags" ;;
7730 rp="Any special flags to pass to $cc to use dynamic linking?"
7733 none) ccdlflags=' ' ;;
7734 *) ccdlflags="$ans" ;;
7748 # No dynamic loading being used, so don't bother even to prompt.
7751 *) case "$useshrplib" in
7752 '') case "$osname" in
7753 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7755 also='Building a shared libperl is required for dynamic loading to work on your system.'
7760 also='Building a shared libperl is needed for MAB support.'
7778 The perl executable is normally obtained by linking perlmain.c with
7779 libperl${_a}, any static extensions (usually just DynaLoader), and
7780 any other libraries needed on this system (such as -lm, etc.). Since
7781 your system supports dynamic loading, it is probably possible to build
7782 a shared libperl.$so. If you will have more than one executable linked
7783 to libperl.$so, this will significantly reduce the size of each
7784 executable, but it may have a noticeable effect on performance. The
7785 default is probably sensible for your system.
7789 rp="Build a shared libperl.$so (y/n)"
7793 useshrplib='true' ;;
7794 *) useshrplib='false' ;;
7799 case "$useshrplib" in
7803 # Figure out a good name for libperl.so. Since it gets stored in
7804 # a version-specific architecture-dependent library, the version
7805 # number isn't really that important, except for making cc/ld happy.
7807 # A name such as libperl.so.3.1
7808 majmin="libperl.$so.$patchlevel.$subversion"
7809 # A name such as libperl.so.301
7810 majonly=`echo $patchlevel $subversion |
7811 $awk '{printf "%d%02d", $1, $2}'`
7812 majonly=libperl.$so.$majonly
7813 # I'd prefer to keep the os-specific stuff here to a minimum, and
7814 # rely on figuring it out from the naming of libc.
7815 case "${osname}${osvers}" in
7818 # XXX How handle the --version stuff for MAB?
7820 linux*|gnu*) # ld won't link with a bare -lperl otherwise.
7823 cygwin*) # ld links against an importlib
7824 dflt=libperl$lib_ext
7826 *) # Try to guess based on whether libc has major.minor.
7828 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7829 *libc.$so.[0-9]*) dflt=$majonly ;;
7830 *) dflt=libperl.$so ;;
7840 I need to select a good name for the shared libperl. If your system uses
7841 library names with major and minor numbers, then you might want something
7842 like $majmin. Alternatively, if your system uses a single version
7843 number for shared libraries, then you might want to use $majonly.
7844 Or, your system might be quite happy with a simple libperl.$so.
7846 Since the shared libperl will get installed into a version-specific
7847 architecture-dependent directory, the version number of the shared perl
7848 library probably isn't important, so the default should be o.k.
7851 rp='What name do you want to give to the shared libperl?'
7854 echo "Ok, I'll use $libperl"
7857 libperl="libperl${_a}"
7861 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7865 WARNING: Use of the shrpdir variable for the installation location of
7866 the shared $libperl is not supported. It was never documented and
7867 will not work in this version. Let me (perlbug@perl.org)
7868 know of any problems this may cause.
7874 But your current setting of $shrpdir is
7875 the default anyway, so it's harmless.
7880 Further, your current attempted setting of $shrpdir
7881 conflicts with the value of $archlibexp/CORE
7882 that installperl will use.
7889 # How will the perl executable find the installed shared $libperl?
7890 # Add $xxx to ccdlflags.
7891 # If we can't figure out a command-line option, use $shrpenv to
7892 # set env LD_RUN_PATH. The main perl makefile uses this.
7893 shrpdir=$archlibexp/CORE
7896 if "$useshrplib"; then
7899 # We'll set it in Makefile.SH...
7904 freebsd|netbsd|openbsd|interix|dragonfly)
7905 xxx="-Wl,-R$shrpdir"
7907 bsdos|linux|irix*|dec_osf|gnu*)
7908 xxx="-Wl,-rpath,$shrpdir"
7911 # next doesn't like the default...
7914 # beos doesn't like the default, either.
7917 # hpux doesn't like the default, either.
7918 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7921 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7927 # Only add $xxx if it isn't already in ccdlflags.
7928 case " $ccdlflags " in
7930 *) ccdlflags="$ccdlflags $xxx"
7933 Adding $xxx to the flags
7934 passed to $ld so that the perl executable will find the
7935 installed shared $libperl.
7943 # Fix ccdlflags in AIX for building external extensions.
7944 # (For building Perl itself bare -bE:perl.exp is needed,
7945 # Makefile.SH takes care of this.)
7947 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7949 # Respect a hint or command-line value.
7951 '') shrpenv="$tmp_shrpenv" ;;
7953 case "$ldlibpthname" in
7954 '') ldlibpthname=LD_LIBRARY_PATH ;;
7955 none) ldlibpthname='' ;;
7958 : determine where manual pages are on this system
7962 syspath='/usr/share/man/man1 /usr/man/man1'
7963 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7964 syspath="$syspath /usr/man/u_man/man1"
7965 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7966 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7967 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7968 sysman=`./loc . /usr/man/man1 $syspath`
7971 if $test -d "$sysman"; then
7972 echo "System manual is in $sysman." >&4
7974 echo "Could not find manual pages in source form." >&4
7977 : determine where manual pages go
7978 set man1dir man1dir none
7982 $spackage has manual pages available in source form.
7986 echo "However, you don't have nroff, so they're probably useless to you."
7988 '') man1dir="none";;
7991 echo "If you don't want the manual sources installed, answer 'none'."
7996 lookpath="$prefixexp/share/man/man1"
7997 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7998 lookpath="$lookpath $prefixexp/man/p_man/man1"
7999 lookpath="$lookpath $prefixexp/man/u_man/man1"
8000 lookpath="$lookpath $prefixexp/man/man.1"
8002 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
8003 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
8013 rp="Where do the main $spackage manual pages (source) go?"
8015 if $test "X$man1direxp" != "X$ansexp"; then
8019 man1direxp="$ansexp"
8020 : Change installation prefix, if necessary.
8021 if $test X"$prefix" != X"$installprefix"; then
8022 installman1dir=`echo $man1direxp | $sed "s#^$prefixexp#$installprefixexp#"`
8024 installman1dir="$man1direxp"
8031 : What suffix to use on installed man pages
8038 rp="What suffix should be used for the main $spackage man pages?"
8040 '') case "$man1dir" in
8054 *) dflt="$man1ext";;
8061 : see if we can have long filenames
8063 first=123456789abcdef
8065 if (echo hi >$first) 2>/dev/null; then
8066 if $test -f 123456789abcde; then
8067 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
8070 echo 'You can have filenames longer than 14 characters.'>&4
8075 You can't have filenames longer than 14 chars.
8076 You can't even think about them!
8082 $rm -rf 123456789abcde*
8084 : determine where library module manual pages go
8085 set man3dir man3dir none
8089 $spackage has manual pages for many of the library modules.
8095 However, you don't have nroff, so they're probably useless to you.
8098 '') man3dir="none";;
8102 case "$d_flexfnam" in
8105 However, your system can't handle the long file names like File::Basename.3.
8108 '') man3dir="none";;
8112 echo "If you don't want the manual sources installed, answer 'none'."
8113 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8115 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8116 if $test -d "$privlib/man/man3"; then
8119 WARNING: Previous versions of perl installed man3 pages into
8120 $privlib/man/man3. This version will suggest a
8121 new default of $dflt.
8125 rp='Do you wish to preserve the old behavior?(y/n)'
8128 y*) dflt="$privlib/man/man3" ;;
8133 *) dflt="$man3dir" ;;
8140 rp="Where do the $package library man pages (source) go?"
8143 man3direxp="$ansexp"
8144 : Change installation prefix, if necessary.
8145 if $test X"$prefix" != X"$installprefix"; then
8146 installman3dir=`echo $man3direxp | $sed "s#^$prefixexp#$installprefixexp#"`
8148 installman3dir="$man3direxp"
8155 : What suffix to use on installed man pages
8161 rp="What suffix should be used for the $package library man pages?"
8163 '') case "$man3dir" in
8177 *) dflt="$man3ext";;
8184 : see if we have to deal with yellow pages, now NIS.
8185 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8186 if $test -f /usr/etc/nibindd; then
8188 echo "I'm fairly confident you're on a NeXT."
8190 rp='Do you get the hosts file via NetInfo?'
8199 y*) hostcat='nidump hosts .';;
8200 *) case "$hostcat" in
8201 nidump*) hostcat='';;
8211 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8219 rp='Are you getting the hosts file via yellow pages?'
8222 y*) hostcat='ypcat hosts';;
8223 *) hostcat='cat /etc/hosts';;
8229 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8232 '') test -f /etc/group && groupcat='cat /etc/group';;
8235 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8238 : now get the host name
8240 echo "Figuring out host name..." >&4
8241 case "$myhostname" in
8243 echo 'Maybe "hostname" will work...'
8244 if tans=`sh -c hostname 2>&1` ; then
8252 if $test "$cont"; then
8254 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
8255 if tans=`cat /etc/systemid 2>&1` ; then
8257 phostname='cat /etc/systemid'
8258 echo "Whadyaknow. Xenix always was a bit strange..."
8261 elif $test -r /etc/systemid; then
8262 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8265 if $test "$cont"; then
8266 echo 'No, maybe "uuname -l" will work...'
8267 if tans=`sh -c 'uuname -l' 2>&1` ; then
8269 phostname='uuname -l'
8271 echo 'Strange. Maybe "uname -n" will work...'
8272 if tans=`sh -c 'uname -n' 2>&1` ; then
8274 phostname='uname -n'
8276 echo 'Oh well, maybe I can mine it out of whoami.h...'
8277 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8278 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8279 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8281 case "$myhostname" in
8282 '') echo "Does this machine have an identity crisis or something?"
8285 echo "Well, you said $myhostname before..."
8286 phostname='echo $myhostname';;
8292 case "$myhostname" in
8293 '') myhostname=noname ;;
8295 : you do not want to know about this
8300 if $test "$myhostname" ; then
8302 rp='Your host name appears to be "'$myhostname'".'" Right?"
8310 : bad guess or no guess
8311 while $test "X$myhostname" = X ; do
8313 rp="Please type the (one word) name of your host:"
8318 : translate upper to lower if necessary
8319 case "$myhostname" in
8321 echo "(Normalizing case in your host name)"
8322 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8326 case "$myhostname" in
8328 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8329 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8330 echo "(Trimming domain name from host name--host name is now $myhostname)"
8332 *) case "$mydomain" in
8335 test "X$hostcat" = "Xypcat hosts" &&
8336 ypmatch "$myhostname" hosts 2>/dev/null |\
8337 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
8340 test "X$hostcat" != "X" &&
8341 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
8342 /[ ]$myhostname[ . ]/p" > hosts
8345 if $test -f hosts; then
8346 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
8347 END { print sum }" hosts` = x1 || tmp_re="[ ]"
8348 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8349 hosts | $sort | $uniq | \
8350 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8351 case `$echo X$dflt` in
8352 X*\ *) echo "(Several hosts in the database matched hostname)"
8355 X.) echo "(You do not have fully-qualified names in the hosts database)"
8359 echo "(I cannot locate a hosts database anywhere)"
8364 tans=`./loc resolv.conf X /etc /usr/etc`
8365 if $test -f "$tans"; then
8366 echo "(Attempting domain name extraction from $tans)"
8367 dflt=.`$sed -n -e 's/ / /g' \
8368 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
8369 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8371 .) dflt=.`$sed -n -e 's/ / /g' \
8372 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
8373 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8380 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8381 dflt=.`sh -c domainname 2>/dev/null`
8384 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8388 case "$dflt$osname" in
8389 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8390 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8394 .) echo "(Lost all hope -- silly guess then)"
8400 *) dflt="$mydomain";;
8404 rp="What is your domain name?"
8414 : translate upper to lower if necessary
8417 echo "(Normalizing case in your domain name)"
8418 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8422 : a little sanity check here
8423 case "$phostname" in
8426 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8427 $myhostname$mydomain|$myhostname) ;;
8429 case "$phostname" in
8431 echo "(That doesn't agree with your whoami.h file, by the way.)"
8434 echo "(That doesn't agree with your $phostname command, by the way.)"
8444 I need to get your e-mail address in Internet format if possible, i.e.
8445 something like user@host.domain. Please answer accurately since I have
8446 no easy means to double check it. The default value provided below
8447 is most probably close to reality but may not be valid from outside
8448 your organization...
8452 while test "$cont"; do
8454 '') dflt="$cf_by@$myhostname$mydomain";;
8455 *) dflt="$cf_email";;
8457 rp='What is your e-mail address?'
8463 rp='Address does not look like an Internet one. Use it anyway?'
8479 If you or somebody else will be maintaining perl at your site, please
8480 fill in the correct e-mail address here so that they may be contacted
8481 if necessary. Currently, the "perlbug" program included with perl
8482 will send mail to this address in addition to perlbug@perl.org. You may
8483 enter "none" for no administrator.
8486 case "$perladmin" in
8487 '') dflt="$cf_email";;
8488 *) dflt="$perladmin";;
8490 rp='Perl administrator e-mail address'
8494 : determine whether to only install version-specific parts.
8497 Do you want to install only the version-specific parts of the perl
8498 distribution? Usually you do *not* want to do this.
8500 case "$versiononly" in
8501 "$define"|[Yy]*|true) dflt='y' ;;
8504 rp="Do you want to install only the version-specific parts of perl?"
8507 [yY]*) val="$define";;
8513 case "$versiononly" in
8514 "$define") inc_version_list=''
8515 inc_version_list_init=0
8519 : figure out how to guarantee perl startup
8520 case "$startperl" in
8522 case "$sharpbang" in
8526 I can use the #! construct to start perl on your system. This will
8527 make startup of perl scripts faster, but may cause problems if you
8528 want to share those scripts and perl is not in a standard place
8529 ($binexp/perl) on all your platforms. The alternative is to force
8530 a shell by starting the script with a single ':' character.
8533 case "$versiononly" in
8534 "$define") dflt="$binexp/perl$version";;
8535 *) dflt="$binexp/perl";;
8537 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8540 none) startperl=": # use perl";;
8541 *) startperl="#!$ans"
8542 if $test 30 -lt `echo "$ans" | wc -c`; then
8545 WARNING: Some systems limit the #! command to 32 characters.
8546 If you experience difficulty running Perl scripts with #!, try
8547 installing Perl in a directory with a shorter pathname.
8553 *) startperl=": # use perl"
8558 echo "I'll use $startperl to start perl scripts."
8560 : figure best path for perl in scripts
8563 case "$versiononly" in
8564 "$define") perlpath="$binexp/perl$version";;
8565 *) perlpath="$binexp/perl";;
8567 case "$startperl" in
8572 I will use the "eval 'exec'" idiom to start Perl on your system.
8573 I can use the full path of your Perl binary for this purpose, but
8574 doing so may cause problems if you want to share those scripts and
8575 Perl is not always in a standard place ($binexp/perl).
8579 rp="What path shall I use in \"eval 'exec'\"?"
8586 case "$startperl" in
8588 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8591 : determine where public executable scripts go
8592 set scriptdir scriptdir
8594 case "$scriptdir" in
8597 : guess some guesses
8598 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8599 $test -d /usr/share/bin && dflt=/usr/share/bin
8600 $test -d /usr/local/script && dflt=/usr/local/script
8601 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8602 $test -d $prefixexp/script && dflt=$prefixexp/script
8606 *) dflt="$scriptdir"
8611 Some installations have a separate directory just for executable scripts so
8612 that they can mount it across multiple architectures but keep the scripts in
8613 one spot. You might, for example, have a subdirectory of /usr/share for this.
8614 Or you might just lump your scripts in with all your other executables.
8618 rp='Where do you keep publicly executable scripts?'
8620 if $test "X$ansexp" != "X$scriptdirexp"; then
8624 scriptdirexp="$ansexp"
8625 : Change installation prefix, if necessary.
8626 if $test X"$prefix" != X"$installprefix"; then
8627 installscript=`echo $scriptdirexp | sed "s#^$prefixexp#$installprefixexp#"`
8629 installscript="$scriptdirexp"
8632 : determine where add-on public executables go
8634 '') dflt=$siteprefix/bin ;;
8638 rp='Pathname where the add-on public executables should be installed?'
8641 sitebinexp="$ansexp"
8642 : Change installation prefix, if necessary.
8643 if $test X"$prefix" != X"$installprefix"; then
8644 installsitebin=`echo $sitebinexp | sed "s#^$prefixexp#$installprefixexp#"`
8646 installsitebin="$sitebinexp"
8649 : determine where add-on html pages go
8650 : There is no standard location, so try to copy the previously-selected
8651 : directory structure for the core html pages.
8652 case "$sitehtml1dir" in
8653 '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8654 *) dflt=$sitehtml1dir ;;
8657 ''|' ') dflt=none ;;
8660 rp='Pathname where the site-specific html pages should be installed?'
8663 sitehtml1direxp="$ansexp"
8664 : Change installation prefix, if necessary.
8665 if $test X"$prefix" != X"$installprefix"; then
8666 installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefixexp#$installprefixexp#"`
8668 installsitehtml1dir="$sitehtml1direxp"
8671 : determine where add-on library html pages go
8672 : There is no standard location, so try to copy the previously-selected
8673 : directory structure for the core html pages.
8674 case "$sitehtml3dir" in
8675 '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8676 *) dflt=$sitehtml3dir ;;
8679 ''|' ') dflt=none ;;
8682 rp='Pathname where the site-specific library html pages should be installed?'
8685 sitehtml3direxp="$ansexp"
8686 : Change installation prefix, if necessary.
8687 if $test X"$prefix" != X"$installprefix"; then
8688 installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefixexp#$installprefixexp#"`
8690 installsitehtml3dir="$sitehtml3direxp"
8693 : determine where add-on manual pages go
8694 case "$siteman1dir" in
8695 '') dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8696 *) dflt=$siteman1dir ;;
8699 ''|' ') dflt=none ;;
8702 rp='Pathname where the site-specific manual pages should be installed?'
8705 siteman1direxp="$ansexp"
8706 : Change installation prefix, if necessary.
8707 if $test X"$prefix" != X"$installprefix"; then
8708 installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefixexp#$installprefixexp#"`
8710 installsiteman1dir="$siteman1direxp"
8713 : determine where add-on library man pages go
8714 case "$siteman3dir" in
8715 '') dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8716 *) dflt=$siteman3dir ;;
8719 ''|' ') dflt=none ;;
8722 rp='Pathname where the site-specific library manual pages should be installed?'
8725 siteman3direxp="$ansexp"
8726 : Change installation prefix, if necessary.
8727 if $test X"$prefix" != X"$installprefix"; then
8728 installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefixexp#$installprefixexp#"`
8730 installsiteman3dir="$siteman3direxp"
8733 : determine where add-on public executable scripts go
8734 case "$sitescript" in
8735 '') dflt=$siteprefix/script
8736 $test -d $dflt || dflt=$sitebin ;;
8737 *) dflt="$sitescript" ;;
8740 rp='Pathname where add-on public executable scripts should be installed?'
8743 sitescriptexp="$ansexp"
8744 : Change installation prefix, if necessary.
8745 if $test X"$prefix" != X"$installprefix"; then
8746 installsitescript=`echo $sitescriptexp | sed "s#^$prefixexp#$installprefixexp#"`
8748 installsitescript="$sitescriptexp"
8751 case "$usefaststdio" in
8752 $define|true|[yY]*|'')
8753 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8763 Perl can be built to use 'fast stdio', which means using the stdio
8764 library but also directly manipulating the stdio buffers to enable
8765 faster I/O. Using stdio is better for backward compatibility (especially
8766 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8767 interface has been preferred instead of stdio.
8769 If this doesn't make any sense to you, just accept the default '$dflt'.
8771 rp='Use the "fast stdio" if available?'
8774 y|Y) val="$define" ;;
8781 : define an is-a-typedef? function
8782 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8784 "") inclist="sys/types.h";;
8786 eval "varval=\$$var";
8790 for inc in $inclist; do
8791 echo "#include <$inc>" >>temp.c;
8793 echo "#ifdef $type" >> temp.c;
8794 echo "printf(\"We have $type\");" >> temp.c;
8795 echo "#endif" >> temp.c;
8796 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8797 if $contains $type temp.E >/dev/null 2>&1; then
8803 *) eval "$var=\$varval";;
8806 : define an is-a-typedef? function that prompts if the type is not available.
8807 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8809 "") inclist="sys/types.h";;
8811 eval "varval=\$$var";
8815 for inc in $inclist; do
8816 echo "#include <$inc>" >>temp.c;
8818 echo "#ifdef $type" >> temp.c;
8819 echo "printf(\"We have $type\");" >> temp.c;
8820 echo "#endif" >> temp.c;
8821 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8823 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8824 if $contains $type temp.E >/dev/null 2>&1; then
8825 echo "$type found." >&4;
8828 echo "$type NOT found." >&4;
8834 *) eval "$var=\$varval";;
8837 : see what type lseek is declared as in the kernel
8838 rp="What is the type used for lseek's offset on this system?"
8839 set off_t lseektype long stdio.h sys/types.h
8843 echo "Checking to see how big your file offsets are..." >&4
8845 #include <sys/types.h>
8849 printf("%d\n", (int)sizeof($lseektype));
8854 if eval $compile_ok; then
8855 lseeksize=`$run ./try`
8856 echo "Your file offsets are $lseeksize bytes long."
8860 echo "(I can't seem to compile the test program. Guessing...)"
8861 rp="What is the size of your file offsets (in bytes)?"
8867 : see what type file positions are declared as in the library
8868 rp="What is the type for file position used by fsetpos()?"
8869 set fpos_t fpostype long stdio.h sys/types.h
8874 *_t) zzz="$fpostype" ;;
8877 echo "Checking the size of $zzz..." >&4
8879 #include <sys/types.h>
8886 printf("%d\n", (int)sizeof($fpostype));
8891 if eval $compile_ok; then
8895 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8898 echo "Your $zzz is $fpossize bytes long."
8904 echo "(I can't compile the test program. Guessing...)" >&4
8905 rp="What is the size of your file positions (in bytes)?"
8910 # Backward compatibility (uselfs is deprecated).
8912 "$define"|true|[yY]*)
8915 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8917 uselargefiles="$define"
8921 case "$lseeksize:$fpossize" in
8924 You can have files larger than 2 gigabytes.
8927 *) case "$uselargefiles" in
8928 "$undef"|false|[nN]*) dflt='n' ;;
8933 Perl can be built to understand large files (files larger than 2 gigabytes)
8934 on some systems. To do so, Configure can be run with -Duselargefiles.
8936 If this doesn't make any sense to you, just accept the default '$dflt'.
8938 rp='Try to understand large files, if available?'
8941 y|Y) val="$define" ;;
8948 : Look for a hint-file generated 'call-back-unit'. If the
8949 : user has specified that a large files perl is to be built,
8950 : we may need to set or change some other defaults.
8951 if $test -f uselargefiles.cbu; then
8952 echo "Your platform has some specific hints regarding large file builds, using them..."
8953 . ./uselargefiles.cbu
8955 case "$uselargefiles" in
8957 if $test -f uselargefiles.cbu; then
8959 echo "Rechecking to see how big your file offsets are..." >&4
8961 #include <sys/types.h>
8965 printf("%d\n", (int)sizeof($lseektype));
8970 if eval $compile_ok; then
8971 lseeksize=`$run ./try`
8972 $echo "Your file offsets are now $lseeksize bytes long."
8976 echo "(I can't seem to compile the test program. Guessing...)"
8977 rp="What is the size of your file offsets (in bytes)?"
8982 *_t) zzz="$fpostype" ;;
8985 $echo $n "Rechecking the size of $zzz...$c" >&4
8987 #include <sys/types.h>
8994 printf("%d\n", (int)sizeof($fpostype));
8999 if eval $compile_ok; then
9004 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9007 echo " $fpossize bytes." >&4
9013 echo "(I can't compile the test program. Guessing...)" >&4
9014 rp="What is the size of your file positions (in bytes)?"
9023 # probably will refer to
9024 # $archlib $privlib $sitearch $sitelib $vendorarch $vendorlib
9026 userelocatableinc=undef
9028 case "$vendorprefix" in
9029 '') d_vendorbin="$undef"
9033 *) d_vendorbin="$define"
9034 : determine where vendor-supplied executables go.
9035 case "$vendorbin" in
9036 '') dflt=$vendorprefix/bin ;;
9037 *) dflt="$vendorbin" ;;
9040 rp='Pathname for the vendor-supplied executables directory?'
9043 vendorbinexp="$ansexp"
9046 : Change installation prefix, if necessary.
9047 if $test X"$prefix" != X"$installprefix"; then
9048 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefixexp#$installprefixexp#"`
9050 installvendorbin="$vendorbinexp"
9053 case "$vendorprefix" in
9054 '') vendorhtml1dir=''
9055 vendorhtml1direxp=''
9057 *) : determine where vendor-supplied html pages go.
9058 : There is no standard location, so try to copy the previously-selected
9059 : directory structure for the core html pages.
9060 : XXX Better default suggestions would be welcome.
9061 case "$vendorhtml1dir" in
9062 '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9063 *) dflt=$vendorhtml1dir ;;
9066 ''|' ') dflt=none ;;
9069 rp='Pathname for the vendor-supplied html pages?'
9071 vendorhtml1dir="$ans"
9072 vendorhtml1direxp="$ansexp"
9075 : Use ' ' for none so value is preserved next time through Configure
9076 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9077 : Change installation prefix, if necessary.
9078 if $test X"$prefix" != X"$installprefix"; then
9079 installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefixexp#$installprefixexp#"`
9081 installvendorhtml1dir="$vendorhtml1direxp"
9084 case "$vendorprefix" in
9085 '') vendorhtml3dir=''
9086 vendorhtml3direxp=''
9088 *) : determine where vendor-supplied module html pages go.
9089 : There is no standard location, so try to copy the previously-selected
9090 : directory structure for the core html pages.
9091 : XXX Better default suggestions would be welcome.
9092 case "$vendorhtml3dir" in
9093 '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9094 *) dflt=$vendorhtml3dir ;;
9097 ''|' ') dflt=none ;;
9100 rp='Pathname for the vendor-supplied html pages?'
9102 vendorhtml3dir="$ans"
9103 vendorhtml3direxp="$ansexp"
9106 : Use ' ' for none so value is preserved next time through Configure
9107 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9108 : Change installation prefix, if necessary.
9109 if $test X"$prefix" != X"$installprefix"; then
9110 installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefixexp#$installprefixexp#"`
9112 installvendorhtml3dir="$vendorhtml3direxp"
9115 case "$vendorprefix" in
9116 '') vendorman1dir=''
9119 *) : determine where vendor-supplied manual pages go.
9120 case "$vendorman1dir" in
9121 '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9122 *) dflt=$vendorman1dir ;;
9125 ''|' ') dflt=none ;;
9128 rp='Pathname for the vendor-supplied manual section 1 pages?'
9130 vendorman1dir="$ans"
9131 vendorman1direxp="$ansexp"
9134 : Use ' ' for none so value is preserved next time through Configure
9135 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9136 : Change installation prefix, if necessary.
9137 if $test X"$prefix" != X"$installprefix"; then
9138 installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefixexp#$installprefixexp#"`
9140 installvendorman1dir="$vendorman1direxp"
9143 case "$vendorprefix" in
9144 '') vendorman3dir=''
9147 *) : determine where vendor-supplied module manual pages go.
9148 case "$vendorman3dir" in
9149 '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9150 *) dflt=$vendorman3dir ;;
9153 ''|' ') dflt=none ;;
9156 rp='Pathname for the vendor-supplied manual section 3 pages?'
9158 vendorman3dir="$ans"
9159 vendorman3direxp="$ansexp"
9162 : Use ' ' for none so value is preserved next time through Configure
9163 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9164 : Change installation prefix, if necessary.
9165 if $test X"$prefix" != X"$installprefix"; then
9166 installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefixexp#$installprefixexp#"`
9168 installvendorman3dir="$vendorman3direxp"
9171 case "$vendorprefix" in
9172 '') d_vendorscript="$undef"
9176 *) d_vendorscript="$define"
9177 : determine where vendor-supplied scripts go.
9178 case "$vendorscript" in
9179 '') dflt=$vendorprefix/script
9180 $test -d $dflt || dflt=$vendorbin ;;
9181 *) dflt="$vendorscript" ;;
9185 The installation process will create a directory for
9186 vendor-supplied scripts.
9190 rp='Pathname for the vendor-supplied scripts directory?'
9193 vendorscriptexp="$ansexp"
9196 : Change installation prefix, if necessary.
9197 if $test X"$prefix" != X"$installprefix"; then
9198 installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefixexp#$installprefixexp#"`
9200 installvendorscript="$vendorscriptexp"
9203 : see if qgcvt exists
9209 if $test X"$d_longdbl" = X"$define"; then
9211 echo "Checking how to print long doubles..." >&4
9213 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9214 $cat >try.c <<'EOCP'
9215 #include <sys/types.h>
9219 printf("%.3f\n", d);
9223 if eval $compile; then
9227 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9228 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9229 echo "We will use %f."
9235 if $test X"$sPRIfldbl" = X; then
9236 $cat >try.c <<'EOCP'
9237 #include <sys/types.h>
9240 long double d = 123.456;
9241 printf("%.3Lf\n", d);
9245 if eval $compile; then
9249 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9250 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9251 echo "We will use %Lf."
9257 if $test X"$sPRIfldbl" = X; then
9258 $cat >try.c <<'EOCP'
9259 #include <sys/types.h>
9262 long double d = 123.456;
9263 printf("%.3llf\n", d);
9267 if eval $compile; then
9271 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9272 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9273 echo "We will use %llf."
9279 if $test X"$sPRIfldbl" = X; then
9280 $cat >try.c <<'EOCP'
9281 #include <sys/types.h>
9284 long double d = 123.456;
9285 printf("%.3lf\n", d);
9289 if eval $compile; then
9293 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9294 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9295 echo "We will use %lf."
9301 if $test X"$sPRIfldbl" = X; then
9302 echo "Cannot figure out how to print long doubles." >&4
9304 sSCNfldbl=$sPRIfldbl # expect consistency
9311 case "$sPRIfldbl" in
9312 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9313 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9314 d_SCNfldbl="$undef";
9316 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9317 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9318 d_SCNfldbl="$define";
9322 : Check how to convert floats to strings.
9324 if test "X$d_Gconvert" = X; then
9327 echo "Checking for an efficient way to convert floats to strings."
9329 case "$uselongdouble" in
9330 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9332 case "$d_longdbl" in
9333 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9335 case "$d_PRIgldbl" in
9336 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
9340 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9341 char *myname = "gconvert";
9344 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9345 char *myname = "gcvt";
9348 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9349 char *myname = "qgcvt";
9350 #define DOUBLETYPE long double
9353 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9355 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9357 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9360 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9362 char *myname = "sprintf";
9366 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9367 #define DOUBLETYPE long double
9369 #define DOUBLETYPE double
9375 #define I_STDLIB $i_stdlib
9381 checkit(expect, got)
9385 if (strcmp(expect, got)) {
9386 printf("%s oddity: Expected %s, got %s\n",
9387 myname, expect, got);
9397 /* This must be 1st test on (which?) platform */
9398 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9399 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9400 checkit("0.1", buf);
9402 Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9403 checkit("0.01", buf);
9405 Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9406 checkit("0.001", buf);
9408 Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9409 checkit("0.0001", buf);
9411 Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9412 if (strlen(buf) > 5)
9413 checkit("9e-005", buf); /* for Microsoft ?? */
9415 checkit("9e-05", buf);
9417 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9420 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9421 checkit("1.1", buf);
9423 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9424 checkit("1.01", buf);
9426 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9427 checkit("1.001", buf);
9429 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9430 checkit("1.0001", buf);
9432 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9433 checkit("1.00001", buf);
9435 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9436 checkit("1.000001", buf);
9438 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9441 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9444 /* Some Linux gcvt's give 1.e+5 here. */
9445 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9446 checkit("100000", buf);
9448 /* Some Linux gcvt's give -1.e+5 here. */
9449 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9450 checkit("-100000", buf);
9452 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9453 checkit("123.456", buf);
9455 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9456 Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9457 /* 34 should be enough to scare even long double
9458 * places into using the e notation. */
9459 if (strlen(buf) > 5)
9460 checkit("1e+034", buf); /* for Microsoft */
9462 checkit("1e+34", buf);
9464 /* For Perl, if you add additional tests here, also add them to
9465 * t/base/num.t for benefit of platforms not using Configure or
9466 * overriding d_Gconvert */
9471 : first add preferred functions to our list
9473 for xxx_convert in $gconvert_preference; do
9474 case $xxx_convert in
9475 gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9476 *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9479 : then add any others
9480 for xxx_convert in gconvert gcvt sprintf; do
9483 *) xxx_list="$xxx_list $xxx_convert" ;;
9487 case "$d_longdbl$uselongdouble" in
9489 : again, add prefered functions to our list first
9491 for xxx_convert in $gconvert_ld_preference; do
9492 case $xxx_convert in
9493 qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9494 *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9497 : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9498 for xxx_convert in qgcvt sprintf $xxx_list; do
9499 case "$xxx_ld_list" in
9500 $xxx_convert*|*" $xxx_convert"*) ;;
9501 *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9504 : if sprintf cannot do long doubles, move it to the end
9505 if test "$d_PRIgldbl" != "$define"; then
9506 xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9508 : if no qgcvt, remove it
9509 if test "$d_qgcvt" != "$define"; then
9510 xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9513 xxx_list="$xxx_ld_list"
9517 for xxx_convert in $xxx_list; do
9518 echo "Trying $xxx_convert..."
9520 set try -DTRY_$xxx_convert
9521 if eval $compile; then
9522 echo "$xxx_convert() found." >&4
9524 echo "I'll use $xxx_convert to convert floats into a string." >&4
9527 echo "...But $xxx_convert didn't work as I expected."
9531 echo "$xxx_convert NOT found." >&4
9535 if test X$xxx_convert = X; then
9536 echo "*** WHOA THERE!!! ***" >&4
9537 echo "None of ($xxx_list) seemed to work properly. I'll use sprintf." >&4
9541 case "$xxx_convert" in
9542 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9543 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9544 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9545 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9546 "$define$define$define")
9547 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9548 "$define$define$undef")
9549 d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9550 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9557 : see if _fwalk exists
9561 : Initialize h_fcntl
9564 : Initialize h_sysfile
9567 : access call always available on UNIX
9571 : locate the flags for 'access()'
9575 $cat >access.c <<EOCP
9576 #include <sys/types.h>
9581 #include <sys/file.h>
9594 : check sys/file.h first, no particular reason here
9595 if $test `./findhdr sys/file.h` && \
9596 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9598 echo "<sys/file.h> defines the *_OK access constants." >&4
9599 elif $test `./findhdr fcntl.h` && \
9600 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9602 echo "<fcntl.h> defines the *_OK access constants." >&4
9603 elif $test `./findhdr unistd.h` && \
9604 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9605 echo "<unistd.h> defines the *_OK access constants." >&4
9607 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9613 : see if accessx exists
9614 set accessx d_accessx
9617 : see if aintl exists
9621 : see if alarm exists
9625 : see if POSIX threads are available
9626 set pthread.h i_pthread
9629 : define a fucntion to check prototypes
9630 $cat > protochk <<EOSH
9633 optimize="$optimize"
9635 prototype="$prototype"
9638 usethreads=$usethreads
9639 i_pthread=$i_pthread
9640 pthread_h_first=$pthread_h_first
9643 $cat >> protochk <<'EOSH'
9648 while test $# -ge 2; do
9650 $define) echo "#include <$2>" >> try.c ;;
9651 literal) echo "$2" >> try.c ;;
9653 # Extra magic for the benefit of systems that need pthread.h
9654 # to be included early to correctly detect threadsafe functions.
9655 # Such functions must guarantee themselves, though, that the usethreads
9656 # and i_pthread have been defined, before calling protochk.
9657 if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9658 echo "#include <pthread.h>" >> try.c
9663 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
9664 cat >> try.c <<'EOCP'
9665 #ifdef CAN_PROTOTYPE
9666 #define _(args) args
9671 echo "$foo" >> try.c
9672 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9673 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9681 hasproto='varname=$1; func=$2; shift; shift;
9682 while $test $# -ge 2; do
9684 $define) echo "#include <$2>";;
9688 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9689 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9690 echo "$func() prototype found.";
9693 echo "$func() prototype NOT found.";
9698 $rm -f try.c tryout.c'
9700 : see if sys/types.h has to be included
9701 set sys/types.h i_systypes
9704 : see if sys/select.h has to be included
9705 set sys/select.h i_sysselct
9708 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9709 while $test $# -ge 2; do
9711 $define) echo "#include <$2>";;
9715 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9717 if eval $compile; then
9726 : see if we should include time.h, sys/time.h, or both
9728 if test "X$timeincl" = X; then
9729 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9730 $echo $n "I'm now running the test program...$c"
9732 #include <sys/types.h>
9737 #ifdef SYSTIMEKERNEL
9740 #include <sys/time.h>
9743 #include <sys/select.h>
9756 struct timezone tzp;
9758 if (foo.tm_sec == foo.tm_sec)
9761 if (bar.tv_sec == bar.tv_sec)
9768 for s_timezone in '-DS_TIMEZONE' ''; do
9770 for s_timeval in '-DS_TIMEVAL' ''; do
9771 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9772 for i_time in '' '-DI_TIME'; do
9773 for i_systime in '-DI_SYSTIME' ''; do
9776 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9777 if eval $compile; then
9778 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9782 $echo $n "Succeeded with $flags$c"
9794 *SYSTIMEKERNEL*) i_systimek="$define"
9795 timeincl=`./findhdr sys/time.h`
9796 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9797 *) i_systimek="$undef";;
9800 *I_TIME*) i_time="$define"
9801 timeincl=`./findhdr time.h`" $timeincl"
9802 echo "We'll include <time.h>." >&4;;
9803 *) i_time="$undef";;
9806 *I_SYSTIME*) i_systime="$define"
9807 timeincl=`./findhdr sys/time.h`" $timeincl"
9808 echo "We'll include <sys/time.h>." >&4;;
9809 *) i_systime="$undef";;
9813 : see if struct tm knows about tm_zone
9814 case "$i_systime$i_time" in
9817 echo "Checking to see if your struct tm has tm_zone field..." >&4
9818 set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9826 case "$d_tm_tm_zone" in
9827 "$define") echo "Yes, it does." ;;
9828 *) echo "No, it doesn't." ;;
9830 : see if struct tm knows about tm_gmtoff
9831 case "$i_systime$i_time" in
9834 echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9835 set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9843 case "$d_tm_tm_gmtoff" in
9844 "$define") echo "Yes, it does." ;;
9845 *) echo "No, it doesn't." ;;
9848 : see if asctime_r exists
9849 set asctime_r d_asctime_r
9851 case "$d_asctime_r" in
9853 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9854 case "$d_asctime_r_proto:$usethreads" in
9855 ":define") d_asctime_r_proto=define
9856 set d_asctime_r_proto asctime_r $hdrs
9860 case "$d_asctime_r_proto" in
9862 case "$asctime_r_proto" in
9863 ''|0) try='char* asctime_r(const struct tm*, char*);'
9864 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9866 case "$asctime_r_proto" in
9867 ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9868 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9870 case "$asctime_r_proto" in
9871 ''|0) try='int asctime_r(const struct tm*, char*);'
9872 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9874 case "$asctime_r_proto" in
9875 ''|0) try='int asctime_r(const struct tm*, char*, int);'
9876 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9878 case "$asctime_r_proto" in
9879 ''|0) d_asctime_r=undef
9881 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9882 * ) case "$asctime_r_proto" in
9883 REENTRANT_PROTO*) ;;
9884 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9886 echo "Prototype: $try" ;;
9889 *) case "$usethreads" in
9890 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9897 *) asctime_r_proto=0
9901 : see if atolf exists
9905 : see if atoll exists
9909 : Look for GCC-style attribute format
9910 case "$d_attribute_format" in
9913 echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4
9914 $cat >attrib.c <<'EOCP'
9916 void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2)));
9918 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9919 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9920 echo "Your C compiler doesn't support __attribute__((format))."
9923 echo "Your C compiler supports __attribute__((format))."
9927 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9931 *) val="$d_attribute_format" ;;
9933 set d_attribute_format
9937 : Look for GCC-style attribute malloc
9938 case "$d_attribute_malloc" in
9941 echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4
9942 $cat >attrib.c <<'EOCP'
9944 char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc));
9946 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9947 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9948 echo "Your C compiler doesn't support __attribute__((malloc))."
9951 echo "Your C compiler supports __attribute__((malloc))."
9955 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9959 *) val="$d_attribute_malloc" ;;
9961 set d_attribute_malloc
9965 : Look for GCC-style attribute nonnull
9966 case "$d_attribute_nonnull" in
9969 echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4
9970 $cat >attrib.c <<'EOCP'
9972 void do_something (char *some_pointer,...) __attribute__((nonnull(1)));
9974 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9975 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9976 echo "Your C compiler doesn't support __attribute__((nonnull))."
9979 echo "Your C compiler supports __attribute__((nonnull))."
9983 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9987 *) val="$d_attribute_nonnull" ;;
9989 set d_attribute_nonnull
9993 : Look for GCC-style attribute noreturn
9994 case "$d_attribute_noreturn" in
9997 echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4
9998 $cat >attrib.c <<'EOCP'
10000 void fall_over_dead( void ) __attribute__((noreturn));
10002 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10003 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10004 echo "Your C compiler doesn't support __attribute__((noreturn))."
10007 echo "Your C compiler supports __attribute__((noreturn))."
10011 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10015 *) val="$d_attribute_noreturn" ;;
10017 set d_attribute_noreturn
10021 : Look for GCC-style attribute pure
10022 case "$d_attribute_pure" in
10025 echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4
10026 $cat >attrib.c <<'EOCP'
10028 int square( int n ) __attribute__((pure));
10030 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10031 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10032 echo "Your C compiler doesn't support __attribute__((pure))."
10035 echo "Your C compiler supports __attribute__((pure))."
10039 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10043 *) val="$d_attribute_pure" ;;
10045 set d_attribute_pure
10049 : Look for GCC-style attribute unused
10050 case "$d_attribute_unused" in
10053 echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4
10054 $cat >attrib.c <<'EOCP'
10056 int do_something( int dummy __attribute__((unused)), int n );
10058 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10059 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10060 echo "Your C compiler doesn't support __attribute__((unused))."
10063 echo "Your C compiler supports __attribute__((unused))."
10067 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10071 *) val="$d_attribute_unused" ;;
10073 set d_attribute_unused
10077 : Look for GCC-style attribute warn_unused_result
10078 case "$d_attribute_warn_unused_result" in
10081 echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4
10082 $cat >attrib.c <<'EOCP'
10084 int I_will_not_be_ignored(void) __attribute__((warn_unused_result));
10086 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10087 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10088 echo "Your C compiler doesn't support __attribute__((warn_unused_result))."
10091 echo "Your C compiler supports __attribute__((warn_unused_result))."
10095 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10099 *) val="$d_attribute_warn_unused_result" ;;
10101 set d_attribute_warn_unused_result
10105 : see if bcmp exists
10109 : see if bcopy exists
10113 : see if this is a unistd.h system
10114 set unistd.h i_unistd
10117 : see if getpgrp exists
10118 set getpgrp d_getpgrp
10121 case "$d_getpgrp" in
10124 echo "Checking to see which flavor of getpgrp is in use..."
10126 #$i_unistd I_UNISTD
10127 #include <sys/types.h>
10129 # include <unistd.h>
10131 #$i_stdlib I_STDLIB
10133 #include <stdlib.h>
10137 if (getuid() == 0) {
10138 printf("(I see you are running Configure as super-user...)\n");
10141 #ifdef TRY_BSD_PGRP
10142 if (getpgrp(1) == 0)
10151 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10152 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
10154 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10155 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
10158 echo "I can't seem to compile and run the test program."
10160 xxx="a USG one, i.e. you use getpgrp()."
10162 # SVR4 systems can appear rather BSD-ish.
10163 case "$i_unistd" in
10165 xxx="a BSD one, i.e. you use getpgrp(pid)."
10169 xxx="probably a USG one, i.e. you use getpgrp()."
10174 echo "Assuming your getpgrp is $xxx" >&4
10183 : see if setpgrp exists
10184 set setpgrp d_setpgrp
10187 case "$d_setpgrp" in
10190 echo "Checking to see which flavor of setpgrp is in use..."
10192 #$i_unistd I_UNISTD
10193 #include <sys/types.h>
10195 # include <unistd.h>
10197 #$i_stdlib I_STDLIB
10199 #include <stdlib.h>
10203 if (getuid() == 0) {
10204 printf("(I see you are running Configure as super-user...)\n");
10207 #ifdef TRY_BSD_PGRP
10208 if (-1 == setpgrp(1, 1))
10211 if (setpgrp() != -1)
10217 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10218 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10220 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10221 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10224 echo "(I can't seem to compile and run the test program.)"
10226 xxx="a USG one, i.e. you use setpgrp()."
10228 # SVR4 systems can appear rather BSD-ish.
10229 case "$i_unistd" in
10231 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10235 xxx="probably a USG one, i.e. you use setpgrp()."
10240 echo "Assuming your setpgrp is $xxx" >&4
10248 : Look for GCC-style __builtin_choose_expr
10249 case "$d_builtin_choose_expr" in
10252 echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4
10253 $cat >try.c <<'EOCP'
10254 #include <assert.h>
10255 #include <stdlib.h>
10258 #define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) )
10261 assert( SYRINX(1) == 2112 );
10262 assert( SYRINX(1) != 5150 );
10263 assert( SYRINX(0) == 5150 );
10264 assert( SYRINX(0) != 2112 );
10265 puts( "All good!" );
10271 if eval $compile; then
10272 echo "Your C compiler supports __builtin_choose_expr."
10275 echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10279 *) val="$d_builtin_choose_expr" ;;
10282 set d_builtin_choose_expr
10284 $rm -f try.* try core core.try.*
10286 : Look for GCC-style __builtin_expect
10287 case "$d_builtin_expect" in
10290 echo "Checking whether your compiler can handle __builtin_expect ..." >&4
10291 $cat >builtin.c <<'EOCP'
10294 if ( __builtin_expect(n, 0) ) n = 1;
10298 if eval $compile; then
10299 echo "Your C compiler supports __builtin_choose_expr."
10302 echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10306 *) val="$d_builtin_expect" ;;
10309 set d_builtin_expect
10311 $rm -f try.* try core core.try.*
10313 : see if bzero exists
10317 : see if signal is declared as pointer to function returning int or void
10319 xxx=`./findhdr signal.h`
10320 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10321 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
10322 echo "You have int (*signal())() instead of void." >&4
10324 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
10325 echo "You have void (*signal())()." >&4
10327 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10328 echo "You have int (*signal())() instead of void." >&4
10330 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10331 echo "You have void (*signal())()." >&4
10334 case "$d_voidsig" in
10336 echo "I can't determine whether signal handler returns void or int..." >&4
10338 rp="What type does your signal handler return?"
10341 v*) val="$define";;
10345 echo "As you already told me, signal handler returns void." >&4
10348 *) echo "As you already told me, signal handler returns int." >&4
10355 case "$d_voidsig" in
10356 "$define") signal_t="void";;
10357 *) signal_t="int";;
10361 : check for ability to cast large floats to 32-bit ints.
10363 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10364 if $test "$intsize" -ge 4; then
10371 #$i_stdlib I_STDLIB
10373 #include <stdlib.h>
10375 #include <sys/types.h>
10376 #include <signal.h>
10377 $signal_t blech(s) int s; { exit(3); }
10384 signal(SIGFPE, blech);
10386 /* Don't let compiler optimize the test away. Store the number
10387 in a writable string for gcc to pass to sscanf under HP/UX.
10389 sprintf(str, "2147483647");
10390 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10394 /* x86 processors will probably give 0x8000 0000, which is a
10395 sign change. We don't want that. We want to mimic SPARC
10396 behavior here, which is to preserve the sign and give
10399 if (i32 != ($xxx) f)
10405 if eval $compile_ok; then
10409 echo "(I can't seem to compile the test program--assuming it can't)"
10414 echo "Yup, it can."
10417 echo "Nope, it can't."
10424 : check for ability to cast negative floats to unsigned
10426 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10429 #$i_stdlib I_STDLIB
10431 #include <stdlib.h>
10433 #include <sys/types.h>
10434 #include <signal.h>
10435 $signal_t blech(s) int s; { exit(7); }
10436 $signal_t blech_in_list(s) int s; { exit(4); }
10437 unsigned long dummy_long(p) unsigned long p; { return p; }
10438 unsigned int dummy_int(p) unsigned int p; { return p; }
10439 unsigned short dummy_short(p) unsigned short p; { return p; }
10443 unsigned long along;
10445 unsigned short ashort;
10449 /* Frustrate gcc-2.7.2's optimizer which failed this test with
10450 a direct f = -123. assignment. gcc-2.8.0 reportedly
10451 optimized the whole file away
10453 /* Store the number in a writable string for gcc to pass to
10454 sscanf under HP/UX.
10456 sprintf(str, "-123");
10457 sscanf(str, "%lf", &f); /* f = -123.; */
10459 signal(SIGFPE, blech);
10460 along = (unsigned long)f;
10461 aint = (unsigned int)f;
10462 ashort = (unsigned short)f;
10463 if (along != (unsigned long)-123)
10465 if (aint != (unsigned int)-123)
10467 if (ashort != (unsigned short)-123)
10469 sprintf(str, "1073741824.");
10470 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10473 along = (unsigned long)f;
10474 if (along != 0x80000000)
10478 along = (unsigned long)f;
10479 if (along != 0x7fffffff)
10483 along = (unsigned long)f;
10484 if (along != 0x80000001)
10488 signal(SIGFPE, blech_in_list);
10489 sprintf(str, "123.");
10490 sscanf(str, "%lf", &f); /* f = 123.; */
10491 along = dummy_long((unsigned long)f);
10492 aint = dummy_int((unsigned int)f);
10493 ashort = dummy_short((unsigned short)f);
10494 if (along != (unsigned long)123)
10496 if (aint != (unsigned int)123)
10498 if (ashort != (unsigned short)123)
10505 if eval $compile_ok; then
10509 echo "(I can't seem to compile the test program--assuming it can't)"
10512 case "$castflags" in
10514 echo "Yup, it can."
10517 echo "Nope, it can't."
10524 : see if vprintf exists
10526 if set vprintf val -f d_vprintf; eval $csym; $val; then
10527 echo 'vprintf() found.' >&4
10530 #include <varargs.h>
10531 #$i_stdlib I_STDLIB
10533 #include <stdlib.h>
10536 int main() { xxx("foo"); }
10545 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10549 if eval $compile && $run ./try; then
10550 echo "Your vsprintf() returns (int)." >&4
10553 echo "Your vsprintf() returns (char*)." >&4
10557 echo 'vprintf() NOT found.' >&4
10568 : see if chown exists
10572 : see if chroot exists
10573 set chroot d_chroot
10576 : see if chsize exists
10577 set chsize d_chsize
10580 : see if class exists
10584 : see if clearenv exists
10585 set clearenv d_clearenv
10588 hasstruct='varname=$1; struct=$2; shift; shift;
10589 while $test $# -ge 2; do
10591 $define) echo "#include <$2>";;
10595 echo "int main () { struct $struct foo; }" >> try.c;
10597 if eval $compile; then
10604 $rm -f try.c try.o'
10608 : see whether socket exists
10610 $echo $n "Hmm... $c" >&4
10611 if set socket val -f d_socket; eval $csym; $val; then
10612 echo "Looks like you have Berkeley networking support." >&4
10614 if set setsockopt val -f; eval $csym; $val; then
10617 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10618 d_oldsock="$define"
10621 if $contains socklib libc.list >/dev/null 2>&1; then
10622 echo "Looks like you have Berkeley networking support." >&4
10624 : we will have to assume that it supports the 4.2 BSD interface
10627 echo "You don't have Berkeley networking in libc$_a..." >&4
10628 if test "X$d_socket" = "X$define"; then
10629 echo "...but you seem to believe that you have sockets." >&4
10631 for net in net socket
10633 if test -f /usr/lib/lib$net$_a; then
10634 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
10635 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10636 if $contains socket libc.list >/dev/null 2>&1; then
10641 echo "...but the Wollongong group seems to have hacked it in." >&4
10642 sockethdr="-I/usr/netinclude"
10645 echo "Found Berkeley sockets interface in lib$net." >&4
10646 if $contains setsockopt libc.list >/dev/null 2>&1; then
10649 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10650 d_oldsock="$define"
10656 if test "X$d_socket" != "X$define"; then
10657 echo "or anywhere else I see." >&4
10665 : see if socketpair exists
10666 set socketpair d_sockpair
10671 echo "Checking the availability of certain socket constants..." >&4
10672 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10673 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10675 #include <sys/types.h>
10676 #include <sys/socket.h>
10682 set try; if eval $compile; then
10685 set d_${enum}; eval $setvar
10689 : see if this is a sys/uio.h system
10690 set sys/uio.h i_sysuio
10695 echo "Checking to see if your system supports struct cmsghdr..." >&4
10696 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10698 case "$d_cmsghdr_s" in
10699 "$define") echo "Yes, it does." ;;
10700 *) echo "No, it doesn't." ;;
10704 : check for const keyword
10706 echo 'Checking to see if your C compiler knows about "const"...' >&4
10707 $cat >const.c <<'EOCP'
10708 typedef struct spug { int drokk; } spug;
10715 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10717 echo "Yup, it does."
10720 echo "Nope, it doesn't."
10725 : see if copysignl exists
10726 set copysignl d_copysignl
10729 : see if crypt exists
10734 $define) cryptlib='' ;;
10735 *) if set crypt val -f d_crypt; eval $csym; $val; then
10736 echo 'crypt() found.' >&4
10740 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10741 if $test -z "$cryptlib"; then
10742 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10746 if $test -z "$cryptlib"; then
10747 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10751 if $test -z "$cryptlib"; then
10752 cryptlib=`./loc libcrypt$_a "" $libpth`
10756 if $test -z "$cryptlib"; then
10757 echo 'crypt() NOT found.' >&4
10768 : see if this is a crypt.h system
10769 set crypt.h i_crypt
10772 : see if crypt_r exists
10773 set crypt_r d_crypt_r
10775 case "$d_crypt_r" in
10777 hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10778 case "$d_crypt_r_proto:$usethreads" in
10779 ":define") d_crypt_r_proto=define
10780 set d_crypt_r_proto crypt_r $hdrs
10784 case "$d_crypt_r_proto" in
10786 case "$crypt_r_proto" in
10787 ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10788 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10790 case "$crypt_r_proto" in
10791 ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10792 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10794 case "$crypt_r_proto" in
10795 ''|0) d_crypt_r=undef
10797 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10798 * ) case "$crypt_r_proto" in
10799 REENTRANT_PROTO*) ;;
10800 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10802 echo "Prototype: $try" ;;
10805 *) case "$usethreads" in
10806 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10817 : get csh whereabouts
10819 'csh') val="$undef" ;;
10820 *) val="$define" ;;
10824 : Respect a hint or command line value for full_csh.
10825 case "$full_csh" in
10826 '') full_csh=$csh ;;
10829 : see if ctermid_r exists
10830 set ctermid_r d_ctermid_r
10832 case "$d_ctermid_r" in
10834 hdrs="$i_systypes sys/types.h define stdio.h "
10835 case "$d_ctermid_r_proto:$usethreads" in
10836 ":define") d_ctermid_r_proto=define
10837 set d_ctermid_r_proto ctermid_r $hdrs
10841 case "$d_ctermid_r_proto" in
10843 case "$ctermid_r_proto" in
10844 ''|0) try='char* ctermid_r(char*);'
10845 ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10847 case "$ctermid_r_proto" in
10848 ''|0) d_ctermid_r=undef
10850 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10851 * ) case "$ctermid_r_proto" in
10852 REENTRANT_PROTO*) ;;
10853 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10855 echo "Prototype: $try" ;;
10858 *) case "$usethreads" in
10859 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10866 *) ctermid_r_proto=0
10870 : see if ctime_r exists
10871 set ctime_r d_ctime_r
10873 case "$d_ctime_r" in
10875 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10876 case "$d_ctime_r_proto:$usethreads" in
10877 ":define") d_ctime_r_proto=define
10878 set d_ctime_r_proto ctime_r $hdrs
10882 case "$d_ctime_r_proto" in
10884 case "$ctime_r_proto" in
10885 ''|0) try='char* ctime_r(const time_t*, char*);'
10886 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10888 case "$ctime_r_proto" in
10889 ''|0) try='char* ctime_r(const time_t*, char*, int);'
10890 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10892 case "$ctime_r_proto" in
10893 ''|0) try='int ctime_r(const time_t*, char*);'
10894 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10896 case "$ctime_r_proto" in
10897 ''|0) try='int ctime_r(const time_t*, char*, int);'
10898 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10900 case "$ctime_r_proto" in
10901 ''|0) d_ctime_r=undef
10903 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10904 * ) case "$ctime_r_proto" in
10905 REENTRANT_PROTO*) ;;
10906 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10908 echo "Prototype: $try" ;;
10911 *) case "$usethreads" in
10912 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10923 : see if cuserid exists
10924 set cuserid d_cuserid
10927 : see if this is a limits.h system
10928 set limits.h i_limits
10931 : see if this is a float.h system
10932 set float.h i_float
10935 : See if number of significant digits in a double precision number is known
10937 $cat >dbl_dig.c <<EOM
10938 #$i_limits I_LIMITS
10941 #include <limits.h>
10947 printf("Contains DBL_DIG");
10950 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10951 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10952 echo "DBL_DIG found." >&4
10955 echo "DBL_DIG NOT found." >&4
10962 : see if dbm.h is available
10963 : see if dbmclose exists
10964 set dbmclose d_dbmclose
10967 case "$d_dbmclose" in
10977 *) set rpcsvc/dbm.h i_rpcsvcdbm
10982 *) echo "We won't be including <dbm.h>"
10992 : see if prototype for dbminit is available
10994 set d_dbminitproto dbminit $i_dbm dbm.h
10997 : see if difftime exists
10998 set difftime d_difftime
11001 : see if this is a dirent system
11003 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
11005 echo "<dirent.h> found." >&4
11008 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
11009 echo "<sys/dir.h> found." >&4
11012 xinc=`./findhdr sys/ndir.h`
11014 echo "<dirent.h> NOT found." >&4
11019 : Look for type of directory structure.
11021 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11023 case "$direntrytype" in
11025 case "$i_dirent" in
11026 $define) guess1='struct dirent' ;;
11027 *) guess1='struct direct' ;;
11030 *) guess1="$direntrytype"
11035 'struct dirent') guess2='struct direct' ;;
11036 *) guess2='struct dirent' ;;
11039 if $contains "$guess1" try.c >/dev/null 2>&1; then
11040 direntrytype="$guess1"
11041 echo "Your directory entries are $direntrytype." >&4
11042 elif $contains "$guess2" try.c >/dev/null 2>&1; then
11043 direntrytype="$guess2"
11044 echo "Your directory entries seem to be $direntrytype." >&4
11046 echo "I don't recognize your system's directory entries." >&4
11047 rp="What type is used for directory entries on this system?"
11050 direntrytype="$ans"
11055 : see if the directory entry stores field length
11057 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11058 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
11059 echo "Good, your directory entry keeps length information in d_namlen." >&4
11062 echo "Your directory entry does not know about the d_namlen field." >&4
11069 : see if this is an sysdir system
11070 set sys/dir.h i_sysdir
11073 : see if this is an sysndir system
11074 set sys/ndir.h i_sysndir
11079 $cat >dirfd.c <<EOM
11081 #$i_stdlib I_STDLIB
11083 #include <stdlib.h>
11085 #$i_dirent I_DIRENT /**/
11086 #$i_sysdir I_SYS_DIR /**/
11087 #$i_sysndir I_SYS_NDIR /**/
11088 #$i_systypes I_SYS_TYPES /**/
11089 #if defined(I_SYS_TYPES)
11090 #include <sys/types.h>
11092 #if defined(I_DIRENT)
11093 #include <dirent.h>
11094 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11095 #include <sys/dir.h>
11099 #include <sys/ndir.h>
11103 #include <ndir.h> /* may be wrong in the future */
11105 #include <sys/dir.h>
11111 DIR *dirp = opendir(".");
11112 if (dirfd(dirp) >= 0)
11120 if eval $compile; then
11124 $define) echo "dirfd() found." >&4 ;;
11125 *) echo "dirfd() NOT found." >&4 ;;
11131 : see if dlerror exists
11134 set dlerror d_dlerror
11138 : see if dlfcn is available
11139 set dlfcn.h i_dlfcn
11146 On a few systems, the dynamically loaded modules that perl generates and uses
11147 will need a different extension than shared libs. The default will probably
11153 *) dflt="$dlext" ;;
11155 rp='What is the extension of dynamically loaded modules'
11164 : Check if dlsym need a leading underscore
11170 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
11171 $cat >dyna.c <<'EOM'
11178 #$i_stdlib I_STDLIB
11180 #include <stdlib.h>
11184 #include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
11186 #include <sys/types.h>
11191 extern int fred() ;
11200 int mode = RTLD_LAZY ;
11202 handle = dlopen("./dyna.$dlext", mode) ;
11203 if (handle == NULL) {
11208 symbol = dlsym(handle, "fred") ;
11209 if (symbol == NULL) {
11210 /* try putting a leading underscore */
11211 symbol = dlsym(handle, "_fred") ;
11212 if (symbol == NULL) {
11225 : Call the object file tmp-dyna.o in case dlext=o.
11226 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
11227 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
11228 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
11229 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
11232 1) echo "Test program failed using dlopen." >&4
11233 echo "Perhaps you should not use dynamic loading." >&4;;
11234 2) echo "Test program failed using dlsym." >&4
11235 echo "Perhaps you should not use dynamic loading." >&4;;
11236 3) echo "dlsym needs a leading underscore" >&4
11238 4) echo "dlsym doesn't need a leading underscore." >&4;;
11241 echo "I can't compile and run the test program." >&4
11242 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
11247 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
11252 : see if drand48_r exists
11253 set drand48_r d_drand48_r
11255 case "$d_drand48_r" in
11257 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
11258 case "$d_drand48_r_proto:$usethreads" in
11259 ":define") d_drand48_r_proto=define
11260 set d_drand48_r_proto drand48_r $hdrs
11264 case "$d_drand48_r_proto" in
11266 case "$drand48_r_proto" in
11267 ''|0) try='int drand48_r(struct drand48_data*, double*);'
11268 ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11270 case "$drand48_r_proto" in
11271 ''|0) d_drand48_r=undef
11273 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11274 * ) case "$drand48_r_proto" in
11275 REENTRANT_PROTO*) ;;
11276 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11278 echo "Prototype: $try" ;;
11281 *) case "$usethreads" in
11282 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11289 *) drand48_r_proto=0
11293 : see if prototype for drand48 is available
11295 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11298 : see if dup2 exists
11302 : see if eaccess exists
11303 set eaccess d_eaccess
11306 : see if endgrent exists
11307 set endgrent d_endgrent
11310 : see if this is an grp system
11316 xxx=`./findhdr grp.h`
11317 $cppstdin $cppflags $cppminus < $xxx >$$.h
11319 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11331 set d_grpasswd; eval $setvar
11335 : see if endgrent_r exists
11336 set endgrent_r d_endgrent_r
11338 case "$d_endgrent_r" in
11340 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11341 case "$d_endgrent_r_proto:$usethreads" in
11342 ":define") d_endgrent_r_proto=define
11343 set d_endgrent_r_proto endgrent_r $hdrs
11347 case "$d_endgrent_r_proto" in
11349 case "$endgrent_r_proto" in
11350 ''|0) try='int endgrent_r(FILE**);'
11351 ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11353 case "$endgrent_r_proto" in
11354 ''|0) try='void endgrent_r(FILE**);'
11355 ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11357 case "$endgrent_r_proto" in
11358 ''|0) d_endgrent_r=undef
11360 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11361 * ) case "$endgrent_r_proto" in
11362 REENTRANT_PROTO*) ;;
11363 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11365 echo "Prototype: $try" ;;
11368 *) case "$usethreads" in
11369 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11376 *) endgrent_r_proto=0
11380 : see if endhostent exists
11381 set endhostent d_endhent
11384 : see if this is a netdb.h system
11385 set netdb.h i_netdb
11388 : see if endhostent_r exists
11389 set endhostent_r d_endhostent_r
11391 case "$d_endhostent_r" in
11393 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11394 case "$d_endhostent_r_proto:$usethreads" in
11395 ":define") d_endhostent_r_proto=define
11396 set d_endhostent_r_proto endhostent_r $hdrs
11400 case "$d_endhostent_r_proto" in
11402 case "$endhostent_r_proto" in
11403 ''|0) try='int endhostent_r(struct hostent_data*);'
11404 ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11406 case "$endhostent_r_proto" in
11407 ''|0) try='void endhostent_r(struct hostent_data*);'
11408 ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11410 case "$endhostent_r_proto" in
11411 ''|0) d_endhostent_r=undef
11412 endhostent_r_proto=0
11413 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11414 * ) case "$endhostent_r_proto" in
11415 REENTRANT_PROTO*) ;;
11416 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11418 echo "Prototype: $try" ;;
11421 *) case "$usethreads" in
11422 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11424 d_endhostent_r=undef
11425 endhostent_r_proto=0
11429 *) endhostent_r_proto=0
11433 : see if endnetent exists
11434 set endnetent d_endnent
11437 : see if endnetent_r exists
11438 set endnetent_r d_endnetent_r
11440 case "$d_endnetent_r" in
11442 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11443 case "$d_endnetent_r_proto:$usethreads" in
11444 ":define") d_endnetent_r_proto=define
11445 set d_endnetent_r_proto endnetent_r $hdrs
11449 case "$d_endnetent_r_proto" in
11451 case "$endnetent_r_proto" in
11452 ''|0) try='int endnetent_r(struct netent_data*);'
11453 ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11455 case "$endnetent_r_proto" in
11456 ''|0) try='void endnetent_r(struct netent_data*);'
11457 ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11459 case "$endnetent_r_proto" in
11460 ''|0) d_endnetent_r=undef
11461 endnetent_r_proto=0
11462 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11463 * ) case "$endnetent_r_proto" in
11464 REENTRANT_PROTO*) ;;
11465 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11467 echo "Prototype: $try" ;;
11470 *) case "$usethreads" in
11471 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11473 d_endnetent_r=undef
11474 endnetent_r_proto=0
11478 *) endnetent_r_proto=0
11482 : see if endprotoent exists
11483 set endprotoent d_endpent
11486 : see if endprotoent_r exists
11487 set endprotoent_r d_endprotoent_r
11489 case "$d_endprotoent_r" in
11491 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11492 case "$d_endprotoent_r_proto:$usethreads" in
11493 ":define") d_endprotoent_r_proto=define
11494 set d_endprotoent_r_proto endprotoent_r $hdrs
11498 case "$d_endprotoent_r_proto" in
11500 case "$endprotoent_r_proto" in
11501 ''|0) try='int endprotoent_r(struct protoent_data*);'
11502 ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11504 case "$endprotoent_r_proto" in
11505 ''|0) try='void endprotoent_r(struct protoent_data*);'
11506 ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11508 case "$endprotoent_r_proto" in
11509 ''|0) d_endprotoent_r=undef
11510 endprotoent_r_proto=0
11511 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11512 * ) case "$endprotoent_r_proto" in
11513 REENTRANT_PROTO*) ;;
11514 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11516 echo "Prototype: $try" ;;
11519 *) case "$usethreads" in
11520 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11522 d_endprotoent_r=undef
11523 endprotoent_r_proto=0
11527 *) endprotoent_r_proto=0
11531 : see if endpwent exists
11532 set endpwent d_endpwent
11535 : see if this is a pwd.h system
11541 xxx=`./findhdr pwd.h`
11542 $cppstdin $cppflags $cppminus < $xxx >$$.h
11544 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11552 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11560 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11568 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11576 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11584 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11592 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11600 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11612 set d_pwquota; eval $setvar
11613 set d_pwage; eval $setvar
11614 set d_pwchange; eval $setvar
11615 set d_pwclass; eval $setvar
11616 set d_pwexpire; eval $setvar
11617 set d_pwcomment; eval $setvar
11618 set d_pwgecos; eval $setvar
11619 set d_pwpasswd; eval $setvar
11623 : see if endpwent_r exists
11624 set endpwent_r d_endpwent_r
11626 case "$d_endpwent_r" in
11628 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11629 case "$d_endpwent_r_proto:$usethreads" in
11630 ":define") d_endpwent_r_proto=define
11631 set d_endpwent_r_proto endpwent_r $hdrs
11635 case "$d_endpwent_r_proto" in
11637 case "$endpwent_r_proto" in
11638 ''|0) try='int endpwent_r(FILE**);'
11639 ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11641 case "$endpwent_r_proto" in
11642 ''|0) try='void endpwent_r(FILE**);'
11643 ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11645 case "$endpwent_r_proto" in
11646 ''|0) d_endpwent_r=undef
11648 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11649 * ) case "$endpwent_r_proto" in
11650 REENTRANT_PROTO*) ;;
11651 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11653 echo "Prototype: $try" ;;
11656 *) case "$usethreads" in
11657 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11664 *) endpwent_r_proto=0
11668 : see if endservent exists
11669 set endservent d_endsent
11672 : see if endservent_r exists
11673 set endservent_r d_endservent_r
11675 case "$d_endservent_r" in
11677 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11678 case "$d_endservent_r_proto:$usethreads" in
11679 ":define") d_endservent_r_proto=define
11680 set d_endservent_r_proto endservent_r $hdrs
11684 case "$d_endservent_r_proto" in
11686 case "$endservent_r_proto" in
11687 ''|0) try='int endservent_r(struct servent_data*);'
11688 ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11690 case "$endservent_r_proto" in
11691 ''|0) try='void endservent_r(struct servent_data*);'
11692 ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11694 case "$endservent_r_proto" in
11695 ''|0) d_endservent_r=undef
11696 endservent_r_proto=0
11697 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11698 * ) case "$endservent_r_proto" in
11699 REENTRANT_PROTO*) ;;
11700 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11702 echo "Prototype: $try" ;;
11705 *) case "$usethreads" in
11706 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11708 d_endservent_r=undef
11709 endservent_r_proto=0
11713 *) endservent_r_proto=0
11717 : Locate the flags for 'open()'
11720 #include <sys/types.h>
11725 #include <sys/file.h>
11727 #$i_stdlib I_STDLIB
11729 #include <stdlib.h>
11740 : check sys/file.h first to get FREAD on Sun
11741 if $test `./findhdr sys/file.h` && \
11742 set try -DI_SYS_FILE && eval $compile; then
11744 echo "<sys/file.h> defines the O_* constants..." >&4
11745 if $run ./try; then
11746 echo "and you have the 3 argument form of open()." >&4
11749 echo "but not the 3 argument form of open(). Oh, well." >&4
11752 elif $test `./findhdr fcntl.h` && \
11753 set try -DI_FCNTL && eval $compile; then
11755 echo "<fcntl.h> defines the O_* constants..." >&4
11756 if $run ./try; then
11757 echo "and you have the 3 argument form of open()." >&4
11760 echo "but not the 3 argument form of open(). Oh, well." >&4
11765 echo "I can't find the O_* constant definitions! You got problems." >&4
11771 : see which of string.h or strings.h is needed
11773 strings=`./findhdr string.h`
11774 if $test "$strings" && $test -r "$strings"; then
11775 echo "Using <string.h> instead of <strings.h>." >&4
11779 strings=`./findhdr strings.h`
11780 if $test "$strings" && $test -r "$strings"; then
11781 echo "Using <strings.h> instead of <string.h>." >&4
11783 echo "No string header found -- You'll surely have problems." >&4
11788 case "$i_string" in
11789 "$undef") strings=`./findhdr strings.h`;;
11790 *) strings=`./findhdr string.h`;;
11793 : see if this is a sys/file.h system
11798 : do we need to include sys/file.h ?
11802 if $h_sysfile; then
11804 echo "We'll be including <sys/file.h>." >&4
11807 echo "We won't be including <sys/file.h>." >&4
11817 : see if fcntl.h is there
11822 : see if we can include fcntl.h
11828 echo "We'll be including <fcntl.h>." >&4
11831 if $h_sysfile; then
11832 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11834 echo "We won't be including <fcntl.h>." >&4
11846 : check for non-blocking I/O stuff
11847 case "$h_sysfile" in
11848 true) echo "#include <sys/file.h>" > head.c;;
11851 true) echo "#include <fcntl.h>" > head.c;;
11852 *) echo "#include <sys/fcntl.h>" > head.c;;
11857 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11858 case "$o_nonblock" in
11860 $cat head.c > try.c
11861 $cat >>try.c <<EOCP
11863 #$i_stdlib I_STDLIB
11865 #include <stdlib.h>
11873 printf("O_NONBLOCK\n");
11877 printf("O_NDELAY\n");
11881 printf("FNDELAY\n");
11888 if eval $compile_ok; then
11889 o_nonblock=`$run ./try`
11890 case "$o_nonblock" in
11891 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11892 *) echo "Seems like we can use $o_nonblock.";;
11895 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11898 *) echo "Using $hint value $o_nonblock.";;
11900 $rm -f try try.* .out core
11903 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11906 $cat head.c > try.c
11907 $cat >>try.c <<EOCP
11909 #include <sys/types.h>
11910 #include <signal.h>
11912 #$i_stdlib I_STDLIB
11914 #include <stdlib.h>
11920 #define MY_O_NONBLOCK $o_nonblock
11921 #ifndef errno /* XXX need better Configure test */
11924 #$i_unistd I_UNISTD
11926 #include <unistd.h>
11928 #$i_string I_STRING
11930 #include <string.h>
11932 #include <strings.h>
11934 $signal_t blech(x) int x; { exit(3); }
11936 $cat >> try.c <<'EOCP'
11944 pipe(pd); /* Down: child -> parent */
11945 pipe(pu); /* Up: parent -> child */
11948 close(pd[1]); /* Parent reads from pd[0] */
11949 close(pu[0]); /* Parent writes (blocking) to pu[1] */
11951 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11956 signal(SIGALRM, blech);
11958 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
11960 sprintf(string, "%d\n", ret);
11961 write(2, string, strlen(string));
11964 if (errno == EAGAIN) {
11965 printf("EAGAIN\n");
11970 if (errno == EWOULDBLOCK)
11971 printf("EWOULDBLOCK\n");
11974 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
11975 sleep(2); /* Give it time to close our pipe */
11977 ret = read(pd[0], buf, 1); /* Should read EOF */
11979 sprintf(string, "%d\n", ret);
11980 write(4, string, strlen(string));
11984 close(pd[0]); /* We write to pd[1] */
11985 close(pu[1]); /* We read from pu[0] */
11986 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
11987 close(pd[1]); /* Pipe pd is now fully closed! */
11988 exit(0); /* Bye bye, thank you for playing! */
11992 if eval $compile_ok; then
11993 echo "$startsh" >mtry
11994 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11996 ./mtry >/dev/null 2>&1
11998 0) eagain=`$cat try.out`;;
11999 1) echo "Could not perform non-blocking setting!";;
12000 2) echo "I did a successful read() for something that was not there!";;
12001 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
12002 4) echo "Could not find F_SETFL!";;
12003 *) echo "Something terribly wrong happened during testing.";;
12005 rd_nodata=`$cat try.ret`
12006 echo "A read() system call with no data present returns $rd_nodata."
12007 case "$rd_nodata" in
12010 echo "(That's peculiar, fixing that to be -1.)"
12016 echo "Forcing errno EAGAIN on read() with no data available."
12020 echo "Your read() sets errno to $eagain when no data is available."
12023 status=`$cat try.err`
12025 0) echo "And it correctly returns 0 to signal EOF.";;
12026 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
12027 *) echo "However, your read() returns '$status' on EOF??";;
12030 if test "$status" = "$rd_nodata"; then
12031 echo "WARNING: you can't distinguish between EOF and no data!"
12035 echo "I can't compile the test program--assuming errno EAGAIN will do."
12042 echo "Using $hint value $eagain."
12043 echo "Your read() returns $rd_nodata when no data is present."
12044 case "$d_eofnblk" in
12045 "$define") echo "And you can see EOF because read() returns 0.";;
12046 "$undef") echo "But you can't see EOF status from read() returned value.";;
12048 echo "(Assuming you can't see EOF status from read anyway.)"
12054 $rm -f try try.* .out core head.c mtry
12056 : see if _ptr and _cnt from stdio act std
12059 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12060 echo "(Looks like you have stdio.h from BSD.)"
12061 case "$stdio_ptr" in
12062 '') stdio_ptr='((fp)->_p)'
12065 *) ptr_lval=$d_stdio_ptr_lval;;
12067 case "$stdio_cnt" in
12068 '') stdio_cnt='((fp)->_r)'
12071 *) cnt_lval=$d_stdio_cnt_lval;;
12073 case "$stdio_base" in
12074 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12076 case "$stdio_bufsiz" in
12077 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12079 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12080 echo "(Looks like you have stdio.h from Linux.)"
12081 case "$stdio_ptr" in
12082 '') stdio_ptr='((fp)->_IO_read_ptr)'
12085 *) ptr_lval=$d_stdio_ptr_lval;;
12087 case "$stdio_cnt" in
12088 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12091 *) cnt_lval=$d_stdio_cnt_lval;;
12093 case "$stdio_base" in
12094 '') stdio_base='((fp)->_IO_read_base)';;
12096 case "$stdio_bufsiz" in
12097 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12100 case "$stdio_ptr" in
12101 '') stdio_ptr='((fp)->_ptr)'
12104 *) ptr_lval=$d_stdio_ptr_lval;;
12106 case "$stdio_cnt" in
12107 '') stdio_cnt='((fp)->_cnt)'
12110 *) cnt_lval=$d_stdio_cnt_lval;;
12112 case "$stdio_base" in
12113 '') stdio_base='((fp)->_base)';;
12115 case "$stdio_bufsiz" in
12116 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12120 : test whether _ptr and _cnt really work
12121 echo "Checking how std your stdio is..." >&4
12124 #$i_stdlib I_STDLIB
12126 #include <stdlib.h>
12128 #define FILE_ptr(fp) $stdio_ptr
12129 #define FILE_cnt(fp) $stdio_cnt
12131 FILE *fp = fopen("try.c", "r");
12134 18 <= FILE_cnt(fp) &&
12135 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12143 if eval $compile && $to try.c; then
12144 if $run ./try; then
12145 echo "Your stdio acts pretty std."
12148 echo "Your stdio isn't very std."
12151 echo "Your stdio doesn't appear very std."
12155 # glibc 2.2.90 and above apparently change stdio streams so Perl's
12156 # direct buffer manipulation no longer works. The Configure tests
12157 # should be changed to correctly detect this, but until then,
12158 # the following check should at least let perl compile and run.
12159 # (This quick fix should be updated before 5.8.1.)
12160 # To be defensive, reject all unknown versions, and all versions > 2.2.9.
12161 # A. Dougherty, June 3, 2002.
12162 case "$d_gnulibc" in
12164 case "$gnulibc_version" in
12168 *) echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
12177 : Can _ptr be used as an lvalue?
12178 case "$d_stdstdio$ptr_lval" in
12179 $define$define) val=$define ;;
12182 set d_stdio_ptr_lval
12185 : Can _cnt be used as an lvalue?
12186 case "$d_stdstdio$cnt_lval" in
12187 $define$define) val=$define ;;
12190 set d_stdio_cnt_lval
12194 : test whether setting _ptr sets _cnt as a side effect
12195 d_stdio_ptr_lval_sets_cnt="$undef"
12196 d_stdio_ptr_lval_nochange_cnt="$undef"
12197 case "$d_stdio_ptr_lval$d_stdstdio" in
12199 echo "Checking to see what happens if we set the stdio ptr..." >&4
12202 /* Can we scream? */
12203 /* Eat dust sed :-) */
12204 /* In the buffer space, no one can hear you scream. */
12205 #$i_stdlib I_STDLIB
12207 #include <stdlib.h>
12209 #define FILE_ptr(fp) $stdio_ptr
12210 #define FILE_cnt(fp) $stdio_cnt
12211 #include <sys/types.h>
12213 FILE *fp = fopen("try.c", "r");
12218 puts("Fail even to read");
12221 c = getc(fp); /* Read away the first # */
12223 puts("Fail even to read");
12227 18 <= FILE_cnt(fp) &&
12228 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12230 puts("Fail even to read");
12233 ptr = (char*) FILE_ptr(fp);
12234 cnt = (size_t)FILE_cnt(fp);
12236 FILE_ptr(fp) += 42;
12238 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12239 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12242 if (FILE_cnt(fp) <= 20) {
12243 printf ("Fail (<20 chars to test)");
12246 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12247 puts("Fail compare");
12250 if (cnt == FILE_cnt(fp)) {
12251 puts("Pass_unchanged");
12254 if (FILE_cnt(fp) == (cnt - 42)) {
12255 puts("Pass_changed");
12258 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12264 if eval $compile && $to try.c; then
12265 case `$run ./try` in
12267 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
12268 d_stdio_ptr_lval_sets_cnt="$define" ;;
12270 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12271 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12273 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12275 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12278 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12284 : see if _base is also standard
12286 case "$d_stdstdio" in
12290 #$i_stdlib I_STDLIB
12292 #include <stdlib.h>
12294 #define FILE_base(fp) $stdio_base
12295 #define FILE_bufsiz(fp) $stdio_bufsiz
12297 FILE *fp = fopen("try.c", "r");
12300 19 <= FILE_bufsiz(fp) &&
12301 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12308 if eval $compile && $to try.c; then
12309 if $run ./try; then
12310 echo "And its _base field acts std."
12313 echo "But its _base field isn't std."
12316 echo "However, it seems to be lacking the _base field."
12324 : see if fast_stdio exists
12326 case "$d_stdstdio:$d_stdio_ptr_lval" in
12328 case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12330 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12341 : see if fchdir exists
12342 set fchdir d_fchdir
12345 : see if fchmod exists
12346 set fchmod d_fchmod
12349 : see if fchown exists
12350 set fchown d_fchown
12353 : see if this is an fcntl system
12358 : See if fcntl-based locking works.
12360 #$i_stdlib I_STDLIB
12362 #include <stdlib.h>
12364 #include <unistd.h>
12366 #include <signal.h>
12367 $signal_t blech(x) int x; { exit(3); }
12369 #if defined(F_SETLK) && defined(F_SETLKW)
12370 struct flock flock;
12372 fd = open("try.c", O_RDONLY);
12373 flock.l_type = F_RDLCK;
12374 flock.l_whence = SEEK_SET;
12375 flock.l_start = flock.l_len = 0;
12376 signal(SIGALRM, blech);
12378 retval = fcntl(fd, F_SETLK, &flock);
12380 (retval < 0 ? exit(2) : exit(0));
12386 echo "Checking if fcntl-based file locking works... "
12390 if eval $compile_ok; then
12391 if $run ./try; then
12392 echo "Yes, it seems to work."
12395 echo "Nope, it didn't work."
12400 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12401 *** This is (almost) impossible.
12402 *** If your NFS lock daemons are not feeling well, something like
12403 *** this may happen, please investigate. Cannot continue, aborting.
12411 echo "I'm unable to compile the test program, so I'll assume not."
12416 echo "Nope, since you don't even have fcntl()."
12419 set d_fcntl_can_lock
12424 : check for fd_set items
12427 Checking to see how well your C compiler handles fd_set and friends ...
12430 #$i_stdlib I_STDLIB
12432 #include <stdlib.h>
12434 #$i_systime I_SYS_TIME
12435 #$i_sysselct I_SYS_SELECT
12436 #$d_socket HAS_SOCKET
12437 #include <sys/types.h>
12439 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12442 #include <sys/time.h>
12444 #ifdef I_SYS_SELECT
12445 #include <sys/select.h>
12454 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12462 if eval $compile; then
12463 d_fds_bits="$define"
12465 echo "Well, your system knows about the normal fd_set typedef..." >&4
12466 if $run ./try; then
12467 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12468 d_fd_macros="$define"
12471 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
12473 d_fd_macros="$undef"
12477 Hmm, your compiler has some difficulty with fd_set. Checking further...
12480 if eval $compile; then
12481 d_fds_bits="$undef"
12483 echo "Well, your system has some sort of fd_set available..." >&4
12484 if $run ./try; then
12485 echo "and you have the normal fd_set macros." >&4
12486 d_fd_macros="$define"
12489 but not the normal fd_set macros! Gross! More work for me...
12491 d_fd_macros="$undef"
12494 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
12496 d_fds_bits="$undef"
12497 d_fd_macros="$undef"
12502 : see if fgetpos exists
12503 set fgetpos d_fgetpos
12506 : see if finite exists
12507 set finite d_finite
12510 : see if finitel exists
12511 set finitel d_finitel
12514 : see if flock exists
12518 : see if prototype for flock is available
12520 set d_flockproto flock $i_sysfile sys/file.h
12523 : see if fork exists
12527 : see if fp_class exists
12528 set fp_class d_fp_class
12531 : see if pathconf exists
12532 set pathconf d_pathconf
12535 : see if fpathconf exists
12536 set fpathconf d_fpathconf
12539 : see if fpclass exists
12540 set fpclass d_fpclass
12543 : see if fpclassify exists
12544 set fpclassify d_fpclassify
12547 : see if fpclassl exists
12548 set fpclassl d_fpclassl
12552 : check for fpos64_t
12554 echo "Checking to see if you have fpos64_t..." >&4
12557 int main() { fpos64_t x = 7; }
12560 if eval $compile; then
12562 echo "You have fpos64_t."
12565 echo "You do not have fpos64_t."
12566 case "$fpossize" in
12567 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12574 : see if frexpl exists
12575 set frexpl d_frexpl
12578 : see if this is a sys/param system
12579 set sys/param.h i_sysparam
12582 : see if this is a sys/mount.h system
12583 set sys/mount.h i_sysmount
12588 echo "Checking to see if your system supports struct fs_data..." >&4
12589 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12591 case "$d_fs_data_s" in
12592 "$define") echo "Yes, it does." ;;
12593 *) echo "No, it doesn't." ;;
12596 : see if fseeko exists
12597 set fseeko d_fseeko
12599 case "$longsize" in
12600 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12603 : see if fsetpos exists
12604 set fsetpos d_fsetpos
12608 : see if fstatfs exists
12609 set fstatfs d_fstatfs
12613 : see if statvfs exists
12614 set statvfs d_statvfs
12617 : see if fstatvfs exists
12618 set fstatvfs d_fstatvfs
12622 : see if fsync exists
12626 : see if ftello exists
12627 set ftello d_ftello
12629 case "$longsize" in
12630 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12634 : check for a working futimes
12636 echo "Checking for a working futimes()" >&4
12639 #include <sys/time.h>
12646 fd = open ("try.c", O_RDWR);
12647 if (-1 == fd) exit (1);
12648 rv = futimes (fd, NULL);
12649 exit (rv == -1 ? errno : 0);
12653 if eval $compile; then
12657 0) echo "Yes, it does" >&4
12658 d_futimes="$define"
12660 *) echo "No, it has futimes, but it isn't working ($rc) (probably harmless)\n" >&4
12664 echo "No, it does not (probably harmless)\n" >&4
12666 $rm -f try.* try core core.try.*
12668 : see if getcwd exists
12669 set getcwd d_getcwd
12672 : see if getespwnam exists
12673 set getespwnam d_getespwnam
12677 : see if getfsstat exists
12678 set getfsstat d_getfsstat
12681 : see if getgrent exists
12682 set getgrent d_getgrent
12685 : see if getgrent_r exists
12686 set getgrent_r d_getgrent_r
12688 case "$d_getgrent_r" in
12690 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12691 case "$d_getgrent_r_proto:$usethreads" in
12692 ":define") d_getgrent_r_proto=define
12693 set d_getgrent_r_proto getgrent_r $hdrs
12697 case "$d_getgrent_r_proto" in
12699 case "$getgrent_r_proto" in
12700 ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12701 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12703 case "$getgrent_r_proto" in
12704 ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12705 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12707 case "$getgrent_r_proto" in
12708 ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12709 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12711 case "$getgrent_r_proto" in
12712 ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12713 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12715 case "$getgrent_r_proto" in
12716 ''|0) try='int getgrent_r(struct group*, char*, int);'
12717 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12719 case "$getgrent_r_proto" in
12720 ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12721 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12723 case "$getgrent_r_proto" in
12724 ''|0) d_getgrent_r=undef
12726 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12727 * ) case "$getgrent_r_proto" in
12728 REENTRANT_PROTO*) ;;
12729 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12731 echo "Prototype: $try" ;;
12734 *) case "$usethreads" in
12735 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12742 *) getgrent_r_proto=0
12746 : see if getgrgid_r exists
12747 set getgrgid_r d_getgrgid_r
12749 case "$d_getgrgid_r" in
12751 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12752 case "$d_getgrgid_r_proto:$usethreads" in
12753 ":define") d_getgrgid_r_proto=define
12754 set d_getgrgid_r_proto getgrgid_r $hdrs
12758 case "$d_getgrgid_r_proto" in
12760 case "$getgrgid_r_proto" in
12761 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12762 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12764 case "$getgrgid_r_proto" in
12765 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12766 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12768 case "$getgrgid_r_proto" in
12769 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12770 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12772 case "$getgrgid_r_proto" in
12773 ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12774 ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12776 case "$getgrgid_r_proto" in
12777 ''|0) d_getgrgid_r=undef
12779 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12780 * ) case "$getgrgid_r_proto" in
12781 REENTRANT_PROTO*) ;;
12782 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12784 echo "Prototype: $try" ;;
12787 *) case "$usethreads" in
12788 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12795 *) getgrgid_r_proto=0
12799 : see if getgrnam_r exists
12800 set getgrnam_r d_getgrnam_r
12802 case "$d_getgrnam_r" in
12804 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12805 case "$d_getgrnam_r_proto:$usethreads" in
12806 ":define") d_getgrnam_r_proto=define
12807 set d_getgrnam_r_proto getgrnam_r $hdrs
12811 case "$d_getgrnam_r_proto" in
12813 case "$getgrnam_r_proto" in
12814 ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12815 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12817 case "$getgrnam_r_proto" in
12818 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12819 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12821 case "$getgrnam_r_proto" in
12822 ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12823 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12825 case "$getgrnam_r_proto" in
12826 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12827 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12829 case "$getgrnam_r_proto" in
12830 ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12831 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12833 case "$getgrnam_r_proto" in
12834 ''|0) d_getgrnam_r=undef
12836 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12837 * ) case "$getgrnam_r_proto" in
12838 REENTRANT_PROTO*) ;;
12839 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12841 echo "Prototype: $try" ;;
12844 *) case "$usethreads" in
12845 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12852 *) getgrnam_r_proto=0
12856 : see if gethostbyaddr exists
12857 set gethostbyaddr d_gethbyaddr
12860 : see if gethostbyname exists
12861 set gethostbyname d_gethbyname
12864 : see if gethostent exists
12865 set gethostent d_gethent
12868 : see how we will look up host name
12871 if set gethostname val -f d_gethname; eval $csym; $val; then
12872 echo 'gethostname() found.' >&4
12873 d_gethname="$define"
12876 if set uname val -f d_uname; eval $csym; $val; then
12879 uname() was found, but you're running xenix, and older versions of xenix
12880 have a broken uname(). If you don't really know whether your xenix is old
12881 enough to have a broken system call, use the default answer.
12886 "$define") dflt=n;;
12888 rp='Is your uname() broken?'
12891 n*) d_uname="$define"; call=uname;;
12894 echo 'uname() found.' >&4
12901 case "$d_gethname" in
12902 '') d_gethname="$undef";;
12905 '') d_uname="$undef";;
12907 case "$d_uname$d_gethname" in
12912 Every now and then someone has a $call() that lies about the hostname
12913 but can't be fixed for political or economic reasons. If you wish, I can
12914 pretend $call() isn't there and maybe compute hostname at run-time
12915 thanks to the '$phostname' command.
12918 rp="Shall I ignore $call() from now on?"
12921 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12924 case "$phostname" in
12925 '') aphostname='';;
12926 *) case "$aphostname" in
12928 *) set X $phostname
12932 file=`./loc $file $file $pth`
12933 aphostname=`echo $file $*`
12938 case "$d_uname$d_gethname" in
12941 case "$phostname" in
12943 echo "There will be no way for $package to get your hostname." >&4;;
12945 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12949 case "$d_phostname" in
12950 '') d_phostname="$undef";;
12953 : see if gethostbyaddr_r exists
12954 set gethostbyaddr_r d_gethostbyaddr_r
12956 case "$d_gethostbyaddr_r" in
12958 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12959 case "$d_gethostbyaddr_r_proto:$usethreads" in
12960 ":define") d_gethostbyaddr_r_proto=define
12961 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12965 case "$d_gethostbyaddr_r_proto" in
12967 case "$gethostbyaddr_r_proto" in
12968 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12969 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12971 case "$gethostbyaddr_r_proto" in
12972 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12973 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12975 case "$gethostbyaddr_r_proto" in
12976 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12977 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12979 case "$gethostbyaddr_r_proto" in
12980 ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12981 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12983 case "$gethostbyaddr_r_proto" in
12984 ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12985 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12987 case "$gethostbyaddr_r_proto" in
12988 ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12989 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12991 case "$gethostbyaddr_r_proto" in
12992 ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12993 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12995 case "$gethostbyaddr_r_proto" in
12996 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12997 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12999 case "$gethostbyaddr_r_proto" in
13000 ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
13001 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
13003 case "$gethostbyaddr_r_proto" in
13004 ''|0) try='int gethostbyaddr_r(const char*, int, int);'
13005 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
13007 case "$gethostbyaddr_r_proto" in
13008 ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13009 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
13011 case "$gethostbyaddr_r_proto" in
13012 ''|0) d_gethostbyaddr_r=undef
13013 gethostbyaddr_r_proto=0
13014 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
13015 * ) case "$gethostbyaddr_r_proto" in
13016 REENTRANT_PROTO*) ;;
13017 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
13019 echo "Prototype: $try" ;;
13022 *) case "$usethreads" in
13023 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
13025 d_gethostbyaddr_r=undef
13026 gethostbyaddr_r_proto=0
13030 *) gethostbyaddr_r_proto=0
13034 : see if gethostbyname_r exists
13035 set gethostbyname_r d_gethostbyname_r
13037 case "$d_gethostbyname_r" in
13039 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13040 case "$d_gethostbyname_r_proto:$usethreads" in
13041 ":define") d_gethostbyname_r_proto=define
13042 set d_gethostbyname_r_proto gethostbyname_r $hdrs
13046 case "$d_gethostbyname_r_proto" in
13048 case "$gethostbyname_r_proto" in
13049 ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
13050 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
13052 case "$gethostbyname_r_proto" in
13053 ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
13054 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
13056 case "$gethostbyname_r_proto" in
13057 ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
13058 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
13060 case "$gethostbyname_r_proto" in
13061 ''|0) d_gethostbyname_r=undef
13062 gethostbyname_r_proto=0
13063 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
13064 * ) case "$gethostbyname_r_proto" in
13065 REENTRANT_PROTO*) ;;
13066 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
13068 echo "Prototype: $try" ;;
13071 *) case "$usethreads" in
13072 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
13074 d_gethostbyname_r=undef
13075 gethostbyname_r_proto=0
13079 *) gethostbyname_r_proto=0
13083 : see if gethostent_r exists
13084 set gethostent_r d_gethostent_r
13086 case "$d_gethostent_r" in
13088 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13089 case "$d_gethostent_r_proto:$usethreads" in
13090 ":define") d_gethostent_r_proto=define
13091 set d_gethostent_r_proto gethostent_r $hdrs
13095 case "$d_gethostent_r_proto" in
13097 case "$gethostent_r_proto" in
13098 ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
13099 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
13101 case "$gethostent_r_proto" in
13102 ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
13103 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
13105 case "$gethostent_r_proto" in
13106 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
13107 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
13109 case "$gethostent_r_proto" in
13110 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
13111 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
13113 case "$gethostent_r_proto" in
13114 ''|0) try='int gethostent_r(struct hostent*, char*, int);'
13115 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
13117 case "$gethostent_r_proto" in
13118 ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
13119 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
13121 case "$gethostent_r_proto" in
13122 ''|0) d_gethostent_r=undef
13123 gethostent_r_proto=0
13124 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
13125 * ) case "$gethostent_r_proto" in
13126 REENTRANT_PROTO*) ;;
13127 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
13129 echo "Prototype: $try" ;;
13132 *) case "$usethreads" in
13133 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
13135 d_gethostent_r=undef
13136 gethostent_r_proto=0
13140 *) gethostent_r_proto=0
13144 : see if prototypes for various gethostxxx netdb.h functions are available
13146 set d_gethostprotos gethostent $i_netdb netdb.h
13149 : see if getitimer exists
13150 set getitimer d_getitimer
13153 : see if getlogin exists
13154 set getlogin d_getlogin
13157 : see if getlogin_r exists
13158 set getlogin_r d_getlogin_r
13160 case "$d_getlogin_r" in
13162 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
13163 case "$d_getlogin_r_proto:$usethreads" in
13164 ":define") d_getlogin_r_proto=define
13165 set d_getlogin_r_proto getlogin_r $hdrs
13169 case "$d_getlogin_r_proto" in
13171 case "$getlogin_r_proto" in
13172 ''|0) try='int getlogin_r(char*, size_t);'
13173 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
13175 case "$getlogin_r_proto" in
13176 ''|0) try='int getlogin_r(char*, int);'
13177 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
13179 case "$getlogin_r_proto" in
13180 ''|0) try='char* getlogin_r(char*, size_t);'
13181 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
13183 case "$getlogin_r_proto" in
13184 ''|0) try='char* getlogin_r(char*, int);'
13185 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
13187 case "$getlogin_r_proto" in
13188 ''|0) d_getlogin_r=undef
13190 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
13191 * ) case "$getlogin_r_proto" in
13192 REENTRANT_PROTO*) ;;
13193 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
13195 echo "Prototype: $try" ;;
13198 *) case "$usethreads" in
13199 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
13206 *) getlogin_r_proto=0
13210 : see if getmnt exists
13211 set getmnt d_getmnt
13214 : see if getmntent exists
13215 set getmntent d_getmntent
13218 : see if getnetbyaddr exists
13219 set getnetbyaddr d_getnbyaddr
13222 : see if getnetbyname exists
13223 set getnetbyname d_getnbyname
13226 : see if getnetent exists
13227 set getnetent d_getnent
13230 : see if getnetbyaddr_r exists
13231 set getnetbyaddr_r d_getnetbyaddr_r
13233 case "$d_getnetbyaddr_r" in
13235 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13236 case "$d_getnetbyaddr_r_proto:$usethreads" in
13237 ":define") d_getnetbyaddr_r_proto=define
13238 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
13242 case "$d_getnetbyaddr_r_proto" in
13244 case "$getnetbyaddr_r_proto" in
13245 ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
13246 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
13248 case "$getnetbyaddr_r_proto" in
13249 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
13250 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
13252 case "$getnetbyaddr_r_proto" in
13253 ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
13254 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
13256 case "$getnetbyaddr_r_proto" in
13257 ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
13258 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
13260 case "$getnetbyaddr_r_proto" in
13261 ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
13262 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
13264 case "$getnetbyaddr_r_proto" in
13265 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
13266 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
13268 case "$getnetbyaddr_r_proto" in
13269 ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
13270 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
13272 case "$getnetbyaddr_r_proto" in
13273 ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
13274 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
13276 case "$getnetbyaddr_r_proto" in
13277 ''|0) d_getnetbyaddr_r=undef
13278 getnetbyaddr_r_proto=0
13279 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
13280 * ) case "$getnetbyaddr_r_proto" in
13281 REENTRANT_PROTO*) ;;
13282 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
13284 echo "Prototype: $try" ;;
13287 *) case "$usethreads" in
13288 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
13290 d_getnetbyaddr_r=undef
13291 getnetbyaddr_r_proto=0
13295 *) getnetbyaddr_r_proto=0
13299 : see if getnetbyname_r exists
13300 set getnetbyname_r d_getnetbyname_r
13302 case "$d_getnetbyname_r" in
13304 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13305 case "$d_getnetbyname_r_proto:$usethreads" in
13306 ":define") d_getnetbyname_r_proto=define
13307 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13311 case "$d_getnetbyname_r_proto" in
13313 case "$getnetbyname_r_proto" in
13314 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13315 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13317 case "$getnetbyname_r_proto" in
13318 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13319 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13321 case "$getnetbyname_r_proto" in
13322 ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13323 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13325 case "$getnetbyname_r_proto" in
13326 ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13327 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13329 case "$getnetbyname_r_proto" in
13330 ''|0) d_getnetbyname_r=undef
13331 getnetbyname_r_proto=0
13332 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13333 * ) case "$getnetbyname_r_proto" in
13334 REENTRANT_PROTO*) ;;
13335 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13337 echo "Prototype: $try" ;;
13340 *) case "$usethreads" in
13341 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13343 d_getnetbyname_r=undef
13344 getnetbyname_r_proto=0
13348 *) getnetbyname_r_proto=0
13352 : see if getnetent_r exists
13353 set getnetent_r d_getnetent_r
13355 case "$d_getnetent_r" in
13357 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13358 case "$d_getnetent_r_proto:$usethreads" in
13359 ":define") d_getnetent_r_proto=define
13360 set d_getnetent_r_proto getnetent_r $hdrs
13364 case "$d_getnetent_r_proto" in
13366 case "$getnetent_r_proto" in
13367 ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13368 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13370 case "$getnetent_r_proto" in
13371 ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13372 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13374 case "$getnetent_r_proto" in
13375 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13376 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13378 case "$getnetent_r_proto" in
13379 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13380 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13382 case "$getnetent_r_proto" in
13383 ''|0) try='int getnetent_r(struct netent*, char*, int);'
13384 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13386 case "$getnetent_r_proto" in
13387 ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13388 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13390 case "$getnetent_r_proto" in
13391 ''|0) d_getnetent_r=undef
13392 getnetent_r_proto=0
13393 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13394 * ) case "$getnetent_r_proto" in
13395 REENTRANT_PROTO*) ;;
13396 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13398 echo "Prototype: $try" ;;
13401 *) case "$usethreads" in
13402 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13404 d_getnetent_r=undef
13405 getnetent_r_proto=0
13409 *) getnetent_r_proto=0
13413 : see if prototypes for various getnetxxx netdb.h functions are available
13415 set d_getnetprotos getnetent $i_netdb netdb.h
13418 : see if getpagesize exists
13419 set getpagesize d_getpagsz
13423 : see if getprotobyname exists
13424 set getprotobyname d_getpbyname
13427 : see if getprotobynumber exists
13428 set getprotobynumber d_getpbynumber
13431 : see if getprotoent exists
13432 set getprotoent d_getpent
13435 : see if getpgid exists
13436 set getpgid d_getpgid
13439 : see if getpgrp2 exists
13440 set getpgrp2 d_getpgrp2
13443 : see if getppid exists
13444 set getppid d_getppid
13447 : see if getpriority exists
13448 set getpriority d_getprior
13451 : see if getprotobyname_r exists
13452 set getprotobyname_r d_getprotobyname_r
13454 case "$d_getprotobyname_r" in
13456 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13457 case "$d_getprotobyname_r_proto:$usethreads" in
13458 ":define") d_getprotobyname_r_proto=define
13459 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13463 case "$d_getprotobyname_r_proto" in
13465 case "$getprotobyname_r_proto" in
13466 ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13467 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13469 case "$getprotobyname_r_proto" in
13470 ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13471 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13473 case "$getprotobyname_r_proto" in
13474 ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13475 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13477 case "$getprotobyname_r_proto" in
13478 ''|0) d_getprotobyname_r=undef
13479 getprotobyname_r_proto=0
13480 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13481 * ) case "$getprotobyname_r_proto" in
13482 REENTRANT_PROTO*) ;;
13483 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13485 echo "Prototype: $try" ;;
13488 *) case "$usethreads" in
13489 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13491 d_getprotobyname_r=undef
13492 getprotobyname_r_proto=0
13496 *) getprotobyname_r_proto=0
13500 : see if getprotobynumber_r exists
13501 set getprotobynumber_r d_getprotobynumber_r
13503 case "$d_getprotobynumber_r" in
13505 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13506 case "$d_getprotobynumber_r_proto:$usethreads" in
13507 ":define") d_getprotobynumber_r_proto=define
13508 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13512 case "$d_getprotobynumber_r_proto" in
13514 case "$getprotobynumber_r_proto" in
13515 ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13516 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13518 case "$getprotobynumber_r_proto" in
13519 ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13520 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13522 case "$getprotobynumber_r_proto" in
13523 ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13524 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13526 case "$getprotobynumber_r_proto" in
13527 ''|0) d_getprotobynumber_r=undef
13528 getprotobynumber_r_proto=0
13529 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13530 * ) case "$getprotobynumber_r_proto" in
13531 REENTRANT_PROTO*) ;;
13532 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13534 echo "Prototype: $try" ;;
13537 *) case "$usethreads" in
13538 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13540 d_getprotobynumber_r=undef
13541 getprotobynumber_r_proto=0
13545 *) getprotobynumber_r_proto=0
13549 : see if getprotoent_r exists
13550 set getprotoent_r d_getprotoent_r
13552 case "$d_getprotoent_r" in
13554 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13555 case "$d_getprotoent_r_proto:$usethreads" in
13556 ":define") d_getprotoent_r_proto=define
13557 set d_getprotoent_r_proto getprotoent_r $hdrs
13561 case "$d_getprotoent_r_proto" in
13563 case "$getprotoent_r_proto" in
13564 ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13565 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13567 case "$getprotoent_r_proto" in
13568 ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13569 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13571 case "$getprotoent_r_proto" in
13572 ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13573 ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13575 case "$getprotoent_r_proto" in
13576 ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13577 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13579 case "$getprotoent_r_proto" in
13580 ''|0) d_getprotoent_r=undef
13581 getprotoent_r_proto=0
13582 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13583 * ) case "$getprotoent_r_proto" in
13584 REENTRANT_PROTO*) ;;
13585 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13587 echo "Prototype: $try" ;;
13590 *) case "$usethreads" in
13591 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13593 d_getprotoent_r=undef
13594 getprotoent_r_proto=0
13598 *) getprotoent_r_proto=0
13602 : see if prototypes for various getprotoxxx netdb.h functions are available
13604 set d_getprotoprotos getprotoent $i_netdb netdb.h
13607 : see if getprpwnam exists
13608 set getprpwnam d_getprpwnam
13611 : see if getpwent exists
13612 set getpwent d_getpwent
13615 : see if getpwent_r exists
13616 set getpwent_r d_getpwent_r
13618 case "$d_getpwent_r" in
13620 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13621 case "$d_getpwent_r_proto:$usethreads" in
13622 ":define") d_getpwent_r_proto=define
13623 set d_getpwent_r_proto getpwent_r $hdrs
13627 case "$d_getpwent_r_proto" in
13629 case "$getpwent_r_proto" in
13630 ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13631 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13633 case "$getpwent_r_proto" in
13634 ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13635 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13637 case "$getpwent_r_proto" in
13638 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13639 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13641 case "$getpwent_r_proto" in
13642 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13643 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13645 case "$getpwent_r_proto" in
13646 ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13647 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13649 case "$getpwent_r_proto" in
13650 ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13651 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13653 case "$getpwent_r_proto" in
13654 ''|0) d_getpwent_r=undef
13656 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13657 * ) case "$getpwent_r_proto" in
13658 REENTRANT_PROTO*) ;;
13659 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13661 echo "Prototype: $try" ;;
13664 *) case "$usethreads" in
13665 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13672 *) getpwent_r_proto=0
13676 : see if getpwnam_r exists
13677 set getpwnam_r d_getpwnam_r
13679 case "$d_getpwnam_r" in
13681 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13682 case "$d_getpwnam_r_proto:$usethreads" in
13683 ":define") d_getpwnam_r_proto=define
13684 set d_getpwnam_r_proto getpwnam_r $hdrs
13688 case "$d_getpwnam_r_proto" in
13690 case "$getpwnam_r_proto" in
13691 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13692 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13694 case "$getpwnam_r_proto" in
13695 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13696 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13698 case "$getpwnam_r_proto" in
13699 ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13700 ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13702 case "$getpwnam_r_proto" in
13703 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13704 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13706 case "$getpwnam_r_proto" in
13707 ''|0) d_getpwnam_r=undef
13709 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13710 * ) case "$getpwnam_r_proto" in
13711 REENTRANT_PROTO*) ;;
13712 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13714 echo "Prototype: $try" ;;
13717 *) case "$usethreads" in
13718 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13725 *) getpwnam_r_proto=0
13729 : see if getpwuid_r exists
13730 set getpwuid_r d_getpwuid_r
13732 case "$d_getpwuid_r" in
13734 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13735 case "$d_getpwuid_r_proto:$usethreads" in
13736 ":define") d_getpwuid_r_proto=define
13737 set d_getpwuid_r_proto getpwuid_r $hdrs
13741 case "$d_getpwuid_r_proto" in
13743 case "$getpwuid_r_proto" in
13744 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13745 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13747 case "$getpwuid_r_proto" in
13748 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13749 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13751 case "$getpwuid_r_proto" in
13752 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13753 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13755 case "$getpwuid_r_proto" in
13756 ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13757 ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13759 case "$getpwuid_r_proto" in
13760 ''|0) d_getpwuid_r=undef
13762 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13763 * ) case "$getpwuid_r_proto" in
13764 REENTRANT_PROTO*) ;;
13765 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13767 echo "Prototype: $try" ;;
13770 *) case "$usethreads" in
13771 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13778 *) getpwuid_r_proto=0
13783 : see if getservbyname exists
13784 set getservbyname d_getsbyname
13787 : see if getservbyport exists
13788 set getservbyport d_getsbyport
13791 : see if getservent exists
13792 set getservent d_getsent
13795 : see if getservbyname_r exists
13796 set getservbyname_r d_getservbyname_r
13798 case "$d_getservbyname_r" in
13800 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13801 case "$d_getservbyname_r_proto:$usethreads" in
13802 ":define") d_getservbyname_r_proto=define
13803 set d_getservbyname_r_proto getservbyname_r $hdrs
13807 case "$d_getservbyname_r_proto" in
13809 case "$getservbyname_r_proto" in
13810 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13811 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13813 case "$getservbyname_r_proto" in
13814 ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13815 ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13817 case "$getservbyname_r_proto" in
13818 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13819 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13821 case "$getservbyname_r_proto" in
13822 ''|0) d_getservbyname_r=undef
13823 getservbyname_r_proto=0
13824 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13825 * ) case "$getservbyname_r_proto" in
13826 REENTRANT_PROTO*) ;;
13827 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13829 echo "Prototype: $try" ;;
13832 *) case "$usethreads" in
13833 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13835 d_getservbyname_r=undef
13836 getservbyname_r_proto=0
13840 *) getservbyname_r_proto=0
13844 : see if getservbyport_r exists
13845 set getservbyport_r d_getservbyport_r
13847 case "$d_getservbyport_r" in
13849 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13850 case "$d_getservbyport_r_proto:$usethreads" in
13851 ":define") d_getservbyport_r_proto=define
13852 set d_getservbyport_r_proto getservbyport_r $hdrs
13856 case "$d_getservbyport_r_proto" in
13858 case "$getservbyport_r_proto" in
13859 ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13860 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13862 case "$getservbyport_r_proto" in
13863 ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13864 ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13866 case "$getservbyport_r_proto" in
13867 ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13868 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13870 case "$getservbyport_r_proto" in
13871 ''|0) d_getservbyport_r=undef
13872 getservbyport_r_proto=0
13873 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13874 * ) case "$getservbyport_r_proto" in
13875 REENTRANT_PROTO*) ;;
13876 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13878 echo "Prototype: $try" ;;
13881 *) case "$usethreads" in
13882 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13884 d_getservbyport_r=undef
13885 getservbyport_r_proto=0
13889 *) getservbyport_r_proto=0
13893 : see if getservent_r exists
13894 set getservent_r d_getservent_r
13896 case "$d_getservent_r" in
13898 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13899 case "$d_getservent_r_proto:$usethreads" in
13900 ":define") d_getservent_r_proto=define
13901 set d_getservent_r_proto getservent_r $hdrs
13905 case "$d_getservent_r_proto" in
13907 case "$getservent_r_proto" in
13908 ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13909 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13911 case "$getservent_r_proto" in
13912 ''|0) try='int getservent_r(struct servent*, char*, int);'
13913 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13915 case "$getservent_r_proto" in
13916 ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13917 ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13919 case "$getservent_r_proto" in
13920 ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13921 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13923 case "$getservent_r_proto" in
13924 ''|0) d_getservent_r=undef
13925 getservent_r_proto=0
13926 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13927 * ) case "$getservent_r_proto" in
13928 REENTRANT_PROTO*) ;;
13929 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13931 echo "Prototype: $try" ;;
13934 *) case "$usethreads" in
13935 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13937 d_getservent_r=undef
13938 getservent_r_proto=0
13942 *) getservent_r_proto=0
13946 : see if prototypes for various getservxxx netdb.h functions are available
13948 set d_getservprotos getservent $i_netdb netdb.h
13951 : see if getspnam exists
13952 set getspnam d_getspnam
13955 : see if this is a shadow.h system
13956 set shadow.h i_shadow
13959 : see if getspnam_r exists
13960 set getspnam_r d_getspnam_r
13962 case "$d_getspnam_r" in
13964 hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13965 case "$d_getspnam_r_proto:$usethreads" in
13966 ":define") d_getspnam_r_proto=define
13967 set d_getspnam_r_proto getspnam_r $hdrs
13971 case "$d_getspnam_r_proto" in
13973 case "$getspnam_r_proto" in
13974 ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13975 ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13977 case "$getspnam_r_proto" in
13978 ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13979 ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13981 case "$getspnam_r_proto" in
13982 ''|0) d_getspnam_r=undef
13984 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13985 * ) case "$getspnam_r_proto" in
13986 REENTRANT_PROTO*) ;;
13987 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13989 echo "Prototype: $try" ;;
13992 *) case "$usethreads" in
13993 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
14000 *) getspnam_r_proto=0
14004 : see if gettimeofday or ftime exists
14005 set gettimeofday d_gettimeod
14007 case "$d_gettimeod" in
14013 val="$undef"; set d_ftime; eval $setvar
14016 case "$d_gettimeod$d_ftime" in
14019 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
14023 : see if gmtime_r exists
14024 set gmtime_r d_gmtime_r
14026 case "$d_gmtime_r" in
14028 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14029 case "$d_gmtime_r_proto:$usethreads" in
14030 ":define") d_gmtime_r_proto=define
14031 set d_gmtime_r_proto gmtime_r $hdrs
14035 case "$d_gmtime_r_proto" in
14037 case "$gmtime_r_proto" in
14038 ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
14039 ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
14041 case "$gmtime_r_proto" in
14042 ''|0) try='int gmtime_r(const time_t*, struct tm*);'
14043 ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
14045 case "$gmtime_r_proto" in
14046 ''|0) d_gmtime_r=undef
14048 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
14049 * ) case "$gmtime_r_proto" in
14050 REENTRANT_PROTO*) ;;
14051 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
14053 echo "Prototype: $try" ;;
14056 *) case "$usethreads" in
14057 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
14064 *) gmtime_r_proto=0
14068 : see if hasmntopt exists
14069 set hasmntopt d_hasmntopt
14072 : see if this is a netinet/in.h or sys/in.h system
14073 set netinet/in.h i_niin sys/in.h i_sysin
14076 : see if arpa/inet.h has to be included
14077 set arpa/inet.h i_arpainet
14080 : see if htonl --and friends-- exists
14085 : Maybe they are macros.
14088 $cat >htonl.c <<EOM
14090 #include <sys/types.h>
14091 #$i_niin I_NETINET_IN
14093 #$i_arpainet I_ARPA_INET
14094 #ifdef I_NETINET_IN
14095 #include <netinet/in.h>
14098 #include <sys/in.h>
14101 #include <arpa/inet.h>
14104 printf("Defined as a macro.");
14107 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
14108 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
14110 echo "But it seems to be defined as a macro." >&4
14118 : see if ilogbl exists
14119 set ilogbl d_ilogbl
14124 if set index val -f; eval $csym; $val; then
14125 if set strchr val -f d_strchr; eval $csym; $val; then
14126 if $contains strchr "$strings" >/dev/null 2>&1 ; then
14129 echo "strchr() found." >&4
14133 echo "index() found." >&4
14138 echo "index() found." >&4
14141 if set strchr val -f d_strchr; eval $csym; $val; then
14144 echo "strchr() found." >&4
14146 echo "No index() or strchr() found!" >&4
14151 set d_strchr; eval $setvar
14153 set d_index; eval $setvar
14155 : check whether inet_aton exists
14156 set inet_aton d_inetaton
14161 $cat >isascii.c <<EOCP
14164 #$i_stdlib I_STDLIB
14166 #include <stdlib.h>
14177 if eval $compile; then
14178 echo "isascii() found." >&4
14181 echo "isascii() NOT found." >&4
14188 : see if isfinite exists
14189 set isfinite d_isfinite
14192 : see if isinf exists
14196 : see if isnan exists
14200 : see if isnanl exists
14201 set isnanl d_isnanl
14204 : see if killpg exists
14205 set killpg d_killpg
14208 : see if lchown exists
14210 $cat > try.c <<'EOCP'
14211 /* System header to define __stub macros and hopefully few prototypes,
14212 which can conflict with char lchown(); below. */
14213 #include <assert.h>
14214 /* Override any gcc2 internal prototype to avoid an error. */
14215 /* We use char because int might match the return type of a gcc2
14216 builtin and then its argument prototype would still apply. */
14219 /* The GNU C library defines this for functions which it implements
14220 to always fail with ENOSYS. Some functions are actually named
14221 something starting with __ and the normal name is an alias. */
14222 #if defined (__stub_lchown) || defined (__stub___lchown)
14230 if eval $compile; then
14231 $echo "lchown() found." >&4
14234 $echo "lchown() NOT found." >&4
14240 : See if number of significant digits in a double precision number is known
14242 $cat >ldbl_dig.c <<EOM
14243 #$i_limits I_LIMITS
14246 #include <limits.h>
14252 printf("Contains LDBL_DIG");
14255 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
14256 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
14257 echo "LDBL_DIG found." >&4
14260 echo "LDBL_DIG NOT found." >&4
14267 : see if this is a math.h system
14271 d_libm_lib_version="$undef"
14274 : check to see if math.h defines _LIB_VERSION
14276 echo "Checking to see if your libm supports _LIB_VERSION..." >&4
14278 #include <unistd.h>
14280 int main (int argc, char *argv[])
14282 printf ("%d\n", _LIB_VERSION);
14287 if eval $compile; then
14289 echo "Yes, it does ($foo)" >&4
14290 d_libm_lib_version="$define"
14292 echo "No, it does not (probably harmless)\n" >&4
14294 $rm -f try.* try core core.try.*
14299 : see if link exists
14303 : see if localtime_r exists
14304 set localtime_r d_localtime_r
14306 case "$d_localtime_r" in
14308 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14309 case "$d_localtime_r_proto:$usethreads" in
14310 ":define") d_localtime_r_proto=define
14311 set d_localtime_r_proto localtime_r $hdrs
14315 case "$d_localtime_r_proto" in
14317 case "$localtime_r_proto" in
14318 ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14319 ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14321 case "$localtime_r_proto" in
14322 ''|0) try='int localtime_r(const time_t*, struct tm*);'
14323 ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14325 case "$localtime_r_proto" in
14326 ''|0) d_localtime_r=undef
14327 localtime_r_proto=0
14328 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14329 * ) case "$localtime_r_proto" in
14330 REENTRANT_PROTO*) ;;
14331 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14333 echo "Prototype: $try" ;;
14336 *) case "$usethreads" in
14337 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14339 d_localtime_r=undef
14340 localtime_r_proto=0
14344 *) localtime_r_proto=0
14348 : see if localeconv exists
14349 set localeconv d_locconv
14352 : see if lockf exists
14356 : see if prototype for lseek is available
14358 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14361 : see if lstat exists
14365 : see if madvise exists
14366 set madvise d_madvise
14369 : see if malloc_size exists
14370 set malloc_size d_malloc_size
14373 : see if malloc_size_good exists
14374 set malloc_good_size d_malloc_good_size
14377 : see if mblen exists
14381 : see if mbstowcs exists
14382 set mbstowcs d_mbstowcs
14385 : see if mbtowc exists
14386 set mbtowc d_mbtowc
14389 : see if memchr exists
14390 set memchr d_memchr
14393 : see if memcmp exists
14394 set memcmp d_memcmp
14397 : see if memcpy exists
14398 set memcpy d_memcpy
14401 : see if memmove exists
14402 set memmove d_memmove
14405 : see if memset exists
14406 set memset d_memset
14409 : see if mkdir exists
14413 : see if mkdtemp exists
14414 set mkdtemp d_mkdtemp
14417 : see if mkfifo exists
14418 set mkfifo d_mkfifo
14421 : see if mkstemp exists
14422 set mkstemp d_mkstemp
14425 : see if mkstemps exists
14426 set mkstemps d_mkstemps
14429 : see if mktime exists
14430 set mktime d_mktime
14433 : see if this is a sys/mman.h system
14434 set sys/mman.h i_sysmman
14437 : see if mmap exists
14440 : see what shmat returns
14441 : default to something harmless
14443 case "$i_sysmman$d_mmap" in
14445 $cat >mmap.c <<'END'
14446 #include <sys/mman.h>
14449 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14454 echo "and it returns ($mmaptype)." >&4
14460 : see if sqrtl exists
14464 : see if scalbnl exists
14465 set scalbnl d_scalbnl
14468 : see if modfl exists
14472 : see if prototype for modfl is available
14474 set d_modflproto modfl $i_math math.h
14477 d_modfl_pow32_bug="$undef"
14479 case "$d_longdbl$d_modfl" in
14482 Checking to see whether your modfl() is okay for large values...
14488 if $test "X$d_modflproto" != "X$define"; then
14489 $cat >>try.c <<EOCP
14490 /* Sigh. many current glibcs provide the function, but do not prototype it. */
14491 long double modfl (long double, long double *);
14494 $cat >>try.c <<EOCP
14496 long double nv = 4294967303.15;
14502 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14506 case "$osname:$gccversion" in
14507 aix:) saveccflags="$ccflags"
14508 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14511 if eval $compile; then
14514 *" 4294967303.150000 1.150000 4294967302.000000")
14515 echo >&4 "Your modfl() is broken for large values."
14516 d_modfl_pow32_bug="$define"
14518 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14522 *" 4294967303.150000 0.150000 4294967303.000000")
14523 echo >&4 "Your modfl() seems okay for large values."
14525 *) echo >&4 "I don't understand your modfl() at all."
14529 $rm -f try.* try core core.try.*
14531 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14534 case "$osname:$gccversion" in
14535 aix:) ccflags="$saveccflags" ;; # restore
14540 if $test "$uselongdouble" = "$define"; then
14542 if $test "$d_sqrtl" != "$define"; then
14543 message="$message sqrtl"
14545 if $test "$d_modfl" != "$define"; then
14546 if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14547 echo "You have both aintl and copysignl, so I can emulate modfl."
14549 message="$message modfl"
14552 if $test "$d_frexpl" != "$define"; then
14553 if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14554 echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14556 message="$message frexpl"
14560 if $test "$message" != ""; then
14563 *** You requested the use of long doubles but you do not seem to have
14564 *** the following mathematical functions needed for long double support:
14566 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14567 *** Cannot continue, aborting.
14575 : see if mprotect exists
14576 set mprotect d_mprotect
14579 : see if msgctl exists
14580 set msgctl d_msgctl
14583 : see if msgget exists
14584 set msgget d_msgget
14587 : see if msgsnd exists
14588 set msgsnd d_msgsnd
14591 : see if msgrcv exists
14592 set msgrcv d_msgrcv
14595 : see how much of the 'msg*(2)' library is present.
14598 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14599 *"$undef"*) h_msg=false;;
14603 case "`ipcs 2>&1`" in
14604 "SVID messages"*"not configured"*)
14605 echo "Your $osname does not have the msg*(2) configured." >&4
14608 set msgctl d_msgctl
14610 set msgget d_msgget
14612 set msgsnd d_msgsnd
14614 set msgrcv d_msgrcv
14620 : we could also check for sys/ipc.h ...
14621 if $h_msg && $test `./findhdr sys/msg.h`; then
14622 echo "You have the full msg*(2) library." >&4
14625 echo "You don't have the full msg*(2) library." >&4
14633 echo "Checking to see if your system supports struct msghdr..." >&4
14634 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14636 case "$d_msghdr_s" in
14637 "$define") echo "Yes, it does." ;;
14638 *) echo "No, it doesn't." ;;
14642 : see if msync exists
14646 : see if munmap exists
14647 set munmap d_munmap
14650 : see if nice exists
14654 : see if this is a langinfo.h system
14655 set langinfo.h i_langinfo
14658 : see if nl_langinfo exists
14659 set nl_langinfo d_nl_langinfo
14662 : check for length of character
14664 case "$charsize" in
14666 echo "Checking to see how big your characters are (hey, you never know)..." >&4
14669 #$i_stdlib I_STDLIB
14671 #include <stdlib.h>
14675 printf("%d\n", (int)sizeof(char));
14680 if eval $compile_ok; then
14684 echo "(I can't seem to compile the test program. Guessing...)"
14691 rp="What is the size of a character (in bytes)?"
14696 : check for volatile keyword
14698 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14699 $cat >try.c <<'EOCP'
14702 typedef struct _goo_struct goo_struct;
14703 goo_struct * volatile goo = ((goo_struct *)0);
14704 struct _goo_struct {
14709 typedef unsigned short foo_t;
14710 char *volatile foo;
14712 volatile foo_t blech;
14716 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14718 echo "Yup, it does."
14721 echo "Nope, it doesn't."
14729 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14731 case "$use64bitint:$d_quad:$quadtype" in
14734 uvtype="$uquadtype"
14739 uvtype="unsigned long"
14745 case "$uselongdouble:$d_longdbl" in
14747 nvtype="long double"
14748 nvsize=$longdblsize
14755 $echo "(IV will be "$ivtype", $ivsize bytes)"
14756 $echo "(UV will be "$uvtype", $uvsize bytes)"
14757 $echo "(NV will be "$nvtype", $nvsize bytes)"
14760 #$i_inttypes I_INTTYPES
14762 #include <inttypes.h>
14767 int8_t i = INT8_MAX;
14768 uint8_t u = UINT8_MAX;
14769 printf("int8_t\n");
14772 int16_t i = INT16_MAX;
14773 uint16_t i = UINT16_MAX;
14774 printf("int16_t\n");
14777 int32_t i = INT32_MAX;
14778 uint32_t u = UINT32_MAX;
14779 printf("int32_t\n");
14785 '') case "$charsize" in
14787 u8type="unsigned char"
14796 if eval $compile; then
14797 case "`$run ./try`" in
14798 int8_t) i8type=int8_t
14808 '') if $test $charsize -ge 1; then
14810 u8type="unsigned char"
14818 '') case "$shortsize" in
14820 u16type="unsigned short"
14828 '') set try -DINT16
14829 if eval $compile; then
14830 case "`$run ./try`" in
14842 '') if $test $shortsize -ge 2; then
14844 u16type="unsigned short"
14852 '') case "$longsize" in
14854 u32type="unsigned long"
14858 *) case "$intsize" in
14860 u32type="unsigned int"
14870 '') set try -DINT32
14871 if eval $compile; then
14872 case "`$run ./try`" in
14884 '') if $test $intsize -ge 4; then
14886 u32type="unsigned int"
14894 '') case "$d_quad:$quadtype" in
14896 i64type="$quadtype"
14897 u64type="$uquadtype"
14905 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14906 : volatile so that the compiler has to store it out to memory.
14907 if test X"$d_volatile" = X"$define"; then
14912 #$i_stdlib I_STDLIB
14914 #include <stdlib.h>
14916 #include <sys/types.h>
14917 #include <signal.h>
14919 $volatile int bletched = 0;
14920 $signal_t blech(s) int s; { bletched = 1; }
14925 int n = 8 * $uvsize;
14928 signal(SIGFPE, blech);
14931 for (i = 0; i < n; i++) {
14932 u = u << 1 | ($uvtype)1;
14934 if (($uvtype)d != u)
14938 d = ($nvtype)(u - 1);
14939 if (($uvtype)d != (u - 1))
14947 printf("%d\n", ((i == n) ? -n : i));
14953 d_nv_preserves_uv="$undef"
14954 if eval $compile; then
14955 nv_preserves_uv_bits="`$run ./try`"
14957 case "$nv_preserves_uv_bits" in
14959 nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14960 $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs." 2>&1
14961 d_nv_preserves_uv="$define"
14963 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs." 2>&1
14964 d_nv_preserves_uv="$undef" ;;
14965 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
14966 nv_preserves_uv_bits="$undef" ;;
14971 $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
14972 : volatile so that the compiler has to store it out to memory.
14973 if test X"$d_volatile" = X"$define"; then
14978 #$i_stdlib I_STDLIB
14980 #include <stdlib.h>
14982 #$i_string I_STRING
14984 # include <string.h>
14986 # include <strings.h>
14988 #include <sys/types.h>
14989 #include <signal.h>
14991 $volatile int bletched = 0;
14992 $signal_t blech(s) int s; { bletched = 1; }
14995 int checkit($nvtype d, char *where) {
14996 unsigned char *p = (char *)&d;
14997 unsigned char *end = p + sizeof(d);
15007 printf("No - %s: 0x", where);
15009 printf ("%02X", *p++);
15014 int main(int argc, char **argv) {
15017 fail += checkit(d, "0.0");
15019 /* The compiler shouldn't be assuming that bletched is 0 */
15022 fail += checkit(d, "bleched");
15025 signal(SIGFPE, blech);
15028 /* Paranoia - the compiler should have no way of knowing that ANSI says
15029 that argv[argc] will always be NULL. Actually, if it did assume this it
15030 would be buggy, as this is C and main() can be called from elsewhere in
15032 d = argv[argc] ? 1 : 0;
15035 printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d);
15038 fail += checkit(d, "ternary");
15040 memset(&d, sizeof(d), argv[argc] ? 1 : 0);
15043 printf("No - memset doesn't give 0.0\n");
15044 /* This might just blow up: */
15045 printf("(gives %g)\n", d);
15051 printf("No - something bleched\n");
15056 printf("No - %d fail(s)\n", fail);
15065 d_nv_zero_is_allbits_zero="$undef"
15066 if eval $compile; then
15072 0.0 is represented as all bits zero in memory
15074 d_nv_zero_is_allbits_zero="$define"
15077 0.0 is not represented as all bits zero in memory
15079 d_nv_zero_is_allbits_zero="$undef"
15084 0.0 is not represented as all bits zero in memory
15086 d_nv_zero_is_allbits_zero="$undef"
15094 : check for off64_t
15096 echo "Checking to see if you have off64_t..." >&4
15098 #include <sys/types.h>
15099 #include <unistd.h>
15100 int main() { off64_t x = 7; }
15103 if eval $compile; then
15105 echo "You have off64_t."
15108 echo "You do not have off64_t."
15109 case "$lseeksize" in
15110 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
15117 : how to create joinable pthreads
15118 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
15120 echo "Checking what constant to use for creating joinable pthreads..." >&4
15121 $cat >try.c <<'EOCP'
15122 #include <pthread.h>
15124 int detachstate = JOINABLE;
15127 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
15128 if eval $compile; then
15129 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
15130 val="$undef" # Yes, undef.
15131 set d_old_pthread_create_joinable
15134 set old_pthread_create_joinable
15137 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
15138 if eval $compile; then
15139 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
15141 set d_old_pthread_create_joinable
15143 val=PTHREAD_CREATE_UNDETACHED
15144 set old_pthread_create_joinable
15147 set try -DJOINABLE=__UNDETACHED
15148 if eval $compile; then
15149 echo "You seem to use __UNDETACHED." >&4
15151 set d_old_pthread_create_joinable
15154 set old_pthread_create_joinable
15157 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
15159 set d_old_pthread_create_joinable
15162 set old_pthread_create_joinable
15169 d_old_pthread_create_joinable="$undef"
15170 old_pthread_create_joinable=""
15173 : see if pause exists
15177 : see if pipe exists
15181 : see if poll exists
15185 : see if readlink exists
15186 set readlink d_readlink
15192 case "$d_readlink" in
15194 if $issymlink /proc/self/exe ; then
15195 $ls -l /proc/self/exe > reflect
15196 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15197 echo "You have Linux-like /proc/self/exe."
15198 procselfexe='"/proc/self/exe"'
15202 if $issymlink /proc/curproc/file ; then
15203 $ls -l /proc/curproc/file > reflect
15204 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15205 echo "You have BSD-like /proc/curproc/file."
15206 procselfexe='"/proc/curproc/file"'
15216 : see whether the pthread_atfork exists
15218 #include <pthread.h>
15221 #ifdef PTHREAD_ATFORK
15222 pthread_atfork(NULL,NULL,NULL);
15227 : see if pthread_atfork exists
15228 set try -DPTHREAD_ATFORK
15229 if eval $compile; then
15234 case "$usethreads" in
15237 $define) echo 'pthread_atfork found.' >&4 ;;
15238 *) echo 'pthread_atfork NOT found.' >&4 ;;
15241 set d_pthread_atfork
15244 : see if pthread_attr_setscope exists
15245 set pthread_attr_setscope d_pthread_attr_setscope
15249 : see whether the various POSIXish _yields exist
15251 #include <pthread.h>
15257 #ifdef PTHREAD_YIELD
15260 #ifdef PTHREAD_YIELD_NULL
15261 pthread_yield(NULL);
15267 : see if sched_yield exists
15268 set try -DSCHED_YIELD
15269 if eval $compile; then
15271 sched_yield='sched_yield()'
15275 case "$usethreads" in
15278 $define) echo 'sched_yield() found.' >&4 ;;
15279 *) echo 'sched_yield() NOT found.' >&4 ;;
15285 : see if pthread_yield exists
15286 set try -DPTHREAD_YIELD
15287 if eval $compile; then
15289 case "$sched_yield" in
15290 '') sched_yield='pthread_yield()' ;;
15293 set try -DPTHREAD_YIELD_NULL
15294 if eval $compile; then
15296 case "$sched_yield" in
15297 '') sched_yield='pthread_yield(NULL)' ;;
15303 case "$usethreads" in
15306 $define) echo 'pthread_yield() found.' >&4 ;;
15307 *) echo 'pthread_yield() NOT found.' >&4 ;;
15311 set d_pthread_yield
15314 case "$sched_yield" in
15315 '') sched_yield=undef ;;
15320 : see if random_r exists
15321 set random_r d_random_r
15323 case "$d_random_r" in
15325 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15326 case "$d_random_r_proto:$usethreads" in
15327 ":define") d_random_r_proto=define
15328 set d_random_r_proto random_r $hdrs
15332 case "$d_random_r_proto" in
15334 case "$random_r_proto" in
15335 ''|0) try='int random_r(int*, struct random_data*);'
15336 ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
15338 case "$random_r_proto" in
15339 ''|0) try='int random_r(long*, struct random_data*);'
15340 ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
15342 case "$random_r_proto" in
15343 ''|0) try='int random_r(struct random_data*, int32_t*);'
15344 ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
15346 case "$random_r_proto" in
15347 ''|0) d_random_r=undef
15349 echo "Disabling random_r, cannot determine prototype." >&4 ;;
15350 * ) case "$random_r_proto" in
15351 REENTRANT_PROTO*) ;;
15352 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
15354 echo "Prototype: $try" ;;
15357 *) case "$usethreads" in
15358 define) echo "random_r has no prototype, not using it." >&4 ;;
15365 *) random_r_proto=0
15369 : see if readdir and friends exist
15370 set readdir d_readdir
15372 set seekdir d_seekdir
15374 set telldir d_telldir
15376 set rewinddir d_rewinddir
15379 : see if readdir64_r exists
15380 set readdir64_r d_readdir64_r
15382 case "$d_readdir64_r" in
15384 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15385 case "$d_readdir64_r_proto:$usethreads" in
15386 ":define") d_readdir64_r_proto=define
15387 set d_readdir64_r_proto readdir64_r $hdrs
15391 case "$d_readdir64_r_proto" in
15393 case "$readdir64_r_proto" in
15394 ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
15395 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
15397 case "$readdir64_r_proto" in
15398 ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
15399 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
15401 case "$readdir64_r_proto" in
15402 ''|0) d_readdir64_r=undef
15403 readdir64_r_proto=0
15404 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
15405 * ) case "$readdir64_r_proto" in
15406 REENTRANT_PROTO*) ;;
15407 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
15409 echo "Prototype: $try" ;;
15412 *) case "$usethreads" in
15413 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
15415 d_readdir64_r=undef
15416 readdir64_r_proto=0
15420 *) readdir64_r_proto=0
15424 : see if readdir_r exists
15425 set readdir_r d_readdir_r
15427 case "$d_readdir_r" in
15429 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15430 case "$d_readdir_r_proto:$usethreads" in
15431 ":define") d_readdir_r_proto=define
15432 set d_readdir_r_proto readdir_r $hdrs
15436 case "$d_readdir_r_proto" in
15438 case "$readdir_r_proto" in
15439 ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
15440 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
15442 case "$readdir_r_proto" in
15443 ''|0) try='int readdir_r(DIR*, struct dirent*);'
15444 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
15446 case "$readdir_r_proto" in
15447 ''|0) d_readdir_r=undef
15449 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
15450 * ) case "$readdir_r_proto" in
15451 REENTRANT_PROTO*) ;;
15452 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
15454 echo "Prototype: $try" ;;
15457 *) case "$usethreads" in
15458 define) echo "readdir_r has no prototype, not using it." >&4 ;;
15465 *) readdir_r_proto=0
15469 : see if readv exists
15473 : see if recvmsg exists
15474 set recvmsg d_recvmsg
15477 : see if rename exists
15478 set rename d_rename
15481 : see if rmdir exists
15485 : see if memory.h is available.
15490 : See if it conflicts with string.h
15496 $cppstdin $cppflags $cppminus < $strings > mem.h
15497 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15499 echo "We won't be including <memory.h>."
15509 : can bcopy handle overlapping blocks?
15512 case "$d_memmove" in
15513 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15514 *) case "$d_bcopy" in
15516 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15518 #$i_memory I_MEMORY
15519 #$i_stdlib I_STDLIB
15520 #$i_string I_STRING
15521 #$i_unistd I_UNISTD
15523 $cat >>try.c <<'EOCP'
15526 # include <memory.h>
15529 # include <stdlib.h>
15532 # include <string.h>
15534 # include <strings.h>
15537 # include <unistd.h> /* Needed for NetBSD */
15541 char buf[128], abc[128];
15547 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15548 try to store the string in read-only memory. */
15549 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15551 for (align = 7; align >= 0; align--) {
15552 for (len = 36; len; len--) {
15554 bcopy(abc, b, len);
15555 for (off = 1; off <= len; off++) {
15556 bcopy(b, b+off, len);
15557 bcopy(b+off, b, len);
15558 if (bcmp(b, abc, len))
15567 if eval $compile_ok; then
15568 if ./try 2>/dev/null; then
15569 echo "Yes, it can."
15572 echo "It can't, sorry."
15575 echo "(I can't compile the test program, so we'll assume not...)"
15579 $rm -f try.* try core
15585 : can memcpy handle overlapping blocks?
15588 case "$d_memmove" in
15589 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15590 *) case "$d_memcpy" in
15592 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15594 #$i_memory I_MEMORY
15595 #$i_stdlib I_STDLIB
15596 #$i_string I_STRING
15597 #$i_unistd I_UNISTD
15599 $cat >>try.c <<'EOCP'
15602 # include <memory.h>
15605 # include <stdlib.h>
15608 # include <string.h>
15610 # include <strings.h>
15613 # include <unistd.h> /* Needed for NetBSD */
15617 char buf[128], abc[128];
15623 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15624 try to store the string in read-only memory. */
15625 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15627 for (align = 7; align >= 0; align--) {
15628 for (len = 36; len; len--) {
15630 memcpy(b, abc, len);
15631 for (off = 1; off <= len; off++) {
15632 memcpy(b+off, b, len);
15633 memcpy(b, b+off, len);
15634 if (memcmp(b, abc, len))
15643 if eval $compile_ok; then
15644 if ./try 2>/dev/null; then
15645 echo "Yes, it can."
15648 echo "It can't, sorry."
15651 echo "(I can't compile the test program, so we'll assume not...)"
15655 $rm -f try.* try core
15661 : can memcmp be trusted to compare relative magnitude?
15663 case "$d_memcmp" in
15666 echo "Checking if your memcmp() can compare relative magnitude..." >&4
15668 #$i_memory I_MEMORY
15669 #$i_stdlib I_STDLIB
15670 #$i_string I_STRING
15671 #$i_unistd I_UNISTD
15673 $cat >>try.c <<'EOCP'
15676 # include <memory.h>
15679 # include <stdlib.h>
15682 # include <string.h>
15684 # include <strings.h>
15687 # include <unistd.h> /* Needed for NetBSD */
15693 if ((a < b) && memcmp(&a, &b, 1) < 0)
15699 if eval $compile_ok; then
15700 if $run ./try 2>/dev/null; then
15701 echo "Yes, it can."
15704 echo "No, it can't (it uses signed chars)."
15707 echo "(I can't compile the test program, so we'll assume not...)"
15711 $rm -f try.* try core
15715 : see if prototype for sbrk is available
15717 set d_sbrkproto sbrk $i_unistd unistd.h
15720 : see if select exists
15721 set select d_select
15724 : see if semctl exists
15725 set semctl d_semctl
15728 : see if semget exists
15729 set semget d_semget
15732 : see if semop exists
15736 : see how much of the 'sem*(2)' library is present.
15739 case "$d_semctl$d_semget$d_semop" in
15740 *"$undef"*) h_sem=false;;
15744 case "`ipcs 2>&1`" in
15745 "SVID messages"*"not configured"*)
15746 echo "Your $osname does not have the sem*(2) configured." >&4
15749 set semctl d_semctl
15751 set semget d_semget
15759 : we could also check for sys/ipc.h ...
15760 if $h_sem && $test `./findhdr sys/sem.h`; then
15761 echo "You have the full sem*(2) library." >&4
15764 echo "You don't have the full sem*(2) library." >&4
15770 : see whether sys/sem.h defines union semun
15772 $cat > try.c <<'END'
15773 #include <sys/types.h>
15774 #include <sys/ipc.h>
15775 #include <sys/sem.h>
15776 int main () { union semun semun; semun.buf = 0; }
15779 if eval $compile; then
15780 echo "You have union semun in <sys/sem.h>." >&4
15783 echo "You do not have union semun in <sys/sem.h>." >&4
15790 : see how to do semctl IPC_STAT
15797 # define S_IRUSR S_IREAD
15798 # define S_IWUSR S_IWRITE
15799 # define S_IXUSR S_IEXEC
15801 # define S_IRUSR 0400
15802 # define S_IWUSR 0200
15803 # define S_IXUSR 0100
15805 # define S_IRGRP (S_IRUSR>>3)
15806 # define S_IWGRP (S_IWUSR>>3)
15807 # define S_IXGRP (S_IXUSR>>3)
15808 # define S_IROTH (S_IRUSR>>6)
15809 # define S_IWOTH (S_IWUSR>>6)
15810 # define S_IXOTH (S_IXUSR>>6)
15813 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15814 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15815 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15818 : see whether semctl IPC_STAT can use union semun
15819 case "$d_semctl_semun" in
15823 #include <sys/types.h>
15824 #include <sys/ipc.h>
15825 #include <sys/sem.h>
15826 #include <sys/stat.h>
15833 #$d_union_semun HAS_UNION_SEMUN
15836 #ifndef HAS_UNION_SEMUN
15839 struct semid_ds *buf;
15840 unsigned short *array;
15846 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15847 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15849 struct semid_ds argbuf;
15852 st = semctl(sem, 0, IPC_STAT, arg);
15856 # endif /* IPC_STAT */
15857 printf("semctl IPC_STAT failed: errno = %d\n", errno);
15859 if (semctl(sem, 0, IPC_RMID, arg) != 0)
15860 # endif /* IPC_RMID */
15861 printf("semctl IPC_RMID failed: errno = %d\n", errno);
15863 #endif /* IPC_PRIVATE && ... */
15864 printf("semget failed: errno = %d\n", errno);
15869 if eval $compile; then
15872 semun) val="$define" ;;
15880 case "$d_semctl_semun" in
15882 echo "You can use union semun for semctl IPC_STAT." >&4
15885 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
15890 : see whether semctl IPC_STAT can use struct semid_ds pointer
15891 case "$d_semctl_semid_ds" in
15894 $cat > try.c <<'END'
15895 #include <sys/types.h>
15896 #include <sys/ipc.h>
15897 #include <sys/sem.h>
15898 #include <sys/stat.h>
15906 struct semid_ds arg;
15909 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15910 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15913 st = semctl(sem, 0, IPC_STAT, &arg);
15915 printf("semid_ds\n");
15917 # endif /* IPC_STAT */
15918 printf("semctl IPC_STAT failed: errno = %d\n", errno);
15920 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15921 # endif /* IPC_RMID */
15922 printf("semctl IPC_RMID failed: errno = %d\n", errno);
15924 #endif /* IPC_PRIVATE && ... */
15925 printf("semget failed: errno = %d\n", errno);
15931 if eval $compile; then
15934 semid_ds) val="$define" ;;
15938 set d_semctl_semid_ds
15942 case "$d_semctl_semid_ds" in
15944 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15946 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15953 # We do not have the full sem*(2) library, so assume we can not
15959 set d_semctl_semid_ds
15964 : see if sendmsg exists
15965 set sendmsg d_sendmsg
15968 : see if setegid exists
15969 set setegid d_setegid
15972 : see if seteuid exists
15973 set seteuid d_seteuid
15976 : see if setgrent exists
15977 set setgrent d_setgrent
15980 : see if setgrent_r exists
15981 set setgrent_r d_setgrent_r
15983 case "$d_setgrent_r" in
15985 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15986 case "$d_setgrent_r_proto:$usethreads" in
15987 ":define") d_setgrent_r_proto=define
15988 set d_setgrent_r_proto setgrent_r $hdrs
15992 case "$d_setgrent_r_proto" in
15994 case "$setgrent_r_proto" in
15995 ''|0) try='int setgrent_r(FILE**);'
15996 ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15998 case "$setgrent_r_proto" in
15999 ''|0) try='void setgrent_r(FILE**);'
16000 ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
16002 case "$setgrent_r_proto" in
16003 ''|0) d_setgrent_r=undef
16005 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
16006 * ) case "$setgrent_r_proto" in
16007 REENTRANT_PROTO*) ;;
16008 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
16010 echo "Prototype: $try" ;;
16013 *) case "$usethreads" in
16014 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
16021 *) setgrent_r_proto=0
16025 : see if sethostent exists
16026 set sethostent d_sethent
16029 : see if sethostent_r exists
16030 set sethostent_r d_sethostent_r
16032 case "$d_sethostent_r" in
16034 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16035 case "$d_sethostent_r_proto:$usethreads" in
16036 ":define") d_sethostent_r_proto=define
16037 set d_sethostent_r_proto sethostent_r $hdrs
16041 case "$d_sethostent_r_proto" in
16043 case "$sethostent_r_proto" in
16044 ''|0) try='int sethostent_r(int, struct hostent_data*);'
16045 ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
16047 case "$sethostent_r_proto" in
16048 ''|0) try='void sethostent_r(int, struct hostent_data*);'
16049 ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
16051 case "$sethostent_r_proto" in
16052 ''|0) d_sethostent_r=undef
16053 sethostent_r_proto=0
16054 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
16055 * ) case "$sethostent_r_proto" in
16056 REENTRANT_PROTO*) ;;
16057 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
16059 echo "Prototype: $try" ;;
16062 *) case "$usethreads" in
16063 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
16065 d_sethostent_r=undef
16066 sethostent_r_proto=0
16070 *) sethostent_r_proto=0
16074 : see if setitimer exists
16075 set setitimer d_setitimer
16078 : see if setlinebuf exists
16079 set setlinebuf d_setlinebuf
16082 : see if setlocale exists
16083 set setlocale d_setlocale
16086 : see if locale.h is available
16087 set locale.h i_locale
16090 : see if setlocale_r exists
16091 set setlocale_r d_setlocale_r
16093 case "$d_setlocale_r" in
16095 hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
16096 case "$d_setlocale_r_proto:$usethreads" in
16097 ":define") d_setlocale_r_proto=define
16098 set d_setlocale_r_proto setlocale_r $hdrs
16102 case "$d_setlocale_r_proto" in
16104 case "$setlocale_r_proto" in
16105 ''|0) try='int setlocale_r(int, const char*, char*, int);'
16106 ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
16108 case "$setlocale_r_proto" in
16109 ''|0) d_setlocale_r=undef
16110 setlocale_r_proto=0
16111 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
16112 * ) case "$setlocale_r_proto" in
16113 REENTRANT_PROTO*) ;;
16114 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
16116 echo "Prototype: $try" ;;
16119 *) case "$usethreads" in
16120 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
16122 d_setlocale_r=undef
16123 setlocale_r_proto=0
16127 *) setlocale_r_proto=0
16131 : see if setnetent exists
16132 set setnetent d_setnent
16135 : see if setnetent_r exists
16136 set setnetent_r d_setnetent_r
16138 case "$d_setnetent_r" in
16140 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16141 case "$d_setnetent_r_proto:$usethreads" in
16142 ":define") d_setnetent_r_proto=define
16143 set d_setnetent_r_proto setnetent_r $hdrs
16147 case "$d_setnetent_r_proto" in
16149 case "$setnetent_r_proto" in
16150 ''|0) try='int setnetent_r(int, struct netent_data*);'
16151 ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
16153 case "$setnetent_r_proto" in
16154 ''|0) try='void setnetent_r(int, struct netent_data*);'
16155 ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
16157 case "$setnetent_r_proto" in
16158 ''|0) d_setnetent_r=undef
16159 setnetent_r_proto=0
16160 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
16161 * ) case "$setnetent_r_proto" in
16162 REENTRANT_PROTO*) ;;
16163 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
16165 echo "Prototype: $try" ;;
16168 *) case "$usethreads" in
16169 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
16171 d_setnetent_r=undef
16172 setnetent_r_proto=0
16176 *) setnetent_r_proto=0
16180 : see if setprotoent exists
16181 set setprotoent d_setpent
16184 : see if setpgid exists
16185 set setpgid d_setpgid
16188 : see if setpgrp2 exists
16189 set setpgrp2 d_setpgrp2
16192 : see if setpriority exists
16193 set setpriority d_setprior
16196 : see if setproctitle exists
16197 set setproctitle d_setproctitle
16200 : see if setprotoent_r exists
16201 set setprotoent_r d_setprotoent_r
16203 case "$d_setprotoent_r" in
16205 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16206 case "$d_setprotoent_r_proto:$usethreads" in
16207 ":define") d_setprotoent_r_proto=define
16208 set d_setprotoent_r_proto setprotoent_r $hdrs
16212 case "$d_setprotoent_r_proto" in
16214 case "$setprotoent_r_proto" in
16215 ''|0) try='int setprotoent_r(int, struct protoent_data*);'
16216 ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
16218 case "$setprotoent_r_proto" in
16219 ''|0) try='void setprotoent_r(int, struct protoent_data*);'
16220 ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
16222 case "$setprotoent_r_proto" in
16223 ''|0) d_setprotoent_r=undef
16224 setprotoent_r_proto=0
16225 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
16226 * ) case "$setprotoent_r_proto" in
16227 REENTRANT_PROTO*) ;;
16228 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
16230 echo "Prototype: $try" ;;
16233 *) case "$usethreads" in
16234 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
16236 d_setprotoent_r=undef
16237 setprotoent_r_proto=0
16241 *) setprotoent_r_proto=0
16245 : see if setpwent exists
16246 set setpwent d_setpwent
16249 : see if setpwent_r exists
16250 set setpwent_r d_setpwent_r
16252 case "$d_setpwent_r" in
16254 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
16255 case "$d_setpwent_r_proto:$usethreads" in
16256 ":define") d_setpwent_r_proto=define
16257 set d_setpwent_r_proto setpwent_r $hdrs
16261 case "$d_setpwent_r_proto" in
16263 case "$setpwent_r_proto" in
16264 ''|0) try='int setpwent_r(FILE**);'
16265 ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
16267 case "$setpwent_r_proto" in
16268 ''|0) try='void setpwent_r(FILE**);'
16269 ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
16271 case "$setpwent_r_proto" in
16272 ''|0) d_setpwent_r=undef
16274 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
16275 * ) case "$setpwent_r_proto" in
16276 REENTRANT_PROTO*) ;;
16277 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
16279 echo "Prototype: $try" ;;
16282 *) case "$usethreads" in
16283 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
16290 *) setpwent_r_proto=0
16294 : see if setregid exists
16295 set setregid d_setregid
16297 set setresgid d_setresgid
16300 : see if setreuid exists
16301 set setreuid d_setreuid
16303 set setresuid d_setresuid
16306 : see if setrgid exists
16307 set setrgid d_setrgid
16310 : see if setruid exists
16311 set setruid d_setruid
16314 : see if setservent exists
16315 set setservent d_setsent
16318 : see if setservent_r exists
16319 set setservent_r d_setservent_r
16321 case "$d_setservent_r" in
16323 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16324 case "$d_setservent_r_proto:$usethreads" in
16325 ":define") d_setservent_r_proto=define
16326 set d_setservent_r_proto setservent_r $hdrs
16330 case "$d_setservent_r_proto" in
16332 case "$setservent_r_proto" in
16333 ''|0) try='int setservent_r(int, struct servent_data*);'
16334 ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
16336 case "$setservent_r_proto" in
16337 ''|0) try='void setservent_r(int, struct servent_data*);'
16338 ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
16340 case "$setservent_r_proto" in
16341 ''|0) d_setservent_r=undef
16342 setservent_r_proto=0
16343 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
16344 * ) case "$setservent_r_proto" in
16345 REENTRANT_PROTO*) ;;
16346 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
16348 echo "Prototype: $try" ;;
16351 *) case "$usethreads" in
16352 define) echo "setservent_r has no prototype, not using it." >&4 ;;
16354 d_setservent_r=undef
16355 setservent_r_proto=0
16359 *) setservent_r_proto=0
16363 : see if setsid exists
16364 set setsid d_setsid
16367 : see if setvbuf exists
16368 set setvbuf d_setvbuf
16371 : see if sfio.h is available
16376 : see if sfio library is available
16387 : Ok, but do we want to use it.
16391 true|$define|[yY]*) dflt='y';;
16394 echo "$package can use the sfio library, but it is experimental."
16395 case "$useperlio" in
16397 echo "For sfio also the PerlIO abstraction layer is needed."
16398 echo "Earlier you said you wouldn't want that."
16401 rp="You seem to have sfio available, do you want to try using it?"
16404 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
16405 useperlio="$define"
16408 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
16413 *) case "$usesfio" in
16414 true|$define|[yY]*)
16415 echo "Sorry, cannot find sfio on this machine." >&4
16416 echo "Ignoring your setting of usesfio=$usesfio." >&4
16425 $define) usesfio='true';;
16426 *) usesfio='false';;
16430 *) : Remove sfio from list of libraries to use
16433 echo "Removing unneeded -lsfio from library list" >&4
16434 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
16437 echo "libs = $libs" >&4
16444 : see if shmctl exists
16445 set shmctl d_shmctl
16448 : see if shmget exists
16449 set shmget d_shmget
16452 : see if shmat exists
16455 : see what shmat returns
16458 $cat >shmat.c <<'END'
16459 #include <sys/shm.h>
16462 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
16467 echo "and it returns ($shmattype)." >&4
16468 : see if a prototype for shmat is available
16469 xxx=`./findhdr sys/shm.h`
16470 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
16471 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
16482 set d_shmatprototype
16485 : see if shmdt exists
16489 : see how much of the 'shm*(2)' library is present.
16492 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
16493 *"$undef"*) h_shm=false;;
16497 case "`ipcs 2>&1`" in
16498 "SVID shared memory"*"not configured"*)
16499 echo "Your $osname does not have the shm*(2) configured." >&4
16502 set shmctl d_shmctl
16504 set shmget d_shmget
16514 : we could also check for sys/ipc.h ...
16515 if $h_shm && $test `./findhdr sys/shm.h`; then
16516 echo "You have the full shm*(2) library." >&4
16519 echo "You don't have the full shm*(2) library." >&4
16526 : see if we have sigaction
16527 if set sigaction val -f d_sigaction; eval $csym; $val; then
16528 echo 'sigaction() found.' >&4
16531 #include <sys/types.h>
16532 #include <signal.h>
16533 #$i_stdlib I_STDLIB
16535 #include <stdlib.h>
16539 struct sigaction act, oact;
16541 oact.sa_handler = 0;
16542 /* so that act and oact are used */
16543 exit(act.sa_flags == 0 && oact.sa_handler == 0);
16547 if eval $compile_ok; then
16550 echo "But you don't seem to have a useable struct sigaction." >&4
16554 echo 'sigaction NOT found.' >&4
16557 set d_sigaction; eval $setvar
16558 $rm -f try try$_o try.c
16560 : see if sigprocmask exists
16561 set sigprocmask d_sigprocmask
16564 : see if sigsetjmp exists
16566 case "$d_sigsetjmp" in
16569 #include <setjmp.h>
16570 #$i_stdlib I_STDLIB
16572 #include <stdlib.h>
16578 if (sigsetjmp(env,1))
16581 siglongjmp(env, 1);
16586 if eval $compile; then
16587 if $run ./try >/dev/null 2>&1; then
16588 echo "POSIX sigsetjmp found." >&4
16592 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16598 echo "sigsetjmp not found." >&4
16602 *) val="$d_sigsetjmp"
16603 case "$d_sigsetjmp" in
16604 $define) echo "POSIX sigsetjmp found." >&4;;
16605 $undef) echo "sigsetjmp not found." >&4;;
16613 : see if snprintf exists
16614 set snprintf d_snprintf
16617 : see if vsnprintf exists
16618 set vsnprintf d_vsnprintf
16621 case "$d_snprintf-$d_vsnprintf" in
16624 Checking whether your snprintf() and vsnprintf() work okay...
16626 $cat >try.c <<'EOCP'
16627 /* v?snprintf testing logic courtesy of Russ Allbery.
16628 * According to C99:
16629 * - if the buffer is too short it still must be \0-terminated
16630 * - if the buffer is too short the potentially required length
16631 * must be returned and not -1
16632 * - if the buffer is NULL the potentially required length
16633 * must be returned and not -1 or core dump
16636 #include <stdarg.h>
16640 int test (char *format, ...)
16645 va_start (args, format);
16646 count = vsnprintf (buf, sizeof buf, format, args);
16653 return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
16654 && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
16658 if eval $compile; then
16661 0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
16663 Your snprintf() and snprintf() don't seem to be working okay.
16665 d_snprintf="$undef"
16666 d_vsnprintf="$undef"
16670 echo "(I can't seem to compile the test program--assuming they don't)"
16671 d_snprintf="$undef"
16672 d_vsnprintf="$undef"
16674 $rm -f try.* try core core.try.*
16678 : see if sockatmark exists
16679 set sockatmark d_sockatmark
16682 : see if prototype for sockatmark is available
16684 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16687 : see if socks5_init exists
16688 set socks5_init d_socks5_init
16691 : see if sprintf returns the length of the string in the buffer as per ANSI
16692 $echo "Checking whether sprintf returns the length of the string..." >&4
16695 #$i_stdlib I_STDLIB
16697 #include <stdlib.h>
16699 #$i_string I_STRING
16701 # include <string.h>
16703 # include <strings.h>
16712 int check (size_t expect, int test) {
16713 size_t got = strlen(buffer);
16717 printf("expected %ld, got %ld in test %d '%s'\n", (long) expect, (long) got,
16722 int main(int argc, char **argv) {
16725 check(sprintf(buffer, ""), ++test);
16726 check(sprintf(buffer, "%s %s", "perl", "rules"), ++test);
16727 check(sprintf(buffer, "I like %g", atan2(0,-1)), ++test);
16734 d_sprintf_returns_strlen="$undef"
16735 if eval $compile; then
16739 sprintf returns the length of the string (as ANSI says it should)
16741 d_sprintf_returns_strlen="$define"
16744 sprintf does not return the length of the string (how old is this system?)
16746 d_sprintf_returns_strlen="$undef"
16753 : see if srand48_r exists
16754 set srand48_r d_srand48_r
16756 case "$d_srand48_r" in
16758 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16759 case "$d_srand48_r_proto:$usethreads" in
16760 ":define") d_srand48_r_proto=define
16761 set d_srand48_r_proto srand48_r $hdrs
16765 case "$d_srand48_r_proto" in
16767 case "$srand48_r_proto" in
16768 ''|0) try='int srand48_r(long, struct drand48_data*);'
16769 ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16771 case "$srand48_r_proto" in
16772 ''|0) d_srand48_r=undef
16774 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16775 * ) case "$srand48_r_proto" in
16776 REENTRANT_PROTO*) ;;
16777 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16779 echo "Prototype: $try" ;;
16782 *) case "$usethreads" in
16783 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16790 *) srand48_r_proto=0
16794 : see if srandom_r exists
16795 set srandom_r d_srandom_r
16797 case "$d_srandom_r" in
16799 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16800 case "$d_srandom_r_proto:$usethreads" in
16801 ":define") d_srandom_r_proto=define
16802 set d_srandom_r_proto srandom_r $hdrs
16806 case "$d_srandom_r_proto" in
16808 case "$srandom_r_proto" in
16809 ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16810 ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16812 case "$srandom_r_proto" in
16813 ''|0) d_srandom_r=undef
16815 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16816 * ) case "$srandom_r_proto" in
16817 REENTRANT_PROTO*) ;;
16818 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16820 echo "Prototype: $try" ;;
16823 *) case "$usethreads" in
16824 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16831 *) srandom_r_proto=0
16835 : see if prototype for setresgid is available
16837 set d_sresgproto setresgid $i_unistd unistd.h
16840 : see if prototype for setresuid is available
16842 set d_sresuproto setresuid $i_unistd unistd.h
16845 : see if sys/stat.h is available
16846 set sys/stat.h i_sysstat
16850 : see if stat knows about block sizes
16852 echo "Checking to see if your struct stat has st_blocks field..." >&4
16853 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16857 : see if this is a sys/vfs.h system
16858 set sys/vfs.h i_sysvfs
16862 : see if this is a sys/statfs.h system
16863 set sys/statfs.h i_sysstatfs
16868 echo "Checking to see if your system supports struct statfs..." >&4
16869 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
16871 case "$d_statfs_s" in
16872 "$define") echo "Yes, it does." ;;
16873 *) echo "No, it doesn't." ;;
16878 : see if struct statfs knows about f_flags
16879 case "$d_statfs_s" in
16882 echo "Checking to see if your struct statfs has f_flags field..." >&4
16883 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
16887 set d_statfs_f_flags
16891 case "$d_statfs_f_flags" in
16892 "$define") echo "Yes, it does." ;;
16893 *) echo "No, it doesn't." ;;
16897 Checking how to access stdio streams by file descriptor number...
16899 case "$stdio_stream_array" in
16900 '') $cat >try.c <<EOCP
16903 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16907 for s in _iob __iob __sF
16909 set try -DSTDIO_STREAM_ARRAY=$s
16910 if eval $compile; then
16911 case "`$run ./try`" in
16912 yes) stdio_stream_array=$s; break ;;
16916 $rm -f try.* try$exe_ext
16918 case "$stdio_stream_array" in
16920 I can't figure out how to access stdio streams by file descriptor number.
16922 d_stdio_stream_array="$undef"
16925 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16927 d_stdio_stream_array="$define"
16931 : see if strcoll exists
16932 set strcoll d_strcoll
16935 : check for structure copying
16937 echo "Checking to see if your C compiler can copy structs..." >&4
16938 $cat >try.c <<'EOCP'
16948 if $cc -c try.c >/dev/null 2>&1 ; then
16950 echo "Yup, it can."
16953 echo "Nope, it can't."
16959 : see if strerror and/or sys_errlist[] exist
16961 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16962 if set strerror val -f d_strerror; eval $csym; $val; then
16963 echo 'strerror() found.' >&4
16964 d_strerror="$define"
16965 d_strerrm='strerror(e)'
16966 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16967 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
16968 d_syserrlst="$define"
16970 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16971 d_syserrlst="$undef"
16973 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16974 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16975 echo 'strerror() found in string header.' >&4
16976 d_strerror="$define"
16977 d_strerrm='strerror(e)'
16978 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16979 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16980 d_syserrlst="$define"
16982 echo "(You don't appear to have any sys_errlist[], how can this be?)"
16983 d_syserrlst="$undef"
16985 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16986 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16987 d_strerror="$undef"
16988 d_syserrlst="$define"
16989 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16991 echo 'strerror() and sys_errlist[] NOT found.' >&4
16992 d_strerror="$undef"
16993 d_syserrlst="$undef"
16994 d_strerrm='"unknown"'
16998 : see if strerror_r exists
16999 set strerror_r d_strerror_r
17001 case "$d_strerror_r" in
17003 hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
17004 case "$d_strerror_r_proto:$usethreads" in
17005 ":define") d_strerror_r_proto=define
17006 set d_strerror_r_proto strerror_r $hdrs
17010 case "$d_strerror_r_proto" in
17012 case "$strerror_r_proto" in
17013 ''|0) try='int strerror_r(int, char*, size_t);'
17014 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
17016 case "$strerror_r_proto" in
17017 ''|0) try='int strerror_r(int, char*, int);'
17018 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
17020 case "$strerror_r_proto" in
17021 ''|0) try='char* strerror_r(int, char*, size_t);'
17022 ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
17024 case "$strerror_r_proto" in
17025 ''|0) d_strerror_r=undef
17027 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
17028 * ) case "$strerror_r_proto" in
17029 REENTRANT_PROTO*) ;;
17030 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
17032 echo "Prototype: $try" ;;
17035 *) case "$usethreads" in
17036 define) echo "strerror_r has no prototype, not using it." >&4 ;;
17043 *) strerror_r_proto=0
17047 : see if strftime exists
17048 set strftime d_strftime
17051 : see if strlcat exists
17052 set strlcat d_strlcat
17055 : see if strlcpy exists
17056 set strlcpy d_strlcpy
17059 : see if strtod exists
17060 set strtod d_strtod
17063 : see if strtol exists
17064 set strtol d_strtol
17067 : see if strtold exists
17068 set strtold d_strtold
17071 : see if strtoll exists
17072 set strtoll d_strtoll
17075 case "$d_longlong-$d_strtoll" in
17078 Checking whether your strtoll() works okay...
17080 $cat >try.c <<'EOCP'
17083 #define strtoll __strtoll
17086 #define strtoll _strtoll
17089 extern long long int strtoll(char *s, char **, int);
17090 static int bad = 0;
17091 int check(char *s, long long ell, int een) {
17094 gll = strtoll(s, 0, 10);
17095 if (!((gll == ell) && (errno == een)))
17099 check(" 1", 1LL, 0);
17100 check(" 0", 0LL, 0);
17101 check("-1", -1LL, 0);
17102 check("-9223372036854775808", -9223372036854775808LL, 0);
17103 check("-9223372036854775808", -9223372036854775808LL, 0);
17104 check(" 9223372036854775807", 9223372036854775807LL, 0);
17105 check("-9223372036854775808", -9223372036854775808LL, 0);
17106 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
17107 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
17113 if eval $compile; then
17116 ok) echo "Your strtoll() seems to be working okay." ;;
17118 Your strtoll() doesn't seem to be working okay.
17124 echo "(I can't seem to compile the test program--assuming it doesn't)"
17130 : see if strtoq exists
17131 set strtoq d_strtoq
17134 : see if strtoul exists
17135 set strtoul d_strtoul
17138 case "$d_strtoul" in
17141 Checking whether your strtoul() works okay...
17143 $cat >try.c <<'EOCP'
17146 extern unsigned long int strtoul(char *s, char **, int);
17147 static int bad = 0;
17148 void check(char *s, unsigned long eul, int een) {
17151 gul = strtoul(s, 0, 10);
17152 if (!((gul == eul) && (errno == een)))
17156 check(" 1", 1L, 0);
17157 check(" 0", 0L, 0);
17159 case "$longsize" in
17161 $cat >>try.c <<'EOCP'
17162 check("18446744073709551615", 18446744073709551615UL, 0);
17163 check("18446744073709551616", 18446744073709551615UL, ERANGE);
17164 #if 0 /* strtoul() for /^-/ strings is undefined. */
17165 check("-1", 18446744073709551615UL, 0);
17166 check("-18446744073709551614", 2, 0);
17167 check("-18446744073709551615", 1, 0);
17168 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
17169 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
17174 $cat >>try.c <<'EOCP'
17175 check("4294967295", 4294967295UL, 0);
17176 check("4294967296", 4294967295UL, ERANGE);
17177 #if 0 /* strtoul() for /^-/ strings is undefined. */
17178 check("-1", 4294967295UL, 0);
17179 check("-4294967294", 2, 0);
17180 check("-4294967295", 1, 0);
17181 check("-4294967296", 4294967295UL, ERANGE);
17182 check("-4294967297", 4294967295UL, ERANGE);
17187 : Should we write these tests to be more portable by sprintf-ing
17188 : ~0 and then manipulating that char string as input for strtol?
17191 $cat >>try.c <<'EOCP'
17198 if eval $compile; then
17199 case "`$run ./try`" in
17200 ok) echo "Your strtoul() seems to be working okay." ;;
17202 Your strtoul() doesn't seem to be working okay.
17211 : see if strtoull exists
17212 set strtoull d_strtoull
17215 case "$d_longlong-$d_strtoull" in
17218 Checking whether your strtoull() works okay...
17220 $cat >try.c <<'EOCP'
17223 #define strtoull __strtoull
17226 extern unsigned long long int strtoull(char *s, char **, int);
17227 static int bad = 0;
17228 int check(char *s, long long eull, int een) {
17231 gull = strtoull(s, 0, 10);
17232 if (!((gull == eull) && (errno == een)))
17236 check(" 1", 1LL, 0);
17237 check(" 0", 0LL, 0);
17238 check("18446744073709551615", 18446744073709551615ULL, 0);
17239 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
17240 #if 0 /* strtoull() for /^-/ strings is undefined. */
17241 check("-1", 18446744073709551615ULL, 0);
17242 check("-18446744073709551614", 2LL, 0);
17243 check("-18446744073709551615", 1LL, 0);
17244 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17245 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17252 if eval $compile; then
17253 case "`$run ./try`" in
17254 ok) echo "Your strtoull() seems to be working okay." ;;
17256 Your strtoull() doesn't seem to be working okay.
17258 d_strtoull="$undef"
17265 : see if strtouq exists
17266 set strtouq d_strtouq
17269 case "$d_strtouq" in
17272 Checking whether your strtouq() works okay...
17274 $cat >try.c <<'EOCP'
17277 extern unsigned long long int strtouq(char *s, char **, int);
17278 static int bad = 0;
17279 void check(char *s, unsigned long long eull, int een) {
17280 unsigned long long gull;
17282 gull = strtouq(s, 0, 10);
17283 if (!((gull == eull) && (errno == een)))
17287 check(" 1", 1LL, 0);
17288 check(" 0", 0LL, 0);
17289 check("18446744073709551615", 18446744073709551615ULL, 0);
17290 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
17291 #if 0 /* strtouq() for /^-/ strings is undefined. */
17292 check("-1", 18446744073709551615ULL, 0);
17293 check("-18446744073709551614", 2LL, 0);
17294 check("-18446744073709551615", 1LL, 0);
17295 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17296 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17304 if eval $compile; then
17305 case "`$run ./try`" in
17306 ok) echo "Your strtouq() seems to be working okay." ;;
17308 Your strtouq() doesn't seem to be working okay.
17317 : see if strxfrm exists
17318 set strxfrm d_strxfrm
17321 : see if symlink exists
17322 set symlink d_symlink
17325 : see if syscall exists
17326 set syscall d_syscall
17329 : see if prototype for syscall is available
17331 set d_syscallproto syscall $i_unistd unistd.h
17334 : see if sysconf exists
17335 set sysconf d_sysconf
17338 : see if system exists
17339 set system d_system
17342 : see if tcgetpgrp exists
17343 set tcgetpgrp d_tcgetpgrp
17346 : see if tcsetpgrp exists
17347 set tcsetpgrp d_tcsetpgrp
17350 : see if prototype for telldir is available
17352 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
17355 : see if time exists
17357 if test "X$d_time" = X -o X"$timetype" = X; then
17358 if set time val -f d_time; eval $csym; $val; then
17359 echo 'time() found.' >&4
17361 rp="What is the type returned by time() on this system?"
17362 set time_t timetype long stdio.h sys/types.h
17365 echo 'time() not found, hope that will do.' >&4
17373 : see if this is a sys/times.h system
17374 set sys/times.h i_systimes
17377 : see if times exists
17379 if set times val -f d_times; eval $csym; $val; then
17380 echo 'times() found.' >&4
17383 case "$i_systimes" in
17384 "$define") inc='sys/times.h';;
17386 rp="What is the type returned by times() on this system?"
17387 set clock_t clocktype long stdio.h sys/types.h $inc
17390 echo 'times() NOT found, hope that will do.' >&4
17395 : see if tmpnam_r exists
17396 set tmpnam_r d_tmpnam_r
17398 case "$d_tmpnam_r" in
17400 hdrs="$i_systypes sys/types.h define stdio.h "
17401 case "$d_tmpnam_r_proto:$usethreads" in
17402 ":define") d_tmpnam_r_proto=define
17403 set d_tmpnam_r_proto tmpnam_r $hdrs
17407 case "$d_tmpnam_r_proto" in
17409 case "$tmpnam_r_proto" in
17410 ''|0) try='char* tmpnam_r(char*);'
17411 ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
17413 case "$tmpnam_r_proto" in
17414 ''|0) d_tmpnam_r=undef
17416 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
17417 * ) case "$tmpnam_r_proto" in
17418 REENTRANT_PROTO*) ;;
17419 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
17421 echo "Prototype: $try" ;;
17424 *) case "$usethreads" in
17425 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
17432 *) tmpnam_r_proto=0
17436 : see if truncate exists
17437 set truncate d_truncate
17440 : see if ttyname_r exists
17441 set ttyname_r d_ttyname_r
17443 case "$d_ttyname_r" in
17445 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
17446 case "$d_ttyname_r_proto:$usethreads" in
17447 ":define") d_ttyname_r_proto=define
17448 set d_ttyname_r_proto ttyname_r $hdrs
17452 case "$d_ttyname_r_proto" in
17454 case "$ttyname_r_proto" in
17455 ''|0) try='int ttyname_r(int, char*, size_t);'
17456 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
17458 case "$ttyname_r_proto" in
17459 ''|0) try='int ttyname_r(int, char*, int);'
17460 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
17462 case "$ttyname_r_proto" in
17463 ''|0) try='char* ttyname_r(int, char*, int);'
17464 ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
17466 case "$ttyname_r_proto" in
17467 ''|0) d_ttyname_r=undef
17469 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
17470 * ) case "$ttyname_r_proto" in
17471 REENTRANT_PROTO*) ;;
17472 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
17474 echo "Prototype: $try" ;;
17477 *) case "$usethreads" in
17478 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
17485 *) ttyname_r_proto=0
17489 : see if tzname[] exists
17491 if set tzname val -a d_tzname; eval $csym; $val; then
17493 echo 'tzname[] found.' >&4
17496 echo 'tzname[] NOT found.' >&4
17502 next|rhapsody|darwin) multiarch="$define" ;;
17504 case "$multiarch" in
17505 ''|[nN]*) multiarch="$undef" ;;
17508 : check for ordering of bytes in a UV
17510 case "$usecrosscompile$multiarch" in
17513 You seem to be either cross-compiling or doing a multiarchitecture build,
17514 skipping the byteorder check.
17520 case "$byteorder" in
17523 In the following, larger digits indicate more significance. A big-endian
17524 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
17525 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
17526 machines may have weird orders like 3412. A Cray will report 87654321,
17527 an Alpha will report 12345678. If the test program works the default is
17529 I'm now running the test program...
17533 #$i_stdlib I_STDLIB
17535 #include <stdlib.h>
17537 #include <sys/types.h>
17538 typedef $uvtype UV;
17548 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
17550 u.l = (UV)0x04030201;
17551 for (i = 0; i < $uvsize; i++)
17552 printf("%c", u.c[i]+'0');
17559 if eval $compile && ./try > /dev/null; then
17562 [1-4][1-4][1-4][1-4]|12345678|87654321)
17563 echo "(The test program ran ok.)"
17564 echo "byteorder=$dflt"
17567 ????|????????) echo "(The test program ran ok.)" ;;
17568 *) echo "(The test program didn't run right for some reason.)" ;;
17573 (I can't seem to compile the test program. Guessing big-endian...)
17576 case "$xxx_prompt" in
17578 rp="What is the order of bytes in $uvtype?"
17594 Checking to see whether you can access character data unalignedly...
17596 case "$d_u32align" in
17597 '') $cat >try.c <<EOCP
17599 #$i_stdlib I_STDLIB
17601 #include <stdlib.h>
17603 #define U32 $u32type
17604 #define BYTEORDER 0x$byteorder
17606 #include <signal.h>
17608 $signal_t bletch(s) int s; { exit(4); }
17611 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
17616 if (sizeof(U32) != 4) {
17617 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
17624 signal(SIGBUS, bletch);
17636 for (i = 0; i < 4; i++) {
17637 up = (U32*)(buf + i);
17638 if (! ((*up == 1 << (8*i)) || /* big-endian */
17639 (*up == 1 << (8*(3-i))) /* little-endian */
17643 printf("read failed (%x)\n", *up);
17649 for (i = 0; i < 4; i++) {
17650 up = (U32*)(buf + i);
17652 if (*up != 0xBeef) {
17653 printf("write failed (%x)\n", *up);
17667 if eval $compile_ok; then
17668 echo "(Testing for character data alignment may crash the test. That's okay.)" >&4
17669 $run ./try 2>&1 >/dev/null
17672 You can access character data pretty unalignedly.
17674 d_u32align="$undef"
17677 It seems that you must access character data in an aligned manner.
17679 d_u32align="$define"
17683 rp='Can you access character data at unaligned addresses?'
17687 [yY]*) d_u32align="$undef" ;;
17688 *) d_u32align="$define" ;;
17691 $rm -f core core.try.* try.core
17695 : see if ualarm exists
17696 set ualarm d_ualarm
17699 : see if umask exists
17703 : see if unordered exists
17704 set unordered d_unordered
17707 : see if unsetenv exists
17708 set unsetenv d_unsetenv
17711 : see if usleep exists
17712 set usleep d_usleep
17715 : see if prototype for usleep is available
17717 set d_usleepproto usleep $i_unistd unistd.h
17720 : see if ustat exists
17724 : backward compatibility for d_hvfork
17725 if test X$d_hvfork != X; then
17726 d_vfork="$d_hvfork"
17729 : see if there is a vfork
17734 : Ok, but do we want to use it. vfork is reportedly unreliable in
17735 : perl on Solaris 2.x, and probably elsewhere.
17739 case "$usevfork" in
17745 Perl can only use a vfork() that doesn't suffer from strict
17746 restrictions on calling functions or modifying global data in
17747 the child. For example, glibc-2.1 contains such a vfork()
17748 that is unsuitable. If your system provides a proper fork()
17749 call, chances are that you do NOT want perl to use vfork().
17752 rp="Do you still want to use vfork()?"
17757 echo "Ok, we won't use vfork()."
17766 $define) usevfork='true';;
17767 *) usevfork='false';;
17770 : see if closedir exists
17771 set closedir d_closedir
17774 case "$d_closedir" in
17777 echo "Checking whether closedir() returns a status..." >&4
17779 #$i_dirent I_DIRENT /**/
17780 #$i_sysdir I_SYS_DIR /**/
17781 #$i_sysndir I_SYS_NDIR /**/
17782 #$i_systypes I_SYS_TYPES /**/
17784 #if defined(I_SYS_TYPES)
17785 #include <sys/types.h>
17787 #if defined(I_DIRENT)
17788 #include <dirent.h>
17789 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17790 #include <sys/dir.h>
17794 #include <sys/ndir.h>
17798 #include <ndir.h> /* may be wrong in the future */
17800 #include <sys/dir.h>
17805 int main() { return closedir(opendir(".")); }
17808 if eval $compile_ok; then
17809 if $run ./try > /dev/null 2>&1 ; then
17810 echo "Yes, it does."
17813 echo "No, it doesn't."
17817 echo "(I can't seem to compile the test program--assuming it doesn't)"
17825 set d_void_closedir
17828 : see if there is a wait4
17832 : see if waitpid exists
17833 set waitpid d_waitpid
17836 : see if wcstombs exists
17837 set wcstombs d_wcstombs
17840 : see if wctomb exists
17841 set wctomb d_wctomb
17844 : see if writev exists
17845 set writev d_writev
17848 : preserve RCS keywords in files with variable substitution, grrr
17853 Revision='$Revision'
17855 : check for alignment requirements
17857 case "$usecrosscompile$multiarch" in
17860 You seem to be either cross-compiling or doing a multiarchitecture build,
17861 skipping the memory alignment check.
17864 case "$alignbytes" in
17865 '') alignbytes=8 ;;
17869 case "$alignbytes" in
17870 '') echo "Checking alignment constraints..." >&4
17871 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17872 $cat >try.c <<'EOCP'
17873 typedef long double NV;
17876 $cat >try.c <<'EOCP'
17880 $cat >>try.c <<'EOCP'
17888 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17893 if eval $compile_ok; then
17897 echo "(I can't seem to compile the test program...)"
17900 *) dflt="$alignbytes"
17903 rp="Doubles must be aligned on a how-many-byte boundary?"
17911 : set the base revision
17914 : how do we concatenate cpp tokens here?
17916 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17917 $cat >cpp_stuff.c <<'EOCP'
17918 #define RCAT(a,b)a/**/b
17919 #define ACAT(a,b)a ## b
17923 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17924 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17925 echo "Oh! Smells like ANSI's been here." >&4
17926 echo "We can catify or stringify, separately or together!"
17928 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17929 echo "Ah, yes! The good old days!" >&4
17930 echo "However, in the good old days we don't know how to stringify and"
17931 echo "catify at the same time."
17935 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17936 You're going to have to edit the values of CAT[2-5] in config.h...
17938 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17942 : see if this is a db.h system
17948 : Check db version.
17950 echo "Checking Berkeley DB version ..." >&4
17956 #include <sys/types.h>
17958 #$i_stdlib I_STDLIB
17960 #include <stdlib.h>
17963 int main(int argc, char *argv[])
17965 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17966 int Major, Minor, Patch ;
17967 unsigned long Version ;
17968 (void)db_version(&Major, &Minor, &Patch) ;
17970 printf("%d %d %d %d %d %d\n",
17971 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17972 Major, Minor, Patch);
17975 printf("You have Berkeley DB Version 2 or greater.\n");
17977 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17978 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17979 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17980 Major, Minor, Patch) ;
17982 /* check that db.h & libdb are compatible */
17983 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17984 printf("db.h and libdb are incompatible.\n") ;
17988 printf("db.h and libdb are compatible.\n") ;
17990 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17991 + DB_VERSION_PATCH ;
17993 /* needs to be >= 2.3.4 */
17994 if (Version < 2003004) {
17995 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17996 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
18002 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
18007 printf("You have Berkeley DB Version 1.\n");
18008 exit(0); /* DB version < 2: the coast is clear. */
18010 exit(1); /* <db.h> not Berkeley DB? */
18016 if eval $compile_ok && $run ./try; then
18017 echo 'Looks OK.' >&4
18019 db_version_major=$1
18020 db_version_minor=$2
18021 db_version_patch=$3
18023 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
18027 : Remove db from list of libraries to use
18028 echo "Removing unusable -ldb from library list" >&4
18029 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
18032 echo "libs = $libs" >&4
18042 : Check the return type needed for hash
18044 echo "Checking return type needed for hash for Berkeley DB ..." >&4
18050 #include <sys/types.h>
18053 #ifndef DB_VERSION_MAJOR
18054 u_int32_t hash_cb (ptr, size)
18062 info.hash = hash_cb;
18066 if $cc $ccflags -c try.c >try.out 2>&1 ; then
18067 if $contains warning try.out >>/dev/null 2>&1 ; then
18070 db_hashtype='u_int32_t'
18073 : XXX Maybe we should just give up here.
18074 db_hashtype=u_int32_t
18076 echo "Help: I can't seem to compile the db test program." >&4
18077 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
18080 echo "Your version of Berkeley DB uses $db_hashtype for hash."
18082 *) db_hashtype=u_int32_t
18087 : Check the return type needed for prefix
18089 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
18095 #include <sys/types.h>
18098 #ifndef DB_VERSION_MAJOR
18099 size_t prefix_cb (key1, key2)
18107 info.prefix = prefix_cb;
18111 if $cc $ccflags -c try.c >try.out 2>&1 ; then
18112 if $contains warning try.out >>/dev/null 2>&1 ; then
18113 db_prefixtype='int'
18115 db_prefixtype='size_t'
18118 db_prefixtype='size_t'
18119 : XXX Maybe we should just give up here.
18121 echo "Help: I can't seem to compile the db test program." >&4
18122 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
18125 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
18127 *) db_prefixtype='size_t'
18132 : How can we generate normalized random numbers ?
18134 echo "Looking for a random number function..." >&4
18135 case "$randfunc" in
18137 if set drand48 val -f; eval $csym; $val; then
18139 echo "Good, found drand48()." >&4
18140 elif set random val -f; eval $csym; $val; then
18142 echo "OK, found random()." >&4
18145 echo "Yick, looks like I have to use rand()." >&4
18156 *-Dmy_rand=*|*-Dmy_srand=*)
18157 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
18158 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
18159 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
18160 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
18164 while $test "$cont"; do
18165 rp="Use which function to generate random numbers?"
18167 if $test "$ans" = "$dflt"; then
18173 if set $ans val -f; eval $csym; $val; then
18177 rp="I cannot find function $ans. Use that name anyway?"
18186 case "$randfunc" in
18188 drand01="drand48()"
18194 case "$randbits" in
18196 echo "Checking to see how many bits your $randfunc() function produces..." >&4
18198 #$i_unistd I_UNISTD
18199 #$i_stdlib I_STDLIB
18202 # include <unistd.h>
18205 # include <stdlib.h>
18210 register unsigned long tmp;
18211 register unsigned long max = 0L;
18213 for (i = 1000; i; i--) {
18214 tmp = (unsigned long) $randfunc();
18215 if (tmp > max) max = tmp;
18217 for (i = 0; max; i++)
18223 if eval $compile_ok; then
18227 echo "(I can't seem to compile the test program...)"
18234 rp="How many bits does your $randfunc() function produce?"
18238 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18239 seedfunc="s$randfunc"
18240 randseedtype=unsigned
18244 rp="How many bits does your $randfunc() function produce?"
18247 seedfunc="s$randfunc"
18248 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18249 if set $seedfunc val -f; eval $csym; $val; then
18250 echo "(Using $seedfunc() to seed random generator)"
18252 echo "(Warning: no $seedfunc() to seed random generator)"
18255 randseedtype=unsigned
18263 echo "Determining whether or not we are on an EBCDIC system..." >&4
18264 $cat >try.c <<'EOM'
18267 if ('M'==0xd4) return 0;
18274 if eval $compile_ok; then
18275 if $run ./try; then
18276 echo "You seem to speak EBCDIC." >&4
18279 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
18282 echo "I'm unable to compile the test program." >&4
18283 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
18291 Checking how to flush all pending stdio output...
18293 # I only know how to find the first 32 possibly open files on SunOS.
18294 # See also hints/sunos_4_1.sh and util.c --AD
18296 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
18298 $cat >>try.c <<EOCP
18300 #$i_stdlib I_STDLIB
18302 #include <stdlib.h>
18304 #$i_unistd I_UNISTD
18306 # include <unistd.h>
18308 #$d_sysconf HAS_SYSCONF
18309 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
18310 #ifdef HAS_STDIO_STREAM_ARRAY
18311 # define STDIO_STREAM_ARRAY $stdio_stream_array
18316 p = fopen("try.out", "w");
18320 # ifdef TRY_FPRINTF
18324 #ifdef TRY_FFLUSH_NULL
18327 #ifdef TRY_FFLUSH_ALL
18329 long open_max = -1;
18330 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
18331 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
18333 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
18334 open_max = sysconf(_SC_OPEN_MAX);
18337 open_max = FOPEN_MAX;
18340 open_max = OPEN_MAX;
18349 # ifdef HAS_STDIO_STREAM_ARRAY
18350 if (open_max > 0) {
18352 for (i = 0; i < open_max; i++)
18353 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
18354 STDIO_STREAM_ARRAY[i]._file < open_max &&
18355 STDIO_STREAM_ARRAY[i]._flag)
18356 fflush(&STDIO_STREAM_ARRAY[i]);
18364 : first we have to find out how _not_ to flush
18366 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
18368 set try -DTRY_FPUTC
18369 if eval $compile; then
18370 $run ./try 2>/dev/null
18373 if $test ! -s try.out -a "X$code" = X42; then
18379 set try -DTRY_FPRINTF
18380 if eval $compile; then
18381 $run ./try 2>/dev/null
18384 if $test ! -s try.out -a "X$code" = X42; then
18385 output=-DTRY_FPRINTF
18391 : check for fflush NULL behaviour
18392 case "$fflushNULL" in
18393 '') set try -DTRY_FFLUSH_NULL $output
18394 if eval $compile; then
18395 $run ./try 2>/dev/null
18398 if $test -s try.out -a "X$code" = X42; then
18399 fflushNULL="`$cat try.out`"
18401 if $test "X$code" != X42; then
18403 (If this test failed, don't worry, we'll try another method shortly.)
18408 $rm -f core try.core core.try.*
18409 case "$fflushNULL" in
18411 Your fflush(NULL) works okay for output streams.
18412 Let's see if it clobbers input pipes...
18414 # As of mid-March 2000 all versions of Solaris appear to have a stdio
18415 # bug that improperly flushes the input end of pipes. So we avoid the
18416 # autoflush on fork/system/exec support for now. :-(
18417 $cat >tryp.c <<EOCP
18420 main(int argc, char **argv)
18426 while ((i = getc(stdin)) != -1
18427 && (*bp++ = i) != '\n'
18428 && bp < &buf[1024])
18431 fprintf(stdout, "%s", buf);
18439 fflushNULL="$define"
18441 if eval $compile; then
18443 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18444 if cmp tryp.c tryp.out >/dev/null 2>&1; then
18446 fflush(NULL) seems to behave okay with input streams.
18448 fflushNULL="$define"
18451 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
18453 fflushNULL="$undef"
18456 $rm -f core tryp.c tryp.core core.tryp.*
18459 Your fflush(NULL) isn't working (contrary to ANSI C).
18461 fflushNULL="$undef"
18464 Cannot figure out whether your fflush(NULL) works or not.
18465 I'm assuming it doesn't (contrary to ANSI C).
18467 fflushNULL="$undef"
18471 $define|true|[yY]*)
18472 fflushNULL="$define"
18475 fflushNULL="$undef"
18478 : check explicit looping only if NULL did not work, and if the pipe
18479 : bug does not show up on an explicit flush too
18480 case "$fflushNULL" in
18482 $cat >tryp.c <<EOCP
18485 main(int argc, char **argv)
18491 while ((i = getc(stdin)) != -1
18492 && (*bp++ = i) != '\n'
18493 && bp < &buf[1024])
18496 fprintf(stdout, "%s", buf);
18505 if eval $compile; then
18507 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18508 if cmp tryp.c tryp.out >/dev/null 2>&1; then
18510 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
18512 : now check for fflushall behaviour
18513 case "$fflushall" in
18514 '') set try -DTRY_FFLUSH_ALL $output
18515 if eval $compile; then
18517 (Now testing the other method--but note that this also may fail.)
18519 $run ./try 2>/dev/null
18522 if $test -s try.out -a "X$code" = X42; then
18523 fflushall="`$cat try.out`"
18526 $rm -f core try.core core.try.*
18527 case "$fflushall" in
18529 Whew. Flushing explicitly all the stdio streams works.
18531 fflushall="$define"
18534 Sigh. Flushing explicitly all the stdio streams doesn't work.
18539 Cannot figure out whether flushing stdio streams explicitly works or not.
18540 I'm assuming it doesn't.
18546 "$define"|true|[yY]*)
18547 fflushall="$define"
18555 All is futile. Even fflush(stdin) clobbers input pipes!
18562 $rm -f core tryp.c tryp.core core.tryp.*
18564 *) fflushall="$undef"
18568 case "$fflushNULL$fflushall" in
18571 OK, I give up. I cannot figure out how to flush pending stdio output.
18572 We won't be flushing handles at all before fork/exec/popen.
18576 $rm -f try.* try$exe_ext
18578 : Store the full pathname to the ar program for use in the C program
18579 : Respect a hint or command line value for full_ar.
18584 : Store the full pathname to the sed program for use in the C program
18587 : see what type gids are declared as in the kernel
18589 echo "Looking for the type for group ids returned by getgid()."
18590 set gid_t gidtype xxx stdio.h sys/types.h
18594 xxx=`./findhdr sys/user.h`
18595 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
18597 unsigned) dflt="$1 $2" ;;
18601 *) dflt="$gidtype";;
18604 gid_t) echo "gid_t found." ;;
18605 *) rp="What is the type for group ids returned by getgid()?"
18613 *_t) zzz="$gidtype" ;;
18616 echo "Checking the size of $zzz..." >&4
18618 #include <sys/types.h>
18620 #$i_stdlib I_STDLIB
18622 #include <stdlib.h>
18625 printf("%d\n", (int)sizeof($gidtype));
18630 if eval $compile_ok; then
18634 echo "(I can't execute the test program--guessing $gidsize.)" >&4
18637 echo "Your $zzz is $gidsize bytes long."
18642 echo "(I can't compile the test program--guessing $gidsize.)" >&4
18648 *_t) zzz="$gidtype" ;;
18651 echo "Checking the sign of $zzz..." >&4
18653 #include <sys/types.h>
18664 if eval $compile; then
18668 echo "(I can't execute the test program--guessing unsigned.)" >&4
18672 1) echo "Your $zzz is unsigned." ;;
18673 -1) echo "Your $zzz is signed." ;;
18679 echo "(I can't compile the test program--guessing unsigned.)" >&4
18685 if $test X"$quadtype" != X; then
18687 echo "Checking how to print 64-bit integers..." >&4
18689 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18690 $cat >try.c <<'EOCP'
18691 #include <sys/types.h>
18694 int q = 12345678901;
18695 printf("%ld\n", q);
18699 if eval $compile; then
18703 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18704 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18705 echo "We will use %d."
18711 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18712 $cat >try.c <<'EOCP'
18713 #include <sys/types.h>
18716 long q = 12345678901;
18717 printf("%ld\n", q);
18721 if eval $compile; then
18725 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18726 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18727 echo "We will use %ld."
18733 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18734 $cat >try.c <<'EOCP'
18735 #include <sys/types.h>
18736 #include <inttypes.h>
18739 int64_t q = 12345678901;
18740 printf("%" PRId64 "\n", q);
18744 if eval $compile; then
18748 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18749 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18750 echo "We will use the C9X style."
18756 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18758 #include <sys/types.h>
18761 $quadtype q = 12345678901;
18762 printf("%Ld\n", q);
18766 if eval $compile; then
18770 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18771 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18772 echo "We will use %Ld."
18778 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18779 $cat >try.c <<'EOCP'
18780 #include <sys/types.h>
18783 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18784 printf("%lld\n", q);
18788 if eval $compile; then
18792 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18793 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18794 echo "We will use the %lld style."
18800 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18802 #include <sys/types.h>
18805 $quadtype q = 12345678901;
18806 printf("%qd\n", q);
18810 if eval $compile; then
18814 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18815 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18816 echo "We will use %qd."
18822 if $test X"$sPRId64" = X; then
18823 echo "Cannot figure out how to print 64-bit integers." >&4
18831 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
18832 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
18834 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
18835 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
18841 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18843 if $test X"$ivsize" = X8; then
18844 ivdformat="$sPRId64"
18845 uvuformat="$sPRIu64"
18846 uvoformat="$sPRIo64"
18847 uvxformat="$sPRIx64"
18848 uvXUformat="$sPRIXU64"
18850 if $test X"$ivsize" = X"$longsize"; then
18857 if $test X"$ivsize" = X"$intsize"; then
18865 if $test X"$ivsize" = X"$shortsize"; then
18876 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18877 nveformat="$sPRIeldbl"
18878 nvfformat="$sPRIfldbl"
18879 nvgformat="$sPRIgldbl"
18880 nvEUformat="$sPRIEUldbl"
18881 nvFUformat="$sPRIFUldbl"
18882 nvGUformat="$sPRIGUldbl"
18892 case "$ivdformat" in
18893 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18900 $echo "Checking the format string to be used for gids..." >&4
18903 -1) if $test X"$gidsize" = X"$ivsize"; then
18904 gidformat="$ivdformat"
18906 if $test X"$gidsize" = X"$longsize"; then
18909 if $test X"$gidsize" = X"$intsize"; then
18912 if $test X"$gidsize" = X"$shortsize"; then
18919 *) if $test X"$gidsize" = X"$uvsize"; then
18920 gidformat="$uvuformat"
18922 if $test X"$gidsize" = X"$longsize"; then
18925 if $test X"$gidsize" = X"$intsize"; then
18928 if $test X"$gidsize" = X"$shortsize"; then
18937 : see if getgroups exists
18938 set getgroups d_getgrps
18941 : see if setgroups exists
18942 set setgroups d_setgrps
18946 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18948 case "$d_getgrps$d_setgrps" in
18950 case "$groupstype" in
18951 '') dflt="$gidtype" ;;
18952 *) dflt="$groupstype" ;;
18955 What type of pointer is the second argument to getgroups() and setgroups()?
18956 Usually this is the same as group ids, $gidtype, but not always.
18959 rp='What type pointer is the second argument to getgroups() and setgroups()?'
18963 *) groupstype="$gidtype";;
18968 $define|true|[yY]*) dflt='y' ;;
18973 Would you like to build with Misc Attribute Decoration? This is development
18974 work leading to a Perl 5 to Perl 6 convertor, which imposes a space and speed
18975 overhead on the interpreter.
18977 If this doesn't make any sense to you, just accept the default '$dflt'.
18979 rp='Build Perl with MAD?'
18983 madlyh='madly.h madly.act madly.tab'
18985 madlyobj="madly$_o" ;;
18995 echo "Checking if your $make program sets \$(MAKE)..." >&4
18996 case "$make_set_make" in
18998 $sed 's/^X //' > testmake.mak << 'EOF'
19000 X @echo 'maketemp="$(MAKE)"'
19002 case "`$make -f testmake.mak 2>/dev/null`" in
19003 *maketemp=*) make_set_make='#' ;;
19004 *) make_set_make="MAKE=$make" ;;
19006 $rm -f testmake.mak
19009 case "$make_set_make" in
19010 '#') echo "Yup, it does.";;
19011 *) echo "Nope, it doesn't.";;
19014 : see what type is used for mode_t
19015 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
19016 set mode_t modetype int stdio.h sys/types.h
19019 : see if stdarg is available
19021 if $test `./findhdr stdarg.h`; then
19022 echo "<stdarg.h> found." >&4
19025 echo "<stdarg.h> NOT found." >&4
19029 : see if varags is available
19031 if $test `./findhdr varargs.h`; then
19032 echo "<varargs.h> found." >&4
19034 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
19037 : set up the varargs testing programs
19038 $cat > varargs.c <<EOP
19040 #include <stdarg.h>
19043 #include <varargs.h>
19047 int f(char *p, ...)
19061 p = va_arg(ap, char *);
19066 $cat > varargs <<EOP
19068 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
19077 : now check which varargs header should be included
19082 if `./varargs I_STDARG`; then
19084 elif `./varargs I_VARARGS`; then
19089 if `./varargs I_VARARGS`; then
19096 echo "I could not find the definition for va_dcl... You have problems..." >&4
19097 val="$undef"; set i_stdarg; eval $setvar
19098 val="$undef"; set i_varargs; eval $setvar
19103 case "$i_varhdr" in
19105 val="$define"; set i_stdarg; eval $setvar
19106 val="$undef"; set i_varargs; eval $setvar
19109 val="$undef"; set i_stdarg; eval $setvar
19110 val="$define"; set i_varargs; eval $setvar
19113 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
19117 : see if we need va_copy
19119 case "$i_stdarg" in
19122 #include <stdarg.h>
19124 #$i_stdlib I_STDLIB
19126 #include <stdlib.h>
19128 #include <signal.h>
19131 ivfprintf(FILE *f, const char *fmt, va_list *valp)
19133 return vfprintf(f, fmt, *valp);
19137 myvfprintf(FILE *f, const char *fmt, va_list val)
19139 return ivfprintf(f, fmt, &val);
19143 myprintf(char *fmt, ...)
19146 va_start(val, fmt);
19147 return myvfprintf(stdout, fmt, val);
19151 main(int ac, char **av)
19153 signal(SIGSEGV, exit);
19155 myprintf("%s%cs all right, then\n", "that", '\'');
19160 if eval $compile && $run ./try 2>&1 >/dev/null; then
19161 case "`$run ./try`" in
19162 "that's all right, then")
19168 yes) echo "It seems that you don't need va_copy()." >&4
19169 need_va_copy="$undef"
19171 *) echo "It seems that va_copy() or similar will be needed." >&4
19172 need_va_copy="$define"
19175 $rm -f try.* core core.* *.core *.core.*
19177 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
19181 : see what type is used for size_t
19182 rp="What is the type used for the length parameter for string functions?"
19183 set size_t sizetype 'unsigned int' stdio.h sys/types.h
19186 : check for type of arguments to gethostbyaddr.
19187 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
19188 case "$d_gethbyaddr" in
19192 Checking to see what type of arguments are accepted by gethostbyaddr().
19194 hdrs="$define sys/types.h
19195 $d_socket sys/socket.h
19196 $i_niin netinet/in.h
19198 $i_unistd unistd.h"
19199 : The first arg can 'char *' or 'void *'
19200 : The second arg is some of integral type
19201 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
19202 for yyy in size_t long int; do
19203 case "$netdb_host_type" in
19204 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
19205 if ./protochk "$try" $hdrs; then
19206 echo "Your system accepts $xxx for the first arg."
19207 echo "...and $yyy for the second arg."
19208 netdb_host_type="$xxx"
19209 netdb_hlen_type="$yyy"
19215 : In case none of those worked, prompt the user.
19216 case "$netdb_host_type" in
19217 '') rp='What is the type for the 1st argument to gethostbyaddr?'
19220 netdb_host_type=$ans
19221 rp='What is the type for the 2nd argument to gethostbyaddr?'
19224 netdb_hlen_type=$ans
19228 *) : no gethostbyaddr, so pick harmless defaults
19229 netdb_host_type='char *'
19230 netdb_hlen_type="$sizetype"
19233 # Remove the "const" if needed. -- but then we'll have a
19235 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
19238 : check for type of argument to gethostbyname.
19239 if test "X$netdb_name_type" = X ; then
19240 case "$d_gethbyname" in
19244 Checking to see what type of argument is accepted by gethostbyname().
19246 hdrs="$define sys/types.h
19247 $d_socket sys/socket.h
19248 $i_niin netinet/in.h
19250 $i_unistd unistd.h"
19251 for xxx in "const char *" "char *"; do
19252 case "$netdb_name_type" in
19253 '') try="extern struct hostent *gethostbyname($xxx);"
19254 if ./protochk "$try" $hdrs; then
19255 echo "Your system accepts $xxx."
19256 netdb_name_type="$xxx"
19261 : In case none of those worked, prompt the user.
19262 case "$netdb_name_type" in
19263 '') rp='What is the type for the 1st argument to gethostbyname?'
19266 netdb_name_type=$ans
19270 *) : no gethostbyname, so pick harmless default
19271 netdb_name_type='char *'
19276 : check for type of 1st argument to getnetbyaddr.
19277 if test "X$netdb_net_type" = X ; then
19278 case "$d_getnbyaddr" in
19282 Checking to see what type of 1st argument is accepted by getnetbyaddr().
19284 hdrs="$define sys/types.h
19285 $d_socket sys/socket.h
19286 $i_niin netinet/in.h
19288 $i_unistd unistd.h"
19289 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
19290 case "$netdb_net_type" in
19291 '') try="extern struct netent *getnetbyaddr($xxx, int);"
19292 if ./protochk "$try" $hdrs; then
19293 echo "Your system accepts $xxx."
19294 netdb_net_type="$xxx"
19299 : In case none of those worked, prompt the user.
19300 case "$netdb_net_type" in
19301 '') rp='What is the type for the 1st argument to getnetbyaddr?'
19304 netdb_net_type=$ans
19308 *) : no getnetbyaddr, so pick harmless default
19309 netdb_net_type='long'
19313 : locate the preferred pager for this system
19320 [a-zA-Z]:/*) dflt=$pg;;
19324 [a-zA-Z]:/*) dflt=$more;;
19328 [a-zA-Z]:/*) dflt=$less;;
19331 '') dflt=/usr/ucb/more;;
19335 : Instruct ./getfile to trust the hinted or previous pager value,
19336 : even if it does not begin with a slash. For example, on os2,
19337 : pager might be cmd /c more. See comments in UU/getfile.
19342 rp='What pager is used on your system?'
19346 : see what type pids are declared as in the kernel
19347 rp="What is the type of process ids on this system?"
19348 set pid_t pidtype int stdio.h sys/types.h
19351 : see if ar generates random libraries by itself
19353 echo "Checking how to generate random libraries on your machine..." >&4
19354 echo 'int bar1() { return bar2(); }' > bar1.c
19355 echo 'int bar2() { return 2; }' > bar2.c
19357 #$i_stdlib I_STDLIB
19359 #include <stdlib.h>
19361 int main() { printf("%d\n", bar1()); exit(0); }
19363 $cc $ccflags -c bar1.c >/dev/null 2>&1
19364 $cc $ccflags -c bar2.c >/dev/null 2>&1
19365 $cc $ccflags -c foo.c >/dev/null 2>&1
19366 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
19367 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19368 $run ./foobar >/dev/null 2>&1; then
19369 echo "$ar appears to generate random libraries itself."
19371 if [ "X$ranlib" = "X" ]; then
19374 elif $ar s bar$_a >/dev/null 2>&1 &&
19375 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19376 $run ./foobar >/dev/null 2>&1; then
19377 echo "a table of contents needs to be added with '$ar s'."
19380 elif $ar ts bar$_a >/dev/null 2>&1 &&
19381 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19382 $run ./foobar >/dev/null 2>&1; then
19383 echo "a table of contents needs to be added with '$ar ts'."
19390 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
19391 $test -f $ranlib || ranlib=''
19394 if $test -n "$ranlib"; then
19395 echo "your system has '$ranlib'; we'll use that."
19398 echo "your system doesn't seem to support random libraries"
19399 echo "so we'll use lorder and tsort to order the libraries."
19406 : check for type of arguments to select.
19407 case "$selecttype" in
19408 '') case "$d_select" in
19412 Checking to see what type of arguments are accepted by select().
19414 hdrs="$define sys/types.h
19415 $i_systime sys/time.h
19416 $i_sysselct sys/select.h
19417 $d_socket sys/socket.h"
19418 : The first arg can be int, unsigned, or size_t
19419 : The last arg may or may not be 'const'
19421 : void pointer has been seen but using that
19422 : breaks the selectminbits test
19423 for xxx in 'fd_set *' 'int *'; do
19424 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
19425 for tmo in 'struct timeval *' 'const struct timeval *'; do
19427 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
19428 if ./protochk "$try" $hdrs; then
19429 echo "Your system accepts $xxx."
19438 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
19439 case "$d_fd_set" in
19440 $define) dflt="fd_set *" ;;
19449 *) : no select, so pick a harmless default
19456 : check for the select 'width'
19457 case "$selectminbits" in
19458 '') safebits=`expr $ptrsize \* 8`
19459 case "$d_select" in
19463 Checking to see on how many bits at a time your select() operates...
19466 #include <sys/types.h>
19468 #$i_systime I_SYS_TIME
19469 #$i_systimek I_SYS_TIME_KERNEL
19474 # ifdef I_SYS_TIME_KERNEL
19477 # include <sys/time.h>
19478 # ifdef I_SYS_TIME_KERNEL
19482 #$i_sysselct I_SYS_SELECT
19483 #ifdef I_SYS_SELECT
19484 #include <sys/select.h>
19486 #$d_socket HAS_SOCKET
19488 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
19491 #$i_stdlib I_STDLIB
19493 #include <stdlib.h>
19496 #define S sizeof(*(b))
19498 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
19499 #define NBITS (NBYTES * 8)
19501 char *s = malloc(NBYTES);
19510 fp = fopen("try.c", "r");
19516 b = ($selecttype)s;
19517 for (i = 0; i < NBITS; i++)
19521 select(fd + 1, b, 0, 0, &t);
19522 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
19524 printf("%d\n", i + 1);
19529 if eval $compile_ok; then
19530 selectminbits=`$run ./try`
19531 case "$selectminbits" in
19533 Cannot figure out on how many bits at a time your select() operates.
19534 I'll play safe and guess it is $safebits bits.
19536 selectminbits=$safebits
19537 bits="$safebits bits"
19540 *) bits="$selectminbits bits" ;;
19542 echo "Your select() operates on $bits at a time." >&4
19544 rp='What is the minimum number of bits your select() operates on?'
19545 case "$byteorder" in
19546 12345678) dflt=64 ;;
19552 selectminbits="$val"
19556 *) : no select, so pick a harmless default
19557 selectminbits=$safebits
19563 : Trace out the files included by signal.h, then look for SIGxxx names.
19564 : Remove SIGARRAYSIZE used by HPUX.
19565 : Remove SIGSTKSIZE used by Linux.
19566 : Remove SIGSTKSZ used by Posix.
19567 : Remove SIGTYP void lines used by OS2.
19568 : Some cpps, like os390, dont give the file name anywhere
19569 if [ "X$fieldn" = X ]; then
19570 : Just make some guesses. We check them later.
19571 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
19573 xxx=`echo '#include <signal.h>' |
19574 $cppstdin $cppminus $cppflags 2>/dev/null |
19575 $grep '^[ ]*#.*include' |
19576 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
19578 : Check this list of files to be sure we have parsed the cpp output ok.
19579 : This will also avoid potentially non-existent files, such
19582 for xx in $xxx /dev/null ; do
19583 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
19585 : If we have found no files, at least try signal.h
19586 case "$xxxfiles" in
19587 '') xxxfiles=`./findhdr signal.h` ;;
19590 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
19591 print substr($2, 4, 20)
19593 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
19594 print substr($3, 4, 20)
19596 : Append some common names just in case the awk scan failed.
19597 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
19598 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
19599 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
19600 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
19601 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
19603 : generate a few handy files for later
19604 $cat > signal.c <<EOCP
19605 #include <sys/types.h>
19606 #include <signal.h>
19607 #$i_stdlib I_STDLIB
19609 #include <stdlib.h>
19614 /* Strange style to avoid deeply-nested #if/#else/#endif */
19617 # define NSIG (_NSIG)
19623 # define NSIG (SIGMAX+1)
19629 # define NSIG (SIG_MAX+1)
19635 # define NSIG (_SIG_MAX+1)
19641 # define NSIG (MAXSIG+1)
19647 # define NSIG (MAX_SIG+1)
19652 # ifdef SIGARRAYSIZE
19653 # define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
19659 # define NSIG (_sys_nsig) /* Solaris 2.5 */
19663 /* Default to some arbitrary number that's big enough to get most
19664 of the common signals.
19670 printf("NSIG %d\n", NSIG);
19676 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
19678 printf "#ifdef SIG"; printf $1; printf "\n"
19679 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
19680 printf $1; printf ");\n"
19684 printf "#endif /* JUST_NSIG */\n";
19685 printf "exit(0);\n}\n";
19688 $cat >signal.awk <<'EOP'
19689 BEGIN { ndups = 0 }
19690 $1 ~ /^NSIG$/ { nsig = $2 }
19691 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
19692 if ($2 > maxsig) { maxsig = $2 }
19693 if (sig_name[$2]) {
19694 dup_name[ndups] = $1
19695 dup_num[ndups] = $2
19707 printf("NSIG %d\n", nsig);
19708 for (n = 1; n < nsig; n++) {
19710 printf("%s %d\n", sig_name[n], sig_num[n])
19713 printf("NUM%d %d\n", n, n)
19716 for (n = 0; n < ndups; n++) {
19717 printf("%s %d\n", dup_name[n], dup_num[n])
19721 $cat >signal_cmd <<EOS
19723 if $test -s signal.lst; then
19724 echo "Using your existing signal.lst file"
19729 $cat >>signal_cmd <<'EOS'
19732 if eval $compile_ok; then
19733 $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19735 echo "(I can't seem be able to compile the whole test program)" >&4
19736 echo "(I'll try it in little pieces.)" >&4
19737 set signal -DJUST_NSIG
19738 if eval $compile_ok; then
19739 $run ./signal$_exe > signal.nsg
19742 echo "I can't seem to figure out how many signals you have." >&4
19743 echo "Guessing 50." >&4
19744 echo 'NSIG 50' > signal.nsg
19746 : Now look at all the signal names, one at a time.
19747 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19748 $cat > signal.c <<EOCP
19749 #include <sys/types.h>
19750 #include <signal.h>
19753 printf("$xx %d\n", SIG${xx});
19758 if eval $compile; then
19759 echo "SIG${xx} found."
19760 $run ./signal$_exe >> signal.ls1
19762 echo "SIG${xx} NOT found."
19765 if $test -s signal.ls1; then
19766 $cat signal.nsg signal.ls1 |
19767 $sort -n | $uniq | $awk -f signal.awk >signal.lst
19771 if $test -s signal.lst; then
19774 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19775 echo 'kill -l' >signal
19776 set X `csh -f <signal`
19780 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19782 echo $@ | $tr ' ' $trnl | \
19783 $awk '{ printf "%s %d\n", $1, ++s; }
19784 END { printf "NSIG %d\n", ++s }' >signal.lst
19786 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19788 chmod a+x signal_cmd
19789 $eunicefix signal_cmd
19791 : generate list of signal names
19793 case "$sig_name_init" in
19795 *) case "$sig_num_init" in
19796 ''|*,*) doinit=yes ;;
19801 echo "Generating a list of signal names and numbers..." >&4
19803 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19804 sig_name=`$awk 'BEGIN { printf "ZERO " }
19805 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19806 sig_num=`$awk 'BEGIN { printf "0 " }
19807 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19808 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
19809 !/^NSIG/ { printf "\"%s\", ", $1 }
19810 END { printf "0\n" }' signal.lst`
19811 sig_num_init=`$awk 'BEGIN { printf "0, " }
19812 !/^NSIG/ { printf "%d, ", $2}
19813 END { printf "0\n"}' signal.lst`
19816 echo "The following $sig_count signals are available:"
19818 echo $sig_name | $awk \
19819 'BEGIN { linelen = 0 }
19821 for (i = 1; i <= NF; i++) {
19822 name = "SIG" $i " "
19823 linelen = linelen + length(name)
19824 if (linelen > 70) {
19826 linelen = length(name)
19832 sig_size=`echo $sig_name | awk '{print NF}'`
19833 $rm -f signal signal.c signal.awk signal.lst signal_cmd
19836 case "$sizetype" in
19837 *_t) zzz="$sizetype" ;;
19838 *) zzz="filesize" ;;
19840 echo "Checking the size of $zzz..." >&4
19842 #include <sys/types.h>
19844 #$i_stdlib I_STDLIB
19846 #include <stdlib.h>
19849 printf("%d\n", (int)sizeof($sizetype));
19854 if eval $compile_ok; then
19858 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19861 echo "Your $zzz size is $sizesize bytes."
19866 echo "(I can't compile the test program--guessing $sizesize.)" >&4
19870 : check for socklen_t
19872 echo "Checking to see if you have socklen_t..." >&4
19874 #include <sys/types.h>
19875 #$d_socket HAS_SOCKET
19877 #include <sys/socket.h>
19879 int main() { socklen_t x = 16; }
19882 if eval $compile; then
19884 echo "You have socklen_t."
19887 echo "You do not have socklen_t."
19888 case "$sizetype" in
19889 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19896 : see if this is a socks.h system
19897 set socks.h i_socks
19900 : check for type of the size argument to socket calls
19901 case "$d_socket" in
19905 Checking to see what type is the last argument of accept().
19908 case "$d_socklen_t" in
19909 "$define") yyy="$yyy socklen_t"
19911 yyy="$yyy $sizetype int long unsigned"
19912 for xxx in $yyy; do
19913 case "$socksizetype" in
19914 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
19915 case "$usesocks" in
19917 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19918 echo "Your system accepts '$xxx *' for the last argument of accept()."
19919 socksizetype="$xxx"
19922 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
19923 echo "Your system accepts '$xxx *' for the last argument of accept()."
19924 socksizetype="$xxx"
19931 : In case none of those worked, prompt the user.
19932 case "$socksizetype" in
19933 '') rp='What is the type for socket address structure sizes?'
19940 *) : no sockets, so pick relatively harmless default
19945 : see what type is used for signed size_t
19946 set ssize_t ssizetype int stdio.h sys/types.h
19951 #$i_stdlib I_STDLIB
19953 #include <stdlib.h>
19955 #include <sys/types.h>
19956 #define Size_t $sizetype
19957 #define SSize_t $dflt
19960 if (sizeof(Size_t) == sizeof(SSize_t))
19962 else if (sizeof(Size_t) == sizeof(int))
19971 if eval $compile_ok && $run ./try > /dev/null; then
19972 ssizetype=`$run ./try`
19973 echo "I'll be using $ssizetype for functions returning a byte count." >&4
19976 Help! I can't compile and run the ssize_t test program: please enlighten me!
19977 (This is probably a misconfiguration in your system or libraries, and
19978 you really ought to fix it. Still, I'll try anyway.)
19980 I need a type that is the same size as $sizetype, but is guaranteed to
19981 be signed. Common values are ssize_t, int and long.
19984 rp="What signed type is the same size as $sizetype?"
19990 : see what type of char stdio uses.
19992 echo '#include <stdio.h>' > stdio.c
19993 $cppstdin $cppminus < stdio.c > stdioh
19994 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19995 echo "Your stdio uses unsigned chars." >&4
19996 stdchar="unsigned char"
19998 echo "Your stdio uses signed chars." >&4
20001 $rm -f stdio.* stdioh
20003 : see what type uids are declared as in the kernel
20005 echo "Looking for the type for user ids returned by getuid()."
20006 set uid_t uidtype xxx stdio.h sys/types.h
20010 xxx=`./findhdr sys/user.h`
20011 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
20013 unsigned) dflt="$1 $2" ;;
20017 *) dflt="$uidtype";;
20020 uid_t) echo "uid_t found." ;;
20021 *) rp="What is the type for user ids returned by getuid()?"
20029 *_t) zzz="$uidtype" ;;
20032 echo "Checking the size of $zzz..." >&4
20034 #include <sys/types.h>
20036 #$i_stdlib I_STDLIB
20038 #include <stdlib.h>
20041 printf("%d\n", (int)sizeof($uidtype));
20046 if eval $compile_ok; then
20050 echo "(I can't execute the test program--guessing $uidsize.)" >&4
20053 echo "Your $zzz is $uidsize bytes long."
20058 echo "(I can't compile the test program--guessing $uidsize.)" >&4
20063 *_t) zzz="$uidtype" ;;
20066 echo "Checking the sign of $zzz..." >&4
20068 #include <sys/types.h>
20079 if eval $compile; then
20083 echo "(I can't execute the test program--guessing unsigned.)" >&4
20087 1) echo "Your $zzz is unsigned." ;;
20088 -1) echo "Your $zzz is signed." ;;
20094 echo "(I can't compile the test program--guessing unsigned.)" >&4
20100 $echo "Checking the format string to be used for uids..." >&4
20103 -1) if $test X"$uidsize" = X"$ivsize"; then
20104 uidformat="$ivdformat"
20106 if $test X"$uidsize" = X"$longsize"; then
20109 if $test X"$uidsize" = X"$intsize"; then
20112 if $test X"$uidsize" = X"$shortsize"; then
20119 *) if $test X"$uidsize" = X"$uvsize"; then
20120 uidformat="$uvuformat"
20122 if $test X"$uidsize" = X"$longsize"; then
20125 if $test X"$uidsize" = X"$intsize"; then
20128 if $test X"$uidsize" = X"$shortsize"; then
20138 case "$usesitecustomize" in
20139 $define|true|[Yy]*)
20140 usesitecustomize="$define"
20143 usesitecustomize="$undef"
20147 : determine compiler compiler
20156 if $test -f "$byacc$_exe"; then
20158 comp="byacc or $comp"
20160 if $test -f "$bison$_exe"; then
20161 comp="$comp or bison -y"
20163 rp="Which compiler compiler ($comp) shall I use?"
20172 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
20178 : see if this is a fp.h system
20182 : see if this is a fp_class.h system
20183 set fp_class.h i_fp_class
20186 : see if this is a ieeefp.h system
20187 case "$i_ieeefp" in
20188 '' ) set ieeefp.h i_ieeefp
20193 : see if this is a libutil.h system
20194 set libutil.h i_libutil
20197 : see if mach cthreads are available
20198 if test "X$usethreads" = "X$define"; then
20199 set mach/cthreads.h i_machcthr
20202 i_machcthr="$undef"
20207 : see if this is a mntent.h system
20208 set mntent.h i_mntent
20211 : see if ndbm.h is available
20217 # Some Linux distributions such as RedHat 7.1 put the
20218 # ndbm.h header in /usr/include/gdbm/ndbm.h.
20219 if $test -f /usr/include/gdbm/ndbm.h; then
20220 echo '<gdbm/ndbm.h> found.'
20221 ccflags="$ccflags -I/usr/include/gdbm"
20222 cppflags="$cppflags -I/usr/include/gdbm"
20230 : see if dbm_open exists
20231 set dbm_open d_dbm_open
20233 case "$d_dbm_open" in
20236 echo "We won't be including <ndbm.h>"
20245 : see if net/errno.h is available
20247 set net/errno.h val
20250 : Unfortunately, it causes problems on some systems. Arrgh.
20253 cat > try.c <<'EOM'
20256 #include <net/errno.h>
20262 if $cc $ccflags -c try.c >/dev/null 2>&1; then
20263 echo "We'll be including <net/errno.h>." >&4
20265 echo "We won't be including <net/errno.h>." >&4
20274 : see if netinet/tcp.h is available
20275 set netinet/tcp.h i_netinettcp
20278 : see if this is a poll.h system
20282 : see if this is a prot.h system
20287 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
20288 $cat <<'EOSH' > Cppsym.know
20289 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
20290 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
20291 alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX
20292 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
20293 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
20294 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
20295 bull c cadmus clipper CMU COFF COMPILER_VERSION
20296 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
20297 CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
20298 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
20299 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
20301 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
20302 H3050R H3050RX hbullx20 hcx host_mips
20303 hp200 hp300 hp700 HP700 hp800 hp9000
20304 hp9000s200 hp9000s300 hp9000s400 hp9000s500
20305 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
20306 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
20307 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
20308 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
20309 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
20310 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
20311 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
20312 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
20313 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
20314 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
20315 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
20316 MATH_HAS_NO_SIDE_EFFECTS
20317 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
20318 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
20319 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
20320 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
20321 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
20322 NetBSD news1500 news1700 news1800 news1900 news3700
20323 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
20324 ns32016 ns32332 ns32k nsc32000
20325 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
20326 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
20327 pc532 pdp11 PGC PIC plexus PORTAR posix
20328 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
20329 POSIX_C_SOURCE POSIX_SOURCE POWER
20330 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
20331 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
20332 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
20333 sony sony_news sonyrisc sparc sparclite spectrum
20334 stardent stdc STDC_EXT stratos sun sun3 sun386
20335 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
20336 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
20337 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
20338 sysV68 sysV88 Tek4132 Tek4300 titan
20339 TM3200 TM5400 TM5600
20340 tower tower32 tower32_200 tower32_600 tower32_700
20341 tower32_800 tower32_850 tss
20342 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
20343 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
20344 unix UNIX95 UNIX99 unixpc unos
20345 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
20346 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
20347 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
20349 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286
20350 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
20351 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
20354 # Maybe put other stuff here too.
20355 cat <<EOSH >>Cppsym.know
20358 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
20359 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
20360 $cat Cppsym.know > Cppsym.c
20361 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
20362 $rm -f Cppsym.a Cppsym.b Cppsym.c
20363 cat <<EOSH > Cppsym
20365 if $test \$# -gt 0; then
20366 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
20367 if $test -s Cppsym.got; then
20374 $tr " " "$trnl" | ./Cppsym.try
20380 cat <<EOSH > Cppsym.try
20382 cat <<'EOCP' > try.c
20385 #define STRINGIFY(a) "a"
20387 #if cpp_stuff == 42
20388 #define StGiFy(a) #a
20389 #define STRINGIFY(a) StGiFy(a)
20391 #if $cpp_stuff != 1 && $cpp_stuff != 42
20392 # include "Bletch: How does this C preprocessor stringify macros?"
20398 cat <<'EOSH' >> Cppsym.try
20400 printf "#ifdef %s\nprintf(\"%s=%%s\\n\", STRINGIFY(%s));\n#endif\n", $1, $1, $1
20401 printf "#ifdef _%s\nprintf(\"_%s=%%s\\n\", STRINGIFY(_%s));\n#endif\n", $1, $1, $1
20402 printf "#ifdef __%s\nprintf(\"__%s=%%s\\n\", STRINGIFY(__%s));\n#endif\n", $1, $1, $1
20403 printf "#ifdef __%s__\nprintf(\"__%s__=%%s\\n\", STRINGIFY(__%s__));\n#endif\n", $1, $1, $1
20405 echo 'return 0;}' >> try.c
20407 cat <<EOSH >> Cppsym.try
20409 case "$osname-$gccversion" in
20410 irix-) ccflags="\$ccflags -woff 1178" ;;
20411 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
20413 $cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $run ./try | $sed 's/ /\\\\ /g'
20415 chmod +x Cppsym.try
20416 $eunicefix Cppsym.try
20417 ./Cppsym < Cppsym.know > Cppsym.true
20418 : Add in any linux cpp "predefined macros":
20419 case "$osname::$gccversion" in
20422 rm -f $tHdrH'.h' $tHdrH
20424 if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
20425 sed 's/#define[\ \ ]*//;s/[\ \ ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
20426 if [ -s $tHdrH'_cppsym.real' ]; then
20427 cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
20430 rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real'
20433 : now check the C compiler for additional symbols
20434 postprocess_cc_v=''
20436 aix) postprocess_cc_v="|$tr , ' '" ;;
20443 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
20446 -D*) echo "\$i" | $sed 's/^-D//';;
20447 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
20452 postprocess_cc_v=''
20455 ./ccsym > ccsym1.raw
20456 if $test -s ccsym1.raw; then
20457 $sort ccsym1.raw | $uniq >ccsym.raw
20459 mv ccsym1.raw ccsym.raw
20462 $awk '/\=/ { print $0; next }
20463 { print $0"=1" }' ccsym.raw >ccsym.list
20464 $comm -13 Cppsym.true ccsym.list >ccsym.own
20465 $comm -12 Cppsym.true ccsym.list >ccsym.com
20466 $comm -23 Cppsym.true ccsym.list >ccsym.cpp
20468 if $test -z ccsym.raw; then
20469 echo "Your C compiler doesn't seem to define any symbols!" >&4
20471 echo "However, your C preprocessor defines the following symbols:"
20474 cppsymbols=`$cat Cppsym.true`
20475 cppsymbols=`echo $cppsymbols`
20476 cppccsymbols="$cppsymbols"
20478 if $test -s ccsym.com; then
20479 echo "Your C compiler and pre-processor define these symbols:"
20480 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
20483 cppccsymbols=`$cat ccsym.com`
20484 cppccsymbols=`echo $cppccsymbols`
20485 $test "$silent" || sleep 1
20487 if $test -s ccsym.cpp; then
20488 $test "$also" && echo " "
20489 echo "Your C pre-processor ${also}defines the following symbols:"
20490 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
20492 cppsymbols=`$cat ccsym.cpp`
20493 cppsymbols=`echo $cppsymbols`
20494 $test "$silent" || sleep 1
20496 if $test -s ccsym.own; then
20497 $test "$also" && echo " "
20498 echo "Your C compiler ${also}defines the following cpp symbols:"
20499 $sed -e 's/\(..*\)=1/\1/' ccsym.own
20500 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
20501 ccsymbols=`$cat ccsym.own`
20502 ccsymbols=`echo $ccsymbols`
20503 $test "$silent" || sleep 1
20507 : see if this is a termio system
20511 if $test `./findhdr termios.h`; then
20512 set tcsetattr i_termios
20518 "$define") echo "You have POSIX termios.h... good!" >&4;;
20519 *) if ./Cppsym pyr; then
20520 case "`/bin/universe`" in
20521 ucb) if $test `./findhdr sgtty.h`; then
20523 echo "<sgtty.h> found." >&4
20525 echo "System is pyramid with BSD universe."
20526 echo "<sgtty.h> not found--you could have problems." >&4
20528 *) if $test `./findhdr termio.h`; then
20530 echo "<termio.h> found." >&4
20532 echo "System is pyramid with USG universe."
20533 echo "<termio.h> not found--you could have problems." >&4
20537 if $test `./findhdr termio.h`; then
20538 echo "<termio.h> found." >&4
20540 elif $test `./findhdr sgtty.h`; then
20541 echo "<sgtty.h> found." >&4
20544 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
20547 if $test `./findhdr sgtty.h`; then
20548 echo "<sgtty.h> found." >&4
20550 elif $test `./findhdr termio.h`; then
20551 echo "<termio.h> found." >&4
20554 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
20558 set i_termio; eval $setvar
20559 val=$val2; set i_sgtty; eval $setvar
20560 val=$val3; set i_termios; eval $setvar
20562 : see if stddef is available
20563 set stddef.h i_stddef
20566 : see if this is a sunmath.h system
20567 set sunmath.h i_sunmath
20570 : see if sys/access.h is available
20571 set sys/access.h i_sysaccess
20574 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
20575 set sys/filio.h i_sysfilio
20578 if $test `./findhdr sys/ioctl.h`; then
20580 echo '<sys/ioctl.h> found.' >&4
20583 if $test $i_sysfilio = "$define"; then
20584 echo '<sys/ioctl.h> NOT found.' >&4
20586 $test $i_sgtty = "$define" && xxx="sgtty.h"
20587 $test $i_termio = "$define" && xxx="termio.h"
20588 $test $i_termios = "$define" && xxx="termios.h"
20589 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
20595 : see if socket ioctl defs are in sys/sockio.h
20597 xxx=`./findhdr sys/sockio.h`
20598 if $test "$xxx"; then
20599 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
20601 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
20604 echo "No socket ioctls found in <sys/sockio.h>." >&4
20609 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
20616 : see if this is a syslog.h system
20617 set syslog.h i_syslog
20621 : see if this is a sys/mode.h system
20622 set sys/mode.h i_sysmode
20625 : see if sys/resource.h has to be included
20626 set sys/resource.h i_sysresrc
20629 : see if sys/security.h is available
20630 set sys/security.h i_syssecrt
20633 : see if this is a sys/statvfs.h system
20634 set sys/statvfs.h i_sysstatvfs
20637 : see if this is a sys/un.h system
20638 set sys/un.h i_sysun
20642 : see if this is a sys/utsname.h system
20643 set sys/utsname.h i_sysutsname
20646 : see if this is a syswait system
20647 set sys/wait.h i_syswait
20650 : see if this is a ustat.h system
20651 set ustat.h i_ustat
20654 : see if this is an utime system
20655 set utime.h i_utime
20658 : see if this is a values.h system
20659 set values.h i_values
20662 : see if this is a vfork system
20665 set vfork.h i_vfork
20673 : see if gdbm.h is available
20678 : see if gdbm_open exists
20679 set gdbm_open d_gdbm_open
20681 case "$d_gdbm_open" in
20684 echo "We won't be including <gdbm.h>"
20694 echo "Looking for extensions..." >&4
20695 : If we are using the old config.sh, known_extensions may contain
20696 : old or inaccurate or duplicate values.
20697 known_extensions=''
20698 nonxs_extensions=''
20699 : We do not use find because it might not be available.
20700 : We do not just use MANIFEST because the user may have dropped
20701 : some additional extensions into the source tree and expect them
20704 : Function to recursively find available extensions, ignoring DynaLoader
20705 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
20709 DynaLoader|dynaload) ;;
20711 if $test -f $xxx/$xxx.xs; then
20712 known_extensions="$known_extensions $1$xxx";
20713 elif $test -f $xxx/Makefile.PL; then
20714 nonxs_extensions="$nonxs_extensions $1$xxx";
20716 if $test -d $xxx -a $# -lt 10; then
20719 eval $find_extensions;
20731 eval $find_extensions
20732 # Special case: Add in threads/shared since it is not picked up by the
20733 # recursive find above (and adding in general recursive finding breaks
20734 # SDBM_File/sdbm). A.D. 10/25/2001.
20735 known_extensions="$known_extensions threads/shared"
20736 set X $nonxs_extensions
20738 nonxs_extensions="$*"
20739 set X $known_extensions
20741 known_extensions="$*"
20744 : Now see which are supported on this system.
20746 for xxx in $known_extensions ; do
20750 $define) avail_ext="$avail_ext $xxx" ;;
20753 GDBM_File|gdbm_fil)
20755 $define) avail_ext="$avail_ext $xxx" ;;
20758 I18N/Langinfo|i18n_lan)
20759 case "$i_langinfo$d_nl_langinfo" in
20760 $define$define) avail_ext="$avail_ext $xxx" ;;
20763 NDBM_File|ndbm_fil)
20766 case "$osname-$use64bitint" in
20769 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20772 *) avail_ext="$avail_ext $xxx" ;;
20777 ODBM_File|odbm_fil)
20778 case "${i_dbm}${i_rpcsvcdbm}" in
20780 case "$osname-$use64bitint" in
20783 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20786 *) avail_ext="$avail_ext $xxx" ;;
20792 case "$useposix" in
20793 true|define|y) avail_ext="$avail_ext $xxx" ;;
20797 case "$useopcode" in
20798 true|define|y) avail_ext="$avail_ext $xxx" ;;
20802 case "$d_socket" in
20805 beos) ;; # not unless BONE
20806 *) avail_ext="$avail_ext $xxx" ;;
20811 Sys/Syslog|sys/syslog)
20812 : XXX syslog requires socket
20813 case "$d_socket" in
20814 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20818 case "$usethreads" in
20820 case "$useithreads" in
20821 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20825 XS/APItest|xs/apitest)
20826 # This is just for testing. Skip it unless we have dynamic loading.
20829 $define) avail_ext="$avail_ext $xxx" ;;
20832 XS/Typemap|xs/typemap)
20833 # This is just for testing. Skip it unless we have dynamic loading.
20835 $define) avail_ext="$avail_ext $xxx" ;;
20838 threads|threads/shared)
20839 # threads and threads::shared are special cases.
20840 # To stop people from asking "Perl 5.8.0 was supposed
20841 # to have this new fancy threads implementation but my
20842 # perl doesn't have it" and from people trying to
20843 # (re)install the threads module using CPAN.pm and
20844 # CPAN.pm then offering to reinstall Perl 5.8.0,
20845 # the threads.pm and threads/shared.pm will always be
20846 # there, croaking informatively ("you need to rebuild
20847 # all of Perl with threads, sorry") when threads haven't
20848 # been compiled in.
20850 avail_ext="$avail_ext $xxx"
20853 : XXX Do we need a useipcsysv variable here
20854 case "${d_msg}${d_sem}${d_shm}" in
20855 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20858 *) avail_ext="$avail_ext $xxx"
20867 case "$onlyextensions" in
20869 *) keepextensions=''
20870 echo "You have requested that only certains extensions be included..." >&4
20871 for i in $onlyextensions; do
20872 case " $avail_ext " in
20874 echo "Keeping extension $i."
20875 keepextensions="$keepextensions $i"
20877 *) echo "Ignoring extension $i." ;;
20880 avail_ext="$keepextensions"
20884 case "$noextensions" in
20886 *) keepextensions=''
20887 echo "You have requested that certain extensions be ignored..." >&4
20888 for i in $avail_ext; do
20889 case " $noextensions " in
20890 *" $i "*) echo "Ignoring extension $i." ;;
20891 *) echo "Keeping extension $i.";
20892 keepextensions="$keepextensions $i"
20896 avail_ext="$keepextensions"
20900 : Now see which nonxs extensions are supported on this system.
20901 : For now assume all are.
20903 for xxx in $nonxs_extensions ; do
20905 *) nonxs_ext="$nonxs_ext $xxx"
20917 A number of extensions are supplied with $package. You may choose to
20918 compile these extensions for dynamic loading (the default), compile
20919 them into the $package executable (static loading), or not include
20920 them at all. Answer "none" to include no extensions.
20921 Note that DynaLoader is always built and need not be mentioned here.
20924 case "$dynamic_ext" in
20926 : Exclude those listed in static_ext
20928 for xxx in $avail_ext; do
20929 case " $static_ext " in
20931 *) dflt="$dflt $xxx" ;;
20938 *) dflt="$dynamic_ext"
20939 # Perhaps we are reusing an old out-of-date config.sh.
20942 if test X"$dynamic_ext" != X"$avail_ext"; then
20944 NOTICE: Your previous config.sh list may be incorrect.
20945 The extensions now available to you are
20947 but the default list from your previous config.sh is
20959 rp="What extensions do you wish to load dynamically?"
20962 none) dynamic_ext=' ' ;;
20963 *) dynamic_ext="$ans" ;;
20966 case "$static_ext" in
20968 : Exclude those already listed in dynamic linking
20970 for xxx in $avail_ext; do
20971 case " $dynamic_ext " in
20973 *) dflt="$dflt $xxx" ;;
20980 *) dflt="$static_ext"
20987 rp="What extensions do you wish to load statically?"
20990 none) static_ext=' ' ;;
20991 *) static_ext="$ans" ;;
20996 A number of extensions are supplied with $package. Answer "none"
20997 to include no extensions.
20998 Note that DynaLoader is always built and need not be mentioned here.
21001 case "$static_ext" in
21002 '') dflt="$avail_ext" ;;
21003 *) dflt="$static_ext"
21004 # Perhaps we are reusing an old out-of-date config.sh.
21007 if test X"$static_ext" != X"$avail_ext"; then
21009 NOTICE: Your previous config.sh list may be incorrect.
21010 The extensions now available to you are
21012 but the default list from your previous config.sh is
21021 : Exclude those that are not xs extensions
21025 rp="What extensions do you wish to include?"
21028 none) static_ext=' ' ;;
21029 *) static_ext="$ans" ;;
21034 # Encode is a special case. If we are building Encode as a static
21035 # extension, we need to explicitly list its subextensions as well.
21036 # For other nested extensions, this is handled automatically by
21037 # the appropriate Makefile.PL.
21038 case " $static_ext " in
21039 *" Encode "*) # Add the subextensions of Encode
21041 for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
21042 static_ext="$static_ext Encode/$xxx"
21048 set X $dynamic_ext $static_ext $nonxs_ext
21052 # Sanity check: We require an extension suitable for use with
21053 # AnyDBM_File, as well as Fcntl and IO. (Failure to have these
21054 # should show up as failures in the test suite, but it's helpful to
21055 # catch them now.) The 'extensions' list is normally sorted
21056 # alphabetically, so we need to accept either
21057 # DB_File ... Fcntl ... IO ....
21058 # or something like
21059 # Fcntl ... NDBM_File ... IO ....
21060 case " $extensions" in
21061 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
21062 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
21063 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
21064 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
21065 echo "WARNING: The Perl you are building will be quite crippled." >& 4
21069 : Remove libraries needed only for extensions
21070 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
21071 : The exception is SunOS 4.x, which needs them.
21072 case "${osname}X${osvers}" in
21076 *) case "$usedl" in
21077 $define|true|[yY]*)
21078 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
21082 *) perllibs="$libs"
21088 : Remove build directory name from cppstdin so it can be used from
21089 : either the present location or the final installed location.
21091 : Get out of the UU directory to get correct path name.
21093 case "$cppstdin" in
21095 echo "Stripping down cppstdin path name"
21101 : end of configuration questions
21103 echo "End of configuration questions."
21106 : back to where it started
21107 if test -d ../UU; then
21111 : configuration may be patched via a 'config.arch' file
21112 if $test -f config.arch; then
21113 echo "I see a config.arch file, loading it."
21117 : configuration may be patched via a 'config.over' file
21118 if $test -f config.over; then
21121 rp='I see a config.over file. Do you wish to load it?'
21124 n*) echo "OK, I'll ignore it.";;
21126 echo "Configuration override changes have been loaded."
21131 : in case they want portability, strip down executable paths
21132 case "$d_portable" in
21135 echo "Stripping down executable paths..." >&4
21136 for file in $loclist $trylist; do
21138 eval $file=`basename $temp`
21143 : create config.sh file
21145 echo "Creating config.sh..." >&4
21146 $spitshell <<EOT >config.sh
21149 # This file was produced by running the Configure script. It holds all the
21150 # definitions figured out by Configure. Should you modify one of these values,
21151 # do not forget to propagate your changes by running "Configure -der". You may
21152 # instead choose to run each of the .SH files by yourself, or "Configure -S".
21155 # Package name : $package
21156 # Source directory : $src
21157 # Configuration time: $cf_time
21158 # Configured by : $cf_by
21159 # Target system : $myuname
21169 Revision='$Revision'
21177 alignbytes='$alignbytes'
21178 ansi2knr='$ansi2knr'
21179 aphostname='$aphostname'
21180 api_revision='$api_revision'
21181 api_subversion='$api_subversion'
21182 api_version='$api_version'
21183 api_versionstring='$api_versionstring'
21186 archlibexp='$archlibexp'
21187 archname64='$archname64'
21188 archname='$archname'
21189 archobjs='$archobjs'
21190 asctime_r_proto='$asctime_r_proto'
21198 byteorder='$byteorder'
21200 castflags='$castflags'
21203 cccdlflags='$cccdlflags'
21204 ccdlflags='$ccdlflags'
21206 ccflags_uselargefiles='$ccflags_uselargefiles'
21208 ccsymbols='$ccsymbols'
21209 ccversion='$ccversion'
21211 cf_email='$cf_email'
21213 charsize='$charsize'
21217 clocktype='$clocktype'
21219 compress='$compress'
21220 contains='$contains'
21224 cpp_stuff='$cpp_stuff'
21225 cppccsymbols='$cppccsymbols'
21226 cppflags='$cppflags'
21228 cppminus='$cppminus'
21230 cppstdin='$cppstdin'
21231 cppsymbols='$cppsymbols'
21232 crypt_r_proto='$crypt_r_proto'
21233 cryptlib='$cryptlib'
21235 ctermid_r_proto='$ctermid_r_proto'
21236 ctime_r_proto='$ctime_r_proto'
21237 d_Gconvert='$d_Gconvert'
21238 d_PRIEUldbl='$d_PRIEUldbl'
21239 d_PRIFUldbl='$d_PRIFUldbl'
21240 d_PRIGUldbl='$d_PRIGUldbl'
21241 d_PRIXU64='$d_PRIXU64'
21242 d_PRId64='$d_PRId64'
21243 d_PRIeldbl='$d_PRIeldbl'
21244 d_PRIfldbl='$d_PRIfldbl'
21245 d_PRIgldbl='$d_PRIgldbl'
21246 d_PRIi64='$d_PRIi64'
21247 d_PRIo64='$d_PRIo64'
21248 d_PRIu64='$d_PRIu64'
21249 d_PRIx64='$d_PRIx64'
21250 d_SCNfldbl='$d_SCNfldbl'
21251 d__fwalk='$d__fwalk'
21252 d_access='$d_access'
21253 d_accessx='$d_accessx'
21256 d_archlib='$d_archlib'
21257 d_asctime_r='$d_asctime_r'
21260 d_attribute_format='$d_attribute_format'
21261 d_attribute_malloc='$d_attribute_malloc'
21262 d_attribute_nonnull='$d_attribute_nonnull'
21263 d_attribute_noreturn='$d_attribute_noreturn'
21264 d_attribute_pure='$d_attribute_pure'
21265 d_attribute_unused='$d_attribute_unused'
21266 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
21270 d_bsdgetpgrp='$d_bsdgetpgrp'
21271 d_bsdsetpgrp='$d_bsdsetpgrp'
21272 d_builtin_choose_expr='$d_builtin_choose_expr'
21273 d_builtin_expect='$d_builtin_expect'
21275 d_casti32='$d_casti32'
21276 d_castneg='$d_castneg'
21277 d_charvspr='$d_charvspr'
21279 d_chroot='$d_chroot'
21280 d_chsize='$d_chsize'
21282 d_clearenv='$d_clearenv'
21283 d_closedir='$d_closedir'
21284 d_cmsghdr_s='$d_cmsghdr_s'
21286 d_copysignl='$d_copysignl'
21288 d_crypt_r='$d_crypt_r'
21290 d_ctermid_r='$d_ctermid_r'
21291 d_ctime_r='$d_ctime_r'
21292 d_cuserid='$d_cuserid'
21293 d_dbl_dig='$d_dbl_dig'
21294 d_dbminitproto='$d_dbminitproto'
21295 d_difftime='$d_difftime'
21297 d_dirnamlen='$d_dirnamlen'
21298 d_dlerror='$d_dlerror'
21299 d_dlopen='$d_dlopen'
21300 d_dlsymun='$d_dlsymun'
21301 d_dosuid='$d_dosuid'
21302 d_drand48_r='$d_drand48_r'
21303 d_drand48proto='$d_drand48proto'
21305 d_eaccess='$d_eaccess'
21306 d_endgrent='$d_endgrent'
21307 d_endgrent_r='$d_endgrent_r'
21308 d_endhent='$d_endhent'
21309 d_endhostent_r='$d_endhostent_r'
21310 d_endnent='$d_endnent'
21311 d_endnetent_r='$d_endnetent_r'
21312 d_endpent='$d_endpent'
21313 d_endprotoent_r='$d_endprotoent_r'
21314 d_endpwent='$d_endpwent'
21315 d_endpwent_r='$d_endpwent_r'
21316 d_endsent='$d_endsent'
21317 d_endservent_r='$d_endservent_r'
21318 d_eofnblk='$d_eofnblk'
21319 d_eunice='$d_eunice'
21320 d_faststdio='$d_faststdio'
21321 d_fchdir='$d_fchdir'
21322 d_fchmod='$d_fchmod'
21323 d_fchown='$d_fchown'
21325 d_fcntl_can_lock='$d_fcntl_can_lock'
21326 d_fd_macros='$d_fd_macros'
21327 d_fd_set='$d_fd_set'
21328 d_fds_bits='$d_fds_bits'
21329 d_fgetpos='$d_fgetpos'
21330 d_finite='$d_finite'
21331 d_finitel='$d_finitel'
21332 d_flexfnam='$d_flexfnam'
21334 d_flockproto='$d_flockproto'
21336 d_fp_class='$d_fp_class'
21337 d_fpathconf='$d_fpathconf'
21338 d_fpclass='$d_fpclass'
21339 d_fpclassify='$d_fpclassify'
21340 d_fpclassl='$d_fpclassl'
21341 d_fpos64_t='$d_fpos64_t'
21342 d_frexpl='$d_frexpl'
21343 d_fs_data_s='$d_fs_data_s'
21344 d_fseeko='$d_fseeko'
21345 d_fsetpos='$d_fsetpos'
21346 d_fstatfs='$d_fstatfs'
21347 d_fstatvfs='$d_fstatvfs'
21349 d_ftello='$d_ftello'
21351 d_futimes='$d_futimes'
21352 d_getcwd='$d_getcwd'
21353 d_getespwnam='$d_getespwnam'
21354 d_getfsstat='$d_getfsstat'
21355 d_getgrent='$d_getgrent'
21356 d_getgrent_r='$d_getgrent_r'
21357 d_getgrgid_r='$d_getgrgid_r'
21358 d_getgrnam_r='$d_getgrnam_r'
21359 d_getgrps='$d_getgrps'
21360 d_gethbyaddr='$d_gethbyaddr'
21361 d_gethbyname='$d_gethbyname'
21362 d_gethent='$d_gethent'
21363 d_gethname='$d_gethname'
21364 d_gethostbyaddr_r='$d_gethostbyaddr_r'
21365 d_gethostbyname_r='$d_gethostbyname_r'
21366 d_gethostent_r='$d_gethostent_r'
21367 d_gethostprotos='$d_gethostprotos'
21368 d_getitimer='$d_getitimer'
21369 d_getlogin='$d_getlogin'
21370 d_getlogin_r='$d_getlogin_r'
21371 d_getmnt='$d_getmnt'
21372 d_getmntent='$d_getmntent'
21373 d_getnbyaddr='$d_getnbyaddr'
21374 d_getnbyname='$d_getnbyname'
21375 d_getnent='$d_getnent'
21376 d_getnetbyaddr_r='$d_getnetbyaddr_r'
21377 d_getnetbyname_r='$d_getnetbyname_r'
21378 d_getnetent_r='$d_getnetent_r'
21379 d_getnetprotos='$d_getnetprotos'
21380 d_getpagsz='$d_getpagsz'
21381 d_getpbyname='$d_getpbyname'
21382 d_getpbynumber='$d_getpbynumber'
21383 d_getpent='$d_getpent'
21384 d_getpgid='$d_getpgid'
21385 d_getpgrp2='$d_getpgrp2'
21386 d_getpgrp='$d_getpgrp'
21387 d_getppid='$d_getppid'
21388 d_getprior='$d_getprior'
21389 d_getprotobyname_r='$d_getprotobyname_r'
21390 d_getprotobynumber_r='$d_getprotobynumber_r'
21391 d_getprotoent_r='$d_getprotoent_r'
21392 d_getprotoprotos='$d_getprotoprotos'
21393 d_getprpwnam='$d_getprpwnam'
21394 d_getpwent='$d_getpwent'
21395 d_getpwent_r='$d_getpwent_r'
21396 d_getpwnam_r='$d_getpwnam_r'
21397 d_getpwuid_r='$d_getpwuid_r'
21398 d_getsbyname='$d_getsbyname'
21399 d_getsbyport='$d_getsbyport'
21400 d_getsent='$d_getsent'
21401 d_getservbyname_r='$d_getservbyname_r'
21402 d_getservbyport_r='$d_getservbyport_r'
21403 d_getservent_r='$d_getservent_r'
21404 d_getservprotos='$d_getservprotos'
21405 d_getspnam='$d_getspnam'
21406 d_getspnam_r='$d_getspnam_r'
21407 d_gettimeod='$d_gettimeod'
21408 d_gmtime_r='$d_gmtime_r'
21409 d_gnulibc='$d_gnulibc'
21410 d_grpasswd='$d_grpasswd'
21411 d_hasmntopt='$d_hasmntopt'
21413 d_ilogbl='$d_ilogbl'
21415 d_inetaton='$d_inetaton'
21416 d_int64_t='$d_int64_t'
21417 d_isascii='$d_isascii'
21418 d_isfinite='$d_isfinite'
21421 d_isnanl='$d_isnanl'
21422 d_killpg='$d_killpg'
21423 d_lchown='$d_lchown'
21424 d_ldbl_dig='$d_ldbl_dig'
21425 d_libm_lib_version='$d_libm_lib_version'
21427 d_localtime_r='$d_localtime_r'
21428 d_locconv='$d_locconv'
21430 d_longdbl='$d_longdbl'
21431 d_longlong='$d_longlong'
21432 d_lseekproto='$d_lseekproto'
21434 d_madvise='$d_madvise'
21435 d_malloc_good_size='$d_malloc_good_size'
21436 d_malloc_size='$d_malloc_size'
21438 d_mbstowcs='$d_mbstowcs'
21439 d_mbtowc='$d_mbtowc'
21440 d_memchr='$d_memchr'
21441 d_memcmp='$d_memcmp'
21442 d_memcpy='$d_memcpy'
21443 d_memmove='$d_memmove'
21444 d_memset='$d_memset'
21446 d_mkdtemp='$d_mkdtemp'
21447 d_mkfifo='$d_mkfifo'
21448 d_mkstemp='$d_mkstemp'
21449 d_mkstemps='$d_mkstemps'
21450 d_mktime='$d_mktime'
21453 d_modfl_pow32_bug='$d_modfl_pow32_bug'
21454 d_modflproto='$d_modflproto'
21455 d_mprotect='$d_mprotect'
21457 d_msg_ctrunc='$d_msg_ctrunc'
21458 d_msg_dontroute='$d_msg_dontroute'
21459 d_msg_oob='$d_msg_oob'
21460 d_msg_peek='$d_msg_peek'
21461 d_msg_proxy='$d_msg_proxy'
21462 d_msgctl='$d_msgctl'
21463 d_msgget='$d_msgget'
21464 d_msghdr_s='$d_msghdr_s'
21465 d_msgrcv='$d_msgrcv'
21466 d_msgsnd='$d_msgsnd'
21468 d_munmap='$d_munmap'
21469 d_mymalloc='$d_mymalloc'
21471 d_nl_langinfo='$d_nl_langinfo'
21472 d_nv_preserves_uv='$d_nv_preserves_uv'
21473 d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero'
21474 d_off64_t='$d_off64_t'
21475 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
21476 d_oldpthreads='$d_oldpthreads'
21477 d_oldsock='$d_oldsock'
21479 d_pathconf='$d_pathconf'
21481 d_perl_otherlibdirs='$d_perl_otherlibdirs'
21482 d_phostname='$d_phostname'
21485 d_portable='$d_portable'
21486 d_procselfexe='$d_procselfexe'
21487 d_pthread_atfork='$d_pthread_atfork'
21488 d_pthread_attr_setscope='$d_pthread_attr_setscope'
21489 d_pthread_yield='$d_pthread_yield'
21491 d_pwchange='$d_pwchange'
21492 d_pwclass='$d_pwclass'
21493 d_pwcomment='$d_pwcomment'
21494 d_pwexpire='$d_pwexpire'
21495 d_pwgecos='$d_pwgecos'
21496 d_pwpasswd='$d_pwpasswd'
21497 d_pwquota='$d_pwquota'
21500 d_random_r='$d_random_r'
21501 d_readdir64_r='$d_readdir64_r'
21502 d_readdir='$d_readdir'
21503 d_readdir_r='$d_readdir_r'
21504 d_readlink='$d_readlink'
21506 d_recvmsg='$d_recvmsg'
21507 d_rename='$d_rename'
21508 d_rewinddir='$d_rewinddir'
21510 d_safebcpy='$d_safebcpy'
21511 d_safemcpy='$d_safemcpy'
21512 d_sanemcmp='$d_sanemcmp'
21513 d_sbrkproto='$d_sbrkproto'
21514 d_scalbnl='$d_scalbnl'
21515 d_sched_yield='$d_sched_yield'
21516 d_scm_rights='$d_scm_rights'
21517 d_seekdir='$d_seekdir'
21518 d_select='$d_select'
21520 d_semctl='$d_semctl'
21521 d_semctl_semid_ds='$d_semctl_semid_ds'
21522 d_semctl_semun='$d_semctl_semun'
21523 d_semget='$d_semget'
21525 d_sendmsg='$d_sendmsg'
21526 d_setegid='$d_setegid'
21527 d_seteuid='$d_seteuid'
21528 d_setgrent='$d_setgrent'
21529 d_setgrent_r='$d_setgrent_r'
21530 d_setgrps='$d_setgrps'
21531 d_sethent='$d_sethent'
21532 d_sethostent_r='$d_sethostent_r'
21533 d_setitimer='$d_setitimer'
21534 d_setlinebuf='$d_setlinebuf'
21535 d_setlocale='$d_setlocale'
21536 d_setlocale_r='$d_setlocale_r'
21537 d_setnent='$d_setnent'
21538 d_setnetent_r='$d_setnetent_r'
21539 d_setpent='$d_setpent'
21540 d_setpgid='$d_setpgid'
21541 d_setpgrp2='$d_setpgrp2'
21542 d_setpgrp='$d_setpgrp'
21543 d_setprior='$d_setprior'
21544 d_setproctitle='$d_setproctitle'
21545 d_setprotoent_r='$d_setprotoent_r'
21546 d_setpwent='$d_setpwent'
21547 d_setpwent_r='$d_setpwent_r'
21548 d_setregid='$d_setregid'
21549 d_setresgid='$d_setresgid'
21550 d_setresuid='$d_setresuid'
21551 d_setreuid='$d_setreuid'
21552 d_setrgid='$d_setrgid'
21553 d_setruid='$d_setruid'
21554 d_setsent='$d_setsent'
21555 d_setservent_r='$d_setservent_r'
21556 d_setsid='$d_setsid'
21557 d_setvbuf='$d_setvbuf'
21561 d_shmatprototype='$d_shmatprototype'
21562 d_shmctl='$d_shmctl'
21564 d_shmget='$d_shmget'
21565 d_sigaction='$d_sigaction'
21566 d_sigprocmask='$d_sigprocmask'
21567 d_sigsetjmp='$d_sigsetjmp'
21568 d_snprintf='$d_snprintf'
21569 d_sockatmark='$d_sockatmark'
21570 d_sockatmarkproto='$d_sockatmarkproto'
21571 d_socket='$d_socket'
21572 d_socklen_t='$d_socklen_t'
21573 d_sockpair='$d_sockpair'
21574 d_socks5_init='$d_socks5_init'
21575 d_sprintf_returns_strlen='$d_sprintf_returns_strlen'
21577 d_srand48_r='$d_srand48_r'
21578 d_srandom_r='$d_srandom_r'
21579 d_sresgproto='$d_sresgproto'
21580 d_sresuproto='$d_sresuproto'
21581 d_statblks='$d_statblks'
21582 d_statfs_f_flags='$d_statfs_f_flags'
21583 d_statfs_s='$d_statfs_s'
21584 d_statvfs='$d_statvfs'
21585 d_stdio_cnt_lval='$d_stdio_cnt_lval'
21586 d_stdio_ptr_lval='$d_stdio_ptr_lval'
21587 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
21588 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
21589 d_stdio_stream_array='$d_stdio_stream_array'
21590 d_stdiobase='$d_stdiobase'
21591 d_stdstdio='$d_stdstdio'
21592 d_strchr='$d_strchr'
21593 d_strcoll='$d_strcoll'
21594 d_strctcpy='$d_strctcpy'
21595 d_strerrm='$d_strerrm'
21596 d_strerror='$d_strerror'
21597 d_strerror_r='$d_strerror_r'
21598 d_strftime='$d_strftime'
21599 d_strlcat='$d_strlcat'
21600 d_strlcpy='$d_strlcpy'
21601 d_strtod='$d_strtod'
21602 d_strtol='$d_strtol'
21603 d_strtold='$d_strtold'
21604 d_strtoll='$d_strtoll'
21605 d_strtoq='$d_strtoq'
21606 d_strtoul='$d_strtoul'
21607 d_strtoull='$d_strtoull'
21608 d_strtouq='$d_strtouq'
21609 d_strxfrm='$d_strxfrm'
21610 d_suidsafe='$d_suidsafe'
21611 d_symlink='$d_symlink'
21612 d_syscall='$d_syscall'
21613 d_syscallproto='$d_syscallproto'
21614 d_sysconf='$d_sysconf'
21615 d_sysernlst='$d_sysernlst'
21616 d_syserrlst='$d_syserrlst'
21617 d_system='$d_system'
21618 d_tcgetpgrp='$d_tcgetpgrp'
21619 d_tcsetpgrp='$d_tcsetpgrp'
21620 d_telldir='$d_telldir'
21621 d_telldirproto='$d_telldirproto'
21624 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
21625 d_tm_tm_zone='$d_tm_tm_zone'
21626 d_tmpnam_r='$d_tmpnam_r'
21627 d_truncate='$d_truncate'
21628 d_ttyname_r='$d_ttyname_r'
21629 d_tzname='$d_tzname'
21630 d_u32align='$d_u32align'
21631 d_ualarm='$d_ualarm'
21634 d_union_semun='$d_union_semun'
21635 d_unordered='$d_unordered'
21636 d_unsetenv='$d_unsetenv'
21637 d_usleep='$d_usleep'
21638 d_usleepproto='$d_usleepproto'
21640 d_vendorarch='$d_vendorarch'
21641 d_vendorbin='$d_vendorbin'
21642 d_vendorlib='$d_vendorlib'
21643 d_vendorscript='$d_vendorscript'
21645 d_void_closedir='$d_void_closedir'
21646 d_voidsig='$d_voidsig'
21647 d_voidtty='$d_voidtty'
21648 d_volatile='$d_volatile'
21649 d_vprintf='$d_vprintf'
21650 d_vsnprintf='$d_vsnprintf'
21652 d_waitpid='$d_waitpid'
21653 d_wcstombs='$d_wcstombs'
21654 d_wctomb='$d_wctomb'
21655 d_writev='$d_writev'
21658 db_hashtype='$db_hashtype'
21659 db_prefixtype='$db_prefixtype'
21660 db_version_major='$db_version_major'
21661 db_version_minor='$db_version_minor'
21662 db_version_patch='$db_version_patch'
21663 defvoidused='$defvoidused'
21664 direntrytype='$direntrytype'
21667 doublesize='$doublesize'
21669 drand48_r_proto='$drand48_r_proto'
21670 dynamic_ext='$dynamic_ext'
21676 endgrent_r_proto='$endgrent_r_proto'
21677 endhostent_r_proto='$endhostent_r_proto'
21678 endnetent_r_proto='$endnetent_r_proto'
21679 endprotoent_r_proto='$endprotoent_r_proto'
21680 endpwent_r_proto='$endpwent_r_proto'
21681 endservent_r_proto='$endservent_r_proto'
21682 eunicefix='$eunicefix'
21685 extensions='$extensions'
21687 fflushNULL='$fflushNULL'
21688 fflushall='$fflushall'
21690 firstmakefile='$firstmakefile'
21692 fpossize='$fpossize'
21693 fpostype='$fpostype'
21694 freetype='$freetype'
21697 full_csh='$full_csh'
21698 full_sed='$full_sed'
21699 gccansipedantic='$gccansipedantic'
21700 gccosandvers='$gccosandvers'
21701 gccversion='$gccversion'
21702 getgrent_r_proto='$getgrent_r_proto'
21703 getgrgid_r_proto='$getgrgid_r_proto'
21704 getgrnam_r_proto='$getgrnam_r_proto'
21705 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
21706 gethostbyname_r_proto='$gethostbyname_r_proto'
21707 gethostent_r_proto='$gethostent_r_proto'
21708 getlogin_r_proto='$getlogin_r_proto'
21709 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
21710 getnetbyname_r_proto='$getnetbyname_r_proto'
21711 getnetent_r_proto='$getnetent_r_proto'
21712 getprotobyname_r_proto='$getprotobyname_r_proto'
21713 getprotobynumber_r_proto='$getprotobynumber_r_proto'
21714 getprotoent_r_proto='$getprotoent_r_proto'
21715 getpwent_r_proto='$getpwent_r_proto'
21716 getpwnam_r_proto='$getpwnam_r_proto'
21717 getpwuid_r_proto='$getpwuid_r_proto'
21718 getservbyname_r_proto='$getservbyname_r_proto'
21719 getservbyport_r_proto='$getservbyport_r_proto'
21720 getservent_r_proto='$getservent_r_proto'
21721 getspnam_r_proto='$getspnam_r_proto'
21722 gidformat='$gidformat'
21728 gmtime_r_proto='$gmtime_r_proto'
21729 gnulibc_version='$gnulibc_version'
21731 groupcat='$groupcat'
21732 groupstype='$groupstype'
21735 h_sysfile='$h_sysfile'
21738 html1dir='$html1dir'
21739 html1direxp='$html1direxp'
21740 html3dir='$html3dir'
21741 html3direxp='$html3direxp'
21750 i_arpainet='$i_arpainet'
21751 i_bsdioctl='$i_bsdioctl'
21755 i_dirent='$i_dirent'
21761 i_fp_class='$i_fp_class'
21764 i_ieeefp='$i_ieeefp'
21765 i_inttypes='$i_inttypes'
21766 i_langinfo='$i_langinfo'
21767 i_libutil='$i_libutil'
21768 i_limits='$i_limits'
21769 i_locale='$i_locale'
21770 i_machcthr='$i_machcthr'
21771 i_malloc='$i_malloc'
21773 i_memory='$i_memory'
21774 i_mntent='$i_mntent'
21777 i_neterrno='$i_neterrno'
21778 i_netinettcp='$i_netinettcp'
21782 i_pthread='$i_pthread'
21784 i_rpcsvcdbm='$i_rpcsvcdbm'
21787 i_shadow='$i_shadow'
21789 i_stdarg='$i_stdarg'
21790 i_stddef='$i_stddef'
21791 i_stdlib='$i_stdlib'
21792 i_string='$i_string'
21793 i_sunmath='$i_sunmath'
21794 i_sysaccess='$i_sysaccess'
21795 i_sysdir='$i_sysdir'
21796 i_sysfile='$i_sysfile'
21797 i_sysfilio='$i_sysfilio'
21799 i_sysioctl='$i_sysioctl'
21800 i_syslog='$i_syslog'
21801 i_sysmman='$i_sysmman'
21802 i_sysmode='$i_sysmode'
21803 i_sysmount='$i_sysmount'
21804 i_sysndir='$i_sysndir'
21805 i_sysparam='$i_sysparam'
21806 i_sysresrc='$i_sysresrc'
21807 i_syssecrt='$i_syssecrt'
21808 i_sysselct='$i_sysselct'
21809 i_syssockio='$i_syssockio'
21810 i_sysstat='$i_sysstat'
21811 i_sysstatfs='$i_sysstatfs'
21812 i_sysstatvfs='$i_sysstatvfs'
21813 i_systime='$i_systime'
21814 i_systimek='$i_systimek'
21815 i_systimes='$i_systimes'
21816 i_systypes='$i_systypes'
21817 i_sysuio='$i_sysuio'
21819 i_sysutsname='$i_sysutsname'
21820 i_sysvfs='$i_sysvfs'
21821 i_syswait='$i_syswait'
21822 i_termio='$i_termio'
21823 i_termios='$i_termios'
21825 i_unistd='$i_unistd'
21828 i_values='$i_values'
21829 i_varargs='$i_varargs'
21830 i_varhdr='$i_varhdr'
21832 ignore_versioned_solibs='$ignore_versioned_solibs'
21833 inc_version_list='$inc_version_list'
21834 inc_version_list_init='$inc_version_list_init'
21837 installarchlib='$installarchlib'
21838 installbin='$installbin'
21839 installhtml1dir='$installhtml1dir'
21840 installhtml3dir='$installhtml3dir'
21841 installman1dir='$installman1dir'
21842 installman3dir='$installman3dir'
21843 installprefix='$installprefix'
21844 installprefixexp='$installprefixexp'
21845 installprivlib='$installprivlib'
21846 installscript='$installscript'
21847 installsitearch='$installsitearch'
21848 installsitebin='$installsitebin'
21849 installsitehtml1dir='$installsitehtml1dir'
21850 installsitehtml3dir='$installsitehtml3dir'
21851 installsitelib='$installsitelib'
21852 installsiteman1dir='$installsiteman1dir'
21853 installsiteman3dir='$installsiteman3dir'
21854 installsitescript='$installsitescript'
21855 installstyle='$installstyle'
21856 installusrbinperl='$installusrbinperl'
21857 installvendorarch='$installvendorarch'
21858 installvendorbin='$installvendorbin'
21859 installvendorhtml1dir='$installvendorhtml1dir'
21860 installvendorhtml3dir='$installvendorhtml3dir'
21861 installvendorlib='$installvendorlib'
21862 installvendorman1dir='$installvendorman1dir'
21863 installvendorman3dir='$installvendorman3dir'
21864 installvendorscript='$installvendorscript'
21866 issymlink='$issymlink'
21867 ivdformat='$ivdformat'
21870 known_extensions='$known_extensions'
21873 lddlflags='$lddlflags'
21875 ldflags_uselargefiles='$ldflags_uselargefiles'
21876 ldlibpthname='$ldlibpthname'
21883 libsdirs='$libsdirs'
21884 libsfiles='$libsfiles'
21885 libsfound='$libsfound'
21886 libspath='$libspath'
21887 libswanted='$libswanted'
21888 libswanted_uselargefiles='$libswanted_uselargefiles'
21894 localtime_r_proto='$localtime_r_proto'
21895 locincpth='$locincpth'
21896 loclibpth='$loclibpth'
21897 longdblsize='$longdblsize'
21898 longlongsize='$longlongsize'
21899 longsize='$longsize'
21903 lseeksize='$lseeksize'
21904 lseektype='$lseektype'
21909 make_set_make='$make_set_make'
21910 mallocobj='$mallocobj'
21911 mallocsrc='$mallocsrc'
21913 madlyobj='$madlyobj'
21914 madlysrc='$madlysrc'
21915 malloctype='$malloctype'
21917 man1direxp='$man1direxp'
21920 man3direxp='$man3direxp'
21922 mips_type='$mips_type'
21923 mistrustnm='$mistrustnm'
21925 mmaptype='$mmaptype'
21926 modetype='$modetype'
21928 multiarch='$multiarch'
21930 myarchname='$myarchname'
21931 mydomain='$mydomain'
21932 myhostname='$myhostname'
21935 need_va_copy='$need_va_copy'
21936 netdb_hlen_type='$netdb_hlen_type'
21937 netdb_host_type='$netdb_host_type'
21938 netdb_name_type='$netdb_name_type'
21939 netdb_net_type='$netdb_net_type'
21942 nm_so_opt='$nm_so_opt'
21943 nonxs_ext='$nonxs_ext'
21945 nvEUformat='$nvEUformat'
21946 nvFUformat='$nvFUformat'
21947 nvGUformat='$nvGUformat'
21948 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21949 nveformat='$nveformat'
21950 nvfformat='$nvfformat'
21951 nvgformat='$nvgformat'
21954 o_nonblock='$o_nonblock'
21956 old_pthread_create_joinable='$old_pthread_create_joinable'
21957 optimize='$optimize'
21958 orderlib='$orderlib'
21961 otherlibdirs='$otherlibdirs'
21965 patchlevel='$patchlevel'
21966 path_sep='$path_sep'
21969 perl_patchlevel='$perl_patchlevel'
21970 perladmin='$perladmin'
21971 perllibs='$perllibs'
21972 perlpath='$perlpath'
21974 phostname='$phostname'
21980 prefixexp='$prefixexp'
21982 privlibexp='$privlibexp'
21983 procselfexe='$procselfexe'
21984 prototype='$prototype'
21986 quadkind='$quadkind'
21987 quadtype='$quadtype'
21988 randbits='$randbits'
21989 randfunc='$randfunc'
21990 random_r_proto='$random_r_proto'
21991 randseedtype='$randseedtype'
21993 rd_nodata='$rd_nodata'
21994 readdir64_r_proto='$readdir64_r_proto'
21995 readdir_r_proto='$readdir_r_proto'
21996 revision='$revision'
22001 sPRIEUldbl='$sPRIEUldbl'
22002 sPRIFUldbl='$sPRIFUldbl'
22003 sPRIGUldbl='$sPRIGUldbl'
22004 sPRIXU64='$sPRIXU64'
22006 sPRIeldbl='$sPRIeldbl'
22007 sPRIfldbl='$sPRIfldbl'
22008 sPRIgldbl='$sPRIgldbl'
22013 sSCNfldbl='$sSCNfldbl'
22014 sched_yield='$sched_yield'
22015 scriptdir='$scriptdir'
22016 scriptdirexp='$scriptdirexp'
22018 seedfunc='$seedfunc'
22019 selectminbits='$selectminbits'
22020 selecttype='$selecttype'
22021 sendmail='$sendmail'
22022 setgrent_r_proto='$setgrent_r_proto'
22023 sethostent_r_proto='$sethostent_r_proto'
22024 setlocale_r_proto='$setlocale_r_proto'
22025 setnetent_r_proto='$setnetent_r_proto'
22026 setprotoent_r_proto='$setprotoent_r_proto'
22027 setpwent_r_proto='$setpwent_r_proto'
22028 setservent_r_proto='$setservent_r_proto'
22031 sharpbang='$sharpbang'
22032 shmattype='$shmattype'
22033 shortsize='$shortsize'
22036 sig_count='$sig_count'
22037 sig_name='$sig_name'
22038 sig_name_init='$sig_name_init'
22040 sig_num_init='$sig_num_init'
22041 sig_size='$sig_size'
22042 signal_t='$signal_t'
22043 sitearch='$sitearch'
22044 sitearchexp='$sitearchexp'
22046 sitebinexp='$sitebinexp'
22047 sitehtml1dir='$sitehtml1dir'
22048 sitehtml1direxp='$sitehtml1direxp'
22049 sitehtml3dir='$sitehtml3dir'
22050 sitehtml3direxp='$sitehtml3direxp'
22052 sitelib_stem='$sitelib_stem'
22053 sitelibexp='$sitelibexp'
22054 siteman1dir='$siteman1dir'
22055 siteman1direxp='$siteman1direxp'
22056 siteman3dir='$siteman3dir'
22057 siteman3direxp='$siteman3direxp'
22058 siteprefix='$siteprefix'
22059 siteprefixexp='$siteprefixexp'
22060 sitescript='$sitescript'
22061 sitescriptexp='$sitescriptexp'
22062 sizesize='$sizesize'
22063 sizetype='$sizetype'
22067 sockethdr='$sockethdr'
22068 socketlib='$socketlib'
22069 socksizetype='$socksizetype'
22071 spackage='$spackage'
22072 spitshell='$spitshell'
22073 srand48_r_proto='$srand48_r_proto'
22074 srandom_r_proto='$srandom_r_proto'
22076 ssizetype='$ssizetype'
22077 startperl='$startperl'
22079 static_ext='$static_ext'
22081 stdio_base='$stdio_base'
22082 stdio_bufsiz='$stdio_bufsiz'
22083 stdio_cnt='$stdio_cnt'
22084 stdio_filbuf='$stdio_filbuf'
22085 stdio_ptr='$stdio_ptr'
22086 stdio_stream_array='$stdio_stream_array'
22087 strerror_r_proto='$strerror_r_proto'
22090 subversion='$subversion'
22094 targetarch='$targetarch'
22098 timeincl='$timeincl'
22099 timetype='$timetype'
22100 tmpnam_r_proto='$tmpnam_r_proto'
22106 ttyname_r_proto='$ttyname_r_proto'
22115 uidformat='$uidformat'
22121 uquadtype='$uquadtype'
22122 use5005threads='$use5005threads'
22123 use64bitall='$use64bitall'
22124 use64bitint='$use64bitint'
22125 usecrosscompile='$usecrosscompile'
22127 usefaststdio='$usefaststdio'
22128 useithreads='$useithreads'
22129 uselargefiles='$uselargefiles'
22130 uselongdouble='$uselongdouble'
22131 usemallocwrap='$usemallocwrap'
22132 usemorebits='$usemorebits'
22133 usemultiplicity='$usemultiplicity'
22134 usemymalloc='$usemymalloc'
22136 useopcode='$useopcode'
22137 useperlio='$useperlio'
22138 useposix='$useposix'
22139 usereentrant='$usereentrant'
22140 userelocatableinc='$userelocatableinc'
22142 useshrplib='$useshrplib'
22143 usesitecustomize='$usesitecustomize'
22144 usesocks='$usesocks'
22145 usethreads='$usethreads'
22146 usevendorprefix='$usevendorprefix'
22147 usevfork='$usevfork'
22150 uvXUformat='$uvXUformat'
22151 uvoformat='$uvoformat'
22154 uvuformat='$uvuformat'
22155 uvxformat='$uvxformat'
22156 vendorarch='$vendorarch'
22157 vendorarchexp='$vendorarchexp'
22158 vendorbin='$vendorbin'
22159 vendorbinexp='$vendorbinexp'
22160 vendorhtml1dir='$vendorhtml1dir'
22161 vendorhtml1direxp='$vendorhtml1direxp'
22162 vendorhtml3dir='$vendorhtml3dir'
22163 vendorhtml3direxp='$vendorhtml3direxp'
22164 vendorlib='$vendorlib'
22165 vendorlib_stem='$vendorlib_stem'
22166 vendorlibexp='$vendorlibexp'
22167 vendorman1dir='$vendorman1dir'
22168 vendorman1direxp='$vendorman1direxp'
22169 vendorman3dir='$vendorman3dir'
22170 vendorman3direxp='$vendorman3direxp'
22171 vendorprefix='$vendorprefix'
22172 vendorprefixexp='$vendorprefixexp'
22173 vendorscript='$vendorscript'
22174 vendorscriptexp='$vendorscriptexp'
22176 version_patchlevel_string='$version_patchlevel_string'
22177 versiononly='$versiononly'
22179 voidflags='$voidflags'
22182 yaccflags='$yaccflags'
22187 : Add in command line options if available
22188 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
22190 : add special variables
22191 $test -f $src/patchlevel.h && \
22192 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
22193 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
22194 echo "PERL_CONFIG_SH=true" >>config.sh
22196 : propagate old symbols
22197 if $test -f UU/config.sh; then
22198 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
22199 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
22200 $sort | $uniq -u >UU/oldsyms
22201 set X `cat UU/oldsyms`
22207 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
22209 echo "# Variables propagated from previous config.sh file." >>config.sh
22210 for sym in `cat UU/oldsyms`; do
22211 echo " Propagating $hint variable "'$'"$sym..."
22212 eval 'tmp="$'"${sym}"'"'
22214 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
22220 : Finish up by extracting the .SH files
22224 echo "Extraction done."
22234 If you'd like to make any changes to the config.sh file before I begin
22235 to configure things, do it as a shell escape now (e.g. !vi config.sh).
22238 rp="Press return or use a shell escape to edit config.sh:"
22243 *) : in case they cannot read
22244 sh 1>&4 -c "$ans";;
22249 : if this fails, just run all the .SH files by hand
22258 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
22265 Now you need to generate make dependencies by running "$make depend".
22266 You might prefer to run it in background: "$make depend > makedepend.out &"
22267 It can take a while, so you might not want to run it right now.
22272 rp="Run $make depend now?"
22276 $make depend && echo "Now you must run '$make'."
22279 echo "You must run '$make depend' then '$make'."
22282 elif test -f [Mm]akefile; then
22284 echo "Now you must run a $make."
22286 echo "Configure done."
22289 if $test -f Policy.sh; then
22292 If you compile $package on a different machine or from a different object
22293 directory, copy the Policy.sh file from this object directory to the
22294 new one before you run Configure -- this will help you with most of
22295 the policy defaults.
22299 if $test -f config.msg; then
22300 echo "Hmm. I also noted the following information while running:"
22302 $cat config.msg >&4
22305 $rm -f kit*isdone ark*isdone