3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Sun Apr 24 14:17:04 CEST 2005 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
29 SCO csh still thinks true is false. Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
32 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
35 [End of diatribe. We now return you to your regularly scheduled programming...]
39 OOPS! You naughty creature! You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
50 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
53 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
54 *** Configure that well. (Plan 9 is close to UNIX but not close enough.)
55 *** Please read the README.plan9 for further instructions.
56 *** Cannot continue, aborting.
62 : compute my invocation name
66 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
71 : Proper separator for the PATH environment variable
73 : On OS/2 this directory should exist if this is not floppy only system :-]
74 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
75 if test -n "$OS2_SHELL"; then
77 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
78 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
80 elif test -n "$DJGPP"; then
81 case "X${MACHTYPE:-nonesuchmach}" in
89 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
90 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
91 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
92 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
93 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
94 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
95 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
96 paths="$paths /sbin /usr/sbin /usr/libexec"
97 paths="$paths /system/gnu_library/bin"
101 case "$p_$PATH$p_" in
103 *) test -d $p && PATH=$PATH$p_$p ;;
110 : shall we be using ksh?
116 if (PATH=.; alias -x) >/dev/null 2>&1; then
119 if test -f /hp-ux -a -f /bin/ksh; then
120 needksh='to avoid sh bug in "here document" expansion'
122 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
123 if test X`/usr/bin/uname -v` = X4; then
124 avoidksh="to avoid AIX 4's /bin/sh"
128 if test -f /osf_boot -a -f /usr/sbin/setld; then
129 if test X`/usr/bin/uname -s` = XOSF1; then
130 avoidksh="to avoid Digital UNIX' ksh"
132 unset BIN_SH # if this is 'xpg4' sh will start up ksh
135 case "$inksh/$needksh" in
142 case "$inksh/$avoidksh" in
148 case "$inksh/$needksh-$avoidksh-" in
151 (I see you are using the Korn shell. Some ksh's blow up on $me,
152 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
159 echo "(Feeding myself to $newsh $reason.)"
161 Configure|*/Configure) exec $newsh $0 "$@";;
162 *) exec $newsh Configure "$@";;
167 : if needed set CDPATH to a harmless value that is not chatty
168 : avoid bash 2.02 problems with empty CDPATH.
172 *bash*) CDPATH='.' ;;
177 : Configure runs within the UU subdirectory
178 test -d UU || mkdir UU
388 endhostent_r_proto=''
394 endprotoent_r_proto=''
400 endservent_r_proto=''
451 gethostbyaddr_r_proto=''
453 gethostbyname_r_proto=''
455 gethostent_r_proto=''
467 getnetbyaddr_r_proto=''
469 getnetbyname_r_proto=''
483 d_getprotobyname_r=''
484 getprotobyname_r_proto=''
485 d_getprotobynumber_r=''
486 getprotobynumber_r_proto=''
488 getprotoent_r_proto=''
500 getservbyname_r_proto=''
502 getservbyport_r_proto=''
504 getservent_r_proto=''
528 d_libm_lib_version=''
581 d_old_pthread_create_joinable=''
582 old_pthread_create_joinable=''
584 d_pthread_attr_setscope=''
623 sethostent_r_proto=''
640 setprotoent_r_proto=''
652 setservent_r_proto=''
697 d_stdio_ptr_lval_nochange_cnt=''
698 d_stdio_ptr_lval_sets_cnt=''
901 inc_version_list_init=''
920 ignore_versioned_solibs=''
980 d_perl_otherlibdirs=''
994 version_patchlevel_string=''
1009 nv_preserves_uv_bits=''
1080 installsitehtml1dir=''
1083 installsitehtml3dir=''
1090 installsiteman1dir=''
1093 installsiteman3dir=''
1098 installsitescript=''
1113 d_stdio_stream_array=''
1114 stdio_stream_array=''
1125 ccflags_uselargefiles=''
1126 ldflags_uselargefiles=''
1127 libswanted_uselargefiles=''
1137 userelocatableinc=''
1148 installvendorarch=''
1155 installvendorhtml1dir=''
1157 vendorhtml1direxp=''
1158 installvendorhtml3dir=''
1160 vendorhtml3direxp=''
1166 installvendorman1dir=''
1169 installvendorman3dir=''
1176 installvendorscript=''
1188 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1191 : We must find out about Eunice early
1193 if test -f /etc/unixtovms; then
1194 eunicefix=/etc/unixtovms
1196 if test -f /etc/unixtovms.exe; then
1197 eunicefix=/etc/unixtovms.exe
1200 : Set executable suffix now -- needed before hints available
1201 if test -f "/libs/version.library"; then
1204 elif test -f "/system/gnu_library/bin/ar.pm"; then
1207 elif test -n "$DJGPP"; then
1210 elif test -d c:/. -o -n "$is_os2" ; then
1219 : set useposix=false in your hint file to disable the POSIX extension.
1221 : set useopcode=false in your hint file to disable the Opcode extension.
1223 : Trailing extension. Override this in a hint file, if needed.
1224 : Extra object files, if any, needed on this platform.
1227 : Possible local include directories to search.
1228 : Set locincpth to "" in a hint file to defeat local include searches.
1229 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1230 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1232 : no include file wanted by default
1237 : change the next line if compiling for Xenix/286 on Xenix/386
1238 xlibpth='/usr/lib/386 /lib/386'
1239 : Possible local library directories to search.
1240 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1241 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1243 : general looking path for locating libraries
1244 glibpth="/lib /usr/lib $xlibpth"
1245 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1246 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1247 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1249 : Private path used by Configure to find libraries. Its value
1250 : is prepended to libpth. This variable takes care of special
1251 : machines, like the mips. Usually, it should be empty.
1254 : default library list
1256 : some systems want to use only the non-versioned libso:s
1257 ignore_versioned_solibs=''
1262 ccflags_uselargefiles=''
1263 ldflags_uselargefiles=''
1264 libswanted_uselargefiles=''
1265 : set usemultiplicity on the Configure command line to enable multiplicity.
1266 : set usesocks on the Configure command line to enable socks.
1267 : set usethreads on the Configure command line to enable threads.
1268 usereentrant='undef'
1269 : full support for void wanted by default
1272 : List of libraries we want.
1273 : If anyone needs extra -lxxx, put those in a hint file.
1274 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1275 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1276 : We probably want to search /usr/shlib before most other libraries.
1277 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1278 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1279 glibpth="/usr/shlib $glibpth"
1280 : Do not use vfork unless overridden by a hint file.
1283 : Find the basic shell for Bourne shell scripts
1287 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1290 if test -f "$xxx"; then
1293 : Build up a list and do a single loop so we can 'break' out.
1294 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1295 for xxx in sh bash ksh pdksh ash; do
1297 try="$try ${p}/${xxx}"
1301 if test -f "$xxx"; then
1304 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1307 elif test -f "$xxx.exe"; then
1318 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1320 Usually it's in /bin/sh. How did you even get this far?
1321 Please contact me (Perl Maintainers) at perlbug@perl.org and
1322 we'll try to straighten this all out.
1328 : see if sh knows # comments
1329 if `$sh -c '#' >/dev/null 2>&1`; then
1333 test -f $xcat$_exe || xcat=/usr/bin/cat
1334 if test ! -f $xcat$_exe; then
1335 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1336 if test -f $p/cat$_exe; then
1341 if test ! -f $xcat$_exe; then
1342 echo "Can't find cat anywhere!"
1346 echo "#!$xcat" >sharp
1350 if test -s today; then
1353 echo "#! $xcat" > sharp
1357 if test -s today; then
1365 echo "Your $sh doesn't grok # comments--I will strip them later on."
1368 echo "exec grep -v '^[ ]*#'" >spitshell
1370 $eunicefix spitshell
1371 spitshell=`pwd`/spitshell
1373 echo "I presume that if # doesn't work, #! won't work either!"
1378 : figure out how to guarantee sh startup
1380 '') startsh=${sharpbang}${sh} ;;
1392 : echo "Yup, it does."
1394 echo "Hmm... '$startsh' does not guarantee sh startup..."
1395 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1400 : Save command line options in file UU/cmdline.opt for later use in
1401 : generating config.sh.
1402 cat > cmdline.opt <<EOSH
1403 # Configure command line arguments.
1412 cat >>cmdline.opt <<EOSH
1413 config_arg$argn='$arg'
1415 # Extreme backslashitis: replace each ' by '"'"'
1416 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1419 arg_exp=`cat cmdl.opt`
1420 args_exp="$args_exp$args_sep'$arg_exp'"
1421 argn=`expr $argn + 1`
1424 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1425 # used by ./hints/os2.sh
1428 : produce awk script to parse command line options
1429 cat >options.awk <<'EOF'
1431 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1433 len = length(optstr);
1434 for (i = 1; i <= len; i++) {
1435 c = substr(optstr, i, 1);
1436 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1447 if (substr(str, 1, 1) != "-") {
1448 printf("'%s'\n", str);
1452 for (i = 2; i <= len; i++) {
1453 c = substr(str, i, 1);
1455 printf("-%s\n", substr(str, i));
1461 printf("'%s'\n", substr(str, i + 1));
1474 : process the command line options
1475 set X `for arg in "$@"; do echo "X$arg"; done |
1476 sed -e s/X// | awk -f options.awk`
1481 : set up default values
1491 rm -f optdef.sh posthint.sh
1492 cat >optdef.sh <<EOS
1498 while test $# -gt 0; do
1500 -d) shift; fastread=yes;;
1501 -e) shift; alldone=cont;;
1505 if test -r "$1"; then
1508 echo "$me: cannot read config file $1." >&2
1513 -h) shift; error=true;;
1514 -r) shift; reuseval=true;;
1515 -s) shift; silent=true; realsilent=true;;
1516 -E) shift; alldone=exit;;
1517 -K) shift; knowitall=true;;
1518 -O) shift; override=true;;
1519 -S) shift; silent=true; extractsh=true;;
1524 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1525 echo "$me: ignoring -D $1" >&2
1528 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1529 *) echo "$1='define'" >> optdef.sh;;
1536 *=) echo "$1" >> optdef.sh;;
1538 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1539 echo "$me: ignoring -U $1" >&2
1541 *) echo "$1='undef'" >> optdef.sh;;
1552 *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1556 zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1557 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1563 *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1564 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1565 zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1566 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1567 *) xxx=`echo "$yyy"|sed 's!:.*!!'`
1568 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1574 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1576 echo "$yyy=''" >> posthint.sh ;;
1581 echo "$yyy='$zzz'" >> posthint.sh ;;
1583 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1585 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1590 echo "$yyy=$zzz" >> posthint.sh ;;
1591 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1595 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1598 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1606 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1607 [-U symbol] [-U symbol=] [-A command:symbol...]
1608 -d : use defaults for all answers.
1609 -e : go on without questioning past the production of config.sh.
1610 -f : specify an alternate default configuration file.
1611 -h : print this help message and exit (with an error status).
1612 -r : reuse C symbols value if possible (skips costly nm extraction).
1613 -s : silent mode, only echoes questions and essential information.
1614 -D : define symbol to have some value:
1615 -D symbol symbol gets the value 'define'
1616 -D symbol=value symbol gets the value 'value'
1617 -E : stop at the end of questions, after having produced config.sh.
1618 -K : do not use unless you know what you are doing.
1619 -O : let -D and -U override definitions from loaded configuration file.
1620 -S : perform variable substitutions on all .SH files (can mix with -f)
1621 -U : undefine symbol:
1622 -U symbol symbol gets the value 'undef'
1623 -U symbol= symbol gets completely empty
1624 -A : manipulate symbol after the platform specific hints have been applied:
1625 -A symbol=value append " "value to symbol
1626 -A append:symbol=value append value to symbol
1627 -A define:symbol=value define symbol to have value
1628 -A clear:symbol define symbol to be ''
1629 -A define:symbol define symbol to be 'define'
1630 -A eval:symbol=value define symbol to be eval of value
1631 -A prepend:symbol=value prepend value to symbol
1632 -A undef:symbol define symbol to be 'undef'
1633 -A undef:symbol= define symbol to be ''
1634 -V : print version number and exit (with a zero status).
1641 case "$fastread$alldone" in
1644 case "$extractsh" in
1647 if test ! -t 0; then
1648 echo "Say 'sh Configure', not 'sh <Configure'"
1658 true) exec 1>/dev/null;;
1661 : run the defines and the undefines, if any, but leave the file out there...
1664 : create the posthint manipulation script and leave the file out there...
1669 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1670 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1671 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1672 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1673 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1676 : Some greps do not return status, grrr.
1677 echo "grimblepritz" >grimble
1678 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1680 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1686 : the following should work in any shell
1690 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1691 cat >contains <<'EOSS'
1692 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1697 : Find the path to the source tree
1700 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1704 *) src=`cd ../$src && pwd` ;;
1717 if test -f $rsrc/Configure && \
1718 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1720 : found it, so we are ok.
1723 for src in . .. ../.. ../../.. ../../../..; do
1724 if test -f ../$src/Configure && \
1725 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1736 Sorry, I can't seem to locate the source dir for $package. Please start
1737 Configure with an explicit path -- i.e. /some/path/Configure.
1745 echo "Sources for $package found in \"$src\"." >&4
1749 : script used to extract .SH files with variable substitutions
1750 cat >extract <<'EOS'
1752 echo "Doing variable substitutions on .SH files..."
1753 if test -f MANIFEST; then
1754 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1756 echo "(Looking for .SH files under the source directory.)"
1757 set x `(cd "$src"; find . -name "*.SH" -print)`
1761 0) set x `(cd "$src"; echo *.SH)`; shift;;
1763 if test ! -f "$src/$1"; then
1769 while test $name; do
1770 if test ! -d "$name"; then
1771 create="$name $create";
1772 name=`echo $name | sed -e "s|^[^/]*$||"`;
1773 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1778 for file in $create; do
1787 dir=`expr X$file : 'X\(.*\)/'`
1788 file=`expr X$file : 'X.*/\(.*\)'`
1789 (cd "$dir" && . ./$file)
1799 dir=`expr X$file : 'X\(.*\)/'`
1800 file=`expr X$file : 'X.*/\(.*\)'`
1801 (set x $dir; shift; eval $mkdir_p)
1802 sh <"$src/$dir/$file"
1811 if test -f "$src/config_h.SH"; then
1812 if test ! -f config.h; then
1813 : oops, they left it out of MANIFEST, probably, so do it anyway.
1814 . "$src/config_h.SH"
1819 : extract files and exit if asked to do so
1820 case "$extractsh" in
1822 case "$realsilent" in
1826 case "$config_sh" in
1827 '') config_sh='config.sh';;
1830 echo "Fetching answers from $config_sh..."
1833 test "$override" && . ./optdef.sh
1837 echo "Extraction done."
1842 : Eunice requires " " instead of "", can you believe it
1845 echo "Beginning of configuration questions for $package."
1847 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1849 : first determine how to suppress newline on echo command
1851 echo "Checking echo to see how to suppress newlines..."
1852 (echo "hi there\c" ; echo " ") >.echotmp
1853 if $contains c .echotmp >/dev/null 2>&1 ; then
1864 echo $n "The star should be here-->$c"
1868 : Now test for existence of everything in MANIFEST
1870 if test -f "$rsrc/MANIFEST"; then
1871 echo "First let's make sure your kit is complete. Checking..." >&4
1872 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1875 for filelist in x??; do
1876 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1878 if test -s missing; then
1882 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1884 You have the option of continuing the configuration process, despite the
1885 distinct possibility that your kit is damaged, by typing 'y'es. If you
1886 do, don't blame me if something goes wrong. I advise you to type 'n'o
1887 and contact the author (perlbug@perl.org).
1890 echo $n "Continue? [n] $c" >&4
1894 echo "Continuing..." >&4
1898 echo "ABORTING..." >&4
1903 echo "Looks good..."
1906 echo "There is no MANIFEST file. I hope your kit is complete !"
1911 : Find the appropriate value for a newline for tr
1912 if test -n "$DJGPP"; then
1915 if test X"$trnl" = X; then
1916 case "`echo foo|tr '\n' x 2>/dev/null`" in
1920 if test X"$trnl" = X; then
1921 case "`echo foo|tr '\012' x 2>/dev/null`" in
1922 foox) trnl='\012' ;;
1925 if test X"$trnl" = X; then
1926 case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1927 fooxy) trnl='\n\r' ;;
1930 if test X"$trnl" = X; then
1933 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1939 : compute the number of columns on the terminal for proper question formatting
1944 : set up the echo used in my read
1945 myecho="case \"\$xxxm\" in
1946 '') echo $n \"\$rp $c\" >&4;;
1948 '') echo $n \"[\$xxxm] $c\";;
1950 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1952 echo $n \"[\$xxxm] $c\" >&4
1954 echo $n \"\$rp [\$xxxm] $c\" >&4
1960 : now set up to do reads with possible shell escape and default assignment
1966 case "\$fastread" in
1967 yes) case "\$dflt" in
1970 case "\$silent-\$rp" in
1975 *) case "\$silent" in
1976 true) case "\$rp" in
1981 while expr "X\$ans" : "X!" >/dev/null; do
1985 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1993 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2002 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2007 echo "(OK, I'll run with -d after this question.)" >&4
2010 echo "*** Sorry, \$1 not supported yet." >&4
2020 echo "*** Substitution done -- please confirm."
2022 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2027 echo "*** Error -- try again."
2034 case "\$ans\$xxxm\$nostick" in
2046 : create .config dir to save info across Configure sessions
2047 test -d ../.config || mkdir ../.config
2048 cat >../.config/README <<EOF
2049 This directory created by Configure to save information that should
2050 persist across sessions for $package.
2052 You may safely delete it if you wish.
2055 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2057 $define|true|[yY]*) ;;
2058 *) case "$xversion" in
2061 *** WHOA THERE!!! ***
2063 This is an UNSTABLE DEVELOPMENT release.
2064 The version of this $package distribution is $xversion, that is, odd,
2065 (as opposed to even) and that signifies a development release.
2066 If you want a maintenance release, you want an even-numbered version.
2068 Do ***NOT*** install this into production use.
2069 Data corruption and crashes are possible.
2071 It is most seriously suggested that you do not continue any further
2072 unless you want to help in developing and debugging Perl.
2074 If you *still* want to build perl, you can answer 'y' now,
2075 or pass -Dusedevel to Configure.
2078 rp='Do you really want to continue?'
2082 [yY]) echo >&4 "Okay, continuing."
2083 usedevel="$define" ;;
2084 *) echo >&4 "Okay, bye."
2094 case "$versiononly" in
2095 '') versiononly="$define" ;;
2097 case "$installusrbinperl" in
2098 '') installusrbinperl="$undef" ;;
2103 : general instructions
2106 user=`(logname) 2>/dev/null`
2108 '') user=`whoami 2>&1`;;
2110 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2113 rp='Would you like to see the instructions?'
2124 This installation shell script will examine your system and ask you questions
2125 to determine how the perl5 package should be installed. If you get
2126 stuck on a question, you may use a ! shell escape to start a subshell or
2127 execute a command. Many of the questions will have default answers in square
2128 brackets; typing carriage return will give you the default.
2130 On some of the questions which ask for file or directory names you are allowed
2131 to use the ~name construct to specify the login directory belonging to "name",
2132 even if you don't have a shell which knows about that. Questions where this is
2133 allowed will be marked "(~name ok)".
2137 dflt='Type carriage return to continue'
2141 The prompter used in this script allows you to use shell variables and
2142 backticks in your answers. You may use $1, $2, etc... to refer to the words
2143 in the default answer, as if the default line was a set of arguments given to a
2144 script shell. This means you may also use $* to repeat the whole default line,
2145 so you do not have to re-type everything to add something to the default.
2147 Everytime there is a substitution, you will have to confirm. If there is an
2148 error (e.g. an unmatched backtick), the default answer will remain unchanged
2149 and you will be prompted again.
2151 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
2152 the questions and use the computed defaults (or the previous answers if there
2153 was already a config.sh file). Type 'Configure -h' for a list of options.
2154 You may also start interactively and then answer '& -d' at any prompt to turn
2155 on the non-interactive behaviour for the remainder of the execution.
2161 Much effort has been expended to ensure that this shell script will run on any
2162 Unix system. If despite that it blows up on yours, your best bet is to edit
2163 Configure and run it again. If you can't run Configure for some reason,
2164 you'll have to generate a config.sh file by hand. Whatever problems you
2165 have, let me (perlbug@perl.org) know how I blew it.
2167 This installation script affects things in two ways:
2169 1) it may do direct variable substitutions on some of the files included
2171 2) it builds a config.h file for inclusion in C programs. You may edit
2172 any of these files as the need arises after running this script.
2174 If you make a mistake on a question, there is no easy way to back up to it
2175 currently. The easiest thing to do is to edit config.sh and rerun all the SH
2176 files. Configure will offer to let you do this before it runs the SH files.
2179 dflt='Type carriage return to continue'
2181 case "$firsttime" in
2182 true) echo $user >>../.config/instruct;;
2186 : find out where common programs are
2188 echo "Locating common programs..." >&4
2201 if test -d \$dir/\$thing; then
2207 for thisthing in \$dir/\$thing; do
2208 : just loop through to pick last item
2210 if test -f \$thisthing; then
2213 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2216 elif test -f \$dir/\$thing.exe; then
2217 if test -n "$DJGPP"; then
2218 echo \$dir/\$thing.exe
2219 elif test "$eunicefix" != ":"; then
2220 : on Eunice apparently
2274 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2275 pth="$pth /lib /usr/lib"
2276 for file in $loclist; do
2280 if test -f "$xxx"; then
2283 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2284 xxx=`./loc $file $file $pth`
2287 '') xxx=`./loc $file $file $pth`;;
2288 *) xxx=`./loc $xxx $xxx $pth`;;
2290 eval $file=$xxx$_exe
2294 echo $file is in $xxx.
2297 echo $file is in $xxx.
2300 echo "I don't know where '$file' is, and my life depends on it." >&4
2301 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2307 echo "Don't worry if any of the following aren't found..."
2309 for file in $trylist; do
2313 if test -f "$xxx"; then
2316 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2317 xxx=`./loc $file $file $pth`
2320 '') xxx=`./loc $file $file $pth`;;
2321 *) xxx=`./loc $xxx $xxx $pth`;;
2323 eval $file=$xxx$_exe
2327 echo $file is in $xxx.
2330 echo $file is in $xxx.
2333 echo "I don't see $file out there, $say."
2340 echo "Substituting grep for egrep."
2347 echo "Substituting cp for ln."
2356 echo "I can't find make or gmake, and my life depends on it." >&4
2357 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2365 *) # We can't have osname yet.
2366 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2367 # Assume that gmake, if found, is definitely GNU make
2368 # and prefer it over the system make.
2369 echo "Substituting gmake for make."
2377 echo "Hopefully test is built into your sh."
2380 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2381 echo "Using the test built into your sh."
2389 echo "Hopefully echo is built into your sh."
2394 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2395 $echo $n "hi there$c" >foo1
2396 echo $n "hi there$c" >foo2
2397 if cmp foo1 foo2 >/dev/null 2>&1; then
2398 echo "They are compatible. In fact, they may be identical."
2405 They are not compatible! You are probably running ksh on a non-USG system.
2406 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2407 have echo built in and we may have to run some Bourne shell scripts. That
2408 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2411 $echo $n "The star should be here-->$c"
2421 cat <<'EOSC' >>trygcc
2426 int main(int argc, char *argv[]) {
2430 if $cc -o try $ccflags $ldflags try.c; then
2433 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2439 case "`$cc -v -c try.c 2>&1`" in
2442 if $test X"$trygcc" = Xyes; then
2443 if gcc -o try -c try.c; then
2445 echo "You seem to have a working gcc, though." >&4
2446 rp="Would you like to use it?"
2448 if $test -f myread; then
2451 if $test -f UU/myread; then
2454 echo "Cannot find myread, sorry. Aborting." >&2
2459 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2460 if $test -f usethreads.cbu; then
2463 *** However, any setting of the C compiler flags (e.g. for thread support)
2464 *** has been lost. It may be necessary to pass -Dcc=gcc to Configure
2465 *** (together with e.g. -Dusethreads).
2481 cat <<'EOSC' >>checkcc
2486 int main(int argc, char *argv[]) {
2490 if $cc -o try $ccflags $ldflags try.c; then
2493 if $test X"$despair" = Xyes; then
2494 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2497 You need to find a working C compiler.
2498 Either (purchase and) install the C compiler supplied by your OS vendor,
2499 or for a free C compiler try http://gcc.gnu.org/
2500 I cannot continue any further, aborting.
2509 : determine whether symbolic links are supported
2512 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2513 echo "Symbolic links are supported." >&4
2516 echo "Symbolic links are NOT supported." >&4
2521 : determine whether symbolic links are supported
2525 echo "Checking how to test for symbolic links..." >&4
2527 if $test "X$issymlink" = X; then
2529 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2530 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2532 if test $? = 0; then
2535 echo "Your builtin 'test -h' may be broken." >&4
2538 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2541 if test -f "$p/$test"; then
2550 echo "Trying external '$test -h'." >&4
2551 issymlink="$test -h"
2552 if $test ! -h sym >/dev/null 2>&1; then
2553 echo "External '$test -h' is broken, too." >&4
2561 if $test "X$issymlink" = X; then
2562 if $test -L sym 2>/dev/null; then
2563 issymlink="$test -L"
2564 echo "The builtin '$test -L' worked." >&4
2567 if $test "X$issymlink" != X; then
2568 echo "You can test for symbolic links with '$issymlink'." >&4
2570 echo "I do not know how you can test for symbolic links." >&4
2574 *) echo "No symbolic links, so not testing for their testing..." >&4
2580 case "$mksymlinks" in
2583 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2586 *) case "$lns:$issymlink" in
2587 *"ln"*" -s:"*"test -"?)
2588 echo "Creating the symbolic links..." >&4
2589 echo "(First creating the subdirectories...)" >&4
2591 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2593 test -z "$directory" && break
2597 if test ! -d t/base; then
2598 echo "Failed to create the subdirectories. Aborting." >&4
2601 echo "(Then creating the symlinks...)" >&4
2602 awk '{print $1}' $src/MANIFEST | while true; do
2604 test -z "$filename" && break
2605 if test -f $filename; then
2606 if $issymlink $filename; then
2610 if test -f $filename; then
2611 echo "$filename already exists, not symlinking."
2613 ln -s $src/$filename $filename
2617 if test ! -f t/base/lex.t; then
2618 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
2623 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2632 case "$usecrosscompile" in
2634 $echo "Cross-compiling..."
2637 *-*-gcc) # A cross-compiling gcc, probably.
2638 targetarch=`$echo $cc|$sed 's/-gcc$//'`
2640 # leave out ld, choosing it is more complex
2642 ranlib=$targetarch-ranlib
2643 $echo 'extern int foo;' > try.c
2644 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2646 if $test $# -gt 0; then
2648 incpth="`$echo $incpth|$sed 's/^ //'`"
2649 echo "Guessing incpth '$incpth'." >&4
2651 j="`$echo $i|$sed 's,/include$,/lib,'`"
2652 if $test -d $j; then
2656 libpth="`$echo $libpth|$sed 's/^ //'`"
2657 echo "Guessing libpth '$libpth'." >&4
2662 case "$targetarch" in
2663 '') echo "Targetarch not defined." >&4; croak=y ;;
2664 *) echo "Using targetarch $targetarch." >&4 ;;
2667 '') echo "Incpth not defined." >&4; croak=y ;;
2668 *) echo "Using incpth '$incpth'." >&4 ;;
2671 '') echo "Libpth not defined." >&4; croak=y ;;
2672 *) echo "Using libpth '$libpth'." >&4 ;;
2675 '') for i in $incpth; do
2676 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2678 echo "Guessing usrinc $usrinc." >&4
2683 '') echo "Usrinc not defined." >&4; croak=y ;;
2686 *) echo "Using usrinc $usrinc." >&4 ;;
2688 case "$targethost" in
2689 '') echo "Targethost not defined." >&4; croak=y ;;
2690 *) echo "Using targethost $targethost." >&4
2695 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2698 /*) run=$src/Cross/run
2699 targetmkdir=$src/Cross/mkdir
2701 from=$src/Cross/from
2703 *) pwd=`$test -f ../Configure & cd ..; pwd`
2705 targetmkdir=$pwd/Cross/mkdir
2707 from=$pwd/Cross/from
2710 case "$targetrun" in
2711 '') targetrun=ssh ;;
2716 case "$targetfrom" in
2717 '') targetfrom=scp ;;
2721 from=$from-$targetfrom
2722 case "$targetdir" in
2724 echo "Guessing targetdir $targetdir." >&4
2727 case "$targetuser" in
2729 echo "Guessing targetuser $targetuser." >&4
2732 case "$targetfrom" in
2736 case "$targetrun" in
2748 '') cwd=$targetdir ;;
2752 if $test ! -f \$exe.xok; then
2756 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2759 *) echo "Unknown targetrun '$targetrun'" >&4
2763 case "$targetmkdir" in
2765 cat >$targetmkdir <<EOF
2767 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2769 $chmod a+rx $targetmkdir
2771 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2783 $targetmkdir \`dirname \$f\`
2784 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2787 $targetmkdir $targetdir/\`dirname \$f\`
2788 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2801 $mkdir -p $targetdir/\`dirname \$f\`
2802 $cp \$f $targetdir/\$f || exit 1
2805 $targetmkdir $targetdir/\`dirname \$f\`
2806 $cp \$f $targetdir/\$f || exit 1
2813 *) echo "Unknown targetto '$targetto'" >&4
2817 case "$targetfrom" in
2824 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2829 cp) cat >$from <<EOF
2834 cp $targetdir/\$f . || exit 1
2839 *) echo "Unknown targetfrom '$targetfrom'" >&4
2843 if $test ! -f $run; then
2844 echo "Target 'run' script '$run' not found." >&4
2848 if $test ! -f $to; then
2849 echo "Target 'to' script '$to' not found." >&4
2853 if $test ! -f $from; then
2854 echo "Target 'from' script '$from' not found." >&4
2858 if $test ! -f $run -o ! -f $to -o ! -f $from; then
2862 Using '$run' for remote execution,
2863 and '$from' and '$to'
2864 for remote file transfer.
2870 usecrosscompile='undef'
2875 : see whether [:lower:] and [:upper:] are supported character classes
2877 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2879 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2883 *) # There is a discontinuity in EBCDIC between 'R' and 'S'
2884 # (0xd9 and 0xe2), therefore that is a nice testing point.
2885 if test "X$up" = X -o "X$low" = X; then
2886 case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2892 if test "X$up" = X -o "X$low" = X; then
2893 case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2899 if test "X$up" = X -o "X$low" = X; then
2900 case "`echo RS | od -x 2>/dev/null`" in
2902 echo "Hey, this might be EBCDIC." >&4
2903 if test "X$up" = X -o "X$low" = X; then
2904 case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2905 rs) up='[A-IJ-RS-Z]'
2910 if test "X$up" = X -o "X$low" = X; then
2911 case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2921 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2923 echo "Using $up and $low to convert case." >&4
2926 echo "I don't know how to translate letters from upper to lower case." >&4
2927 echo "Your tr is not acting any way I know of." >&4
2931 : set up the translation script tr, must be called with ./tr of course
2935 '[A-Z][a-z]') exec $tr '$up' '$low';;
2936 '[a-z][A-Z]') exec $tr '$low' '$up';;
2943 : Try to determine whether config.sh was made on this system
2944 case "$config_sh" in
2946 myuname=`$uname -a 2>/dev/null`
2947 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2948 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2949 # because the A-Z/a-z are not consecutive.
2950 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2951 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2952 newmyuname="$myuname"
2954 case "$knowitall" in
2956 if test -f ../config.sh; then
2957 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2958 eval "`grep myuname= ../config.sh`"
2960 if test "X$myuname" = "X$newmyuname"; then
2968 : Get old answers from old config file if Configure was run on the
2969 : same system, otherwise use the hints.
2972 if test -f config.sh; then
2974 rp="I see a config.sh file. Shall I use it to set the defaults?"
2977 n*|N*) echo "OK, I'll ignore it."
2978 mv config.sh config.sh.old
2979 myuname="$newmyuname"
2981 *) echo "Fetching default answers from your old config.sh file..." >&4
2989 : Older versions did not always set $sh. Catch re-use of such
2999 if test ! -f config.sh; then
3002 First time through, eh? I have some defaults handy for some systems
3003 that need some extra help getting the Configure answers right:
3006 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
3008 : Half the following guesses are probably wrong... If you have better
3009 : tests or hints, please send them to perlbug@perl.org
3010 : The metaconfig authors would also appreciate a copy...
3011 $test -f /irix && osname=irix
3012 $test -f /xenix && osname=sco_xenix
3013 $test -f /dynix && osname=dynix
3014 $test -f /dnix && osname=dnix
3015 $test -f /lynx.os && osname=lynxos
3016 $test -f /unicos && osname=unicos && osvers=`$uname -r`
3017 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3018 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3019 $test -f /bin/mips && /bin/mips && osname=mips
3020 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3021 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3022 $test -d /usr/apollo/bin && osname=apollo
3023 $test -f /etc/saf/_sactab && osname=svr4
3024 $test -d /usr/include/minix && osname=minix
3025 $test -f /system/gnu_library/bin/ar.pm && osname=vos
3026 if $test -d /MachTen -o -d /MachTen_Folder; then
3028 if $test -x /sbin/version; then
3029 osvers=`/sbin/version | $awk '{print $2}' |
3030 $sed -e 's/[A-Za-z]$//'`
3031 elif $test -x /usr/etc/version; then
3032 osvers=`/usr/etc/version | $awk '{print $2}' |
3033 $sed -e 's/[A-Za-z]$//'`
3039 $test -f /sys/posix.dll &&
3040 $test -f /usr/bin/what &&
3041 set X `/usr/bin/what /sys/posix.dll` &&
3042 $test "$3" = UWIN &&
3046 if $test -f $uname; then
3054 umips) osname=umips ;;
3057 [23]100) osname=mips ;;
3058 next*) osname=next ;;
3060 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3061 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3064 elif $test -f /etc/kconfig; then
3066 if test "$lns" = "$ln -s"; then
3068 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3070 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3077 if test -n "$DJGPP"; then
3086 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3088 # oslevel can fail with:
3089 # oslevel: Unable to acquire lock.
3090 *not\ found) osvers="$4"."$3" ;;
3091 '<3240'|'<>3240') osvers=3.2.0 ;;
3092 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3093 '=3250'|'>3250') osvers=3.2.5 ;;
3097 bsd386) osname=bsd386
3100 cygwin*) osname=cygwin
3103 *dc.osx) osname=dcosx
3109 domainos) osname=apollo
3115 dynixptx*) osname=dynixptx
3116 osvers=`echo "$4"|sed 's/^v//'`
3118 freebsd) osname=freebsd
3120 genix) osname=genix ;;
3124 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3140 netbsd*) osname=netbsd
3143 news-os) osvers="$3"
3145 4*) osname=newsos4 ;;
3149 next*) osname=next ;;
3150 nonstop-ux) osname=nonstopux ;;
3151 openbsd) osname=openbsd
3157 POSIX-BC | posix-bc ) osname=posix-bc
3160 powerux | power_ux | powermax_os | powermaxos | \
3161 powerunix | power_unix) osname=powerux
3167 solaris) osname=solaris
3169 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3176 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3180 titanos) osname=titanos
3189 ultrix) osname=ultrix
3192 osf1|mls+) case "$5" in
3195 osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3198 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3201 hp*) osname=hp_osf1 ;;
3202 mips) osname=mips_osf1 ;;
3205 # UnixWare 7.1.2 is known as Open UNIX 8
3206 openunix|unixware) osname=svr5
3214 $2) case "$osname" in
3218 : svr4.x or possibly later
3228 if test -f /stand/boot ; then
3229 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3230 if test -n "$INITPROG" -a -f "$INITPROG"; then
3231 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3232 if test -n "$isesix"; then
3240 *) if test -f /etc/systemid; then
3242 set `echo $3 | $sed 's/\./ /g'` $4
3243 if $test -f $src/hints/sco_$1_$2_$3.sh; then
3245 elif $test -f $src/hints/sco_$1_$2.sh; then
3247 elif $test -f $src/hints/sco_$1.sh; then
3252 '') : Still unknown. Probably a generic Sys V.
3261 *) case "$osname" in
3262 '') : Still unknown. Probably a generic BSD.
3270 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3271 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3272 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3275 $rm -f UU/kernel.what
3276 elif test -d c:/. -o -n "$is_os2" ; then
3283 case "$targetarch" in
3286 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3291 : Now look for a hint file osname_osvers, unless one has been
3292 : specified already.
3295 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3296 : Also try without trailing minor version numbers.
3297 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3298 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3299 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3300 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3303 *) case "$osvers" in
3306 *) if $test -f $src/hints/$file.sh ; then
3308 elif $test -f $src/hints/$xfile.sh ; then
3310 elif $test -f $src/hints/$xxfile.sh ; then
3312 elif $test -f $src/hints/$xxxfile.sh ; then
3314 elif $test -f $src/hints/$xxxxfile.sh ; then
3316 elif $test -f "$src/hints/${osname}.sh" ; then
3325 if $test -f Policy.sh ; then
3328 none) dflt="Policy" ;;
3329 *) dflt="Policy $dflt" ;;
3334 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3338 if $test -f Policy.sh ; then
3341 There's also a Policy hint file available, which should make the
3342 site-specific (policy) questions easier to answer.
3349 You may give one or more space-separated answers, or "none" if appropriate.
3350 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3351 is a good thing. DO NOT give a wrong version or a wrong OS.
3355 rp="Which of these apply, if any?"
3358 for file in $tans; do
3359 if $test X$file = XPolicy -a -f Policy.sh; then
3361 $cat Policy.sh >> UU/config.sh
3362 elif $test -f $src/hints/$file.sh; then
3363 . $src/hints/$file.sh
3364 $cat $src/hints/$file.sh >> UU/config.sh
3365 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3368 : Give one chance to correct a possible typo.
3369 echo "$file.sh does not exist"
3371 rp="hint to use instead?"
3373 for file in $ans; do
3374 if $test -f "$src/hints/$file.sh"; then
3375 . $src/hints/$file.sh
3376 $cat $src/hints/$file.sh >> UU/config.sh
3377 elif $test X$ans = X -o X$ans = Xnone ; then
3380 echo "$file.sh does not exist -- ignored."
3387 : Remember our hint file for later.
3388 if $test -f "$src/hints/$file.sh" ; then
3398 echo "Fetching default answers from $config_sh..." >&4
3402 cp $config_sh config.sh 2>/dev/null
3412 test "$override" && . ./optdef.sh
3414 : Restore computed paths
3415 for file in $loclist $trylist; do
3416 eval $file="\$_$file"
3421 Configure uses the operating system name and version to set some defaults.
3422 The default value is probably right if the name rings a bell. Otherwise,
3423 since spelling matters for me, either accept the default or answer "none"
3430 ''|' '|none) dflt=none ;;
3431 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3434 *) dflt="$osname" ;;
3436 rp="Operating system name?"
3440 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3446 ''|' '|none) dflt=none ;;
3447 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3448 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3450 ''|' ') dflt=none ;;
3455 *) dflt="$osvers" ;;
3457 rp="Operating system version?"
3467 : who configured the system
3468 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3471 cf_by=`(logname) 2>/dev/null`
3474 cf_by=`(whoami) 2>/dev/null`
3476 "") cf_by=unknown ;;
3481 : set up the script used to warn in case of inconsistency
3488 echo "*** WHOA THERE!!! ***" >&4
3489 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3490 rp=" Keep the $hint value?"
3493 y) td=$was; tu=$was;;
3497 : function used to set $1 to $val
3498 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3500 $define$undef) . ./whoa; eval "$var=\$td";;
3501 $undef$define) . ./whoa; eval "$var=\$tu";;
3502 *) eval "$var=$val";;
3506 $define|true|[yY]*) dflt='y';;
3511 Perl can be built to use the SOCKS proxy protocol library. To do so,
3512 Configure must be run with -Dusesocks. If you use SOCKS you also need
3513 to use the PerlIO abstraction layer, this will be implicitly selected.
3515 If this doesn't make any sense to you, just accept the default '$dflt'.
3517 rp='Build Perl for SOCKS?'
3520 y|Y) val="$define" ;;
3527 $define|true|[yY]*) useperlio="$define";;
3530 case "$useperlio" in
3531 $define|true|[yY]*|'') dflt='y';;
3536 Previous version of $package used the standard IO mechanisms as
3537 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
3538 alternate IO mechanisms via the PerlIO abstraction layer, but the
3539 stdio mechanism is still available if needed. The abstraction layer
3540 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
3541 Using PerlIO with sfio may cause problems with some extension modules.
3543 If this doesn't make any sense to you, just accept the default '$dflt'.
3545 rp='Use the PerlIO abstraction layer?'
3552 echo "Ok, doing things the stdio way."
3561 case "$useperlio" in
3562 $define|true|[yY]*) ;;
3565 You are using the SOCKS proxy protocol library which means that you
3566 should also use the PerlIO layer. You may be headed for trouble.
3575 case "$usethreads" in
3576 $define|true|[yY]*) dflt='y';;
3577 *) # Catch case where user specified ithreads or 5005threads but
3578 # forgot -Dusethreads (A.D. 4/2002)
3579 case "$useithreads$use5005threads" in
3581 case "$useperlio" in
3582 "$define") dflt='y' ;;
3592 Perl can be built to take advantage of threads on some systems.
3593 To do so, Configure can be run with -Dusethreads.
3595 Note that Perl built with threading support runs slightly slower
3596 and uses more memory than plain Perl. The current implementation
3597 is believed to be stable, but it is fairly new, and so should be
3598 treated with caution.
3600 If this doesn't make any sense to you, just accept the default '$dflt'.
3602 rp='Build a threading Perl?'
3605 y|Y) val="$define" ;;
3611 case "$usethreads" in
3615 Since release 5.6, Perl has had two different threading implementations,
3616 the newer interpreter-based version (ithreads) with one interpreter per
3617 thread, and the older 5.005 version (5005threads).
3618 The 5005threads version is effectively unmaintained and will probably be
3619 removed in Perl 5.10, so there should be no need to build a Perl using it
3620 unless needed for backwards compatibility with some existing 5.005threads
3624 : Default to ithreads unless overridden on command line or with
3627 case "$use5005threads" in
3628 $define|true|[yY]*) dflt='n';;
3630 case "$useithreads" in
3631 $undef|false|[nN]*) dflt='n';;
3633 rp='Use the newer interpreter-based ithreads?'
3636 y|Y) val="$define" ;;
3641 : Now set use5005threads to the opposite value.
3642 case "$useithreads" in
3643 $define) val="$undef" ;;
3650 useithreads="$undef"
3651 use5005threads="$undef"
3655 case "$useithreads$use5005threads" in
3659 You cannot have both the ithreads and the 5.005 threads enabled
3660 at the same time. Disabling the 5.005 threads since they are
3661 much less stable than the ithreads.
3664 use5005threads="$undef"
3668 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
3671 *** To build with ithreads you must also use the PerlIO layer.
3672 *** Cannot continue, aborting.
3678 case "$d_oldpthreads" in
3679 '') : Configure tests would be welcome here. For now, assume undef.
3681 *) val="$d_oldpthreads" ;;
3687 : Look for a hint-file generated 'call-back-unit'. If the
3688 : user has specified that a threading perl is to be built,
3689 : we may need to set or change some other defaults.
3690 if $test -f usethreads.cbu; then
3691 echo "Your platform has some specific hints regarding threaded builds, using them..."
3694 case "$usethreads" in
3695 "$define"|true|[yY]*)
3697 (Your platform does not have any specific hints for threaded builds.
3698 Assuming POSIX threads, then.)
3706 Perl can be built so that multiple Perl interpreters can coexist
3707 within the same Perl executable.
3710 case "$useithreads" in
3713 This multiple interpreter support is required for interpreter-based threads.
3717 *) case "$usemultiplicity" in
3718 $define|true|[yY]*) dflt='y';;
3722 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3723 rp='Build Perl for multiplicity?'
3726 y|Y) val="$define" ;;
3735 case "$usemorebits" in
3736 "$define"|true|[yY]*)
3737 use64bitint="$define"
3738 uselongdouble="$define"
3739 usemorebits="$define"
3741 *) usemorebits="$undef"
3745 : make some quick guesses about what we are up against
3747 $echo $n "Hmm... $c"
3757 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3758 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3760 echo "Looks kind of like an OSF/1 system, but we'll see..."
3762 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3763 xxx=`./loc addbib blurfl $pth`
3764 if $test -f $xxx; then
3765 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3769 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3770 echo "Looks kind of like an extended USG system, but we'll see..."
3772 echo "Looks kind of like a USG system, but we'll see..."
3776 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3777 echo "Looks kind of like a BSD system, but we'll see..."
3781 echo "Looks kind of like a Version 7 system, but we'll see..."
3784 case "$eunicefix" in
3787 There is, however, a strange, musty smell in the air that reminds me of
3788 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3792 : it so happens the Eunice I know will not run shell scripts in Unix format
3796 echo "Congratulations. You aren't running Eunice."
3800 : Detect OS2. The p_ variable is set above in the Head.U unit.
3801 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3802 : semicolon as a patch separator
3807 I have the feeling something is not exactly right, however...don't tell me...
3808 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3809 (Or you may be running DOS with DJGPP.)
3814 if test -f /xenix; then
3815 echo "Actually, this looks more like a XENIX system..."
3820 echo "It's not Xenix..."
3825 if test -f /venix; then
3826 echo "Actually, this looks more like a VENIX system..."
3833 echo "Nor is it Venix..."
3836 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3837 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3844 rp="Use which C compiler?"
3848 : See if they have not cc but they do have gcc
3850 : Look for a hint-file generated 'call-back-unit'. Now that the
3851 : user has specified the compiler, we may need to set or change some
3853 if $test -f cc.cbu; then
3859 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3865 printf("%s\n", __VERSION__);
3867 printf("%s\n", "1");
3873 if $cc -o try $ccflags $ldflags try.c; then
3874 gccversion=`$run ./try`
3875 case "$gccversion" in
3876 '') echo "You are not using GNU cc." ;;
3877 *) echo "You are using GNU cc $gccversion."
3883 echo "*** WHOA THERE!!! ***" >&4
3884 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3885 case "$knowitall" in
3887 echo " You'd better start hunting for one and let me know about it." >&4
3893 case "$gccversion" in
3894 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3896 case "$gccversion" in
3897 '') gccosandvers='' ;;
3898 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3899 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3901 case "$gccosandvers" in
3902 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3903 $osname$osvers) ;; # looking good
3904 $osname*) cat <<EOM >&4
3906 *** WHOA THERE!!! ***
3908 Your gcc has not been compiled for the exact release of
3909 your operating system ($gccosandvers versus $osname$osvers).
3911 In general it is a good idea to keep gcc synchronized with
3912 the operating system because otherwise serious problems
3913 may ensue when trying to compile software, like Perl.
3915 I'm trying to be optimistic here, though, and will continue.
3916 If later during the configuration and build icky compilation
3917 problems appear (headerfile conflicts being the most common
3918 manifestation), I suggest reinstalling the gcc to match
3919 your operating system release.
3923 *) gccosandvers='' ;; # failed to parse, better be silent
3931 # gcc 3.* complain about adding -Idirectories that they already know about,
3932 # so we will take those off from locincpth.
3933 case "$gccversion" in
3935 echo "main(){}">try.c
3936 for incdir in $locincpth; do
3937 warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
3938 grep '^c[cp]p*[01]: warning: changing search order '`
3939 if test "X$warn" != X; then
3940 locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
3946 : decide how portable to be. Allow command line overrides.
3947 case "$d_portable" in
3949 *) d_portable="$define" ;;
3952 : set up shell script to do ~ expansion
3958 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3961 if $test -f /bin/csh; then
3962 /bin/csh -f -c "glob \$1"
3967 name=\`$expr x\$1 : '..\([^/]*\)'\`
3968 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3969 if $test ! -d "\$dir"; then
3971 echo "\$me: can't locate home directory for: \$name" >&2
3976 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3992 : now set up to get a file name
3996 cat <<'EOSC' >>getfile
4012 : getfile will accept an answer from the comma-separated list
4013 : enclosed in parentheses even if it does not meet other criteria.
4014 expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
4015 fn=`echo $fn | sed 's/(.*)//'`
4021 loc_file=`expr $fn : '.*:\(.*\)'`
4022 fn=`expr $fn : '\(.*\):.*'`
4030 */*) fullpath=true;;
4039 *e*) exp_file=true;;
4042 *p*) nopath_ok=true;;
4047 *d*) type='Directory';;
4048 *l*) type='Locate';;
4053 Locate) what='File';;
4058 case "$d_portable" in
4066 while test "$type"; do
4071 true) rp="$rp (~name ok)";;
4074 if test -f UU/getfile.ok && \
4075 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4094 value=`UU/filexp $ans`
4097 if test "$ans" != "$value"; then
4098 echo "(That expands to $value on this system.)"
4112 /*) value="$ansexp" ;;
4113 [a-zA-Z]:/*) value="$ansexp" ;;
4118 echo "I shall only accept a full path name, as in /bin/ls." >&4
4119 echo "Use a ! shell escape if you wish to check pathnames." >&4
4122 echo "Please give a full path name, starting with slash." >&4
4125 echo "Note that using ~name is ok provided it expands well." >&4
4138 for fp in $gfpth; do
4139 if test "X$fp" = X.; then
4144 if test -f "$pf"; then
4146 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4148 echo "($value is not a plain file, but that's ok.)"
4151 if test X"$type" = X; then
4158 for fp in $gfpth; do
4159 if test "X$fp" = X.; then
4164 direxp="$fp/$ansexp"
4166 if test -d "$direxp"; then
4174 if test -d "$ansexp"; then
4175 echo "(Looking for $loc_file in directory $value.)"
4176 value="$value/$loc_file"
4177 ansexp="$ansexp/$loc_file"
4179 if test -f "$ansexp"; then
4182 case "$nopath_ok" in
4183 true) case "$value" in
4185 *) echo "Assuming $value will be in people's path."
4201 if test "$fastread" = yes; then
4206 rp="$what $value doesn't exist. Use that name anyway?"
4225 test "X$gfpthkeep" != Xy && gfpth=""
4228 : What should the include directory be ?
4230 $echo $n "Hmm... $c"
4234 if $test -f /bin/mips && /bin/mips; then
4235 echo "Looks like a MIPS system..."
4236 $cat >usr.c <<'EOCP'
4237 #ifdef SYSTYPE_BSD43
4241 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4242 dflt='/bsd43/usr/include'
4246 mips_type='System V'
4248 $rm -f usr.c usr.out
4249 echo "and you're compiling with the $mips_type compiler and libraries."
4253 echo "Doesn't look like a MIPS system."
4263 case "$xxx_prompt" in
4266 rp='Where are the include files you want to use?'
4274 : see how we invoke the C preprocessor
4276 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4277 cat <<'EOT' >testcpp.c
4283 if test ! -f cppstdin; then
4284 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4285 # AIX cc -E doesn't show the absolute headerfile
4286 # locations but we'll cheat by using the -M flag.
4287 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
4289 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4292 echo "Keeping your $hint cppstdin wrapper."
4295 wrapper=`pwd`/cppstdin
4299 if $test "X$cppstdin" != "X" && \
4300 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4301 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4303 echo "You used to use $cppstdin $cppminus so we'll use that again."
4305 '') echo "But let's see if we can live without a wrapper..." ;;
4307 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4308 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4310 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4313 echo "(However, $cpprun $cpplast does not work, let's see...)"
4321 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4328 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4329 $cc -E <testcpp.c >testcpp.out 2>&1; \
4330 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4331 echo "Yup, it does."
4334 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4335 $cc -E - <testcpp.c >testcpp.out 2>&1; \
4336 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4337 echo "Yup, it does."
4340 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4341 $cc -P <testcpp.c >testcpp.out 2>&1; \
4342 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4343 echo "Yipee, that works!"
4346 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4347 $cc -P - <testcpp.c >testcpp.out 2>&1; \
4348 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4349 echo "At long last!"
4352 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4353 $cpp <testcpp.c >testcpp.out 2>&1; \
4354 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4358 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4359 $cpp - <testcpp.c >testcpp.out 2>&1; \
4360 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4361 echo "Hooray, it works! I was beginning to wonder."
4364 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
4365 $wrapper <testcpp.c >testcpp.out 2>&1; \
4366 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4372 rp="No dice. I can't find a C preprocessor. Name one:"
4376 $x_cpp <testcpp.c >testcpp.out 2>&1
4377 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4378 echo "OK, that will do." >&4
4380 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4395 echo "Perhaps can we force $cc -E using a wrapper..."
4396 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4397 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4403 echo "Nope, we'll have to live without it..."
4417 "$wrapper"|'cppstdin') ;;
4418 *) $rm -f $wrapper;;
4420 $rm -f testcpp.c testcpp.out
4422 : Set private lib path
4425 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4430 '') dlist="$loclibpth $plibpth $glibpth";;
4431 *) dlist="$libpth";;
4434 : Now check and see which directories actually exist, avoiding duplicates
4438 if $test -d $xxx; then
4441 *) libpth="$libpth $xxx";;
4447 Some systems have incompatible or broken versions of libraries. Among
4448 the directories listed in the question below, please remove any you
4449 know not to be holding relevant libraries, and add any that are needed.
4450 Say "none" for none.
4461 rp="Directories to use for library searches?"
4468 : compute shared library extension
4471 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4481 On some systems, shared libraries may be available. Answer 'none' if
4482 you want to suppress searching of shared libraries for the remainder
4483 of this configuration.
4486 rp='What is the file extension used for shared libraries?'
4490 : Define several unixisms.
4491 : Hints files or command line option can be used to override them.
4492 : The convoluted testing is in case hints files set either the old
4495 '') case "$exe_ext" in
4497 *) _exe="$exe_ext" ;;
4502 '') case "$lib_ext" in
4509 '') case "$obj_ext" in
4516 '') case "$path_sep" in
4527 : Which makefile gets called first. This is used by make depend.
4528 case "$firstmakefile" in
4529 '') firstmakefile='makefile';;
4533 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4536 case "$uselongdouble" in
4537 $define|true|[yY]*) dflt='y';;
4542 Perl can be built to take advantage of long doubles which
4543 (if available) may give more accuracy and range for floating point numbers.
4545 If this doesn't make any sense to you, just accept the default '$dflt'.
4547 rp='Try to use long doubles if available?'
4550 y|Y) val="$define" ;;
4556 case "$uselongdouble" in
4557 true|[yY]*) uselongdouble="$define" ;;
4560 : Look for a hint-file generated 'call-back-unit'. If the
4561 : user has specified that long doubles should be used,
4562 : we may need to set or change some other defaults.
4563 if $test -f uselongdouble.cbu; then
4564 echo "Your platform has some specific hints regarding long doubles, using them..."
4565 . ./uselongdouble.cbu
4567 case "$uselongdouble" in
4570 (Your platform does not have any specific hints for long doubles.)
4576 : Looking for optional libraries
4578 echo "Checking for optional libraries..." >&4
4583 case "$libswanted" in
4584 '') libswanted='c_s';;
4587 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4593 for thisdir in $libpth $xlibpth; do
4594 test -d $thisdir && libspath="$libspath $thisdir"
4596 for thislib in $libswanted; do
4597 for thisdir in $libspath; do
4599 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4600 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4601 $test -f "$xxx" && eval $libscheck
4602 $test -f "$xxx" && libstyle=shared
4604 if test ! -f "$xxx"; then
4605 xxx=$thisdir/lib$thislib.$so
4606 $test -f "$xxx" && eval $libscheck
4607 $test -f "$xxx" && libstyle=shared
4609 if test ! -f "$xxx"; then
4610 xxx=$thisdir/lib$thislib$_a
4611 $test -f "$xxx" && eval $libscheck
4612 $test -f "$xxx" && libstyle=static
4614 if test ! -f "$xxx"; then
4615 xxx=$thisdir/$thislib$_a
4616 $test -f "$xxx" && eval $libscheck
4617 $test -f "$xxx" && libstyle=static
4619 if test ! -f "$xxx"; then
4620 xxx=$thisdir/lib${thislib}_s$_a
4621 $test -f "$xxx" && eval $libscheck
4622 $test -f "$xxx" && libstyle=static
4623 $test -f "$xxx" && thislib=${thislib}_s
4625 if test ! -f "$xxx"; then
4626 xxx=$thisdir/Slib$thislib$_a
4627 $test -f "$xxx" && eval $libscheck
4628 $test -f "$xxx" && libstyle=static
4630 if $test -f "$xxx"; then
4632 shared) echo "Found -l$thislib (shared)." ;;
4633 static) echo "Found -l$thislib." ;;
4634 *) echo "Found -l$thislib ($libstyle)." ;;
4638 *) dflt="$dflt -l$thislib"
4639 libsfound="$libsfound $xxx"
4641 libsfiles="$libsfiles $yyy"
4642 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4643 case " $libsdirs " in
4645 *) libsdirs="$libsdirs $yyy" ;;
4652 if $test ! -f "$xxx"; then
4653 echo "No -l$thislib."
4664 ' '|'') dflt='none';;
4669 In order to compile $package on your machine, a number of libraries
4670 are usually needed. Include any other special libraries here as well.
4671 Say "none" for none. The default list is almost always right.
4675 rp="What libraries to use?"
4682 : determine optimization, if desired, or use for debug flag also
4684 ' '|$undef) dflt='none';;
4686 *) dflt="$optimize";;
4690 By default, $package compiles with the -O flag to use the optimizer.
4691 Alternately, you might want to use the symbolic debugger, which uses
4692 the -g flag (on traditional Unix systems). Either flag can be
4693 specified here. To use neither flag, specify the word "none".
4696 rp="What optimizer/debugger flag should be used?"
4700 'none') optimize=" ";;
4704 : We will not override a previous value, but we might want to
4705 : augment a hint file
4707 default|recommended)
4708 case "$gccversion" in
4709 1*) dflt='-fpcc-struct-return' ;;
4712 *-g*) dflt="$dflt -DDEBUGGING";;
4714 case "$gccversion" in
4715 2*) if test -d /etc/conf/kconfig.d &&
4716 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4718 # Interactive Systems (ISC) POSIX mode.
4723 case "$gccversion" in
4727 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4728 echo 'int main(void) { return 0; }' > gcctest.c
4729 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4730 echo "Yes, it does." 2>&1
4733 echo "Leaving current flags $ccflags alone." 2>&1
4735 *) dflt="$dflt -fno-strict-aliasing" ;;
4738 echo "Nope, it doesn't, but that's ok." 2>&1
4742 # For gcc, adding -pipe speeds up compilations for some, but apparently
4743 # some assemblers can't read from stdin. (It also slows down compilations
4744 # in other cases, but those are apparently rarer these days.) AD 5/2004.
4745 case "$gccversion" in
4747 echo "Checking if your compiler accepts -pipe" 2>&1
4748 echo 'int main(void) { return 0; }' > gcctest.c
4749 if $cc -pipe -o gcctest gcctest.c; then
4750 echo "Yes, it does." 2>&1
4753 echo "Leaving current flags $ccflags alone." 2>&1
4755 *) dflt="$dflt -pipe" ;;
4758 echo "Nope, it doesn't, but that's ok." 2>&1
4761 echo "Checking if your compiler accepts -Wdeclaration-after-statement" 2>&1
4762 echo 'int main(void) { return 0; }' > gcctest.c
4763 if $cc -Wdeclaration-after-statement -o gcctest gcctest.c; then
4764 echo "Yes, it does." 2>&1
4766 *-Wdeclaration-after-statement*)
4767 echo "Leaving current flags $ccflags alone." 2>&1
4769 *) dflt="$dflt -Wdeclaration-after-statement" ;;
4772 echo "Nope, it doesn't, but that's ok." 2>&1
4779 case "$mips_type" in
4780 *BSD*|'') inclwanted="$locincpth $usrinc";;
4781 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4783 for thisincl in $inclwanted; do
4784 if $test -d $thisincl; then
4785 if $test x$thisincl != x$usrinc; then
4787 *" -I$thisincl "*);;
4788 *) dflt="$dflt -I$thisincl ";;
4794 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4796 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4804 *) dflt="$dflt -D$2";;
4808 set signal.h LANGUAGE_C; eval $inctest
4812 ccflags="$ccflags -DSOCKS"
4817 default|recommended) dflt="$ccflags $dflt" ;;
4818 *) dflt="$ccflags";;
4827 Your C compiler may want other flags. For this question you should include
4828 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4829 but you should NOT include libraries or ld flags like -lwhatever. If you
4830 want $package to honor its debug switch, you should include -DDEBUGGING here.
4831 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4833 To use no flags, specify the word "none".
4839 rp="Any additional cc flags?"
4846 : the following weeds options from ccflags that are of no interest to cpp
4848 '') cppflags="$ccflags" ;;
4849 *) cppflags="$cppflags $ccflags" ;;
4851 case "$gccversion" in
4852 1*) cppflags="$cppflags -D__GNUC__"
4854 case "$mips_type" in
4856 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4862 echo "Let me guess what the preprocessor flags are..." >&4
4876 *) ftry="$previous $flag";;
4878 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4879 >cpp1.out 2>/dev/null && \
4880 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4881 >cpp2.out 2>/dev/null && \
4882 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4883 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4885 cppflags="$cppflags $ftry"
4895 *-*) echo "They appear to be: $cppflags";;
4897 $rm -f cpp.c cpp?.out
4901 : flags used in final linking phase
4903 '') if ./venix; then
4909 *-posix*) dflt="$dflt -posix" ;;
4912 *) dflt="$ldflags";;
4915 : Try to guess additional flags to pick up local libraries.
4916 for thislibdir in $libpth; do
4917 case " $loclibpth " in
4920 *"-L$thislibdir "*) ;;
4921 *) dflt="$dflt -L$thislibdir" ;;
4933 Your C linker may need flags. For this question you should
4934 include -L/whatever and any other flags used by the C linker, but you
4935 should NOT include libraries like -lwhatever.
4937 Make sure you include the appropriate -L/path flags if your C linker
4938 does not normally search all of the directories you specified above,
4941 To use no flags, specify the word "none".
4945 rp="Any additional ld flags (NOT including libraries)?"
4951 rmlist="$rmlist pdp11"
4955 echo "Checking your choice of C compiler and flags for coherency..." >&4
4956 $cat > try.c <<'EOF'
4958 int main() { printf("Ok\n"); return(0); }
4960 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4962 $cat >try.msg <<'EOM'
4963 I've tried to compile and run the following simple program:
4966 $cat try.c >> try.msg
4968 $cat >> try.msg <<EOM
4975 and I got the following output:
4979 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4980 if $sh -c "$run ./try" >>try.msg 2>&1; then
4984 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4987 cat >> try.msg <<'EOQS'
4988 If $libs contains -lsfio, and sfio is mis-configured, then it
4989 sometimes (apparently) runs and exits with a 0 status, but with no
4990 output! It may have to do with sfio's use of _exit vs. exit.
4993 rp="You have a big problem. Shall I abort Configure"
5000 echo "The program compiled OK, but exited with status $?." >>try.msg
5001 rp="You have a problem. Shall I abort Configure"
5005 echo "I can't compile the test program." >>try.msg
5006 rp="You have a BIG problem. Shall I abort Configure"
5012 case "$knowitall" in
5014 echo "(The supplied flags or libraries might be incorrect.)"
5022 *) echo "Ok. Stopping Configure." >&4
5027 n) echo "OK, that should do.";;
5029 $rm -f try try.* core
5031 : define a shorthand compile call
5035 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5036 : define a shorthand compile call for compilations that should be ok.
5040 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5042 : determine filename position in cpp output
5044 echo "Computing filename position in cpp output for #include directives..." >&4
5046 vos) testaccess=-e ;;
5049 echo '#include <stdio.h>' > foo.c
5052 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5053 $grep '^[ ]*#.*stdio\.h' | \
5054 while read cline; do
5057 while $test \$# -gt 0; do
5058 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5063 pos=\`expr \$pos + 1\`
5075 *) pos="${fieldn}th";;
5077 echo "Your cpp writes the filename in the $pos field of the line."
5080 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5081 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5084 : locate header file
5089 for usrincdir in $usrinc
5091 if test -f \$usrincdir/\$wanted; then
5092 echo "\$usrincdir/\$wanted"
5096 awkprg='{ print \$$fieldn }'
5097 echo "#include <\$wanted>" > foo\$\$.c
5098 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5099 $cppfilter $grep "^[ ]*#.*\$wanted" | \
5100 while read cline; do
5101 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5103 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5104 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5109 # status = 0: grep returned 0 lines, case statement not executed
5110 # status = 1: headerfile found
5111 # status = 2: while loop executed, no headerfile found
5115 if test \$status -eq 1; then
5122 : define an alternate in-header-list? function
5123 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5124 cont=true; xxf="echo \"<\$1> found.\" >&4";
5125 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5126 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5128 case $# in 4) instead=instead;; *) instead="at last";; esac;
5129 while $test "$cont"; do
5131 var=$2; eval "was=\$$2";
5132 if $test "$xxx" && $test -r "$xxx";
5134 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5137 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5138 set $yyy; shift; shift; yyy=$@;
5139 case $# in 0) cont="";;
5140 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5141 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5142 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5143 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5147 do set $yyy; var=$2; eval "was=\$$2";
5148 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5149 set $yyy; shift; shift; yyy=$@;
5152 : see if stdlib is available
5153 set stdlib.h i_stdlib
5156 : check for lengths of integral types
5160 echo "Checking to see how big your integers are..." >&4
5169 printf("intsize=%d;\n", (int)sizeof(int));
5170 printf("longsize=%d;\n", (int)sizeof(long));
5171 printf("shortsize=%d;\n", (int)sizeof(short));
5176 if eval $compile_ok && $run ./try > /dev/null; then
5178 echo "Your integers are $intsize bytes long."
5179 echo "Your long integers are $longsize bytes long."
5180 echo "Your short integers are $shortsize bytes long."
5184 Help! I can't compile and run the intsize test program: please enlighten me!
5185 (This is probably a misconfiguration in your system or libraries, and
5186 you really ought to fix it. Still, I'll try anyway.)
5190 rp="What is the size of an integer (in bytes)?"
5194 rp="What is the size of a long integer (in bytes)?"
5198 rp="What is the size of a short integer (in bytes)?"
5206 : check for long long
5208 echo "Checking to see if you have long long..." >&4
5209 echo 'int main() { long long x = 7; return 0; }' > try.c
5211 if eval $compile; then
5213 echo "You have long long."
5216 echo "You do not have long long."
5222 : check for length of long long
5223 case "${d_longlong}${longlongsize}" in
5226 echo "Checking to see how big your long longs are..." >&4
5227 $cat >try.c <<'EOCP'
5231 printf("%d\n", (int)sizeof(long long));
5236 if eval $compile_ok; then
5237 longlongsize=`$run ./try`
5238 echo "Your long longs are $longlongsize bytes long."
5242 echo "(I can't seem to compile the test program. Guessing...)"
5243 rp="What is the size of a long long (in bytes)?"
5247 if $test "X$longsize" = "X$longlongsize"; then
5248 echo "(That isn't any different from an ordinary long.)"
5254 : see if inttypes.h is available
5255 : we want a real compile instead of Inhdr because some systems
5256 : have an inttypes.h which includes non-existent headers
5259 #include <inttypes.h>
5261 static int32_t foo32 = 0x12345678;
5265 if eval $compile; then
5266 echo "<inttypes.h> found." >&4
5269 echo "<inttypes.h> NOT found." >&4
5278 echo "Checking to see if you have int64_t..." >&4
5280 #include <sys/types.h>
5281 #$i_inttypes I_INTTYPES
5283 #include <inttypes.h>
5285 int main() { int64_t x = 7; }
5288 if eval $compile; then
5290 echo "You have int64_t."
5293 echo "You do not have int64_t."
5301 echo "Checking which 64-bit integer type we could use..." >&4
5307 val='"unsigned int"'
5312 *) case "$longsize" in
5316 val='"unsigned long"'
5321 *) case "$d_longlong:$longlongsize" in
5326 val='"unsigned long long"'
5331 *) case "$d_int64_t" in
5350 '') echo "Alas, no 64-bit integer types in sight." >&4
5353 *) echo "We could use '$quadtype' for 64-bit integers." >&4
5359 case "$uselonglong" in
5360 "$define"|true|[yY]*)
5363 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5365 use64bitint="$define"
5368 case "$use64bits" in
5369 "$define"|true|[yY]*)
5372 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5374 use64bitint="$define"
5377 case "$use64bitints" in
5378 "$define"|true|[yY]*)
5381 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5383 use64bitint="$define"
5386 case "$use64bitsint" in
5387 "$define"|true|[yY]*)
5390 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5392 use64bitint="$define"
5395 case "$uselonglongs" in
5396 "$define"|true|[yY]*)
5399 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5401 use64bitint="$define"
5404 case "$use64bitsall" in
5405 "$define"|true|[yY]*)
5408 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5410 use64bitall="$define"
5415 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5417 case "$use64bitall" in
5418 "$define"|true|[yY]*) use64bitint="$define" ;;
5424 You have natively 64-bit long integers.
5428 *) case "$use64bitint" in
5429 "$define"|true|[yY]*) dflt='y';;
5438 Perl can be built to take advantage of 64-bit integer types
5439 on some systems. To do so, Configure can be run with -Duse64bitint.
5440 Choosing this option will most probably introduce binary incompatibilities.
5442 If this doesn't make any sense to you, just accept the default '$dflt'.
5443 (The default has been chosen based on your configuration.)
5445 rp='Try to use 64-bit integers, if available?'
5448 [yY]*) val="$define" ;;
5456 case "$use64bitall" in
5457 "$define"|true|[yY]*) dflt='y' ;;
5458 *) case "$longsize" in
5466 You may also choose to try maximal 64-bitness. It means using as much
5467 64-bitness as possible on the platform. This in turn means even more
5468 binary incompatibilities. On the other hand, your platform may not
5469 have any more 64-bitness available than what you already have chosen.
5471 If this doesn't make any sense to you, just accept the default '$dflt'.
5472 (The default has been chosen based on your configuration.)
5474 rp='Try to use maximal 64-bit support, if available?'
5477 [yY]*) val="$define" ;;
5482 case "$use64bitall" in
5484 case "$use64bitint" in
5488 Since you have chosen a maximally 64-bit build, I'm also turning on
5489 the use of 64-bit integers.
5491 use64bitint="$define" ;;
5496 : Look for a hint-file generated 'call-back-unit'. If the
5497 : user has specified that a 64-bit perl is to be built,
5498 : we may need to set or change some other defaults.
5499 if $test -f use64bitint.cbu; then
5500 echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5503 case "$use64bitint" in
5504 "$define"|true|[yY]*)
5506 4) case "$archname64" in
5507 '') archname64=64int ;;
5514 : Look for a hint-file generated 'call-back-unit'. If the
5515 : user has specified that a maximally 64-bit perl is to be built,
5516 : we may need to set or change some other defaults.
5517 if $test -f use64bitall.cbu; then
5518 echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5521 case "$use64bitall" in
5522 "$define"|true|[yY]*)
5524 4) case "$archname64" in
5525 ''|64int) archname64=64all ;;
5532 case "$d_quad:$use64bitint" in
5536 *** You have chosen to use 64-bit integers,
5537 *** but none can be found.
5538 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5539 *** Cannot continue, aborting.
5546 : check for length of double
5548 case "$doublesize" in
5550 echo "Checking to see how big your double precision numbers are..." >&4
5559 printf("%d\n", (int)sizeof(double));
5564 if eval $compile_ok; then
5565 doublesize=`$run ./try`
5566 echo "Your double is $doublesize bytes long."
5569 echo "(I can't seem to compile the test program. Guessing...)"
5570 rp="What is the size of a double precision number (in bytes)?"
5578 : check for long doubles
5580 echo "Checking to see if you have long double..." >&4
5581 echo 'int main() { long double x = 7.0; }' > try.c
5583 if eval $compile; then
5585 echo "You have long double."
5588 echo "You do not have long double."
5594 : check for length of long double
5595 case "${d_longdbl}${longdblsize}" in
5598 echo "Checking to see how big your long doubles are..." >&4
5599 $cat >try.c <<'EOCP'
5603 printf("%d\n", sizeof(long double));
5608 if eval $compile; then
5609 longdblsize=`$run ./try`
5610 echo "Your long doubles are $longdblsize bytes long."
5614 echo "(I can't seem to compile the test program. Guessing...)" >&4
5615 rp="What is the size of a long double (in bytes)?"
5619 if $test "X$doublesize" = "X$longdblsize"; then
5620 echo "That isn't any different from an ordinary double."
5621 echo "I'll keep your setting anyway, but you may see some"
5622 echo "harmless compilation warnings."
5628 : determine the architecture name
5630 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5631 tarch=`arch`"-$osname"
5632 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5633 if uname -m > tmparch 2>&1 ; then
5634 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5635 -e 's/$/'"-$osname/" tmparch`
5643 case "$myarchname" in
5646 echo "(Your architecture name used to be $myarchname.)"
5650 case "$targetarch" in
5652 *) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5657 *) dflt="$archname";;
5659 rp='What is your architecture name'
5662 case "$usethreads" in
5664 echo "Threads selected." >&4
5666 *-thread*) echo "...and architecture name already has -thread." >&4
5668 *) archname="$archname-thread"
5669 echo "...setting architecture name to $archname." >&4
5674 case "$usemultiplicity" in
5676 echo "Multiplicity selected." >&4
5678 *-multi*) echo "...and architecture name already has -multi." >&4
5680 *) archname="$archname-multi"
5681 echo "...setting architecture name to $archname." >&4
5686 case "$use64bitint$use64bitall" in
5688 case "$archname64" in
5690 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5693 case "$use64bitint" in
5694 "$define") echo "64 bit integers selected." >&4 ;;
5696 case "$use64bitall" in
5697 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5700 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5702 *) archname="$archname-$archname64"
5703 echo "...setting architecture name to $archname." >&4
5709 case "$uselongdouble" in
5711 echo "Long doubles selected." >&4
5712 case "$longdblsize" in
5714 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
5718 *-ld*) echo "...and architecture name already has -ld." >&4
5720 *) archname="$archname-ld"
5721 echo "...setting architecture name to $archname." >&4
5728 case "$useperlio" in
5730 echo "Perlio selected." >&4
5733 echo "Perlio not selected, using stdio." >&4
5735 *-stdio*) echo "...and architecture name already has -stdio." >&4
5737 *) archname="$archname-stdio"
5738 echo "...setting architecture name to $archname." >&4
5743 if $test -f archname.cbu; then
5744 echo "Your platform has some specific hints for architecture name, using them..."
5748 : determine root of directory hierarchy where package will be installed.
5751 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5754 dflt=`echo "$prefix" | sed 's/.$//'`
5762 By default, $package will be installed in $dflt/bin, manual pages
5763 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5764 installation directories. Typically this is something like /usr/local.
5765 If you wish to have binaries under /usr/bin but other parts of the
5766 installation under /usr/local, that's ok: you will be prompted
5767 separately for each of the installation directories, the prefix being
5768 only used to set the defaults.
5772 rp='Installation prefix to use?'
5780 *) oldprefix="$prefix";;
5789 *) afsroot=$afsroot ;;
5795 $define|true) afs=true ;;
5796 $undef|false) afs=false ;;
5797 *) if test -d $afsroot; then
5805 echo "AFS may be running... I'll be extra cautious then..." >&4
5807 echo "AFS does not seem to be running..." >&4
5810 : determine installation prefix for where package is to be installed.
5814 Since you are running AFS, I need to distinguish the directory in which
5815 files will reside from the directory in which they are installed (and from
5816 which they are presumably copied to the former directory by occult means).
5819 case "$installprefix" in
5820 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5821 *) dflt="$installprefix";;
5826 In some special cases, particularly when building $package for distribution,
5827 it is convenient to distinguish the directory in which files should be
5828 installed from the directory ($prefix) in which they will
5829 eventually reside. For most users, these two directories are the same.
5832 case "$installprefix" in
5834 *) dflt=$installprefix;;
5838 rp='What installation prefix should I use for installing files?'
5840 installprefix="$ans"
5841 installprefixexp="$ansexp"
5843 : set the prefixit variable, to compute a suitable default value
5844 prefixit='case "$3" in
5846 case "$oldprefix" in
5847 "") eval "$1=\"\$$2\"";;
5854 ""|" ") eval "$1=\"\$$2\"";;
5860 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5862 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5863 /*-$oldprefix/*|\~*-$oldprefix/*)
5864 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5865 *) eval "$1=\"\$$2\"";;
5869 : get the patchlevel
5871 echo "Getting the current patchlevel..." >&4
5872 if $test -r $rsrc/patchlevel.h;then
5873 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5874 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5875 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5876 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5877 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5878 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5879 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
5888 $echo "(You do not have patchlevel.h. Eek.)"
5890 if $test -r $rsrc/.patch ; then
5891 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
5892 perl_patchlevel=`cat $rsrc/.patch`
5895 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
5896 version_patchlevel_string="version $patchlevel subversion $subversion"
5897 case "$perl_patchlevel" in
5899 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
5902 $echo "(You have $package $version_patchlevel_string.)"
5906 : XXX Should be a Configure test for double-dots in filenames.
5907 version=`echo $revision $patchlevel $subversion | \
5908 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5909 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5910 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5913 version=`echo $revision $patchlevel $subversion | \
5914 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5915 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5916 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5919 : Special case the 5.005_xx maintenance series, which used 5.005
5920 : without any subversion label as a subdirectory in $sitelib
5921 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5922 api_versionstring='5.005'
5925 : determine installation style
5926 : For now, try to deduce it from prefix unless it is already set.
5927 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5928 case "$installstyle" in
5929 '') case "$prefix" in
5930 *perl*) dflt='lib';;
5931 *) dflt='lib/perl5' ;;
5934 *) dflt="$installstyle" ;;
5936 : Probably not worth prompting for this since we prompt for all
5937 : the directories individually, and the prompt would be too long and
5941 : determine where private library files go
5942 : Usual default is /usr/local/lib/perl5/$version.
5943 : Also allow things like /opt/perl/lib/$version, since
5944 : /opt/perl/lib/perl5... would be redundant.
5945 : The default "style" setting is made in installstyle.U
5946 case "$installstyle" in
5947 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5948 *) set dflt privlib lib/$version ;;
5953 There are some auxiliary files for $package that need to be put into a
5954 private library directory that is accessible by everyone.
5958 rp='Pathname where the private library files will reside?'
5961 privlibexp="$ansexp"
5962 : Change installation prefix, if necessary.
5963 if $test X"$prefix" != X"$installprefix"; then
5964 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5966 installprivlib="$privlibexp"
5969 : set the prefixup variable, to restore leading tilda escape
5970 prefixup='case "$prefixexp" in
5972 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5975 : determine where public architecture dependent libraries go
5978 : privlib default is /usr/local/lib/$package/$version
5979 : archlib default is /usr/local/lib/$package/$version/$archname
5980 : privlib may have an optional trailing /share.
5981 tdflt=`echo $privlib | $sed 's,/share$,,'`
5982 tdflt=$tdflt/$archname
5991 $spackage contains architecture-dependent library files. If you are
5992 sharing libraries in a heterogeneous environment, you might store
5993 these files in a separate location. Otherwise, you can just include
5994 them with the rest of the public library files.
5998 rp='Where do you want to put the public architecture-dependent libraries?'
6001 archlibexp="$ansexp"
6002 if $test X"$archlib" = X"$privlib"; then
6007 : Change installation prefix, if necessary.
6008 if $test X"$prefix" != X"$installprefix"; then
6009 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6011 installarchlib="$archlibexp"
6014 : see if setuid scripts can be secure
6017 Some kernels have a bug that prevents setuid #! scripts from being
6018 secure. Some sites have disabled setuid #! scripts because of this.
6020 First let's decide if your kernel supports secure setuid #! scripts.
6021 (If setuid #! scripts would be secure but have been disabled anyway,
6022 don't say that they are secure if asked.)
6027 if $test -d /dev/fd; then
6028 echo "#!$ls" >reflect
6029 chmod +x,u+s reflect
6030 ./reflect >flect 2>&1
6031 if $contains "/dev/fd" flect >/dev/null; then
6032 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6036 If you are not sure if they are secure, I can check but I'll need a
6037 username and password different from the one you are using right now.
6038 If you don't have such a username or don't want me to test, simply
6042 rp='Other username to test security of setuid scripts with?'
6047 case "$d_suidsafe" in
6048 '') echo "I'll assume setuid scripts are *not* secure." >&4
6051 echo "Well, the $hint value is *not* secure." >&4
6053 *) echo "Well, the $hint value *is* secure." >&4
6058 $rm -f reflect flect
6059 echo "#!$ls" >reflect
6060 chmod +x,u+s reflect
6063 echo '"su" will (probably) prompt you for '"$ans's password."
6064 su $ans -c './reflect >flect'
6065 if $contains "/dev/fd" flect >/dev/null; then
6066 echo "Okay, it looks like setuid scripts are secure." >&4
6069 echo "I don't think setuid scripts are secure." >&4
6074 rp='Does your kernel have *secure* setuid scripts?'
6077 [yY]*) val="$define";;
6082 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6083 echo "(That's for file descriptors, not floppy disks.)"
6089 $rm -f reflect flect
6091 : now see if they want to do setuid emulation
6094 case "$d_suidsafe" in
6097 echo "No need to emulate SUID scripts since they are secure here." >&4
6101 Some systems have disabled setuid scripts, especially systems where
6102 setuid scripts cannot be secure. On systems where setuid scripts have
6103 been disabled, the setuid/setgid bits on scripts are currently
6104 useless. It is possible for $package to detect those bits and emulate
6105 setuid/setgid in a secure fashion. This emulation will only work if
6106 setuid scripts have been disabled in your kernel.
6110 "$define") dflt=y ;;
6113 rp="Do you want to do setuid/setgid emulation?"
6116 [yY]*) val="$define";;
6124 : see if this is a malloc.h system
6125 : we want a real compile instead of Inhdr because some systems have a
6126 : malloc.h that just gives a compile error saying to use stdlib.h instead
6131 int main () { return 0; }
6134 if eval $compile; then
6135 echo "<malloc.h> found." >&4
6138 echo "<malloc.h> NOT found." >&4
6145 : check for void type
6147 echo "Checking to see how well your C compiler groks the void type..." >&4
6148 case "$voidflags" in
6160 extern void moo(); /* function returning void */
6161 void (*goo)(); /* ptr to func returning void */
6163 void *hue; /* generic ptr */
6176 int main() { sub(); }
6178 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6179 voidflags=$defvoidused
6180 echo "Good. It appears to support void to the level $package wants.">&4
6181 if $contains warning .out >/dev/null 2>&1; then
6182 echo "However, you might get some warnings that look like this:"
6186 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6187 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6188 echo "It supports 1..."
6189 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6190 echo "It also supports 2..."
6191 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6193 echo "And it supports 4 but not 8 definitely."
6195 echo "It doesn't support 4..."
6196 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6198 echo "But it supports 8."
6201 echo "Neither does it support 8."
6205 echo "It does not support 2..."
6206 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6208 echo "But it supports 4 and 8."
6210 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6212 echo "And it supports 4 but has not heard about 8."
6214 echo "However it supports 8 but not 4."
6219 echo "There is no support at all for void."
6224 case "$voidflags" in
6227 Support flag bits are:
6228 1: basic void declarations.
6229 2: arrays of pointers to functions returning void.
6230 4: operations between pointers to and addresses of void functions.
6231 8: generic void pointers.
6234 rp="Your void support flags add up to what?"
6241 : check for length of pointer
6245 echo "Checking to see how big your pointers are..." >&4
6246 if test "$voidflags" -gt 7; then
6247 echo '#define VOID_PTR char *' > try.c
6249 echo '#define VOID_PTR void *' > try.c
6259 printf("%d\n", (int)sizeof(VOID_PTR));
6264 if eval $compile_ok; then
6265 ptrsize=`$run ./try`
6266 echo "Your pointers are $ptrsize bytes long."
6269 echo "(I can't seem to compile the test program. Guessing...)" >&4
6270 rp="What is the size of a pointer (in bytes)?"
6277 case "$use64bitall" in
6278 "$define"|true|[yY]*)
6282 *** You have chosen a maximally 64-bit build,
6283 *** but your pointers are only 4 bytes wide.
6284 *** Please rerun Configure without -Duse64bitall.
6289 *** Since you have quads, you could possibly try with -Duse64bitint.
6294 *** Cannot continue, aborting.
6305 : determine whether to use malloc wrapping
6307 case "$usemallocwrap" in
6308 [yY]*|true|$define) dflt='y' ;;
6309 [nN]*|false|$undef) dflt='n' ;;
6310 *) case "$usedevel" in
6311 [yY]*|true|$define) dflt='y' ;;
6316 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6318 usemallocwrap="$ans"
6321 usemallocwrap="$define" ;;
6323 usemallocwrap="$undef" ;;
6326 : determine which malloc to compile in
6328 case "$usemymalloc" in
6329 [yY]*|true|$define) dflt='y' ;;
6330 [nN]*|false|$undef) dflt='n' ;;
6331 *) case "$ptrsize" in
6337 rp="Do you wish to attempt to use the malloc that comes with $package?"
6343 mallocsrc='malloc.c'
6344 mallocobj="malloc$_o"
6345 d_mymalloc="$define"
6348 : Remove malloc from list of libraries to use
6349 echo "Removing unneeded -lmalloc from library list" >&4
6350 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6353 echo "libs = $libs" >&4
6365 : compute the return types of malloc and free
6367 $cat >malloc.c <<END
6371 #include <sys/types.h>
6385 case "$malloctype" in
6387 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6394 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6398 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6405 echo "Your system uses $freetype free(), it would seem." >&4
6409 After $package is installed, you may wish to install various
6410 add-on modules and utilities. Typically, these add-ons will
6411 be installed under $prefix with the rest
6412 of this package. However, you may wish to install such add-ons
6413 elsewhere under a different prefix.
6415 If you do not wish to put everything under a single prefix, that's
6416 ok. You will be prompted for the individual locations; this siteprefix
6417 is only used to suggest the defaults.
6419 The default should be fine for most people.
6423 rp='Installation prefix to use for add-on modules and utilities?'
6424 : XXX Here might be another good place for an installstyle setting.
6425 case "$siteprefix" in
6427 *) dflt=$siteprefix ;;
6430 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6432 case "$siteprefix" in
6436 *) oldsiteprefix="$prefix";;
6441 siteprefixexp="$ansexp"
6443 : determine where site specific libraries go.
6444 : Usual default is /usr/local/lib/perl5/site_perl/$version
6445 : The default "style" setting is made in installstyle.U
6446 : XXX No longer works with Prefixit stuff.
6447 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6449 '') case "$installstyle" in
6450 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6451 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6459 The installation process will create a directory for
6460 site-specific extensions and modules. Most users find it convenient
6461 to place all site-specific files in this directory rather than in the
6462 main distribution directory.
6466 rp='Pathname for the site-specific library files?'
6469 sitelibexp="$ansexp"
6470 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6471 : Change installation prefix, if necessary.
6472 if $test X"$prefix" != X"$installprefix"; then
6473 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6475 installsitelib="$sitelibexp"
6478 : determine where site specific architecture-dependent libraries go.
6479 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6480 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6481 : sitelib may have an optional trailing /share.
6483 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6484 dflt="$dflt/$archname"
6489 set sitearch sitearch none
6493 The installation process will also create a directory for
6494 architecture-dependent site-specific extensions and modules.
6498 rp='Pathname for the site-specific architecture-dependent library files?'
6501 sitearchexp="$ansexp"
6502 : Change installation prefix, if necessary.
6503 if $test X"$prefix" != X"$installprefix"; then
6504 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6506 installsitearch="$sitearchexp"
6511 The installation process will also create a directory for
6512 vendor-supplied add-ons. Vendors who supply perl with their system
6513 may find it convenient to place all vendor-supplied files in this
6514 directory rather than in the main distribution directory. This will
6515 ease upgrades between binary-compatible maintenance versions of perl.
6517 Of course you may also use these directories in whatever way you see
6518 fit. For example, you might use them to access modules shared over a
6519 company-wide network.
6521 The default answer should be fine for most people.
6522 This causes further questions about vendor add-ons to be skipped
6523 and no vendor-specific directories will be configured for perl.
6526 rp='Do you want to configure vendor-specific add-on directories?'
6527 case "$usevendorprefix" in
6528 define|true|[yY]*) dflt=y ;;
6529 *) : User may have set vendorprefix directly on Configure command line.
6530 case "$vendorprefix" in
6539 rp='Installation prefix to use for vendor-supplied add-ons?'
6540 case "$vendorprefix" in
6542 *) dflt=$vendorprefix ;;
6545 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6547 case "$vendorprefix" in
6551 *) oldvendorprefix="$prefix";;
6555 usevendorprefix="$define"
6557 vendorprefixexp="$ansexp"
6559 *) usevendorprefix="$undef"
6565 case "$vendorprefix" in
6566 '') d_vendorlib="$undef"
6570 *) d_vendorlib="$define"
6571 : determine where vendor-supplied modules go.
6572 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6573 case "$vendorlib" in
6575 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6576 case "$installstyle" in
6577 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6578 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6581 *) dflt="$vendorlib"
6585 rp='Pathname for the vendor-supplied library files?'
6588 vendorlibexp="$ansexp"
6591 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6592 : Change installation prefix, if necessary.
6593 if $test X"$prefix" != X"$installprefix"; then
6594 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6596 installvendorlib="$vendorlibexp"
6599 case "$vendorprefix" in
6600 '') d_vendorarch="$undef"
6604 *) d_vendorarch="$define"
6605 : determine where vendor-supplied architecture-dependent libraries go.
6606 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6607 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6608 : vendorlib may have an optional trailing /share.
6609 case "$vendorarch" in
6610 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6611 dflt="$dflt/$archname"
6613 *) dflt="$vendorarch" ;;
6616 rp='Pathname for vendor-supplied architecture-dependent files?'
6619 vendorarchexp="$ansexp"
6622 : Change installation prefix, if necessary.
6623 if $test X"$prefix" != X"$installprefix"; then
6624 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6626 installvendorarch="$vendorarchexp"
6629 : Final catch-all directories to search
6632 Lastly, you can have perl look in other directories for extensions and
6633 modules in addition to those already specified.
6634 These directories will be searched after
6638 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6639 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6641 case "$otherlibdirs" in
6642 ''|' ') dflt='none' ;;
6643 *) dflt="$otherlibdirs" ;;
6646 Enter a colon-separated set of extra paths to include in perl's @INC
6647 search path, or enter 'none' for no extra paths.
6651 rp='Colon-separated list of additional directories for perl to search?'
6654 ' '|''|none) otherlibdirs=' ' ;;
6655 *) otherlibdirs="$ans" ;;
6657 case "$otherlibdirs" in
6661 set d_perl_otherlibdirs
6664 : Cruising for prototypes
6666 echo "Checking out function prototypes..." >&4
6667 $cat >prototype.c <<EOCP
6672 int main(int argc, char *argv[]) {
6675 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6676 echo "Your C compiler appears to support function prototypes."
6679 echo "Your C compiler doesn't seem to understand function prototypes."
6686 case "$prototype" in
6688 *) ansi2knr='ansi2knr'
6693 This version of $package can only be compiled by a compiler that
6694 understands function prototypes. Unfortunately, your C compiler
6696 doesn't seem to understand them. Sorry about that.
6698 If GNU cc is available for your system, perhaps you could try that instead.
6700 Eventually, we hope to support building Perl with pre-ANSI compilers.
6701 If you would like to help in that effort, please contact <perlbug@perl.org>.
6703 Aborting Configure now.
6709 : determine where public executables go
6714 rp='Pathname where the public executables will reside?'
6716 if $test "X$ansexp" != "X$binexp"; then
6721 : Change installation prefix, if necessary.
6722 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6723 if $test X"$prefix" != X"$installprefix"; then
6724 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6726 installbin="$binexp"
6735 Perl can be built with extra modules or bundles of modules which
6736 will be fetched from the CPAN and installed alongside Perl.
6738 Notice that you will need access to the CPAN; either via the Internet,
6739 or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
6740 be asked later to configure the CPAN.pm module which will in turn do
6741 the installation of the rest of the extra modules or bundles.)
6743 Notice also that if the modules require any external software such as
6744 libraries and headers (the libz library and the zlib.h header for the
6745 Compress::Zlib module, for example) you MUST have any such software
6746 already installed, this configuration process will NOT install such
6749 If this doesn't make any sense to you, just accept the default '$dflt'.
6751 rp='Install any extra modules (y or n)?'
6757 Please list any extra modules or bundles to be installed from CPAN,
6758 with spaces between the names. The names can be in any format the
6759 'install' command of CPAN.pm will understand. (Answer 'none',
6760 without the quotes, to install no extra modules or bundles.)
6770 $rm -f ../extras.lst
6772 *) echo "(Saving the list of extras for later...)"
6773 echo "$extras" > ../extras.lst
6781 : determine where html pages for programs go
6782 set html1dir html1dir none
6786 If you wish to install html files for programs in $spackage, indicate
6787 the appropriate directory here. To skip installing html files,
6791 ''|none|$undef|' ') dflt=none ;;
6792 *) dflt=$html1dir ;;
6795 rp="Directory for the main $spackage html pages?"
6798 html1direxp="$ansexp"
6799 : Use ' ' for none so value is preserved next time through Configure
6800 $test X"$html1dir" = "X" && html1dir=' '
6801 : Change installation prefix, if necessary.
6802 if $test X"$prefix" != X"$installprefix"; then
6803 installhtml1dir=`echo $html1direxp | sed "s#^$prefix#$installprefix#"`
6805 installhtml1dir="$html1direxp"
6808 : determine where html pages for libraries and modules go
6809 set html3dir html3dir none
6813 If you wish to install html files for modules associated with $spackage,
6814 indicate the appropriate directory here. To skip installing html files,
6817 : There is no obvious default. If they have specified html1dir, then
6818 : try to key off that, possibly changing .../html1 into .../html3.
6820 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
6821 *) dflt=$html3dir ;;
6824 rp="Directory for the $spackage module html pages?"
6827 html3direxp="$ansexp"
6828 : Use ' ' for none so value is preserved next time through Configure
6829 $test X"$html3dir" = "X" && html3dir=' '
6830 : Change installation prefix, if necessary.
6831 if $test X"$prefix" != X"$installprefix"; then
6832 installhtml3dir=`echo $html3direxp | sed "s#^$prefix#$installprefix#"`
6834 installhtml3dir="$html3direxp"
6837 : Find perl5.005 or later.
6838 echo "Looking for a previously installed perl5.005 or later... "
6840 '') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6841 : Check if this perl is recent and can load a simple module
6842 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6845 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6855 '') echo "None found. That's ok.";;
6856 *) echo "Using $perl5." ;;
6859 : Determine list of previous versions to include in @INC
6860 $cat > getverlist <<EOPL
6863 \$api_versionstring = "$api_versionstring";
6864 \$version = "$version";
6865 \$stem = "$sitelib_stem";
6866 \$archname = "$archname";
6868 $cat >> getverlist <<'EOPL'
6869 # Can't have leading @ because metaconfig interprets it as a command!
6870 ;@inc_version_list=();
6871 # XXX Redo to do opendir/readdir?
6874 ;@candidates = glob("5.*");
6880 # XXX ToDo: These comparisons must be reworked when two-digit
6881 # subversions come along, so that 5.7.10 compares as greater than
6882 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6883 # widespread that we can use the built-in version vectors rather
6884 # than reinventing them here. For 5.6.0, however, we must
6885 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6886 foreach $d (@candidates) {
6887 if ($d lt $version) {
6888 if ($d ge $api_versionstring) {
6889 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6891 elsif ($d ge "5.005") {
6892 unshift(@inc_version_list, grep { -d } $d);
6896 # Skip newer version. I.e. don't look in
6897 # 5.7.0 if we're installing 5.6.1.
6901 if (@inc_version_list) {
6902 print join(' ', @inc_version_list);
6905 # Blank space to preserve value for next Configure run.
6910 case "$inc_version_list" in
6911 '') if test -x "$perl5$exe_ext"; then
6912 dflt=`$perl5 getverlist`
6917 $undef) dflt='none' ;;
6918 *) eval dflt=\"$inc_version_list\" ;;
6921 ''|' ') dflt=none ;;
6928 In order to ease the process of upgrading, this version of perl
6929 can be configured to use modules built and installed with earlier
6930 versions of perl that were installed under $prefix. Specify here
6931 the list of earlier versions that this version of perl should check.
6932 If Configure detected no earlier versions of perl installed under
6933 $prefix, then the list will be empty. Answer 'none' to tell perl
6934 to not search earlier versions.
6936 The default should almost always be sensible, so if you're not sure,
6937 just accept the default.
6940 rp='List of earlier versions to include in @INC?'
6943 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6944 *) inc_version_list="$ans" ;;
6946 case "$inc_version_list" in
6948 inc_version_list_init='0';;
6949 *) inc_version_list_init=`echo $inc_version_list |
6950 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6955 : determine whether to install perl also as /usr/bin/perl
6958 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6960 Many scripts expect perl to be installed as /usr/bin/perl.
6962 If you want to, I can install the perl you are about to compile
6963 as /usr/bin/perl (in addition to $bin/perl).
6965 if test -f /usr/bin/perl; then
6968 However, please note that because you already have a /usr/bin/perl,
6969 overwriting that with a new Perl would very probably cause problems.
6970 Therefore I'm assuming you don't want to do that (unless you insist).
6973 case "$installusrbinperl" in
6974 "$define"|[yY]*) dflt='y';;
6980 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
6983 case "$installusrbinperl" in
6984 "$undef"|[nN]*) dflt='n';;
6988 rp="Do you want to install perl as /usr/bin/perl?"
6991 [yY]*) val="$define";;
6997 set installusrbinperl
7001 echo "Checking for GNU C Library..." >&4
7003 /* Find out version of GNU C library. __GLIBC__ and __GLIBC_MINOR__
7004 alone are insufficient to distinguish different versions, such as
7005 2.0.6 and 2.0.7. The function gnu_get_libc_version() appeared in
7006 libc version 2.1.0. A. Dougherty, June 3, 2002.
7012 # ifdef __GLIBC_MINOR__
7013 # if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
7014 # include <gnu/libc-version.h>
7015 printf("%s\n", gnu_get_libc_version());
7017 printf("%d.%d\n", __GLIBC__, __GLIBC_MINOR__);
7020 printf("%d\n", __GLIBC__);
7029 if eval $compile_ok && $run ./try > glibc.ver; then
7031 gnulibc_version=`$cat glibc.ver`
7032 echo "You are using the GNU C Library version $gnulibc_version"
7036 echo "You are not using the GNU C Library"
7038 $rm -f try try.* glibc.ver
7042 : see if nm is to be used to determine whether a symbol is defined or not
7046 case "$d_gnulibc" in
7049 echo "nm probably won't work on the GNU C Library." >&4
7055 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7057 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
7058 echo "'nm' won't be sufficient on this sytem." >&4
7064 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7065 if $test $dflt -gt 20; then
7075 true|$define) dflt=y;;
7082 I can use $nm to extract the symbols from your C libraries. This
7083 is a time consuming task which may generate huge output on the disk (up
7084 to 3 megabytes) but that should make the symbols extraction faster. The
7085 alternative is to skip the 'nm' extraction part and to compile a small
7086 test program instead to determine whether each symbol is present. If
7087 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7088 this may be the best solution.
7090 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7093 rp="Shall I use $nm to extract C symbols from the libraries?"
7096 [Nn]*) usenm=false;;
7105 : nm options which may be necessary
7107 '') if $test -f /mach_boot; then
7109 elif $test -d /usr/ccs/lib; then
7110 nm_opt='-p' # Solaris (and SunOS?)
7111 elif $test -f /dgux; then
7113 elif $test -f /lib64/rld; then
7114 nm_opt='-p' # 64-bit Irix
7120 : nm options which may be necessary for shared libraries but illegal
7121 : for archive libraries. Thank you, Linux.
7122 case "$nm_so_opt" in
7123 '') case "$myuname" in
7125 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7126 nm_so_opt='--dynamic'
7135 : get list of predefined functions in a handy place
7140 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7146 *) for thislib in $libs; do
7149 : Handle C library specially below.
7152 thislib=`echo $thislib | $sed -e 's/^-l//'`
7153 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7155 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7157 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7159 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7161 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7163 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7165 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7170 libnames="$libnames $try"
7172 *) libnames="$libnames $thislib" ;;
7181 for xxx in $libpth; do
7182 $test -r $1 || set $xxx/libc.$so
7183 : The messy sed command sorts on library version numbers.
7185 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7186 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7188 s/[0-9][0-9]*/0000&/g
7189 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7192 $sort | $sed -e 's/^.* //'`
7195 $test -r $1 || set /usr/ccs/lib/libc.$so
7196 $test -r $1 || set /lib/libsys_s$_a
7202 if $test -r "$1"; then
7203 echo "Your (shared) C library seems to be in $1."
7205 elif $test -r /lib/libc && $test -r /lib/clib; then
7206 echo "Your C library seems to be in both /lib/clib and /lib/libc."
7208 libc='/lib/clib /lib/libc'
7209 if $test -r /lib/syslib; then
7210 echo "(Your math library is in /lib/syslib.)"
7211 libc="$libc /lib/syslib"
7213 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7214 echo "Your C library seems to be in $libc, as you said before."
7215 elif $test -r $incpath/usr/lib/libc$_a; then
7216 libc=$incpath/usr/lib/libc$_a;
7217 echo "Your C library seems to be in $libc. That's fine."
7218 elif $test -r /lib/libc$_a; then
7220 echo "Your C library seems to be in $libc. You're normal."
7222 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7224 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7225 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7226 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7228 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7230 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7233 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7235 if $test -r "$tans"; then
7236 echo "Your C library seems to be in $tans, of all places."
7242 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7246 If the guess above is wrong (which it might be if you're using a strange
7247 compiler, or your machine supports multiple models), you can override it here.
7252 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7254 I can't seem to find your C library. I've looked in the following places:
7257 $sed 's/^/ /' libpath
7260 None of these seems to contain your C library. I need to get its name...
7265 rp='Where is your C library?'
7270 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7271 set X `cat libnames`
7274 case $# in 1) xxx=file; esac
7275 echo "Extracting names from the following $xxx for later perusal:" >&4
7277 $sed 's/^/ /' libnames >&4
7279 $echo $n "This may take a while...$c" >&4
7283 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7284 *) $nm $nm_opt $file 2>/dev/null;;
7289 $grep fprintf libc.tmp > libc.ptf
7290 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7291 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7293 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *//p'";\
7295 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7297 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7299 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7301 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7303 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7305 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7307 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7309 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7311 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7313 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7315 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7317 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7318 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
7320 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7322 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7324 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7326 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7328 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7330 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7332 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7334 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7336 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7338 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7340 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7342 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7344 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7346 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
7348 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7351 $nm -p $* 2>/dev/null >libc.tmp
7352 $grep fprintf libc.tmp > libc.ptf
7353 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7354 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7360 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7362 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7363 for thisname in $libnames $libc; do
7364 $ar t $thisname >>libc.tmp
7366 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7368 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7369 # Repeat libc to extract forwarders to DLL entries too
7370 for thisname in $libnames $libc; do
7371 $ar tv $thisname >>libc.tmp
7372 # Revision 50 of EMX has bug in $ar.
7373 # it will not extract forwarders to DLL entries
7374 # Use emximp which will extract exactly them.
7375 emximp -o tmp.imp $thisname \
7377 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7378 < tmp.imp >>libc.tmp
7381 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7384 echo "$ar didn't seem to work right." >&4
7385 echo "Maybe this is a Cray...trying bld instead..." >&4
7386 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7388 for thisname in $libnames; do
7390 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7391 $ar t $thisname >>libc.tmp
7395 echo "That didn't work either. Giving up." >&4
7405 echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7406 dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7408 *) if $test -f /lib/syscalls.exp; then
7410 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7411 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
7417 $rm -f libnames libpath
7419 : see if dld is available
7423 : is a C symbol defined?
7426 -v) tf=libc.tmp; tdc="";;
7427 -a) tf=libc.tmp; tdc="[]";;
7428 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7431 case "$reuseval-$4" in
7433 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7438 if $test "$runnm" = true; then
7439 if $contains $tlook $tf >/dev/null 2>&1; then
7441 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7442 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7443 $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7444 $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7445 $rm -f try$_exe try.c core core.* try.core;
7448 echo "void *(*(p()))$tdc { extern void *$1$tdc; return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7449 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7450 $rm -f try$_exe try.c;
7455 $define) tval=true;;
7462 : define an is-in-libc? function
7463 inlibc='echo " "; td=$define; tu=$undef;
7464 sym=$1; var=$2; eval "was=\$$2";
7466 case "$reuseval$was" in
7476 echo "$sym() found." >&4;
7477 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7479 echo "$sym() NOT found." >&4;
7480 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7484 $define) echo "$sym() found." >&4;;
7485 *) echo "$sym() NOT found." >&4;;
7489 : see if dlopen exists
7496 : determine which dynamic loading, if any, to compile in
7498 dldir="ext/DynaLoader"
7511 $define) dflt='y' ;;
7514 $define) dflt='y' ;;
7516 : Does a dl_xxx.xs file exist for this operating system
7517 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7520 rp="Do you wish to use dynamic loading?"
7527 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7528 dflt="$dldir/dl_${osname}.xs"
7529 elif $test "$d_dlopen" = "$define" ; then
7530 dflt="$dldir/dl_dlopen.xs"
7531 elif $test "$i_dld" = "$define" ; then
7532 dflt="$dldir/dl_dld.xs"
7537 *) dflt="$dldir/$dlsrc"
7540 echo "The following dynamic loading files are available:"
7541 : Can not go over to $dldir because getfile has path hard-coded in.
7542 tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7543 rp="Source file to use for dynamic loading"
7549 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7553 Some systems may require passing special flags to $cc -c to
7554 compile modules that will be used to create a shared library.
7555 To use no flags, say "none".
7558 case "$cccdlflags" in
7559 '') case "$gccversion" in
7560 '') case "$osname" in
7562 next) dflt='none' ;;
7563 irix*) dflt='-KPIC' ;;
7564 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7565 sunos) dflt='-pic' ;;
7569 *) case "$osname" in
7570 darwin) dflt='none' ;;
7571 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7576 *) dflt="$cccdlflags" ;;
7578 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7581 none) cccdlflags=' ' ;;
7582 *) cccdlflags="$ans" ;;
7587 Some systems use ld to create libraries that can be dynamically loaded,
7588 while other systems (such as those using ELF) use $cc.
7592 '') $cat >try.c <<EOM
7593 /* Test for whether ELF binaries are produced */
7601 int i = open("a.out",O_RDONLY);
7604 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7605 exit(0); /* succeed (yes, it's ELF) */
7610 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7612 You appear to have ELF support. I'll use $cc to build dynamic libraries.
7616 echo "I'll use ld to build dynamic libraries."
7625 rp="What command should be used to create dynamic libraries?"
7631 Some systems may require passing special flags to $ld to create a
7632 library that can be dynamically loaded. If your ld flags include
7633 -L/other/path options to locate libraries outside your loader's normal
7634 search path, you may need to specify those -L options here as well. To
7635 use no flags, say "none".
7638 case "$lddlflags" in
7639 '') case "$osname" in
7640 beos) dflt='-nostart' ;;
7642 case "$gccversion" in
7643 '') dflt="$dflt +vnocompatwarnings" ;;
7646 linux|irix*|gnu*) dflt='-shared' ;;
7647 next) dflt='none' ;;
7648 solaris) dflt='-G' ;;
7649 sunos) dflt='-assert nodefinitions' ;;
7650 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7654 *) dflt="$lddlflags" ;;
7657 : Try to guess additional flags to pick up local libraries.
7658 : Be careful not to append to a plain 'none'
7662 for thisflag in $ldflags; do
7667 *) dflt="$dflt $thisflag" ;;
7674 ''|' ') dflt='none' ;;
7677 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7680 none) lddlflags=' ' ;;
7681 *) lddlflags="$ans" ;;
7686 Some systems may require passing special flags to $cc to indicate that
7687 the resulting executable will use dynamic linking. To use no flags,
7691 case "$ccdlflags" in
7692 '') case "$osname" in
7693 linux|hpux|gnu*) dflt='-Wl,-E' ;;
7694 next|sunos) dflt='none' ;;
7698 *) dflt="$ccdlflags" ;;
7700 rp="Any special flags to pass to $cc to use dynamic linking?"
7703 none) ccdlflags=' ' ;;
7704 *) ccdlflags="$ans" ;;
7718 # No dynamic loading being used, so don't bother even to prompt.
7721 *) case "$useshrplib" in
7722 '') case "$osname" in
7723 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7725 also='Building a shared libperl is required for dynamic loading to work on your system.'
7730 also='Building a shared libperl is needed for MAB support.'
7748 The perl executable is normally obtained by linking perlmain.c with
7749 libperl${_a}, any static extensions (usually just DynaLoader), and
7750 any other libraries needed on this system (such as -lm, etc.). Since
7751 your system supports dynamic loading, it is probably possible to build
7752 a shared libperl.$so. If you will have more than one executable linked
7753 to libperl.$so, this will significantly reduce the size of each
7754 executable, but it may have a noticeable affect on performance. The
7755 default is probably sensible for your system.
7759 rp="Build a shared libperl.$so (y/n)"
7763 useshrplib='true' ;;
7764 *) useshrplib='false' ;;
7769 case "$useshrplib" in
7773 # Figure out a good name for libperl.so. Since it gets stored in
7774 # a version-specific architecture-dependent library, the version
7775 # number isn't really that important, except for making cc/ld happy.
7777 # A name such as libperl.so.3.1
7778 majmin="libperl.$so.$patchlevel.$subversion"
7779 # A name such as libperl.so.301
7780 majonly=`echo $patchlevel $subversion |
7781 $awk '{printf "%d%02d", $1, $2}'`
7782 majonly=libperl.$so.$majonly
7783 # I'd prefer to keep the os-specific stuff here to a minimum, and
7784 # rely on figuring it out from the naming of libc.
7785 case "${osname}${osvers}" in
7788 # XXX How handle the --version stuff for MAB?
7790 linux*|gnu*) # ld won't link with a bare -lperl otherwise.
7793 cygwin*) # ld links against an importlib
7794 dflt=libperl$lib_ext
7796 *) # Try to guess based on whether libc has major.minor.
7798 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7799 *libc.$so.[0-9]*) dflt=$majonly ;;
7800 *) dflt=libperl.$so ;;
7810 I need to select a good name for the shared libperl. If your system uses
7811 library names with major and minor numbers, then you might want something
7812 like $majmin. Alternatively, if your system uses a single version
7813 number for shared libraries, then you might want to use $majonly.
7814 Or, your system might be quite happy with a simple libperl.$so.
7816 Since the shared libperl will get installed into a version-specific
7817 architecture-dependent directory, the version number of the shared perl
7818 library probably isn't important, so the default should be o.k.
7821 rp='What name do you want to give to the shared libperl?'
7824 echo "Ok, I'll use $libperl"
7827 libperl="libperl${_a}"
7831 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7835 WARNING: Use of the shrpdir variable for the installation location of
7836 the shared $libperl is not supported. It was never documented and
7837 will not work in this version. Let me (perlbug@perl.org)
7838 know of any problems this may cause.
7844 But your current setting of $shrpdir is
7845 the default anyway, so it's harmless.
7850 Further, your current attempted setting of $shrpdir
7851 conflicts with the value of $archlibexp/CORE
7852 that installperl will use.
7859 # How will the perl executable find the installed shared $libperl?
7860 # Add $xxx to ccdlflags.
7861 # If we can't figure out a command-line option, use $shrpenv to
7862 # set env LD_RUN_PATH. The main perl makefile uses this.
7863 shrpdir=$archlibexp/CORE
7866 if "$useshrplib"; then
7869 # We'll set it in Makefile.SH...
7874 freebsd|netbsd|openbsd|interix)
7875 xxx="-Wl,-R$shrpdir"
7877 bsdos|linux|irix*|dec_osf|gnu*)
7878 xxx="-Wl,-rpath,$shrpdir"
7881 # next doesn't like the default...
7884 # beos doesn't like the default, either.
7887 # hpux doesn't like the default, either.
7888 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7891 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7897 # Only add $xxx if it isn't already in ccdlflags.
7898 case " $ccdlflags " in
7900 *) ccdlflags="$ccdlflags $xxx"
7903 Adding $xxx to the flags
7904 passed to $ld so that the perl executable will find the
7905 installed shared $libperl.
7913 # Fix ccdlflags in AIX for building external extensions.
7914 # (For building Perl itself bare -bE:perl.exp is needed,
7915 # Makefile.SH takes care of this.)
7917 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7919 # Respect a hint or command-line value.
7921 '') shrpenv="$tmp_shrpenv" ;;
7923 case "$ldlibpthname" in
7924 '') ldlibpthname=LD_LIBRARY_PATH ;;
7925 none) ldlibpthname='' ;;
7928 : determine where manual pages are on this system
7932 syspath='/usr/share/man/man1 /usr/man/man1'
7933 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7934 syspath="$syspath /usr/man/u_man/man1"
7935 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7936 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7937 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7938 sysman=`./loc . /usr/man/man1 $syspath`
7941 if $test -d "$sysman"; then
7942 echo "System manual is in $sysman." >&4
7944 echo "Could not find manual pages in source form." >&4
7947 : determine where manual pages go
7948 set man1dir man1dir none
7952 $spackage has manual pages available in source form.
7956 echo "However, you don't have nroff, so they're probably useless to you."
7958 '') man1dir="none";;
7961 echo "If you don't want the manual sources installed, answer 'none'."
7966 lookpath="$prefixexp/share/man/man1"
7967 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7968 lookpath="$lookpath $prefixexp/man/p_man/man1"
7969 lookpath="$lookpath $prefixexp/man/u_man/man1"
7970 lookpath="$lookpath $prefixexp/man/man.1"
7972 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7973 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7983 rp="Where do the main $spackage manual pages (source) go?"
7985 if $test "X$man1direxp" != "X$ansexp"; then
7989 man1direxp="$ansexp"
7995 : Change installation prefix, if necessary.
7996 if $test X"$prefix" != X"$installprefix"; then
7997 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7999 installman1dir="$man1direxp"
8002 : What suffix to use on installed man pages
8009 rp="What suffix should be used for the main $spackage man pages?"
8011 '') case "$man1dir" in
8025 *) dflt="$man1ext";;
8032 : see if we can have long filenames
8034 first=123456789abcdef
8036 if (echo hi >$first) 2>/dev/null; then
8037 if $test -f 123456789abcde; then
8038 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
8041 echo 'You can have filenames longer than 14 characters.'>&4
8046 You can't have filenames longer than 14 chars.
8047 You can't even think about them!
8053 $rm -rf 123456789abcde*
8055 : determine where library module manual pages go
8056 set man3dir man3dir none
8060 $spackage has manual pages for many of the library modules.
8066 However, you don't have nroff, so they're probably useless to you.
8069 '') man3dir="none";;
8073 case "$d_flexfnam" in
8076 However, your system can't handle the long file names like File::Basename.3.
8079 '') man3dir="none";;
8083 echo "If you don't want the manual sources installed, answer 'none'."
8084 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8086 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8087 if $test -d "$privlib/man/man3"; then
8090 WARNING: Previous versions of perl installed man3 pages into
8091 $privlib/man/man3. This version will suggest a
8092 new default of $dflt.
8096 rp='Do you wish to preserve the old behavior?(y/n)'
8099 y*) dflt="$privlib/man/man3" ;;
8104 *) dflt="$man3dir" ;;
8111 rp="Where do the $package library man pages (source) go?"
8114 man3direxp="$ansexp"
8120 : Change installation prefix, if necessary.
8121 if $test X"$prefix" != X"$installprefix"; then
8122 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
8124 installman3dir="$man3direxp"
8127 : What suffix to use on installed man pages
8133 rp="What suffix should be used for the $package library man pages?"
8135 '') case "$man3dir" in
8149 *) dflt="$man3ext";;
8156 : see if we have to deal with yellow pages, now NIS.
8157 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8158 if $test -f /usr/etc/nibindd; then
8160 echo "I'm fairly confident you're on a NeXT."
8162 rp='Do you get the hosts file via NetInfo?'
8171 y*) hostcat='nidump hosts .';;
8172 *) case "$hostcat" in
8173 nidump*) hostcat='';;
8183 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8191 rp='Are you getting the hosts file via yellow pages?'
8194 y*) hostcat='ypcat hosts';;
8195 *) hostcat='cat /etc/hosts';;
8201 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8204 '') test -f /etc/group && groupcat='cat /etc/group';;
8207 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8210 : now get the host name
8212 echo "Figuring out host name..." >&4
8213 case "$myhostname" in
8215 echo 'Maybe "hostname" will work...'
8216 if tans=`sh -c hostname 2>&1` ; then
8224 if $test "$cont"; then
8226 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
8227 if tans=`cat /etc/systemid 2>&1` ; then
8229 phostname='cat /etc/systemid'
8230 echo "Whadyaknow. Xenix always was a bit strange..."
8233 elif $test -r /etc/systemid; then
8234 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8237 if $test "$cont"; then
8238 echo 'No, maybe "uuname -l" will work...'
8239 if tans=`sh -c 'uuname -l' 2>&1` ; then
8241 phostname='uuname -l'
8243 echo 'Strange. Maybe "uname -n" will work...'
8244 if tans=`sh -c 'uname -n' 2>&1` ; then
8246 phostname='uname -n'
8248 echo 'Oh well, maybe I can mine it out of whoami.h...'
8249 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8250 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8251 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8253 case "$myhostname" in
8254 '') echo "Does this machine have an identity crisis or something?"
8257 echo "Well, you said $myhostname before..."
8258 phostname='echo $myhostname';;
8264 case "$myhostname" in
8265 '') myhostname=noname ;;
8267 : you do not want to know about this
8272 if $test "$myhostname" ; then
8274 rp='Your host name appears to be "'$myhostname'".'" Right?"
8282 : bad guess or no guess
8283 while $test "X$myhostname" = X ; do
8285 rp="Please type the (one word) name of your host:"
8290 : translate upper to lower if necessary
8291 case "$myhostname" in
8293 echo "(Normalizing case in your host name)"
8294 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8298 case "$myhostname" in
8300 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8301 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8302 echo "(Trimming domain name from host name--host name is now $myhostname)"
8304 *) case "$mydomain" in
8307 test "X$hostcat" = "Xypcat hosts" &&
8308 ypmatch "$myhostname" hosts 2>/dev/null |\
8309 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
8312 test "X$hostcat" != "X" &&
8313 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
8314 /[ ]$myhostname[ . ]/p" > hosts
8317 if $test -f hosts; then
8318 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
8319 END { print sum }" hosts` = x1 || tmp_re="[ ]"
8320 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8321 hosts | $sort | $uniq | \
8322 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8323 case `$echo X$dflt` in
8324 X*\ *) echo "(Several hosts in the database matched hostname)"
8327 X.) echo "(You do not have fully-qualified names in the hosts database)"
8331 echo "(I cannot locate a hosts database anywhere)"
8336 tans=`./loc resolv.conf X /etc /usr/etc`
8337 if $test -f "$tans"; then
8338 echo "(Attempting domain name extraction from $tans)"
8339 dflt=.`$sed -n -e 's/ / /g' \
8340 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
8341 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8343 .) dflt=.`$sed -n -e 's/ / /g' \
8344 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
8345 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8352 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8353 dflt=.`sh -c domainname 2>/dev/null`
8356 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8360 case "$dflt$osname" in
8361 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8362 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8366 .) echo "(Lost all hope -- silly guess then)"
8372 *) dflt="$mydomain";;
8376 rp="What is your domain name?"
8386 : translate upper to lower if necessary
8389 echo "(Normalizing case in your domain name)"
8390 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8394 : a little sanity check here
8395 case "$phostname" in
8398 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8399 $myhostname$mydomain|$myhostname) ;;
8401 case "$phostname" in
8403 echo "(That doesn't agree with your whoami.h file, by the way.)"
8406 echo "(That doesn't agree with your $phostname command, by the way.)"
8416 I need to get your e-mail address in Internet format if possible, i.e.
8417 something like user@host.domain. Please answer accurately since I have
8418 no easy means to double check it. The default value provided below
8419 is most probably close to reality but may not be valid from outside
8420 your organization...
8424 while test "$cont"; do
8426 '') dflt="$cf_by@$myhostname$mydomain";;
8427 *) dflt="$cf_email";;
8429 rp='What is your e-mail address?'
8435 rp='Address does not look like an Internet one. Use it anyway?'
8451 If you or somebody else will be maintaining perl at your site, please
8452 fill in the correct e-mail address here so that they may be contacted
8453 if necessary. Currently, the "perlbug" program included with perl
8454 will send mail to this address in addition to perlbug@perl.org. You may
8455 enter "none" for no administrator.
8458 case "$perladmin" in
8459 '') dflt="$cf_email";;
8460 *) dflt="$perladmin";;
8462 rp='Perl administrator e-mail address'
8466 : determine whether to only install version-specific parts.
8469 Do you want to install only the version-specific parts of the perl
8470 distribution? Usually you do *not* want to do this.
8472 case "$versiononly" in
8473 "$define"|[Yy]*|true) dflt='y' ;;
8476 rp="Do you want to install only the version-specific parts of perl?"
8479 [yY]*) val="$define";;
8485 case "$versiononly" in
8486 "$define") inc_version_list=''
8487 inc_version_list_init=0
8491 : figure out how to guarantee perl startup
8492 case "$startperl" in
8494 case "$sharpbang" in
8498 I can use the #! construct to start perl on your system. This will
8499 make startup of perl scripts faster, but may cause problems if you
8500 want to share those scripts and perl is not in a standard place
8501 ($binexp/perl) on all your platforms. The alternative is to force
8502 a shell by starting the script with a single ':' character.
8505 case "$versiononly" in
8506 "$define") dflt="$binexp/perl$version";;
8507 *) dflt="$binexp/perl";;
8509 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8512 none) startperl=": # use perl";;
8513 *) startperl="#!$ans"
8514 if $test 30 -lt `echo "$ans" | wc -c`; then
8517 WARNING: Some systems limit the #! command to 32 characters.
8518 If you experience difficulty running Perl scripts with #!, try
8519 installing Perl in a directory with a shorter pathname.
8525 *) startperl=": # use perl"
8530 echo "I'll use $startperl to start perl scripts."
8532 : figure best path for perl in scripts
8535 case "$versiononly" in
8536 "$define") perlpath="$binexp/perl$version";;
8537 *) perlpath="$binexp/perl";;
8539 case "$startperl" in
8544 I will use the "eval 'exec'" idiom to start Perl on your system.
8545 I can use the full path of your Perl binary for this purpose, but
8546 doing so may cause problems if you want to share those scripts and
8547 Perl is not always in a standard place ($binexp/perl).
8551 rp="What path shall I use in \"eval 'exec'\"?"
8558 case "$startperl" in
8560 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8563 : determine where public executable scripts go
8564 set scriptdir scriptdir
8566 case "$scriptdir" in
8569 : guess some guesses
8570 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8571 $test -d /usr/share/bin && dflt=/usr/share/bin
8572 $test -d /usr/local/script && dflt=/usr/local/script
8573 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8574 $test -d $prefixexp/script && dflt=$prefixexp/script
8578 *) dflt="$scriptdir"
8583 Some installations have a separate directory just for executable scripts so
8584 that they can mount it across multiple architectures but keep the scripts in
8585 one spot. You might, for example, have a subdirectory of /usr/share for this.
8586 Or you might just lump your scripts in with all your other executables.
8590 rp='Where do you keep publicly executable scripts?'
8592 if $test "X$ansexp" != "X$scriptdirexp"; then
8596 scriptdirexp="$ansexp"
8597 : Change installation prefix, if necessary.
8598 if $test X"$prefix" != X"$installprefix"; then
8599 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8601 installscript="$scriptdirexp"
8604 : determine where add-on public executables go
8606 '') dflt=$siteprefix/bin ;;
8610 rp='Pathname where the add-on public executables should be installed?'
8613 sitebinexp="$ansexp"
8614 : Change installation prefix, if necessary.
8615 if $test X"$prefix" != X"$installprefix"; then
8616 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8618 installsitebin="$sitebinexp"
8621 : determine where add-on html pages go
8622 : There is no standard location, so try to copy the previously-selected
8623 : directory structure for the core html pages.
8624 case "$sitehtml1dir" in
8625 '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8626 *) dflt=$sitehtml1dir ;;
8629 ''|' ') dflt=none ;;
8632 rp='Pathname where the site-specific html pages should be installed?'
8635 sitehtml1direxp="$ansexp"
8636 : Change installation prefix, if necessary.
8637 if $test X"$prefix" != X"$installprefix"; then
8638 installsitehtml1dir=`echo $sitehtml1direxp | $sed "s#^$prefix#$installprefix#"`
8640 installsitehtml1dir="$sitehtml1direxp"
8643 : determine where add-on library html pages go
8644 : There is no standard location, so try to copy the previously-selected
8645 : directory structure for the core html pages.
8646 case "$sitehtml3dir" in
8647 '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8648 *) dflt=$sitehtml3dir ;;
8651 ''|' ') dflt=none ;;
8654 rp='Pathname where the site-specific library html pages should be installed?'
8657 sitehtml3direxp="$ansexp"
8658 : Change installation prefix, if necessary.
8659 if $test X"$prefix" != X"$installprefix"; then
8660 installsitehtml3dir=`echo $sitehtml3direxp | $sed "s#^$prefix#$installprefix#"`
8662 installsitehtml3dir="$sitehtml3direxp"
8665 : determine where add-on manual pages go
8666 case "$siteman1dir" in
8667 '') dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8668 *) dflt=$siteman1dir ;;
8671 ''|' ') dflt=none ;;
8674 rp='Pathname where the site-specific manual pages should be installed?'
8677 siteman1direxp="$ansexp"
8678 : Change installation prefix, if necessary.
8679 if $test X"$prefix" != X"$installprefix"; then
8680 installsiteman1dir=`echo $siteman1direxp | $sed "s#^$prefix#$installprefix#"`
8682 installsiteman1dir="$siteman1direxp"
8685 : determine where add-on library man pages go
8686 case "$siteman3dir" in
8687 '') dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8688 *) dflt=$siteman3dir ;;
8691 ''|' ') dflt=none ;;
8694 rp='Pathname where the site-specific library manual pages should be installed?'
8697 siteman3direxp="$ansexp"
8698 : Change installation prefix, if necessary.
8699 if $test X"$prefix" != X"$installprefix"; then
8700 installsiteman3dir=`echo $siteman3direxp | $sed "s#^$prefix#$installprefix#"`
8702 installsiteman3dir="$siteman3direxp"
8705 : determine where add-on public executable scripts go
8706 case "$sitescript" in
8707 '') dflt=$siteprefix/script
8708 $test -d $dflt || dflt=$sitebin ;;
8709 *) dflt="$sitescript" ;;
8712 rp='Pathname where add-on public executable scripts should be installed?'
8715 sitescriptexp="$ansexp"
8716 : Change installation prefix, if necessary.
8717 if $test X"$prefix" != X"$installprefix"; then
8718 installsitescript=`echo $sitescriptexp | sed "s#^$prefix#$installprefix#"`
8720 installsitescript="$sitescriptexp"
8723 case "$usefaststdio" in
8724 $define|true|[yY]*|'')
8725 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8735 Perl can be built to use 'fast stdio', which means using the stdio
8736 library but also directly manipulating the stdio buffers to enable
8737 faster I/O. Using stdio is better for backward compatibility (especially
8738 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8739 interface has been preferred instead of stdio.
8741 If this doesn't make any sense to you, just accept the default '$dflt'.
8743 rp='Use the "fast stdio" if available?'
8746 y|Y) val="$define" ;;
8753 : define an is-a-typedef? function
8754 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8756 "") inclist="sys/types.h";;
8758 eval "varval=\$$var";
8762 for inc in $inclist; do
8763 echo "#include <$inc>" >>temp.c;
8765 echo "#ifdef $type" >> temp.c;
8766 echo "printf(\"We have $type\");" >> temp.c;
8767 echo "#endif" >> temp.c;
8768 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8769 if $contains $type temp.E >/dev/null 2>&1; then
8775 *) eval "$var=\$varval";;
8778 : define an is-a-typedef? function that prompts if the type is not available.
8779 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8781 "") inclist="sys/types.h";;
8783 eval "varval=\$$var";
8787 for inc in $inclist; do
8788 echo "#include <$inc>" >>temp.c;
8790 echo "#ifdef $type" >> temp.c;
8791 echo "printf(\"We have $type\");" >> temp.c;
8792 echo "#endif" >> temp.c;
8793 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8795 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8796 if $contains $type temp.E >/dev/null 2>&1; then
8797 echo "$type found." >&4;
8800 echo "$type NOT found." >&4;
8806 *) eval "$var=\$varval";;
8809 : see what type lseek is declared as in the kernel
8810 rp="What is the type used for lseek's offset on this system?"
8811 set off_t lseektype long stdio.h sys/types.h
8815 echo "Checking to see how big your file offsets are..." >&4
8817 #include <sys/types.h>
8821 printf("%d\n", (int)sizeof($lseektype));
8826 if eval $compile_ok; then
8827 lseeksize=`$run ./try`
8828 echo "Your file offsets are $lseeksize bytes long."
8832 echo "(I can't seem to compile the test program. Guessing...)"
8833 rp="What is the size of your file offsets (in bytes)?"
8839 : see what type file positions are declared as in the library
8840 rp="What is the type for file position used by fsetpos()?"
8841 set fpos_t fpostype long stdio.h sys/types.h
8846 *_t) zzz="$fpostype" ;;
8849 echo "Checking the size of $zzz..." >&4
8851 #include <sys/types.h>
8858 printf("%d\n", (int)sizeof($fpostype));
8863 if eval $compile_ok; then
8867 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8870 echo "Your $zzz is $fpossize bytes long."
8876 echo "(I can't compile the test program. Guessing...)" >&4
8877 rp="What is the size of your file positions (in bytes)?"
8882 # Backward compatibility (uselfs is deprecated).
8884 "$define"|true|[yY]*)
8887 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8889 uselargefiles="$define"
8893 case "$lseeksize:$fpossize" in
8896 You can have files larger than 2 gigabytes.
8899 *) case "$uselargefiles" in
8900 "$undef"|false|[nN]*) dflt='n' ;;
8905 Perl can be built to understand large files (files larger than 2 gigabytes)
8906 on some systems. To do so, Configure can be run with -Duselargefiles.
8908 If this doesn't make any sense to you, just accept the default '$dflt'.
8910 rp='Try to understand large files, if available?'
8913 y|Y) val="$define" ;;
8920 : Look for a hint-file generated 'call-back-unit'. If the
8921 : user has specified that a large files perl is to be built,
8922 : we may need to set or change some other defaults.
8923 if $test -f uselargefiles.cbu; then
8924 echo "Your platform has some specific hints regarding large file builds, using them..."
8925 . ./uselargefiles.cbu
8927 case "$uselargefiles" in
8929 if $test -f uselargefiles.cbu; then
8931 echo "Rechecking to see how big your file offsets are..." >&4
8933 #include <sys/types.h>
8937 printf("%d\n", (int)sizeof($lseektype));
8942 if eval $compile_ok; then
8943 lseeksize=`$run ./try`
8944 $echo "Your file offsets are now $lseeksize bytes long."
8948 echo "(I can't seem to compile the test program. Guessing...)"
8949 rp="What is the size of your file offsets (in bytes)?"
8954 *_t) zzz="$fpostype" ;;
8957 $echo $n "Rechecking the size of $zzz...$c" >&4
8959 #include <sys/types.h>
8966 printf("%d\n", (int)sizeof($fpostype));
8971 if eval $compile_ok; then
8976 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8979 echo " $fpossize bytes." >&4
8985 echo "(I can't compile the test program. Guessing...)" >&4
8986 rp="What is the size of your file positions (in bytes)?"
8995 # probably will refer to
8996 # $archlib $privlib $sitearch $sitelib $vendorarch $vendorlib
8998 userelocatableinc=undef
9000 case "$vendorprefix" in
9001 '') d_vendorbin="$undef"
9005 *) d_vendorbin="$define"
9006 : determine where vendor-supplied executables go.
9007 case "$vendorbin" in
9008 '') dflt=$vendorprefix/bin ;;
9009 *) dflt="$vendorbin" ;;
9012 rp='Pathname for the vendor-supplied executables directory?'
9015 vendorbinexp="$ansexp"
9018 : Change installation prefix, if necessary.
9019 if $test X"$prefix" != X"$installprefix"; then
9020 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
9022 installvendorbin="$vendorbinexp"
9025 case "$vendorprefix" in
9026 '') vendorhtml1dir=''
9027 vendorhtml1direxp=''
9029 *) : determine where vendor-supplied html pages go.
9030 : There is no standard location, so try to copy the previously-selected
9031 : directory structure for the core html pages.
9032 : XXX Better default suggestions would be welcome.
9033 case "$vendorhtml1dir" in
9034 '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9035 *) dflt=$vendorhtml1dir ;;
9038 ''|' ') dflt=none ;;
9041 rp='Pathname for the vendor-supplied html pages?'
9043 vendorhtml1dir="$ans"
9044 vendorhtml1direxp="$ansexp"
9047 : Use ' ' for none so value is preserved next time through Configure
9048 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9049 : Change installation prefix, if necessary.
9050 if $test X"$prefix" != X"$installprefix"; then
9051 installvendorhtml1dir=`echo $vendorhtml1direxp | $sed "s#^$prefix#$installprefix#"`
9053 installvendorhtml1dir="$vendorhtml1direxp"
9056 case "$vendorprefix" in
9057 '') vendorhtml3dir=''
9058 vendorhtml3direxp=''
9060 *) : determine where vendor-supplied module html pages go.
9061 : There is no standard location, so try to copy the previously-selected
9062 : directory structure for the core html pages.
9063 : XXX Better default suggestions would be welcome.
9064 case "$vendorhtml3dir" in
9065 '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9066 *) dflt=$vendorhtml3dir ;;
9069 ''|' ') dflt=none ;;
9072 rp='Pathname for the vendor-supplied html pages?'
9074 vendorhtml3dir="$ans"
9075 vendorhtml3direxp="$ansexp"
9078 : Use ' ' for none so value is preserved next time through Configure
9079 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9080 : Change installation prefix, if necessary.
9081 if $test X"$prefix" != X"$installprefix"; then
9082 installvendorhtml3dir=`echo $vendorhtml3direxp | $sed "s#^$prefix#$installprefix#"`
9084 installvendorhtml3dir="$vendorhtml3direxp"
9087 case "$vendorprefix" in
9088 '') vendorman1dir=''
9091 *) : determine where vendor-supplied manual pages go.
9092 case "$vendorman1dir" in
9093 '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9094 *) dflt=$vendorman1dir ;;
9097 ''|' ') dflt=none ;;
9100 rp='Pathname for the vendor-supplied manual section 1 pages?'
9102 vendorman1dir="$ans"
9103 vendorman1direxp="$ansexp"
9106 : Use ' ' for none so value is preserved next time through Configure
9107 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9108 : Change installation prefix, if necessary.
9109 if $test X"$prefix" != X"$installprefix"; then
9110 installvendorman1dir=`echo "$vendorman1direxp" | $sed "s#^$prefix#$installprefix#"`
9112 installvendorman1dir="$vendorman1direxp"
9115 case "$vendorprefix" in
9116 '') vendorman3dir=''
9119 *) : determine where vendor-supplied module manual pages go.
9120 case "$vendorman3dir" in
9121 '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9122 *) dflt=$vendorman3dir ;;
9125 ''|' ') dflt=none ;;
9128 rp='Pathname for the vendor-supplied manual section 3 pages?'
9130 vendorman3dir="$ans"
9131 vendorman3direxp="$ansexp"
9134 : Use ' ' for none so value is preserved next time through Configure
9135 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9136 : Change installation prefix, if necessary.
9137 if $test X"$prefix" != X"$installprefix"; then
9138 installvendorman3dir=`echo "$vendorman3direxp" | $sed "s#^$prefix#$installprefix#"`
9140 installvendorman3dir="$vendorman3direxp"
9143 case "$vendorprefix" in
9144 '') d_vendorscript="$undef"
9148 *) d_vendorscript="$define"
9149 : determine where vendor-supplied scripts go.
9150 case "$vendorscript" in
9151 '') dflt=$vendorprefix/script
9152 $test -d $dflt || dflt=$vendorbin ;;
9153 *) dflt="$vendorscript" ;;
9157 The installation process will create a directory for
9158 vendor-supplied scripts.
9162 rp='Pathname for the vendor-supplied scripts directory?'
9165 vendorscriptexp="$ansexp"
9168 : Change installation prefix, if necessary.
9169 if $test X"$prefix" != X"$installprefix"; then
9170 installvendorscript=`echo $vendorscriptexp | $sed "s#^$prefix#$installprefix#"`
9172 installvendorscript="$vendorscriptexp"
9175 : see if qgcvt exists
9181 if $test X"$d_longdbl" = X"$define"; then
9183 echo "Checking how to print long doubles..." >&4
9185 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9186 $cat >try.c <<'EOCP'
9187 #include <sys/types.h>
9191 printf("%.3f\n", d);
9195 if eval $compile; then
9199 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9200 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9201 echo "We will use %f."
9207 if $test X"$sPRIfldbl" = X; then
9208 $cat >try.c <<'EOCP'
9209 #include <sys/types.h>
9212 long double d = 123.456;
9213 printf("%.3Lf\n", d);
9217 if eval $compile; then
9221 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9222 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9223 echo "We will use %Lf."
9229 if $test X"$sPRIfldbl" = X; then
9230 $cat >try.c <<'EOCP'
9231 #include <sys/types.h>
9234 long double d = 123.456;
9235 printf("%.3llf\n", d);
9239 if eval $compile; then
9243 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9244 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9245 echo "We will use %llf."
9251 if $test X"$sPRIfldbl" = X; then
9252 $cat >try.c <<'EOCP'
9253 #include <sys/types.h>
9256 long double d = 123.456;
9257 printf("%.3lf\n", d);
9261 if eval $compile; then
9265 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9266 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9267 echo "We will use %lf."
9273 if $test X"$sPRIfldbl" = X; then
9274 echo "Cannot figure out how to print long doubles." >&4
9276 sSCNfldbl=$sPRIfldbl # expect consistency
9283 case "$sPRIfldbl" in
9284 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9285 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9286 d_SCNfldbl="$undef";
9288 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9289 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9290 d_SCNfldbl="$define";
9294 : Check how to convert floats to strings.
9296 if test "X$d_Gconvert" = X; then
9299 echo "Checking for an efficient way to convert floats to strings."
9301 case "$uselongdouble" in
9302 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9304 case "$d_longdbl" in
9305 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9307 case "$d_PRIgldbl" in
9308 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
9312 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9313 char *myname = "gconvert";
9316 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9317 char *myname = "gcvt";
9320 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9321 char *myname = "qgcvt";
9322 #define DOUBLETYPE long double
9325 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9327 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9329 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9332 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9334 char *myname = "sprintf";
9338 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9339 #define DOUBLETYPE long double
9341 #define DOUBLETYPE double
9347 #define I_STDLIB $i_stdlib
9353 checkit(expect, got)
9357 if (strcmp(expect, got)) {
9358 printf("%s oddity: Expected %s, got %s\n",
9359 myname, expect, got);
9369 /* This must be 1st test on (which?) platform */
9370 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9371 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9372 checkit("0.1", buf);
9374 Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9375 checkit("0.01", buf);
9377 Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9378 checkit("0.001", buf);
9380 Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9381 checkit("0.0001", buf);
9383 Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9384 if (strlen(buf) > 5)
9385 checkit("9e-005", buf); /* for Microsoft ?? */
9387 checkit("9e-05", buf);
9389 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9392 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9393 checkit("1.1", buf);
9395 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9396 checkit("1.01", buf);
9398 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9399 checkit("1.001", buf);
9401 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9402 checkit("1.0001", buf);
9404 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9405 checkit("1.00001", buf);
9407 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9408 checkit("1.000001", buf);
9410 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9413 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9416 /* Some Linux gcvt's give 1.e+5 here. */
9417 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9418 checkit("100000", buf);
9420 /* Some Linux gcvt's give -1.e+5 here. */
9421 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9422 checkit("-100000", buf);
9424 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9425 checkit("123.456", buf);
9427 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9428 Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9429 /* 34 should be enough to scare even long double
9430 * places into using the e notation. */
9431 if (strlen(buf) > 5)
9432 checkit("1e+034", buf); /* for Microsoft */
9434 checkit("1e+34", buf);
9436 /* For Perl, if you add additional tests here, also add them to
9437 * t/base/num.t for benefit of platforms not using Configure or
9438 * overriding d_Gconvert */
9443 : first add preferred functions to our list
9445 for xxx_convert in $gconvert_preference; do
9446 case $xxx_convert in
9447 gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9448 *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9451 : then add any others
9452 for xxx_convert in gconvert gcvt sprintf; do
9455 *) xxx_list="$xxx_list $xxx_convert" ;;
9459 case "$d_longdbl$uselongdouble" in
9461 : again, add prefered functions to our list first
9463 for xxx_convert in $gconvert_ld_preference; do
9464 case $xxx_convert in
9465 qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9466 *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9469 : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9470 for xxx_convert in qgcvt sprintf $xxx_list; do
9471 case "$xxx_ld_list" in
9472 $xxx_convert*|*" $xxx_convert"*) ;;
9473 *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9476 : if sprintf cannot do long doubles, move it to the end
9477 if test "$d_PRIgldbl" != "$define"; then
9478 xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9480 : if no qgcvt, remove it
9481 if test "$d_qgcvt" != "$define"; then
9482 xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9485 xxx_list="$xxx_ld_list"
9489 for xxx_convert in $xxx_list; do
9490 echo "Trying $xxx_convert..."
9492 set try -DTRY_$xxx_convert
9493 if eval $compile; then
9494 echo "$xxx_convert() found." >&4
9496 echo "I'll use $xxx_convert to convert floats into a string." >&4
9499 echo "...But $xxx_convert didn't work as I expected."
9503 echo "$xxx_convert NOT found." >&4
9507 if test X$xxx_convert = X; then
9508 echo "*** WHOA THERE!!! ***" >&4
9509 echo "None of ($xxx_list) seemed to work properly. I'll use sprintf." >&4
9513 case "$xxx_convert" in
9514 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9515 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9516 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9517 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9518 "$define$define$define")
9519 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9520 "$define$define$undef")
9521 d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9522 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9529 : see if _fwalk exists
9533 : Initialize h_fcntl
9536 : Initialize h_sysfile
9539 : access call always available on UNIX
9543 : locate the flags for 'access()'
9547 $cat >access.c <<EOCP
9548 #include <sys/types.h>
9553 #include <sys/file.h>
9566 : check sys/file.h first, no particular reason here
9567 if $test `./findhdr sys/file.h` && \
9568 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9570 echo "<sys/file.h> defines the *_OK access constants." >&4
9571 elif $test `./findhdr fcntl.h` && \
9572 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9574 echo "<fcntl.h> defines the *_OK access constants." >&4
9575 elif $test `./findhdr unistd.h` && \
9576 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9577 echo "<unistd.h> defines the *_OK access constants." >&4
9579 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9585 : see if accessx exists
9586 set accessx d_accessx
9589 : see if aintl exists
9593 : see if alarm exists
9597 : see if POSIX threads are available
9598 set pthread.h i_pthread
9601 : define a fucntion to check prototypes
9602 $cat > protochk <<EOSH
9605 optimize="$optimize"
9607 prototype="$prototype"
9610 usethreads=$usethreads
9611 i_pthread=$i_pthread
9612 pthread_h_first=$pthread_h_first
9615 $cat >> protochk <<'EOSH'
9620 while test $# -ge 2; do
9622 $define) echo "#include <$2>" >> try.c ;;
9623 literal) echo "$2" >> try.c ;;
9625 # Extra magic for the benefit of systems that need pthread.h
9626 # to be included early to correctly detect threadsafe functions.
9627 # Such functions must guarantee themselves, though, that the usethreads
9628 # and i_pthread have been defined, before calling protochk.
9629 if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9630 echo "#include <pthread.h>" >> try.c
9635 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
9636 cat >> try.c <<'EOCP'
9637 #ifdef CAN_PROTOTYPE
9638 #define _(args) args
9643 echo "$foo" >> try.c
9644 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9645 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9653 hasproto='varname=$1; func=$2; shift; shift;
9654 while $test $# -ge 2; do
9656 $define) echo "#include <$2>";;
9660 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9661 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9662 echo "$func() prototype found.";
9665 echo "$func() prototype NOT found.";
9670 $rm -f try.c tryout.c'
9672 : see if sys/types.h has to be included
9673 set sys/types.h i_systypes
9676 : see if sys/select.h has to be included
9677 set sys/select.h i_sysselct
9680 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9681 while $test $# -ge 2; do
9683 $define) echo "#include <$2>";;
9687 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9689 if eval $compile; then
9698 : see if we should include time.h, sys/time.h, or both
9700 if test "X$timeincl" = X; then
9701 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9702 $echo $n "I'm now running the test program...$c"
9704 #include <sys/types.h>
9709 #ifdef SYSTIMEKERNEL
9712 #include <sys/time.h>
9715 #include <sys/select.h>
9728 struct timezone tzp;
9730 if (foo.tm_sec == foo.tm_sec)
9733 if (bar.tv_sec == bar.tv_sec)
9740 for s_timezone in '-DS_TIMEZONE' ''; do
9742 for s_timeval in '-DS_TIMEVAL' ''; do
9743 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9744 for i_time in '' '-DI_TIME'; do
9745 for i_systime in '-DI_SYSTIME' ''; do
9748 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9749 if eval $compile; then
9750 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9754 $echo $n "Succeeded with $flags$c"
9766 *SYSTIMEKERNEL*) i_systimek="$define"
9767 timeincl=`./findhdr sys/time.h`
9768 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9769 *) i_systimek="$undef";;
9772 *I_TIME*) i_time="$define"
9773 timeincl=`./findhdr time.h`" $timeincl"
9774 echo "We'll include <time.h>." >&4;;
9775 *) i_time="$undef";;
9778 *I_SYSTIME*) i_systime="$define"
9779 timeincl=`./findhdr sys/time.h`" $timeincl"
9780 echo "We'll include <sys/time.h>." >&4;;
9781 *) i_systime="$undef";;
9785 : see if struct tm knows about tm_zone
9786 case "$i_systime$i_time" in
9789 echo "Checking to see if your struct tm has tm_zone field..." >&4
9790 set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9798 case "$d_tm_tm_zone" in
9799 "$define") echo "Yes, it does." ;;
9800 *) echo "No, it doesn't." ;;
9802 : see if struct tm knows about tm_gmtoff
9803 case "$i_systime$i_time" in
9806 echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9807 set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9815 case "$d_tm_tm_gmtoff" in
9816 "$define") echo "Yes, it does." ;;
9817 *) echo "No, it doesn't." ;;
9820 : see if asctime_r exists
9821 set asctime_r d_asctime_r
9823 case "$d_asctime_r" in
9825 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9826 case "$d_asctime_r_proto:$usethreads" in
9827 ":define") d_asctime_r_proto=define
9828 set d_asctime_r_proto asctime_r $hdrs
9832 case "$d_asctime_r_proto" in
9834 case "$asctime_r_proto" in
9835 ''|0) try='char* asctime_r(const struct tm*, char*);'
9836 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9838 case "$asctime_r_proto" in
9839 ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9840 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9842 case "$asctime_r_proto" in
9843 ''|0) try='int asctime_r(const struct tm*, char*);'
9844 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9846 case "$asctime_r_proto" in
9847 ''|0) try='int asctime_r(const struct tm*, char*, int);'
9848 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9850 case "$asctime_r_proto" in
9851 ''|0) d_asctime_r=undef
9853 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9854 * ) case "$asctime_r_proto" in
9855 REENTRANT_PROTO*) ;;
9856 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9858 echo "Prototype: $try" ;;
9861 *) case "$usethreads" in
9862 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9869 *) asctime_r_proto=0
9873 : see if atolf exists
9877 : see if atoll exists
9881 : Look for GNU-cc style attribute checking
9882 case "$d_attribut" in
9885 echo "Checking whether your compiler can handle __attribute__ ..." >&4
9886 $cat >attrib.c <<'EOCP'
9888 void croak (char* pat,...) __attribute__((__format__(__printf__,1,2),noreturn));
9890 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
9891 if $contains 'warning' attrib.out >/dev/null 2>&1; then
9892 echo "Your C compiler doesn't fully support __attribute__."
9895 echo "Your C compiler supports __attribute__."
9899 echo "Your C compiler doesn't seem to understand __attribute__ at all."
9903 *) val="$d_attribut" ;;
9909 : see if bcmp exists
9913 : see if bcopy exists
9917 : see if this is a unistd.h system
9918 set unistd.h i_unistd
9921 : see if getpgrp exists
9922 set getpgrp d_getpgrp
9925 case "$d_getpgrp" in
9928 echo "Checking to see which flavor of getpgrp is in use..."
9931 #include <sys/types.h>
9933 # include <unistd.h>
9941 if (getuid() == 0) {
9942 printf("(I see you are running Configure as super-user...)\n");
9946 if (getpgrp(1) == 0)
9955 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9956 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
9958 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
9959 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
9962 echo "I can't seem to compile and run the test program."
9964 xxx="a USG one, i.e. you use getpgrp()."
9966 # SVR4 systems can appear rather BSD-ish.
9969 xxx="a BSD one, i.e. you use getpgrp(pid)."
9973 xxx="probably a USG one, i.e. you use getpgrp()."
9978 echo "Assuming your getpgrp is $xxx" >&4
9987 : see if setpgrp exists
9988 set setpgrp d_setpgrp
9991 case "$d_setpgrp" in
9994 echo "Checking to see which flavor of setpgrp is in use..."
9997 #include <sys/types.h>
9999 # include <unistd.h>
10001 #$i_stdlib I_STDLIB
10003 #include <stdlib.h>
10007 if (getuid() == 0) {
10008 printf("(I see you are running Configure as super-user...)\n");
10011 #ifdef TRY_BSD_PGRP
10012 if (-1 == setpgrp(1, 1))
10015 if (setpgrp() != -1)
10021 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10022 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10024 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10025 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10028 echo "(I can't seem to compile and run the test program.)"
10030 xxx="a USG one, i.e. you use setpgrp()."
10032 # SVR4 systems can appear rather BSD-ish.
10033 case "$i_unistd" in
10035 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10039 xxx="probably a USG one, i.e. you use setpgrp()."
10044 echo "Assuming your setpgrp is $xxx" >&4
10052 : see if bzero exists
10056 : see if signal is declared as pointer to function returning int or void
10058 xxx=`./findhdr signal.h`
10059 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10060 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
10061 echo "You have int (*signal())() instead of void." >&4
10063 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
10064 echo "You have void (*signal())()." >&4
10066 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10067 echo "You have int (*signal())() instead of void." >&4
10069 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10070 echo "You have void (*signal())()." >&4
10073 case "$d_voidsig" in
10075 echo "I can't determine whether signal handler returns void or int..." >&4
10077 rp="What type does your signal handler return?"
10080 v*) val="$define";;
10084 echo "As you already told me, signal handler returns void." >&4
10087 *) echo "As you already told me, signal handler returns int." >&4
10094 case "$d_voidsig" in
10095 "$define") signal_t="void";;
10096 *) signal_t="int";;
10100 : check for ability to cast large floats to 32-bit ints.
10102 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10103 if $test "$intsize" -ge 4; then
10110 #$i_stdlib I_STDLIB
10112 #include <stdlib.h>
10114 #include <sys/types.h>
10115 #include <signal.h>
10116 $signal_t blech(s) int s; { exit(3); }
10123 signal(SIGFPE, blech);
10125 /* Don't let compiler optimize the test away. Store the number
10126 in a writable string for gcc to pass to sscanf under HP/UX.
10128 sprintf(str, "2147483647");
10129 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10133 /* x86 processors will probably give 0x8000 0000, which is a
10134 sign change. We don't want that. We want to mimic SPARC
10135 behavior here, which is to preserve the sign and give
10138 if (i32 != ($xxx) f)
10144 if eval $compile_ok; then
10148 echo "(I can't seem to compile the test program--assuming it can't)"
10153 echo "Yup, it can."
10156 echo "Nope, it can't."
10163 : check for ability to cast negative floats to unsigned
10165 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10168 #$i_stdlib I_STDLIB
10170 #include <stdlib.h>
10172 #include <sys/types.h>
10173 #include <signal.h>
10174 $signal_t blech(s) int s; { exit(7); }
10175 $signal_t blech_in_list(s) int s; { exit(4); }
10176 unsigned long dummy_long(p) unsigned long p; { return p; }
10177 unsigned int dummy_int(p) unsigned int p; { return p; }
10178 unsigned short dummy_short(p) unsigned short p; { return p; }
10182 unsigned long along;
10184 unsigned short ashort;
10188 /* Frustrate gcc-2.7.2's optimizer which failed this test with
10189 a direct f = -123. assignment. gcc-2.8.0 reportedly
10190 optimized the whole file away
10192 /* Store the number in a writable string for gcc to pass to
10193 sscanf under HP/UX.
10195 sprintf(str, "-123");
10196 sscanf(str, "%lf", &f); /* f = -123.; */
10198 signal(SIGFPE, blech);
10199 along = (unsigned long)f;
10200 aint = (unsigned int)f;
10201 ashort = (unsigned short)f;
10202 if (along != (unsigned long)-123)
10204 if (aint != (unsigned int)-123)
10206 if (ashort != (unsigned short)-123)
10208 sprintf(str, "1073741824.");
10209 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10212 along = (unsigned long)f;
10213 if (along != 0x80000000)
10217 along = (unsigned long)f;
10218 if (along != 0x7fffffff)
10222 along = (unsigned long)f;
10223 if (along != 0x80000001)
10227 signal(SIGFPE, blech_in_list);
10228 sprintf(str, "123.");
10229 sscanf(str, "%lf", &f); /* f = 123.; */
10230 along = dummy_long((unsigned long)f);
10231 aint = dummy_int((unsigned int)f);
10232 ashort = dummy_short((unsigned short)f);
10233 if (along != (unsigned long)123)
10235 if (aint != (unsigned int)123)
10237 if (ashort != (unsigned short)123)
10244 if eval $compile_ok; then
10248 echo "(I can't seem to compile the test program--assuming it can't)"
10251 case "$castflags" in
10253 echo "Yup, it can."
10256 echo "Nope, it can't."
10263 : see if vprintf exists
10265 if set vprintf val -f d_vprintf; eval $csym; $val; then
10266 echo 'vprintf() found.' >&4
10269 #include <varargs.h>
10270 #$i_stdlib I_STDLIB
10272 #include <stdlib.h>
10275 int main() { xxx("foo"); }
10284 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10288 if eval $compile && $run ./try; then
10289 echo "Your vsprintf() returns (int)." >&4
10292 echo "Your vsprintf() returns (char*)." >&4
10296 echo 'vprintf() NOT found.' >&4
10307 : see if chown exists
10311 : see if chroot exists
10312 set chroot d_chroot
10315 : see if chsize exists
10316 set chsize d_chsize
10319 : see if class exists
10323 hasstruct='varname=$1; struct=$2; shift; shift;
10324 while $test $# -ge 2; do
10326 $define) echo "#include <$2>";;
10330 echo "int main () { struct $struct foo; }" >> try.c;
10332 if eval $compile; then
10339 $rm -f try.c try.o'
10343 : see whether socket exists
10345 $echo $n "Hmm... $c" >&4
10346 if set socket val -f d_socket; eval $csym; $val; then
10347 echo "Looks like you have Berkeley networking support." >&4
10349 if set setsockopt val -f; eval $csym; $val; then
10352 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10353 d_oldsock="$define"
10356 if $contains socklib libc.list >/dev/null 2>&1; then
10357 echo "Looks like you have Berkeley networking support." >&4
10359 : we will have to assume that it supports the 4.2 BSD interface
10362 echo "You don't have Berkeley networking in libc$_a..." >&4
10363 if test "X$d_socket" = "X$define"; then
10364 echo "...but you seem to believe that you have sockets." >&4
10366 for net in net socket
10368 if test -f /usr/lib/lib$net$_a; then
10369 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
10370 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10371 if $contains socket libc.list >/dev/null 2>&1; then
10376 echo "...but the Wollongong group seems to have hacked it in." >&4
10377 sockethdr="-I/usr/netinclude"
10380 echo "Found Berkeley sockets interface in lib$net." >&4
10381 if $contains setsockopt libc.list >/dev/null 2>&1; then
10384 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10385 d_oldsock="$define"
10391 if test "X$d_socket" != "X$define"; then
10392 echo "or anywhere else I see." >&4
10400 : see if socketpair exists
10401 set socketpair d_sockpair
10406 echo "Checking the availability of certain socket constants..." >&4
10407 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10408 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10410 #include <sys/types.h>
10411 #include <sys/socket.h>
10417 set try; if eval $compile; then
10420 set d_${enum}; eval $setvar
10424 : see if this is a sys/uio.h system
10425 set sys/uio.h i_sysuio
10430 echo "Checking to see if your system supports struct cmsghdr..." >&4
10431 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10433 case "$d_cmsghdr_s" in
10434 "$define") echo "Yes, it does." ;;
10435 *) echo "No, it doesn't." ;;
10439 : check for const keyword
10441 echo 'Checking to see if your C compiler knows about "const"...' >&4
10442 $cat >const.c <<'EOCP'
10443 typedef struct spug { int drokk; } spug;
10450 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
10452 echo "Yup, it does."
10455 echo "Nope, it doesn't."
10460 : see if copysignl exists
10461 set copysignl d_copysignl
10464 : see if crypt exists
10469 $define) cryptlib='' ;;
10470 *) if set crypt val -f d_crypt; eval $csym; $val; then
10471 echo 'crypt() found.' >&4
10475 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
10476 if $test -z "$cryptlib"; then
10477 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
10481 if $test -z "$cryptlib"; then
10482 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
10486 if $test -z "$cryptlib"; then
10487 cryptlib=`./loc libcrypt$_a "" $libpth`
10491 if $test -z "$cryptlib"; then
10492 echo 'crypt() NOT found.' >&4
10503 : see if this is a crypt.h system
10504 set crypt.h i_crypt
10507 : see if crypt_r exists
10508 set crypt_r d_crypt_r
10510 case "$d_crypt_r" in
10512 hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
10513 case "$d_crypt_r_proto:$usethreads" in
10514 ":define") d_crypt_r_proto=define
10515 set d_crypt_r_proto crypt_r $hdrs
10519 case "$d_crypt_r_proto" in
10521 case "$crypt_r_proto" in
10522 ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
10523 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
10525 case "$crypt_r_proto" in
10526 ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
10527 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
10529 case "$crypt_r_proto" in
10530 ''|0) d_crypt_r=undef
10532 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
10533 * ) case "$crypt_r_proto" in
10534 REENTRANT_PROTO*) ;;
10535 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
10537 echo "Prototype: $try" ;;
10540 *) case "$usethreads" in
10541 define) echo "crypt_r has no prototype, not using it." >&4 ;;
10552 : get csh whereabouts
10554 'csh') val="$undef" ;;
10555 *) val="$define" ;;
10559 : Respect a hint or command line value for full_csh.
10560 case "$full_csh" in
10561 '') full_csh=$csh ;;
10564 : see if ctermid_r exists
10565 set ctermid_r d_ctermid_r
10567 case "$d_ctermid_r" in
10569 hdrs="$i_systypes sys/types.h define stdio.h "
10570 case "$d_ctermid_r_proto:$usethreads" in
10571 ":define") d_ctermid_r_proto=define
10572 set d_ctermid_r_proto ctermid_r $hdrs
10576 case "$d_ctermid_r_proto" in
10578 case "$ctermid_r_proto" in
10579 ''|0) try='char* ctermid_r(char*);'
10580 ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
10582 case "$ctermid_r_proto" in
10583 ''|0) d_ctermid_r=undef
10585 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
10586 * ) case "$ctermid_r_proto" in
10587 REENTRANT_PROTO*) ;;
10588 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
10590 echo "Prototype: $try" ;;
10593 *) case "$usethreads" in
10594 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
10601 *) ctermid_r_proto=0
10605 : see if ctime_r exists
10606 set ctime_r d_ctime_r
10608 case "$d_ctime_r" in
10610 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
10611 case "$d_ctime_r_proto:$usethreads" in
10612 ":define") d_ctime_r_proto=define
10613 set d_ctime_r_proto ctime_r $hdrs
10617 case "$d_ctime_r_proto" in
10619 case "$ctime_r_proto" in
10620 ''|0) try='char* ctime_r(const time_t*, char*);'
10621 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
10623 case "$ctime_r_proto" in
10624 ''|0) try='char* ctime_r(const time_t*, char*, int);'
10625 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
10627 case "$ctime_r_proto" in
10628 ''|0) try='int ctime_r(const time_t*, char*);'
10629 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
10631 case "$ctime_r_proto" in
10632 ''|0) try='int ctime_r(const time_t*, char*, int);'
10633 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
10635 case "$ctime_r_proto" in
10636 ''|0) d_ctime_r=undef
10638 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
10639 * ) case "$ctime_r_proto" in
10640 REENTRANT_PROTO*) ;;
10641 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
10643 echo "Prototype: $try" ;;
10646 *) case "$usethreads" in
10647 define) echo "ctime_r has no prototype, not using it." >&4 ;;
10658 : see if cuserid exists
10659 set cuserid d_cuserid
10662 : see if this is a limits.h system
10663 set limits.h i_limits
10666 : see if this is a float.h system
10667 set float.h i_float
10670 : See if number of significant digits in a double precision number is known
10672 $cat >dbl_dig.c <<EOM
10673 #$i_limits I_LIMITS
10676 #include <limits.h>
10682 printf("Contains DBL_DIG");
10685 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
10686 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
10687 echo "DBL_DIG found." >&4
10690 echo "DBL_DIG NOT found." >&4
10697 : see if dbm.h is available
10698 : see if dbmclose exists
10699 set dbmclose d_dbmclose
10702 case "$d_dbmclose" in
10712 *) set rpcsvc/dbm.h i_rpcsvcdbm
10717 *) echo "We won't be including <dbm.h>"
10727 : see if prototype for dbminit is available
10729 set d_dbminitproto dbminit $i_dbm dbm.h
10732 : see if difftime exists
10733 set difftime d_difftime
10736 : see if this is a dirent system
10738 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
10740 echo "<dirent.h> found." >&4
10743 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
10744 echo "<sys/dir.h> found." >&4
10747 xinc=`./findhdr sys/ndir.h`
10749 echo "<dirent.h> NOT found." >&4
10754 : Look for type of directory structure.
10756 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10758 case "$direntrytype" in
10760 case "$i_dirent" in
10761 $define) guess1='struct dirent' ;;
10762 *) guess1='struct direct' ;;
10765 *) guess1="$direntrytype"
10770 'struct dirent') guess2='struct direct' ;;
10771 *) guess2='struct dirent' ;;
10774 if $contains "$guess1" try.c >/dev/null 2>&1; then
10775 direntrytype="$guess1"
10776 echo "Your directory entries are $direntrytype." >&4
10777 elif $contains "$guess2" try.c >/dev/null 2>&1; then
10778 direntrytype="$guess2"
10779 echo "Your directory entries seem to be $direntrytype." >&4
10781 echo "I don't recognize your system's directory entries." >&4
10782 rp="What type is used for directory entries on this system?"
10785 direntrytype="$ans"
10790 : see if the directory entry stores field length
10792 $cppstdin $cppflags $cppminus < "$xinc" > try.c
10793 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
10794 echo "Good, your directory entry keeps length information in d_namlen." >&4
10797 echo "Your directory entry does not know about the d_namlen field." >&4
10804 : see if this is an sysdir system
10805 set sys/dir.h i_sysdir
10808 : see if this is an sysndir system
10809 set sys/ndir.h i_sysndir
10814 $cat >dirfd.c <<EOM
10816 #$i_stdlib I_STDLIB
10818 #include <stdlib.h>
10820 #$i_dirent I_DIRENT /**/
10821 #$i_sysdir I_SYS_DIR /**/
10822 #$i_sysndir I_SYS_NDIR /**/
10823 #$i_systypes I_SYS_TYPES /**/
10824 #if defined(I_SYS_TYPES)
10825 #include <sys/types.h>
10827 #if defined(I_DIRENT)
10828 #include <dirent.h>
10829 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
10830 #include <sys/dir.h>
10834 #include <sys/ndir.h>
10838 #include <ndir.h> /* may be wrong in the future */
10840 #include <sys/dir.h>
10846 DIR *dirp = opendir(".");
10847 if (dirfd(dirp) >= 0)
10854 if eval $compile; then
10858 $define) echo "dirfd() found." >&4 ;;
10859 *) echo "dirfd() NOT found." >&4 ;;
10865 : see if dlerror exists
10868 set dlerror d_dlerror
10872 : see if dlfcn is available
10873 set dlfcn.h i_dlfcn
10880 On a few systems, the dynamically loaded modules that perl generates and uses
10881 will need a different extension than shared libs. The default will probably
10887 *) dflt="$dlext" ;;
10889 rp='What is the extension of dynamically loaded modules'
10898 : Check if dlsym need a leading underscore
10904 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
10905 $cat >dyna.c <<'EOM'
10912 #$i_stdlib I_STDLIB
10914 #include <stdlib.h>
10918 #include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
10920 #include <sys/types.h>
10925 extern int fred() ;
10934 int mode = RTLD_LAZY ;
10936 handle = dlopen("./dyna.$dlext", mode) ;
10937 if (handle == NULL) {
10942 symbol = dlsym(handle, "fred") ;
10943 if (symbol == NULL) {
10944 /* try putting a leading underscore */
10945 symbol = dlsym(handle, "_fred") ;
10946 if (symbol == NULL) {
10959 : Call the object file tmp-dyna.o in case dlext=o.
10960 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
10961 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
10962 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
10963 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
10966 1) echo "Test program failed using dlopen." >&4
10967 echo "Perhaps you should not use dynamic loading." >&4;;
10968 2) echo "Test program failed using dlsym." >&4
10969 echo "Perhaps you should not use dynamic loading." >&4;;
10970 3) echo "dlsym needs a leading underscore" >&4
10972 4) echo "dlsym doesn't need a leading underscore." >&4;;
10975 echo "I can't compile and run the test program." >&4
10976 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
10981 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
10986 : see if drand48_r exists
10987 set drand48_r d_drand48_r
10989 case "$d_drand48_r" in
10991 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
10992 case "$d_drand48_r_proto:$usethreads" in
10993 ":define") d_drand48_r_proto=define
10994 set d_drand48_r_proto drand48_r $hdrs
10998 case "$d_drand48_r_proto" in
11000 case "$drand48_r_proto" in
11001 ''|0) try='int drand48_r(struct drand48_data*, double*);'
11002 ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11004 case "$drand48_r_proto" in
11005 ''|0) d_drand48_r=undef
11007 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11008 * ) case "$drand48_r_proto" in
11009 REENTRANT_PROTO*) ;;
11010 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11012 echo "Prototype: $try" ;;
11015 *) case "$usethreads" in
11016 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11023 *) drand48_r_proto=0
11027 : see if prototype for drand48 is available
11029 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11032 : see if dup2 exists
11036 : see if eaccess exists
11037 set eaccess d_eaccess
11040 : see if endgrent exists
11041 set endgrent d_endgrent
11044 : see if this is an grp system
11050 xxx=`./findhdr grp.h`
11051 $cppstdin $cppflags $cppminus < $xxx >$$.h
11053 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11065 set d_grpasswd; eval $setvar
11069 : see if endgrent_r exists
11070 set endgrent_r d_endgrent_r
11072 case "$d_endgrent_r" in
11074 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11075 case "$d_endgrent_r_proto:$usethreads" in
11076 ":define") d_endgrent_r_proto=define
11077 set d_endgrent_r_proto endgrent_r $hdrs
11081 case "$d_endgrent_r_proto" in
11083 case "$endgrent_r_proto" in
11084 ''|0) try='int endgrent_r(FILE**);'
11085 ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11087 case "$endgrent_r_proto" in
11088 ''|0) try='void endgrent_r(FILE**);'
11089 ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11091 case "$endgrent_r_proto" in
11092 ''|0) d_endgrent_r=undef
11094 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11095 * ) case "$endgrent_r_proto" in
11096 REENTRANT_PROTO*) ;;
11097 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11099 echo "Prototype: $try" ;;
11102 *) case "$usethreads" in
11103 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11110 *) endgrent_r_proto=0
11114 : see if endhostent exists
11115 set endhostent d_endhent
11118 : see if this is a netdb.h system
11119 set netdb.h i_netdb
11122 : see if endhostent_r exists
11123 set endhostent_r d_endhostent_r
11125 case "$d_endhostent_r" in
11127 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11128 case "$d_endhostent_r_proto:$usethreads" in
11129 ":define") d_endhostent_r_proto=define
11130 set d_endhostent_r_proto endhostent_r $hdrs
11134 case "$d_endhostent_r_proto" in
11136 case "$endhostent_r_proto" in
11137 ''|0) try='int endhostent_r(struct hostent_data*);'
11138 ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11140 case "$endhostent_r_proto" in
11141 ''|0) try='void endhostent_r(struct hostent_data*);'
11142 ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11144 case "$endhostent_r_proto" in
11145 ''|0) d_endhostent_r=undef
11146 endhostent_r_proto=0
11147 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11148 * ) case "$endhostent_r_proto" in
11149 REENTRANT_PROTO*) ;;
11150 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11152 echo "Prototype: $try" ;;
11155 *) case "$usethreads" in
11156 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11158 d_endhostent_r=undef
11159 endhostent_r_proto=0
11163 *) endhostent_r_proto=0
11167 : see if endnetent exists
11168 set endnetent d_endnent
11171 : see if endnetent_r exists
11172 set endnetent_r d_endnetent_r
11174 case "$d_endnetent_r" in
11176 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11177 case "$d_endnetent_r_proto:$usethreads" in
11178 ":define") d_endnetent_r_proto=define
11179 set d_endnetent_r_proto endnetent_r $hdrs
11183 case "$d_endnetent_r_proto" in
11185 case "$endnetent_r_proto" in
11186 ''|0) try='int endnetent_r(struct netent_data*);'
11187 ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11189 case "$endnetent_r_proto" in
11190 ''|0) try='void endnetent_r(struct netent_data*);'
11191 ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11193 case "$endnetent_r_proto" in
11194 ''|0) d_endnetent_r=undef
11195 endnetent_r_proto=0
11196 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11197 * ) case "$endnetent_r_proto" in
11198 REENTRANT_PROTO*) ;;
11199 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11201 echo "Prototype: $try" ;;
11204 *) case "$usethreads" in
11205 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11207 d_endnetent_r=undef
11208 endnetent_r_proto=0
11212 *) endnetent_r_proto=0
11216 : see if endprotoent exists
11217 set endprotoent d_endpent
11220 : see if endprotoent_r exists
11221 set endprotoent_r d_endprotoent_r
11223 case "$d_endprotoent_r" in
11225 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11226 case "$d_endprotoent_r_proto:$usethreads" in
11227 ":define") d_endprotoent_r_proto=define
11228 set d_endprotoent_r_proto endprotoent_r $hdrs
11232 case "$d_endprotoent_r_proto" in
11234 case "$endprotoent_r_proto" in
11235 ''|0) try='int endprotoent_r(struct protoent_data*);'
11236 ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11238 case "$endprotoent_r_proto" in
11239 ''|0) try='void endprotoent_r(struct protoent_data*);'
11240 ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11242 case "$endprotoent_r_proto" in
11243 ''|0) d_endprotoent_r=undef
11244 endprotoent_r_proto=0
11245 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11246 * ) case "$endprotoent_r_proto" in
11247 REENTRANT_PROTO*) ;;
11248 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11250 echo "Prototype: $try" ;;
11253 *) case "$usethreads" in
11254 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11256 d_endprotoent_r=undef
11257 endprotoent_r_proto=0
11261 *) endprotoent_r_proto=0
11265 : see if endpwent exists
11266 set endpwent d_endpwent
11269 : see if this is a pwd.h system
11275 xxx=`./findhdr pwd.h`
11276 $cppstdin $cppflags $cppminus < $xxx >$$.h
11278 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11286 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11294 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11302 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11310 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11318 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11326 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11334 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11346 set d_pwquota; eval $setvar
11347 set d_pwage; eval $setvar
11348 set d_pwchange; eval $setvar
11349 set d_pwclass; eval $setvar
11350 set d_pwexpire; eval $setvar
11351 set d_pwcomment; eval $setvar
11352 set d_pwgecos; eval $setvar
11353 set d_pwpasswd; eval $setvar
11357 : see if endpwent_r exists
11358 set endpwent_r d_endpwent_r
11360 case "$d_endpwent_r" in
11362 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11363 case "$d_endpwent_r_proto:$usethreads" in
11364 ":define") d_endpwent_r_proto=define
11365 set d_endpwent_r_proto endpwent_r $hdrs
11369 case "$d_endpwent_r_proto" in
11371 case "$endpwent_r_proto" in
11372 ''|0) try='int endpwent_r(FILE**);'
11373 ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11375 case "$endpwent_r_proto" in
11376 ''|0) try='void endpwent_r(FILE**);'
11377 ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11379 case "$endpwent_r_proto" in
11380 ''|0) d_endpwent_r=undef
11382 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
11383 * ) case "$endpwent_r_proto" in
11384 REENTRANT_PROTO*) ;;
11385 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
11387 echo "Prototype: $try" ;;
11390 *) case "$usethreads" in
11391 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
11398 *) endpwent_r_proto=0
11402 : see if endservent exists
11403 set endservent d_endsent
11406 : see if endservent_r exists
11407 set endservent_r d_endservent_r
11409 case "$d_endservent_r" in
11411 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11412 case "$d_endservent_r_proto:$usethreads" in
11413 ":define") d_endservent_r_proto=define
11414 set d_endservent_r_proto endservent_r $hdrs
11418 case "$d_endservent_r_proto" in
11420 case "$endservent_r_proto" in
11421 ''|0) try='int endservent_r(struct servent_data*);'
11422 ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
11424 case "$endservent_r_proto" in
11425 ''|0) try='void endservent_r(struct servent_data*);'
11426 ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
11428 case "$endservent_r_proto" in
11429 ''|0) d_endservent_r=undef
11430 endservent_r_proto=0
11431 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
11432 * ) case "$endservent_r_proto" in
11433 REENTRANT_PROTO*) ;;
11434 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
11436 echo "Prototype: $try" ;;
11439 *) case "$usethreads" in
11440 define) echo "endservent_r has no prototype, not using it." >&4 ;;
11442 d_endservent_r=undef
11443 endservent_r_proto=0
11447 *) endservent_r_proto=0
11451 : Locate the flags for 'open()'
11454 #include <sys/types.h>
11459 #include <sys/file.h>
11461 #$i_stdlib I_STDLIB
11463 #include <stdlib.h>
11474 : check sys/file.h first to get FREAD on Sun
11475 if $test `./findhdr sys/file.h` && \
11476 set try -DI_SYS_FILE && eval $compile; then
11478 echo "<sys/file.h> defines the O_* constants..." >&4
11479 if $run ./try; then
11480 echo "and you have the 3 argument form of open()." >&4
11483 echo "but not the 3 argument form of open(). Oh, well." >&4
11486 elif $test `./findhdr fcntl.h` && \
11487 set try -DI_FCNTL && eval $compile; then
11489 echo "<fcntl.h> defines the O_* constants..." >&4
11490 if $run ./try; then
11491 echo "and you have the 3 argument form of open()." >&4
11494 echo "but not the 3 argument form of open(). Oh, well." >&4
11499 echo "I can't find the O_* constant definitions! You got problems." >&4
11505 : see which of string.h or strings.h is needed
11507 strings=`./findhdr string.h`
11508 if $test "$strings" && $test -r "$strings"; then
11509 echo "Using <string.h> instead of <strings.h>." >&4
11513 strings=`./findhdr strings.h`
11514 if $test "$strings" && $test -r "$strings"; then
11515 echo "Using <strings.h> instead of <string.h>." >&4
11517 echo "No string header found -- You'll surely have problems." >&4
11522 case "$i_string" in
11523 "$undef") strings=`./findhdr strings.h`;;
11524 *) strings=`./findhdr string.h`;;
11527 : see if this is a sys/file.h system
11532 : do we need to include sys/file.h ?
11536 if $h_sysfile; then
11538 echo "We'll be including <sys/file.h>." >&4
11541 echo "We won't be including <sys/file.h>." >&4
11551 : see if fcntl.h is there
11556 : see if we can include fcntl.h
11562 echo "We'll be including <fcntl.h>." >&4
11565 if $h_sysfile; then
11566 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
11568 echo "We won't be including <fcntl.h>." >&4
11580 : check for non-blocking I/O stuff
11581 case "$h_sysfile" in
11582 true) echo "#include <sys/file.h>" > head.c;;
11585 true) echo "#include <fcntl.h>" > head.c;;
11586 *) echo "#include <sys/fcntl.h>" > head.c;;
11591 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
11592 case "$o_nonblock" in
11594 $cat head.c > try.c
11595 $cat >>try.c <<EOCP
11597 #$i_stdlib I_STDLIB
11599 #include <stdlib.h>
11607 printf("O_NONBLOCK\n");
11611 printf("O_NDELAY\n");
11615 printf("FNDELAY\n");
11622 if eval $compile_ok; then
11623 o_nonblock=`$run ./try`
11624 case "$o_nonblock" in
11625 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
11626 *) echo "Seems like we can use $o_nonblock.";;
11629 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
11632 *) echo "Using $hint value $o_nonblock.";;
11634 $rm -f try try.* .out core
11637 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
11640 $cat head.c > try.c
11641 $cat >>try.c <<EOCP
11643 #include <sys/types.h>
11644 #include <signal.h>
11646 #$i_stdlib I_STDLIB
11648 #include <stdlib.h>
11654 #define MY_O_NONBLOCK $o_nonblock
11655 #ifndef errno /* XXX need better Configure test */
11658 #$i_unistd I_UNISTD
11660 #include <unistd.h>
11662 #$i_string I_STRING
11664 #include <string.h>
11666 #include <strings.h>
11668 $signal_t blech(x) int x; { exit(3); }
11670 $cat >> try.c <<'EOCP'
11678 pipe(pd); /* Down: child -> parent */
11679 pipe(pu); /* Up: parent -> child */
11682 close(pd[1]); /* Parent reads from pd[0] */
11683 close(pu[0]); /* Parent writes (blocking) to pu[1] */
11685 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
11690 signal(SIGALRM, blech);
11692 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
11694 sprintf(string, "%d\n", ret);
11695 write(2, string, strlen(string));
11698 if (errno == EAGAIN) {
11699 printf("EAGAIN\n");
11704 if (errno == EWOULDBLOCK)
11705 printf("EWOULDBLOCK\n");
11708 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
11709 sleep(2); /* Give it time to close our pipe */
11711 ret = read(pd[0], buf, 1); /* Should read EOF */
11713 sprintf(string, "%d\n", ret);
11714 write(4, string, strlen(string));
11718 close(pd[0]); /* We write to pd[1] */
11719 close(pu[1]); /* We read from pu[0] */
11720 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
11721 close(pd[1]); /* Pipe pd is now fully closed! */
11722 exit(0); /* Bye bye, thank you for playing! */
11726 if eval $compile_ok; then
11727 echo "$startsh" >mtry
11728 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
11730 ./mtry >/dev/null 2>&1
11732 0) eagain=`$cat try.out`;;
11733 1) echo "Could not perform non-blocking setting!";;
11734 2) echo "I did a successful read() for something that was not there!";;
11735 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
11736 4) echo "Could not find F_SETFL!";;
11737 *) echo "Something terribly wrong happened during testing.";;
11739 rd_nodata=`$cat try.ret`
11740 echo "A read() system call with no data present returns $rd_nodata."
11741 case "$rd_nodata" in
11744 echo "(That's peculiar, fixing that to be -1.)"
11750 echo "Forcing errno EAGAIN on read() with no data available."
11754 echo "Your read() sets errno to $eagain when no data is available."
11757 status=`$cat try.err`
11759 0) echo "And it correctly returns 0 to signal EOF.";;
11760 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
11761 *) echo "However, your read() returns '$status' on EOF??";;
11764 if test "$status" = "$rd_nodata"; then
11765 echo "WARNING: you can't distinguish between EOF and no data!"
11769 echo "I can't compile the test program--assuming errno EAGAIN will do."
11776 echo "Using $hint value $eagain."
11777 echo "Your read() returns $rd_nodata when no data is present."
11778 case "$d_eofnblk" in
11779 "$define") echo "And you can see EOF because read() returns 0.";;
11780 "$undef") echo "But you can't see EOF status from read() returned value.";;
11782 echo "(Assuming you can't see EOF status from read anyway.)"
11788 $rm -f try try.* .out core head.c mtry
11790 : see if _ptr and _cnt from stdio act std
11793 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11794 echo "(Looks like you have stdio.h from BSD.)"
11795 case "$stdio_ptr" in
11796 '') stdio_ptr='((fp)->_p)'
11799 *) ptr_lval=$d_stdio_ptr_lval;;
11801 case "$stdio_cnt" in
11802 '') stdio_cnt='((fp)->_r)'
11805 *) cnt_lval=$d_stdio_cnt_lval;;
11807 case "$stdio_base" in
11808 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11810 case "$stdio_bufsiz" in
11811 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11813 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11814 echo "(Looks like you have stdio.h from Linux.)"
11815 case "$stdio_ptr" in
11816 '') stdio_ptr='((fp)->_IO_read_ptr)'
11819 *) ptr_lval=$d_stdio_ptr_lval;;
11821 case "$stdio_cnt" in
11822 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11825 *) cnt_lval=$d_stdio_cnt_lval;;
11827 case "$stdio_base" in
11828 '') stdio_base='((fp)->_IO_read_base)';;
11830 case "$stdio_bufsiz" in
11831 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11834 case "$stdio_ptr" in
11835 '') stdio_ptr='((fp)->_ptr)'
11838 *) ptr_lval=$d_stdio_ptr_lval;;
11840 case "$stdio_cnt" in
11841 '') stdio_cnt='((fp)->_cnt)'
11844 *) cnt_lval=$d_stdio_cnt_lval;;
11846 case "$stdio_base" in
11847 '') stdio_base='((fp)->_base)';;
11849 case "$stdio_bufsiz" in
11850 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11854 : test whether _ptr and _cnt really work
11855 echo "Checking how std your stdio is..." >&4
11858 #$i_stdlib I_STDLIB
11860 #include <stdlib.h>
11862 #define FILE_ptr(fp) $stdio_ptr
11863 #define FILE_cnt(fp) $stdio_cnt
11865 FILE *fp = fopen("try.c", "r");
11868 18 <= FILE_cnt(fp) &&
11869 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11877 if eval $compile && $to try.c; then
11878 if $run ./try; then
11879 echo "Your stdio acts pretty std."
11882 echo "Your stdio isn't very std."
11885 echo "Your stdio doesn't appear very std."
11889 # glibc 2.2.90 and above apparently change stdio streams so Perl's
11890 # direct buffer manipulation no longer works. The Configure tests
11891 # should be changed to correctly detect this, but until then,
11892 # the following check should at least let perl compile and run.
11893 # (This quick fix should be updated before 5.8.1.)
11894 # To be defensive, reject all unknown versions, and all versions > 2.2.9.
11895 # A. Dougherty, June 3, 2002.
11896 case "$d_gnulibc" in
11898 case "$gnulibc_version" in
11902 *) echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
11911 : Can _ptr be used as an lvalue?
11912 case "$d_stdstdio$ptr_lval" in
11913 $define$define) val=$define ;;
11916 set d_stdio_ptr_lval
11919 : Can _cnt be used as an lvalue?
11920 case "$d_stdstdio$cnt_lval" in
11921 $define$define) val=$define ;;
11924 set d_stdio_cnt_lval
11928 : test whether setting _ptr sets _cnt as a side effect
11929 d_stdio_ptr_lval_sets_cnt="$undef"
11930 d_stdio_ptr_lval_nochange_cnt="$undef"
11931 case "$d_stdio_ptr_lval$d_stdstdio" in
11933 echo "Checking to see what happens if we set the stdio ptr..." >&4
11936 /* Can we scream? */
11937 /* Eat dust sed :-) */
11938 /* In the buffer space, no one can hear you scream. */
11939 #$i_stdlib I_STDLIB
11941 #include <stdlib.h>
11943 #define FILE_ptr(fp) $stdio_ptr
11944 #define FILE_cnt(fp) $stdio_cnt
11945 #include <sys/types.h>
11947 FILE *fp = fopen("try.c", "r");
11952 puts("Fail even to read");
11955 c = getc(fp); /* Read away the first # */
11957 puts("Fail even to read");
11961 18 <= FILE_cnt(fp) &&
11962 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11964 puts("Fail even to read");
11967 ptr = (char*) FILE_ptr(fp);
11968 cnt = (size_t)FILE_cnt(fp);
11970 FILE_ptr(fp) += 42;
11972 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11973 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11976 if (FILE_cnt(fp) <= 20) {
11977 printf ("Fail (<20 chars to test)");
11980 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11981 puts("Fail compare");
11984 if (cnt == FILE_cnt(fp)) {
11985 puts("Pass_unchanged");
11988 if (FILE_cnt(fp) == (cnt - 42)) {
11989 puts("Pass_changed");
11992 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11998 if eval $compile && $to try.c; then
11999 case `$run ./try` in
12001 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
12002 d_stdio_ptr_lval_sets_cnt="$define" ;;
12004 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12005 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12007 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12009 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12012 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12018 : see if _base is also standard
12020 case "$d_stdstdio" in
12024 #$i_stdlib I_STDLIB
12026 #include <stdlib.h>
12028 #define FILE_base(fp) $stdio_base
12029 #define FILE_bufsiz(fp) $stdio_bufsiz
12031 FILE *fp = fopen("try.c", "r");
12034 19 <= FILE_bufsiz(fp) &&
12035 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12042 if eval $compile && $to try.c; then
12043 if $run ./try; then
12044 echo "And its _base field acts std."
12047 echo "But its _base field isn't std."
12050 echo "However, it seems to be lacking the _base field."
12058 : see if fast_stdio exists
12060 case "$d_stdstdio:$d_stdio_ptr_lval" in
12062 case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12064 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12075 : see if fchdir exists
12076 set fchdir d_fchdir
12079 : see if fchmod exists
12080 set fchmod d_fchmod
12083 : see if fchown exists
12084 set fchown d_fchown
12087 : see if this is an fcntl system
12092 : See if fcntl-based locking works.
12094 #$i_stdlib I_STDLIB
12096 #include <stdlib.h>
12098 #include <unistd.h>
12100 #include <signal.h>
12101 $signal_t blech(x) int x; { exit(3); }
12103 #if defined(F_SETLK) && defined(F_SETLKW)
12104 struct flock flock;
12106 fd = open("try.c", O_RDONLY);
12107 flock.l_type = F_RDLCK;
12108 flock.l_whence = SEEK_SET;
12109 flock.l_start = flock.l_len = 0;
12110 signal(SIGALRM, blech);
12112 retval = fcntl(fd, F_SETLK, &flock);
12114 (retval < 0 ? exit(2) : exit(0));
12120 echo "Checking if fcntl-based file locking works... "
12124 if eval $compile_ok; then
12125 if $run ./try; then
12126 echo "Yes, it seems to work."
12129 echo "Nope, it didn't work."
12134 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12135 *** This is (almost) impossible.
12136 *** If your NFS lock daemons are not feeling well, something like
12137 *** this may happen, please investigate. Cannot continue, aborting.
12145 echo "I'm unable to compile the test program, so I'll assume not."
12150 echo "Nope, since you don't even have fcntl()."
12153 set d_fcntl_can_lock
12158 : check for fd_set items
12161 Checking to see how well your C compiler handles fd_set and friends ...
12164 #$i_stdlib I_STDLIB
12166 #include <stdlib.h>
12168 #$i_systime I_SYS_TIME
12169 #$i_sysselct I_SYS_SELECT
12170 #$d_socket HAS_SOCKET
12171 #include <sys/types.h>
12173 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12176 #include <sys/time.h>
12178 #ifdef I_SYS_SELECT
12179 #include <sys/select.h>
12188 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12196 if eval $compile; then
12197 d_fds_bits="$define"
12199 echo "Well, your system knows about the normal fd_set typedef..." >&4
12200 if $run ./try; then
12201 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12202 d_fd_macros="$define"
12205 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
12207 d_fd_macros="$undef"
12211 Hmm, your compiler has some difficulty with fd_set. Checking further...
12214 if eval $compile; then
12215 d_fds_bits="$undef"
12217 echo "Well, your system has some sort of fd_set available..." >&4
12218 if $run ./try; then
12219 echo "and you have the normal fd_set macros." >&4
12220 d_fd_macros="$define"
12223 but not the normal fd_set macros! Gross! More work for me...
12225 d_fd_macros="$undef"
12228 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
12230 d_fds_bits="$undef"
12231 d_fd_macros="$undef"
12236 : see if fgetpos exists
12237 set fgetpos d_fgetpos
12240 : see if finite exists
12241 set finite d_finite
12244 : see if finitel exists
12245 set finitel d_finitel
12248 : see if flock exists
12252 : see if prototype for flock is available
12254 set d_flockproto flock $i_sysfile sys/file.h
12257 : see if fork exists
12261 : see if fp_class exists
12262 set fp_class d_fp_class
12265 : see if pathconf exists
12266 set pathconf d_pathconf
12269 : see if fpathconf exists
12270 set fpathconf d_fpathconf
12273 : see if fpclass exists
12274 set fpclass d_fpclass
12277 : see if fpclassify exists
12278 set fpclassify d_fpclassify
12281 : see if fpclassl exists
12282 set fpclassl d_fpclassl
12286 : check for fpos64_t
12288 echo "Checking to see if you have fpos64_t..." >&4
12291 int main() { fpos64_t x = 7; }
12294 if eval $compile; then
12296 echo "You have fpos64_t."
12299 echo "You do not have fpos64_t."
12300 case "$fpossize" in
12301 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12308 : see if frexpl exists
12309 set frexpl d_frexpl
12312 : see if this is a sys/param system
12313 set sys/param.h i_sysparam
12316 : see if this is a sys/mount.h system
12317 set sys/mount.h i_sysmount
12322 echo "Checking to see if your system supports struct fs_data..." >&4
12323 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12325 case "$d_fs_data_s" in
12326 "$define") echo "Yes, it does." ;;
12327 *) echo "No, it doesn't." ;;
12330 : see if fseeko exists
12331 set fseeko d_fseeko
12333 case "$longsize" in
12334 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12337 : see if fsetpos exists
12338 set fsetpos d_fsetpos
12342 : see if fstatfs exists
12343 set fstatfs d_fstatfs
12347 : see if statvfs exists
12348 set statvfs d_statvfs
12351 : see if fstatvfs exists
12352 set fstatvfs d_fstatvfs
12356 : see if fsync exists
12360 : see if ftello exists
12361 set ftello d_ftello
12363 case "$longsize" in
12364 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12367 : see if getcwd exists
12368 set getcwd d_getcwd
12371 : see if getespwnam exists
12372 set getespwnam d_getespwnam
12376 : see if getfsstat exists
12377 set getfsstat d_getfsstat
12380 : see if getgrent exists
12381 set getgrent d_getgrent
12384 : see if getgrent_r exists
12385 set getgrent_r d_getgrent_r
12387 case "$d_getgrent_r" in
12389 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12390 case "$d_getgrent_r_proto:$usethreads" in
12391 ":define") d_getgrent_r_proto=define
12392 set d_getgrent_r_proto getgrent_r $hdrs
12396 case "$d_getgrent_r_proto" in
12398 case "$getgrent_r_proto" in
12399 ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
12400 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
12402 case "$getgrent_r_proto" in
12403 ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
12404 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
12406 case "$getgrent_r_proto" in
12407 ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
12408 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
12410 case "$getgrent_r_proto" in
12411 ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
12412 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
12414 case "$getgrent_r_proto" in
12415 ''|0) try='int getgrent_r(struct group*, char*, int);'
12416 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
12418 case "$getgrent_r_proto" in
12419 ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
12420 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
12422 case "$getgrent_r_proto" in
12423 ''|0) d_getgrent_r=undef
12425 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
12426 * ) case "$getgrent_r_proto" in
12427 REENTRANT_PROTO*) ;;
12428 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
12430 echo "Prototype: $try" ;;
12433 *) case "$usethreads" in
12434 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
12441 *) getgrent_r_proto=0
12445 : see if getgrgid_r exists
12446 set getgrgid_r d_getgrgid_r
12448 case "$d_getgrgid_r" in
12450 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12451 case "$d_getgrgid_r_proto:$usethreads" in
12452 ":define") d_getgrgid_r_proto=define
12453 set d_getgrgid_r_proto getgrgid_r $hdrs
12457 case "$d_getgrgid_r_proto" in
12459 case "$getgrgid_r_proto" in
12460 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
12461 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
12463 case "$getgrgid_r_proto" in
12464 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
12465 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
12467 case "$getgrgid_r_proto" in
12468 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
12469 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
12471 case "$getgrgid_r_proto" in
12472 ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
12473 ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
12475 case "$getgrgid_r_proto" in
12476 ''|0) d_getgrgid_r=undef
12478 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
12479 * ) case "$getgrgid_r_proto" in
12480 REENTRANT_PROTO*) ;;
12481 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
12483 echo "Prototype: $try" ;;
12486 *) case "$usethreads" in
12487 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
12494 *) getgrgid_r_proto=0
12498 : see if getgrnam_r exists
12499 set getgrnam_r d_getgrnam_r
12501 case "$d_getgrnam_r" in
12503 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
12504 case "$d_getgrnam_r_proto:$usethreads" in
12505 ":define") d_getgrnam_r_proto=define
12506 set d_getgrnam_r_proto getgrnam_r $hdrs
12510 case "$d_getgrnam_r_proto" in
12512 case "$getgrnam_r_proto" in
12513 ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
12514 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
12516 case "$getgrnam_r_proto" in
12517 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
12518 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
12520 case "$getgrnam_r_proto" in
12521 ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
12522 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
12524 case "$getgrnam_r_proto" in
12525 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
12526 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
12528 case "$getgrnam_r_proto" in
12529 ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
12530 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
12532 case "$getgrnam_r_proto" in
12533 ''|0) d_getgrnam_r=undef
12535 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
12536 * ) case "$getgrnam_r_proto" in
12537 REENTRANT_PROTO*) ;;
12538 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
12540 echo "Prototype: $try" ;;
12543 *) case "$usethreads" in
12544 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
12551 *) getgrnam_r_proto=0
12555 : see if gethostbyaddr exists
12556 set gethostbyaddr d_gethbyaddr
12559 : see if gethostbyname exists
12560 set gethostbyname d_gethbyname
12563 : see if gethostent exists
12564 set gethostent d_gethent
12567 : see how we will look up host name
12570 if set gethostname val -f d_gethname; eval $csym; $val; then
12571 echo 'gethostname() found.' >&4
12572 d_gethname="$define"
12575 if set uname val -f d_uname; eval $csym; $val; then
12578 uname() was found, but you're running xenix, and older versions of xenix
12579 have a broken uname(). If you don't really know whether your xenix is old
12580 enough to have a broken system call, use the default answer.
12585 "$define") dflt=n;;
12587 rp='Is your uname() broken?'
12590 n*) d_uname="$define"; call=uname;;
12593 echo 'uname() found.' >&4
12600 case "$d_gethname" in
12601 '') d_gethname="$undef";;
12604 '') d_uname="$undef";;
12606 case "$d_uname$d_gethname" in
12611 Every now and then someone has a $call() that lies about the hostname
12612 but can't be fixed for political or economic reasons. If you wish, I can
12613 pretend $call() isn't there and maybe compute hostname at run-time
12614 thanks to the '$phostname' command.
12617 rp="Shall I ignore $call() from now on?"
12620 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
12623 case "$phostname" in
12624 '') aphostname='';;
12625 *) case "$aphostname" in
12627 *) set X $phostname
12631 file=`./loc $file $file $pth`
12632 aphostname=`echo $file $*`
12637 case "$d_uname$d_gethname" in
12640 case "$phostname" in
12642 echo "There will be no way for $package to get your hostname." >&4;;
12644 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
12648 case "$d_phostname" in
12649 '') d_phostname="$undef";;
12652 : see if gethostbyaddr_r exists
12653 set gethostbyaddr_r d_gethostbyaddr_r
12655 case "$d_gethostbyaddr_r" in
12657 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12658 case "$d_gethostbyaddr_r_proto:$usethreads" in
12659 ":define") d_gethostbyaddr_r_proto=define
12660 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
12664 case "$d_gethostbyaddr_r_proto" in
12666 case "$gethostbyaddr_r_proto" in
12667 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12668 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
12670 case "$gethostbyaddr_r_proto" in
12671 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
12672 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
12674 case "$gethostbyaddr_r_proto" in
12675 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
12676 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
12678 case "$gethostbyaddr_r_proto" in
12679 ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
12680 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
12682 case "$gethostbyaddr_r_proto" in
12683 ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
12684 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
12686 case "$gethostbyaddr_r_proto" in
12687 ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
12688 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
12690 case "$gethostbyaddr_r_proto" in
12691 ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
12692 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
12694 case "$gethostbyaddr_r_proto" in
12695 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
12696 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
12698 case "$gethostbyaddr_r_proto" in
12699 ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
12700 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
12702 case "$gethostbyaddr_r_proto" in
12703 ''|0) try='int gethostbyaddr_r(const char*, int, int);'
12704 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
12706 case "$gethostbyaddr_r_proto" in
12707 ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
12708 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
12710 case "$gethostbyaddr_r_proto" in
12711 ''|0) d_gethostbyaddr_r=undef
12712 gethostbyaddr_r_proto=0
12713 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
12714 * ) case "$gethostbyaddr_r_proto" in
12715 REENTRANT_PROTO*) ;;
12716 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
12718 echo "Prototype: $try" ;;
12721 *) case "$usethreads" in
12722 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
12724 d_gethostbyaddr_r=undef
12725 gethostbyaddr_r_proto=0
12729 *) gethostbyaddr_r_proto=0
12733 : see if gethostbyname_r exists
12734 set gethostbyname_r d_gethostbyname_r
12736 case "$d_gethostbyname_r" in
12738 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12739 case "$d_gethostbyname_r_proto:$usethreads" in
12740 ":define") d_gethostbyname_r_proto=define
12741 set d_gethostbyname_r_proto gethostbyname_r $hdrs
12745 case "$d_gethostbyname_r_proto" in
12747 case "$gethostbyname_r_proto" in
12748 ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
12749 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
12751 case "$gethostbyname_r_proto" in
12752 ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
12753 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
12755 case "$gethostbyname_r_proto" in
12756 ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
12757 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
12759 case "$gethostbyname_r_proto" in
12760 ''|0) d_gethostbyname_r=undef
12761 gethostbyname_r_proto=0
12762 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
12763 * ) case "$gethostbyname_r_proto" in
12764 REENTRANT_PROTO*) ;;
12765 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
12767 echo "Prototype: $try" ;;
12770 *) case "$usethreads" in
12771 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
12773 d_gethostbyname_r=undef
12774 gethostbyname_r_proto=0
12778 *) gethostbyname_r_proto=0
12782 : see if gethostent_r exists
12783 set gethostent_r d_gethostent_r
12785 case "$d_gethostent_r" in
12787 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12788 case "$d_gethostent_r_proto:$usethreads" in
12789 ":define") d_gethostent_r_proto=define
12790 set d_gethostent_r_proto gethostent_r $hdrs
12794 case "$d_gethostent_r_proto" in
12796 case "$gethostent_r_proto" in
12797 ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
12798 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
12800 case "$gethostent_r_proto" in
12801 ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
12802 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
12804 case "$gethostent_r_proto" in
12805 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
12806 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
12808 case "$gethostent_r_proto" in
12809 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
12810 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
12812 case "$gethostent_r_proto" in
12813 ''|0) try='int gethostent_r(struct hostent*, char*, int);'
12814 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
12816 case "$gethostent_r_proto" in
12817 ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
12818 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
12820 case "$gethostent_r_proto" in
12821 ''|0) d_gethostent_r=undef
12822 gethostent_r_proto=0
12823 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
12824 * ) case "$gethostent_r_proto" in
12825 REENTRANT_PROTO*) ;;
12826 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
12828 echo "Prototype: $try" ;;
12831 *) case "$usethreads" in
12832 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
12834 d_gethostent_r=undef
12835 gethostent_r_proto=0
12839 *) gethostent_r_proto=0
12843 : see if prototypes for various gethostxxx netdb.h functions are available
12845 set d_gethostprotos gethostent $i_netdb netdb.h
12848 : see if getitimer exists
12849 set getitimer d_getitimer
12852 : see if getlogin exists
12853 set getlogin d_getlogin
12856 : see if getlogin_r exists
12857 set getlogin_r d_getlogin_r
12859 case "$d_getlogin_r" in
12861 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
12862 case "$d_getlogin_r_proto:$usethreads" in
12863 ":define") d_getlogin_r_proto=define
12864 set d_getlogin_r_proto getlogin_r $hdrs
12868 case "$d_getlogin_r_proto" in
12870 case "$getlogin_r_proto" in
12871 ''|0) try='int getlogin_r(char*, size_t);'
12872 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
12874 case "$getlogin_r_proto" in
12875 ''|0) try='int getlogin_r(char*, int);'
12876 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
12878 case "$getlogin_r_proto" in
12879 ''|0) try='char* getlogin_r(char*, size_t);'
12880 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
12882 case "$getlogin_r_proto" in
12883 ''|0) try='char* getlogin_r(char*, int);'
12884 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
12886 case "$getlogin_r_proto" in
12887 ''|0) d_getlogin_r=undef
12889 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
12890 * ) case "$getlogin_r_proto" in
12891 REENTRANT_PROTO*) ;;
12892 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
12894 echo "Prototype: $try" ;;
12897 *) case "$usethreads" in
12898 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
12905 *) getlogin_r_proto=0
12909 : see if getmnt exists
12910 set getmnt d_getmnt
12913 : see if getmntent exists
12914 set getmntent d_getmntent
12917 : see if getnetbyaddr exists
12918 set getnetbyaddr d_getnbyaddr
12921 : see if getnetbyname exists
12922 set getnetbyname d_getnbyname
12925 : see if getnetent exists
12926 set getnetent d_getnent
12929 : see if getnetbyaddr_r exists
12930 set getnetbyaddr_r d_getnetbyaddr_r
12932 case "$d_getnetbyaddr_r" in
12934 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12935 case "$d_getnetbyaddr_r_proto:$usethreads" in
12936 ":define") d_getnetbyaddr_r_proto=define
12937 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
12941 case "$d_getnetbyaddr_r_proto" in
12943 case "$getnetbyaddr_r_proto" in
12944 ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
12945 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
12947 case "$getnetbyaddr_r_proto" in
12948 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
12949 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
12951 case "$getnetbyaddr_r_proto" in
12952 ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
12953 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
12955 case "$getnetbyaddr_r_proto" in
12956 ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
12957 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
12959 case "$getnetbyaddr_r_proto" in
12960 ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
12961 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
12963 case "$getnetbyaddr_r_proto" in
12964 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
12965 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
12967 case "$getnetbyaddr_r_proto" in
12968 ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
12969 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
12971 case "$getnetbyaddr_r_proto" in
12972 ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
12973 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
12975 case "$getnetbyaddr_r_proto" in
12976 ''|0) d_getnetbyaddr_r=undef
12977 getnetbyaddr_r_proto=0
12978 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
12979 * ) case "$getnetbyaddr_r_proto" in
12980 REENTRANT_PROTO*) ;;
12981 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
12983 echo "Prototype: $try" ;;
12986 *) case "$usethreads" in
12987 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
12989 d_getnetbyaddr_r=undef
12990 getnetbyaddr_r_proto=0
12994 *) getnetbyaddr_r_proto=0
12998 : see if getnetbyname_r exists
12999 set getnetbyname_r d_getnetbyname_r
13001 case "$d_getnetbyname_r" in
13003 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13004 case "$d_getnetbyname_r_proto:$usethreads" in
13005 ":define") d_getnetbyname_r_proto=define
13006 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13010 case "$d_getnetbyname_r_proto" in
13012 case "$getnetbyname_r_proto" in
13013 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13014 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13016 case "$getnetbyname_r_proto" in
13017 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13018 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13020 case "$getnetbyname_r_proto" in
13021 ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13022 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13024 case "$getnetbyname_r_proto" in
13025 ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13026 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13028 case "$getnetbyname_r_proto" in
13029 ''|0) d_getnetbyname_r=undef
13030 getnetbyname_r_proto=0
13031 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13032 * ) case "$getnetbyname_r_proto" in
13033 REENTRANT_PROTO*) ;;
13034 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13036 echo "Prototype: $try" ;;
13039 *) case "$usethreads" in
13040 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13042 d_getnetbyname_r=undef
13043 getnetbyname_r_proto=0
13047 *) getnetbyname_r_proto=0
13051 : see if getnetent_r exists
13052 set getnetent_r d_getnetent_r
13054 case "$d_getnetent_r" in
13056 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13057 case "$d_getnetent_r_proto:$usethreads" in
13058 ":define") d_getnetent_r_proto=define
13059 set d_getnetent_r_proto getnetent_r $hdrs
13063 case "$d_getnetent_r_proto" in
13065 case "$getnetent_r_proto" in
13066 ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13067 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13069 case "$getnetent_r_proto" in
13070 ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13071 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13073 case "$getnetent_r_proto" in
13074 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13075 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13077 case "$getnetent_r_proto" in
13078 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13079 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13081 case "$getnetent_r_proto" in
13082 ''|0) try='int getnetent_r(struct netent*, char*, int);'
13083 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13085 case "$getnetent_r_proto" in
13086 ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13087 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13089 case "$getnetent_r_proto" in
13090 ''|0) d_getnetent_r=undef
13091 getnetent_r_proto=0
13092 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13093 * ) case "$getnetent_r_proto" in
13094 REENTRANT_PROTO*) ;;
13095 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13097 echo "Prototype: $try" ;;
13100 *) case "$usethreads" in
13101 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13103 d_getnetent_r=undef
13104 getnetent_r_proto=0
13108 *) getnetent_r_proto=0
13112 : see if prototypes for various getnetxxx netdb.h functions are available
13114 set d_getnetprotos getnetent $i_netdb netdb.h
13117 : see if getpagesize exists
13118 set getpagesize d_getpagsz
13122 : see if getprotobyname exists
13123 set getprotobyname d_getpbyname
13126 : see if getprotobynumber exists
13127 set getprotobynumber d_getpbynumber
13130 : see if getprotoent exists
13131 set getprotoent d_getpent
13134 : see if getpgid exists
13135 set getpgid d_getpgid
13138 : see if getpgrp2 exists
13139 set getpgrp2 d_getpgrp2
13142 : see if getppid exists
13143 set getppid d_getppid
13146 : see if getpriority exists
13147 set getpriority d_getprior
13150 : see if getprotobyname_r exists
13151 set getprotobyname_r d_getprotobyname_r
13153 case "$d_getprotobyname_r" in
13155 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13156 case "$d_getprotobyname_r_proto:$usethreads" in
13157 ":define") d_getprotobyname_r_proto=define
13158 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13162 case "$d_getprotobyname_r_proto" in
13164 case "$getprotobyname_r_proto" in
13165 ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13166 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13168 case "$getprotobyname_r_proto" in
13169 ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13170 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13172 case "$getprotobyname_r_proto" in
13173 ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13174 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13176 case "$getprotobyname_r_proto" in
13177 ''|0) d_getprotobyname_r=undef
13178 getprotobyname_r_proto=0
13179 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13180 * ) case "$getprotobyname_r_proto" in
13181 REENTRANT_PROTO*) ;;
13182 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13184 echo "Prototype: $try" ;;
13187 *) case "$usethreads" in
13188 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13190 d_getprotobyname_r=undef
13191 getprotobyname_r_proto=0
13195 *) getprotobyname_r_proto=0
13199 : see if getprotobynumber_r exists
13200 set getprotobynumber_r d_getprotobynumber_r
13202 case "$d_getprotobynumber_r" in
13204 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13205 case "$d_getprotobynumber_r_proto:$usethreads" in
13206 ":define") d_getprotobynumber_r_proto=define
13207 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13211 case "$d_getprotobynumber_r_proto" in
13213 case "$getprotobynumber_r_proto" in
13214 ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13215 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13217 case "$getprotobynumber_r_proto" in
13218 ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13219 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13221 case "$getprotobynumber_r_proto" in
13222 ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13223 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13225 case "$getprotobynumber_r_proto" in
13226 ''|0) d_getprotobynumber_r=undef
13227 getprotobynumber_r_proto=0
13228 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13229 * ) case "$getprotobynumber_r_proto" in
13230 REENTRANT_PROTO*) ;;
13231 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13233 echo "Prototype: $try" ;;
13236 *) case "$usethreads" in
13237 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13239 d_getprotobynumber_r=undef
13240 getprotobynumber_r_proto=0
13244 *) getprotobynumber_r_proto=0
13248 : see if getprotoent_r exists
13249 set getprotoent_r d_getprotoent_r
13251 case "$d_getprotoent_r" in
13253 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13254 case "$d_getprotoent_r_proto:$usethreads" in
13255 ":define") d_getprotoent_r_proto=define
13256 set d_getprotoent_r_proto getprotoent_r $hdrs
13260 case "$d_getprotoent_r_proto" in
13262 case "$getprotoent_r_proto" in
13263 ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13264 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13266 case "$getprotoent_r_proto" in
13267 ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13268 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13270 case "$getprotoent_r_proto" in
13271 ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13272 ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13274 case "$getprotoent_r_proto" in
13275 ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13276 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13278 case "$getprotoent_r_proto" in
13279 ''|0) d_getprotoent_r=undef
13280 getprotoent_r_proto=0
13281 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13282 * ) case "$getprotoent_r_proto" in
13283 REENTRANT_PROTO*) ;;
13284 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13286 echo "Prototype: $try" ;;
13289 *) case "$usethreads" in
13290 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13292 d_getprotoent_r=undef
13293 getprotoent_r_proto=0
13297 *) getprotoent_r_proto=0
13301 : see if prototypes for various getprotoxxx netdb.h functions are available
13303 set d_getprotoprotos getprotoent $i_netdb netdb.h
13306 : see if getprpwnam exists
13307 set getprpwnam d_getprpwnam
13310 : see if getpwent exists
13311 set getpwent d_getpwent
13314 : see if getpwent_r exists
13315 set getpwent_r d_getpwent_r
13317 case "$d_getpwent_r" in
13319 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13320 case "$d_getpwent_r_proto:$usethreads" in
13321 ":define") d_getpwent_r_proto=define
13322 set d_getpwent_r_proto getpwent_r $hdrs
13326 case "$d_getpwent_r_proto" in
13328 case "$getpwent_r_proto" in
13329 ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13330 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13332 case "$getpwent_r_proto" in
13333 ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13334 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
13336 case "$getpwent_r_proto" in
13337 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
13338 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
13340 case "$getpwent_r_proto" in
13341 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
13342 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
13344 case "$getpwent_r_proto" in
13345 ''|0) try='int getpwent_r(struct passwd*, char*, int);'
13346 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
13348 case "$getpwent_r_proto" in
13349 ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
13350 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
13352 case "$getpwent_r_proto" in
13353 ''|0) d_getpwent_r=undef
13355 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
13356 * ) case "$getpwent_r_proto" in
13357 REENTRANT_PROTO*) ;;
13358 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
13360 echo "Prototype: $try" ;;
13363 *) case "$usethreads" in
13364 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
13371 *) getpwent_r_proto=0
13375 : see if getpwnam_r exists
13376 set getpwnam_r d_getpwnam_r
13378 case "$d_getpwnam_r" in
13380 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13381 case "$d_getpwnam_r_proto:$usethreads" in
13382 ":define") d_getpwnam_r_proto=define
13383 set d_getpwnam_r_proto getpwnam_r $hdrs
13387 case "$d_getpwnam_r_proto" in
13389 case "$getpwnam_r_proto" in
13390 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
13391 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
13393 case "$getpwnam_r_proto" in
13394 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
13395 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
13397 case "$getpwnam_r_proto" in
13398 ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
13399 ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
13401 case "$getpwnam_r_proto" in
13402 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
13403 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
13405 case "$getpwnam_r_proto" in
13406 ''|0) d_getpwnam_r=undef
13408 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
13409 * ) case "$getpwnam_r_proto" in
13410 REENTRANT_PROTO*) ;;
13411 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
13413 echo "Prototype: $try" ;;
13416 *) case "$usethreads" in
13417 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
13424 *) getpwnam_r_proto=0
13428 : see if getpwuid_r exists
13429 set getpwuid_r d_getpwuid_r
13431 case "$d_getpwuid_r" in
13433 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13434 case "$d_getpwuid_r_proto:$usethreads" in
13435 ":define") d_getpwuid_r_proto=define
13436 set d_getpwuid_r_proto getpwuid_r $hdrs
13440 case "$d_getpwuid_r_proto" in
13442 case "$getpwuid_r_proto" in
13443 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
13444 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
13446 case "$getpwuid_r_proto" in
13447 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
13448 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
13450 case "$getpwuid_r_proto" in
13451 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
13452 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
13454 case "$getpwuid_r_proto" in
13455 ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
13456 ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
13458 case "$getpwuid_r_proto" in
13459 ''|0) d_getpwuid_r=undef
13461 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
13462 * ) case "$getpwuid_r_proto" in
13463 REENTRANT_PROTO*) ;;
13464 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
13466 echo "Prototype: $try" ;;
13469 *) case "$usethreads" in
13470 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
13477 *) getpwuid_r_proto=0
13482 : see if getservbyname exists
13483 set getservbyname d_getsbyname
13486 : see if getservbyport exists
13487 set getservbyport d_getsbyport
13490 : see if getservent exists
13491 set getservent d_getsent
13494 : see if getservbyname_r exists
13495 set getservbyname_r d_getservbyname_r
13497 case "$d_getservbyname_r" in
13499 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13500 case "$d_getservbyname_r_proto:$usethreads" in
13501 ":define") d_getservbyname_r_proto=define
13502 set d_getservbyname_r_proto getservbyname_r $hdrs
13506 case "$d_getservbyname_r_proto" in
13508 case "$getservbyname_r_proto" in
13509 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
13510 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
13512 case "$getservbyname_r_proto" in
13513 ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
13514 ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
13516 case "$getservbyname_r_proto" in
13517 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
13518 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
13520 case "$getservbyname_r_proto" in
13521 ''|0) d_getservbyname_r=undef
13522 getservbyname_r_proto=0
13523 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
13524 * ) case "$getservbyname_r_proto" in
13525 REENTRANT_PROTO*) ;;
13526 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
13528 echo "Prototype: $try" ;;
13531 *) case "$usethreads" in
13532 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
13534 d_getservbyname_r=undef
13535 getservbyname_r_proto=0
13539 *) getservbyname_r_proto=0
13543 : see if getservbyport_r exists
13544 set getservbyport_r d_getservbyport_r
13546 case "$d_getservbyport_r" in
13548 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13549 case "$d_getservbyport_r_proto:$usethreads" in
13550 ":define") d_getservbyport_r_proto=define
13551 set d_getservbyport_r_proto getservbyport_r $hdrs
13555 case "$d_getservbyport_r_proto" in
13557 case "$getservbyport_r_proto" in
13558 ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
13559 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
13561 case "$getservbyport_r_proto" in
13562 ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
13563 ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
13565 case "$getservbyport_r_proto" in
13566 ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
13567 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
13569 case "$getservbyport_r_proto" in
13570 ''|0) d_getservbyport_r=undef
13571 getservbyport_r_proto=0
13572 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
13573 * ) case "$getservbyport_r_proto" in
13574 REENTRANT_PROTO*) ;;
13575 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
13577 echo "Prototype: $try" ;;
13580 *) case "$usethreads" in
13581 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
13583 d_getservbyport_r=undef
13584 getservbyport_r_proto=0
13588 *) getservbyport_r_proto=0
13592 : see if getservent_r exists
13593 set getservent_r d_getservent_r
13595 case "$d_getservent_r" in
13597 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13598 case "$d_getservent_r_proto:$usethreads" in
13599 ":define") d_getservent_r_proto=define
13600 set d_getservent_r_proto getservent_r $hdrs
13604 case "$d_getservent_r_proto" in
13606 case "$getservent_r_proto" in
13607 ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
13608 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
13610 case "$getservent_r_proto" in
13611 ''|0) try='int getservent_r(struct servent*, char*, int);'
13612 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
13614 case "$getservent_r_proto" in
13615 ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
13616 ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
13618 case "$getservent_r_proto" in
13619 ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
13620 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
13622 case "$getservent_r_proto" in
13623 ''|0) d_getservent_r=undef
13624 getservent_r_proto=0
13625 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
13626 * ) case "$getservent_r_proto" in
13627 REENTRANT_PROTO*) ;;
13628 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
13630 echo "Prototype: $try" ;;
13633 *) case "$usethreads" in
13634 define) echo "getservent_r has no prototype, not using it." >&4 ;;
13636 d_getservent_r=undef
13637 getservent_r_proto=0
13641 *) getservent_r_proto=0
13645 : see if prototypes for various getservxxx netdb.h functions are available
13647 set d_getservprotos getservent $i_netdb netdb.h
13650 : see if getspnam exists
13651 set getspnam d_getspnam
13654 : see if this is a shadow.h system
13655 set shadow.h i_shadow
13658 : see if getspnam_r exists
13659 set getspnam_r d_getspnam_r
13661 case "$d_getspnam_r" in
13663 hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
13664 case "$d_getspnam_r_proto:$usethreads" in
13665 ":define") d_getspnam_r_proto=define
13666 set d_getspnam_r_proto getspnam_r $hdrs
13670 case "$d_getspnam_r_proto" in
13672 case "$getspnam_r_proto" in
13673 ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
13674 ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
13676 case "$getspnam_r_proto" in
13677 ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
13678 ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
13680 case "$getspnam_r_proto" in
13681 ''|0) d_getspnam_r=undef
13683 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
13684 * ) case "$getspnam_r_proto" in
13685 REENTRANT_PROTO*) ;;
13686 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
13688 echo "Prototype: $try" ;;
13691 *) case "$usethreads" in
13692 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
13699 *) getspnam_r_proto=0
13703 : see if gettimeofday or ftime exists
13704 set gettimeofday d_gettimeod
13706 case "$d_gettimeod" in
13712 val="$undef"; set d_ftime; eval $setvar
13715 case "$d_gettimeod$d_ftime" in
13718 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
13722 : see if gmtime_r exists
13723 set gmtime_r d_gmtime_r
13725 case "$d_gmtime_r" in
13727 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
13728 case "$d_gmtime_r_proto:$usethreads" in
13729 ":define") d_gmtime_r_proto=define
13730 set d_gmtime_r_proto gmtime_r $hdrs
13734 case "$d_gmtime_r_proto" in
13736 case "$gmtime_r_proto" in
13737 ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
13738 ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
13740 case "$gmtime_r_proto" in
13741 ''|0) try='int gmtime_r(const time_t*, struct tm*);'
13742 ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
13744 case "$gmtime_r_proto" in
13745 ''|0) d_gmtime_r=undef
13747 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
13748 * ) case "$gmtime_r_proto" in
13749 REENTRANT_PROTO*) ;;
13750 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
13752 echo "Prototype: $try" ;;
13755 *) case "$usethreads" in
13756 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
13763 *) gmtime_r_proto=0
13767 : see if hasmntopt exists
13768 set hasmntopt d_hasmntopt
13771 : see if this is a netinet/in.h or sys/in.h system
13772 set netinet/in.h i_niin sys/in.h i_sysin
13775 : see if arpa/inet.h has to be included
13776 set arpa/inet.h i_arpainet
13779 : see if htonl --and friends-- exists
13784 : Maybe they are macros.
13787 $cat >htonl.c <<EOM
13789 #include <sys/types.h>
13790 #$i_niin I_NETINET_IN
13792 #$i_arpainet I_ARPA_INET
13793 #ifdef I_NETINET_IN
13794 #include <netinet/in.h>
13797 #include <sys/in.h>
13800 #include <arpa/inet.h>
13803 printf("Defined as a macro.");
13806 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
13807 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
13809 echo "But it seems to be defined as a macro." >&4
13817 : see if ilogbl exists
13818 set ilogbl d_ilogbl
13823 if set index val -f; eval $csym; $val; then
13824 if set strchr val -f d_strchr; eval $csym; $val; then
13825 if $contains strchr "$strings" >/dev/null 2>&1 ; then
13828 echo "strchr() found." >&4
13832 echo "index() found." >&4
13837 echo "index() found." >&4
13840 if set strchr val -f d_strchr; eval $csym; $val; then
13843 echo "strchr() found." >&4
13845 echo "No index() or strchr() found!" >&4
13850 set d_strchr; eval $setvar
13852 set d_index; eval $setvar
13854 : check whether inet_aton exists
13855 set inet_aton d_inetaton
13860 $cat >isascii.c <<EOCP
13863 #$i_stdlib I_STDLIB
13865 #include <stdlib.h>
13876 if eval $compile; then
13877 echo "isascii() found." >&4
13880 echo "isascii() NOT found." >&4
13887 : see if isfinite exists
13888 set isfinite d_isfinite
13891 : see if isinf exists
13895 : see if isnan exists
13899 : see if isnanl exists
13900 set isnanl d_isnanl
13903 : see if killpg exists
13904 set killpg d_killpg
13907 : see if lchown exists
13909 $cat > try.c <<'EOCP'
13910 /* System header to define __stub macros and hopefully few prototypes,
13911 which can conflict with char lchown(); below. */
13912 #include <assert.h>
13913 /* Override any gcc2 internal prototype to avoid an error. */
13914 /* We use char because int might match the return type of a gcc2
13915 builtin and then its argument prototype would still apply. */
13918 /* The GNU C library defines this for functions which it implements
13919 to always fail with ENOSYS. Some functions are actually named
13920 something starting with __ and the normal name is an alias. */
13921 #if defined (__stub_lchown) || defined (__stub___lchown)
13929 if eval $compile; then
13930 $echo "lchown() found." >&4
13933 $echo "lchown() NOT found." >&4
13939 : See if number of significant digits in a double precision number is known
13941 $cat >ldbl_dig.c <<EOM
13942 #$i_limits I_LIMITS
13945 #include <limits.h>
13951 printf("Contains LDBL_DIG");
13954 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
13955 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
13956 echo "LDBL_DIG found." >&4
13959 echo "LDBL_DIG NOT found." >&4
13966 : see if this is a math.h system
13970 d_libm_lib_version="$undef"
13973 : check to see if math.h defines _LIB_VERSION
13975 echo "Checking to see if your libm supports _LIB_VERSION..." >&4
13977 #include <unistd.h>
13979 int main (int argc, char *argv[])
13981 printf ("%d\n", _LIB_VERSION);
13986 if eval $compile; then
13988 echo "Yes, it does ($foo)" >&4
13989 d_libm_lib_version="$define"
13991 echo "No, it does not (probably harmless)\n" >&4
13993 $rm -f try.* try core core.try.*
13998 : see if link exists
14002 : see if localtime_r exists
14003 set localtime_r d_localtime_r
14005 case "$d_localtime_r" in
14007 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14008 case "$d_localtime_r_proto:$usethreads" in
14009 ":define") d_localtime_r_proto=define
14010 set d_localtime_r_proto localtime_r $hdrs
14014 case "$d_localtime_r_proto" in
14016 case "$localtime_r_proto" in
14017 ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14018 ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14020 case "$localtime_r_proto" in
14021 ''|0) try='int localtime_r(const time_t*, struct tm*);'
14022 ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14024 case "$localtime_r_proto" in
14025 ''|0) d_localtime_r=undef
14026 localtime_r_proto=0
14027 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14028 * ) case "$localtime_r_proto" in
14029 REENTRANT_PROTO*) ;;
14030 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14032 echo "Prototype: $try" ;;
14035 *) case "$usethreads" in
14036 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14038 d_localtime_r=undef
14039 localtime_r_proto=0
14043 *) localtime_r_proto=0
14047 : see if localeconv exists
14048 set localeconv d_locconv
14051 : see if lockf exists
14055 : see if prototype for lseek is available
14057 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14060 : see if lstat exists
14064 : see if madvise exists
14065 set madvise d_madvise
14068 : see if mblen exists
14072 : see if mbstowcs exists
14073 set mbstowcs d_mbstowcs
14076 : see if mbtowc exists
14077 set mbtowc d_mbtowc
14080 : see if memchr exists
14081 set memchr d_memchr
14084 : see if memcmp exists
14085 set memcmp d_memcmp
14088 : see if memcpy exists
14089 set memcpy d_memcpy
14092 : see if memmove exists
14093 set memmove d_memmove
14096 : see if memset exists
14097 set memset d_memset
14100 : see if mkdir exists
14104 : see if mkdtemp exists
14105 set mkdtemp d_mkdtemp
14108 : see if mkfifo exists
14109 set mkfifo d_mkfifo
14112 : see if mkstemp exists
14113 set mkstemp d_mkstemp
14116 : see if mkstemps exists
14117 set mkstemps d_mkstemps
14120 : see if mktime exists
14121 set mktime d_mktime
14124 : see if this is a sys/mman.h system
14125 set sys/mman.h i_sysmman
14128 : see if mmap exists
14131 : see what shmat returns
14132 : default to something harmless
14134 case "$i_sysmman$d_mmap" in
14136 $cat >mmap.c <<'END'
14137 #include <sys/mman.h>
14140 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14145 echo "and it returns ($mmaptype)." >&4
14151 : see if sqrtl exists
14155 : see if scalbnl exists
14156 set scalbnl d_scalbnl
14159 : see if modfl exists
14163 : see if prototype for modfl is available
14165 set d_modflproto modfl $i_math math.h
14168 d_modfl_pow32_bug="$undef"
14170 case "$d_longdbl$d_modfl" in
14173 Checking to see whether your modfl() is okay for large values...
14179 if $test "X$d_modflproto" != "X$define"; then
14180 $cat >>try.c <<EOCP
14181 /* Sigh. many current glibcs provide the function, but do not prototype it. */
14182 long double modfl (long double, long double *);
14185 $cat >>try.c <<EOCP
14187 long double nv = 4294967303.15;
14193 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14197 case "$osname:$gccversion" in
14198 aix:) saveccflags="$ccflags"
14199 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14202 if eval $compile; then
14205 *" 4294967303.150000 1.150000 4294967302.000000")
14206 echo >&4 "Your modfl() is broken for large values."
14207 d_modfl_pow32_bug="$define"
14209 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14213 *" 4294967303.150000 0.150000 4294967303.000000")
14214 echo >&4 "Your modfl() seems okay for large values."
14216 *) echo >&4 "I don't understand your modfl() at all."
14220 $rm -f try.* try core core.try.*
14222 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14225 case "$osname:$gccversion" in
14226 aix:) ccflags="$saveccflags" ;; # restore
14231 if $test "$uselongdouble" = "$define"; then
14233 if $test "$d_sqrtl" != "$define"; then
14234 message="$message sqrtl"
14236 if $test "$d_modfl" != "$define"; then
14237 if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14238 echo "You have both aintl and copysignl, so I can emulate modfl."
14240 message="$message modfl"
14243 if $test "$d_frexpl" != "$define"; then
14244 if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14245 echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14247 message="$message frexpl"
14251 if $test "$message" != ""; then
14254 *** You requested the use of long doubles but you do not seem to have
14255 *** the following mathematical functions needed for long double support:
14257 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14258 *** Cannot continue, aborting.
14266 : see if mprotect exists
14267 set mprotect d_mprotect
14270 : see if msgctl exists
14271 set msgctl d_msgctl
14274 : see if msgget exists
14275 set msgget d_msgget
14278 : see if msgsnd exists
14279 set msgsnd d_msgsnd
14282 : see if msgrcv exists
14283 set msgrcv d_msgrcv
14286 : see how much of the 'msg*(2)' library is present.
14289 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
14290 *"$undef"*) h_msg=false;;
14294 case "`ipcs 2>&1`" in
14295 "SVID messages"*"not configured"*)
14296 echo "Your $osname does not have the msg*(2) configured." >&4
14299 set msgctl d_msgctl
14301 set msgget d_msgget
14303 set msgsnd d_msgsnd
14305 set msgrcv d_msgrcv
14311 : we could also check for sys/ipc.h ...
14312 if $h_msg && $test `./findhdr sys/msg.h`; then
14313 echo "You have the full msg*(2) library." >&4
14316 echo "You don't have the full msg*(2) library." >&4
14324 echo "Checking to see if your system supports struct msghdr..." >&4
14325 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
14327 case "$d_msghdr_s" in
14328 "$define") echo "Yes, it does." ;;
14329 *) echo "No, it doesn't." ;;
14333 : see if msync exists
14337 : see if munmap exists
14338 set munmap d_munmap
14341 : see if nice exists
14345 : see if this is a langinfo.h system
14346 set langinfo.h i_langinfo
14349 : see if nl_langinfo exists
14350 set nl_langinfo d_nl_langinfo
14353 : check for length of character
14355 case "$charsize" in
14357 echo "Checking to see how big your characters are (hey, you never know)..." >&4
14360 #$i_stdlib I_STDLIB
14362 #include <stdlib.h>
14366 printf("%d\n", (int)sizeof(char));
14371 if eval $compile_ok; then
14375 echo "(I can't seem to compile the test program. Guessing...)"
14382 rp="What is the size of a character (in bytes)?"
14387 : check for volatile keyword
14389 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
14390 $cat >try.c <<'EOCP'
14393 typedef struct _goo_struct goo_struct;
14394 goo_struct * volatile goo = ((goo_struct *)0);
14395 struct _goo_struct {
14400 typedef unsigned short foo_t;
14401 char *volatile foo;
14403 volatile foo_t blech;
14407 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
14409 echo "Yup, it does."
14412 echo "Nope, it doesn't."
14420 $echo "Choosing the C types to be used for Perl's internal types..." >&4
14422 case "$use64bitint:$d_quad:$quadtype" in
14425 uvtype="$uquadtype"
14430 uvtype="unsigned long"
14436 case "$uselongdouble:$d_longdbl" in
14438 nvtype="long double"
14439 nvsize=$longdblsize
14446 $echo "(IV will be "$ivtype", $ivsize bytes)"
14447 $echo "(UV will be "$uvtype", $uvsize bytes)"
14448 $echo "(NV will be "$nvtype", $nvsize bytes)"
14451 #$i_inttypes I_INTTYPES
14453 #include <inttypes.h>
14458 int8_t i = INT8_MAX;
14459 uint8_t u = UINT8_MAX;
14460 printf("int8_t\n");
14463 int16_t i = INT16_MAX;
14464 uint16_t i = UINT16_MAX;
14465 printf("int16_t\n");
14468 int32_t i = INT32_MAX;
14469 uint32_t u = UINT32_MAX;
14470 printf("int32_t\n");
14476 '') case "$charsize" in
14478 u8type="unsigned char"
14487 if eval $compile; then
14488 case "`$run ./try`" in
14489 int8_t) i8type=int8_t
14499 '') if $test $charsize -ge 1; then
14501 u8type="unsigned char"
14509 '') case "$shortsize" in
14511 u16type="unsigned short"
14519 '') set try -DINT16
14520 if eval $compile; then
14521 case "`$run ./try`" in
14533 '') if $test $shortsize -ge 2; then
14535 u16type="unsigned short"
14543 '') case "$longsize" in
14545 u32type="unsigned long"
14549 *) case "$intsize" in
14551 u32type="unsigned int"
14561 '') set try -DINT32
14562 if eval $compile; then
14563 case "`$run ./try`" in
14575 '') if $test $intsize -ge 4; then
14577 u32type="unsigned int"
14585 '') case "$d_quad:$quadtype" in
14587 i64type="$quadtype"
14588 u64type="$uquadtype"
14596 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
14597 : volatile so that the compiler has to store it out to memory.
14598 if test X"$d_volatile" = X"$define"; then
14603 #$i_stdlib I_STDLIB
14605 #include <stdlib.h>
14607 #include <sys/types.h>
14608 #include <signal.h>
14610 $volatile int bletched = 0;
14611 $signal_t blech(s) int s; { bletched = 1; }
14616 int n = 8 * $uvsize;
14619 signal(SIGFPE, blech);
14622 for (i = 0; i < n; i++) {
14623 u = u << 1 | ($uvtype)1;
14625 if (($uvtype)d != u)
14629 d = ($nvtype)(u - 1);
14630 if (($uvtype)d != (u - 1))
14638 printf("%d\n", ((i == n) ? -n : i));
14644 d_nv_preserves_uv="$undef"
14645 if eval $compile; then
14646 nv_preserves_uv_bits="`$run ./try`"
14648 case "$nv_preserves_uv_bits" in
14650 nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
14651 $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs." 2>&1
14652 d_nv_preserves_uv="$define"
14654 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs." 2>&1
14655 d_nv_preserves_uv="$undef" ;;
14656 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
14657 nv_preserves_uv_bits="$undef" ;;
14663 : check for off64_t
14665 echo "Checking to see if you have off64_t..." >&4
14667 #include <sys/types.h>
14668 #include <unistd.h>
14669 int main() { off64_t x = 7; }
14672 if eval $compile; then
14674 echo "You have off64_t."
14677 echo "You do not have off64_t."
14678 case "$lseeksize" in
14679 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
14686 : how to create joinable pthreads
14687 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
14689 echo "Checking what constant to use for creating joinable pthreads..." >&4
14690 $cat >try.c <<'EOCP'
14691 #include <pthread.h>
14693 int detachstate = JOINABLE;
14696 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
14697 if eval $compile; then
14698 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
14699 val="$undef" # Yes, undef.
14700 set d_old_pthread_create_joinable
14703 set old_pthread_create_joinable
14706 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
14707 if eval $compile; then
14708 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
14710 set d_old_pthread_create_joinable
14712 val=PTHREAD_CREATE_UNDETACHED
14713 set old_pthread_create_joinable
14716 set try -DJOINABLE=__UNDETACHED
14717 if eval $compile; then
14718 echo "You seem to use __UNDETACHED." >&4
14720 set d_old_pthread_create_joinable
14723 set old_pthread_create_joinable
14726 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
14728 set d_old_pthread_create_joinable
14731 set old_pthread_create_joinable
14738 d_old_pthread_create_joinable="$undef"
14739 old_pthread_create_joinable=""
14742 : see if pause exists
14746 : see if pipe exists
14750 : see if poll exists
14754 : see if readlink exists
14755 set readlink d_readlink
14761 case "$d_readlink" in
14763 if $issymlink /proc/self/exe ; then
14764 $ls -l /proc/self/exe > reflect
14765 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14766 echo "You have Linux-like /proc/self/exe."
14767 procselfexe='"/proc/self/exe"'
14771 if $issymlink /proc/curproc/file ; then
14772 $ls -l /proc/curproc/file > reflect
14773 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
14774 echo "You have BSD-like /proc/curproc/file."
14775 procselfexe='"/proc/curproc/file"'
14785 : see whether the pthread_atfork exists
14787 #include <pthread.h>
14790 #ifdef PTHREAD_ATFORK
14791 pthread_atfork(NULL,NULL,NULL);
14796 : see if pthread_atfork exists
14797 set try -DPTHREAD_ATFORK
14798 if eval $compile; then
14803 case "$usethreads" in
14806 $define) echo 'pthread_atfork found.' >&4 ;;
14807 *) echo 'pthread_atfork NOT found.' >&4 ;;
14810 set d_pthread_atfork
14813 : see if pthread_attr_setscope exists
14814 set pthread_attr_setscope d_pthread_attr_setscope
14818 : see whether the various POSIXish _yields exist
14820 #include <pthread.h>
14826 #ifdef PTHREAD_YIELD
14829 #ifdef PTHREAD_YIELD_NULL
14830 pthread_yield(NULL);
14836 : see if sched_yield exists
14837 set try -DSCHED_YIELD
14838 if eval $compile; then
14840 sched_yield='sched_yield()'
14844 case "$usethreads" in
14847 $define) echo 'sched_yield() found.' >&4 ;;
14848 *) echo 'sched_yield() NOT found.' >&4 ;;
14854 : see if pthread_yield exists
14855 set try -DPTHREAD_YIELD
14856 if eval $compile; then
14858 case "$sched_yield" in
14859 '') sched_yield='pthread_yield()' ;;
14862 set try -DPTHREAD_YIELD_NULL
14863 if eval $compile; then
14865 case "$sched_yield" in
14866 '') sched_yield='pthread_yield(NULL)' ;;
14872 case "$usethreads" in
14875 $define) echo 'pthread_yield() found.' >&4 ;;
14876 *) echo 'pthread_yield() NOT found.' >&4 ;;
14880 set d_pthread_yield
14883 case "$sched_yield" in
14884 '') sched_yield=undef ;;
14889 : see if random_r exists
14890 set random_r d_random_r
14892 case "$d_random_r" in
14894 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
14895 case "$d_random_r_proto:$usethreads" in
14896 ":define") d_random_r_proto=define
14897 set d_random_r_proto random_r $hdrs
14901 case "$d_random_r_proto" in
14903 case "$random_r_proto" in
14904 ''|0) try='int random_r(int*, struct random_data*);'
14905 ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
14907 case "$random_r_proto" in
14908 ''|0) try='int random_r(long*, struct random_data*);'
14909 ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
14911 case "$random_r_proto" in
14912 ''|0) try='int random_r(struct random_data*, int32_t*);'
14913 ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
14915 case "$random_r_proto" in
14916 ''|0) d_random_r=undef
14918 echo "Disabling random_r, cannot determine prototype." >&4 ;;
14919 * ) case "$random_r_proto" in
14920 REENTRANT_PROTO*) ;;
14921 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
14923 echo "Prototype: $try" ;;
14926 *) case "$usethreads" in
14927 define) echo "random_r has no prototype, not using it." >&4 ;;
14934 *) random_r_proto=0
14938 : see if readdir and friends exist
14939 set readdir d_readdir
14941 set seekdir d_seekdir
14943 set telldir d_telldir
14945 set rewinddir d_rewinddir
14948 : see if readdir64_r exists
14949 set readdir64_r d_readdir64_r
14951 case "$d_readdir64_r" in
14953 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14954 case "$d_readdir64_r_proto:$usethreads" in
14955 ":define") d_readdir64_r_proto=define
14956 set d_readdir64_r_proto readdir64_r $hdrs
14960 case "$d_readdir64_r_proto" in
14962 case "$readdir64_r_proto" in
14963 ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
14964 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
14966 case "$readdir64_r_proto" in
14967 ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
14968 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
14970 case "$readdir64_r_proto" in
14971 ''|0) d_readdir64_r=undef
14972 readdir64_r_proto=0
14973 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
14974 * ) case "$readdir64_r_proto" in
14975 REENTRANT_PROTO*) ;;
14976 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
14978 echo "Prototype: $try" ;;
14981 *) case "$usethreads" in
14982 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
14984 d_readdir64_r=undef
14985 readdir64_r_proto=0
14989 *) readdir64_r_proto=0
14993 : see if readdir_r exists
14994 set readdir_r d_readdir_r
14996 case "$d_readdir_r" in
14998 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
14999 case "$d_readdir_r_proto:$usethreads" in
15000 ":define") d_readdir_r_proto=define
15001 set d_readdir_r_proto readdir_r $hdrs
15005 case "$d_readdir_r_proto" in
15007 case "$readdir_r_proto" in
15008 ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
15009 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
15011 case "$readdir_r_proto" in
15012 ''|0) try='int readdir_r(DIR*, struct dirent*);'
15013 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
15015 case "$readdir_r_proto" in
15016 ''|0) d_readdir_r=undef
15018 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
15019 * ) case "$readdir_r_proto" in
15020 REENTRANT_PROTO*) ;;
15021 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
15023 echo "Prototype: $try" ;;
15026 *) case "$usethreads" in
15027 define) echo "readdir_r has no prototype, not using it." >&4 ;;
15034 *) readdir_r_proto=0
15038 : see if readv exists
15042 : see if recvmsg exists
15043 set recvmsg d_recvmsg
15046 : see if rename exists
15047 set rename d_rename
15050 : see if rmdir exists
15054 : see if memory.h is available.
15059 : See if it conflicts with string.h
15065 $cppstdin $cppflags $cppminus < $strings > mem.h
15066 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15068 echo "We won't be including <memory.h>."
15078 : can bcopy handle overlapping blocks?
15081 case "$d_memmove" in
15082 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15083 *) case "$d_bcopy" in
15085 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15087 #$i_memory I_MEMORY
15088 #$i_stdlib I_STDLIB
15089 #$i_string I_STRING
15090 #$i_unistd I_UNISTD
15092 $cat >>try.c <<'EOCP'
15095 # include <memory.h>
15098 # include <stdlib.h>
15101 # include <string.h>
15103 # include <strings.h>
15106 # include <unistd.h> /* Needed for NetBSD */
15110 char buf[128], abc[128];
15116 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15117 try to store the string in read-only memory. */
15118 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
15120 for (align = 7; align >= 0; align--) {
15121 for (len = 36; len; len--) {
15123 bcopy(abc, b, len);
15124 for (off = 1; off <= len; off++) {
15125 bcopy(b, b+off, len);
15126 bcopy(b+off, b, len);
15127 if (bcmp(b, abc, len))
15136 if eval $compile_ok; then
15137 if ./try 2>/dev/null; then
15138 echo "Yes, it can."
15141 echo "It can't, sorry."
15144 echo "(I can't compile the test program, so we'll assume not...)"
15148 $rm -f try.* try core
15154 : can memcpy handle overlapping blocks?
15157 case "$d_memmove" in
15158 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
15159 *) case "$d_memcpy" in
15161 echo "Checking to see if memcpy() can do overlapping copies..." >&4
15163 #$i_memory I_MEMORY
15164 #$i_stdlib I_STDLIB
15165 #$i_string I_STRING
15166 #$i_unistd I_UNISTD
15168 $cat >>try.c <<'EOCP'
15171 # include <memory.h>
15174 # include <stdlib.h>
15177 # include <string.h>
15179 # include <strings.h>
15182 # include <unistd.h> /* Needed for NetBSD */
15186 char buf[128], abc[128];
15192 /* Copy "abcde..." string to char abc[] so that gcc doesn't
15193 try to store the string in read-only memory. */
15194 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
15196 for (align = 7; align >= 0; align--) {
15197 for (len = 36; len; len--) {
15199 memcpy(b, abc, len);
15200 for (off = 1; off <= len; off++) {
15201 memcpy(b+off, b, len);
15202 memcpy(b, b+off, len);
15203 if (memcmp(b, abc, len))
15212 if eval $compile_ok; then
15213 if ./try 2>/dev/null; then
15214 echo "Yes, it can."
15217 echo "It can't, sorry."
15220 echo "(I can't compile the test program, so we'll assume not...)"
15224 $rm -f try.* try core
15230 : can memcmp be trusted to compare relative magnitude?
15232 case "$d_memcmp" in
15235 echo "Checking if your memcmp() can compare relative magnitude..." >&4
15237 #$i_memory I_MEMORY
15238 #$i_stdlib I_STDLIB
15239 #$i_string I_STRING
15240 #$i_unistd I_UNISTD
15242 $cat >>try.c <<'EOCP'
15245 # include <memory.h>
15248 # include <stdlib.h>
15251 # include <string.h>
15253 # include <strings.h>
15256 # include <unistd.h> /* Needed for NetBSD */
15262 if ((a < b) && memcmp(&a, &b, 1) < 0)
15268 if eval $compile_ok; then
15269 if $run ./try 2>/dev/null; then
15270 echo "Yes, it can."
15273 echo "No, it can't (it uses signed chars)."
15276 echo "(I can't compile the test program, so we'll assume not...)"
15280 $rm -f try.* try core
15284 : see if prototype for sbrk is available
15286 set d_sbrkproto sbrk $i_unistd unistd.h
15289 : see if select exists
15290 set select d_select
15293 : see if semctl exists
15294 set semctl d_semctl
15297 : see if semget exists
15298 set semget d_semget
15301 : see if semop exists
15305 : see how much of the 'sem*(2)' library is present.
15308 case "$d_semctl$d_semget$d_semop" in
15309 *"$undef"*) h_sem=false;;
15313 case "`ipcs 2>&1`" in
15314 "SVID messages"*"not configured"*)
15315 echo "Your $osname does not have the sem*(2) configured." >&4
15318 set semctl d_semctl
15320 set semget d_semget
15328 : we could also check for sys/ipc.h ...
15329 if $h_sem && $test `./findhdr sys/sem.h`; then
15330 echo "You have the full sem*(2) library." >&4
15333 echo "You don't have the full sem*(2) library." >&4
15339 : see whether sys/sem.h defines union semun
15341 $cat > try.c <<'END'
15342 #include <sys/types.h>
15343 #include <sys/ipc.h>
15344 #include <sys/sem.h>
15345 int main () { union semun semun; semun.buf = 0; }
15348 if eval $compile; then
15349 echo "You have union semun in <sys/sem.h>." >&4
15352 echo "You do not have union semun in <sys/sem.h>." >&4
15359 : see how to do semctl IPC_STAT
15366 # define S_IRUSR S_IREAD
15367 # define S_IWUSR S_IWRITE
15368 # define S_IXUSR S_IEXEC
15370 # define S_IRUSR 0400
15371 # define S_IWUSR 0200
15372 # define S_IXUSR 0100
15374 # define S_IRGRP (S_IRUSR>>3)
15375 # define S_IWGRP (S_IWUSR>>3)
15376 # define S_IXGRP (S_IXUSR>>3)
15377 # define S_IROTH (S_IRUSR>>6)
15378 # define S_IWOTH (S_IWUSR>>6)
15379 # define S_IXOTH (S_IXUSR>>6)
15382 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
15383 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
15384 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
15387 : see whether semctl IPC_STAT can use union semun
15389 case "$d_semctl_semun" in
15392 #include <sys/types.h>
15393 #include <sys/ipc.h>
15394 #include <sys/sem.h>
15395 #include <sys/stat.h>
15402 #$d_union_semun HAS_UNION_SEMUN
15405 #ifndef HAS_UNION_SEMUN
15408 struct semid_ds *buf;
15409 unsigned short *array;
15415 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15416 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15418 struct semid_ds argbuf;
15421 st = semctl(sem, 0, IPC_STAT, arg);
15425 # endif /* IPC_STAT */
15426 printf("semctl IPC_STAT failed: errno = %d\n", errno);
15428 if (semctl(sem, 0, IPC_RMID, arg) != 0)
15429 # endif /* IPC_RMID */
15430 printf("semctl IPC_RMID failed: errno = %d\n", errno);
15432 #endif /* IPC_PRIVATE && ... */
15433 printf("semget failed: errno = %d\n", errno);
15438 if eval $compile; then
15441 semun) val="$define" ;;
15449 case "$d_semctl_semun" in
15451 echo "You can use union semun for semctl IPC_STAT." >&4
15454 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
15459 : see whether semctl IPC_STAT can use struct semid_ds pointer
15461 case "$d_semctl_semid_ds" in
15463 $cat > try.c <<'END'
15464 #include <sys/types.h>
15465 #include <sys/ipc.h>
15466 #include <sys/sem.h>
15467 #include <sys/stat.h>
15475 struct semid_ds arg;
15478 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
15479 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
15482 st = semctl(sem, 0, IPC_STAT, &arg);
15484 printf("semid_ds\n");
15486 # endif /* IPC_STAT */
15487 printf("semctl IPC_STAT failed: errno = %d\n", errno);
15489 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
15490 # endif /* IPC_RMID */
15491 printf("semctl IPC_RMID failed: errno = %d\n", errno);
15493 #endif /* IPC_PRIVATE && ... */
15494 printf("semget failed: errno = %d\n", errno);
15500 if eval $compile; then
15503 semid_ds) val="$define" ;;
15509 set d_semctl_semid_ds
15511 case "$d_semctl_semid_ds" in
15513 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
15515 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
15522 # We do not have the full sem*(2) library, so assume we can not
15528 set d_semctl_semid_ds
15533 : see if sendmsg exists
15534 set sendmsg d_sendmsg
15537 : see if setegid exists
15538 set setegid d_setegid
15541 : see if seteuid exists
15542 set seteuid d_seteuid
15545 : see if setgrent exists
15546 set setgrent d_setgrent
15549 : see if setgrent_r exists
15550 set setgrent_r d_setgrent_r
15552 case "$d_setgrent_r" in
15554 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
15555 case "$d_setgrent_r_proto:$usethreads" in
15556 ":define") d_setgrent_r_proto=define
15557 set d_setgrent_r_proto setgrent_r $hdrs
15561 case "$d_setgrent_r_proto" in
15563 case "$setgrent_r_proto" in
15564 ''|0) try='int setgrent_r(FILE**);'
15565 ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
15567 case "$setgrent_r_proto" in
15568 ''|0) try='void setgrent_r(FILE**);'
15569 ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
15571 case "$setgrent_r_proto" in
15572 ''|0) d_setgrent_r=undef
15574 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
15575 * ) case "$setgrent_r_proto" in
15576 REENTRANT_PROTO*) ;;
15577 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
15579 echo "Prototype: $try" ;;
15582 *) case "$usethreads" in
15583 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
15590 *) setgrent_r_proto=0
15594 : see if sethostent exists
15595 set sethostent d_sethent
15598 : see if sethostent_r exists
15599 set sethostent_r d_sethostent_r
15601 case "$d_sethostent_r" in
15603 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15604 case "$d_sethostent_r_proto:$usethreads" in
15605 ":define") d_sethostent_r_proto=define
15606 set d_sethostent_r_proto sethostent_r $hdrs
15610 case "$d_sethostent_r_proto" in
15612 case "$sethostent_r_proto" in
15613 ''|0) try='int sethostent_r(int, struct hostent_data*);'
15614 ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
15616 case "$sethostent_r_proto" in
15617 ''|0) try='void sethostent_r(int, struct hostent_data*);'
15618 ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
15620 case "$sethostent_r_proto" in
15621 ''|0) d_sethostent_r=undef
15622 sethostent_r_proto=0
15623 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
15624 * ) case "$sethostent_r_proto" in
15625 REENTRANT_PROTO*) ;;
15626 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
15628 echo "Prototype: $try" ;;
15631 *) case "$usethreads" in
15632 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
15634 d_sethostent_r=undef
15635 sethostent_r_proto=0
15639 *) sethostent_r_proto=0
15643 : see if setitimer exists
15644 set setitimer d_setitimer
15647 : see if setlinebuf exists
15648 set setlinebuf d_setlinebuf
15651 : see if setlocale exists
15652 set setlocale d_setlocale
15655 : see if locale.h is available
15656 set locale.h i_locale
15659 : see if setlocale_r exists
15660 set setlocale_r d_setlocale_r
15662 case "$d_setlocale_r" in
15664 hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
15665 case "$d_setlocale_r_proto:$usethreads" in
15666 ":define") d_setlocale_r_proto=define
15667 set d_setlocale_r_proto setlocale_r $hdrs
15671 case "$d_setlocale_r_proto" in
15673 case "$setlocale_r_proto" in
15674 ''|0) try='int setlocale_r(int, const char*, char*, int);'
15675 ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
15677 case "$setlocale_r_proto" in
15678 ''|0) d_setlocale_r=undef
15679 setlocale_r_proto=0
15680 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
15681 * ) case "$setlocale_r_proto" in
15682 REENTRANT_PROTO*) ;;
15683 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
15685 echo "Prototype: $try" ;;
15688 *) case "$usethreads" in
15689 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
15691 d_setlocale_r=undef
15692 setlocale_r_proto=0
15696 *) setlocale_r_proto=0
15700 : see if setnetent exists
15701 set setnetent d_setnent
15704 : see if setnetent_r exists
15705 set setnetent_r d_setnetent_r
15707 case "$d_setnetent_r" in
15709 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15710 case "$d_setnetent_r_proto:$usethreads" in
15711 ":define") d_setnetent_r_proto=define
15712 set d_setnetent_r_proto setnetent_r $hdrs
15716 case "$d_setnetent_r_proto" in
15718 case "$setnetent_r_proto" in
15719 ''|0) try='int setnetent_r(int, struct netent_data*);'
15720 ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
15722 case "$setnetent_r_proto" in
15723 ''|0) try='void setnetent_r(int, struct netent_data*);'
15724 ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
15726 case "$setnetent_r_proto" in
15727 ''|0) d_setnetent_r=undef
15728 setnetent_r_proto=0
15729 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
15730 * ) case "$setnetent_r_proto" in
15731 REENTRANT_PROTO*) ;;
15732 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
15734 echo "Prototype: $try" ;;
15737 *) case "$usethreads" in
15738 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
15740 d_setnetent_r=undef
15741 setnetent_r_proto=0
15745 *) setnetent_r_proto=0
15749 : see if setprotoent exists
15750 set setprotoent d_setpent
15753 : see if setpgid exists
15754 set setpgid d_setpgid
15757 : see if setpgrp2 exists
15758 set setpgrp2 d_setpgrp2
15761 : see if setpriority exists
15762 set setpriority d_setprior
15765 : see if setproctitle exists
15766 set setproctitle d_setproctitle
15769 : see if setprotoent_r exists
15770 set setprotoent_r d_setprotoent_r
15772 case "$d_setprotoent_r" in
15774 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15775 case "$d_setprotoent_r_proto:$usethreads" in
15776 ":define") d_setprotoent_r_proto=define
15777 set d_setprotoent_r_proto setprotoent_r $hdrs
15781 case "$d_setprotoent_r_proto" in
15783 case "$setprotoent_r_proto" in
15784 ''|0) try='int setprotoent_r(int, struct protoent_data*);'
15785 ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
15787 case "$setprotoent_r_proto" in
15788 ''|0) try='void setprotoent_r(int, struct protoent_data*);'
15789 ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
15791 case "$setprotoent_r_proto" in
15792 ''|0) d_setprotoent_r=undef
15793 setprotoent_r_proto=0
15794 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
15795 * ) case "$setprotoent_r_proto" in
15796 REENTRANT_PROTO*) ;;
15797 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
15799 echo "Prototype: $try" ;;
15802 *) case "$usethreads" in
15803 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
15805 d_setprotoent_r=undef
15806 setprotoent_r_proto=0
15810 *) setprotoent_r_proto=0
15814 : see if setpwent exists
15815 set setpwent d_setpwent
15818 : see if setpwent_r exists
15819 set setpwent_r d_setpwent_r
15821 case "$d_setpwent_r" in
15823 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
15824 case "$d_setpwent_r_proto:$usethreads" in
15825 ":define") d_setpwent_r_proto=define
15826 set d_setpwent_r_proto setpwent_r $hdrs
15830 case "$d_setpwent_r_proto" in
15832 case "$setpwent_r_proto" in
15833 ''|0) try='int setpwent_r(FILE**);'
15834 ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
15836 case "$setpwent_r_proto" in
15837 ''|0) try='void setpwent_r(FILE**);'
15838 ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
15840 case "$setpwent_r_proto" in
15841 ''|0) d_setpwent_r=undef
15843 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
15844 * ) case "$setpwent_r_proto" in
15845 REENTRANT_PROTO*) ;;
15846 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
15848 echo "Prototype: $try" ;;
15851 *) case "$usethreads" in
15852 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
15859 *) setpwent_r_proto=0
15863 : see if setregid exists
15864 set setregid d_setregid
15866 set setresgid d_setresgid
15869 : see if setreuid exists
15870 set setreuid d_setreuid
15872 set setresuid d_setresuid
15875 : see if setrgid exists
15876 set setrgid d_setrgid
15879 : see if setruid exists
15880 set setruid d_setruid
15883 : see if setservent exists
15884 set setservent d_setsent
15887 : see if setservent_r exists
15888 set setservent_r d_setservent_r
15890 case "$d_setservent_r" in
15892 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
15893 case "$d_setservent_r_proto:$usethreads" in
15894 ":define") d_setservent_r_proto=define
15895 set d_setservent_r_proto setservent_r $hdrs
15899 case "$d_setservent_r_proto" in
15901 case "$setservent_r_proto" in
15902 ''|0) try='int setservent_r(int, struct servent_data*);'
15903 ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
15905 case "$setservent_r_proto" in
15906 ''|0) try='void setservent_r(int, struct servent_data*);'
15907 ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
15909 case "$setservent_r_proto" in
15910 ''|0) d_setservent_r=undef
15911 setservent_r_proto=0
15912 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
15913 * ) case "$setservent_r_proto" in
15914 REENTRANT_PROTO*) ;;
15915 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
15917 echo "Prototype: $try" ;;
15920 *) case "$usethreads" in
15921 define) echo "setservent_r has no prototype, not using it." >&4 ;;
15923 d_setservent_r=undef
15924 setservent_r_proto=0
15928 *) setservent_r_proto=0
15932 : see if setsid exists
15933 set setsid d_setsid
15936 : see if setvbuf exists
15937 set setvbuf d_setvbuf
15940 : see if sfio.h is available
15945 : see if sfio library is available
15956 : Ok, but do we want to use it.
15960 true|$define|[yY]*) dflt='y';;
15963 echo "$package can use the sfio library, but it is experimental."
15964 case "$useperlio" in
15966 echo "For sfio also the PerlIO abstraction layer is needed."
15967 echo "Earlier you said you wouldn't want that."
15970 rp="You seem to have sfio available, do you want to try using it?"
15973 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
15974 useperlio="$define"
15977 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
15982 *) case "$usesfio" in
15983 true|$define|[yY]*)
15984 echo "Sorry, cannot find sfio on this machine." >&4
15985 echo "Ignoring your setting of usesfio=$usesfio." >&4
15994 $define) usesfio='true';;
15995 *) usesfio='false';;
15999 *) : Remove sfio from list of libraries to use
16002 echo "Removing unneeded -lsfio from library list" >&4
16003 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
16006 echo "libs = $libs" >&4
16013 : see if shmctl exists
16014 set shmctl d_shmctl
16017 : see if shmget exists
16018 set shmget d_shmget
16021 : see if shmat exists
16024 : see what shmat returns
16027 $cat >shmat.c <<'END'
16028 #include <sys/shm.h>
16031 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
16036 echo "and it returns ($shmattype)." >&4
16037 : see if a prototype for shmat is available
16038 xxx=`./findhdr sys/shm.h`
16039 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
16040 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
16051 set d_shmatprototype
16054 : see if shmdt exists
16058 : see how much of the 'shm*(2)' library is present.
16061 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
16062 *"$undef"*) h_shm=false;;
16066 case "`ipcs 2>&1`" in
16067 "SVID shared memory"*"not configured"*)
16068 echo "Your $osname does not have the shm*(2) configured." >&4
16071 set shmctl d_shmctl
16073 set shmget d_shmget
16083 : we could also check for sys/ipc.h ...
16084 if $h_shm && $test `./findhdr sys/shm.h`; then
16085 echo "You have the full shm*(2) library." >&4
16088 echo "You don't have the full shm*(2) library." >&4
16095 : see if we have sigaction
16096 if set sigaction val -f d_sigaction; eval $csym; $val; then
16097 echo 'sigaction() found.' >&4
16100 #include <sys/types.h>
16101 #include <signal.h>
16102 #$i_stdlib I_STDLIB
16104 #include <stdlib.h>
16108 struct sigaction act, oact;
16110 oact.sa_handler = 0;
16111 /* so that act and oact are used */
16112 exit(act.sa_flags == 0 && oact.sa_handler == 0);
16116 if eval $compile_ok; then
16119 echo "But you don't seem to have a useable struct sigaction." >&4
16123 echo 'sigaction NOT found.' >&4
16126 set d_sigaction; eval $setvar
16127 $rm -f try try$_o try.c
16129 : see if sigprocmask exists
16130 set sigprocmask d_sigprocmask
16133 : see if sigsetjmp exists
16135 case "$d_sigsetjmp" in
16138 #include <setjmp.h>
16139 #$i_stdlib I_STDLIB
16141 #include <stdlib.h>
16147 if (sigsetjmp(env,1))
16150 siglongjmp(env, 1);
16155 if eval $compile; then
16156 if $run ./try >/dev/null 2>&1; then
16157 echo "POSIX sigsetjmp found." >&4
16161 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
16167 echo "sigsetjmp not found." >&4
16171 *) val="$d_sigsetjmp"
16172 case "$d_sigsetjmp" in
16173 $define) echo "POSIX sigsetjmp found." >&4;;
16174 $undef) echo "sigsetjmp not found." >&4;;
16182 : see if sockatmark exists
16183 set sockatmark d_sockatmark
16186 : see if prototype for sockatmark is available
16188 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
16191 : see if socks5_init exists
16192 set socks5_init d_socks5_init
16195 : see if srand48_r exists
16196 set srand48_r d_srand48_r
16198 case "$d_srand48_r" in
16200 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16201 case "$d_srand48_r_proto:$usethreads" in
16202 ":define") d_srand48_r_proto=define
16203 set d_srand48_r_proto srand48_r $hdrs
16207 case "$d_srand48_r_proto" in
16209 case "$srand48_r_proto" in
16210 ''|0) try='int srand48_r(long, struct drand48_data*);'
16211 ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
16213 case "$srand48_r_proto" in
16214 ''|0) d_srand48_r=undef
16216 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
16217 * ) case "$srand48_r_proto" in
16218 REENTRANT_PROTO*) ;;
16219 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
16221 echo "Prototype: $try" ;;
16224 *) case "$usethreads" in
16225 define) echo "srand48_r has no prototype, not using it." >&4 ;;
16232 *) srand48_r_proto=0
16236 : see if srandom_r exists
16237 set srandom_r d_srandom_r
16239 case "$d_srandom_r" in
16241 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
16242 case "$d_srandom_r_proto:$usethreads" in
16243 ":define") d_srandom_r_proto=define
16244 set d_srandom_r_proto srandom_r $hdrs
16248 case "$d_srandom_r_proto" in
16250 case "$srandom_r_proto" in
16251 ''|0) try='int srandom_r(unsigned int, struct random_data*);'
16252 ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
16254 case "$srandom_r_proto" in
16255 ''|0) d_srandom_r=undef
16257 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
16258 * ) case "$srandom_r_proto" in
16259 REENTRANT_PROTO*) ;;
16260 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
16262 echo "Prototype: $try" ;;
16265 *) case "$usethreads" in
16266 define) echo "srandom_r has no prototype, not using it." >&4 ;;
16273 *) srandom_r_proto=0
16277 : see if prototype for setresgid is available
16279 set d_sresgproto setresgid $i_unistd unistd.h
16282 : see if prototype for setresuid is available
16284 set d_sresuproto setresuid $i_unistd unistd.h
16287 : see if sys/stat.h is available
16288 set sys/stat.h i_sysstat
16292 : see if stat knows about block sizes
16294 echo "Checking to see if your struct stat has st_blocks field..." >&4
16295 set d_statblks stat st_blocks $i_sysstat sys/stat.h
16299 : see if this is a sys/vfs.h system
16300 set sys/vfs.h i_sysvfs
16304 : see if this is a sys/statfs.h system
16305 set sys/statfs.h i_sysstatfs
16310 echo "Checking to see if your system supports struct statfs..." >&4
16311 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
16313 case "$d_statfs_s" in
16314 "$define") echo "Yes, it does." ;;
16315 *) echo "No, it doesn't." ;;
16320 : see if struct statfs knows about f_flags
16321 case "$d_statfs_s" in
16324 echo "Checking to see if your struct statfs has f_flags field..." >&4
16325 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
16329 set d_statfs_f_flags
16333 case "$d_statfs_f_flags" in
16334 "$define") echo "Yes, it does." ;;
16335 *) echo "No, it doesn't." ;;
16339 Checking how to access stdio streams by file descriptor number...
16341 case "$stdio_stream_array" in
16342 '') $cat >try.c <<EOCP
16345 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
16349 for s in _iob __iob __sF
16351 set try -DSTDIO_STREAM_ARRAY=$s
16352 if eval $compile; then
16353 case "`$run ./try`" in
16354 yes) stdio_stream_array=$s; break ;;
16358 $rm -f try.* try$exe_ext
16360 case "$stdio_stream_array" in
16362 I can't figure out how to access stdio streams by file descriptor number.
16364 d_stdio_stream_array="$undef"
16367 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
16369 d_stdio_stream_array="$define"
16373 : see if strcoll exists
16374 set strcoll d_strcoll
16377 : check for structure copying
16379 echo "Checking to see if your C compiler can copy structs..." >&4
16380 $cat >try.c <<'EOCP'
16390 if $cc -c try.c >/dev/null 2>&1 ; then
16392 echo "Yup, it can."
16395 echo "Nope, it can't."
16401 : see if strerror and/or sys_errlist[] exist
16403 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
16404 if set strerror val -f d_strerror; eval $csym; $val; then
16405 echo 'strerror() found.' >&4
16406 d_strerror="$define"
16407 d_strerrm='strerror(e)'
16408 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16409 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
16410 d_syserrlst="$define"
16412 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
16413 d_syserrlst="$undef"
16415 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
16416 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
16417 echo 'strerror() found in string header.' >&4
16418 d_strerror="$define"
16419 d_strerrm='strerror(e)'
16420 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16421 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
16422 d_syserrlst="$define"
16424 echo "(You don't appear to have any sys_errlist[], how can this be?)"
16425 d_syserrlst="$undef"
16427 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
16428 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
16429 d_strerror="$undef"
16430 d_syserrlst="$define"
16431 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
16433 echo 'strerror() and sys_errlist[] NOT found.' >&4
16434 d_strerror="$undef"
16435 d_syserrlst="$undef"
16436 d_strerrm='"unknown"'
16440 : see if strerror_r exists
16441 set strerror_r d_strerror_r
16443 case "$d_strerror_r" in
16445 hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
16446 case "$d_strerror_r_proto:$usethreads" in
16447 ":define") d_strerror_r_proto=define
16448 set d_strerror_r_proto strerror_r $hdrs
16452 case "$d_strerror_r_proto" in
16454 case "$strerror_r_proto" in
16455 ''|0) try='int strerror_r(int, char*, size_t);'
16456 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
16458 case "$strerror_r_proto" in
16459 ''|0) try='int strerror_r(int, char*, int);'
16460 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
16462 case "$strerror_r_proto" in
16463 ''|0) try='char* strerror_r(int, char*, size_t);'
16464 ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
16466 case "$strerror_r_proto" in
16467 ''|0) d_strerror_r=undef
16469 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
16470 * ) case "$strerror_r_proto" in
16471 REENTRANT_PROTO*) ;;
16472 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
16474 echo "Prototype: $try" ;;
16477 *) case "$usethreads" in
16478 define) echo "strerror_r has no prototype, not using it." >&4 ;;
16485 *) strerror_r_proto=0
16489 : see if strftime exists
16490 set strftime d_strftime
16493 : see if strlcat exists
16494 set strlcat d_strlcat
16497 : see if strlcpy exists
16498 set strlcpy d_strlcpy
16501 : see if strtod exists
16502 set strtod d_strtod
16505 : see if strtol exists
16506 set strtol d_strtol
16509 : see if strtold exists
16510 set strtold d_strtold
16513 : see if strtoll exists
16514 set strtoll d_strtoll
16517 case "$d_longlong-$d_strtoll" in
16520 Checking whether your strtoll() works okay...
16522 $cat >try.c <<'EOCP'
16525 #define strtoll __strtoll
16528 #define strtoll _strtoll
16531 extern long long int strtoll(char *s, char **, int);
16532 static int bad = 0;
16533 int check(char *s, long long ell, int een) {
16536 gll = strtoll(s, 0, 10);
16537 if (!((gll == ell) && (errno == een)))
16541 check(" 1", 1LL, 0);
16542 check(" 0", 0LL, 0);
16543 check("-1", -1LL, 0);
16544 check("-9223372036854775808", -9223372036854775808LL, 0);
16545 check("-9223372036854775808", -9223372036854775808LL, 0);
16546 check(" 9223372036854775807", 9223372036854775807LL, 0);
16547 check("-9223372036854775808", -9223372036854775808LL, 0);
16548 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
16549 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
16555 if eval $compile; then
16558 ok) echo "Your strtoll() seems to be working okay." ;;
16560 Your strtoll() doesn't seem to be working okay.
16566 echo "(I can't seem to compile the test program--assuming it doesn't)"
16572 : see if strtoq exists
16573 set strtoq d_strtoq
16576 : see if strtoul exists
16577 set strtoul d_strtoul
16580 case "$d_strtoul" in
16583 Checking whether your strtoul() works okay...
16585 $cat >try.c <<'EOCP'
16588 extern unsigned long int strtoul(char *s, char **, int);
16589 static int bad = 0;
16590 void check(char *s, unsigned long eul, int een) {
16593 gul = strtoul(s, 0, 10);
16594 if (!((gul == eul) && (errno == een)))
16598 check(" 1", 1L, 0);
16599 check(" 0", 0L, 0);
16601 case "$longsize" in
16603 $cat >>try.c <<'EOCP'
16604 check("18446744073709551615", 18446744073709551615UL, 0);
16605 check("18446744073709551616", 18446744073709551615UL, ERANGE);
16606 #if 0 /* strtoul() for /^-/ strings is undefined. */
16607 check("-1", 18446744073709551615UL, 0);
16608 check("-18446744073709551614", 2, 0);
16609 check("-18446744073709551615", 1, 0);
16610 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
16611 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
16616 $cat >>try.c <<'EOCP'
16617 check("4294967295", 4294967295UL, 0);
16618 check("4294967296", 4294967295UL, ERANGE);
16619 #if 0 /* strtoul() for /^-/ strings is undefined. */
16620 check("-1", 4294967295UL, 0);
16621 check("-4294967294", 2, 0);
16622 check("-4294967295", 1, 0);
16623 check("-4294967296", 4294967295UL, ERANGE);
16624 check("-4294967297", 4294967295UL, ERANGE);
16629 : Should we write these tests to be more portable by sprintf-ing
16630 : ~0 and then manipulating that char string as input for strtol?
16633 $cat >>try.c <<'EOCP'
16640 if eval $compile; then
16641 case "`$run ./try`" in
16642 ok) echo "Your strtoul() seems to be working okay." ;;
16644 Your strtoul() doesn't seem to be working okay.
16653 : see if strtoull exists
16654 set strtoull d_strtoull
16657 case "$d_longlong-$d_strtoull" in
16660 Checking whether your strtoull() works okay...
16662 $cat >try.c <<'EOCP'
16665 #define strtoull __strtoull
16668 extern unsigned long long int strtoull(char *s, char **, int);
16669 static int bad = 0;
16670 int check(char *s, long long eull, int een) {
16673 gull = strtoull(s, 0, 10);
16674 if (!((gull == eull) && (errno == een)))
16678 check(" 1", 1LL, 0);
16679 check(" 0", 0LL, 0);
16680 check("18446744073709551615", 18446744073709551615ULL, 0);
16681 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
16682 #if 0 /* strtoull() for /^-/ strings is undefined. */
16683 check("-1", 18446744073709551615ULL, 0);
16684 check("-18446744073709551614", 2LL, 0);
16685 check("-18446744073709551615", 1LL, 0);
16686 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16687 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16694 if eval $compile; then
16695 case "`$run ./try`" in
16696 ok) echo "Your strtoull() seems to be working okay." ;;
16698 Your strtoull() doesn't seem to be working okay.
16700 d_strtoull="$undef"
16707 : see if strtouq exists
16708 set strtouq d_strtouq
16711 case "$d_strtouq" in
16714 Checking whether your strtouq() works okay...
16716 $cat >try.c <<'EOCP'
16719 extern unsigned long long int strtouq(char *s, char **, int);
16720 static int bad = 0;
16721 void check(char *s, unsigned long long eull, int een) {
16722 unsigned long long gull;
16724 gull = strtouq(s, 0, 10);
16725 if (!((gull == eull) && (errno == een)))
16729 check(" 1", 1LL, 0);
16730 check(" 0", 0LL, 0);
16731 check("18446744073709551615", 18446744073709551615ULL, 0);
16732 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
16733 #if 0 /* strtouq() for /^-/ strings is undefined. */
16734 check("-1", 18446744073709551615ULL, 0);
16735 check("-18446744073709551614", 2LL, 0);
16736 check("-18446744073709551615", 1LL, 0);
16737 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
16738 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
16746 if eval $compile; then
16747 case "`$run ./try`" in
16748 ok) echo "Your strtouq() seems to be working okay." ;;
16750 Your strtouq() doesn't seem to be working okay.
16759 : see if strxfrm exists
16760 set strxfrm d_strxfrm
16763 : see if symlink exists
16764 set symlink d_symlink
16767 : see if syscall exists
16768 set syscall d_syscall
16771 : see if prototype for syscall is available
16773 set d_syscallproto syscall $i_unistd unistd.h
16776 : see if sysconf exists
16777 set sysconf d_sysconf
16780 : see if system exists
16781 set system d_system
16784 : see if tcgetpgrp exists
16785 set tcgetpgrp d_tcgetpgrp
16788 : see if tcsetpgrp exists
16789 set tcsetpgrp d_tcsetpgrp
16792 : see if prototype for telldir is available
16794 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
16797 : see if time exists
16799 if test "X$d_time" = X -o X"$timetype" = X; then
16800 if set time val -f d_time; eval $csym; $val; then
16801 echo 'time() found.' >&4
16803 rp="What is the type returned by time() on this system?"
16804 set time_t timetype long stdio.h sys/types.h
16807 echo 'time() not found, hope that will do.' >&4
16815 : see if this is a sys/times.h system
16816 set sys/times.h i_systimes
16819 : see if times exists
16821 if set times val -f d_times; eval $csym; $val; then
16822 echo 'times() found.' >&4
16825 case "$i_systimes" in
16826 "$define") inc='sys/times.h';;
16828 rp="What is the type returned by times() on this system?"
16829 set clock_t clocktype long stdio.h sys/types.h $inc
16832 echo 'times() NOT found, hope that will do.' >&4
16837 : see if tmpnam_r exists
16838 set tmpnam_r d_tmpnam_r
16840 case "$d_tmpnam_r" in
16842 hdrs="$i_systypes sys/types.h define stdio.h "
16843 case "$d_tmpnam_r_proto:$usethreads" in
16844 ":define") d_tmpnam_r_proto=define
16845 set d_tmpnam_r_proto tmpnam_r $hdrs
16849 case "$d_tmpnam_r_proto" in
16851 case "$tmpnam_r_proto" in
16852 ''|0) try='char* tmpnam_r(char*);'
16853 ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
16855 case "$tmpnam_r_proto" in
16856 ''|0) d_tmpnam_r=undef
16858 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
16859 * ) case "$tmpnam_r_proto" in
16860 REENTRANT_PROTO*) ;;
16861 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
16863 echo "Prototype: $try" ;;
16866 *) case "$usethreads" in
16867 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
16874 *) tmpnam_r_proto=0
16878 : see if truncate exists
16879 set truncate d_truncate
16882 : see if ttyname_r exists
16883 set ttyname_r d_ttyname_r
16885 case "$d_ttyname_r" in
16887 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
16888 case "$d_ttyname_r_proto:$usethreads" in
16889 ":define") d_ttyname_r_proto=define
16890 set d_ttyname_r_proto ttyname_r $hdrs
16894 case "$d_ttyname_r_proto" in
16896 case "$ttyname_r_proto" in
16897 ''|0) try='int ttyname_r(int, char*, size_t);'
16898 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
16900 case "$ttyname_r_proto" in
16901 ''|0) try='int ttyname_r(int, char*, int);'
16902 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
16904 case "$ttyname_r_proto" in
16905 ''|0) try='char* ttyname_r(int, char*, int);'
16906 ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
16908 case "$ttyname_r_proto" in
16909 ''|0) d_ttyname_r=undef
16911 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
16912 * ) case "$ttyname_r_proto" in
16913 REENTRANT_PROTO*) ;;
16914 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
16916 echo "Prototype: $try" ;;
16919 *) case "$usethreads" in
16920 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
16927 *) ttyname_r_proto=0
16931 : see if tzname[] exists
16933 if set tzname val -a d_tzname; eval $csym; $val; then
16935 echo 'tzname[] found.' >&4
16938 echo 'tzname[] NOT found.' >&4
16944 next|rhapsody|darwin) multiarch="$define" ;;
16946 case "$multiarch" in
16947 ''|[nN]*) multiarch="$undef" ;;
16950 : check for ordering of bytes in a UV
16952 case "$usecrosscompile$multiarch" in
16955 You seem to be either cross-compiling or doing a multiarchitecture build,
16956 skipping the byteorder check.
16962 case "$byteorder" in
16965 In the following, larger digits indicate more significance. A big-endian
16966 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
16967 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
16968 machines may have weird orders like 3412. A Cray will report 87654321,
16969 an Alpha will report 12345678. If the test program works the default is
16971 I'm now running the test program...
16975 #$i_stdlib I_STDLIB
16977 #include <stdlib.h>
16979 #include <sys/types.h>
16980 typedef $uvtype UV;
16990 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
16992 u.l = (UV)0x04030201;
16993 for (i = 0; i < $uvsize; i++)
16994 printf("%c", u.c[i]+'0');
17001 if eval $compile && ./try > /dev/null; then
17004 [1-4][1-4][1-4][1-4]|12345678|87654321)
17005 echo "(The test program ran ok.)"
17006 echo "byteorder=$dflt"
17009 ????|????????) echo "(The test program ran ok.)" ;;
17010 *) echo "(The test program didn't run right for some reason.)" ;;
17015 (I can't seem to compile the test program. Guessing big-endian...)
17018 case "$xxx_prompt" in
17020 rp="What is the order of bytes in $uvtype?"
17036 Checking to see whether you can access character data unalignedly...
17038 case "$d_u32align" in
17039 '') $cat >try.c <<EOCP
17041 #$i_stdlib I_STDLIB
17043 #include <stdlib.h>
17045 #define U32 $u32type
17046 #define BYTEORDER 0x$byteorder
17048 #include <signal.h>
17050 $signal_t bletch(s) int s; { exit(4); }
17053 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
17058 if (sizeof(U32) != 4) {
17059 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
17066 signal(SIGBUS, bletch);
17078 for (i = 0; i < 4; i++) {
17079 up = (U32*)(buf + i);
17080 if (! ((*up == 1 << (8*i)) || /* big-endian */
17081 (*up == 1 << (8*(3-i))) /* little-endian */
17085 printf("read failed (%x)\n", *up);
17091 for (i = 0; i < 4; i++) {
17092 up = (U32*)(buf + i);
17094 if (*up != 0xBeef) {
17095 printf("write failed (%x)\n", *up);
17109 if eval $compile_ok; then
17110 echo "(Testing for character data alignment may crash the test. That's okay.)" >&4
17111 $run ./try 2>&1 >/dev/null
17114 You can access character data pretty unalignedly.
17116 d_u32align="$undef"
17119 It seems that you must access character data in an aligned manner.
17121 d_u32align="$define"
17125 rp='Can you access character data at unaligned addresses?'
17129 [yY]*) d_u32align="$undef" ;;
17130 *) d_u32align="$define" ;;
17133 $rm -f core core.try.* try.core
17137 : see if ualarm exists
17138 set ualarm d_ualarm
17141 : see if umask exists
17145 : see if unordered exists
17146 set unordered d_unordered
17149 : see if usleep exists
17150 set usleep d_usleep
17153 : see if prototype for usleep is available
17155 set d_usleepproto usleep $i_unistd unistd.h
17158 : see if ustat exists
17162 : backward compatibility for d_hvfork
17163 if test X$d_hvfork != X; then
17164 d_vfork="$d_hvfork"
17167 : see if there is a vfork
17172 : Ok, but do we want to use it. vfork is reportedly unreliable in
17173 : perl on Solaris 2.x, and probably elsewhere.
17177 case "$usevfork" in
17183 Perl can only use a vfork() that doesn't suffer from strict
17184 restrictions on calling functions or modifying global data in
17185 the child. For example, glibc-2.1 contains such a vfork()
17186 that is unsuitable. If your system provides a proper fork()
17187 call, chances are that you do NOT want perl to use vfork().
17190 rp="Do you still want to use vfork()?"
17195 echo "Ok, we won't use vfork()."
17204 $define) usevfork='true';;
17205 *) usevfork='false';;
17208 : see if closedir exists
17209 set closedir d_closedir
17212 case "$d_closedir" in
17215 echo "Checking whether closedir() returns a status..." >&4
17217 #$i_dirent I_DIRENT /**/
17218 #$i_sysdir I_SYS_DIR /**/
17219 #$i_sysndir I_SYS_NDIR /**/
17220 #$i_systypes I_SYS_TYPES /**/
17222 #if defined(I_SYS_TYPES)
17223 #include <sys/types.h>
17225 #if defined(I_DIRENT)
17226 #include <dirent.h>
17227 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
17228 #include <sys/dir.h>
17232 #include <sys/ndir.h>
17236 #include <ndir.h> /* may be wrong in the future */
17238 #include <sys/dir.h>
17243 int main() { return closedir(opendir(".")); }
17246 if eval $compile_ok; then
17247 if $run ./try > /dev/null 2>&1 ; then
17248 echo "Yes, it does."
17251 echo "No, it doesn't."
17255 echo "(I can't seem to compile the test program--assuming it doesn't)"
17263 set d_void_closedir
17266 : see if there is a wait4
17270 : see if waitpid exists
17271 set waitpid d_waitpid
17274 : see if wcstombs exists
17275 set wcstombs d_wcstombs
17278 : see if wctomb exists
17279 set wctomb d_wctomb
17282 : see if writev exists
17283 set writev d_writev
17286 : preserve RCS keywords in files with variable substitution, grrr
17291 Revision='$Revision'
17293 : check for alignment requirements
17295 case "$usecrosscompile$multiarch" in
17298 You seem to be either cross-compiling or doing a multiarchitecture build,
17299 skipping the memory alignment check.
17302 case "$alignbytes" in
17303 '') alignbytes=8 ;;
17307 case "$alignbytes" in
17308 '') echo "Checking alignment constraints..." >&4
17309 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
17310 $cat >try.c <<'EOCP'
17311 typedef long double NV;
17314 $cat >try.c <<'EOCP'
17318 $cat >>try.c <<'EOCP'
17326 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
17331 if eval $compile_ok; then
17335 echo "(I can't seem to compile the test program...)"
17338 *) dflt="$alignbytes"
17341 rp="Doubles must be aligned on a how-many-byte boundary?"
17349 : set the base revision
17352 : how do we concatenate cpp tokens here?
17354 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
17355 $cat >cpp_stuff.c <<'EOCP'
17356 #define RCAT(a,b)a/**/b
17357 #define ACAT(a,b)a ## b
17361 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
17362 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
17363 echo "Oh! Smells like ANSI's been here." >&4
17364 echo "We can catify or stringify, separately or together!"
17366 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
17367 echo "Ah, yes! The good old days!" >&4
17368 echo "However, in the good old days we don't know how to stringify and"
17369 echo "catify at the same time."
17373 Hmm, I don't seem to be able to concatenate tokens with your cpp.
17374 You're going to have to edit the values of CAT[2-5] in config.h...
17376 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
17380 : see if this is a db.h system
17386 : Check db version.
17388 echo "Checking Berkeley DB version ..." >&4
17394 #include <sys/types.h>
17396 #$i_stdlib I_STDLIB
17398 #include <stdlib.h>
17401 int main(int argc, char *argv[])
17403 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
17404 int Major, Minor, Patch ;
17405 unsigned long Version ;
17406 (void)db_version(&Major, &Minor, &Patch) ;
17408 printf("%d %d %d %d %d %d\n",
17409 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
17410 Major, Minor, Patch);
17413 printf("You have Berkeley DB Version 2 or greater.\n");
17415 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
17416 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
17417 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
17418 Major, Minor, Patch) ;
17420 /* check that db.h & libdb are compatible */
17421 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
17422 printf("db.h and libdb are incompatible.\n") ;
17426 printf("db.h and libdb are compatible.\n") ;
17428 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
17429 + DB_VERSION_PATCH ;
17431 /* needs to be >= 2.3.4 */
17432 if (Version < 2003004) {
17433 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
17434 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
17440 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
17445 printf("You have Berkeley DB Version 1.\n");
17446 exit(0); /* DB version < 2: the coast is clear. */
17448 exit(1); /* <db.h> not Berkeley DB? */
17454 if eval $compile_ok && $run ./try; then
17455 echo 'Looks OK.' >&4
17457 db_version_major=$1
17458 db_version_minor=$2
17459 db_version_patch=$3
17461 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
17465 : Remove db from list of libraries to use
17466 echo "Removing unusable -ldb from library list" >&4
17467 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
17470 echo "libs = $libs" >&4
17480 : Check the return type needed for hash
17482 echo "Checking return type needed for hash for Berkeley DB ..." >&4
17488 #include <sys/types.h>
17491 #ifndef DB_VERSION_MAJOR
17492 u_int32_t hash_cb (ptr, size)
17500 info.hash = hash_cb;
17504 if $cc $ccflags -c try.c >try.out 2>&1 ; then
17505 if $contains warning try.out >>/dev/null 2>&1 ; then
17508 db_hashtype='u_int32_t'
17511 : XXX Maybe we should just give up here.
17512 db_hashtype=u_int32_t
17514 echo "Help: I can't seem to compile the db test program." >&4
17515 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
17518 echo "Your version of Berkeley DB uses $db_hashtype for hash."
17520 *) db_hashtype=u_int32_t
17525 : Check the return type needed for prefix
17527 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
17533 #include <sys/types.h>
17536 #ifndef DB_VERSION_MAJOR
17537 size_t prefix_cb (key1, key2)
17545 info.prefix = prefix_cb;
17549 if $cc $ccflags -c try.c >try.out 2>&1 ; then
17550 if $contains warning try.out >>/dev/null 2>&1 ; then
17551 db_prefixtype='int'
17553 db_prefixtype='size_t'
17556 db_prefixtype='size_t'
17557 : XXX Maybe we should just give up here.
17559 echo "Help: I can't seem to compile the db test program." >&4
17560 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
17563 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
17565 *) db_prefixtype='size_t'
17570 : How can we generate normalized random numbers ?
17572 echo "Looking for a random number function..." >&4
17573 case "$randfunc" in
17575 if set drand48 val -f; eval $csym; $val; then
17577 echo "Good, found drand48()." >&4
17578 elif set random val -f; eval $csym; $val; then
17580 echo "OK, found random()." >&4
17583 echo "Yick, looks like I have to use rand()." >&4
17594 *-Dmy_rand=*|*-Dmy_srand=*)
17595 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
17596 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
17597 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
17598 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
17602 while $test "$cont"; do
17603 rp="Use which function to generate random numbers?"
17605 if $test "$ans" = "$dflt"; then
17611 if set $ans val -f; eval $csym; $val; then
17615 rp="I cannot find function $ans. Use that name anyway?"
17624 case "$randfunc" in
17626 drand01="drand48()"
17632 case "$randbits" in
17634 echo "Checking to see how many bits your $randfunc() function produces..." >&4
17636 #$i_unistd I_UNISTD
17637 #$i_stdlib I_STDLIB
17640 # include <unistd.h>
17643 # include <stdlib.h>
17648 register unsigned long tmp;
17649 register unsigned long max = 0L;
17651 for (i = 1000; i; i--) {
17652 tmp = (unsigned long) $randfunc();
17653 if (tmp > max) max = tmp;
17655 for (i = 0; max; i++)
17661 if eval $compile_ok; then
17665 echo "(I can't seem to compile the test program...)"
17672 rp="How many bits does your $randfunc() function produce?"
17676 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17677 seedfunc="s$randfunc"
17678 randseedtype=unsigned
17682 rp="How many bits does your $randfunc() function produce?"
17685 seedfunc="s$randfunc"
17686 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
17687 if set $seedfunc val -f; eval $csym; $val; then
17688 echo "(Using $seedfunc() to seed random generator)"
17690 echo "(Warning: no $seedfunc() to seed random generator)"
17693 randseedtype=unsigned
17701 echo "Determining whether or not we are on an EBCDIC system..." >&4
17702 $cat >try.c <<'EOM'
17705 if ('M'==0xd4) return 0;
17712 if eval $compile_ok; then
17713 if $run ./try; then
17714 echo "You seem to speak EBCDIC." >&4
17717 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
17720 echo "I'm unable to compile the test program." >&4
17721 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
17729 Checking how to flush all pending stdio output...
17731 # I only know how to find the first 32 possibly open files on SunOS.
17732 # See also hints/sunos_4_1.sh and util.c --AD
17734 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
17736 $cat >>try.c <<EOCP
17738 #$i_stdlib I_STDLIB
17740 #include <stdlib.h>
17742 #$i_unistd I_UNISTD
17744 # include <unistd.h>
17746 #$d_sysconf HAS_SYSCONF
17747 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
17748 #ifdef HAS_STDIO_STREAM_ARRAY
17749 # define STDIO_STREAM_ARRAY $stdio_stream_array
17754 p = fopen("try.out", "w");
17758 # ifdef TRY_FPRINTF
17762 #ifdef TRY_FFLUSH_NULL
17765 #ifdef TRY_FFLUSH_ALL
17767 long open_max = -1;
17768 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
17769 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
17771 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
17772 open_max = sysconf(_SC_OPEN_MAX);
17775 open_max = FOPEN_MAX;
17778 open_max = OPEN_MAX;
17787 # ifdef HAS_STDIO_STREAM_ARRAY
17788 if (open_max > 0) {
17790 for (i = 0; i < open_max; i++)
17791 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
17792 STDIO_STREAM_ARRAY[i]._file < open_max &&
17793 STDIO_STREAM_ARRAY[i]._flag)
17794 fflush(&STDIO_STREAM_ARRAY[i]);
17802 : first we have to find out how _not_ to flush
17804 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
17806 set try -DTRY_FPUTC
17807 if eval $compile; then
17808 $run ./try 2>/dev/null
17811 if $test ! -s try.out -a "X$code" = X42; then
17817 set try -DTRY_FPRINTF
17818 if eval $compile; then
17819 $run ./try 2>/dev/null
17822 if $test ! -s try.out -a "X$code" = X42; then
17823 output=-DTRY_FPRINTF
17829 : check for fflush NULL behaviour
17830 case "$fflushNULL" in
17831 '') set try -DTRY_FFLUSH_NULL $output
17832 if eval $compile; then
17833 $run ./try 2>/dev/null
17836 if $test -s try.out -a "X$code" = X42; then
17837 fflushNULL="`$cat try.out`"
17839 if $test "X$code" != X42; then
17841 (If this test failed, don't worry, we'll try another method shortly.)
17846 $rm -f core try.core core.try.*
17847 case "$fflushNULL" in
17849 Your fflush(NULL) works okay for output streams.
17850 Let's see if it clobbers input pipes...
17852 # As of mid-March 2000 all versions of Solaris appear to have a stdio
17853 # bug that improperly flushes the input end of pipes. So we avoid the
17854 # autoflush on fork/system/exec support for now. :-(
17855 $cat >tryp.c <<EOCP
17858 main(int argc, char **argv)
17864 while ((i = getc(stdin)) != -1
17865 && (*bp++ = i) != '\n'
17866 && bp < &buf[1024])
17869 fprintf(stdout, "%s", buf);
17877 fflushNULL="$define"
17879 if eval $compile; then
17881 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17882 if cmp tryp.c tryp.out >/dev/null 2>&1; then
17884 fflush(NULL) seems to behave okay with input streams.
17886 fflushNULL="$define"
17889 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
17891 fflushNULL="$undef"
17894 $rm -f core tryp.c tryp.core core.tryp.*
17897 Your fflush(NULL) isn't working (contrary to ANSI C).
17899 fflushNULL="$undef"
17902 Cannot figure out whether your fflush(NULL) works or not.
17903 I'm assuming it doesn't (contrary to ANSI C).
17905 fflushNULL="$undef"
17909 $define|true|[yY]*)
17910 fflushNULL="$define"
17913 fflushNULL="$undef"
17916 : check explicit looping only if NULL did not work, and if the pipe
17917 : bug does not show up on an explicit flush too
17918 case "$fflushNULL" in
17920 $cat >tryp.c <<EOCP
17923 main(int argc, char **argv)
17929 while ((i = getc(stdin)) != -1
17930 && (*bp++ = i) != '\n'
17931 && bp < &buf[1024])
17934 fprintf(stdout, "%s", buf);
17943 if eval $compile; then
17945 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
17946 if cmp tryp.c tryp.out >/dev/null 2>&1; then
17948 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
17950 : now check for fflushall behaviour
17951 case "$fflushall" in
17952 '') set try -DTRY_FFLUSH_ALL $output
17953 if eval $compile; then
17955 (Now testing the other method--but note that this also may fail.)
17957 $run ./try 2>/dev/null
17960 if $test -s try.out -a "X$code" = X42; then
17961 fflushall="`$cat try.out`"
17964 $rm -f core try.core core.try.*
17965 case "$fflushall" in
17967 Whew. Flushing explicitly all the stdio streams works.
17969 fflushall="$define"
17972 Sigh. Flushing explicitly all the stdio streams doesn't work.
17977 Cannot figure out whether flushing stdio streams explicitly works or not.
17978 I'm assuming it doesn't.
17984 "$define"|true|[yY]*)
17985 fflushall="$define"
17993 All is futile. Even fflush(stdin) clobbers input pipes!
18000 $rm -f core tryp.c tryp.core core.tryp.*
18002 *) fflushall="$undef"
18006 case "$fflushNULL$fflushall" in
18009 OK, I give up. I cannot figure out how to flush pending stdio output.
18010 We won't be flushing handles at all before fork/exec/popen.
18014 $rm -f try.* try$exe_ext
18016 : Store the full pathname to the ar program for use in the C program
18017 : Respect a hint or command line value for full_ar.
18022 : Store the full pathname to the sed program for use in the C program
18025 : see what type gids are declared as in the kernel
18027 echo "Looking for the type for group ids returned by getgid()."
18028 set gid_t gidtype xxx stdio.h sys/types.h
18032 xxx=`./findhdr sys/user.h`
18033 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
18035 unsigned) dflt="$1 $2" ;;
18039 *) dflt="$gidtype";;
18042 gid_t) echo "gid_t found." ;;
18043 *) rp="What is the type for group ids returned by getgid()?"
18051 *_t) zzz="$gidtype" ;;
18054 echo "Checking the size of $zzz..." >&4
18056 #include <sys/types.h>
18058 #$i_stdlib I_STDLIB
18060 #include <stdlib.h>
18063 printf("%d\n", (int)sizeof($gidtype));
18068 if eval $compile_ok; then
18072 echo "(I can't execute the test program--guessing $gidsize.)" >&4
18075 echo "Your $zzz is $gidsize bytes long."
18080 echo "(I can't compile the test program--guessing $gidsize.)" >&4
18086 *_t) zzz="$gidtype" ;;
18089 echo "Checking the sign of $zzz..." >&4
18091 #include <sys/types.h>
18102 if eval $compile; then
18106 echo "(I can't execute the test program--guessing unsigned.)" >&4
18110 1) echo "Your $zzz is unsigned." ;;
18111 -1) echo "Your $zzz is signed." ;;
18117 echo "(I can't compile the test program--guessing unsigned.)" >&4
18123 if $test X"$quadtype" != X; then
18125 echo "Checking how to print 64-bit integers..." >&4
18127 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
18128 $cat >try.c <<'EOCP'
18129 #include <sys/types.h>
18132 int q = 12345678901;
18133 printf("%ld\n", q);
18137 if eval $compile; then
18141 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
18142 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
18143 echo "We will use %d."
18149 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
18150 $cat >try.c <<'EOCP'
18151 #include <sys/types.h>
18154 long q = 12345678901;
18155 printf("%ld\n", q);
18159 if eval $compile; then
18163 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
18164 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
18165 echo "We will use %ld."
18171 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
18172 $cat >try.c <<'EOCP'
18173 #include <sys/types.h>
18174 #include <inttypes.h>
18177 int64_t q = 12345678901;
18178 printf("%" PRId64 "\n", q);
18182 if eval $compile; then
18186 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
18187 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
18188 echo "We will use the C9X style."
18194 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18196 #include <sys/types.h>
18199 $quadtype q = 12345678901;
18200 printf("%Ld\n", q);
18204 if eval $compile; then
18208 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
18209 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
18210 echo "We will use %Ld."
18216 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
18217 $cat >try.c <<'EOCP'
18218 #include <sys/types.h>
18221 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
18222 printf("%lld\n", q);
18226 if eval $compile; then
18230 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
18231 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
18232 echo "We will use the %lld style."
18238 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
18240 #include <sys/types.h>
18243 $quadtype q = 12345678901;
18244 printf("%qd\n", q);
18248 if eval $compile; then
18252 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
18253 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
18254 echo "We will use %qd."
18260 if $test X"$sPRId64" = X; then
18261 echo "Cannot figure out how to print 64-bit integers." >&4
18269 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
18270 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
18272 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
18273 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
18279 $echo "Checking the format strings to be used for Perl's internal types..." >&4
18281 if $test X"$ivsize" = X8; then
18282 ivdformat="$sPRId64"
18283 uvuformat="$sPRIu64"
18284 uvoformat="$sPRIo64"
18285 uvxformat="$sPRIx64"
18286 uvXUformat="$sPRIXU64"
18288 if $test X"$ivsize" = X"$longsize"; then
18295 if $test X"$ivsize" = X"$intsize"; then
18303 if $test X"$ivsize" = X"$shortsize"; then
18314 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
18315 nveformat="$sPRIeldbl"
18316 nvfformat="$sPRIfldbl"
18317 nvgformat="$sPRIgldbl"
18318 nvEUformat="$sPRIEUldbl"
18319 nvFUformat="$sPRIFUldbl"
18320 nvGUformat="$sPRIGUldbl"
18330 case "$ivdformat" in
18331 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
18338 $echo "Checking the format string to be used for gids..." >&4
18341 -1) if $test X"$gidsize" = X"$ivsize"; then
18342 gidformat="$ivdformat"
18344 if $test X"$gidsize" = X"$longsize"; then
18347 if $test X"$gidsize" = X"$intsize"; then
18350 if $test X"$gidsize" = X"$shortsize"; then
18357 *) if $test X"$gidsize" = X"$uvsize"; then
18358 gidformat="$uvuformat"
18360 if $test X"$gidsize" = X"$longsize"; then
18363 if $test X"$gidsize" = X"$intsize"; then
18366 if $test X"$gidsize" = X"$shortsize"; then
18375 : see if getgroups exists
18376 set getgroups d_getgrps
18379 : see if setgroups exists
18380 set setgroups d_setgrps
18384 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
18386 case "$d_getgrps$d_setgrps" in
18388 case "$groupstype" in
18389 '') dflt="$gidtype" ;;
18390 *) dflt="$groupstype" ;;
18393 What type of pointer is the second argument to getgroups() and setgroups()?
18394 Usually this is the same as group ids, $gidtype, but not always.
18397 rp='What type pointer is the second argument to getgroups() and setgroups()?'
18401 *) groupstype="$gidtype";;
18405 echo "Checking if your $make program sets \$(MAKE)..." >&4
18406 case "$make_set_make" in
18408 $sed 's/^X //' > testmake.mak << 'EOF'
18410 X @echo 'maketemp="$(MAKE)"'
18412 case "`$make -f testmake.mak 2>/dev/null`" in
18413 *maketemp=*) make_set_make='#' ;;
18414 *) make_set_make="MAKE=$make" ;;
18416 $rm -f testmake.mak
18419 case "$make_set_make" in
18420 '#') echo "Yup, it does.";;
18421 *) echo "Nope, it doesn't.";;
18424 : see what type is used for mode_t
18425 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
18426 set mode_t modetype int stdio.h sys/types.h
18429 : see if stdarg is available
18431 if $test `./findhdr stdarg.h`; then
18432 echo "<stdarg.h> found." >&4
18435 echo "<stdarg.h> NOT found." >&4
18439 : see if varags is available
18441 if $test `./findhdr varargs.h`; then
18442 echo "<varargs.h> found." >&4
18444 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
18447 : set up the varargs testing programs
18448 $cat > varargs.c <<EOP
18450 #include <stdarg.h>
18453 #include <varargs.h>
18457 int f(char *p, ...)
18471 p = va_arg(ap, char *);
18476 $cat > varargs <<EOP
18478 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
18487 : now check which varargs header should be included
18492 if `./varargs I_STDARG`; then
18494 elif `./varargs I_VARARGS`; then
18499 if `./varargs I_VARARGS`; then
18506 echo "I could not find the definition for va_dcl... You have problems..." >&4
18507 val="$undef"; set i_stdarg; eval $setvar
18508 val="$undef"; set i_varargs; eval $setvar
18513 case "$i_varhdr" in
18515 val="$define"; set i_stdarg; eval $setvar
18516 val="$undef"; set i_varargs; eval $setvar
18519 val="$undef"; set i_stdarg; eval $setvar
18520 val="$define"; set i_varargs; eval $setvar
18523 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
18527 : see if we need va_copy
18529 case "$i_stdarg" in
18532 #include <stdarg.h>
18534 #$i_stdlib I_STDLIB
18536 #include <stdlib.h>
18538 #include <signal.h>
18541 ivfprintf(FILE *f, const char *fmt, va_list *valp)
18543 return vfprintf(f, fmt, *valp);
18547 myvfprintf(FILE *f, const char *fmt, va_list val)
18549 return ivfprintf(f, fmt, &val);
18553 myprintf(char *fmt, ...)
18556 va_start(val, fmt);
18557 return myvfprintf(stdout, fmt, val);
18561 main(int ac, char **av)
18563 signal(SIGSEGV, exit);
18565 myprintf("%s%cs all right, then\n", "that", '\'');
18570 if eval $compile && $run ./try 2>&1 >/dev/null; then
18571 case "`$run ./try`" in
18572 "that's all right, then")
18578 yes) echo "It seems that you don't need va_copy()." >&4
18579 need_va_copy="$undef"
18581 *) echo "It seems that va_copy() or similar will be needed." >&4
18582 need_va_copy="$define"
18585 $rm -f try.* core core.* *.core *.core.*
18587 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
18591 : see what type is used for size_t
18592 rp="What is the type used for the length parameter for string functions?"
18593 set size_t sizetype 'unsigned int' stdio.h sys/types.h
18596 : check for type of arguments to gethostbyaddr.
18597 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
18598 case "$d_gethbyaddr" in
18602 Checking to see what type of arguments are accepted by gethostbyaddr().
18604 hdrs="$define sys/types.h
18605 $d_socket sys/socket.h
18606 $i_niin netinet/in.h
18608 $i_unistd unistd.h"
18609 : The first arg can 'char *' or 'void *'
18610 : The second arg is some of integral type
18611 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
18612 for yyy in size_t long int; do
18613 case "$netdb_host_type" in
18614 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
18615 if ./protochk "$try" $hdrs; then
18616 echo "Your system accepts $xxx for the first arg."
18617 echo "...and $yyy for the second arg."
18618 netdb_host_type="$xxx"
18619 netdb_hlen_type="$yyy"
18625 : In case none of those worked, prompt the user.
18626 case "$netdb_host_type" in
18627 '') rp='What is the type for the 1st argument to gethostbyaddr?'
18630 netdb_host_type=$ans
18631 rp='What is the type for the 2nd argument to gethostbyaddr?'
18634 netdb_hlen_type=$ans
18638 *) : no gethostbyaddr, so pick harmless defaults
18639 netdb_host_type='char *'
18640 netdb_hlen_type="$sizetype"
18643 # Remove the "const" if needed. -- but then we'll have a
18645 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
18648 : check for type of argument to gethostbyname.
18649 if test "X$netdb_name_type" = X ; then
18650 case "$d_gethbyname" in
18654 Checking to see what type of argument is accepted by gethostbyname().
18656 hdrs="$define sys/types.h
18657 $d_socket sys/socket.h
18658 $i_niin netinet/in.h
18660 $i_unistd unistd.h"
18661 for xxx in "const char *" "char *"; do
18662 case "$netdb_name_type" in
18663 '') try="extern struct hostent *gethostbyname($xxx);"
18664 if ./protochk "$try" $hdrs; then
18665 echo "Your system accepts $xxx."
18666 netdb_name_type="$xxx"
18671 : In case none of those worked, prompt the user.
18672 case "$netdb_name_type" in
18673 '') rp='What is the type for the 1st argument to gethostbyname?'
18676 netdb_name_type=$ans
18680 *) : no gethostbyname, so pick harmless default
18681 netdb_name_type='char *'
18686 : check for type of 1st argument to getnetbyaddr.
18687 if test "X$netdb_net_type" = X ; then
18688 case "$d_getnbyaddr" in
18692 Checking to see what type of 1st argument is accepted by getnetbyaddr().
18694 hdrs="$define sys/types.h
18695 $d_socket sys/socket.h
18696 $i_niin netinet/in.h
18698 $i_unistd unistd.h"
18699 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
18700 case "$netdb_net_type" in
18701 '') try="extern struct netent *getnetbyaddr($xxx, int);"
18702 if ./protochk "$try" $hdrs; then
18703 echo "Your system accepts $xxx."
18704 netdb_net_type="$xxx"
18709 : In case none of those worked, prompt the user.
18710 case "$netdb_net_type" in
18711 '') rp='What is the type for the 1st argument to getnetbyaddr?'
18714 netdb_net_type=$ans
18718 *) : no getnetbyaddr, so pick harmless default
18719 netdb_net_type='long'
18723 : locate the preferred pager for this system
18730 [a-zA-Z]:/*) dflt=$pg;;
18734 [a-zA-Z]:/*) dflt=$more;;
18738 [a-zA-Z]:/*) dflt=$less;;
18741 '') dflt=/usr/ucb/more;;
18745 : Instruct ./getfile to trust the hinted or previous pager value,
18746 : even if it does not begin with a slash. For example, on os2,
18747 : pager might be cmd /c more. See comments in UU/getfile.
18752 rp='What pager is used on your system?'
18756 : see what type pids are declared as in the kernel
18757 rp="What is the type of process ids on this system?"
18758 set pid_t pidtype int stdio.h sys/types.h
18761 : see if ar generates random libraries by itself
18763 echo "Checking how to generate random libraries on your machine..." >&4
18764 echo 'int bar1() { return bar2(); }' > bar1.c
18765 echo 'int bar2() { return 2; }' > bar2.c
18767 #$i_stdlib I_STDLIB
18769 #include <stdlib.h>
18771 int main() { printf("%d\n", bar1()); exit(0); }
18773 $cc $ccflags -c bar1.c >/dev/null 2>&1
18774 $cc $ccflags -c bar2.c >/dev/null 2>&1
18775 $cc $ccflags -c foo.c >/dev/null 2>&1
18776 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
18777 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18778 $run ./foobar >/dev/null 2>&1; then
18779 echo "$ar appears to generate random libraries itself."
18782 elif $ar ts bar$_a >/dev/null 2>&1 &&
18783 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
18784 $run ./foobar >/dev/null 2>&1; then
18785 echo "a table of contents needs to be added with '$ar ts'."
18792 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
18793 $test -f $ranlib || ranlib=''
18796 if $test -n "$ranlib"; then
18797 echo "your system has '$ranlib'; we'll use that."
18800 echo "your system doesn't seem to support random libraries"
18801 echo "so we'll use lorder and tsort to order the libraries."
18808 : check for type of arguments to select.
18809 case "$selecttype" in
18810 '') case "$d_select" in
18814 Checking to see what type of arguments are accepted by select().
18816 hdrs="$define sys/types.h
18817 $i_systime sys/time.h
18818 $i_sysselct sys/select.h
18819 $d_socket sys/socket.h"
18820 : The first arg can be int, unsigned, or size_t
18821 : The last arg may or may not be 'const'
18823 : void pointer has been seen but using that
18824 : breaks the selectminbits test
18825 for xxx in 'fd_set *' 'int *'; do
18826 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
18827 for tmo in 'struct timeval *' 'const struct timeval *'; do
18829 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
18830 if ./protochk "$try" $hdrs; then
18831 echo "Your system accepts $xxx."
18840 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
18841 case "$d_fd_set" in
18842 $define) dflt="fd_set *" ;;
18851 *) : no select, so pick a harmless default
18858 : check for the select 'width'
18859 case "$selectminbits" in
18860 '') safebits=`expr $ptrsize \* 8`
18861 case "$d_select" in
18865 Checking to see on how many bits at a time your select() operates...
18868 #include <sys/types.h>
18870 #$i_systime I_SYS_TIME
18871 #$i_systimek I_SYS_TIME_KERNEL
18876 # ifdef I_SYS_TIME_KERNEL
18879 # include <sys/time.h>
18880 # ifdef I_SYS_TIME_KERNEL
18884 #$i_sysselct I_SYS_SELECT
18885 #ifdef I_SYS_SELECT
18886 #include <sys/select.h>
18888 #$d_socket HAS_SOCKET
18890 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
18893 #$i_stdlib I_STDLIB
18895 #include <stdlib.h>
18898 #define S sizeof(*(b))
18900 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
18901 #define NBITS (NBYTES * 8)
18903 char *s = malloc(NBYTES);
18912 fp = fopen("try.c", "r");
18918 b = ($selecttype)s;
18919 for (i = 0; i < NBITS; i++)
18923 select(fd + 1, b, 0, 0, &t);
18924 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
18926 printf("%d\n", i + 1);
18931 if eval $compile_ok; then
18932 selectminbits=`$run ./try`
18933 case "$selectminbits" in
18935 Cannot figure out on how many bits at a time your select() operates.
18936 I'll play safe and guess it is $safebits bits.
18938 selectminbits=$safebits
18939 bits="$safebits bits"
18942 *) bits="$selectminbits bits" ;;
18944 echo "Your select() operates on $bits at a time." >&4
18946 rp='What is the minimum number of bits your select() operates on?'
18947 case "$byteorder" in
18948 12345678) dflt=64 ;;
18954 selectminbits="$val"
18958 *) : no select, so pick a harmless default
18959 selectminbits=$safebits
18965 : Trace out the files included by signal.h, then look for SIGxxx names.
18966 : Remove SIGARRAYSIZE used by HPUX.
18967 : Remove SIGSTKSIZE used by Linux.
18968 : Remove SIGSTKSZ used by Posix.
18969 : Remove SIGTYP void lines used by OS2.
18970 : Some cpps, like os390, dont give the file name anywhere
18971 if [ "X$fieldn" = X ]; then
18972 : Just make some guesses. We check them later.
18973 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
18975 xxx=`echo '#include <signal.h>' |
18976 $cppstdin $cppminus $cppflags 2>/dev/null |
18977 $grep '^[ ]*#.*include' |
18978 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
18980 : Check this list of files to be sure we have parsed the cpp output ok.
18981 : This will also avoid potentially non-existent files, such
18984 for xx in $xxx /dev/null ; do
18985 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
18987 : If we have found no files, at least try signal.h
18988 case "$xxxfiles" in
18989 '') xxxfiles=`./findhdr signal.h` ;;
18992 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
18993 print substr($2, 4, 20)
18995 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
18996 print substr($3, 4, 20)
18998 : Append some common names just in case the awk scan failed.
18999 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
19000 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
19001 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
19002 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
19003 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
19005 : generate a few handy files for later
19006 $cat > signal.c <<EOCP
19007 #include <sys/types.h>
19008 #include <signal.h>
19009 #$i_stdlib I_STDLIB
19011 #include <stdlib.h>
19016 /* Strange style to avoid deeply-nested #if/#else/#endif */
19019 # define NSIG (_NSIG)
19025 # define NSIG (SIGMAX+1)
19031 # define NSIG (SIG_MAX+1)
19037 # define NSIG (MAXSIG+1)
19043 # define NSIG (MAX_SIG+1)
19048 # ifdef SIGARRAYSIZE
19049 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
19055 # define NSIG (_sys_nsig) /* Solaris 2.5 */
19059 /* Default to some arbitrary number that's big enough to get most
19060 of the common signals.
19066 printf("NSIG %d\n", NSIG);
19072 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
19074 printf "#ifdef SIG"; printf $1; printf "\n"
19075 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
19076 printf $1; printf ");\n"
19080 printf "#endif /* JUST_NSIG */\n";
19081 printf "exit(0);\n}\n";
19084 $cat >signal.awk <<'EOP'
19085 BEGIN { ndups = 0 }
19086 $1 ~ /^NSIG$/ { nsig = $2 }
19087 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
19088 if ($2 > maxsig) { maxsig = $2 }
19089 if (sig_name[$2]) {
19090 dup_name[ndups] = $1
19091 dup_num[ndups] = $2
19103 printf("NSIG %d\n", nsig);
19104 for (n = 1; n < nsig; n++) {
19106 printf("%s %d\n", sig_name[n], sig_num[n])
19109 printf("NUM%d %d\n", n, n)
19112 for (n = 0; n < ndups; n++) {
19113 printf("%s %d\n", dup_name[n], dup_num[n])
19117 $cat >signal_cmd <<EOS
19119 if $test -s signal.lst; then
19120 echo "Using your existing signal.lst file"
19125 $cat >>signal_cmd <<'EOS'
19128 if eval $compile_ok; then
19129 $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
19131 echo "(I can't seem be able to compile the whole test program)" >&4
19132 echo "(I'll try it in little pieces.)" >&4
19133 set signal -DJUST_NSIG
19134 if eval $compile_ok; then
19135 $run ./signal$_exe > signal.nsg
19138 echo "I can't seem to figure out how many signals you have." >&4
19139 echo "Guessing 50." >&4
19140 echo 'NSIG 50' > signal.nsg
19142 : Now look at all the signal names, one at a time.
19143 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
19144 $cat > signal.c <<EOCP
19145 #include <sys/types.h>
19146 #include <signal.h>
19149 printf("$xx %d\n", SIG${xx});
19154 if eval $compile; then
19155 echo "SIG${xx} found."
19156 $run ./signal$_exe >> signal.ls1
19158 echo "SIG${xx} NOT found."
19161 if $test -s signal.ls1; then
19162 $cat signal.nsg signal.ls1 |
19163 $sort -n | $uniq | $awk -f signal.awk >signal.lst
19167 if $test -s signal.lst; then
19170 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
19171 echo 'kill -l' >signal
19172 set X `csh -f <signal`
19176 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
19178 echo $@ | $tr ' ' $trnl | \
19179 $awk '{ printf "%s %d\n", $1, ++s; }
19180 END { printf "NSIG %d\n", ++s }' >signal.lst
19182 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
19184 chmod a+x signal_cmd
19185 $eunicefix signal_cmd
19187 : generate list of signal names
19189 case "$sig_name_init" in
19191 *) case "$sig_num_init" in
19192 ''|*,*) doinit=yes ;;
19197 echo "Generating a list of signal names and numbers..." >&4
19199 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
19200 sig_name=`$awk 'BEGIN { printf "ZERO " }
19201 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
19202 sig_num=`$awk 'BEGIN { printf "0 " }
19203 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
19204 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
19205 !/^NSIG/ { printf "\"%s\", ", $1 }
19206 END { printf "0\n" }' signal.lst`
19207 sig_num_init=`$awk 'BEGIN { printf "0, " }
19208 !/^NSIG/ { printf "%d, ", $2}
19209 END { printf "0\n"}' signal.lst`
19212 echo "The following $sig_count signals are available:"
19214 echo $sig_name | $awk \
19215 'BEGIN { linelen = 0 }
19217 for (i = 1; i <= NF; i++) {
19218 name = "SIG" $i " "
19219 linelen = linelen + length(name)
19220 if (linelen > 70) {
19222 linelen = length(name)
19228 sig_size=`echo $sig_name | awk '{print NF}'`
19229 $rm -f signal signal.c signal.awk signal.lst signal_cmd
19232 case "$sizetype" in
19233 *_t) zzz="$sizetype" ;;
19234 *) zzz="filesize" ;;
19236 echo "Checking the size of $zzz..." >&4
19238 #include <sys/types.h>
19240 #$i_stdlib I_STDLIB
19242 #include <stdlib.h>
19245 printf("%d\n", (int)sizeof($sizetype));
19250 if eval $compile_ok; then
19254 echo "(I can't execute the test program--guessing $sizesize.)" >&4
19257 echo "Your $zzz size is $sizesize bytes."
19262 echo "(I can't compile the test program--guessing $sizesize.)" >&4
19266 : check for socklen_t
19268 echo "Checking to see if you have socklen_t..." >&4
19270 #include <sys/types.h>
19271 #$d_socket HAS_SOCKET
19273 #include <sys/socket.h>
19275 int main() { socklen_t x = 16; }
19278 if eval $compile; then
19280 echo "You have socklen_t."
19283 echo "You do not have socklen_t."
19284 case "$sizetype" in
19285 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
19292 : see if this is a socks.h system
19293 set socks.h i_socks
19296 : check for type of the size argument to socket calls
19297 case "$d_socket" in
19301 Checking to see what type is the last argument of accept().
19304 case "$d_socklen_t" in
19305 "$define") yyy="$yyy socklen_t"
19307 yyy="$yyy $sizetype int long unsigned"
19308 for xxx in $yyy; do
19309 case "$socksizetype" in
19310 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
19311 case "$usesocks" in
19313 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
19314 echo "Your system accepts '$xxx *' for the last argument of accept()."
19315 socksizetype="$xxx"
19318 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
19319 echo "Your system accepts '$xxx *' for the last argument of accept()."
19320 socksizetype="$xxx"
19327 : In case none of those worked, prompt the user.
19328 case "$socksizetype" in
19329 '') rp='What is the type for socket address structure sizes?'
19336 *) : no sockets, so pick relatively harmless default
19341 : see what type is used for signed size_t
19342 set ssize_t ssizetype int stdio.h sys/types.h
19347 #$i_stdlib I_STDLIB
19349 #include <stdlib.h>
19351 #include <sys/types.h>
19352 #define Size_t $sizetype
19353 #define SSize_t $dflt
19356 if (sizeof(Size_t) == sizeof(SSize_t))
19358 else if (sizeof(Size_t) == sizeof(int))
19367 if eval $compile_ok && $run ./try > /dev/null; then
19368 ssizetype=`$run ./try`
19369 echo "I'll be using $ssizetype for functions returning a byte count." >&4
19372 Help! I can't compile and run the ssize_t test program: please enlighten me!
19373 (This is probably a misconfiguration in your system or libraries, and
19374 you really ought to fix it. Still, I'll try anyway.)
19376 I need a type that is the same size as $sizetype, but is guaranteed to
19377 be signed. Common values are ssize_t, int and long.
19380 rp="What signed type is the same size as $sizetype?"
19386 : see what type of char stdio uses.
19388 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
19389 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
19390 echo "Your stdio uses unsigned chars." >&4
19391 stdchar="unsigned char"
19393 echo "Your stdio uses signed chars." >&4
19400 : see what type uids are declared as in the kernel
19402 echo "Looking for the type for user ids returned by getuid()."
19403 set uid_t uidtype xxx stdio.h sys/types.h
19407 xxx=`./findhdr sys/user.h`
19408 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
19410 unsigned) dflt="$1 $2" ;;
19414 *) dflt="$uidtype";;
19417 uid_t) echo "uid_t found." ;;
19418 *) rp="What is the type for user ids returned by getuid()?"
19426 *_t) zzz="$uidtype" ;;
19429 echo "Checking the size of $zzz..." >&4
19431 #include <sys/types.h>
19433 #$i_stdlib I_STDLIB
19435 #include <stdlib.h>
19438 printf("%d\n", (int)sizeof($uidtype));
19443 if eval $compile_ok; then
19447 echo "(I can't execute the test program--guessing $uidsize.)" >&4
19450 echo "Your $zzz is $uidsize bytes long."
19455 echo "(I can't compile the test program--guessing $uidsize.)" >&4
19460 *_t) zzz="$uidtype" ;;
19463 echo "Checking the sign of $zzz..." >&4
19465 #include <sys/types.h>
19476 if eval $compile; then
19480 echo "(I can't execute the test program--guessing unsigned.)" >&4
19484 1) echo "Your $zzz is unsigned." ;;
19485 -1) echo "Your $zzz is signed." ;;
19491 echo "(I can't compile the test program--guessing unsigned.)" >&4
19497 $echo "Checking the format string to be used for uids..." >&4
19500 -1) if $test X"$uidsize" = X"$ivsize"; then
19501 uidformat="$ivdformat"
19503 if $test X"$uidsize" = X"$longsize"; then
19506 if $test X"$uidsize" = X"$intsize"; then
19509 if $test X"$uidsize" = X"$shortsize"; then
19516 *) if $test X"$uidsize" = X"$uvsize"; then
19517 uidformat="$uvuformat"
19519 if $test X"$uidsize" = X"$longsize"; then
19522 if $test X"$uidsize" = X"$intsize"; then
19525 if $test X"$uidsize" = X"$shortsize"; then
19535 case "$usesitecustomize" in
19536 $define|true|[Yy]*)
19537 usesitecustomize="$define"
19540 usesitecustomize="$undef"
19544 : determine compiler compiler
19553 if $test -f "$byacc$_exe"; then
19555 comp="byacc or $comp"
19557 if $test -f "$bison$_exe"; then
19558 comp="$comp or bison -y"
19560 rp="Which compiler compiler ($comp) shall I use?"
19569 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
19575 : see if this is a fp.h system
19579 : see if this is a fp_class.h system
19580 set fp_class.h i_fp_class
19583 : see if this is a ieeefp.h system
19584 case "$i_ieeefp" in
19585 '' ) set ieeefp.h i_ieeefp
19590 : see if this is a libutil.h system
19591 set libutil.h i_libutil
19594 : see if mach cthreads are available
19595 if test "X$usethreads" = "X$define"; then
19596 set mach/cthreads.h i_machcthr
19599 i_machcthr="$undef"
19604 : see if this is a mntent.h system
19605 set mntent.h i_mntent
19608 : see if ndbm.h is available
19614 # Some Linux distributions such as RedHat 7.1 put the
19615 # ndbm.h header in /usr/include/gdbm/ndbm.h.
19616 if $test -f /usr/include/gdbm/ndbm.h; then
19617 echo '<gdbm/ndbm.h> found.'
19618 ccflags="$ccflags -I/usr/include/gdbm"
19619 cppflags="$cppflags -I/usr/include/gdbm"
19627 : see if dbm_open exists
19628 set dbm_open d_dbm_open
19630 case "$d_dbm_open" in
19633 echo "We won't be including <ndbm.h>"
19642 : see if net/errno.h is available
19644 set net/errno.h val
19647 : Unfortunately, it causes problems on some systems. Arrgh.
19650 cat > try.c <<'EOM'
19653 #include <net/errno.h>
19659 if $cc $ccflags -c try.c >/dev/null 2>&1; then
19660 echo "We'll be including <net/errno.h>." >&4
19662 echo "We won't be including <net/errno.h>." >&4
19671 : see if netinet/tcp.h is available
19672 set netinet/tcp.h i_netinettcp
19675 : see if this is a poll.h system
19679 : see if this is a prot.h system
19684 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
19685 $cat <<'EOSH' > Cppsym.know
19686 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
19687 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
19688 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
19689 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
19690 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
19691 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
19692 bull c cadmus clipper CMU COFF COMPILER_VERSION
19693 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
19694 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
19695 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
19696 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
19698 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
19699 H3050R H3050RX hbullx20 hcx host_mips
19700 hp200 hp300 hp700 HP700 hp800 hp9000
19701 hp9000s200 hp9000s300 hp9000s400 hp9000s500
19702 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
19703 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
19704 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
19705 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
19706 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
19707 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
19708 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
19709 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
19710 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
19711 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
19712 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
19713 MATH_HAS_NO_SIDE_EFFECTS
19714 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
19715 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
19716 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
19717 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
19718 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
19719 NetBSD news1500 news1700 news1800 news1900 news3700
19720 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
19721 ns32016 ns32332 ns32k nsc32000
19722 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
19723 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
19724 pc532 pdp11 PGC PIC plexus PORTAR posix
19725 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
19726 POSIX_C_SOURCE POSIX_SOURCE POWER
19727 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
19728 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
19729 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
19730 sony sony_news sonyrisc sparc sparclite spectrum
19731 stardent stdc STDC_EXT stratos sun sun3 sun386
19732 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
19733 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
19734 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
19735 sysV68 sysV88 Tek4132 Tek4300 titan
19736 TM3200 TM5400 TM5600
19737 tower tower32 tower32_200 tower32_600 tower32_700
19738 tower32_800 tower32_850 tss
19739 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
19740 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
19741 unix UNIX95 UNIX99 unixpc unos
19742 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
19743 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
19744 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
19746 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
19747 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
19748 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
19751 # Maybe put other stuff here too.
19752 cat <<EOSH >>Cppsym.know
19755 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
19756 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
19757 $cat Cppsym.know > Cppsym.c
19758 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
19759 $rm -f Cppsym.a Cppsym.b Cppsym.c
19760 cat <<EOSH > Cppsym
19762 if $test \$# -gt 0; then
19763 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
19764 if $test -s Cppsym.got; then
19771 $tr " " "$trnl" | ./Cppsym.try
19777 cat <<EOSH > Cppsym.try
19779 cat <<'EOCP' > try.c
19785 cat <<'EOSH' >> Cppsym.try
19787 printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19788 printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19789 printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19790 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
19792 echo 'return 0;}' >> try.c
19794 cat <<EOSH >> Cppsym.try
19796 case "$osname-$gccversion" in
19797 irix-) ccflags="\$ccflags -woff 1178" ;;
19798 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
19800 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
19802 chmod +x Cppsym.try
19803 $eunicefix Cppsym.try
19804 ./Cppsym < Cppsym.know > Cppsym.true
19805 : now check the C compiler for additional symbols
19806 postprocess_cc_v=''
19808 aix) postprocess_cc_v="|$tr , ' '" ;;
19815 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
19818 -D*) echo "\$i" | $sed 's/^-D//';;
19819 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
19824 postprocess_cc_v=''
19827 ./ccsym > ccsym1.raw
19828 if $test -s ccsym1.raw; then
19829 $sort ccsym1.raw | $uniq >ccsym.raw
19831 mv ccsym1.raw ccsym.raw
19834 $awk '/\=/ { print $0; next }
19835 { print $0"=1" }' ccsym.raw >ccsym.list
19836 $awk '/\=/ { print $0; next }
19837 { print $0"=1" }' Cppsym.true >ccsym.true
19838 $comm -13 ccsym.true ccsym.list >ccsym.own
19839 $comm -12 ccsym.true ccsym.list >ccsym.com
19840 $comm -23 ccsym.true ccsym.list >ccsym.cpp
19842 if $test -z ccsym.raw; then
19843 echo "Your C compiler doesn't seem to define any symbols!" >&4
19845 echo "However, your C preprocessor defines the following symbols:"
19848 cppsymbols=`$cat Cppsym.true`
19849 cppsymbols=`echo $cppsymbols`
19850 cppccsymbols="$cppsymbols"
19852 if $test -s ccsym.com; then
19853 echo "Your C compiler and pre-processor define these symbols:"
19854 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
19857 cppccsymbols=`$cat ccsym.com`
19858 cppccsymbols=`echo $cppccsymbols`
19859 $test "$silent" || sleep 1
19861 if $test -s ccsym.cpp; then
19862 $test "$also" && echo " "
19863 echo "Your C pre-processor ${also}defines the following symbols:"
19864 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
19866 cppsymbols=`$cat ccsym.cpp`
19867 cppsymbols=`echo $cppsymbols`
19868 $test "$silent" || sleep 1
19870 if $test -s ccsym.own; then
19871 $test "$also" && echo " "
19872 echo "Your C compiler ${also}defines the following cpp symbols:"
19873 $sed -e 's/\(..*\)=1/\1/' ccsym.own
19874 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
19875 ccsymbols=`$cat ccsym.own`
19876 ccsymbols=`echo $ccsymbols`
19877 $test "$silent" || sleep 1
19881 : see if this is a termio system
19885 if $test `./findhdr termios.h`; then
19886 set tcsetattr i_termios
19892 "$define") echo "You have POSIX termios.h... good!" >&4;;
19893 *) if ./Cppsym pyr; then
19894 case "`/bin/universe`" in
19895 ucb) if $test `./findhdr sgtty.h`; then
19897 echo "<sgtty.h> found." >&4
19899 echo "System is pyramid with BSD universe."
19900 echo "<sgtty.h> not found--you could have problems." >&4
19902 *) if $test `./findhdr termio.h`; then
19904 echo "<termio.h> found." >&4
19906 echo "System is pyramid with USG universe."
19907 echo "<termio.h> not found--you could have problems." >&4
19911 if $test `./findhdr termio.h`; then
19912 echo "<termio.h> found." >&4
19914 elif $test `./findhdr sgtty.h`; then
19915 echo "<sgtty.h> found." >&4
19918 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
19921 if $test `./findhdr sgtty.h`; then
19922 echo "<sgtty.h> found." >&4
19924 elif $test `./findhdr termio.h`; then
19925 echo "<termio.h> found." >&4
19928 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
19932 set i_termio; eval $setvar
19933 val=$val2; set i_sgtty; eval $setvar
19934 val=$val3; set i_termios; eval $setvar
19936 : see if stddef is available
19937 set stddef.h i_stddef
19940 : see if this is a sunmath.h system
19941 set sunmath.h i_sunmath
19944 : see if sys/access.h is available
19945 set sys/access.h i_sysaccess
19948 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
19949 set sys/filio.h i_sysfilio
19952 if $test `./findhdr sys/ioctl.h`; then
19954 echo '<sys/ioctl.h> found.' >&4
19957 if $test $i_sysfilio = "$define"; then
19958 echo '<sys/ioctl.h> NOT found.' >&4
19960 $test $i_sgtty = "$define" && xxx="sgtty.h"
19961 $test $i_termio = "$define" && xxx="termio.h"
19962 $test $i_termios = "$define" && xxx="termios.h"
19963 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
19969 : see if socket ioctl defs are in sys/sockio.h
19971 xxx=`./findhdr sys/sockio.h`
19972 if $test "$xxx"; then
19973 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
19975 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
19978 echo "No socket ioctls found in <sys/sockio.h>." >&4
19983 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
19990 : see if this is a syslog.h system
19991 set syslog.h i_syslog
19995 : see if this is a sys/mode.h system
19996 set sys/mode.h i_sysmode
19999 : see if sys/resource.h has to be included
20000 set sys/resource.h i_sysresrc
20003 : see if sys/security.h is available
20004 set sys/security.h i_syssecrt
20007 : see if this is a sys/statvfs.h system
20008 set sys/statvfs.h i_sysstatvfs
20011 : see if this is a sys/un.h system
20012 set sys/un.h i_sysun
20016 : see if this is a sys/utsname.h system
20017 set sys/utsname.h i_sysutsname
20020 : see if this is a syswait system
20021 set sys/wait.h i_syswait
20024 : see if this is a ustat.h system
20025 set ustat.h i_ustat
20028 : see if this is an utime system
20029 set utime.h i_utime
20032 : see if this is a values.h system
20033 set values.h i_values
20036 : see if this is a vfork system
20039 set vfork.h i_vfork
20047 : see if gdbm.h is available
20052 : see if gdbm_open exists
20053 set gdbm_open d_gdbm_open
20055 case "$d_gdbm_open" in
20058 echo "We won't be including <gdbm.h>"
20068 echo "Looking for extensions..." >&4
20069 : If we are using the old config.sh, known_extensions may contain
20070 : old or inaccurate or duplicate values.
20071 known_extensions=''
20072 nonxs_extensions=''
20073 : We do not use find because it might not be available.
20074 : We do not just use MANIFEST because the user may have dropped
20075 : some additional extensions into the source tree and expect them
20078 : Function to recursively find available extensions, ignoring DynaLoader
20079 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
20083 DynaLoader|dynaload) ;;
20085 if $test -f $xxx/$xxx.xs; then
20086 known_extensions="$known_extensions $1$xxx";
20087 elif $test -f $xxx/Makefile.PL; then
20088 nonxs_extensions="$nonxs_extensions $1$xxx";
20090 if $test -d $xxx -a $# -lt 10; then
20093 eval $find_extensions;
20105 eval $find_extensions
20106 # Special case: Add in threads/shared since it is not picked up by the
20107 # recursive find above (and adding in general recursive finding breaks
20108 # SDBM_File/sdbm). A.D. 10/25/2001.
20109 known_extensions="$known_extensions threads/shared"
20110 set X $nonxs_extensions
20112 nonxs_extensions="$*"
20113 set X $known_extensions
20115 known_extensions="$*"
20118 : Now see which are supported on this system.
20120 for xxx in $known_extensions ; do
20124 $define) avail_ext="$avail_ext $xxx" ;;
20127 GDBM_File|gdbm_fil)
20129 $define) avail_ext="$avail_ext $xxx" ;;
20132 I18N/Langinfo|i18n_lan)
20133 case "$i_langinfo$d_nl_langinfo" in
20134 $define$define) avail_ext="$avail_ext $xxx" ;;
20137 NDBM_File|ndbm_fil)
20140 case "$osname-$use64bitint" in
20143 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
20146 *) avail_ext="$avail_ext $xxx" ;;
20151 ODBM_File|odbm_fil)
20152 case "${i_dbm}${i_rpcsvcdbm}" in
20154 case "$osname-$use64bitint" in
20157 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
20160 *) avail_ext="$avail_ext $xxx" ;;
20166 case "$useposix" in
20167 true|define|y) avail_ext="$avail_ext $xxx" ;;
20171 case "$useopcode" in
20172 true|define|y) avail_ext="$avail_ext $xxx" ;;
20176 case "$d_socket" in
20179 beos) ;; # not unless BONE
20180 *) avail_ext="$avail_ext $xxx" ;;
20185 Sys/Syslog|sys/syslog)
20186 : XXX syslog requires socket
20187 case "$d_socket" in
20188 true|$define|y) avail_ext="$avail_ext $xxx" ;;
20192 case "$usethreads" in
20194 case "$useithreads" in
20195 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
20199 XS/APItest|xs/apitest)
20200 # This is just for testing. Skip it unless we have dynamic loading.
20203 $define) avail_ext="$avail_ext $xxx" ;;
20206 XS/Typemap|xs/typemap)
20207 # This is just for testing. Skip it unless we have dynamic loading.
20209 $define) avail_ext="$avail_ext $xxx" ;;
20212 threads|threads/shared)
20213 # threads and threads::shared are special cases.
20214 # To stop people from asking "Perl 5.8.0 was supposed
20215 # to have this new fancy threads implementation but my
20216 # perl doesn't have it" and from people trying to
20217 # (re)install the threads module using CPAN.pm and
20218 # CPAN.pm then offering to reinstall Perl 5.8.0,
20219 # the threads.pm and threads/shared.pm will always be
20220 # there, croaking informatively ("you need to rebuild
20221 # all of Perl with threads, sorry") when threads haven't
20222 # been compiled in.
20224 avail_ext="$avail_ext $xxx"
20227 : XXX Do we need a useipcsysv variable here
20228 case "${d_msg}${d_sem}${d_shm}" in
20229 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
20232 *) avail_ext="$avail_ext $xxx"
20241 case "$onlyextensions" in
20243 *) keepextensions=''
20244 echo "You have requested that only certains extensions be included..." >&4
20245 for i in $onlyextensions; do
20246 case " $avail_ext " in
20248 echo "Keeping extension $i."
20249 keepextensions="$keepextensions $i"
20251 *) echo "Ignoring extension $i." ;;
20254 avail_ext="$keepextensions"
20258 case "$noextensions" in
20260 *) keepextensions=''
20261 echo "You have requested that certain extensions be ignored..." >&4
20262 for i in $avail_ext; do
20263 case " $noextensions " in
20264 *" $i "*) echo "Ignoring extension $i." ;;
20265 *) echo "Keeping extension $i.";
20266 keepextensions="$keepextensions $i"
20270 avail_ext="$keepextensions"
20274 : Now see which nonxs extensions are supported on this system.
20275 : For now assume all are.
20277 for xxx in $nonxs_extensions ; do
20279 *) nonxs_ext="$nonxs_ext $xxx"
20291 A number of extensions are supplied with $package. You may choose to
20292 compile these extensions for dynamic loading (the default), compile
20293 them into the $package executable (static loading), or not include
20294 them at all. Answer "none" to include no extensions.
20295 Note that DynaLoader is always built and need not be mentioned here.
20298 case "$dynamic_ext" in
20300 : Exclude those listed in static_ext
20302 for xxx in $avail_ext; do
20303 case " $static_ext " in
20305 *) dflt="$dflt $xxx" ;;
20312 *) dflt="$dynamic_ext"
20313 # Perhaps we are reusing an old out-of-date config.sh.
20316 if test X"$dynamic_ext" != X"$avail_ext"; then
20318 NOTICE: Your previous config.sh list may be incorrect.
20319 The extensions now available to you are
20321 but the default list from your previous config.sh is
20333 rp="What extensions do you wish to load dynamically?"
20336 none) dynamic_ext=' ' ;;
20337 *) dynamic_ext="$ans" ;;
20340 case "$static_ext" in
20342 : Exclude those already listed in dynamic linking
20344 for xxx in $avail_ext; do
20345 case " $dynamic_ext " in
20347 *) dflt="$dflt $xxx" ;;
20354 *) dflt="$static_ext"
20361 rp="What extensions do you wish to load statically?"
20364 none) static_ext=' ' ;;
20365 *) static_ext="$ans" ;;
20370 A number of extensions are supplied with $package. Answer "none"
20371 to include no extensions.
20372 Note that DynaLoader is always built and need not be mentioned here.
20375 case "$static_ext" in
20376 '') dflt="$avail_ext" ;;
20377 *) dflt="$static_ext"
20378 # Perhaps we are reusing an old out-of-date config.sh.
20381 if test X"$static_ext" != X"$avail_ext"; then
20383 NOTICE: Your previous config.sh list may be incorrect.
20384 The extensions now available to you are
20386 but the default list from your previous config.sh is
20395 : Exclude those that are not xs extensions
20399 rp="What extensions do you wish to include?"
20402 none) static_ext=' ' ;;
20403 *) static_ext="$ans" ;;
20408 # Encode is a special case. If we are building Encode as a static
20409 # extension, we need to explicitly list its subextensions as well.
20410 # For other nested extensions, this is handled automatically by
20411 # the appropriate Makefile.PL.
20412 case " $static_ext " in
20413 *" Encode "*) # Add the subextensions of Encode
20415 for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
20416 static_ext="$static_ext Encode/$xxx"
20422 set X $dynamic_ext $static_ext $nonxs_ext
20426 # Sanity check: We require an extension suitable for use with
20427 # AnyDBM_File, as well as Fcntl and IO. (Failure to have these
20428 # should show up as failures in the test suite, but it's helpful to
20429 # catch them now.) The 'extensions' list is normally sorted
20430 # alphabetically, so we need to accept either
20431 # DB_File ... Fcntl ... IO ....
20432 # or something like
20433 # Fcntl ... NDBM_File ... IO ....
20434 case " $extensions" in
20435 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
20436 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
20437 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
20438 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
20439 echo "WARNING: The Perl you are building will be quite crippled." >& 4
20443 : Remove libraries needed only for extensions
20444 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
20445 : The exception is SunOS 4.x, which needs them.
20446 case "${osname}X${osvers}" in
20450 *) case "$usedl" in
20451 $define|true|[yY]*)
20452 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
20456 *) perllibs="$libs"
20462 : Remove build directory name from cppstdin so it can be used from
20463 : either the present location or the final installed location.
20465 : Get out of the UU directory to get correct path name.
20467 case "$cppstdin" in
20469 echo "Stripping down cppstdin path name"
20475 : end of configuration questions
20477 echo "End of configuration questions."
20480 : back to where it started
20481 if test -d ../UU; then
20485 : configuration may be patched via a 'config.arch' file
20486 if $test -f config.arch; then
20487 echo "I see a config.arch file, loading it."
20491 : configuration may be patched via a 'config.over' file
20492 if $test -f config.over; then
20495 rp='I see a config.over file. Do you wish to load it?'
20498 n*) echo "OK, I'll ignore it.";;
20500 echo "Configuration override changes have been loaded."
20505 : in case they want portability, strip down executable paths
20506 case "$d_portable" in
20509 echo "Stripping down executable paths..." >&4
20510 for file in $loclist $trylist; do
20512 eval $file=`basename $temp`
20517 : create config.sh file
20519 echo "Creating config.sh..." >&4
20520 $spitshell <<EOT >config.sh
20523 # This file was produced by running the Configure script. It holds all the
20524 # definitions figured out by Configure. Should you modify one of these values,
20525 # do not forget to propagate your changes by running "Configure -der". You may
20526 # instead choose to run each of the .SH files by yourself, or "Configure -S".
20529 # Package name : $package
20530 # Source directory : $src
20531 # Configuration time: $cf_time
20532 # Configured by : $cf_by
20533 # Target system : $myuname
20543 Revision='$Revision'
20551 alignbytes='$alignbytes'
20552 ansi2knr='$ansi2knr'
20553 aphostname='$aphostname'
20554 api_revision='$api_revision'
20555 api_subversion='$api_subversion'
20556 api_version='$api_version'
20557 api_versionstring='$api_versionstring'
20560 archlibexp='$archlibexp'
20561 archname64='$archname64'
20562 archname='$archname'
20563 archobjs='$archobjs'
20564 asctime_r_proto='$asctime_r_proto'
20572 byteorder='$byteorder'
20574 castflags='$castflags'
20577 cccdlflags='$cccdlflags'
20578 ccdlflags='$ccdlflags'
20580 ccflags_uselargefiles='$ccflags_uselargefiles'
20582 ccsymbols='$ccsymbols'
20583 ccversion='$ccversion'
20585 cf_email='$cf_email'
20587 charsize='$charsize'
20591 clocktype='$clocktype'
20593 compress='$compress'
20594 contains='$contains'
20598 cpp_stuff='$cpp_stuff'
20599 cppccsymbols='$cppccsymbols'
20600 cppflags='$cppflags'
20602 cppminus='$cppminus'
20604 cppstdin='$cppstdin'
20605 cppsymbols='$cppsymbols'
20606 crypt_r_proto='$crypt_r_proto'
20607 cryptlib='$cryptlib'
20609 ctermid_r_proto='$ctermid_r_proto'
20610 ctime_r_proto='$ctime_r_proto'
20611 d_Gconvert='$d_Gconvert'
20612 d_PRIEUldbl='$d_PRIEUldbl'
20613 d_PRIFUldbl='$d_PRIFUldbl'
20614 d_PRIGUldbl='$d_PRIGUldbl'
20615 d_PRIXU64='$d_PRIXU64'
20616 d_PRId64='$d_PRId64'
20617 d_PRIeldbl='$d_PRIeldbl'
20618 d_PRIfldbl='$d_PRIfldbl'
20619 d_PRIgldbl='$d_PRIgldbl'
20620 d_PRIi64='$d_PRIi64'
20621 d_PRIo64='$d_PRIo64'
20622 d_PRIu64='$d_PRIu64'
20623 d_PRIx64='$d_PRIx64'
20624 d_SCNfldbl='$d_SCNfldbl'
20625 d__fwalk='$d__fwalk'
20626 d_access='$d_access'
20627 d_accessx='$d_accessx'
20630 d_archlib='$d_archlib'
20631 d_asctime_r='$d_asctime_r'
20634 d_attribut='$d_attribut'
20638 d_bsdgetpgrp='$d_bsdgetpgrp'
20639 d_bsdsetpgrp='$d_bsdsetpgrp'
20641 d_casti32='$d_casti32'
20642 d_castneg='$d_castneg'
20643 d_charvspr='$d_charvspr'
20645 d_chroot='$d_chroot'
20646 d_chsize='$d_chsize'
20648 d_closedir='$d_closedir'
20649 d_cmsghdr_s='$d_cmsghdr_s'
20651 d_copysignl='$d_copysignl'
20653 d_crypt_r='$d_crypt_r'
20655 d_ctermid_r='$d_ctermid_r'
20656 d_ctime_r='$d_ctime_r'
20657 d_cuserid='$d_cuserid'
20658 d_dbl_dig='$d_dbl_dig'
20659 d_dbminitproto='$d_dbminitproto'
20660 d_difftime='$d_difftime'
20662 d_dirnamlen='$d_dirnamlen'
20663 d_dlerror='$d_dlerror'
20664 d_dlopen='$d_dlopen'
20665 d_dlsymun='$d_dlsymun'
20666 d_dosuid='$d_dosuid'
20667 d_drand48_r='$d_drand48_r'
20668 d_drand48proto='$d_drand48proto'
20670 d_eaccess='$d_eaccess'
20671 d_endgrent='$d_endgrent'
20672 d_endgrent_r='$d_endgrent_r'
20673 d_endhent='$d_endhent'
20674 d_endhostent_r='$d_endhostent_r'
20675 d_endnent='$d_endnent'
20676 d_endnetent_r='$d_endnetent_r'
20677 d_endpent='$d_endpent'
20678 d_endprotoent_r='$d_endprotoent_r'
20679 d_endpwent='$d_endpwent'
20680 d_endpwent_r='$d_endpwent_r'
20681 d_endsent='$d_endsent'
20682 d_endservent_r='$d_endservent_r'
20683 d_eofnblk='$d_eofnblk'
20684 d_eunice='$d_eunice'
20685 d_faststdio='$d_faststdio'
20686 d_fchdir='$d_fchdir'
20687 d_fchmod='$d_fchmod'
20688 d_fchown='$d_fchown'
20690 d_fcntl_can_lock='$d_fcntl_can_lock'
20691 d_fd_macros='$d_fd_macros'
20692 d_fd_set='$d_fd_set'
20693 d_fds_bits='$d_fds_bits'
20694 d_fgetpos='$d_fgetpos'
20695 d_finite='$d_finite'
20696 d_finitel='$d_finitel'
20697 d_flexfnam='$d_flexfnam'
20699 d_flockproto='$d_flockproto'
20701 d_fp_class='$d_fp_class'
20702 d_fpathconf='$d_fpathconf'
20703 d_fpclass='$d_fpclass'
20704 d_fpclassify='$d_fpclassify'
20705 d_fpclassl='$d_fpclassl'
20706 d_fpos64_t='$d_fpos64_t'
20707 d_frexpl='$d_frexpl'
20708 d_fs_data_s='$d_fs_data_s'
20709 d_fseeko='$d_fseeko'
20710 d_fsetpos='$d_fsetpos'
20711 d_fstatfs='$d_fstatfs'
20712 d_fstatvfs='$d_fstatvfs'
20714 d_ftello='$d_ftello'
20716 d_getcwd='$d_getcwd'
20717 d_getespwnam='$d_getespwnam'
20718 d_getfsstat='$d_getfsstat'
20719 d_getgrent='$d_getgrent'
20720 d_getgrent_r='$d_getgrent_r'
20721 d_getgrgid_r='$d_getgrgid_r'
20722 d_getgrnam_r='$d_getgrnam_r'
20723 d_getgrps='$d_getgrps'
20724 d_gethbyaddr='$d_gethbyaddr'
20725 d_gethbyname='$d_gethbyname'
20726 d_gethent='$d_gethent'
20727 d_gethname='$d_gethname'
20728 d_gethostbyaddr_r='$d_gethostbyaddr_r'
20729 d_gethostbyname_r='$d_gethostbyname_r'
20730 d_gethostent_r='$d_gethostent_r'
20731 d_gethostprotos='$d_gethostprotos'
20732 d_getitimer='$d_getitimer'
20733 d_getlogin='$d_getlogin'
20734 d_getlogin_r='$d_getlogin_r'
20735 d_getmnt='$d_getmnt'
20736 d_getmntent='$d_getmntent'
20737 d_getnbyaddr='$d_getnbyaddr'
20738 d_getnbyname='$d_getnbyname'
20739 d_getnent='$d_getnent'
20740 d_getnetbyaddr_r='$d_getnetbyaddr_r'
20741 d_getnetbyname_r='$d_getnetbyname_r'
20742 d_getnetent_r='$d_getnetent_r'
20743 d_getnetprotos='$d_getnetprotos'
20744 d_getpagsz='$d_getpagsz'
20745 d_getpbyname='$d_getpbyname'
20746 d_getpbynumber='$d_getpbynumber'
20747 d_getpent='$d_getpent'
20748 d_getpgid='$d_getpgid'
20749 d_getpgrp2='$d_getpgrp2'
20750 d_getpgrp='$d_getpgrp'
20751 d_getppid='$d_getppid'
20752 d_getprior='$d_getprior'
20753 d_getprotobyname_r='$d_getprotobyname_r'
20754 d_getprotobynumber_r='$d_getprotobynumber_r'
20755 d_getprotoent_r='$d_getprotoent_r'
20756 d_getprotoprotos='$d_getprotoprotos'
20757 d_getprpwnam='$d_getprpwnam'
20758 d_getpwent='$d_getpwent'
20759 d_getpwent_r='$d_getpwent_r'
20760 d_getpwnam_r='$d_getpwnam_r'
20761 d_getpwuid_r='$d_getpwuid_r'
20762 d_getsbyname='$d_getsbyname'
20763 d_getsbyport='$d_getsbyport'
20764 d_getsent='$d_getsent'
20765 d_getservbyname_r='$d_getservbyname_r'
20766 d_getservbyport_r='$d_getservbyport_r'
20767 d_getservent_r='$d_getservent_r'
20768 d_getservprotos='$d_getservprotos'
20769 d_getspnam='$d_getspnam'
20770 d_getspnam_r='$d_getspnam_r'
20771 d_gettimeod='$d_gettimeod'
20772 d_gmtime_r='$d_gmtime_r'
20773 d_gnulibc='$d_gnulibc'
20774 d_grpasswd='$d_grpasswd'
20775 d_hasmntopt='$d_hasmntopt'
20777 d_ilogbl='$d_ilogbl'
20779 d_inetaton='$d_inetaton'
20780 d_int64_t='$d_int64_t'
20781 d_isascii='$d_isascii'
20782 d_isfinite='$d_isfinite'
20785 d_isnanl='$d_isnanl'
20786 d_killpg='$d_killpg'
20787 d_lchown='$d_lchown'
20788 d_ldbl_dig='$d_ldbl_dig'
20789 d_libm_lib_version='$d_libm_lib_version'
20791 d_localtime_r='$d_localtime_r'
20792 d_locconv='$d_locconv'
20794 d_longdbl='$d_longdbl'
20795 d_longlong='$d_longlong'
20796 d_lseekproto='$d_lseekproto'
20798 d_madvise='$d_madvise'
20800 d_mbstowcs='$d_mbstowcs'
20801 d_mbtowc='$d_mbtowc'
20802 d_memchr='$d_memchr'
20803 d_memcmp='$d_memcmp'
20804 d_memcpy='$d_memcpy'
20805 d_memmove='$d_memmove'
20806 d_memset='$d_memset'
20808 d_mkdtemp='$d_mkdtemp'
20809 d_mkfifo='$d_mkfifo'
20810 d_mkstemp='$d_mkstemp'
20811 d_mkstemps='$d_mkstemps'
20812 d_mktime='$d_mktime'
20815 d_modfl_pow32_bug='$d_modfl_pow32_bug'
20816 d_modflproto='$d_modflproto'
20817 d_mprotect='$d_mprotect'
20819 d_msg_ctrunc='$d_msg_ctrunc'
20820 d_msg_dontroute='$d_msg_dontroute'
20821 d_msg_oob='$d_msg_oob'
20822 d_msg_peek='$d_msg_peek'
20823 d_msg_proxy='$d_msg_proxy'
20824 d_msgctl='$d_msgctl'
20825 d_msgget='$d_msgget'
20826 d_msghdr_s='$d_msghdr_s'
20827 d_msgrcv='$d_msgrcv'
20828 d_msgsnd='$d_msgsnd'
20830 d_munmap='$d_munmap'
20831 d_mymalloc='$d_mymalloc'
20833 d_nl_langinfo='$d_nl_langinfo'
20834 d_nv_preserves_uv='$d_nv_preserves_uv'
20835 d_off64_t='$d_off64_t'
20836 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
20837 d_oldpthreads='$d_oldpthreads'
20838 d_oldsock='$d_oldsock'
20840 d_pathconf='$d_pathconf'
20842 d_perl_otherlibdirs='$d_perl_otherlibdirs'
20843 d_phostname='$d_phostname'
20846 d_portable='$d_portable'
20847 d_procselfexe='$d_procselfexe'
20848 d_pthread_atfork='$d_pthread_atfork'
20849 d_pthread_attr_setscope='$d_pthread_attr_setscope'
20850 d_pthread_yield='$d_pthread_yield'
20852 d_pwchange='$d_pwchange'
20853 d_pwclass='$d_pwclass'
20854 d_pwcomment='$d_pwcomment'
20855 d_pwexpire='$d_pwexpire'
20856 d_pwgecos='$d_pwgecos'
20857 d_pwpasswd='$d_pwpasswd'
20858 d_pwquota='$d_pwquota'
20861 d_random_r='$d_random_r'
20862 d_readdir64_r='$d_readdir64_r'
20863 d_readdir='$d_readdir'
20864 d_readdir_r='$d_readdir_r'
20865 d_readlink='$d_readlink'
20867 d_recvmsg='$d_recvmsg'
20868 d_rename='$d_rename'
20869 d_rewinddir='$d_rewinddir'
20871 d_safebcpy='$d_safebcpy'
20872 d_safemcpy='$d_safemcpy'
20873 d_sanemcmp='$d_sanemcmp'
20874 d_sbrkproto='$d_sbrkproto'
20875 d_scalbnl='$d_scalbnl'
20876 d_sched_yield='$d_sched_yield'
20877 d_scm_rights='$d_scm_rights'
20878 d_seekdir='$d_seekdir'
20879 d_select='$d_select'
20881 d_semctl='$d_semctl'
20882 d_semctl_semid_ds='$d_semctl_semid_ds'
20883 d_semctl_semun='$d_semctl_semun'
20884 d_semget='$d_semget'
20886 d_sendmsg='$d_sendmsg'
20887 d_setegid='$d_setegid'
20888 d_seteuid='$d_seteuid'
20889 d_setgrent='$d_setgrent'
20890 d_setgrent_r='$d_setgrent_r'
20891 d_setgrps='$d_setgrps'
20892 d_sethent='$d_sethent'
20893 d_sethostent_r='$d_sethostent_r'
20894 d_setitimer='$d_setitimer'
20895 d_setlinebuf='$d_setlinebuf'
20896 d_setlocale='$d_setlocale'
20897 d_setlocale_r='$d_setlocale_r'
20898 d_setnent='$d_setnent'
20899 d_setnetent_r='$d_setnetent_r'
20900 d_setpent='$d_setpent'
20901 d_setpgid='$d_setpgid'
20902 d_setpgrp2='$d_setpgrp2'
20903 d_setpgrp='$d_setpgrp'
20904 d_setprior='$d_setprior'
20905 d_setproctitle='$d_setproctitle'
20906 d_setprotoent_r='$d_setprotoent_r'
20907 d_setpwent='$d_setpwent'
20908 d_setpwent_r='$d_setpwent_r'
20909 d_setregid='$d_setregid'
20910 d_setresgid='$d_setresgid'
20911 d_setresuid='$d_setresuid'
20912 d_setreuid='$d_setreuid'
20913 d_setrgid='$d_setrgid'
20914 d_setruid='$d_setruid'
20915 d_setsent='$d_setsent'
20916 d_setservent_r='$d_setservent_r'
20917 d_setsid='$d_setsid'
20918 d_setvbuf='$d_setvbuf'
20922 d_shmatprototype='$d_shmatprototype'
20923 d_shmctl='$d_shmctl'
20925 d_shmget='$d_shmget'
20926 d_sigaction='$d_sigaction'
20927 d_sigprocmask='$d_sigprocmask'
20928 d_sigsetjmp='$d_sigsetjmp'
20929 d_sockatmark='$d_sockatmark'
20930 d_sockatmarkproto='$d_sockatmarkproto'
20931 d_socket='$d_socket'
20932 d_socklen_t='$d_socklen_t'
20933 d_sockpair='$d_sockpair'
20934 d_socks5_init='$d_socks5_init'
20936 d_srand48_r='$d_srand48_r'
20937 d_srandom_r='$d_srandom_r'
20938 d_sresgproto='$d_sresgproto'
20939 d_sresuproto='$d_sresuproto'
20940 d_statblks='$d_statblks'
20941 d_statfs_f_flags='$d_statfs_f_flags'
20942 d_statfs_s='$d_statfs_s'
20943 d_statvfs='$d_statvfs'
20944 d_stdio_cnt_lval='$d_stdio_cnt_lval'
20945 d_stdio_ptr_lval='$d_stdio_ptr_lval'
20946 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
20947 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
20948 d_stdio_stream_array='$d_stdio_stream_array'
20949 d_stdiobase='$d_stdiobase'
20950 d_stdstdio='$d_stdstdio'
20951 d_strchr='$d_strchr'
20952 d_strcoll='$d_strcoll'
20953 d_strctcpy='$d_strctcpy'
20954 d_strerrm='$d_strerrm'
20955 d_strerror='$d_strerror'
20956 d_strerror_r='$d_strerror_r'
20957 d_strftime='$d_strftime'
20958 d_strlcat='$d_strlcat'
20959 d_strlcpy='$d_strlcpy'
20960 d_strtod='$d_strtod'
20961 d_strtol='$d_strtol'
20962 d_strtold='$d_strtold'
20963 d_strtoll='$d_strtoll'
20964 d_strtoq='$d_strtoq'
20965 d_strtoul='$d_strtoul'
20966 d_strtoull='$d_strtoull'
20967 d_strtouq='$d_strtouq'
20968 d_strxfrm='$d_strxfrm'
20969 d_suidsafe='$d_suidsafe'
20970 d_symlink='$d_symlink'
20971 d_syscall='$d_syscall'
20972 d_syscallproto='$d_syscallproto'
20973 d_sysconf='$d_sysconf'
20974 d_sysernlst='$d_sysernlst'
20975 d_syserrlst='$d_syserrlst'
20976 d_system='$d_system'
20977 d_tcgetpgrp='$d_tcgetpgrp'
20978 d_tcsetpgrp='$d_tcsetpgrp'
20979 d_telldir='$d_telldir'
20980 d_telldirproto='$d_telldirproto'
20983 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
20984 d_tm_tm_zone='$d_tm_tm_zone'
20985 d_tmpnam_r='$d_tmpnam_r'
20986 d_truncate='$d_truncate'
20987 d_ttyname_r='$d_ttyname_r'
20988 d_tzname='$d_tzname'
20989 d_u32align='$d_u32align'
20990 d_ualarm='$d_ualarm'
20993 d_union_semun='$d_union_semun'
20994 d_unordered='$d_unordered'
20995 d_usleep='$d_usleep'
20996 d_usleepproto='$d_usleepproto'
20998 d_vendorarch='$d_vendorarch'
20999 d_vendorbin='$d_vendorbin'
21000 d_vendorlib='$d_vendorlib'
21001 d_vendorscript='$d_vendorscript'
21003 d_void_closedir='$d_void_closedir'
21004 d_voidsig='$d_voidsig'
21005 d_voidtty='$d_voidtty'
21006 d_volatile='$d_volatile'
21007 d_vprintf='$d_vprintf'
21009 d_waitpid='$d_waitpid'
21010 d_wcstombs='$d_wcstombs'
21011 d_wctomb='$d_wctomb'
21012 d_writev='$d_writev'
21015 db_hashtype='$db_hashtype'
21016 db_prefixtype='$db_prefixtype'
21017 db_version_major='$db_version_major'
21018 db_version_minor='$db_version_minor'
21019 db_version_patch='$db_version_patch'
21020 defvoidused='$defvoidused'
21021 direntrytype='$direntrytype'
21024 doublesize='$doublesize'
21026 drand48_r_proto='$drand48_r_proto'
21027 dynamic_ext='$dynamic_ext'
21033 endgrent_r_proto='$endgrent_r_proto'
21034 endhostent_r_proto='$endhostent_r_proto'
21035 endnetent_r_proto='$endnetent_r_proto'
21036 endprotoent_r_proto='$endprotoent_r_proto'
21037 endpwent_r_proto='$endpwent_r_proto'
21038 endservent_r_proto='$endservent_r_proto'
21039 eunicefix='$eunicefix'
21042 extensions='$extensions'
21044 fflushNULL='$fflushNULL'
21045 fflushall='$fflushall'
21047 firstmakefile='$firstmakefile'
21049 fpossize='$fpossize'
21050 fpostype='$fpostype'
21051 freetype='$freetype'
21054 full_csh='$full_csh'
21055 full_sed='$full_sed'
21056 gccansipedantic='$gccansipedantic'
21057 gccosandvers='$gccosandvers'
21058 gccversion='$gccversion'
21059 getgrent_r_proto='$getgrent_r_proto'
21060 getgrgid_r_proto='$getgrgid_r_proto'
21061 getgrnam_r_proto='$getgrnam_r_proto'
21062 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
21063 gethostbyname_r_proto='$gethostbyname_r_proto'
21064 gethostent_r_proto='$gethostent_r_proto'
21065 getlogin_r_proto='$getlogin_r_proto'
21066 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
21067 getnetbyname_r_proto='$getnetbyname_r_proto'
21068 getnetent_r_proto='$getnetent_r_proto'
21069 getprotobyname_r_proto='$getprotobyname_r_proto'
21070 getprotobynumber_r_proto='$getprotobynumber_r_proto'
21071 getprotoent_r_proto='$getprotoent_r_proto'
21072 getpwent_r_proto='$getpwent_r_proto'
21073 getpwnam_r_proto='$getpwnam_r_proto'
21074 getpwuid_r_proto='$getpwuid_r_proto'
21075 getservbyname_r_proto='$getservbyname_r_proto'
21076 getservbyport_r_proto='$getservbyport_r_proto'
21077 getservent_r_proto='$getservent_r_proto'
21078 getspnam_r_proto='$getspnam_r_proto'
21079 gidformat='$gidformat'
21085 gmtime_r_proto='$gmtime_r_proto'
21086 gnulibc_version='$gnulibc_version'
21088 groupcat='$groupcat'
21089 groupstype='$groupstype'
21092 h_sysfile='$h_sysfile'
21095 html1dir='$html1dir'
21096 html1direxp='$html1direxp'
21097 html3dir='$html3dir'
21098 html3direxp='$html3direxp'
21107 i_arpainet='$i_arpainet'
21108 i_bsdioctl='$i_bsdioctl'
21112 i_dirent='$i_dirent'
21118 i_fp_class='$i_fp_class'
21121 i_ieeefp='$i_ieeefp'
21122 i_inttypes='$i_inttypes'
21123 i_langinfo='$i_langinfo'
21124 i_libutil='$i_libutil'
21125 i_limits='$i_limits'
21126 i_locale='$i_locale'
21127 i_machcthr='$i_machcthr'
21128 i_malloc='$i_malloc'
21130 i_memory='$i_memory'
21131 i_mntent='$i_mntent'
21134 i_neterrno='$i_neterrno'
21135 i_netinettcp='$i_netinettcp'
21139 i_pthread='$i_pthread'
21141 i_rpcsvcdbm='$i_rpcsvcdbm'
21144 i_shadow='$i_shadow'
21146 i_stdarg='$i_stdarg'
21147 i_stddef='$i_stddef'
21148 i_stdlib='$i_stdlib'
21149 i_string='$i_string'
21150 i_sunmath='$i_sunmath'
21151 i_sysaccess='$i_sysaccess'
21152 i_sysdir='$i_sysdir'
21153 i_sysfile='$i_sysfile'
21154 i_sysfilio='$i_sysfilio'
21156 i_sysioctl='$i_sysioctl'
21157 i_syslog='$i_syslog'
21158 i_sysmman='$i_sysmman'
21159 i_sysmode='$i_sysmode'
21160 i_sysmount='$i_sysmount'
21161 i_sysndir='$i_sysndir'
21162 i_sysparam='$i_sysparam'
21163 i_sysresrc='$i_sysresrc'
21164 i_syssecrt='$i_syssecrt'
21165 i_sysselct='$i_sysselct'
21166 i_syssockio='$i_syssockio'
21167 i_sysstat='$i_sysstat'
21168 i_sysstatfs='$i_sysstatfs'
21169 i_sysstatvfs='$i_sysstatvfs'
21170 i_systime='$i_systime'
21171 i_systimek='$i_systimek'
21172 i_systimes='$i_systimes'
21173 i_systypes='$i_systypes'
21174 i_sysuio='$i_sysuio'
21176 i_sysutsname='$i_sysutsname'
21177 i_sysvfs='$i_sysvfs'
21178 i_syswait='$i_syswait'
21179 i_termio='$i_termio'
21180 i_termios='$i_termios'
21182 i_unistd='$i_unistd'
21185 i_values='$i_values'
21186 i_varargs='$i_varargs'
21187 i_varhdr='$i_varhdr'
21189 ignore_versioned_solibs='$ignore_versioned_solibs'
21190 inc_version_list='$inc_version_list'
21191 inc_version_list_init='$inc_version_list_init'
21194 installarchlib='$installarchlib'
21195 installbin='$installbin'
21196 installhtml1dir='$installhtml1dir'
21197 installhtml3dir='$installhtml3dir'
21198 installman1dir='$installman1dir'
21199 installman3dir='$installman3dir'
21200 installprefix='$installprefix'
21201 installprefixexp='$installprefixexp'
21202 installprivlib='$installprivlib'
21203 installscript='$installscript'
21204 installsitearch='$installsitearch'
21205 installsitebin='$installsitebin'
21206 installsitehtml1dir='$installsitehtml1dir'
21207 installsitehtml3dir='$installsitehtml3dir'
21208 installsitelib='$installsitelib'
21209 installsiteman1dir='$installsiteman1dir'
21210 installsiteman3dir='$installsiteman3dir'
21211 installsitescript='$installsitescript'
21212 installstyle='$installstyle'
21213 installusrbinperl='$installusrbinperl'
21214 installvendorarch='$installvendorarch'
21215 installvendorbin='$installvendorbin'
21216 installvendorhtml1dir='$installvendorhtml1dir'
21217 installvendorhtml3dir='$installvendorhtml3dir'
21218 installvendorlib='$installvendorlib'
21219 installvendorman1dir='$installvendorman1dir'
21220 installvendorman3dir='$installvendorman3dir'
21221 installvendorscript='$installvendorscript'
21223 issymlink='$issymlink'
21224 ivdformat='$ivdformat'
21227 known_extensions='$known_extensions'
21230 lddlflags='$lddlflags'
21232 ldflags_uselargefiles='$ldflags_uselargefiles'
21233 ldlibpthname='$ldlibpthname'
21240 libsdirs='$libsdirs'
21241 libsfiles='$libsfiles'
21242 libsfound='$libsfound'
21243 libspath='$libspath'
21244 libswanted='$libswanted'
21245 libswanted_uselargefiles='$libswanted_uselargefiles'
21251 localtime_r_proto='$localtime_r_proto'
21252 locincpth='$locincpth'
21253 loclibpth='$loclibpth'
21254 longdblsize='$longdblsize'
21255 longlongsize='$longlongsize'
21256 longsize='$longsize'
21260 lseeksize='$lseeksize'
21261 lseektype='$lseektype'
21265 make_set_make='$make_set_make'
21266 mallocobj='$mallocobj'
21267 mallocsrc='$mallocsrc'
21268 malloctype='$malloctype'
21270 man1direxp='$man1direxp'
21273 man3direxp='$man3direxp'
21275 mips_type='$mips_type'
21276 mistrustnm='$mistrustnm'
21278 mmaptype='$mmaptype'
21279 modetype='$modetype'
21281 multiarch='$multiarch'
21283 myarchname='$myarchname'
21284 mydomain='$mydomain'
21285 myhostname='$myhostname'
21288 need_va_copy='$need_va_copy'
21289 netdb_hlen_type='$netdb_hlen_type'
21290 netdb_host_type='$netdb_host_type'
21291 netdb_name_type='$netdb_name_type'
21292 netdb_net_type='$netdb_net_type'
21295 nm_so_opt='$nm_so_opt'
21296 nonxs_ext='$nonxs_ext'
21298 nvEUformat='$nvEUformat'
21299 nvFUformat='$nvFUformat'
21300 nvGUformat='$nvGUformat'
21301 nv_preserves_uv_bits='$nv_preserves_uv_bits'
21302 nveformat='$nveformat'
21303 nvfformat='$nvfformat'
21304 nvgformat='$nvgformat'
21307 o_nonblock='$o_nonblock'
21309 old_pthread_create_joinable='$old_pthread_create_joinable'
21310 optimize='$optimize'
21311 orderlib='$orderlib'
21314 otherlibdirs='$otherlibdirs'
21318 patchlevel='$patchlevel'
21319 path_sep='$path_sep'
21322 perl_patchlevel='$perl_patchlevel'
21323 perladmin='$perladmin'
21324 perllibs='$perllibs'
21325 perlpath='$perlpath'
21327 phostname='$phostname'
21333 prefixexp='$prefixexp'
21335 privlibexp='$privlibexp'
21336 procselfexe='$procselfexe'
21337 prototype='$prototype'
21339 quadkind='$quadkind'
21340 quadtype='$quadtype'
21341 randbits='$randbits'
21342 randfunc='$randfunc'
21343 random_r_proto='$random_r_proto'
21344 randseedtype='$randseedtype'
21346 rd_nodata='$rd_nodata'
21347 readdir64_r_proto='$readdir64_r_proto'
21348 readdir_r_proto='$readdir_r_proto'
21349 revision='$revision'
21354 sPRIEUldbl='$sPRIEUldbl'
21355 sPRIFUldbl='$sPRIFUldbl'
21356 sPRIGUldbl='$sPRIGUldbl'
21357 sPRIXU64='$sPRIXU64'
21359 sPRIeldbl='$sPRIeldbl'
21360 sPRIfldbl='$sPRIfldbl'
21361 sPRIgldbl='$sPRIgldbl'
21366 sSCNfldbl='$sSCNfldbl'
21367 sched_yield='$sched_yield'
21368 scriptdir='$scriptdir'
21369 scriptdirexp='$scriptdirexp'
21371 seedfunc='$seedfunc'
21372 selectminbits='$selectminbits'
21373 selecttype='$selecttype'
21374 sendmail='$sendmail'
21375 setgrent_r_proto='$setgrent_r_proto'
21376 sethostent_r_proto='$sethostent_r_proto'
21377 setlocale_r_proto='$setlocale_r_proto'
21378 setnetent_r_proto='$setnetent_r_proto'
21379 setprotoent_r_proto='$setprotoent_r_proto'
21380 setpwent_r_proto='$setpwent_r_proto'
21381 setservent_r_proto='$setservent_r_proto'
21384 sharpbang='$sharpbang'
21385 shmattype='$shmattype'
21386 shortsize='$shortsize'
21389 sig_count='$sig_count'
21390 sig_name='$sig_name'
21391 sig_name_init='$sig_name_init'
21393 sig_num_init='$sig_num_init'
21394 sig_size='$sig_size'
21395 signal_t='$signal_t'
21396 sitearch='$sitearch'
21397 sitearchexp='$sitearchexp'
21399 sitebinexp='$sitebinexp'
21400 sitehtml1dir='$sitehtml1dir'
21401 sitehtml1direxp='$sitehtml1direxp'
21402 sitehtml3dir='$sitehtml3dir'
21403 sitehtml3direxp='$sitehtml3direxp'
21405 sitelib_stem='$sitelib_stem'
21406 sitelibexp='$sitelibexp'
21407 siteman1dir='$siteman1dir'
21408 siteman1direxp='$siteman1direxp'
21409 siteman3dir='$siteman3dir'
21410 siteman3direxp='$siteman3direxp'
21411 siteprefix='$siteprefix'
21412 siteprefixexp='$siteprefixexp'
21413 sitescript='$sitescript'
21414 sitescriptexp='$sitescriptexp'
21415 sizesize='$sizesize'
21416 sizetype='$sizetype'
21420 sockethdr='$sockethdr'
21421 socketlib='$socketlib'
21422 socksizetype='$socksizetype'
21424 spackage='$spackage'
21425 spitshell='$spitshell'
21426 srand48_r_proto='$srand48_r_proto'
21427 srandom_r_proto='$srandom_r_proto'
21429 ssizetype='$ssizetype'
21430 startperl='$startperl'
21432 static_ext='$static_ext'
21434 stdio_base='$stdio_base'
21435 stdio_bufsiz='$stdio_bufsiz'
21436 stdio_cnt='$stdio_cnt'
21437 stdio_filbuf='$stdio_filbuf'
21438 stdio_ptr='$stdio_ptr'
21439 stdio_stream_array='$stdio_stream_array'
21440 strerror_r_proto='$strerror_r_proto'
21443 subversion='$subversion'
21447 targetarch='$targetarch'
21451 timeincl='$timeincl'
21452 timetype='$timetype'
21453 tmpnam_r_proto='$tmpnam_r_proto'
21459 ttyname_r_proto='$ttyname_r_proto'
21468 uidformat='$uidformat'
21474 uquadtype='$uquadtype'
21475 use5005threads='$use5005threads'
21476 use64bitall='$use64bitall'
21477 use64bitint='$use64bitint'
21478 usecrosscompile='$usecrosscompile'
21480 usefaststdio='$usefaststdio'
21481 useithreads='$useithreads'
21482 uselargefiles='$uselargefiles'
21483 uselongdouble='$uselongdouble'
21484 usemallocwrap='$usemallocwrap'
21485 usemorebits='$usemorebits'
21486 usemultiplicity='$usemultiplicity'
21487 usemymalloc='$usemymalloc'
21489 useopcode='$useopcode'
21490 useperlio='$useperlio'
21491 useposix='$useposix'
21492 usereentrant='$usereentrant'
21493 userelocatableinc='$userelocatableinc'
21495 useshrplib='$useshrplib'
21496 usesitecustomize='$usesitecustomize'
21497 usesocks='$usesocks'
21498 usethreads='$usethreads'
21499 usevendorprefix='$usevendorprefix'
21500 usevfork='$usevfork'
21503 uvXUformat='$uvXUformat'
21504 uvoformat='$uvoformat'
21507 uvuformat='$uvuformat'
21508 uvxformat='$uvxformat'
21509 vendorarch='$vendorarch'
21510 vendorarchexp='$vendorarchexp'
21511 vendorbin='$vendorbin'
21512 vendorbinexp='$vendorbinexp'
21513 vendorhtml1dir='$vendorhtml1dir'
21514 vendorhtml1direxp='$vendorhtml1direxp'
21515 vendorhtml3dir='$vendorhtml3dir'
21516 vendorhtml3direxp='$vendorhtml3direxp'
21517 vendorlib='$vendorlib'
21518 vendorlib_stem='$vendorlib_stem'
21519 vendorlibexp='$vendorlibexp'
21520 vendorman1dir='$vendorman1dir'
21521 vendorman1direxp='$vendorman1direxp'
21522 vendorman3dir='$vendorman3dir'
21523 vendorman3direxp='$vendorman3direxp'
21524 vendorprefix='$vendorprefix'
21525 vendorprefixexp='$vendorprefixexp'
21526 vendorscript='$vendorscript'
21527 vendorscriptexp='$vendorscriptexp'
21529 version_patchlevel_string='$version_patchlevel_string'
21530 versiononly='$versiononly'
21532 voidflags='$voidflags'
21535 yaccflags='$yaccflags'
21540 : Add in command line options if available
21541 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
21543 : add special variables
21544 $test -f $src/patchlevel.h && \
21545 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
21546 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
21547 echo "PERL_CONFIG_SH=true" >>config.sh
21549 : propagate old symbols
21550 if $test -f UU/config.sh; then
21551 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
21552 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
21553 $sort | $uniq -u >UU/oldsyms
21554 set X `cat UU/oldsyms`
21560 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
21562 echo "# Variables propagated from previous config.sh file." >>config.sh
21563 for sym in `cat UU/oldsyms`; do
21564 echo " Propagating $hint variable "'$'"$sym..."
21565 eval 'tmp="$'"${sym}"'"'
21567 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
21573 : Finish up by extracting the .SH files
21577 echo "Extraction done."
21587 If you'd like to make any changes to the config.sh file before I begin
21588 to configure things, do it as a shell escape now (e.g. !vi config.sh).
21591 rp="Press return or use a shell escape to edit config.sh:"
21596 *) : in case they cannot read
21597 sh 1>&4 -c "$ans";;
21602 : if this fails, just run all the .SH files by hand
21611 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
21618 Now you need to generate make dependencies by running "$make depend".
21619 You might prefer to run it in background: "$make depend > makedepend.out &"
21620 It can take a while, so you might not want to run it right now.
21625 rp="Run $make depend now?"
21629 $make depend && echo "Now you must run '$make'."
21632 echo "You must run '$make depend' then '$make'."
21635 elif test -f [Mm]akefile; then
21637 echo "Now you must run a $make."
21639 echo "Configure done."
21642 if $test -f Policy.sh; then
21645 If you compile $package on a different machine or from a different object
21646 directory, copy the Policy.sh file from this object directory to the
21647 new one before you run Configure -- this will help you with most of
21648 the policy defaults.
21652 if $test -f config.msg; then
21653 echo "Hmm. I also noted the following information while running:"
21655 $cat config.msg >&4
21658 $rm -f kit*isdone ark*isdone