3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # Though this script was generated by metaconfig, it is OK to send
22 # patches against it. It's up to the Configure pumpkin to backport
23 # the patch to the metaunits if it is accepted.
24 # See Porting/pumpkin.pod for more information on metaconfig.
27 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
29 # Generated on Wed Jun 13 22:14:49 CEST 2007 [metaconfig 3.0 PL70]
30 # (with additional metaconfig patches by perlbug@perl.org)
35 SCO csh still thinks true is false. Write to SCO today and tell them that next
36 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
38 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
39 we'd have to do is go in and swap the && and || tokens, wherever they are.)
41 [End of diatribe. We now return you to your regularly scheduled programming...]
45 OOPS! You naughty creature! You didn't run Configure with sh!
46 I will attempt to remedy the situation by running sh for you...
50 true || exec sh $0 $argv:q
52 (exit $?0) || cat c2$$
53 (exit $?0) || exec sh $0 $argv:q
56 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
59 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
60 *** Configure that well. (Plan 9 is close to UNIX but not close enough.)
61 *** Please read the README.plan9 for further instructions.
62 *** Cannot continue, aborting.
68 if test ! -c /dev/null ; then
71 *** I'm sorry, but /dev/null appears to be a file rather than a device.
72 *** Please consult your operating sytem's notes for making a device
74 *** Cannot continue, aborting.
80 : compute my invocation name
84 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
89 : Proper separator for the PATH environment variable
91 : On OS/2 this directory should exist if this is not floppy only system :-]
92 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
93 if test -n "$OS2_SHELL"; then
95 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
96 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
98 elif test -n "$DJGPP"; then
99 case "X${MACHTYPE:-nonesuchmach}" in
106 : Proper PATH setting
107 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
108 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
109 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
110 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
111 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
112 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
113 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
114 paths="$paths /sbin /usr/sbin /usr/libexec"
115 paths="$paths /system/gnu_library/bin"
119 case "$p_$PATH$p_" in
121 *) test -d $p && PATH=$PATH$p_$p ;;
128 : shall we be using ksh?
134 if (PATH=.; alias -x) >/dev/null 2>&1; then
137 if test -f /hp-ux -a -f /bin/ksh; then
138 needksh='to avoid sh bug in "here document" expansion'
140 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
141 if test X`/usr/bin/uname -v` = X4; then
142 avoidksh="to avoid AIX 4's /bin/sh"
146 if test -f /osf_boot -a -f /usr/sbin/setld; then
147 if test X`/usr/bin/uname -s` = XOSF1; then
148 avoidksh="to avoid Digital UNIX' ksh"
150 unset BIN_SH # if this is 'xpg4' sh will start up ksh
153 case "$inksh/$needksh" in
160 case "$inksh/$avoidksh" in
166 case "$inksh/$needksh-$avoidksh-" in
169 (I see you are using the Korn shell. Some ksh's blow up on $me,
170 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
177 echo "(Feeding myself to $newsh $reason.)"
179 Configure|*/Configure) exec $newsh $0 "$@";;
180 *) exec $newsh Configure "$@";;
185 : if needed set CDPATH to a harmless value that is not chatty
186 : avoid bash 2.02 problems with empty CDPATH.
190 *bash*) CDPATH='.' ;;
195 : Configure runs within the UU subdirectory
196 test -d UU || mkdir UU
335 initialinstalllocation=''
363 d_attribute_format=''
364 d_attribute_malloc=''
365 d_attribute_nonnull=''
366 d_attribute_noreturn=''
368 d_attribute_unused=''
369 d_attribute_warn_unused_result=''
370 d_printf_format_null=''
373 d_builtin_choose_expr=''
376 d_c99_variadic_macros=''
423 endhostent_r_proto=''
429 endprotoent_r_proto=''
435 endservent_r_proto=''
487 gethostbyaddr_r_proto=''
489 gethostbyname_r_proto=''
491 gethostent_r_proto=''
503 getnetbyaddr_r_proto=''
505 getnetbyname_r_proto=''
519 d_getprotobyname_r=''
520 getprotobyname_r_proto=''
521 d_getprotobynumber_r=''
522 getprotobynumber_r_proto=''
524 getprotoent_r_proto=''
536 getservbyname_r_proto=''
538 getservbyport_r_proto=''
540 getservent_r_proto=''
564 d_libm_lib_version=''
567 d_localtime_r_needs_tzset=''
578 d_malloc_good_size=''
620 d_old_pthread_create_joinable=''
621 old_pthread_create_joinable=''
623 d_pthread_attr_setscope=''
662 sethostent_r_proto=''
679 setprotoent_r_proto=''
691 setservent_r_proto=''
725 d_sprintf_returns_strlen=''
740 d_stdio_ptr_lval_nochange_cnt=''
741 d_stdio_ptr_lval_sets_cnt=''
945 d_inc_version_list=''
947 inc_version_list_init=''
966 ignore_versioned_solibs=''
1030 d_perl_otherlibdirs=''
1038 api_versionstring=''
1044 version_patchlevel_string=''
1048 d_nv_preserves_uv=''
1049 d_nv_zero_is_allbits_zero=''
1060 nv_preserves_uv_bits=''
1132 installsitehtml1dir=''
1135 installsitehtml3dir=''
1142 installsiteman1dir=''
1145 installsiteman3dir=''
1150 installsitescript=''
1165 d_stdio_stream_array=''
1166 stdio_stream_array=''
1177 ccflags_uselargefiles=''
1178 ldflags_uselargefiles=''
1179 libswanted_uselargefiles=''
1199 installvendorarch=''
1206 installvendorhtml1dir=''
1208 vendorhtml1direxp=''
1209 installvendorhtml3dir=''
1211 vendorhtml3direxp=''
1217 installvendorman1dir=''
1220 installvendorman3dir=''
1227 installvendorscript=''
1239 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1242 : We must find out about Eunice early
1244 if test -f /etc/unixtovms; then
1245 eunicefix=/etc/unixtovms
1247 if test -f /etc/unixtovms.exe; then
1248 eunicefix=/etc/unixtovms.exe
1251 : Set executable suffix now -- needed before hints available
1252 if test -f "/libs/version.library"; then
1255 elif test -f "/system/gnu_library/bin/ar.pm"; then
1258 elif test -n "$DJGPP"; then
1261 elif test -d c:/. -o -n "$is_os2" ; then
1267 : Trailing extension. Override this in a hint file, if needed.
1268 : Extra object files, if any, needed on this platform.
1273 : change the next line if compiling for Xenix/286 on Xenix/386
1274 xlibpth='/usr/lib/386 /lib/386'
1275 : Possible local library directories to search.
1276 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1277 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1279 : general looking path for locating libraries
1280 glibpth="/lib /usr/lib $xlibpth"
1281 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1282 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1283 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1284 test -d /usr/lib64 && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
1286 : Private path used by Configure to find libraries. Its value
1287 : is prepended to libpth. This variable takes care of special
1288 : machines, like the mips. Usually, it should be empty.
1291 : default library list
1293 : some systems want to use only the non-versioned libso:s
1294 ignore_versioned_solibs=''
1298 : set usethreads on the Configure command line to enable threads.
1299 usereentrant='undef'
1300 : full support for void wanted by default
1303 : Possible local include directories to search.
1304 : Set locincpth to "" in a hint file to defeat local include searches.
1305 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1306 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1308 : no include file wanted by default
1311 : Enable -DEBUGGING and -DDEBUGGING from the command line
1318 : set useposix=false in your hint file to disable the POSIX extension.
1320 : set useopcode=false in your hint file to disable the Opcode extension.
1323 ccflags_uselargefiles=''
1324 ldflags_uselargefiles=''
1325 libswanted_uselargefiles=''
1326 : set usemultiplicity on the Configure command line to enable multiplicity.
1327 : set usesocks on the Configure command line to enable socks.
1328 : List of libraries we want.
1329 : If anyone needs extra -lxxx, put those in a hint file.
1330 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1331 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1332 : We probably want to search /usr/shlib before most other libraries.
1333 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1334 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1335 glibpth="/usr/shlib $glibpth"
1336 : Do not use vfork unless overridden by a hint file.
1339 : Find the basic shell for Bourne shell scripts
1343 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1346 if test -f "$xxx"; then
1349 : Build up a list and do a single loop so we can 'break' out.
1350 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1351 for xxx in sh bash ksh pdksh ash; do
1353 try="$try ${p}/${xxx}"
1357 if test -f "$xxx"; then
1360 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1363 elif test -f "$xxx.exe"; then
1374 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1376 Usually it's in /bin/sh. How did you even get this far?
1377 Please contact me (Perl Maintainers) at perlbug@perl.org and
1378 we'll try to straighten this all out.
1384 : see if sh knows # comments
1385 if `$sh -c '#' >/dev/null 2>&1`; then
1389 test -f $xcat$_exe || xcat=/usr/bin/cat
1390 if test ! -f $xcat$_exe; then
1391 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1392 if test -f $p/cat$_exe; then
1397 if test ! -f $xcat$_exe; then
1398 echo "Can't find cat anywhere!"
1402 echo "#!$xcat" >sharp
1406 if test -s today; then
1409 echo "#! $xcat" > sharp
1413 if test -s today; then
1421 echo "Your $sh doesn't grok # comments--I will strip them later on."
1424 echo "exec grep -v '^[ ]*#'" >spitshell
1426 $eunicefix spitshell
1427 spitshell=`pwd`/spitshell
1429 echo "I presume that if # doesn't work, #! won't work either!"
1434 : figure out how to guarantee sh startup
1436 '') startsh=${sharpbang}${sh} ;;
1448 : echo "Yup, it does."
1450 echo "Hmm... '$startsh' does not guarantee sh startup..."
1451 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1456 : Save command line options in file UU/cmdline.opt for later use in
1457 : generating config.sh.
1458 cat > cmdline.opt <<EOSH
1459 # Configure command line arguments.
1468 cat >>cmdline.opt <<EOSH
1469 config_arg$argn='$arg'
1471 # Extreme backslashitis: replace each ' by '"'"'
1472 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1475 arg_exp=`cat cmdl.opt`
1476 args_exp="$args_exp$args_sep'$arg_exp'"
1477 argn=`expr $argn + 1`
1480 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1481 # used by ./hints/os2.sh
1484 : produce awk script to parse command line options
1485 cat >options.awk <<'EOF'
1487 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1489 len = length(optstr);
1490 for (i = 1; i <= len; i++) {
1491 c = substr(optstr, i, 1);
1492 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1503 if (substr(str, 1, 1) != "-") {
1504 printf("'%s'\n", str);
1508 for (i = 2; i <= len; i++) {
1509 c = substr(str, i, 1);
1511 printf("-%s\n", substr(str, i));
1517 printf("'%s'\n", substr(str, i + 1));
1530 : process the command line options
1531 set X `for arg in "$@"; do echo "X$arg"; done |
1532 sed -e s/X// | awk -f options.awk`
1537 : set up default values
1547 rm -f optdef.sh posthint.sh
1548 cat >optdef.sh <<EOS
1554 while test $# -gt 0; do
1556 -d) shift; fastread=yes;;
1557 -e) shift; alldone=cont;;
1561 if test -r "$1"; then
1564 echo "$me: cannot read config file $1." >&2
1570 -h) shift; error=true;;
1571 -r) shift; reuseval=true;;
1572 -s) shift; silent=true; realsilent=true;;
1573 -E) shift; alldone=exit;;
1574 -K) shift; knowitall=true;;
1575 -O) shift; override=true;;
1576 -S) shift; silent=true; extractsh=true;;
1581 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1582 echo "$me: ignoring -D $1" >&2
1585 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1586 *) echo "$1='define'" >> optdef.sh;;
1593 *=) echo "$1" >> optdef.sh;;
1595 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1596 echo "$me: ignoring -U $1" >&2
1598 *) echo "$1='undef'" >> optdef.sh;;
1609 *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1613 zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1614 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1620 *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1621 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1622 zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1623 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1624 *) xxx=`echo "$yyy"|sed 's!:.*!!'`
1625 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1631 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1633 echo "$yyy=''" >> posthint.sh ;;
1638 echo "$yyy='$zzz'" >> posthint.sh ;;
1640 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1642 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1647 echo "$yyy=$zzz" >> posthint.sh ;;
1648 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1652 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1655 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1663 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1664 [-U symbol] [-U symbol=] [-A command:symbol...]
1665 -d : use defaults for all answers.
1666 -e : go on without questioning past the production of config.sh.
1667 -f : specify an alternate default configuration file.
1668 -h : print this help message and exit (with an error status).
1669 -r : reuse C symbols value if possible (skips costly nm extraction).
1670 -s : silent mode, only echoes questions and essential information.
1671 -D : define symbol to have some value:
1672 -D symbol symbol gets the value 'define'
1673 -D symbol=value symbol gets the value 'value'
1674 common used examples (see INSTALL for more info):
1675 -Duse64bitint use 64bit integers
1676 -Duse64bitall use 64bit integers and pointers
1677 -Dusethreads use thread support
1678 -Dinc_version_list=none do not include older perl trees in @INC
1679 -DEBUGGING=none DEBUGGING options
1680 -Dcc=gcc choose your compiler
1681 -Dprefix=/opt/perl5 choose your destination
1682 -E : stop at the end of questions, after having produced config.sh.
1683 -K : do not use unless you know what you are doing.
1684 -O : let -D and -U override definitions from loaded configuration file.
1685 -S : perform variable substitutions on all .SH files (can mix with -f)
1686 -U : undefine symbol:
1687 -U symbol symbol gets the value 'undef'
1688 -U symbol= symbol gets completely empty
1690 -A : manipulate symbol after the platform specific hints have been applied:
1691 -A symbol=value append " "value to symbol
1692 -A append:symbol=value append value to symbol
1693 -A define:symbol=value define symbol to have value
1694 -A clear:symbol define symbol to be ''
1695 -A define:symbol define symbol to be 'define'
1696 -A eval:symbol=value define symbol to be eval of value
1697 -A prepend:symbol=value prepend value to symbol
1698 -A undef:symbol define symbol to be 'undef'
1699 -A undef:symbol= define symbol to be ''
1700 e.g.: -A prepend:libswanted='cl pthread '
1701 -V : print version number and exit (with a zero status).
1708 case "$fastread$alldone" in
1711 case "$extractsh" in
1714 if test ! -t 0; then
1715 echo "Say 'sh Configure', not 'sh <Configure'"
1725 true) exec 1>/dev/null;;
1728 : run the defines and the undefines, if any, but leave the file out there...
1731 : create the posthint manipulation script and leave the file out there...
1736 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1737 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1738 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1739 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1740 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1743 : Some greps do not return status, grrr.
1744 echo "grimblepritz" >grimble
1745 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1747 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1753 : the following should work in any shell
1757 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1758 cat >contains <<'EOSS'
1759 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1764 : Find the path to the source tree
1767 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1771 *) src=`cd ../$src && pwd` ;;
1784 if test -f $rsrc/Configure && \
1785 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1787 : found it, so we are ok.
1790 for src in . .. ../.. ../../.. ../../../..; do
1791 if test -f ../$src/Configure && \
1792 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1803 Sorry, I can't seem to locate the source dir for $package. Please start
1804 Configure with an explicit path -- i.e. /some/path/Configure.
1812 echo "Sources for $package found in \"$src\"." >&4
1816 : script used to extract .SH files with variable substitutions
1817 cat >extract <<'EOS'
1819 echo "Doing variable substitutions on .SH files..."
1820 if test -f MANIFEST; then
1821 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1823 echo "(Looking for .SH files under the source directory.)"
1824 set x `(cd "$src"; find . -name "*.SH" -print)`
1828 0) set x `(cd "$src"; echo *.SH)`; shift;;
1830 if test ! -f "$src/$1"; then
1836 while test $name; do
1837 if test ! -d "$name"; then
1838 create="$name $create";
1839 name=`echo $name | sed -e "s|^[^/]*$||"`;
1840 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1845 for file in $create; do
1854 dir=`expr X$file : 'X\(.*\)/'`
1855 file=`expr X$file : 'X.*/\(.*\)'`
1856 (cd "$dir" && . ./$file)
1866 dir=`expr X$file : 'X\(.*\)/'`
1867 file=`expr X$file : 'X.*/\(.*\)'`
1868 (set x $dir; shift; eval $mkdir_p)
1869 sh <"$src/$dir/$file"
1878 if test -f "$src/config_h.SH"; then
1879 if test ! -f config.h; then
1880 : oops, they left it out of MANIFEST, probably, so do it anyway.
1881 . "$src/config_h.SH"
1886 : extract files and exit if asked to do so
1887 case "$extractsh" in
1889 case "$realsilent" in
1893 case "$config_sh" in
1894 '') config_sh='config.sh';;
1897 echo "Fetching answers from $config_sh..."
1900 test "$override" && . ./optdef.sh
1904 echo "Extraction done."
1909 : Eunice requires " " instead of "", can you believe it
1912 echo "Beginning of configuration questions for $package."
1914 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1916 : first determine how to suppress newline on echo command
1918 echo "Checking echo to see how to suppress newlines..."
1919 (echo "hi there\c" ; echo " ") >.echotmp
1920 if $contains c .echotmp >/dev/null 2>&1 ; then
1931 echo $n "The star should be here-->$c"
1935 : Now test for existence of everything in MANIFEST
1937 if test -f "$rsrc/MANIFEST"; then
1938 echo "First let's make sure your kit is complete. Checking..." >&4
1939 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1942 for filelist in x??; do
1943 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1945 if test -s missing; then
1949 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1951 You have the option of continuing the configuration process, despite the
1952 distinct possibility that your kit is damaged, by typing 'y'es. If you
1953 do, don't blame me if something goes wrong. I advise you to type 'n'o
1954 and contact the author (perlbug@perl.org).
1957 echo $n "Continue? [n] $c" >&4
1961 echo "Continuing..." >&4
1965 echo "ABORTING..." >&4
1970 echo "Looks good..."
1973 echo "There is no MANIFEST file. I hope your kit is complete !"
1978 : Find the appropriate value for a newline for tr
1979 if test -n "$DJGPP"; then
1982 if test X"$trnl" = X; then
1983 case "`echo foo|tr '\n' x 2>/dev/null`" in
1987 if test X"$trnl" = X; then
1988 case "`echo foo|tr '\012' x 2>/dev/null`" in
1989 foox) trnl='\012' ;;
1992 if test X"$trnl" = X; then
1993 case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1994 fooxy) trnl='\n\r' ;;
1997 if test X"$trnl" = X; then
2000 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
2006 : compute the number of columns on the terminal for proper question formatting
2011 : set up the echo used in my read
2012 myecho="case \"\$xxxm\" in
2013 '') echo $n \"\$rp $c\" >&4;;
2015 '') echo $n \"[\$xxxm] $c\";;
2017 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
2019 echo $n \"[\$xxxm] $c\" >&4
2021 echo $n \"\$rp [\$xxxm] $c\" >&4
2027 : now set up to do reads with possible shell escape and default assignment
2033 case "\$fastread" in
2034 yes) case "\$dflt" in
2037 case "\$silent-\$rp" in
2042 *) case "\$silent" in
2043 true) case "\$rp" in
2048 while expr "X\$ans" : "X!" >/dev/null; do
2052 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2060 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2069 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2074 echo "(OK, I'll run with -d after this question.)" >&4
2077 echo "*** Sorry, \$1 not supported yet." >&4
2087 echo "*** Substitution done -- please confirm."
2089 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2094 echo "*** Error -- try again."
2101 case "\$ans\$xxxm\$nostick" in
2113 : create .config dir to save info across Configure sessions
2114 test -d ../.config || mkdir ../.config
2115 cat >../.config/README <<EOF
2116 This directory created by Configure to save information that should
2117 persist across sessions for $package.
2119 You may safely delete it if you wish.
2122 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2124 $define|true|[yY]*) ;;
2125 *) case "$xversion" in
2128 *** WHOA THERE!!! ***
2130 This is an UNSTABLE DEVELOPMENT release.
2131 The version of this $package distribution is $xversion, that is, odd,
2132 (as opposed to even) and that signifies a development release.
2133 If you want a maintenance release, you want an even-numbered version.
2135 Do ***NOT*** install this into production use.
2136 Data corruption and crashes are possible.
2138 It is most seriously suggested that you do not continue any further
2139 unless you want to help in developing and debugging Perl.
2141 If you *still* want to build perl, you can answer 'y' now,
2142 or pass -Dusedevel to Configure.
2145 rp='Do you really want to continue?'
2149 [yY]) echo >&4 "Okay, continuing."
2150 usedevel="$define" ;;
2151 *) echo >&4 "Okay, bye."
2161 case "$versiononly" in
2162 '') versiononly="$define" ;;
2164 case "$installusrbinperl" in
2165 '') installusrbinperl="$undef" ;;
2170 : general instructions
2173 user=`(logname) 2>/dev/null`
2175 '') user=`whoami 2>&1`;;
2177 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2180 rp='Would you like to see the instructions?'
2191 This installation shell script will examine your system and ask you questions
2192 to determine how the perl5 package should be installed. If you get
2193 stuck on a question, you may use a ! shell escape to start a subshell or
2194 execute a command. Many of the questions will have default answers in square
2195 brackets; typing carriage return will give you the default.
2197 On some of the questions which ask for file or directory names you are allowed
2198 to use the ~name construct to specify the login directory belonging to "name",
2199 even if you don't have a shell which knows about that. Questions where this is
2200 allowed will be marked "(~name ok)".
2204 dflt='Type carriage return to continue'
2208 The prompter used in this script allows you to use shell variables and
2209 backticks in your answers. You may use $1, $2, etc... to refer to the words
2210 in the default answer, as if the default line was a set of arguments given to a
2211 script shell. This means you may also use $* to repeat the whole default line,
2212 so you do not have to re-type everything to add something to the default.
2214 Everytime there is a substitution, you will have to confirm. If there is an
2215 error (e.g. an unmatched backtick), the default answer will remain unchanged
2216 and you will be prompted again.
2218 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
2219 the questions and use the computed defaults (or the previous answers if there
2220 was already a config.sh file). Type 'Configure -h' for a list of options.
2221 You may also start interactively and then answer '& -d' at any prompt to turn
2222 on the non-interactive behaviour for the remainder of the execution.
2228 Much effort has been expended to ensure that this shell script will run on any
2229 Unix system. If despite that it blows up on yours, your best bet is to edit
2230 Configure and run it again. If you can't run Configure for some reason,
2231 you'll have to generate a config.sh file by hand. Whatever problems you
2232 have, let me (perlbug@perl.org) know how I blew it.
2234 This installation script affects things in two ways:
2236 1) it may do direct variable substitutions on some of the files included
2238 2) it builds a config.h file for inclusion in C programs. You may edit
2239 any of these files as the need arises after running this script.
2241 If you make a mistake on a question, there is no easy way to back up to it
2242 currently. The easiest thing to do is to edit config.sh and rerun all the SH
2243 files. Configure will offer to let you do this before it runs the SH files.
2246 dflt='Type carriage return to continue'
2248 case "$firsttime" in
2249 true) echo $user >>../.config/instruct;;
2253 : find out where common programs are
2255 echo "Locating common programs..." >&4
2268 if test -d \$dir/\$thing; then
2274 for thisthing in \$dir/\$thing; do
2275 : just loop through to pick last item
2277 if test -f \$thisthing; then
2280 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2283 elif test -f \$dir/\$thing.exe; then
2284 if test -n "$DJGPP"; then
2285 echo \$dir/\$thing.exe
2286 elif test "$eunicefix" != ":"; then
2287 : on Eunice apparently
2341 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2342 pth="$pth /lib /usr/lib"
2343 for file in $loclist; do
2347 if test -f "$xxx"; then
2350 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2351 xxx=`./loc $file $file $pth`
2354 '') xxx=`./loc $file $file $pth`;;
2355 *) xxx=`./loc $xxx $xxx $pth`;;
2357 eval $file=$xxx$_exe
2361 echo $file is in $xxx.
2364 echo $file is in $xxx.
2367 echo "I don't know where '$file' is, and my life depends on it." >&4
2368 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2374 echo "Don't worry if any of the following aren't found..."
2376 for file in $trylist; do
2380 if test -f "$xxx"; then
2383 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2384 xxx=`./loc $file $file $pth`
2387 '') xxx=`./loc $file $file $pth`;;
2388 *) xxx=`./loc $xxx $xxx $pth`;;
2390 eval $file=$xxx$_exe
2394 echo $file is in $xxx.
2397 echo $file is in $xxx.
2400 echo "I don't see $file out there, $say."
2407 echo "Substituting grep for egrep."
2414 echo "Substituting cp for ln."
2423 echo "I can't find make or gmake, and my life depends on it." >&4
2424 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2432 *) # We can't have osname yet.
2433 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2434 # Assume that gmake, if found, is definitely GNU make
2435 # and prefer it over the system make.
2436 echo "Substituting gmake for make."
2444 echo "Hopefully test is built into your sh."
2447 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2448 echo "Using the test built into your sh."
2456 echo "Hopefully echo is built into your sh."
2461 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2462 $echo $n "hi there$c" >foo1
2463 echo $n "hi there$c" >foo2
2464 if cmp foo1 foo2 >/dev/null 2>&1; then
2465 echo "They are compatible. In fact, they may be identical."
2472 They are not compatible! You are probably running ksh on a non-USG system.
2473 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2474 have echo built in and we may have to run some Bourne shell scripts. That
2475 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2478 $echo $n "The star should be here-->$c"
2488 cat <<'EOSC' >>trygcc
2493 int main(int argc, char *argv[]) {
2497 if $cc -o try $ccflags $ldflags try.c; then
2500 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2506 case "`$cc -v -c try.c 2>&1`" in
2509 if $test X"$trygcc" = Xyes; then
2510 if gcc -o try -c try.c; then
2512 echo "You seem to have a working gcc, though." >&4
2513 rp="Would you like to use it?"
2515 if $test -f myread; then
2518 if $test -f UU/myread; then
2521 echo "Cannot find myread, sorry. Aborting." >&2
2526 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2527 if $test -f usethreads.cbu; then
2530 *** However, any setting of the C compiler flags (e.g. for thread support)
2531 *** has been lost. It may be necessary to pass -Dcc=gcc to Configure
2532 *** (together with e.g. -Dusethreads).
2548 cat <<'EOSC' >>checkcc
2553 int main(int argc, char *argv[]) {
2557 if $cc -o try $ccflags $ldflags try.c; then
2560 if $test X"$despair" = Xyes; then
2561 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2564 You need to find a working C compiler.
2565 Either (purchase and) install the C compiler supplied by your OS vendor,
2566 or for a free C compiler try http://gcc.gnu.org/
2567 I cannot continue any further, aborting.
2576 : determine whether symbolic links are supported
2579 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2580 echo "Symbolic links are supported." >&4
2583 echo "Symbolic links are NOT supported." >&4
2588 : determine whether symbolic links are supported
2592 echo "Checking how to test for symbolic links..." >&4
2594 if $test "X$issymlink" = X; then
2596 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2597 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2599 if test $? = 0; then
2602 echo "Your builtin 'test -h' may be broken." >&4
2605 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2608 if test -f "$p/$test"; then
2617 echo "Trying external '$test -h'." >&4
2618 issymlink="$test -h"
2619 if $test ! -h sym >/dev/null 2>&1; then
2620 echo "External '$test -h' is broken, too." >&4
2628 if $test "X$issymlink" = X; then
2629 if $test -L sym 2>/dev/null; then
2630 issymlink="$test -L"
2631 echo "The builtin '$test -L' worked." >&4
2634 if $test "X$issymlink" != X; then
2635 echo "You can test for symbolic links with '$issymlink'." >&4
2637 echo "I do not know how you can test for symbolic links." >&4
2641 *) echo "No symbolic links, so not testing for their testing..." >&4
2647 case "$mksymlinks" in
2650 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2653 *) case "$lns:$issymlink" in
2654 *"ln"*" -s:"*"test -"?)
2655 echo "Creating the symbolic links..." >&4
2656 echo "(First creating the subdirectories...)" >&4
2658 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2660 test -z "$directory" && break
2664 if test ! -d t/base; then
2665 echo "Failed to create the subdirectories. Aborting." >&4
2668 echo "(Then creating the symlinks...)" >&4
2669 awk '{print $1}' $src/MANIFEST | while true; do
2671 test -z "$filename" && break
2672 if test -f $filename; then
2673 if $issymlink $filename; then
2677 if test -f $filename; then
2678 echo "$filename already exists, not symlinking."
2680 ln -s $src/$filename $filename
2684 if test ! -f t/base/lex.t; then
2685 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
2690 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2699 case "$usecrosscompile" in
2701 $echo "Cross-compiling..."
2704 *-*-gcc) # A cross-compiling gcc, probably.
2705 targetarch=`$echo $cc|$sed 's/-gcc$//'`
2707 # leave out ld, choosing it is more complex
2709 ranlib=$targetarch-ranlib
2710 $echo 'extern int foo;' > try.c
2711 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2713 if $test $# -gt 0; then
2715 incpth="`$echo $incpth|$sed 's/^ //'`"
2716 echo "Guessing incpth '$incpth'." >&4
2718 j="`$echo $i|$sed 's,/include$,/lib,'`"
2719 if $test -d $j; then
2723 libpth="`$echo $libpth|$sed 's/^ //'`"
2724 echo "Guessing libpth '$libpth'." >&4
2729 case "$targetarch" in
2730 '') echo "Targetarch not defined." >&4; croak=y ;;
2731 *) echo "Using targetarch $targetarch." >&4 ;;
2734 '') echo "Incpth not defined." >&4; croak=y ;;
2735 *) echo "Using incpth '$incpth'." >&4 ;;
2738 '') echo "Libpth not defined." >&4; croak=y ;;
2739 *) echo "Using libpth '$libpth'." >&4 ;;
2742 '') for i in $incpth; do
2743 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2745 echo "Guessing usrinc $usrinc." >&4
2750 '') echo "Usrinc not defined." >&4; croak=y ;;
2753 *) echo "Using usrinc $usrinc." >&4 ;;
2755 case "$targethost" in
2756 '') echo "Targethost not defined." >&4; croak=y ;;
2757 *) echo "Using targethost $targethost." >&4
2762 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2765 /*) run=$src/Cross/run
2766 targetmkdir=$src/Cross/mkdir
2768 from=$src/Cross/from
2770 *) pwd=`$test -f ../Configure & cd ..; pwd`
2772 targetmkdir=$pwd/Cross/mkdir
2774 from=$pwd/Cross/from
2777 case "$targetrun" in
2778 '') targetrun=ssh ;;
2783 case "$targetfrom" in
2784 '') targetfrom=scp ;;
2788 from=$from-$targetfrom
2789 case "$targetdir" in
2791 echo "Guessing targetdir $targetdir." >&4
2794 case "$targetuser" in
2796 echo "Guessing targetuser $targetuser." >&4
2799 case "$targetfrom" in
2803 case "$targetrun" in
2815 '') cwd=$targetdir ;;
2819 if $test ! -f \$exe.xok; then
2823 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2826 *) echo "Unknown targetrun '$targetrun'" >&4
2830 case "$targetmkdir" in
2832 cat >$targetmkdir <<EOF
2834 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2836 $chmod a+rx $targetmkdir
2838 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2850 $targetmkdir \`dirname \$f\`
2851 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2854 $targetmkdir $targetdir/\`dirname \$f\`
2855 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2868 $mkdir -p $targetdir/\`dirname \$f\`
2869 $cp \$f $targetdir/\$f || exit 1
2872 $targetmkdir $targetdir/\`dirname \$f\`
2873 $cp \$f $targetdir/\$f || exit 1
2880 *) echo "Unknown targetto '$targetto'" >&4
2884 case "$targetfrom" in
2891 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2896 cp) cat >$from <<EOF
2901 cp $targetdir/\$f . || exit 1
2906 *) echo "Unknown targetfrom '$targetfrom'" >&4
2910 if $test ! -f $run; then
2911 echo "Target 'run' script '$run' not found." >&4
2915 if $test ! -f $to; then
2916 echo "Target 'to' script '$to' not found." >&4
2920 if $test ! -f $from; then
2921 echo "Target 'from' script '$from' not found." >&4
2925 if $test ! -f $run -o ! -f $to -o ! -f $from; then
2929 Using '$run' for remote execution,
2930 and '$from' and '$to'
2931 for remote file transfer.
2937 usecrosscompile='undef'
2942 : see whether [:lower:] and [:upper:] are supported character classes
2944 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2946 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2950 *) # There is a discontinuity in EBCDIC between 'R' and 'S'
2951 # (0xd9 and 0xe2), therefore that is a nice testing point.
2952 if test "X$up" = X -o "X$low" = X; then
2953 case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2959 if test "X$up" = X -o "X$low" = X; then
2960 case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2966 if test "X$up" = X -o "X$low" = X; then
2967 case "`echo RS | od -x 2>/dev/null`" in
2969 echo "Hey, this might be EBCDIC." >&4
2970 if test "X$up" = X -o "X$low" = X; then
2971 case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2972 rs) up='[A-IJ-RS-Z]'
2977 if test "X$up" = X -o "X$low" = X; then
2978 case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2988 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
2990 echo "Using $up and $low to convert case." >&4
2993 echo "I don't know how to translate letters from upper to lower case." >&4
2994 echo "Your tr is not acting any way I know of." >&4
2998 : set up the translation script tr, must be called with ./tr of course
3002 '[A-Z][a-z]') exec $tr '$up' '$low';;
3003 '[a-z][A-Z]') exec $tr '$low' '$up';;
3010 : Try to determine whether config.sh was made on this system
3011 case "$config_sh" in
3013 myuname=`$uname -a 2>/dev/null`
3014 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3015 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3016 # because the A-Z/a-z are not consecutive.
3017 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e "s,['/],,g" | \
3018 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3019 newmyuname="$myuname"
3021 case "$knowitall" in
3023 if test -f ../config.sh; then
3024 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3025 eval "`grep myuname= ../config.sh`"
3027 if test "X$myuname" = "X$newmyuname"; then
3035 : Get old answers from old config file if Configure was run on the
3036 : same system, otherwise use the hints.
3039 if test -f config.sh; then
3041 rp="I see a config.sh file. Shall I use it to set the defaults?"
3044 n*|N*) echo "OK, I'll ignore it."
3045 mv config.sh config.sh.old
3046 myuname="$newmyuname"
3048 *) echo "Fetching default answers from your old config.sh file..." >&4
3056 : Older versions did not always set $sh. Catch re-use of such
3066 if test ! -f config.sh; then
3069 First time through, eh? I have some defaults handy for some systems
3070 that need some extra help getting the Configure answers right:
3073 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
3075 : Half the following guesses are probably wrong... If you have better
3076 : tests or hints, please send them to perlbug@perl.org
3077 : The metaconfig authors would also appreciate a copy...
3078 $test -f /irix && osname=irix
3079 $test -f /xenix && osname=sco_xenix
3080 $test -f /dynix && osname=dynix
3081 $test -f /dnix && osname=dnix
3082 $test -f /lynx.os && osname=lynxos
3083 $test -f /unicos && osname=unicos && osvers=`$uname -r`
3084 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3085 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3086 $test -f /bin/mips && /bin/mips && osname=mips
3087 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3088 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3089 $test -d /usr/apollo/bin && osname=apollo
3090 $test -f /etc/saf/_sactab && osname=svr4
3091 $test -d /usr/include/minix && osname=minix
3092 $test -f /system/gnu_library/bin/ar.pm && osname=vos
3093 if $test -d /MachTen -o -d /MachTen_Folder; then
3095 if $test -x /sbin/version; then
3096 osvers=`/sbin/version | $awk '{print $2}' |
3097 $sed -e 's/[A-Za-z]$//'`
3098 elif $test -x /usr/etc/version; then
3099 osvers=`/usr/etc/version | $awk '{print $2}' |
3100 $sed -e 's/[A-Za-z]$//'`
3106 $test -f /sys/posix.dll &&
3107 $test -f /usr/bin/what &&
3108 set X `/usr/bin/what /sys/posix.dll` &&
3109 $test "$3" = UWIN &&
3113 if $test -f $uname; then
3121 umips) osname=umips ;;
3124 [23]100) osname=mips ;;
3125 next*) osname=next ;;
3127 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3128 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3131 elif $test -f /etc/kconfig; then
3133 if test "$lns" = "$ln -s"; then
3135 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3137 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3144 if test -n "$DJGPP"; then
3153 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3155 # oslevel can fail with:
3156 # oslevel: Unable to acquire lock.
3157 *not\ found) osvers="$4"."$3" ;;
3158 '<3240'|'<>3240') osvers=3.2.0 ;;
3159 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3160 '=3250'|'>3250') osvers=3.2.5 ;;
3164 bsd386) osname=bsd386
3167 cygwin*) osname=cygwin
3170 *dc.osx) osname=dcosx
3176 domainos) osname=apollo
3182 dragonfly) osname=dragonfly
3185 dynixptx*) osname=dynixptx
3186 osvers=`echo "$4"|sed 's/^v//'`
3188 freebsd) osname=freebsd
3190 genix) osname=genix ;;
3194 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3210 netbsd*) osname=netbsd
3213 news-os) osvers="$3"
3215 4*) osname=newsos4 ;;
3219 next*) osname=next ;;
3220 nonstop-ux) osname=nonstopux ;;
3221 openbsd) osname=openbsd
3227 POSIX-BC | posix-bc ) osname=posix-bc
3230 powerux | power_ux | powermax_os | powermaxos | \
3231 powerunix | power_unix) osname=powerux
3237 solaris) osname=solaris
3239 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3246 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3250 titanos) osname=titanos
3259 ultrix) osname=ultrix
3262 osf1|mls+) case "$5" in
3265 osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3268 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3271 hp*) osname=hp_osf1 ;;
3272 mips) osname=mips_osf1 ;;
3275 # UnixWare 7.1.2 is known as Open UNIX 8
3276 openunix|unixware) osname=svr5
3284 $2) case "$osname" in
3288 : svr4.x or possibly later
3298 if test -f /stand/boot ; then
3299 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3300 if test -n "$INITPROG" -a -f "$INITPROG"; then
3301 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3302 if test -n "$isesix"; then
3310 *) if test -f /etc/systemid; then
3312 set `echo $3 | $sed 's/\./ /g'` $4
3313 if $test -f $src/hints/sco_$1_$2_$3.sh; then
3315 elif $test -f $src/hints/sco_$1_$2.sh; then
3317 elif $test -f $src/hints/sco_$1.sh; then
3322 '') : Still unknown. Probably a generic Sys V.
3331 *) case "$osname" in
3332 '') : Still unknown. Probably a generic BSD.
3340 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3341 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3342 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3345 $rm -f UU/kernel.what
3346 elif test -d c:/. -o -n "$is_os2" ; then
3353 case "$targetarch" in
3356 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3361 : Now look for a hint file osname_osvers, unless one has been
3362 : specified already.
3365 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3366 : Also try without trailing minor version numbers.
3367 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3368 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3369 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3370 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3373 *) case "$osvers" in
3376 *) if $test -f $src/hints/$file.sh ; then
3378 elif $test -f $src/hints/$xfile.sh ; then
3380 elif $test -f $src/hints/$xxfile.sh ; then
3382 elif $test -f $src/hints/$xxxfile.sh ; then
3384 elif $test -f $src/hints/$xxxxfile.sh ; then
3386 elif $test -f "$src/hints/${osname}.sh" ; then
3395 if $test -f Policy.sh ; then
3398 none) dflt="Policy" ;;
3399 *) dflt="Policy $dflt" ;;
3404 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3408 if $test -f Policy.sh ; then
3411 There's also a Policy hint file available, which should make the
3412 site-specific (policy) questions easier to answer.
3419 You may give one or more space-separated answers, or "none" if appropriate.
3420 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3421 previous run of Configure, you may specify it as well as or instead of
3422 OS-specific hints. If hints are provided for your OS, you should use them:
3423 although Perl can probably be built without hints on many platforms, using
3424 hints often improve performance and may enable features that Configure can't
3425 set up on its own. If there are no hints that match your OS, specify "none";
3426 DO NOT give a wrong version or a wrong OS.
3430 rp="Which of these apply, if any?"
3433 for file in $tans; do
3434 if $test X$file = XPolicy -a -f Policy.sh; then
3436 $cat Policy.sh >> UU/config.sh
3437 elif $test -f $src/hints/$file.sh; then
3438 . $src/hints/$file.sh
3439 $cat $src/hints/$file.sh >> UU/config.sh
3440 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3443 : Give one chance to correct a possible typo.
3444 echo "$file.sh does not exist"
3446 rp="hint to use instead?"
3448 for file in $ans; do
3449 if $test -f "$src/hints/$file.sh"; then
3450 . $src/hints/$file.sh
3451 $cat $src/hints/$file.sh >> UU/config.sh
3452 elif $test X$ans = X -o X$ans = Xnone ; then
3455 echo "$file.sh does not exist -- ignored."
3462 : Remember our hint file for later.
3463 if $test -f "$src/hints/$file.sh" ; then
3473 echo "Fetching default answers from $config_sh..." >&4
3477 cp $config_sh config.sh 2>/dev/null
3487 test "$override" && . ./optdef.sh
3489 : Restore computed paths
3490 for file in $loclist $trylist; do
3491 eval $file="\$_$file"
3496 Configure uses the operating system name and version to set some defaults.
3497 The default value is probably right if the name rings a bell. Otherwise,
3498 since spelling matters for me, either accept the default or answer "none"
3505 ''|' '|none) dflt=none ;;
3506 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3509 *) dflt="$osname" ;;
3511 rp="Operating system name?"
3515 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3521 ''|' '|none) dflt=none ;;
3522 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3523 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3525 ''|' ') dflt=none ;;
3530 *) dflt="$osvers" ;;
3532 rp="Operating system version?"
3542 : who configured the system
3543 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3546 cf_by=`(logname) 2>/dev/null`
3549 cf_by=`(whoami) 2>/dev/null`
3551 "") cf_by=unknown ;;
3556 : decide how portable to be. Allow command line overrides.
3557 case "$d_portable" in
3559 *) d_portable="$define" ;;
3562 : set up shell script to do ~ expansion
3568 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3571 if $test -f /bin/csh; then
3572 /bin/csh -f -c "glob \$1"
3577 name=\`$expr x\$1 : '..\([^/]*\)'\`
3578 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3579 if $test ! -d "\$dir"; then
3581 echo "\$me: can't locate home directory for: \$name" >&2
3586 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3602 : now set up to get a file name
3606 cat <<'EOSC' >>getfile
3622 : getfile will accept an answer from the comma-separated list
3623 : enclosed in parentheses even if it does not meet other criteria.
3624 expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3625 fn=`echo $fn | sed 's/(.*)//'`
3631 loc_file=`expr $fn : '.*:\(.*\)'`
3632 fn=`expr $fn : '\(.*\):.*'`
3640 */*) fullpath=true;;
3649 *e*) exp_file=true;;
3652 *p*) nopath_ok=true;;
3657 *d*) type='Directory';;
3658 *l*) type='Locate';;
3663 Locate) what='File';;
3668 case "$d_portable" in
3676 while test "$type"; do
3681 true) rp="$rp (~name ok)";;
3684 if test -f UU/getfile.ok && \
3685 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3704 value=`UU/filexp $ans`
3707 if test "$ans" != "$value"; then
3708 echo "(That expands to $value on this system.)"
3722 /*) value="$ansexp" ;;
3723 [a-zA-Z]:/*) value="$ansexp" ;;
3728 echo "I shall only accept a full path name, as in /bin/ls." >&4
3729 echo "Use a ! shell escape if you wish to check pathnames." >&4
3732 echo "Please give a full path name, starting with slash." >&4
3735 echo "Note that using ~name is ok provided it expands well." >&4
3748 for fp in $gfpth; do
3749 if test "X$fp" = X.; then
3754 if test -f "$pf"; then
3756 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3758 echo "($value is not a plain file, but that's ok.)"
3761 if test X"$type" = X; then
3768 for fp in $gfpth; do
3769 if test "X$fp" = X.; then
3774 direxp="$fp/$ansexp"
3776 if test -d "$direxp"; then
3784 if test -d "$ansexp"; then
3785 echo "(Looking for $loc_file in directory $value.)"
3786 value="$value/$loc_file"
3787 ansexp="$ansexp/$loc_file"
3789 if test -f "$ansexp"; then
3792 case "$nopath_ok" in
3793 true) case "$value" in
3795 *) echo "Assuming $value will be in people's path."
3811 if test "$fastread" = yes; then
3816 rp="$what $value doesn't exist. Use that name anyway?"
3835 test "X$gfpthkeep" != Xy && gfpth=""
3838 : determine root of directory hierarchy where package will be installed.
3841 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3844 dflt=`echo "$prefix" | sed 's/.$//'`
3852 By default, $package will be installed in $dflt/bin, manual pages
3853 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3854 installation directories. Typically this is something like /usr/local.
3855 If you wish to have binaries under /usr/bin but other parts of the
3856 installation under /usr/local, that's ok: you will be prompted
3857 separately for each of the installation directories, the prefix being
3858 only used to set the defaults.
3862 rp='Installation prefix to use?'
3870 *) oldprefix="$prefix";;
3879 *) afsroot=$afsroot ;;
3885 $define|true) afs=true ;;
3886 $undef|false) afs=false ;;
3887 *) if test -d $afsroot; then
3895 echo "AFS may be running... I'll be extra cautious then..." >&4
3897 echo "AFS does not seem to be running..." >&4
3900 : determine installation prefix for where package is to be installed.
3904 Since you are running AFS, I need to distinguish the directory in which
3905 files will reside from the directory in which they are installed (and from
3906 which they are presumably copied to the former directory by occult means).
3909 case "$installprefix" in
3910 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3911 *) dflt="$installprefix";;
3916 In some special cases, particularly when building $package for distribution,
3917 it is convenient to distinguish the directory in which files should be
3918 installed from the directory ($prefix) in which they will
3919 eventually reside. For most users, these two directories are the same.
3922 case "$installprefix" in
3924 *) dflt=$installprefix;;
3928 rp='What installation prefix should I use for installing files?'
3930 installprefix="$ans"
3931 installprefixexp="$ansexp"
3933 : Perform the prefixexp/installprefixexp correction if necessary
3934 cat <<EOS >installprefix
3937 cat <<'EOSC' >>installprefix
3938 : Change installation prefix, if necessary.
3939 if $test X"$prefix" != X"$installprefix"; then
3940 eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
3942 eval "install${prefixvar}=\"\$${prefixvar}exp\""
3945 chmod +x installprefix
3946 $eunicefix installprefix
3948 : Set variables such as privlib and privlibexp from the output of ./getfile
3949 : performing the prefixexp/installprefixexp correction if necessary.
3950 cat <<EOS >setprefixvar
3953 cat <<'EOSC' >>setprefixvar
3954 eval "${prefixvar}=\"\$ans\""
3955 eval "${prefixvar}exp=\"\$ansexp\""
3958 chmod +x setprefixvar
3959 $eunicefix setprefixvar
3961 : set up the script used to warn in case of inconsistency
3970 '') echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
3972 *) echo "Hmm. Based on the hints in hints/$hintfile.sh, " >&4
3973 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
3978 echo "*** WHOA THERE!!! ***" >&4
3979 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3982 rp=" Keep the $hint value?"
3985 y) td=$was; tu=$was;;
3989 : function used to set $1 to $val
3990 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3992 $define$undef) . ./whoa; eval "$var=\$td";;
3993 $undef$define) . ./whoa; eval "$var=\$tu";;
3994 *) eval "$var=$val";;
3998 $define|true|[yY]*) dflt='y';;
4003 Perl can be built to use the SOCKS proxy protocol library. To do so,
4004 Configure must be run with -Dusesocks. If you use SOCKS you also need
4005 to use the PerlIO abstraction layer, this will be implicitly selected.
4007 If this doesn't make any sense to you, just accept the default '$dflt'.
4009 rp='Build Perl for SOCKS?'
4012 y|Y) val="$define" ;;
4019 $define|true|[yY]*) useperlio="$define";;
4022 case "$useperlio" in
4023 $define|true|[yY]*|'') dflt='y';;
4028 Previous version of $package used the standard IO mechanisms as
4029 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
4030 alternate IO mechanisms via the PerlIO abstraction layer, but the
4031 stdio mechanism is still available if needed. The abstraction layer
4032 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
4033 Using PerlIO with sfio may cause problems with some extension modules.
4035 If this doesn't make any sense to you, just accept the default '$dflt'.
4037 rp='Use the PerlIO abstraction layer?'
4044 echo "Ok, doing things the stdio way."
4053 case "$useperlio" in
4054 $define|true|[yY]*) ;;
4057 You are using the SOCKS proxy protocol library which means that you
4058 should also use the PerlIO layer. You may be headed for trouble.
4067 : get the patchlevel
4069 echo "Getting the current patchlevel..." >&4
4070 if $test -r $rsrc/patchlevel.h;then
4071 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4072 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4073 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4074 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4075 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4076 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4077 perl_patchlevel=`egrep 'define PERL_PATCHNUM [0-9][0-9]|,"MAINT[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
4086 $echo "(You do not have patchlevel.h. Eek.)"
4088 if $test -r $rsrc/.patch ; then
4089 if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
4090 perl_patchlevel=`cat $rsrc/.patch`
4093 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4094 version_patchlevel_string="version $patchlevel subversion $subversion"
4095 case "$perl_patchlevel" in
4097 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
4100 $echo "(You have $package $version_patchlevel_string.)"
4104 : XXX Should be a Configure test for double-dots in filenames.
4105 version=`echo $revision $patchlevel $subversion | \
4106 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4107 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4108 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4111 version=`echo $revision $patchlevel $subversion | \
4112 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4113 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4114 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4117 : Special case the 5.005_xx maintenance series, which used 5.005
4118 : without any subversion label as a subdirectory in $sitelib
4119 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4120 api_versionstring='5.005'
4123 case "$usethreads" in
4124 $define|true|[yY]*) dflt='y';;
4125 *) # Catch case where user specified ithreads or 5005threads but
4126 # forgot -Dusethreads (A.D. 4/2002)
4127 case "$useithreads$use5005threads" in
4129 case "$useperlio" in
4130 "$define") dflt='y' ;;
4140 Perl can be built to take advantage of threads on some systems.
4141 To do so, Configure can be run with -Dusethreads.
4143 Note that Perl built with threading support runs slightly slower
4144 and uses more memory than plain Perl. The current implementation
4145 is believed to be stable, but it is fairly new, and so should be
4146 treated with caution.
4148 If this doesn't make any sense to you, just accept the default '$dflt'.
4150 rp='Build a threading Perl?'
4153 y|Y) val="$define" ;;
4159 if $test $patchlevel -lt 9; then
4160 case "$usethreads" in
4164 Since release 5.6, Perl has had two different threading implementations,
4165 the newer interpreter-based version (ithreads) with one interpreter per
4166 thread, and the older 5.005 version (5005threads).
4167 The 5005threads version is effectively unmaintained and will probably be
4168 removed in Perl 5.10, so there should be no need to build a Perl using it
4169 unless needed for backwards compatibility with some existing 5.005threads
4173 : Default to ithreads unless overridden on command line or with
4176 case "$use5005threads" in
4177 $define|true|[yY]*) dflt='n';;
4179 case "$useithreads" in
4180 $undef|false|[nN]*) dflt='n';;
4182 rp='Use the newer interpreter-based ithreads?'
4185 y|Y) val="$define" ;;
4190 : Now set use5005threads to the opposite value.
4191 case "$useithreads" in
4192 $define) val="$undef" ;;
4199 useithreads="$undef"
4200 use5005threads="$undef"
4204 case "$useithreads$use5005threads" in
4208 You cannot have both the ithreads and the 5.005 threads enabled
4209 at the same time. Disabling the 5.005 threads since they are
4210 much less stable than the ithreads.
4213 use5005threads="$undef"
4218 : perl-5.9.x and later
4220 if test X"$usethreads" = "X$define"; then
4221 case "$use5005threads" in
4225 5.005 threads has been removed for 5.10. Perl will be built using ithreads.
4232 use5005threads="$undef"
4233 useithreads="$usethreads"
4236 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
4239 *** To build with ithreads you must also use the PerlIO layer.
4240 *** Cannot continue, aborting.
4246 case "$d_oldpthreads" in
4247 '') : Configure tests would be welcome here. For now, assume undef.
4249 *) val="$d_oldpthreads" ;;
4255 : Look for a hint-file generated 'call-back-unit'. If the
4256 : user has specified that a threading perl is to be built,
4257 : we may need to set or change some other defaults.
4258 if $test -f usethreads.cbu; then
4259 echo "Your platform has some specific hints regarding threaded builds, using them..."
4262 case "$usethreads" in
4263 "$define"|true|[yY]*)
4265 (Your platform does not have any specific hints for threaded builds.
4266 Assuming POSIX threads, then.)
4274 Perl can be built so that multiple Perl interpreters can coexist
4275 within the same Perl executable.
4278 case "$useithreads" in
4281 This multiple interpreter support is required for interpreter-based threads.
4285 *) case "$usemultiplicity" in
4286 $define|true|[yY]*) dflt='y';;
4290 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4291 rp='Build Perl for multiplicity?'
4294 y|Y) val="$define" ;;
4303 case "$usemorebits" in
4304 "$define"|true|[yY]*)
4305 use64bitint="$define"
4306 uselongdouble="$define"
4307 usemorebits="$define"
4309 *) usemorebits="$undef"
4313 : make some quick guesses about what we are up against
4315 $echo $n "Hmm... $c"
4325 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
4326 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
4328 echo "Looks kind of like an OSF/1 system, but we'll see..."
4330 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4331 xxx=`./loc addbib blurfl $pth`
4332 if $test -f $xxx; then
4333 echo "Looks kind of like a USG system with BSD features, but we'll see..."
4337 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4338 echo "Looks kind of like an extended USG system, but we'll see..."
4340 echo "Looks kind of like a USG system, but we'll see..."
4344 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4345 echo "Looks kind of like a BSD system, but we'll see..."
4349 echo "Looks kind of like a Version 7 system, but we'll see..."
4352 case "$eunicefix" in
4355 There is, however, a strange, musty smell in the air that reminds me of
4356 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4360 : it so happens the Eunice I know will not run shell scripts in Unix format
4364 echo "Congratulations. You aren't running Eunice."
4368 : Detect OS2. The p_ variable is set above in the Head.U unit.
4369 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4370 : semicolon as a patch separator
4375 I have the feeling something is not exactly right, however...don't tell me...
4376 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4377 (Or you may be running DOS with DJGPP.)
4382 if test -f /xenix; then
4383 echo "Actually, this looks more like a XENIX system..."
4388 echo "It's not Xenix..."
4393 if test -f /venix; then
4394 echo "Actually, this looks more like a VENIX system..."
4401 echo "Nor is it Venix..."
4404 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4405 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4412 rp="Use which C compiler?"
4416 : See if they have not cc but they do have gcc
4418 : Look for a hint-file generated 'call-back-unit'. Now that the
4419 : user has specified the compiler, we may need to set or change some
4421 if $test -f cc.cbu; then
4427 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4431 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4433 printf("%s\n", __VERSION__);
4435 printf("%s\n", "1");
4441 if $cc -o try $ccflags $ldflags try.c; then
4442 gccversion=`$run ./try`
4443 case "$gccversion" in
4444 '') echo "You are not using GNU cc." ;;
4445 *) echo "You are using GNU cc $gccversion."
4451 echo "*** WHOA THERE!!! ***" >&4
4452 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
4453 case "$knowitall" in
4455 echo " You'd better start hunting for one and let me know about it." >&4
4461 case "$gccversion" in
4462 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4464 case "$gccversion" in
4465 '') gccosandvers='' ;;
4466 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4467 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4469 case "$gccosandvers" in
4470 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4471 $osname$osvers) ;; # looking good
4472 $osname*) cat <<EOM >&4
4474 *** WHOA THERE!!! ***
4476 Your gcc has not been compiled for the exact release of
4477 your operating system ($gccosandvers versus $osname$osvers).
4479 In general it is a good idea to keep gcc synchronized with
4480 the operating system because otherwise serious problems
4481 may ensue when trying to compile software, like Perl.
4483 I'm trying to be optimistic here, though, and will continue.
4484 If later during the configuration and build icky compilation
4485 problems appear (headerfile conflicts being the most common
4486 manifestation), I suggest reinstalling the gcc to match
4487 your operating system release.
4491 *) gccosandvers='' ;; # failed to parse, better be silent
4499 # gcc 3.* complain about adding -Idirectories that they already know about,
4500 # so we will take those off from locincpth.
4501 case "$gccversion" in
4503 echo "main(){}">try.c
4504 for incdir in $locincpth; do
4505 warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4506 grep '^c[cp]p*[01]: warning: changing search order '`
4507 if test "X$warn" != X; then
4508 locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4514 : What should the include directory be ?
4516 $echo $n "Hmm... $c"
4520 if $test -f /bin/mips && /bin/mips; then
4521 echo "Looks like a MIPS system..."
4522 $cat >usr.c <<'EOCP'
4523 #ifdef SYSTYPE_BSD43
4527 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4528 dflt='/bsd43/usr/include'
4532 mips_type='System V'
4534 $rm -f usr.c usr.out
4535 echo "and you're compiling with the $mips_type compiler and libraries."
4539 echo "Doesn't look like a MIPS system."
4549 case "$xxx_prompt" in
4552 rp='Where are the include files you want to use?'
4560 : see how we invoke the C preprocessor
4562 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4563 cat <<'EOT' >testcpp.c
4569 if test ! -f cppstdin; then
4570 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4571 # AIX cc -E doesn't show the absolute headerfile
4572 # locations but we'll cheat by using the -M flag.
4573 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
4575 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4578 echo "Keeping your $hint cppstdin wrapper."
4581 wrapper=`pwd`/cppstdin
4585 if $test "X$cppstdin" != "X" && \
4586 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4587 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4589 echo "You used to use $cppstdin $cppminus so we'll use that again."
4591 '') echo "But let's see if we can live without a wrapper..." ;;
4593 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4594 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4596 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4599 echo "(However, $cpprun $cpplast does not work, let's see...)"
4607 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4614 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4615 $cc -E <testcpp.c >testcpp.out 2>&1; \
4616 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4617 echo "Yup, it does."
4620 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4621 $cc -E - <testcpp.c >testcpp.out 2>&1; \
4622 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4623 echo "Yup, it does."
4626 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4627 $cc -P <testcpp.c >testcpp.out 2>&1; \
4628 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4629 echo "Yipee, that works!"
4632 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4633 $cc -P - <testcpp.c >testcpp.out 2>&1; \
4634 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4635 echo "At long last!"
4638 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4639 $cpp <testcpp.c >testcpp.out 2>&1; \
4640 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4644 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4645 $cpp - <testcpp.c >testcpp.out 2>&1; \
4646 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4647 echo "Hooray, it works! I was beginning to wonder."
4650 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
4651 $wrapper <testcpp.c >testcpp.out 2>&1; \
4652 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4658 rp="No dice. I can't find a C preprocessor. Name one:"
4662 $x_cpp <testcpp.c >testcpp.out 2>&1
4663 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4664 echo "OK, that will do." >&4
4666 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
4681 echo "Perhaps can we force $cc -E using a wrapper..."
4682 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4683 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4689 echo "Nope, we'll have to live without it..."
4703 "$wrapper"|'cppstdin') ;;
4704 *) $rm -f $wrapper;;
4706 $rm -f testcpp.c testcpp.out
4708 : Set private lib path
4711 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4716 '') dlist="$loclibpth $plibpth $glibpth";;
4717 *) dlist="$libpth";;
4720 : Now check and see which directories actually exist, avoiding duplicates
4724 if $test -d $xxx; then
4727 *) libpth="$libpth $xxx";;
4733 Some systems have incompatible or broken versions of libraries. Among
4734 the directories listed in the question below, please remove any you
4735 know not to be holding relevant libraries, and add any that are needed.
4736 Say "none" for none.
4747 rp="Directories to use for library searches?"
4754 : compute shared library extension
4757 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4767 On some systems, shared libraries may be available. Answer 'none' if
4768 you want to suppress searching of shared libraries for the remainder
4769 of this configuration.
4772 rp='What is the file extension used for shared libraries?'
4776 : Define several unixisms.
4777 : Hints files or command line option can be used to override them.
4778 : The convoluted testing is in case hints files set either the old
4781 '') case "$exe_ext" in
4783 *) _exe="$exe_ext" ;;
4788 '') case "$lib_ext" in
4795 '') case "$obj_ext" in
4802 '') case "$path_sep" in
4813 rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
4815 : Which makefile gets called first. This is used by make depend.
4816 case "$firstmakefile" in
4817 '') firstmakefile='makefile';;
4821 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4824 case "$uselongdouble" in
4825 $define|true|[yY]*) dflt='y';;
4830 Perl can be built to take advantage of long doubles which
4831 (if available) may give more accuracy and range for floating point numbers.
4833 If this doesn't make any sense to you, just accept the default '$dflt'.
4835 rp='Try to use long doubles if available?'
4838 y|Y) val="$define" ;;
4844 case "$uselongdouble" in
4845 true|[yY]*) uselongdouble="$define" ;;
4848 : Look for a hint-file generated 'call-back-unit'. If the
4849 : user has specified that long doubles should be used,
4850 : we may need to set or change some other defaults.
4851 if $test -f uselongdouble.cbu; then
4852 echo "Your platform has some specific hints regarding long doubles, using them..."
4853 . ./uselongdouble.cbu
4855 case "$uselongdouble" in
4858 (Your platform does not have any specific hints for long doubles.)
4864 : Looking for optional libraries
4866 echo "Checking for optional libraries..." >&4
4871 case "$libswanted" in
4872 '') libswanted='c_s';;
4875 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4881 for thisdir in $libpth $xlibpth; do
4882 test -d $thisdir && libspath="$libspath $thisdir"
4884 for thislib in $libswanted; do
4885 for thisdir in $libspath; do
4887 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4888 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
4889 $test -f "$xxx" && eval $libscheck
4890 $test -f "$xxx" && libstyle=shared
4892 if test ! -f "$xxx"; then
4893 xxx=$thisdir/lib$thislib.$so
4894 $test -f "$xxx" && eval $libscheck
4895 $test -f "$xxx" && libstyle=shared
4897 if test ! -f "$xxx"; then
4898 xxx=$thisdir/lib$thislib$_a
4899 $test -f "$xxx" && eval $libscheck
4900 $test -f "$xxx" && libstyle=static
4902 if test ! -f "$xxx"; then
4903 xxx=$thisdir/$thislib$_a
4904 $test -f "$xxx" && eval $libscheck
4905 $test -f "$xxx" && libstyle=static
4907 if test ! -f "$xxx"; then
4908 xxx=$thisdir/lib${thislib}_s$_a
4909 $test -f "$xxx" && eval $libscheck
4910 $test -f "$xxx" && libstyle=static
4911 $test -f "$xxx" && thislib=${thislib}_s
4913 if test ! -f "$xxx"; then
4914 xxx=$thisdir/Slib$thislib$_a
4915 $test -f "$xxx" && eval $libscheck
4916 $test -f "$xxx" && libstyle=static
4918 if $test -f "$xxx"; then
4920 shared) echo "Found -l$thislib (shared)." ;;
4921 static) echo "Found -l$thislib." ;;
4922 *) echo "Found -l$thislib ($libstyle)." ;;
4926 *) dflt="$dflt -l$thislib"
4927 libsfound="$libsfound $xxx"
4929 libsfiles="$libsfiles $yyy"
4930 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4931 case " $libsdirs " in
4933 *) libsdirs="$libsdirs $yyy" ;;
4940 if $test ! -f "$xxx"; then
4941 echo "No -l$thislib."
4952 ' '|'') dflt='none';;
4957 In order to compile $package on your machine, a number of libraries
4958 are usually needed. Include any other special libraries here as well.
4959 Say "none" for none. The default list is almost always right.
4963 rp="What libraries to use?"
4970 : determine optimization, if desired, or use for debug flag also
4972 ' '|$undef) dflt='none';;
4974 *) dflt="$optimize";;
4978 By default, $package compiles with the -O flag to use the optimizer.
4979 Alternately, you might want to use the symbolic debugger, which uses
4980 the -g flag (on traditional Unix systems). Either flag can be
4981 specified here. To use neither flag, specify the word "none".
4984 rp="What optimizer/debugger flag should be used?"
4988 'none') optimize=" ";;
4991 : Check what DEBUGGING is required from the command line
4992 : -DEBUGGING or -DDEBUGGING or
4993 : -DEBUGGING=both = -g + -DDEBUGGING
4994 : -DEBUGGING=-g or -Doptimize=-g = -g
4995 : -DEBUGGING=none or -UDEBUGGING =
4996 : -DEBUGGING=old or -DEBUGGING=default = ? $optimize
4999 *) DEBUGGING=$EBUGGING ;;
5002 case "$DEBUGGING" in
5006 *) optimize="$optimize -g" ;;
5010 *-g*) set `echo "X $optimize " | sed 's/ -g / /'`
5018 case "$DEBUGGING" in
5019 both|$define) dflt='-DDEBUGGING'
5022 : We will not override a previous value, but we might want to
5023 : augment a hint file
5025 default|recommended)
5026 case "$gccversion" in
5027 1*) dflt="$dflt -fpcc-struct-return" ;;
5029 case "$optimize:$DEBUGGING" in
5030 *-g*:old) dflt="$dflt -DDEBUGGING";;
5032 case "$gccversion" in
5033 2*) if test -d /etc/conf/kconfig.d &&
5034 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
5036 # Interactive Systems (ISC) POSIX mode.
5041 case "$gccversion" in
5045 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
5046 echo 'int main(void) { return 0; }' > gcctest.c
5047 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
5048 echo "Yes, it does." 2>&1
5051 echo "Leaving current flags $ccflags alone." 2>&1
5053 *) dflt="$dflt -fno-strict-aliasing" ;;
5056 echo "Nope, it doesn't, but that's ok." 2>&1
5060 # For gcc, adding -pipe speeds up compilations for some, but apparently
5061 # some assemblers can't read from stdin. (It also slows down compilations
5062 # in other cases, but those are apparently rarer these days.) AD 5/2004.
5063 case "$gccversion" in
5065 echo "Checking if your compiler accepts -pipe" 2>&1
5066 echo 'int main(void) { return 0; }' > gcctest.c
5067 if $cc -pipe -o gcctest gcctest.c; then
5068 echo "Yes, it does." 2>&1
5071 echo "Leaving current flags $ccflags alone." 2>&1
5073 *) dflt="$dflt -pipe" ;;
5076 echo "Nope, it doesn't, but that's ok." 2>&1
5083 case "$mips_type" in
5084 *BSD*|'') inclwanted="$locincpth $usrinc";;
5085 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
5087 for thisincl in $inclwanted; do
5088 if $test -d $thisincl; then
5089 if $test x$thisincl != x$usrinc; then
5091 *" -I$thisincl "*);;
5092 *) dflt="$dflt -I$thisincl ";;
5098 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
5100 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
5108 *) dflt="$dflt -D$2";;
5112 set signal.h LANGUAGE_C; eval $inctest
5116 ccflags="$ccflags -DSOCKS"
5121 default|recommended) dflt="$ccflags $dflt" ;;
5122 *) dflt="$ccflags";;
5131 Your C compiler may want other flags. For this question you should include
5132 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
5133 but you should NOT include libraries or ld flags like -lwhatever. If you
5134 want $package to honor its debug switch, you should include -DDEBUGGING here.
5135 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
5137 To use no flags, specify the word "none".
5143 rp="Any additional cc flags?"
5150 : the following weeds options from ccflags that are of no interest to cpp
5152 '') cppflags="$ccflags" ;;
5153 *) cppflags="$cppflags $ccflags" ;;
5155 case "$gccversion" in
5156 1*) cppflags="$cppflags -D__GNUC__"
5158 case "$mips_type" in
5160 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
5166 echo "Let me guess what the preprocessor flags are..." >&4
5180 *) ftry="$previous $flag";;
5182 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
5183 >cpp1.out 2>/dev/null && \
5184 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
5185 >cpp2.out 2>/dev/null && \
5186 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
5187 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
5189 cppflags="$cppflags $ftry"
5199 *-*) echo "They appear to be: $cppflags";;
5201 $rm -f cpp.c cpp?.out
5205 : flags used in final linking phase
5207 '') if ./venix; then
5213 *-posix*) dflt="$dflt -posix" ;;
5216 *) dflt="$ldflags";;
5219 : Try to guess additional flags to pick up local libraries.
5220 for thislibdir in $libpth; do
5221 case " $loclibpth " in
5224 *"-L$thislibdir "*) ;;
5225 *) dflt="$dflt -L$thislibdir" ;;
5237 Your C linker may need flags. For this question you should
5238 include -L/whatever and any other flags used by the C linker, but you
5239 should NOT include libraries like -lwhatever.
5241 Make sure you include the appropriate -L/path flags if your C linker
5242 does not normally search all of the directories you specified above,
5245 To use no flags, specify the word "none".
5249 rp="Any additional ld flags (NOT including libraries)?"
5255 rmlist="$rmlist pdp11"
5259 echo "Checking your choice of C compiler and flags for coherency..." >&4
5260 $cat > try.c <<'EOF'
5262 int main() { printf("Ok\n"); return(0); }
5264 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
5266 $cat >try.msg <<'EOM'
5267 I've tried to compile and run the following simple program:
5270 $cat try.c >> try.msg
5272 $cat >> try.msg <<EOM
5279 and I got the following output:
5283 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5284 if $sh -c "$run ./try" >>try.msg 2>&1; then
5288 *) echo 'The program compiled OK, but produced no output.' >> try.msg
5291 cat >> try.msg <<'EOQS'
5292 If $libs contains -lsfio, and sfio is mis-configured, then it
5293 sometimes (apparently) runs and exits with a 0 status, but with no
5294 output! It may have to do with sfio's use of _exit vs. exit.
5297 rp="You have a big problem. Shall I abort Configure"
5304 echo "The program compiled OK, but exited with status $?." >>try.msg
5305 rp="You have a problem. Shall I abort Configure"
5309 echo "I can't compile the test program." >>try.msg
5310 rp="You have a BIG problem. Shall I abort Configure"
5316 case "$knowitall" in
5318 echo "(The supplied flags or libraries might be incorrect.)"
5326 *) echo "Ok. Stopping Configure." >&4
5331 n) echo "OK, that should do.";;
5335 : define a shorthand compile call
5339 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5340 : define a shorthand compile call for compilations that should be ok.
5344 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5346 : determine filename position in cpp output
5348 echo "Computing filename position in cpp output for #include directives..." >&4
5350 vos) testaccess=-e ;;
5353 echo '#include <stdio.h>' > foo.c
5356 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5357 $grep '^[ ]*#.*stdio\.h' | \
5358 while read cline; do
5361 while $test \$# -gt 0; do
5362 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5367 pos=\`expr \$pos + 1\`
5379 *) pos="${fieldn}th";;
5381 echo "Your cpp writes the filename in the $pos field of the line."
5384 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
5385 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
5388 : locate header file
5393 for usrincdir in $usrinc
5395 if test -f \$usrincdir/\$wanted; then
5396 echo "\$usrincdir/\$wanted"
5400 awkprg='{ print \$$fieldn }'
5401 echo "#include <\$wanted>" > foo\$\$.c
5402 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5403 $cppfilter $grep "^[ ]*#.*\$wanted" | \
5404 while read cline; do
5405 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5407 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5408 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5413 # status = 0: grep returned 0 lines, case statement not executed
5414 # status = 1: headerfile found
5415 # status = 2: while loop executed, no headerfile found
5419 if test \$status -eq 1; then
5426 : define an alternate in-header-list? function
5427 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5428 cont=true; xxf="echo \"<\$1> found.\" >&4";
5429 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5430 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5432 case $# in 4) instead=instead;; *) instead="at last";; esac;
5433 while $test "$cont"; do
5435 var=$2; eval "was=\$$2";
5436 if $test "$xxx" && $test -r "$xxx";
5438 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5441 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5442 set $yyy; shift; shift; yyy=$@;
5443 case $# in 0) cont="";;
5444 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5445 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5446 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5447 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5451 do set $yyy; var=$2; eval "was=\$$2";
5452 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5453 set $yyy; shift; shift; yyy=$@;
5456 : see if stdlib is available
5457 set stdlib.h i_stdlib
5460 : check for lengths of integral types
5464 echo "Checking to see how big your integers are..." >&4
5473 printf("intsize=%d;\n", (int)sizeof(int));
5474 printf("longsize=%d;\n", (int)sizeof(long));
5475 printf("shortsize=%d;\n", (int)sizeof(short));
5480 if eval $compile_ok && $run ./try > /dev/null; then
5482 echo "Your integers are $intsize bytes long."
5483 echo "Your long integers are $longsize bytes long."
5484 echo "Your short integers are $shortsize bytes long."
5488 Help! I can't compile and run the intsize test program: please enlighten me!
5489 (This is probably a misconfiguration in your system or libraries, and
5490 you really ought to fix it. Still, I'll try anyway.)
5494 rp="What is the size of an integer (in bytes)?"
5498 rp="What is the size of a long integer (in bytes)?"
5502 rp="What is the size of a short integer (in bytes)?"
5510 : check for long long
5512 echo "Checking to see if you have long long..." >&4
5513 echo 'int main() { long long x = 7; return 0; }' > try.c
5515 if eval $compile; then
5517 echo "You have long long."
5520 echo "You do not have long long."
5526 : check for length of long long
5527 case "${d_longlong}${longlongsize}" in
5530 echo "Checking to see how big your long longs are..." >&4
5531 $cat >try.c <<'EOCP'
5535 printf("%d\n", (int)sizeof(long long));
5540 if eval $compile_ok; then
5541 longlongsize=`$run ./try`
5542 echo "Your long longs are $longlongsize bytes long."
5546 echo "(I can't seem to compile the test program. Guessing...)"
5547 rp="What is the size of a long long (in bytes)?"
5551 if $test "X$longsize" = "X$longlongsize"; then
5552 echo "(That isn't any different from an ordinary long.)"
5558 : see if inttypes.h is available
5559 : we want a real compile instead of Inhdr because some systems
5560 : have an inttypes.h which includes non-existent headers
5563 #include <inttypes.h>
5565 static int32_t foo32 = 0x12345678;
5569 if eval $compile; then
5570 echo "<inttypes.h> found." >&4
5573 echo "<inttypes.h> NOT found." >&4
5582 echo "Checking to see if you have int64_t..." >&4
5584 #include <sys/types.h>
5585 #$i_inttypes I_INTTYPES
5587 #include <inttypes.h>
5589 int main() { int64_t x = 7; }
5592 if eval $compile; then
5594 echo "You have int64_t."
5597 echo "You do not have int64_t."
5605 echo "Checking which 64-bit integer type we could use..." >&4
5611 val='"unsigned int"'
5616 *) case "$longsize" in
5620 val='"unsigned long"'
5625 *) case "$d_longlong:$longlongsize" in
5630 val='"unsigned long long"'
5635 *) case "$d_int64_t" in
5654 '') echo "Alas, no 64-bit integer types in sight." >&4
5657 *) echo "We could use '$quadtype' for 64-bit integers." >&4
5663 case "$uselonglong" in
5664 "$define"|true|[yY]*)
5667 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5669 use64bitint="$define"
5672 case "$use64bits" in
5673 "$define"|true|[yY]*)
5676 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5678 use64bitint="$define"
5681 case "$use64bitints" in
5682 "$define"|true|[yY]*)
5685 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5687 use64bitint="$define"
5690 case "$use64bitsint" in
5691 "$define"|true|[yY]*)
5694 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5696 use64bitint="$define"
5699 case "$uselonglongs" in
5700 "$define"|true|[yY]*)
5703 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5705 use64bitint="$define"
5708 case "$use64bitsall" in
5709 "$define"|true|[yY]*)
5712 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5714 use64bitall="$define"
5719 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5721 case "$use64bitall" in
5722 "$define"|true|[yY]*) use64bitint="$define" ;;
5728 You have natively 64-bit long integers.
5732 *) case "$use64bitint" in
5733 "$define"|true|[yY]*) dflt='y';;
5742 Perl can be built to take advantage of 64-bit integer types
5743 on some systems. To do so, Configure can be run with -Duse64bitint.
5744 Choosing this option will most probably introduce binary incompatibilities.
5746 If this doesn't make any sense to you, just accept the default '$dflt'.
5747 (The default has been chosen based on your configuration.)
5749 rp='Try to use 64-bit integers, if available?'
5752 [yY]*) val="$define" ;;
5760 case "$use64bitall" in
5761 "$define"|true|[yY]*) dflt='y' ;;
5762 *) case "$longsize" in
5770 You may also choose to try maximal 64-bitness. It means using as much
5771 64-bitness as possible on the platform. This in turn means even more
5772 binary incompatibilities. On the other hand, your platform may not
5773 have any more 64-bitness available than what you already have chosen.
5775 If this doesn't make any sense to you, just accept the default '$dflt'.
5776 (The default has been chosen based on your configuration.)
5778 rp='Try to use maximal 64-bit support, if available?'
5781 [yY]*) val="$define" ;;
5786 case "$use64bitall" in
5788 case "$use64bitint" in
5792 Since you have chosen a maximally 64-bit build, I'm also turning on
5793 the use of 64-bit integers.
5795 use64bitint="$define" ;;
5800 : Look for a hint-file generated 'call-back-unit'. If the
5801 : user has specified that a 64-bit perl is to be built,
5802 : we may need to set or change some other defaults.
5803 if $test -f use64bitint.cbu; then
5804 echo "Your platform has some specific hints regarding 64-bit integers, using them..."
5807 case "$use64bitint" in
5808 "$define"|true|[yY]*)
5810 4) case "$archname64" in
5811 '') archname64=64int ;;
5818 : Look for a hint-file generated 'call-back-unit'. If the
5819 : user has specified that a maximally 64-bit perl is to be built,
5820 : we may need to set or change some other defaults.
5821 if $test -f use64bitall.cbu; then
5822 echo "Your platform has some specific hints regarding 64-bit builds, using them..."
5825 case "$use64bitall" in
5826 "$define"|true|[yY]*)
5828 4) case "$archname64" in
5829 ''|64int) archname64=64all ;;
5836 case "$d_quad:$use64bitint" in
5840 *** You have chosen to use 64-bit integers,
5841 *** but none can be found.
5842 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
5843 *** Cannot continue, aborting.
5850 : check for length of double
5852 case "$doublesize" in
5854 echo "Checking to see how big your double precision numbers are..." >&4
5863 printf("%d\n", (int)sizeof(double));
5868 if eval $compile_ok; then
5869 doublesize=`$run ./try`
5870 echo "Your double is $doublesize bytes long."
5873 echo "(I can't seem to compile the test program. Guessing...)"
5874 rp="What is the size of a double precision number (in bytes)?"
5882 : check for long doubles
5884 echo "Checking to see if you have long double..." >&4
5885 echo 'int main() { long double x = 7.0; }' > try.c
5887 if eval $compile; then
5889 echo "You have long double."
5892 echo "You do not have long double."
5898 : check for length of long double
5899 case "${d_longdbl}${longdblsize}" in
5902 echo "Checking to see how big your long doubles are..." >&4
5903 $cat >try.c <<'EOCP'
5907 printf("%d\n", sizeof(long double));
5912 if eval $compile; then
5913 longdblsize=`$run ./try`
5914 echo "Your long doubles are $longdblsize bytes long."
5918 echo "(I can't seem to compile the test program. Guessing...)" >&4
5919 rp="What is the size of a long double (in bytes)?"
5923 if $test "X$doublesize" = "X$longdblsize"; then
5924 echo "That isn't any different from an ordinary double."
5925 echo "I'll keep your setting anyway, but you may see some"
5926 echo "harmless compilation warnings."
5932 : determine the architecture name
5934 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5935 tarch=`arch`"-$osname"
5936 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5937 if uname -m > tmparch 2>&1 ; then
5938 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5939 -e 's/$/'"-$osname/" tmparch`
5947 case "$myarchname" in
5950 echo "(Your architecture name used to be $myarchname.)"
5954 case "$targetarch" in
5956 *) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5961 *) dflt="$archname";;
5963 rp='What is your architecture name'
5966 case "$usethreads" in
5968 echo "Threads selected." >&4
5970 *-thread*) echo "...and architecture name already has -thread." >&4
5972 *) archname="$archname-thread"
5973 echo "...setting architecture name to $archname." >&4
5978 case "$usemultiplicity" in
5980 echo "Multiplicity selected." >&4
5982 *-multi*) echo "...and architecture name already has -multi." >&4
5984 *) archname="$archname-multi"
5985 echo "...setting architecture name to $archname." >&4
5990 case "$use64bitint$use64bitall" in
5992 case "$archname64" in
5994 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5997 case "$use64bitint" in
5998 "$define") echo "64 bit integers selected." >&4 ;;
6000 case "$use64bitall" in
6001 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6004 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6006 *) archname="$archname-$archname64"
6007 echo "...setting architecture name to $archname." >&4
6013 case "$uselongdouble" in
6015 echo "Long doubles selected." >&4
6016 case "$longdblsize" in
6018 echo "...but long doubles are equal to doubles, not changing architecture name." >&4
6022 *-ld*) echo "...and architecture name already has -ld." >&4
6024 *) archname="$archname-ld"
6025 echo "...setting architecture name to $archname." >&4
6032 case "$useperlio" in
6034 echo "Perlio selected." >&4
6037 echo "Perlio not selected, using stdio." >&4
6039 *-stdio*) echo "...and architecture name already has -stdio." >&4
6041 *) archname="$archname-stdio"
6042 echo "...setting architecture name to $archname." >&4
6047 if $test -f archname.cbu; then
6048 echo "Your platform has some specific hints for architecture name, using them..."
6052 : set the prefixit variable, to compute a suitable default value
6053 prefixit='case "$3" in
6055 case "$oldprefix" in
6056 "") eval "$1=\"\$$2\"";;
6063 ""|" ") eval "$1=\"\$$2\"";;
6069 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6071 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6072 /*-$oldprefix/*|\~*-$oldprefix/*)
6073 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6074 *) eval "$1=\"\$$2\"";;
6078 : determine installation style
6079 : For now, try to deduce it from prefix unless it is already set.
6080 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6081 case "$installstyle" in
6082 '') case "$prefix" in
6083 *perl*) dflt='lib';;
6084 *) dflt='lib/perl5' ;;
6087 *) dflt="$installstyle" ;;
6089 : Probably not worth prompting for this since we prompt for all
6090 : the directories individually, and the prompt would be too long and
6094 : determine where public executables go
6099 rp='Pathname where the public executables will reside?'
6101 if $test "X$ansexp" != "X$binexp"; then
6105 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6106 : XXX If this is fixed, also fix the "start perl" hunk below, which relies on
6107 : this via initialinstalllocation
6110 case "$userelocatableinc" in
6111 $define|true|[yY]*) dflt='y' ;;
6116 Would you like to build Perl so that the installation is relocatable, so that
6117 library paths in @INC are determined relative to the path of the perl binary?
6118 This is not advised for system Perl installs, or if you need to run setid
6119 scripts or scripts under taint mode.
6121 If this doesn't make any sense to you, just accept the default '$dflt'.
6123 rp='Use relocatable @INC?'
6126 y|Y) val="$define" ;;
6129 set userelocatableinc
6132 initialinstalllocation="$binexp"
6133 : Default prefix is now "up one level from where the binaries are"
6134 case "$userelocatableinc" in
6140 installprefixexp=".../.."
6144 : determine where private library files go
6145 : Usual default is /usr/local/lib/perl5/$version.
6146 : Also allow things like /opt/perl/lib/$version, since
6147 : /opt/perl/lib/perl5... would be redundant.
6148 : The default "style" setting is made in installstyle.U
6149 case "$installstyle" in
6150 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6151 *) set dflt privlib lib/$version ;;
6156 There are some auxiliary files for $package that need to be put into a
6157 private library directory that is accessible by everyone.
6162 rp='Pathname where the private library files will reside?'
6167 : set the prefixup variable, to restore leading tilda escape
6168 prefixup='case "$prefixexp" in
6170 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6173 : determine where public architecture dependent libraries go
6176 : privlib default is /usr/local/lib/$package/$version
6177 : archlib default is /usr/local/lib/$package/$version/$archname
6178 : privlib may have an optional trailing /share.
6179 tdflt=`echo $privlib | $sed 's,/share$,,'`
6180 tdflt=$tdflt/$archname
6189 $spackage contains architecture-dependent library files. If you are
6190 sharing libraries in a heterogeneous environment, you might store
6191 these files in a separate location. Otherwise, you can just include
6192 them with the rest of the public library files.
6197 rp='Where do you want to put the public architecture-dependent libraries?'
6201 if $test X"$archlib" = X"$privlib"; then
6207 : see if setuid scripts can be secure
6210 Some kernels have a bug that prevents setuid #! scripts from being
6211 secure. Some sites have disabled setuid #! scripts because of this.
6213 First let's decide if your kernel supports secure setuid #! scripts.
6214 (If setuid #! scripts would be secure but have been disabled anyway,
6215 don't say that they are secure if asked.)
6220 if $test -d /dev/fd; then
6221 echo "#!$ls" >reflect
6222 chmod +x,u+s reflect
6223 ./reflect >flect 2>&1
6224 if $contains "/dev/fd" flect >/dev/null; then
6225 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6229 If you are not sure if they are secure, I can check but I'll need a
6230 username and password different from the one you are using right now.
6231 If you don't have such a username or don't want me to test, simply
6235 rp='Other username to test security of setuid scripts with?'
6240 case "$d_suidsafe" in
6241 '') echo "I'll assume setuid scripts are *not* secure." >&4
6244 echo "Well, the $hint value is *not* secure." >&4
6246 *) echo "Well, the $hint value *is* secure." >&4
6251 $rm -f reflect flect
6252 echo "#!$ls" >reflect
6253 chmod +x,u+s reflect
6256 echo '"su" will (probably) prompt you for '"$ans's password."
6257 su $ans -c './reflect >flect'
6258 if $contains "/dev/fd" flect >/dev/null; then
6259 echo "Okay, it looks like setuid scripts are secure." >&4
6262 echo "I don't think setuid scripts are secure." >&4
6267 rp='Does your kernel have *secure* setuid scripts?'
6270 [yY]*) val="$define";;
6275 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6276 echo "(That's for file descriptors, not floppy disks.)"
6282 $rm -f reflect flect
6284 : now see if they want to do setuid emulation
6287 case "$d_suidsafe" in
6290 echo "No need to emulate SUID scripts since they are secure here." >&4
6294 Some systems have disabled setuid scripts, especially systems where
6295 setuid scripts cannot be secure. On systems where setuid scripts have
6296 been disabled, the setuid/setgid bits on scripts are currently
6297 useless. It is possible for $package to detect those bits and emulate
6298 setuid/setgid in a secure fashion. This emulation will only work if
6299 setuid scripts have been disabled in your kernel.
6303 "$define") dflt=y ;;
6306 rp="Do you want to do setuid/setgid emulation?"
6309 [yY]*) val="$define";;
6317 : Find perl5.005 or later.
6318 echo "Looking for a previously installed perl5.005 or later... "
6320 '') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6321 : Check if this perl is recent and can load a simple module
6322 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6325 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6335 '') echo "None found. That's ok.";;
6336 *) echo "Using $perl5." ;;
6341 After $package is installed, you may wish to install various
6342 add-on modules and utilities. Typically, these add-ons will
6343 be installed under $prefix with the rest
6344 of this package. However, you may wish to install such add-ons
6345 elsewhere under a different prefix.
6347 If you do not wish to put everything under a single prefix, that's
6348 ok. You will be prompted for the individual locations; this siteprefix
6349 is only used to suggest the defaults.
6351 The default should be fine for most people.
6355 rp='Installation prefix to use for add-on modules and utilities?'
6356 : XXX Here might be another good place for an installstyle setting.
6357 case "$siteprefix" in
6359 *) dflt=$siteprefix ;;
6362 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6364 case "$siteprefix" in
6368 *) oldsiteprefix="$prefix";;
6373 siteprefixexp="$ansexp"
6375 : determine where site specific libraries go.
6376 : Usual default is /usr/local/lib/perl5/site_perl/$version
6377 : The default "style" setting is made in installstyle.U
6378 : XXX No longer works with Prefixit stuff.
6379 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6381 '') case "$installstyle" in
6382 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6383 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6391 The installation process will create a directory for
6392 site-specific extensions and modules. Most users find it convenient
6393 to place all site-specific files in this directory rather than in the
6394 main distribution directory.
6398 rp='Pathname for the site-specific library files?'
6402 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6404 : Determine list of previous versions to include in @INC
6405 $cat > getverlist <<EOPL
6408 \$api_versionstring = "$api_versionstring";
6409 \$version = "$version";
6410 \$stem = "$sitelib_stem";
6411 \$archname = "$archname";
6413 $cat >> getverlist <<'EOPL'
6414 # The list found is store twice for each entry: the original name, and
6415 # the binary broken down version as pack "sss", so sorting is easy and
6416 # unambiguous. This will work for all versions that have a maximum of
6417 # three digit groups, separate by '.'s or '_'s. Names are extended with
6418 # ".0.0" to ensure at least three elements for the pack.
6419 # -- H.Merijn Brand (m)'06 23-10-2006
6421 # Can't have leading @ because metaconfig interprets it as a command!
6422 ;@inc_version_list=();
6423 # XXX Redo to do opendir/readdir?
6426 ;@candidates = map {
6427 [ $_, pack "sss", split m/[._]/, "$_.0.0" ] } glob("5.*");
6433 ($pversion, $aversion, $vsn5005) = map {
6434 pack "sss", split m/[._]/, "$_.0.0" } $version, $api_versionstring, "5.005";
6435 foreach $d (@candidates) {
6436 if ($d->[1] lt $pversion) {
6437 if ($d->[1] ge $aversion) {
6438 unshift(@inc_version_list, grep { -d } $d->[0]."/$archname", $d->[0]);
6440 elsif ($d->[1] ge $vsn5005) {
6441 unshift(@inc_version_list, grep { -d } $d->[0]);
6445 # Skip newer version. I.e. don't look in
6446 # 5.7.0 if we're installing 5.6.1.
6450 if (@inc_version_list) {
6451 print join(' ', @inc_version_list);
6454 # Blank space to preserve value for next Configure run.
6459 case "$inc_version_list" in
6460 '') if test -x "$perl5$exe_ext"; then
6461 dflt=`$perl5 getverlist`
6466 $undef) dflt='none' ;;
6467 *) eval dflt=\"$inc_version_list\" ;;
6470 ''|' ') dflt=none ;;
6477 In order to ease the process of upgrading, this version of perl
6478 can be configured to use modules built and installed with earlier
6479 versions of perl that were installed under $prefix. Specify here
6480 the list of earlier versions that this version of perl should check.
6481 If Configure detected no earlier versions of perl installed under
6482 $prefix, then the list will be empty. Answer 'none' to tell perl
6483 to not search earlier versions.
6485 The default should almost always be sensible, so if you're not sure,
6486 just accept the default.
6489 rp='List of earlier versions to include in @INC?'
6492 [Nn]one|''|' '|$undef) inc_version_list=' ' ;;
6493 *) inc_version_list="$ans" ;;
6495 case "$inc_version_list" in
6497 inc_version_list_init='0'
6498 d_inc_version_list="$undef"
6500 *) inc_version_list_init=`echo $inc_version_list |
6501 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6502 d_inc_version_list="$define"
6507 : see if this is a malloc.h system
6508 : we want a real compile instead of Inhdr because some systems have a
6509 : malloc.h that just gives a compile error saying to use stdlib.h instead
6514 int main () { return 0; }
6517 if eval $compile; then
6518 echo "<malloc.h> found." >&4
6521 echo "<malloc.h> NOT found." >&4
6528 : check for void type
6530 echo "Checking to see how well your C compiler groks the void type..." >&4
6531 case "$voidflags" in
6543 extern void moo(); /* function returning void */
6544 void (*goo)(); /* ptr to func returning void */
6546 void *hue; /* generic ptr */
6559 int main() { sub(); }
6561 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
6562 voidflags=$defvoidused
6563 echo "Good. It appears to support void to the level $package wants.">&4
6564 if $contains warning .out >/dev/null 2>&1; then
6565 echo "However, you might get some warnings that look like this:"
6569 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
6570 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
6571 echo "It supports 1..."
6572 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
6573 echo "It also supports 2..."
6574 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
6576 echo "And it supports 4 but not 8 definitely."
6578 echo "It doesn't support 4..."
6579 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
6581 echo "But it supports 8."
6584 echo "Neither does it support 8."
6588 echo "It does not support 2..."
6589 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
6591 echo "But it supports 4 and 8."
6593 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
6595 echo "And it supports 4 but has not heard about 8."
6597 echo "However it supports 8 but not 4."
6602 echo "There is no support at all for void."
6607 case "$voidflags" in
6610 Support flag bits are:
6611 1: basic void declarations.
6612 2: arrays of pointers to functions returning void.
6613 4: operations between pointers to and addresses of void functions.
6614 8: generic void pointers.
6617 rp="Your void support flags add up to what?"
6624 : check for length of pointer
6628 echo "Checking to see how big your pointers are..." >&4
6629 if test "$voidflags" -gt 7; then
6630 echo '#define VOID_PTR char *' > try.c
6632 echo '#define VOID_PTR void *' > try.c
6642 printf("%d\n", (int)sizeof(VOID_PTR));
6647 if eval $compile_ok; then
6648 ptrsize=`$run ./try`
6649 echo "Your pointers are $ptrsize bytes long."
6652 echo "(I can't seem to compile the test program. Guessing...)" >&4
6653 rp="What is the size of a pointer (in bytes)?"
6660 case "$use64bitall" in
6661 "$define"|true|[yY]*)
6665 *** You have chosen a maximally 64-bit build,
6666 *** but your pointers are only 4 bytes wide.
6667 *** Please rerun Configure without -Duse64bitall.
6672 *** Since you have quads, you could possibly try with -Duse64bitint.
6677 *** Cannot continue, aborting.
6688 : determine whether to use malloc wrapping
6690 case "$usemallocwrap" in
6691 [yY]*|true|$define) dflt='y' ;;
6692 [nN]*|false|$undef) dflt='n' ;;
6693 *) case "$usedevel" in
6694 [yY]*|true|$define) dflt='y' ;;
6699 rp="Do you wish to wrap malloc calls to protect against potential overflows?"
6701 usemallocwrap="$ans"
6704 usemallocwrap="$define" ;;
6706 usemallocwrap="$undef" ;;
6709 : determine which malloc to compile in
6711 case "$usemymalloc" in
6712 [yY]*|true|$define) dflt='y' ;;
6713 [nN]*|false|$undef) dflt='n' ;;
6714 *) case "$ptrsize" in
6720 rp="Do you wish to attempt to use the malloc that comes with $package?"
6726 mallocsrc='malloc.c'
6727 mallocobj="malloc$_o"
6728 d_mymalloc="$define"
6731 : Remove malloc from list of libraries to use
6732 echo "Removing unneeded -lmalloc from library list" >&4
6733 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6736 echo "libs = $libs" >&4
6748 : compute the return types of malloc and free
6750 $cat >malloc.c <<END
6754 #include <sys/types.h>
6768 case "$malloctype" in
6770 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6777 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6781 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6788 echo "Your system uses $freetype free(), it would seem." >&4
6790 : determine where site specific architecture-dependent libraries go.
6791 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6792 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6793 : sitelib may have an optional trailing /share.
6795 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6796 dflt="$dflt/$archname"
6801 set sitearch sitearch none
6805 The installation process will also create a directory for
6806 architecture-dependent site-specific extensions and modules.
6810 rp='Pathname for the site-specific architecture-dependent library files?'
6814 if $test X"$sitearch" = X"$sitelib"; then
6817 d_sitearch="$define"
6822 The installation process will also create a directory for
6823 vendor-supplied add-ons. Vendors who supply perl with their system
6824 may find it convenient to place all vendor-supplied files in this
6825 directory rather than in the main distribution directory. This will
6826 ease upgrades between binary-compatible maintenance versions of perl.
6828 Of course you may also use these directories in whatever way you see
6829 fit. For example, you might use them to access modules shared over a
6830 company-wide network.
6832 The default answer should be fine for most people.
6833 This causes further questions about vendor add-ons to be skipped
6834 and no vendor-specific directories will be configured for perl.
6837 rp='Do you want to configure vendor-specific add-on directories?'
6838 case "$usevendorprefix" in
6839 define|true|[yY]*) dflt=y ;;
6840 *) : User may have set vendorprefix directly on Configure command line.
6841 case "$vendorprefix" in
6850 rp='Installation prefix to use for vendor-supplied add-ons?'
6851 case "$vendorprefix" in
6853 *) dflt=$vendorprefix ;;
6856 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6858 case "$vendorprefix" in
6862 *) oldvendorprefix="$prefix";;
6866 usevendorprefix="$define"
6868 vendorprefixexp="$ansexp"
6870 *) usevendorprefix="$undef"
6876 case "$vendorprefix" in
6877 '') d_vendorlib="$undef"
6881 *) d_vendorlib="$define"
6882 : determine where vendor-supplied modules go.
6883 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6884 case "$vendorlib" in
6886 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6887 case "$installstyle" in
6888 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6889 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6892 *) dflt="$vendorlib"
6896 rp='Pathname for the vendor-supplied library files?'
6899 vendorlibexp="$ansexp"
6902 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6906 case "$vendorprefix" in
6907 '') d_vendorarch="$undef"
6911 *) d_vendorarch="$define"
6912 : determine where vendor-supplied architecture-dependent libraries go.
6913 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6914 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6915 : vendorlib may have an optional trailing /share.
6916 case "$vendorarch" in
6917 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6918 dflt="$dflt/$archname"
6920 *) dflt="$vendorarch" ;;
6923 rp='Pathname for vendor-supplied architecture-dependent files?'
6926 vendorarchexp="$ansexp"
6929 prefixvar=vendorarch
6932 : Final catch-all directories to search
6935 Lastly, you can have perl look in other directories for extensions and
6936 modules in addition to those already specified.
6937 These directories will be searched after
6941 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6942 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6944 case "$otherlibdirs" in
6945 ''|' ') dflt='none' ;;
6946 *) dflt="$otherlibdirs" ;;
6949 Enter a colon-separated set of extra paths to include in perl's @INC
6950 search path, or enter 'none' for no extra paths.
6954 rp='Colon-separated list of additional directories for perl to search?'
6957 ' '|''|none) otherlibdirs=' ' ;;
6958 *) otherlibdirs="$ans" ;;
6960 case "$otherlibdirs" in
6964 set d_perl_otherlibdirs
6967 : Cruising for prototypes
6969 echo "Checking out function prototypes..." >&4
6970 $cat >prototype.c <<EOCP
6975 int main(int argc, char *argv[]) {
6978 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6979 echo "Your C compiler appears to support function prototypes."
6982 echo "Your C compiler doesn't seem to understand function prototypes."
6989 case "$prototype" in
6991 *) ansi2knr='ansi2knr'
6996 This version of $package can only be compiled by a compiler that
6997 understands function prototypes. Unfortunately, your C compiler
6999 doesn't seem to understand them. Sorry about that.
7001 If GNU cc is available for your system, perhaps you could try that instead.
7003 Eventually, we hope to support building Perl with pre-ANSI compilers.
7004 If you would like to help in that effort, please contact <perlbug@perl.org>.
7006 Aborting Configure now.
7018 Perl can be built with extra modules or bundles of modules which
7019 will be fetched from the CPAN and installed alongside Perl.
7021 Notice that you will need access to the CPAN; either via the Internet,
7022 or a local copy, for example a CD-ROM or a local CPAN mirror. (You will
7023 be asked later to configure the CPAN.pm module which will in turn do
7024 the installation of the rest of the extra modules or bundles.)
7026 Notice also that if the modules require any external software such as
7027 libraries and headers (the libz library and the zlib.h header for the
7028 Compress::Zlib module, for example) you MUST have any such software
7029 already installed, this configuration process will NOT install such
7032 If this doesn't make any sense to you, just accept the default '$dflt'.
7034 rp='Install any extra modules (y or n)?'
7040 Please list any extra modules or bundles to be installed from CPAN,
7041 with spaces between the names. The names can be in any format the
7042 'install' command of CPAN.pm will understand. (Answer 'none',
7043 without the quotes, to install no extra modules or bundles.)
7053 $rm -f ../extras.lst
7055 *) echo "(Saving the list of extras for later...)"
7056 echo "$extras" > ../extras.lst
7064 : determine where html pages for programs go
7065 set html1dir html1dir none
7069 If you wish to install html files for programs in $spackage, indicate
7070 the appropriate directory here. To skip installing html files,
7074 ''|none|$undef|' ') dflt=none ;;
7075 *) dflt=$html1dir ;;
7078 rp="Directory for the main $spackage html pages?"
7082 : Use ' ' for none so value is preserved next time through Configure
7083 $test X"$html1dir" = "X" && html1dir=' '
7085 : determine where html pages for libraries and modules go
7086 set html3dir html3dir none
7090 If you wish to install html files for modules associated with $spackage,
7091 indicate the appropriate directory here. To skip installing html files,
7094 : There is no obvious default. If they have specified html1dir, then
7095 : try to key off that, possibly changing .../html1 into .../html3.
7097 '') html3dir=`echo "$html1dir" | $sed 's/1$/3$/'` ;;
7098 *) dflt=$html3dir ;;
7101 rp="Directory for the $spackage module html pages?"
7105 : Use ' ' for none so value is preserved next time through Configure
7106 $test X"$html3dir" = "X" && html3dir=' '
7108 : determine whether to install perl also as /usr/bin/perl
7111 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7113 Many scripts expect perl to be installed as /usr/bin/perl.
7115 If you want to, I can install the perl you are about to compile
7116 as /usr/bin/perl (in addition to $bin/perl).
7118 if test -f /usr/bin/perl; then
7121 However, please note that because you already have a /usr/bin/perl,
7122 overwriting that with a new Perl would very probably cause problems.
7123 Therefore I'm assuming you don't want to do that (unless you insist).
7126 case "$installusrbinperl" in
7127 "$define"|[yY]*) dflt='y';;
7133 Since you don't have a /usr/bin/perl I'm assuming creating one is okay.
7136 case "$installusrbinperl" in
7137 "$undef"|[nN]*) dflt='n';;
7141 rp="Do you want to install perl as /usr/bin/perl?"
7144 [yY]*) val="$define";;
7150 set installusrbinperl
7154 echo "Checking for GNU C Library..." >&4
7156 /* Find out version of GNU C library. __GLIBC__ and __GLIBC_MINOR__
7157 alone are insufficient to distinguish different versions, such as
7158 2.0.6 and 2.0.7. The function gnu_get_libc_version() appeared in
7159 libc version 2.1.0. A. Dougherty, June 3, 2002.
7165 # ifdef __GLIBC_MINOR__
7166 # if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus)
7167 # include <gnu/libc-version.h>
7168 printf("%s\n", gnu_get_libc_version());
7170 printf("%d.%d\n", __GLIBC__, __GLIBC_MINOR__);
7173 printf("%d\n", __GLIBC__);
7182 if eval $compile_ok && $run ./try > glibc.ver; then
7184 gnulibc_version=`$cat glibc.ver`
7185 echo "You are using the GNU C Library version $gnulibc_version"
7189 echo "You are not using the GNU C Library"
7195 : see if nm is to be used to determine whether a symbol is defined or not
7199 case "$d_gnulibc" in
7202 echo "nm probably won't work on the GNU C Library." >&4
7208 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
7210 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
7211 echo "'nm' won't be sufficient on this sytem." >&4
7217 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
7218 if $test $dflt -gt 20; then
7228 true|$define) dflt=y;;
7235 I can use $nm to extract the symbols from your C libraries. This
7236 is a time consuming task which may generate huge output on the disk (up
7237 to 3 megabytes) but that should make the symbols extraction faster. The
7238 alternative is to skip the 'nm' extraction part and to compile a small
7239 test program instead to determine whether each symbol is present. If
7240 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
7241 this may be the best solution.
7243 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
7246 rp="Shall I use $nm to extract C symbols from the libraries?"
7249 [Nn]*) usenm=false;;
7258 : nm options which may be necessary
7260 '') if $test -f /mach_boot; then
7262 elif $test -d /usr/ccs/lib; then
7263 nm_opt='-p' # Solaris (and SunOS?)
7264 elif $test -f /dgux; then
7266 elif $test -f /lib64/rld; then
7267 nm_opt='-p' # 64-bit Irix
7273 : nm options which may be necessary for shared libraries but illegal
7274 : for archive libraries. Thank you, Linux.
7275 case "$nm_so_opt" in
7276 '') case "$myuname" in
7278 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
7279 nm_so_opt='--dynamic'
7288 : get list of predefined functions in a handy place
7293 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
7299 *) for thislib in $libs; do
7302 : Handle C library specially below.
7305 thislib=`echo $thislib | $sed -e 's/^-l//'`
7306 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
7308 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
7310 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
7312 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
7314 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
7316 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
7318 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
7323 libnames="$libnames $try"
7325 *) libnames="$libnames $thislib" ;;
7334 for xxx in $libpth; do
7335 $test -r $1 || set $xxx/libc.$so
7336 : The messy sed command sorts on library version numbers.
7338 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
7339 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
7341 s/[0-9][0-9]*/0000&/g
7342 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
7345 $sort | $sed -e 's/^.* //'`
7348 $test -r $1 || set /usr/ccs/lib/libc.$so
7349 $test -r $1 || set /lib/libsys_s$_a
7355 if $test -r "$1"; then
7356 echo "Your (shared) C library seems to be in $1."
7358 elif $test -r /lib/libc && $test -r /lib/clib; then
7359 echo "Your C library seems to be in both /lib/clib and /lib/libc."
7361 libc='/lib/clib /lib/libc'
7362 if $test -r /lib/syslib; then
7363 echo "(Your math library is in /lib/syslib.)"
7364 libc="$libc /lib/syslib"
7366 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7367 echo "Your C library seems to be in $libc, as you said before."
7368 elif $test -r $incpath/usr/lib/libc$_a; then
7369 libc=$incpath/usr/lib/libc$_a;
7370 echo "Your C library seems to be in $libc. That's fine."
7371 elif $test -r /lib/libc$_a; then
7373 echo "Your C library seems to be in $libc. You're normal."
7375 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
7377 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
7378 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
7379 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
7381 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7383 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
7386 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
7388 if $test -r "$tans"; then
7389 echo "Your C library seems to be in $tans, of all places."
7395 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
7399 If the guess above is wrong (which it might be if you're using a strange
7400 compiler, or your machine supports multiple models), you can override it here.
7405 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
7407 I can't seem to find your C library. I've looked in the following places:
7410 $sed 's/^/ /' libpath
7413 None of these seems to contain your C library. I need to get its name...
7418 rp='Where is your C library?'
7423 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
7424 set X `cat libnames`
7427 case $# in 1) xxx=file; esac
7428 echo "Extracting names from the following $xxx for later perusal:" >&4
7430 $sed 's/^/ /' libnames >&4
7432 $echo $n "This may take a while...$c" >&4
7436 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
7437 *) $nm $nm_opt $file 2>/dev/null;;
7442 $grep fprintf libc.tmp > libc.ptf
7443 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
7444 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
7446 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *//p'";\
7448 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7450 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
7452 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7454 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
7456 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7458 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
7460 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7462 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
7464 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7466 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
7468 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7470 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
7471 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
7473 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7475 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
7477 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7479 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
7481 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7483 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
7485 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7487 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
7489 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7491 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
7493 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7495 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
7497 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7499 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
7501 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
7504 $nm -p $* 2>/dev/null >libc.tmp
7505 $grep fprintf libc.tmp > libc.ptf
7506 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
7507 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
7513 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
7515 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
7516 for thisname in $libnames $libc; do
7517 $ar t $thisname >>libc.tmp
7519 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
7521 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
7522 # Repeat libc to extract forwarders to DLL entries too
7523 for thisname in $libnames $libc; do
7524 $ar tv $thisname >>libc.tmp
7525 # Revision 50 of EMX has bug in $ar.
7526 # it will not extract forwarders to DLL entries
7527 # Use emximp which will extract exactly them.
7528 emximp -o tmp.imp $thisname \
7530 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
7531 < tmp.imp >>libc.tmp
7534 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
7537 echo "$ar didn't seem to work right." >&4
7538 echo "Maybe this is a Cray...trying bld instead..." >&4
7539 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
7541 for thisname in $libnames; do
7543 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
7544 $ar t $thisname >>libc.tmp
7548 echo "That didn't work either. Giving up." >&4
7558 echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
7559 dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
7561 *) if $test -f /lib/syscalls.exp; then
7563 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
7564 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*[ ]*$/\1/p' /lib/syscalls.exp >>libc.list
7570 $rm -f libnames libpath
7572 : see if dld is available
7578 echo "Checking for C++..." >&4
7579 $cat >try.c <<'EOCP'
7591 if eval $compile_ok && $run ./try; then
7593 echo "You are using a C++ compiler."
7596 echo "You are not using a C++ compiler."
7602 : is a C symbol defined?
7605 -v) tf=libc.tmp; tdc="";;
7606 -a) tf=libc.tmp; tdc="[]";;
7607 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
7610 case "$reuseval-$4" in
7612 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
7617 case "$d_cplusplus" in
7618 $define) extern_C=\"C\";;
7620 if $test "$runnm" = true; then
7621 if $contains $tlook $tf >/dev/null 2>&1; then
7623 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
7624 echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7625 $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
7626 $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
7630 echo "extern $extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p()) return(0); else return(1); }"> try.c;
7631 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
7637 $define) tval=true;;
7644 : define an is-in-libc? function
7645 inlibc='echo " "; td=$define; tu=$undef;
7646 sym=$1; var=$2; eval "was=\$$2";
7648 case "$reuseval$was" in
7658 echo "$sym() found." >&4;
7659 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
7661 echo "$sym() NOT found." >&4;
7662 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
7666 $define) echo "$sym() found." >&4;;
7667 *) echo "$sym() NOT found." >&4;;
7671 : see if dlopen exists
7673 xxx_ccflags="$ccflags"
7675 : with g++ one needs -shared to get is-in-libc to work for dlopen
7676 case "$gccversion" in
7678 *) case "$d_cplusplus" in
7679 "$define") ccflags="$ccflags -shared" ;;
7686 ccflags="$xxx_ccflags"
7688 : see if this is a unistd.h system
7689 set unistd.h i_unistd
7692 : determine which dynamic loading, if any, to compile in
7694 dldir="ext/DynaLoader"
7707 $define) dflt='y' ;;
7710 $define) dflt='y' ;;
7712 : Does a dl_xxx.xs file exist for this operating system
7713 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7716 rp="Do you wish to use dynamic loading?"
7723 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7724 dflt="$dldir/dl_${osname}.xs"
7725 elif $test "$d_dlopen" = "$define" ; then
7726 dflt="$dldir/dl_dlopen.xs"
7727 elif $test "$i_dld" = "$define" ; then
7728 dflt="$dldir/dl_dld.xs"
7733 *) dflt="$dldir/$dlsrc"
7736 echo "The following dynamic loading files are available:"
7737 : Can not go over to $dldir because getfile has path hard-coded in.
7738 tdir=`pwd`; cd "$rsrc"; $ls -C $dldir/dl*.xs; cd "$tdir"
7739 rp="Source file to use for dynamic loading"
7745 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7749 Some systems may require passing special flags to $cc -c to
7750 compile modules that will be used to create a shared library.
7751 To use no flags, say "none".
7754 case "$cccdlflags" in
7755 '') case "$gccversion" in
7756 '') case "$osname" in
7758 next) dflt='none' ;;
7759 irix*) dflt='-KPIC' ;;
7760 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7761 sunos) dflt='-pic' ;;
7765 *) case "$osname" in
7766 darwin) dflt='none' ;;
7767 linux*|svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7772 *) dflt="$cccdlflags" ;;
7774 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7777 none) cccdlflags=' ' ;;
7778 *) cccdlflags="$ans" ;;
7783 Some systems use ld to create libraries that can be dynamically loaded,
7784 while other systems (such as those using ELF) use $cc.
7788 '') $cat >try.c <<EOM
7789 /* Test for whether ELF binaries are produced */
7801 int i = open("a.out",O_RDONLY);
7804 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7805 exit(0); /* succeed (yes, it's ELF) */
7810 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7812 You appear to have ELF support. I'll use $cc to build dynamic libraries.
7816 echo "I'll use ld to build dynamic libraries."
7825 rp="What command should be used to create dynamic libraries?"
7831 Some systems may require passing special flags to $ld to create a
7832 library that can be dynamically loaded. If your ld flags include
7833 -L/other/path options to locate libraries outside your loader's normal
7834 search path, you may need to specify those -L options here as well. To
7835 use no flags, say "none".
7838 case "$lddlflags" in
7839 '') case "$osname" in
7840 beos) dflt='-nostart' ;;
7842 case "$gccversion" in
7843 '') dflt="$dflt +vnocompatwarnings" ;;
7846 linux|irix*|gnu*) dflt="-shared $optimize" ;;
7847 next) dflt='none' ;;
7848 solaris) dflt='-G' ;;
7849 sunos) dflt='-assert nodefinitions' ;;
7850 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7854 *) dflt="$lddlflags" ;;
7857 : Try to guess additional flags to pick up local libraries.
7858 : Be careful not to append to a plain 'none'
7862 for thisflag in $ldflags; do
7867 *) dflt="$dflt $thisflag" ;;
7874 ''|' ') dflt='none' ;;
7877 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7880 none) lddlflags=' ' ;;
7881 *) lddlflags="$ans" ;;
7886 Some systems may require passing special flags to $cc to indicate that
7887 the resulting executable will use dynamic linking. To use no flags,
7891 case "$ccdlflags" in
7892 '') case "$osname" in
7893 linux|hpux|gnu*) dflt='-Wl,-E' ;;
7894 next|sunos) dflt='none' ;;
7898 *) dflt="$ccdlflags" ;;
7900 rp="Any special flags to pass to $cc to use dynamic linking?"
7903 none) ccdlflags=' ' ;;
7904 *) ccdlflags="$ans" ;;
7918 # No dynamic loading being used, so don't bother even to prompt.
7921 *) case "$useshrplib" in
7922 '') case "$osname" in
7923 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7925 also='Building a shared libperl is required for dynamic loading to work on your system.'
7930 also='Building a shared libperl is needed for MAB support.'
7948 The perl executable is normally obtained by linking perlmain.c with
7949 libperl${_a}, any static extensions (usually just DynaLoader), and
7950 any other libraries needed on this system (such as -lm, etc.). Since
7951 your system supports dynamic loading, it is probably possible to build
7952 a shared libperl.$so. If you will have more than one executable linked
7953 to libperl.$so, this will significantly reduce the size of each
7954 executable, but it may have a noticeable effect on performance. The
7955 default is probably sensible for your system.
7959 rp="Build a shared libperl.$so (y/n)"
7963 useshrplib='true' ;;
7964 *) useshrplib='false' ;;
7969 case "$useshrplib" in
7973 # Figure out a good name for libperl.so. Since it gets stored in
7974 # a version-specific architecture-dependent library, the version
7975 # number isn't really that important, except for making cc/ld happy.
7977 # A name such as libperl.so.3.1
7978 majmin="libperl.$so.$patchlevel.$subversion"
7979 # A name such as libperl.so.301
7980 majonly=`echo $patchlevel $subversion |
7981 $awk '{printf "%d%02d", $1, $2}'`
7982 majonly=libperl.$so.$majonly
7983 # I'd prefer to keep the os-specific stuff here to a minimum, and
7984 # rely on figuring it out from the naming of libc.
7985 case "${osname}${osvers}" in
7988 # XXX How handle the --version stuff for MAB?
7990 linux*|gnu*) # ld won't link with a bare -lperl otherwise.
7993 cygwin*) # ld links against an importlib
7994 dflt=libperl$lib_ext
7996 *) # Try to guess based on whether libc has major.minor.
7998 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7999 *libc.$so.[0-9]*) dflt=$majonly ;;
8000 *) dflt=libperl.$so ;;
8010 I need to select a good name for the shared libperl. If your system uses
8011 library names with major and minor numbers, then you might want something
8012 like $majmin. Alternatively, if your system uses a single version
8013 number for shared libraries, then you might want to use $majonly.
8014 Or, your system might be quite happy with a simple libperl.$so.
8016 Since the shared libperl will get installed into a version-specific
8017 architecture-dependent directory, the version number of the shared perl
8018 library probably isn't important, so the default should be o.k.
8021 rp='What name do you want to give to the shared libperl?'
8024 echo "Ok, I'll use $libperl"
8027 libperl="libperl${_a}"
8031 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
8035 WARNING: Use of the shrpdir variable for the installation location of
8036 the shared $libperl is not supported. It was never documented and
8037 will not work in this version. Let me (perlbug@perl.org)
8038 know of any problems this may cause.
8044 But your current setting of $shrpdir is
8045 the default anyway, so it's harmless.
8050 Further, your current attempted setting of $shrpdir
8051 conflicts with the value of $archlibexp/CORE
8052 that installperl will use.
8059 # How will the perl executable find the installed shared $libperl?
8060 # Add $xxx to ccdlflags.
8061 # If we can't figure out a command-line option, use $shrpenv to
8062 # set env LD_RUN_PATH. The main perl makefile uses this.
8063 shrpdir=$archlibexp/CORE
8066 if "$useshrplib"; then
8069 # We'll set it in Makefile.SH...
8074 freebsd|netbsd|openbsd|interix|dragonfly)
8075 xxx="-Wl,-R$shrpdir"
8077 bsdos|linux|irix*|dec_osf|gnu*)
8078 xxx="-Wl,-rpath,$shrpdir"
8081 # next doesn't like the default...
8084 # beos doesn't like the default, either.
8087 # hpux doesn't like the default, either.
8088 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
8091 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
8097 # Only add $xxx if it isn't already in ccdlflags.
8098 case " $ccdlflags " in
8100 *) ccdlflags="$ccdlflags $xxx"
8103 Adding $xxx to the flags
8104 passed to $ld so that the perl executable will find the
8105 installed shared $libperl.
8113 # Fix ccdlflags in AIX for building external extensions.
8114 # (For building Perl itself bare -bE:perl.exp is needed,
8115 # Makefile.SH takes care of this.)
8117 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
8119 # Respect a hint or command-line value.
8121 '') shrpenv="$tmp_shrpenv" ;;
8123 case "$ldlibpthname" in
8124 '') ldlibpthname=LD_LIBRARY_PATH ;;
8125 none) ldlibpthname='' ;;
8128 : determine where manual pages are on this system
8132 syspath='/usr/share/man/man1 /usr/man/man1'
8133 syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
8134 syspath="$syspath /usr/man/u_man/man1"
8135 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
8136 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
8137 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
8138 sysman=`./loc . /usr/man/man1 $syspath`
8141 if $test -d "$sysman"; then
8142 echo "System manual is in $sysman." >&4
8144 echo "Could not find manual pages in source form." >&4
8147 : determine where manual pages go
8148 set man1dir man1dir none
8152 $spackage has manual pages available in source form.
8156 echo "However, you don't have nroff, so they're probably useless to you."
8158 '') man1dir="none";;
8161 echo "If you don't want the manual sources installed, answer 'none'."
8166 lookpath="$prefixexp/share/man/man1"
8167 lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
8168 lookpath="$lookpath $prefixexp/man/p_man/man1"
8169 lookpath="$lookpath $prefixexp/man/u_man/man1"
8170 lookpath="$lookpath $prefixexp/man/man.1"
8172 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
8173 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
8183 rp="Where do the main $spackage manual pages (source) go?"
8185 if $test "X$man1direxp" != "X$ansexp"; then
8196 : What suffix to use on installed man pages
8203 rp="What suffix should be used for the main $spackage man pages?"
8205 '') case "$man1dir" in
8219 *) dflt="$man1ext";;
8226 : see if we can have long filenames
8228 first=123456789abcdef
8230 if (echo hi >$first) 2>/dev/null; then
8231 if $test -f 123456789abcde; then
8232 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
8235 echo 'You can have filenames longer than 14 characters.'>&4
8240 You can't have filenames longer than 14 chars.
8241 You can't even think about them!
8247 $rm -rf 123456789abcde*
8249 : determine where library module manual pages go
8250 set man3dir man3dir none
8254 $spackage has manual pages for many of the library modules.
8260 However, you don't have nroff, so they're probably useless to you.
8263 '') man3dir="none";;
8267 case "$d_flexfnam" in
8270 However, your system can't handle the long file names like File::Basename.3.
8273 '') man3dir="none";;
8277 echo "If you don't want the manual sources installed, answer 'none'."
8278 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
8280 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
8281 if $test -d "$privlib/man/man3"; then
8284 WARNING: Previous versions of perl installed man3 pages into
8285 $privlib/man/man3. This version will suggest a
8286 new default of $dflt.
8290 rp='Do you wish to preserve the old behavior?(y/n)'
8293 y*) dflt="$privlib/man/man3" ;;
8298 *) dflt="$man3dir" ;;
8305 rp="Where do the $package library man pages (source) go?"
8315 : What suffix to use on installed man pages
8321 rp="What suffix should be used for the $package library man pages?"
8323 '') case "$man3dir" in
8337 *) dflt="$man3ext";;
8344 : see if we have to deal with yellow pages, now NIS.
8345 if $test -d /usr/etc/yp || $test -d /etc/yp || $test -d /usr/lib/yp; then
8346 if $test -f /usr/etc/nibindd; then
8348 echo "I'm fairly confident you're on a NeXT."
8350 rp='Do you get the hosts file via NetInfo?'
8359 y*) hostcat='nidump hosts .';;
8360 *) case "$hostcat" in
8361 nidump*) hostcat='';;
8371 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
8379 rp='Are you getting the hosts file via yellow pages?'
8382 y*) hostcat='ypcat hosts';;
8383 *) hostcat='cat /etc/hosts';;
8389 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
8392 '') test -f /etc/group && groupcat='cat /etc/group';;
8395 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
8398 : now get the host name
8400 echo "Figuring out host name..." >&4
8401 case "$myhostname" in
8403 echo 'Maybe "hostname" will work...'
8404 if tans=`sh -c hostname 2>&1` ; then
8412 if $test "$cont"; then
8414 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
8415 if tans=`cat /etc/systemid 2>&1` ; then
8417 phostname='cat /etc/systemid'
8418 echo "Whadyaknow. Xenix always was a bit strange..."
8421 elif $test -r /etc/systemid; then
8422 echo "(What is a non-Xenix system doing with /etc/systemid?)"
8425 if $test "$cont"; then
8426 echo 'No, maybe "uuname -l" will work...'
8427 if tans=`sh -c 'uuname -l' 2>&1` ; then
8429 phostname='uuname -l'
8431 echo 'Strange. Maybe "uname -n" will work...'
8432 if tans=`sh -c 'uname -n' 2>&1` ; then
8434 phostname='uname -n'
8436 echo 'Oh well, maybe I can mine it out of whoami.h...'
8437 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
8438 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
8439 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
8441 case "$myhostname" in
8442 '') echo "Does this machine have an identity crisis or something?"
8445 echo "Well, you said $myhostname before..."
8446 phostname='echo $myhostname';;
8452 case "$myhostname" in
8453 '') myhostname=noname ;;
8455 : you do not want to know about this
8460 if $test "$myhostname" ; then
8462 rp='Your host name appears to be "'$myhostname'".'" Right?"
8470 : bad guess or no guess
8471 while $test "X$myhostname" = X ; do
8473 rp="Please type the (one word) name of your host:"
8478 : translate upper to lower if necessary
8479 case "$myhostname" in
8481 echo "(Normalizing case in your host name)"
8482 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
8486 case "$myhostname" in
8488 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
8489 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
8490 echo "(Trimming domain name from host name--host name is now $myhostname)"
8492 *) case "$mydomain" in
8495 test "X$hostcat" = "Xypcat hosts" &&
8496 ypmatch "$myhostname" hosts 2>/dev/null |\
8497 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
8500 test "X$hostcat" != "X" &&
8501 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
8502 /[ ]$myhostname[ . ]/p" > hosts
8505 if $test -f hosts; then
8506 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
8507 END { print sum }" hosts` = x1 || tmp_re="[ ]"
8508 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
8509 hosts | $sort | $uniq | \
8510 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
8511 case `$echo X$dflt` in
8512 X*\ *) echo "(Several hosts in the database matched hostname)"
8515 X.) echo "(You do not have fully-qualified names in the hosts database)"
8519 echo "(I cannot locate a hosts database anywhere)"
8524 tans=`./loc resolv.conf X /etc /usr/etc`
8525 if $test -f "$tans"; then
8526 echo "(Attempting domain name extraction from $tans)"
8527 dflt=.`$sed -n -e 's/ / /g' \
8528 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
8529 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8531 .) dflt=.`$sed -n -e 's/ / /g' \
8532 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
8533 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
8540 .) echo "(No help from resolv.conf either -- attempting clever guess)"
8541 dflt=.`sh -c domainname 2>/dev/null`
8544 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
8548 case "$dflt$osname" in
8549 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
8550 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
8554 .) echo "(Lost all hope -- silly guess then)"
8560 *) dflt="$mydomain";;
8564 rp="What is your domain name?"
8574 : translate upper to lower if necessary
8577 echo "(Normalizing case in your domain name)"
8578 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
8582 : a little sanity check here
8583 case "$phostname" in
8586 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
8587 $myhostname$mydomain|$myhostname) ;;
8589 case "$phostname" in
8591 echo "(That doesn't agree with your whoami.h file, by the way.)"
8594 echo "(That doesn't agree with your $phostname command, by the way.)"
8604 I need to get your e-mail address in Internet format if possible, i.e.
8605 something like user@host.domain. Please answer accurately since I have
8606 no easy means to double check it. The default value provided below
8607 is most probably close to reality but may not be valid from outside
8608 your organization...
8612 while test "$cont"; do
8614 '') dflt="$cf_by@$myhostname$mydomain";;
8615 *) dflt="$cf_email";;
8617 rp='What is your e-mail address?'
8623 rp='Address does not look like an Internet one. Use it anyway?'
8639 If you or somebody else will be maintaining perl at your site, please
8640 fill in the correct e-mail address here so that they may be contacted
8641 if necessary. Currently, the "perlbug" program included with perl
8642 will send mail to this address in addition to perlbug@perl.org. You may
8643 enter "none" for no administrator.
8646 case "$perladmin" in
8647 '') dflt="$cf_email";;
8648 *) dflt="$perladmin";;
8650 rp='Perl administrator e-mail address'
8654 : determine whether to only install version-specific parts.
8657 Do you want to install only the version-specific parts of the perl
8658 distribution? Usually you do *not* want to do this.
8660 case "$versiononly" in
8661 "$define"|[Yy]*|true) dflt='y' ;;
8664 rp="Do you want to install only the version-specific parts of perl?"
8667 [yY]*) val="$define";;
8673 case "$versiononly" in
8674 "$define") inc_version_list=''
8675 inc_version_list_init=0
8679 : figure out how to guarantee perl startup
8680 : XXX Note that this currently takes advantage of the bug that binexp ignores
8681 : the Configure -Dinstallprefix setting, which in turn means that under
8682 : relocatable @INC, initialinstalllocation is what binexp started as.
8683 case "$startperl" in
8685 case "$sharpbang" in
8689 I can use the #! construct to start perl on your system. This will
8690 make startup of perl scripts faster, but may cause problems if you
8691 want to share those scripts and perl is not in a standard place
8692 ($initialinstalllocation/perl) on all your platforms. The alternative
8693 is to force a shell by starting the script with a single ':' character.
8696 case "$versiononly" in
8697 "$define") dflt="$initialinstalllocation/perl$version";;
8698 *) dflt="$initialinstalllocation/perl";;
8700 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8703 none) startperl=": # use perl";;
8704 *) startperl="#!$ans"
8705 if $test 30 -lt `echo "$ans" | wc -c`; then
8708 WARNING: Some systems limit the #! command to 32 characters.
8709 If you experience difficulty running Perl scripts with #!, try
8710 installing Perl in a directory with a shorter pathname.
8716 *) startperl=": # use perl"
8721 echo "I'll use $startperl to start perl scripts."
8723 : figure best path for perl in scripts
8726 case "$versiononly" in
8727 "$define") perlpath="$initialinstalllocation/perl$version";;
8728 *) perlpath="$initialinstalllocation/perl";;
8730 case "$startperl" in
8735 I will use the "eval 'exec'" idiom to start Perl on your system.
8736 I can use the full path of your Perl binary for this purpose, but
8737 doing so may cause problems if you want to share those scripts and
8738 Perl is not always in a standard place ($initialinstalllocation/perl).
8741 dflt="$initialinstalllocation/perl"
8742 rp="What path shall I use in \"eval 'exec'\"?"
8749 case "$startperl" in
8751 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8754 : determine where public executable scripts go
8755 set scriptdir scriptdir
8757 case "$scriptdir" in
8760 : guess some guesses
8761 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8762 $test -d /usr/share/bin && dflt=/usr/share/bin
8763 $test -d /usr/local/script && dflt=/usr/local/script
8764 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8765 $test -d $prefixexp/script && dflt=$prefixexp/script
8769 *) dflt="$scriptdir"
8774 Some installations have a separate directory just for executable scripts so
8775 that they can mount it across multiple architectures but keep the scripts in
8776 one spot. You might, for example, have a subdirectory of /usr/share for this.
8777 Or you might just lump your scripts in with all your other executables.
8781 rp='Where do you keep publicly executable scripts?'
8783 if $test "X$ansexp" != "X$scriptdirexp"; then
8789 : A little fix up for an irregularly named variable.
8790 installscript="$installscriptdir"
8792 : determine where add-on public executables go
8794 '') dflt=$siteprefix/bin ;;
8798 rp='Pathname where the add-on public executables should be installed?'
8803 : determine where add-on html pages go
8804 : There is no standard location, so try to copy the previously-selected
8805 : directory structure for the core html pages.
8806 case "$sitehtml1dir" in
8807 '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8808 *) dflt=$sitehtml1dir ;;
8811 ''|' ') dflt=none ;;
8814 rp='Pathname where the site-specific html pages should be installed?'
8816 prefixvar=sitehtml1dir
8819 : determine where add-on library html pages go
8820 : There is no standard location, so try to copy the previously-selected
8821 : directory structure for the core html pages.
8822 case "$sitehtml3dir" in
8823 '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$siteprefix#"` ;;
8824 *) dflt=$sitehtml3dir ;;
8827 ''|' ') dflt=none ;;
8830 rp='Pathname where the site-specific library html pages should be installed?'
8832 prefixvar=sitehtml3dir
8835 : determine where add-on manual pages go
8836 case "$siteman1dir" in
8837 '') dflt=`echo $man1dir | $sed "s#^$prefix#$siteprefix#"` ;;
8838 *) dflt=$siteman1dir ;;
8841 ''|' ') dflt=none ;;
8844 rp='Pathname where the site-specific manual pages should be installed?'
8846 prefixvar=siteman1dir
8849 : determine where add-on library man pages go
8850 case "$siteman3dir" in
8851 '') dflt=`echo $man3dir | $sed "s#^$prefix#$siteprefix#"` ;;
8852 *) dflt=$siteman3dir ;;
8855 ''|' ') dflt=none ;;
8858 rp='Pathname where the site-specific library manual pages should be installed?'
8860 prefixvar=siteman3dir
8863 : determine where add-on public executable scripts go
8864 case "$sitescript" in
8865 '') dflt=$siteprefix/script
8866 $test -d $dflt || dflt=$sitebin ;;
8867 *) dflt="$sitescript" ;;
8870 rp='Pathname where add-on public executable scripts should be installed?'
8872 prefixvar=sitescript
8875 case "$usefaststdio" in
8876 $define|true|[yY]*|'')
8877 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
8887 Perl can be built to use 'fast stdio', which means using the stdio
8888 library but also directly manipulating the stdio buffers to enable
8889 faster I/O. Using stdio is better for backward compatibility (especially
8890 for Perl extensions), but on the other hand since Perl 5.8 the 'perlio'
8891 interface has been preferred instead of stdio.
8893 If this doesn't make any sense to you, just accept the default '$dflt'.
8895 rp='Use the "fast stdio" if available?'
8898 y|Y) val="$define" ;;
8905 : define an is-a-typedef? function
8906 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8908 "") inclist="sys/types.h";;
8910 eval "varval=\$$var";
8914 for inc in $inclist; do
8915 echo "#include <$inc>" >>temp.c;
8917 echo "#ifdef $type" >> temp.c;
8918 echo "printf(\"We have $type\");" >> temp.c;
8919 echo "#endif" >> temp.c;
8920 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8921 if $contains $type temp.E >/dev/null 2>&1; then
8927 *) eval "$var=\$varval";;
8930 : define an is-a-typedef? function that prompts if the type is not available.
8931 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8933 "") inclist="sys/types.h";;
8935 eval "varval=\$$var";
8939 for inc in $inclist; do
8940 echo "#include <$inc>" >>temp.c;
8942 echo "#ifdef $type" >> temp.c;
8943 echo "printf(\"We have $type\");" >> temp.c;
8944 echo "#endif" >> temp.c;
8945 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8947 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8948 if $contains $type temp.E >/dev/null 2>&1; then
8949 echo "$type found." >&4;
8952 echo "$type NOT found." >&4;
8958 *) eval "$var=\$varval";;
8961 : see what type lseek is declared as in the kernel
8962 rp="What is the type used for lseek's offset on this system?"
8963 set off_t lseektype long stdio.h sys/types.h
8967 echo "Checking to see how big your file offsets are..." >&4
8969 #include <sys/types.h>
8973 printf("%d\n", (int)sizeof($lseektype));
8978 if eval $compile_ok; then
8979 lseeksize=`$run ./try`
8980 echo "Your file offsets are $lseeksize bytes long."
8984 echo "(I can't seem to compile the test program. Guessing...)"
8985 rp="What is the size of your file offsets (in bytes)?"
8991 : see what type file positions are declared as in the library
8992 rp="What is the type for file position used by fsetpos()?"
8993 set fpos_t fpostype long stdio.h sys/types.h
8998 *_t) zzz="$fpostype" ;;
9001 echo "Checking the size of $zzz..." >&4
9003 #include <sys/types.h>
9010 printf("%d\n", (int)sizeof($fpostype));
9015 if eval $compile_ok; then
9019 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9022 echo "Your $zzz is $fpossize bytes long."
9028 echo "(I can't compile the test program. Guessing...)" >&4
9029 rp="What is the size of your file positions (in bytes)?"
9034 # Backward compatibility (uselfs is deprecated).
9036 "$define"|true|[yY]*)
9039 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
9041 uselargefiles="$define"
9045 case "$lseeksize:$fpossize" in
9048 You can have files larger than 2 gigabytes.
9051 *) case "$uselargefiles" in
9052 "$undef"|false|[nN]*) dflt='n' ;;
9057 Perl can be built to understand large files (files larger than 2 gigabytes)
9058 on some systems. To do so, Configure can be run with -Duselargefiles.
9060 If this doesn't make any sense to you, just accept the default '$dflt'.
9062 rp='Try to understand large files, if available?'
9065 y|Y) val="$define" ;;
9072 : Look for a hint-file generated 'call-back-unit'. If the
9073 : user has specified that a large files perl is to be built,
9074 : we may need to set or change some other defaults.
9075 if $test -f uselargefiles.cbu; then
9076 echo "Your platform has some specific hints regarding large file builds, using them..."
9077 . ./uselargefiles.cbu
9079 case "$uselargefiles" in
9081 if $test -f uselargefiles.cbu; then
9083 echo "Rechecking to see how big your file offsets are..." >&4
9085 #include <sys/types.h>
9089 printf("%d\n", (int)sizeof($lseektype));
9094 if eval $compile_ok; then
9095 lseeksize=`$run ./try`
9096 $echo "Your file offsets are now $lseeksize bytes long."
9100 echo "(I can't seem to compile the test program. Guessing...)"
9101 rp="What is the size of your file offsets (in bytes)?"
9106 *_t) zzz="$fpostype" ;;
9109 $echo $n "Rechecking the size of $zzz...$c" >&4
9111 #include <sys/types.h>
9118 printf("%d\n", (int)sizeof($fpostype));
9123 if eval $compile_ok; then
9128 echo "(I can't execute the test program--guessing $fpossize.)" >&4
9131 echo " $fpossize bytes." >&4
9137 echo "(I can't compile the test program. Guessing...)" >&4
9138 rp="What is the size of your file positions (in bytes)?"
9147 case "$vendorprefix" in
9148 '') d_vendorbin="$undef"
9152 *) d_vendorbin="$define"
9153 : determine where vendor-supplied executables go.
9154 case "$vendorbin" in
9155 '') dflt=$vendorprefix/bin ;;
9156 *) dflt="$vendorbin" ;;
9159 rp='Pathname for the vendor-supplied executables directory?'
9162 vendorbinexp="$ansexp"
9168 case "$vendorprefix" in
9169 '') vendorhtml1dir=''
9170 vendorhtml1direxp=''
9172 *) : determine where vendor-supplied html pages go.
9173 : There is no standard location, so try to copy the previously-selected
9174 : directory structure for the core html pages.
9175 : XXX Better default suggestions would be welcome.
9176 case "$vendorhtml1dir" in
9177 '') dflt=`echo "$html1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9178 *) dflt=$vendorhtml1dir ;;
9181 ''|' ') dflt=none ;;
9184 rp='Pathname for the vendor-supplied html pages?'
9186 vendorhtml1dir="$ans"
9187 vendorhtml1direxp="$ansexp"
9190 : Use ' ' for none so value is preserved next time through Configure
9191 $test X"$vendorhtml1dir" = "X" && vendorhtml1dir=' '
9192 prefixvar=vendorhtml1dir
9195 case "$vendorprefix" in
9196 '') vendorhtml3dir=''
9197 vendorhtml3direxp=''
9199 *) : determine where vendor-supplied module html pages go.
9200 : There is no standard location, so try to copy the previously-selected
9201 : directory structure for the core html pages.
9202 : XXX Better default suggestions would be welcome.
9203 case "$vendorhtml3dir" in
9204 '') dflt=`echo "$html3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9205 *) dflt=$vendorhtml3dir ;;
9208 ''|' ') dflt=none ;;
9211 rp='Pathname for the vendor-supplied html pages?'
9213 vendorhtml3dir="$ans"
9214 vendorhtml3direxp="$ansexp"
9217 : Use ' ' for none so value is preserved next time through Configure
9218 $test X"$vendorhtml3dir" = "X" && vendorhtml3dir=' '
9219 prefixvar=vendorhtml3dir
9222 case "$vendorprefix" in
9223 '') vendorman1dir=''
9226 *) : determine where vendor-supplied manual pages go.
9227 case "$vendorman1dir" in
9228 '') dflt=`echo "$man1dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9229 *) dflt=$vendorman1dir ;;
9232 ''|' ') dflt=none ;;
9235 rp='Pathname for the vendor-supplied manual section 1 pages?'
9237 vendorman1dir="$ans"
9238 vendorman1direxp="$ansexp"
9241 : Use ' ' for none so value is preserved next time through Configure
9242 $test X"$vendorman1dir" = "X" && vendorman1dir=' '
9243 prefixvar=vendorman1dir
9246 case "$vendorprefix" in
9247 '') vendorman3dir=''
9250 *) : determine where vendor-supplied module manual pages go.
9251 case "$vendorman3dir" in
9252 '') dflt=`echo "$man3dir" | $sed "s#^$prefix#$vendorprefix#"` ;;
9253 *) dflt=$vendorman3dir ;;
9256 ''|' ') dflt=none ;;
9259 rp='Pathname for the vendor-supplied manual section 3 pages?'
9261 vendorman3dir="$ans"
9262 vendorman3direxp="$ansexp"
9265 : Use ' ' for none so value is preserved next time through Configure
9266 $test X"$vendorman3dir" = "X" && vendorman3dir=' '
9267 prefixvar=vendorman3dir
9270 case "$vendorprefix" in
9271 '') d_vendorscript="$undef"
9275 *) d_vendorscript="$define"
9276 : determine where vendor-supplied scripts go.
9277 case "$vendorscript" in
9278 '') dflt=$vendorprefix/script
9279 $test -d $dflt || dflt=$vendorbin ;;
9280 *) dflt="$vendorscript" ;;
9284 The installation process will create a directory for
9285 vendor-supplied scripts.
9289 rp='Pathname for the vendor-supplied scripts directory?'
9292 vendorscriptexp="$ansexp"
9295 prefixvar=vendorscript
9298 : see if qgcvt exists
9304 if $test X"$d_longdbl" = X"$define"; then
9306 echo "Checking how to print long doubles..." >&4
9308 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
9309 $cat >try.c <<'EOCP'
9310 #include <sys/types.h>
9314 printf("%.3f\n", d);
9318 if eval $compile; then
9322 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
9323 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
9324 echo "We will use %f."
9330 if $test X"$sPRIfldbl" = X; then
9331 $cat >try.c <<'EOCP'
9332 #include <sys/types.h>
9335 long double d = 123.456;
9336 printf("%.3Lf\n", d);
9340 if eval $compile; then
9344 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
9345 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
9346 echo "We will use %Lf."
9352 if $test X"$sPRIfldbl" = X; then
9353 $cat >try.c <<'EOCP'
9354 #include <sys/types.h>
9357 long double d = 123.456;
9358 printf("%.3llf\n", d);
9362 if eval $compile; then
9366 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
9367 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
9368 echo "We will use %llf."
9374 if $test X"$sPRIfldbl" = X; then
9375 $cat >try.c <<'EOCP'
9376 #include <sys/types.h>
9379 long double d = 123.456;
9380 printf("%.3lf\n", d);
9384 if eval $compile; then
9388 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
9389 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
9390 echo "We will use %lf."
9396 if $test X"$sPRIfldbl" = X; then
9397 echo "Cannot figure out how to print long doubles." >&4
9399 sSCNfldbl=$sPRIfldbl # expect consistency
9406 case "$sPRIfldbl" in
9407 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
9408 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
9409 d_SCNfldbl="$undef";
9411 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
9412 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
9413 d_SCNfldbl="$define";
9417 : Check how to convert floats to strings.
9419 if test "X$d_Gconvert" = X; then
9422 echo "Checking for an efficient way to convert floats to strings."
9424 case "$uselongdouble" in
9425 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
9427 case "$d_longdbl" in
9428 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
9430 case "$d_PRIgldbl" in
9431 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
9435 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
9436 char *myname = "gconvert";
9439 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
9440 char *myname = "gcvt";
9443 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
9444 char *myname = "qgcvt";
9445 #define DOUBLETYPE long double
9448 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9450 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
9452 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(double)(x))
9455 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
9457 char *myname = "sprintf";
9461 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
9462 #define DOUBLETYPE long double
9464 #define DOUBLETYPE double
9470 #define I_STDLIB $i_stdlib
9476 checkit(expect, got)
9480 if (strcmp(expect, got)) {
9481 printf("%s oddity: Expected %s, got %s\n",
9482 myname, expect, got);
9492 /* This must be 1st test on (which?) platform */
9493 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
9494 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
9495 checkit("0.1", buf);
9497 Gconvert((DOUBLETYPE)0.01, 8, 0, buf);
9498 checkit("0.01", buf);
9500 Gconvert((DOUBLETYPE)0.001, 8, 0, buf);
9501 checkit("0.001", buf);
9503 Gconvert((DOUBLETYPE)0.0001, 8, 0, buf);
9504 checkit("0.0001", buf);
9506 Gconvert((DOUBLETYPE)0.00009, 8, 0, buf);
9507 if (strlen(buf) > 5)
9508 checkit("9e-005", buf); /* for Microsoft ?? */
9510 checkit("9e-05", buf);
9512 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
9515 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
9516 checkit("1.1", buf);
9518 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
9519 checkit("1.01", buf);
9521 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
9522 checkit("1.001", buf);
9524 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
9525 checkit("1.0001", buf);
9527 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
9528 checkit("1.00001", buf);
9530 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
9531 checkit("1.000001", buf);
9533 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
9536 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
9539 /* Some Linux gcvt's give 1.e+5 here. */
9540 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
9541 checkit("100000", buf);
9543 /* Some Linux gcvt's give -1.e+5 here. */
9544 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
9545 checkit("-100000", buf);
9547 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
9548 checkit("123.456", buf);
9550 /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
9551 Gconvert((DOUBLETYPE)1e34, 8, 0, buf);
9552 /* 34 should be enough to scare even long double
9553 * places into using the e notation. */
9554 if (strlen(buf) > 5)
9555 checkit("1e+034", buf); /* for Microsoft */
9557 checkit("1e+34", buf);
9559 /* For Perl, if you add additional tests here, also add them to
9560 * t/base/num.t for benefit of platforms not using Configure or
9561 * overriding d_Gconvert */
9566 : first add preferred functions to our list
9568 for xxx_convert in $gconvert_preference; do
9569 case $xxx_convert in
9570 gcvt|gconvert|sprintf) xxx_list="$xxx_list $xxx_convert" ;;
9571 *) echo "Discarding unrecognized gconvert_preference $xxx_convert" >&4 ;;
9574 : then add any others
9575 for xxx_convert in gconvert gcvt sprintf; do
9578 *) xxx_list="$xxx_list $xxx_convert" ;;
9582 case "$d_longdbl$uselongdouble" in
9584 : again, add prefered functions to our list first
9586 for xxx_convert in $gconvert_ld_preference; do
9587 case $xxx_convert in
9588 qgcvt|gcvt|gconvert|sprintf) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9589 *) echo "Discarding unrecognized gconvert_ld_preference $xxx_convert" ;;
9592 : then add qgcvt, sprintf--then, in xxx_list order, gconvert and gcvt
9593 for xxx_convert in qgcvt sprintf $xxx_list; do
9594 case "$xxx_ld_list" in
9595 $xxx_convert*|*" $xxx_convert"*) ;;
9596 *) xxx_ld_list="$xxx_ld_list $xxx_convert" ;;
9599 : if sprintf cannot do long doubles, move it to the end
9600 if test "$d_PRIgldbl" != "$define"; then
9601 xxx_ld_list="`echo $xxx_ld_list|sed s/sprintf//` sprintf"
9603 : if no qgcvt, remove it
9604 if test "$d_qgcvt" != "$define"; then
9605 xxx_ld_list="`echo $xxx_ld_list|sed s/qgcvt//`"
9608 xxx_list="$xxx_ld_list"
9612 for xxx_convert in $xxx_list; do
9613 echo "Trying $xxx_convert..."
9614 $rm -f try try$_o core
9615 set try -DTRY_$xxx_convert
9616 if eval $compile; then
9617 echo "$xxx_convert() found." >&4
9619 echo "I'll use $xxx_convert to convert floats into a string." >&4
9622 echo "...But $xxx_convert didn't work as I expected."
9626 echo "$xxx_convert NOT found." >&4
9630 if test X$xxx_convert = X; then
9631 echo "*** WHOA THERE!!! ***" >&4
9632 echo "None of ($xxx_list) seemed to work properly. I'll use sprintf." >&4
9636 case "$xxx_convert" in
9637 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
9638 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
9639 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
9640 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
9641 "$define$define$define")
9642 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
9643 "$define$define$undef")
9644 d_Gconvert='sprintf((b),"%.*g",(n),(double)(x))' ;;
9645 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
9653 : see if _fwalk exists
9657 : Initialize h_fcntl
9660 : Initialize h_sysfile
9663 : access call always available on UNIX
9667 : locate the flags for 'access()'
9671 $cat >access.c <<EOCP
9672 #include <sys/types.h>
9677 #include <sys/file.h>
9690 : check sys/file.h first, no particular reason here
9691 if $test `./findhdr sys/file.h` && \
9692 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
9694 echo "<sys/file.h> defines the *_OK access constants." >&4
9695 elif $test `./findhdr fcntl.h` && \
9696 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
9698 echo "<fcntl.h> defines the *_OK access constants." >&4
9699 elif $test `./findhdr unistd.h` && \
9700 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
9701 echo "<unistd.h> defines the *_OK access constants." >&4
9703 echo "I can't find the four *_OK access constants--I'll use mine." >&4
9709 : see if accessx exists
9710 set accessx d_accessx
9713 : see if aintl exists
9717 : see if alarm exists
9721 : see if POSIX threads are available
9722 set pthread.h i_pthread
9725 : define a fucntion to check prototypes
9726 $cat > protochk <<EOSH
9729 optimize="$optimize"
9731 prototype="$prototype"
9734 usethreads=$usethreads
9735 i_pthread=$i_pthread
9736 pthread_h_first=$pthread_h_first
9739 $cat >> protochk <<'EOSH'
9744 while test $# -ge 2; do
9746 $define) echo "#include <$2>" >> try.c ;;
9747 literal) echo "$2" >> try.c ;;
9749 # Extra magic for the benefit of systems that need pthread.h
9750 # to be included early to correctly detect threadsafe functions.
9751 # Such functions must guarantee themselves, though, that the usethreads
9752 # and i_pthread have been defined, before calling protochk.
9753 if test "$usethreads" = "$define" -a "$i_pthread" = "$define" -a "$pthread_h_first" = "$define" -a "$pthread_h_done" = ""; then
9754 echo "#include <pthread.h>" >> try.c
9759 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
9760 cat >> try.c <<'EOCP'
9761 #ifdef CAN_PROTOTYPE
9762 #define _(args) args
9767 echo "$foo" >> try.c
9768 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
9769 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
9777 hasproto='varname=$1; func=$2; shift; shift;
9778 while $test $# -ge 2; do
9780 $define) echo "#include <$2>";;
9784 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9785 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9786 echo "$func() prototype found.";
9789 echo "$func() prototype NOT found.";
9796 : see if sys/types.h has to be included
9797 set sys/types.h i_systypes
9800 : see if sys/select.h has to be included
9801 set sys/select.h i_sysselct
9804 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9805 while $test $# -ge 2; do
9807 $define) echo "#include <$2>";;
9811 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9813 if eval $compile; then
9822 : see if we should include time.h, sys/time.h, or both
9824 if test "X$timeincl" = X; then
9825 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9826 $echo $n "I'm now running the test program...$c"
9828 #include <sys/types.h>
9833 #ifdef SYSTIMEKERNEL
9836 #include <sys/time.h>
9839 #include <sys/select.h>
9852 struct timezone tzp;
9854 if (foo.tm_sec == foo.tm_sec)
9857 if (bar.tv_sec == bar.tv_sec)
9864 for s_timezone in '-DS_TIMEZONE' ''; do
9866 for s_timeval in '-DS_TIMEVAL' ''; do
9867 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9868 for i_time in '' '-DI_TIME'; do
9869 for i_systime in '-DI_SYSTIME' ''; do
9872 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9873 if eval $compile; then
9874 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9878 $echo $n "Succeeded with $flags$c"
9890 *SYSTIMEKERNEL*) i_systimek="$define"
9891 timeincl=`./findhdr sys/time.h`
9892 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9893 *) i_systimek="$undef";;
9896 *I_TIME*) i_time="$define"
9897 timeincl=`./findhdr time.h`" $timeincl"
9898 echo "We'll include <time.h>." >&4;;
9899 *) i_time="$undef";;
9902 *I_SYSTIME*) i_systime="$define"
9903 timeincl=`./findhdr sys/time.h`" $timeincl"
9904 echo "We'll include <sys/time.h>." >&4;;
9905 *) i_systime="$undef";;
9909 : see if struct tm knows about tm_zone
9910 case "$i_systime$i_time" in
9913 echo "Checking to see if your struct tm has tm_zone field..." >&4
9914 set d_tm_tm_zone tm tm_zone $i_systime sys/time.h $i_time time.h
9922 case "$d_tm_tm_zone" in
9923 "$define") echo "Yes, it does." ;;
9924 *) echo "No, it doesn't." ;;
9926 : see if struct tm knows about tm_gmtoff
9927 case "$i_systime$i_time" in
9930 echo "Checking to see if your struct tm has tm_gmtoff field..." >&4
9931 set d_tm_tm_gmtoff tm tm_gmtoff $i_systime sys/time.h $i_time time.h
9939 case "$d_tm_tm_gmtoff" in
9940 "$define") echo "Yes, it does." ;;
9941 *) echo "No, it doesn't." ;;
9944 : see if asctime_r exists
9945 set asctime_r d_asctime_r
9947 case "$d_asctime_r" in
9949 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
9950 case "$d_asctime_r_proto:$usethreads" in
9951 ":define") d_asctime_r_proto=define
9952 set d_asctime_r_proto asctime_r $hdrs
9956 case "$d_asctime_r_proto" in
9958 case "$asctime_r_proto" in
9959 ''|0) try='char* asctime_r(const struct tm*, char*);'
9960 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SB ;;
9962 case "$asctime_r_proto" in
9963 ''|0) try='char* asctime_r(const struct tm*, char*, int);'
9964 ./protochk "extern $try" $hdrs && asctime_r_proto=B_SBI ;;
9966 case "$asctime_r_proto" in
9967 ''|0) try='int asctime_r(const struct tm*, char*);'
9968 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SB ;;
9970 case "$asctime_r_proto" in
9971 ''|0) try='int asctime_r(const struct tm*, char*, int);'
9972 ./protochk "extern $try" $hdrs && asctime_r_proto=I_SBI ;;
9974 case "$asctime_r_proto" in
9975 ''|0) d_asctime_r=undef
9977 echo "Disabling asctime_r, cannot determine prototype." >&4 ;;
9978 * ) case "$asctime_r_proto" in
9979 REENTRANT_PROTO*) ;;
9980 *) asctime_r_proto="REENTRANT_PROTO_$asctime_r_proto" ;;
9982 echo "Prototype: $try" ;;
9985 *) case "$usethreads" in
9986 define) echo "asctime_r has no prototype, not using it." >&4 ;;
9993 *) asctime_r_proto=0
9997 : see if atolf exists
10001 : see if atoll exists
10005 : Look for GCC-style attribute format
10006 case "$d_attribute_format" in
10009 echo "Checking whether your compiler can handle __attribute__((format)) ..." >&4
10010 $cat >attrib.c <<'EOCP'
10012 void my_special_printf(char* pat,...) __attribute__((__format__(__printf__,1,2)));
10014 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10015 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10016 echo "Your C compiler doesn't support __attribute__((format))."
10019 echo "Your C compiler supports __attribute__((format))."
10023 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10027 *) val="$d_attribute_format" ;;
10029 set d_attribute_format
10033 : Look for GCC-style attribute format with null format allowed
10034 case "$d_printf_format_null" in
10035 '') case "$d_attribute_format" in
10038 echo "Checking whether your compiler allows __printf__ format to be null ..." >&4
10039 $cat >attrib.c <<EOCP
10041 #$i_stdlib I_STDLIB
10043 #include <stdlib.h>
10045 int null_printf (char* pat,...) __attribute__((__format__(__printf__,1,2)));
10046 int null_printf (char* pat,...) { return (int)pat; }
10047 int main () { exit(null_printf(NULL)); }
10049 if $cc $ccflags -o attrib attrib.c >attrib.out 2>&1 ; then
10050 : run the executable in case it produces a run-time warning
10051 if $run ./attrib >>attrib.out 2>&1; then
10052 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10053 echo "Your C compiler doesn't allow __printf__ format to be null."
10056 echo "Your C compiler allows __printf__ format to be null."
10060 echo "Your C compiler executable failed with __printf__ format null."
10064 echo "Your C compiler fails with __printf__ format null."
10071 *) val="$d_printf_format_null" ;;
10073 set d_printf_format_null
10077 : Look for GCC-style attribute malloc
10078 case "$d_attribute_malloc" in
10081 echo "Checking whether your compiler can handle __attribute__((malloc)) ..." >&4
10082 $cat >attrib.c <<'EOCP'
10084 char *go_get_some_memory( int how_many_bytes ) __attribute__((malloc));
10086 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10087 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10088 echo "Your C compiler doesn't support __attribute__((malloc))."
10091 echo "Your C compiler supports __attribute__((malloc))."
10095 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10099 *) val="$d_attribute_malloc" ;;
10101 set d_attribute_malloc
10105 : Look for GCC-style attribute nonnull
10106 case "$d_attribute_nonnull" in
10109 echo "Checking whether your compiler can handle __attribute__((nonnull(1))) ..." >&4
10110 $cat >attrib.c <<'EOCP'
10112 void do_something (char *some_pointer,...) __attribute__((nonnull(1)));
10114 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10115 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10116 echo "Your C compiler doesn't support __attribute__((nonnull))."
10119 echo "Your C compiler supports __attribute__((nonnull))."
10123 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10127 *) val="$d_attribute_nonnull" ;;
10129 set d_attribute_nonnull
10133 : Look for GCC-style attribute noreturn
10134 case "$d_attribute_noreturn" in
10137 echo "Checking whether your compiler can handle __attribute__((noreturn)) ..." >&4
10138 $cat >attrib.c <<'EOCP'
10140 void fall_over_dead( void ) __attribute__((noreturn));
10142 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10143 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10144 echo "Your C compiler doesn't support __attribute__((noreturn))."
10147 echo "Your C compiler supports __attribute__((noreturn))."
10151 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10155 *) val="$d_attribute_noreturn" ;;
10157 set d_attribute_noreturn
10161 : Look for GCC-style attribute pure
10162 case "$d_attribute_pure" in
10165 echo "Checking whether your compiler can handle __attribute__((pure)) ..." >&4
10166 $cat >attrib.c <<'EOCP'
10168 int square( int n ) __attribute__((pure));
10170 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10171 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10172 echo "Your C compiler doesn't support __attribute__((pure))."
10175 echo "Your C compiler supports __attribute__((pure))."
10179 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10183 *) val="$d_attribute_pure" ;;
10185 set d_attribute_pure
10189 : Look for GCC-style attribute unused
10190 case "$d_attribute_unused" in
10193 echo "Checking whether your compiler can handle __attribute__((unused)) ..." >&4
10194 $cat >attrib.c <<'EOCP'
10196 int do_something( int dummy __attribute__((unused)), int n );
10198 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10199 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10200 echo "Your C compiler doesn't support __attribute__((unused))."
10203 echo "Your C compiler supports __attribute__((unused))."
10207 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10211 *) val="$d_attribute_unused" ;;
10213 set d_attribute_unused
10217 : Look for GCC-style attribute warn_unused_result
10218 case "$d_attribute_warn_unused_result" in
10221 echo "Checking whether your compiler can handle __attribute__((warn_unused_result)) ..." >&4
10222 $cat >attrib.c <<'EOCP'
10224 int I_will_not_be_ignored(void) __attribute__((warn_unused_result));
10226 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
10227 if $contains 'warning' attrib.out >/dev/null 2>&1; then
10228 echo "Your C compiler doesn't support __attribute__((warn_unused_result))."
10231 echo "Your C compiler supports __attribute__((warn_unused_result))."
10235 echo "Your C compiler doesn't seem to understand __attribute__ at all."
10239 *) val="$d_attribute_warn_unused_result" ;;
10241 set d_attribute_warn_unused_result
10245 : see if bcmp exists
10249 : see if bcopy exists
10253 : see if getpgrp exists
10254 set getpgrp d_getpgrp
10257 case "$d_getpgrp" in
10260 echo "Checking to see which flavor of getpgrp is in use..."
10262 #$i_unistd I_UNISTD
10263 #include <sys/types.h>
10265 # include <unistd.h>
10267 #$i_stdlib I_STDLIB
10269 #include <stdlib.h>
10273 if (getuid() == 0) {
10274 printf("(I see you are running Configure as super-user...)\n");
10277 #ifdef TRY_BSD_PGRP
10278 if (getpgrp(1) == 0)
10287 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10288 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
10290 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10291 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
10294 echo "I can't seem to compile and run the test program."
10296 xxx="a USG one, i.e. you use getpgrp()."
10298 # SVR4 systems can appear rather BSD-ish.
10299 case "$i_unistd" in
10301 xxx="a BSD one, i.e. you use getpgrp(pid)."
10305 xxx="probably a USG one, i.e. you use getpgrp()."
10310 echo "Assuming your getpgrp is $xxx" >&4
10319 : see if setpgrp exists
10320 set setpgrp d_setpgrp
10323 case "$d_setpgrp" in
10326 echo "Checking to see which flavor of setpgrp is in use..."
10328 #$i_unistd I_UNISTD
10329 #include <sys/types.h>
10331 # include <unistd.h>
10333 #$i_stdlib I_STDLIB
10335 #include <stdlib.h>
10339 if (getuid() == 0) {
10340 printf("(I see you are running Configure as super-user...)\n");
10343 #ifdef TRY_BSD_PGRP
10344 if (-1 == setpgrp(1, 1))
10347 if (setpgrp() != -1)
10353 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10354 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
10356 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
10357 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
10360 echo "(I can't seem to compile and run the test program.)"
10362 xxx="a USG one, i.e. you use setpgrp()."
10364 # SVR4 systems can appear rather BSD-ish.
10365 case "$i_unistd" in
10367 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
10371 xxx="probably a USG one, i.e. you use setpgrp()."
10376 echo "Assuming your setpgrp is $xxx" >&4
10385 : Look for GCC-style __builtin_choose_expr
10386 case "$d_builtin_choose_expr" in
10389 echo "Checking whether your compiler can handle __builtin_choose_expr ..." >&4
10390 $cat >try.c <<'EOCP'
10391 #include <assert.h>
10392 #include <stdlib.h>
10395 #define SYRINX(x) __builtin_choose_expr( x, (1056*2), (103*50) )
10398 assert( SYRINX(1) == 2112 );
10399 assert( SYRINX(1) != 5150 );
10400 assert( SYRINX(0) == 5150 );
10401 assert( SYRINX(0) != 2112 );
10402 puts( "All good!" );
10408 if eval $compile; then
10409 echo "Your C compiler supports __builtin_choose_expr."
10412 echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10416 *) val="$d_builtin_choose_expr" ;;
10419 set d_builtin_choose_expr
10423 : Look for GCC-style __builtin_expect
10424 case "$d_builtin_expect" in
10427 echo "Checking whether your compiler can handle __builtin_expect ..." >&4
10428 $cat >builtin.c <<'EOCP'
10431 if ( __builtin_expect(n, 0) ) n = 1;
10435 if eval $compile; then
10436 echo "Your C compiler supports __builtin_choose_expr."
10439 echo "Your C compiler doesn't seem to understand __builtin_choose_expr."
10443 *) val="$d_builtin_expect" ;;
10446 set d_builtin_expect
10450 : see if bzero exists
10454 : see if stdarg is available
10456 if $test `./findhdr stdarg.h`; then
10457 echo "<stdarg.h> found." >&4
10460 echo "<stdarg.h> NOT found." >&4
10464 : see if varags is available
10466 if $test `./findhdr varargs.h`; then
10467 echo "<varargs.h> found." >&4
10469 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
10472 : set up the varargs testing programs
10473 $cat > varargs.c <<EOP
10475 #include <stdarg.h>
10478 #include <varargs.h>
10482 int f(char *p, ...)
10496 p = va_arg(ap, char *);
10502 $cat > varargs <<EOP
10504 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
10513 : now check which varargs header should be included
10518 if `./varargs I_STDARG`; then
10520 elif `./varargs I_VARARGS`; then
10525 if `./varargs I_VARARGS`; then
10532 echo "I could not find the definition for va_dcl... You have problems..." >&4
10533 val="$undef"; set i_stdarg; eval $setvar
10534 val="$undef"; set i_varargs; eval $setvar
10539 case "$i_varhdr" in
10541 val="$define"; set i_stdarg; eval $setvar
10542 val="$undef"; set i_varargs; eval $setvar
10545 val="$undef"; set i_stdarg; eval $setvar
10546 val="$define"; set i_varargs; eval $setvar
10549 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
10553 : see if the Compiler supports C99 variadic macros
10554 case "$i_stdarg$i_stdlib" in
10556 echo "You have <stdarg.h> and <stdlib.h>, so checking for C99 variadic macros." >&4
10559 #include <stdarg.h>
10561 #define foo(buffer, format, ...) sprintf(buffer, format, __VA_ARGS__)
10565 foo(buf, "%d %g %.*s", 123, 456.0, (int)3, "789fail");
10571 if eval $compile && $run ./try 2>&1 >/dev/null; then
10572 case "`$run ./try`" in
10574 echo "You have C99 variadic macros." >&4
10575 d_c99_variadic_macros="$define"
10578 echo "You don't have functional C99 variadic macros." >&4
10579 d_c99_variadic_macros="$undef"
10583 echo "I couldn't compile and run the test program, so I assume that you don't have functional C99 variadic macros." >&4
10584 d_c99_variadic_macros="$undef"
10589 echo "You don't have <stdarg.h> and <stdlib.h>, so not checking for C99 variadic macros." >&4
10590 d_c99_variadic_macros="$undef"
10594 : see if signal is declared as pointer to function returning int or void
10596 xxx=`./findhdr signal.h`
10597 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
10598 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
10599 echo "You have int (*signal())() instead of void." >&4
10601 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
10602 echo "You have void (*signal())()." >&4
10604 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
10605 echo "You have int (*signal())() instead of void." >&4
10607 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
10608 echo "You have void (*signal())()." >&4
10611 case "$d_voidsig" in
10613 echo "I can't determine whether signal handler returns void or int..." >&4
10615 rp="What type does your signal handler return?"
10618 v*) val="$define";;
10622 echo "As you already told me, signal handler returns void." >&4
10625 *) echo "As you already told me, signal handler returns int." >&4
10632 case "$d_voidsig" in
10633 "$define") signal_t="void";;
10634 *) signal_t="int";;
10638 : check for ability to cast large floats to 32-bit ints.
10640 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
10641 if $test "$intsize" -ge 4; then
10648 #$i_stdlib I_STDLIB
10650 #include <stdlib.h>
10652 #include <sys/types.h>
10653 #include <signal.h>
10654 $signal_t blech(int s) { exit(3); }
10661 signal(SIGFPE, blech);
10663 /* Don't let compiler optimize the test away. Store the number
10664 in a writable string for gcc to pass to sscanf under HP/UX.
10666 sprintf(str, "2147483647");
10667 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
10671 /* x86 processors will probably give 0x8000 0000, which is a
10672 sign change. We don't want that. We want to mimic SPARC
10673 behavior here, which is to preserve the sign and give
10676 if (i32 != ($xxx) f)
10682 if eval $compile_ok; then
10686 echo "(I can't seem to compile the test program--assuming it can't)"
10691 echo "Yup, it can."
10694 echo "Nope, it can't."
10701 : check for ability to cast negative floats to unsigned
10703 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
10706 #$i_stdlib I_STDLIB
10708 #include <stdlib.h>
10710 #include <sys/types.h>
10711 #include <signal.h>
10712 $signal_t blech(int s) { exit(7); }
10713 $signal_t blech_in_list(int s) { exit(4); }
10714 unsigned long dummy_long(unsigned long p) { return p; }
10715 unsigned int dummy_int(unsigned int p) { return p; }
10716 unsigned short dummy_short(unsigned short p) { return p; }
10720 unsigned long along;
10722 unsigned short ashort;
10726 /* Frustrate gcc-2.7.2's optimizer which failed this test with
10727 a direct f = -123. assignment. gcc-2.8.0 reportedly
10728 optimized the whole file away
10730 /* Store the number in a writable string for gcc to pass to
10731 sscanf under HP/UX.
10733 sprintf(str, "-123");
10734 sscanf(str, "%lf", &f); /* f = -123.; */
10736 signal(SIGFPE, blech);
10737 along = (unsigned long)f;
10738 aint = (unsigned int)f;
10739 ashort = (unsigned short)f;
10740 if (along != (unsigned long)-123)
10742 if (aint != (unsigned int)-123)
10744 if (ashort != (unsigned short)-123)
10746 sprintf(str, "1073741824.");
10747 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
10750 along = (unsigned long)f;
10751 if (along != 0x80000000)
10755 along = (unsigned long)f;
10756 if (along != 0x7fffffff)
10760 along = (unsigned long)f;
10761 if (along != 0x80000001)
10765 signal(SIGFPE, blech_in_list);
10766 sprintf(str, "123.");
10767 sscanf(str, "%lf", &f); /* f = 123.; */
10768 along = dummy_long((unsigned long)f);
10769 aint = dummy_int((unsigned int)f);
10770 ashort = dummy_short((unsigned short)f);
10771 if (along != (unsigned long)123)
10773 if (aint != (unsigned int)123)
10775 if (ashort != (unsigned short)123)
10782 if eval $compile_ok; then
10786 echo "(I can't seem to compile the test program--assuming it can't)"
10789 case "$castflags" in
10791 echo "Yup, it can."
10794 echo "Nope, it can't."
10801 : see if vprintf exists
10803 if set vprintf val -f d_vprintf; eval $csym; $val; then
10804 echo 'vprintf() found.' >&4
10807 #$i_stdarg I_STDARG /* Only one of these can be defined by i_varhrd */
10808 #$i_varargs I_VARARGS
10810 #$i_stdlib I_STDLIB
10811 #$i_unistd I_UNISTD
10814 # include <stdarg.h>
10815 #else /* I_VARARGS */
10816 # include <varargs.h>
10820 # include <unistd.h>
10824 # include <stdlib.h>
10827 #include <stdio.h> /* vsprintf prototype */
10830 void xxx(int n, ...)
10835 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10837 int main() { xxx(1, "foo"); }
10839 #else /* I_VARARGS */
10847 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
10849 int main() { xxx("foo"); }
10855 if eval $compile_ok; then
10856 if $run ./try; then
10857 echo "Your vsprintf() returns (int)." >&4
10860 echo "Your vsprintf() returns (char*)." >&4
10864 echo 'I am unable to compile the vsprintf() test program.' >&4
10865 # We shouldn't get here. If we do, assume the standard signature,
10866 # not the old BSD one.
10867 echo 'Guessing that vsprintf() returns (int).' >&4
10871 echo 'vprintf() NOT found.' >&4
10882 : see if chown exists
10886 : see if chroot exists
10887 set chroot d_chroot
10890 : see if chsize exists
10891 set chsize d_chsize
10894 : see if class exists
10898 : see if clearenv exists
10899 set clearenv d_clearenv
10902 hasstruct='varname=$1; struct=$2; shift; shift;
10903 while $test $# -ge 2; do
10905 $define) echo "#include <$2>";;
10909 echo "int main () { struct $struct foo; }" >> try.c;
10911 if eval $compile; then
10922 : see whether socket exists
10924 $echo $n "Hmm... $c" >&4
10925 if set socket val -f d_socket; eval $csym; $val; then
10926 echo "Looks like you have Berkeley networking support." >&4
10928 if set setsockopt val -f; eval $csym; $val; then
10931 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
10932 d_oldsock="$define"
10935 if $contains socklib libc.list >/dev/null 2>&1; then
10936 echo "Looks like you have Berkeley networking support." >&4
10938 : we will have to assume that it supports the 4.2 BSD interface
10941 echo "You don't have Berkeley networking in libc$_a..." >&4
10942 if test "X$d_socket" = "X$define"; then
10943 echo "...but you seem to believe that you have sockets." >&4
10945 for net in net socket
10947 if test -f /usr/lib/lib$net$_a; then
10948 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
10949 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
10950 if $contains socket libc.list >/dev/null 2>&1; then
10955 echo "...but the Wollongong group seems to have hacked it in." >&4
10956 sockethdr="-I/usr/netinclude"
10959 echo "Found Berkeley sockets interface in lib$net." >&4
10960 if $contains setsockopt libc.list >/dev/null 2>&1; then
10963 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
10964 d_oldsock="$define"
10970 if test "X$d_socket" != "X$define"; then
10971 echo "or anywhere else I see." >&4
10979 : see if socketpair exists
10980 set socketpair d_sockpair
10985 echo "Checking the availability of certain socket constants..." >&4
10986 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
10987 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
10989 #include <sys/types.h>
10990 #include <sys/socket.h>
10996 set try; if eval $compile; then
10999 set d_${enum}; eval $setvar
11003 : see if this is a sys/uio.h system
11004 set sys/uio.h i_sysuio
11009 echo "Checking to see if your system supports struct cmsghdr..." >&4
11010 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
11012 case "$d_cmsghdr_s" in
11013 "$define") echo "Yes, it does." ;;
11014 *) echo "No, it doesn't." ;;
11018 : check for const keyword
11020 echo 'Checking to see if your C compiler knows about "const"...' >&4
11021 $cat >const.c <<'EOCP'
11022 typedef struct spug { int drokk; } spug;
11026 const spug y = { 0 };
11029 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
11031 echo "Yup, it does."
11034 echo "Nope, it doesn't."
11039 : see if copysignl exists
11040 set copysignl d_copysignl
11043 : see if crypt exists
11048 $define) cryptlib='' ;;
11049 *) if set crypt val -f d_crypt; eval $csym; $val; then
11050 echo 'crypt() found.' >&4
11054 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
11055 if $test -z "$cryptlib"; then
11056 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
11060 if $test -z "$cryptlib"; then
11061 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
11065 if $test -z "$cryptlib"; then
11066 cryptlib=`./loc libcrypt$_a "" $libpth`
11070 if $test -z "$cryptlib"; then
11071 echo 'crypt() NOT found.' >&4
11082 : see if this is a crypt.h system
11083 set crypt.h i_crypt
11086 : see if crypt_r exists
11087 set crypt_r d_crypt_r
11089 case "$d_crypt_r" in
11091 hdrs="$i_systypes sys/types.h define stdio.h $i_crypt crypt.h"
11092 case "$d_crypt_r_proto:$usethreads" in
11093 ":define") d_crypt_r_proto=define
11094 set d_crypt_r_proto crypt_r $hdrs
11098 case "$d_crypt_r_proto" in
11100 case "$crypt_r_proto" in
11101 ''|0) try='char* crypt_r(const char*, const char*, struct crypt_data*);'
11102 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCS ;;
11104 case "$crypt_r_proto" in
11105 ''|0) try='char* crypt_r(const char*, const char*, CRYPTD*);'
11106 ./protochk "extern $try" $hdrs && crypt_r_proto=B_CCD ;;
11108 case "$crypt_r_proto" in
11109 ''|0) d_crypt_r=undef
11111 echo "Disabling crypt_r, cannot determine prototype." >&4 ;;
11112 * ) case "$crypt_r_proto" in
11113 REENTRANT_PROTO*) ;;
11114 *) crypt_r_proto="REENTRANT_PROTO_$crypt_r_proto" ;;
11116 echo "Prototype: $try" ;;
11119 *) case "$usethreads" in
11120 define) echo "crypt_r has no prototype, not using it." >&4 ;;
11131 : get csh whereabouts
11133 'csh') val="$undef" ;;
11134 *) val="$define" ;;
11138 : Respect a hint or command line value for full_csh.
11139 case "$full_csh" in
11140 '') full_csh=$csh ;;
11143 : see if ctermid exists
11144 set ctermid d_ctermid
11147 : see if ctermid_r exists
11148 set ctermid_r d_ctermid_r
11150 case "$d_ctermid_r" in
11152 hdrs="$i_systypes sys/types.h define stdio.h "
11153 case "$d_ctermid_r_proto:$usethreads" in
11154 ":define") d_ctermid_r_proto=define
11155 set d_ctermid_r_proto ctermid_r $hdrs
11159 case "$d_ctermid_r_proto" in
11161 case "$ctermid_r_proto" in
11162 ''|0) try='char* ctermid_r(char*);'
11163 ./protochk "extern $try" $hdrs && ctermid_r_proto=B_B ;;
11165 case "$ctermid_r_proto" in
11166 ''|0) d_ctermid_r=undef
11168 echo "Disabling ctermid_r, cannot determine prototype." >&4 ;;
11169 * ) case "$ctermid_r_proto" in
11170 REENTRANT_PROTO*) ;;
11171 *) ctermid_r_proto="REENTRANT_PROTO_$ctermid_r_proto" ;;
11173 echo "Prototype: $try" ;;
11176 *) case "$usethreads" in
11177 define) echo "ctermid_r has no prototype, not using it." >&4 ;;
11184 *) ctermid_r_proto=0
11188 : see if ctime_r exists
11189 set ctime_r d_ctime_r
11191 case "$d_ctime_r" in
11193 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
11194 case "$d_ctime_r_proto:$usethreads" in
11195 ":define") d_ctime_r_proto=define
11196 set d_ctime_r_proto ctime_r $hdrs
11200 case "$d_ctime_r_proto" in
11202 case "$ctime_r_proto" in
11203 ''|0) try='char* ctime_r(const time_t*, char*);'
11204 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SB ;;
11206 case "$ctime_r_proto" in
11207 ''|0) try='char* ctime_r(const time_t*, char*, int);'
11208 ./protochk "extern $try" $hdrs && ctime_r_proto=B_SBI ;;
11210 case "$ctime_r_proto" in
11211 ''|0) try='int ctime_r(const time_t*, char*);'
11212 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SB ;;
11214 case "$ctime_r_proto" in
11215 ''|0) try='int ctime_r(const time_t*, char*, int);'
11216 ./protochk "extern $try" $hdrs && ctime_r_proto=I_SBI ;;
11218 case "$ctime_r_proto" in
11219 ''|0) d_ctime_r=undef
11221 echo "Disabling ctime_r, cannot determine prototype." >&4 ;;
11222 * ) case "$ctime_r_proto" in
11223 REENTRANT_PROTO*) ;;
11224 *) ctime_r_proto="REENTRANT_PROTO_$ctime_r_proto" ;;
11226 echo "Prototype: $try" ;;
11229 *) case "$usethreads" in
11230 define) echo "ctime_r has no prototype, not using it." >&4 ;;
11241 : see if cuserid exists
11242 set cuserid d_cuserid
11245 : see if this is a limits.h system
11246 set limits.h i_limits
11249 : see if this is a float.h system
11250 set float.h i_float
11253 : See if number of significant digits in a double precision number is known
11255 $cat >dbl_dig.c <<EOM
11256 #$i_limits I_LIMITS
11259 #include <limits.h>
11265 printf("Contains DBL_DIG");
11268 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
11269 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
11270 echo "DBL_DIG found." >&4
11273 echo "DBL_DIG NOT found." >&4
11280 : see if dbm.h is available
11281 : see if dbmclose exists
11282 set dbmclose d_dbmclose
11285 case "$d_dbmclose" in
11295 *) set rpcsvc/dbm.h i_rpcsvcdbm
11300 *) echo "We won't be including <dbm.h>"
11310 : see if prototype for dbminit is available
11312 set d_dbminitproto dbminit $i_dbm dbm.h
11315 : see if difftime exists
11316 set difftime d_difftime
11319 : see if this is a dirent system
11321 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
11323 echo "<dirent.h> found." >&4
11326 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
11327 echo "<sys/dir.h> found." >&4
11330 xinc=`./findhdr sys/ndir.h`
11332 echo "<dirent.h> NOT found." >&4
11337 : Look for type of directory structure.
11339 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11341 case "$direntrytype" in
11343 case "$i_dirent" in
11344 $define) guess1='struct dirent' ;;
11345 *) guess1='struct direct' ;;
11348 *) guess1="$direntrytype"
11353 'struct dirent') guess2='struct direct' ;;
11354 *) guess2='struct dirent' ;;
11357 if $contains "$guess1" try.c >/dev/null 2>&1; then
11358 direntrytype="$guess1"
11359 echo "Your directory entries are $direntrytype." >&4
11360 elif $contains "$guess2" try.c >/dev/null 2>&1; then
11361 direntrytype="$guess2"
11362 echo "Your directory entries seem to be $direntrytype." >&4
11364 echo "I don't recognize your system's directory entries." >&4
11365 rp="What type is used for directory entries on this system?"
11368 direntrytype="$ans"
11372 : see if the directory entry stores field length
11374 $cppstdin $cppflags $cppminus < "$xinc" > try.c
11375 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
11376 echo "Good, your directory entry keeps length information in d_namlen." >&4
11379 echo "Your directory entry does not know about the d_namlen field." >&4
11386 : Look for DIR.dd_fd
11387 case "$i_dirent" in
11389 echo "Checking to see if DIR has a dd_fd member variable" >&4
11391 #$i_stdlib I_STDLIB
11393 #include <stdlib.h>
11395 #include <dirent.h>
11405 if eval $compile; then
11406 echo "Yes, it does."
11409 echo "No, it does not."
11414 echo "You don't have a <dirent.h>, so not checking for dd_fd." >&4
11422 : see if this is an sysdir system
11423 set sys/dir.h i_sysdir
11426 : see if this is an sysndir system
11427 set sys/ndir.h i_sysndir
11432 $cat >dirfd.c <<EOM
11434 #$i_stdlib I_STDLIB
11436 #include <stdlib.h>
11438 #$i_dirent I_DIRENT /**/
11439 #$i_sysdir I_SYS_DIR /**/
11440 #$i_sysndir I_SYS_NDIR /**/
11441 #$i_systypes I_SYS_TYPES /**/
11442 #if defined(I_SYS_TYPES)
11443 #include <sys/types.h>
11445 #if defined(I_DIRENT)
11446 #include <dirent.h>
11447 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11448 #include <sys/dir.h>
11452 #include <sys/ndir.h>
11456 #include <ndir.h> /* may be wrong in the future */
11458 #include <sys/dir.h>
11464 DIR *dirp = opendir(".");
11465 if (dirfd(dirp) >= 0)
11473 if eval $compile; then
11477 $define) echo "dirfd() found." >&4 ;;
11478 *) echo "dirfd() NOT found." >&4 ;;
11484 : see if dlerror exists
11487 set dlerror d_dlerror
11491 : see if dlfcn is available
11492 set dlfcn.h i_dlfcn
11499 On a few systems, the dynamically loaded modules that perl generates and uses
11500 will need a different extension than shared libs. The default will probably
11506 *) dflt="$dlext" ;;
11508 rp='What is the extension of dynamically loaded modules'
11517 : Check if dlsym need a leading underscore
11523 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
11524 $cat >dyna.c <<'EOM'
11531 #$i_stdlib I_STDLIB
11533 #include <stdlib.h>
11537 #include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
11539 #include <sys/types.h>
11544 extern int fred() ;
11553 int mode = RTLD_LAZY ;
11555 handle = dlopen("./dyna.$dlext", mode) ;
11556 if (handle == NULL) {
11561 symbol = dlsym(handle, "fred") ;
11562 if (symbol == NULL) {
11563 /* try putting a leading underscore */
11564 symbol = dlsym(handle, "_fred") ;
11565 if (symbol == NULL) {
11578 : Call the object file tmp-dyna.o in case dlext=o.
11579 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
11580 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
11581 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
11582 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
11585 1) echo "Test program failed using dlopen." >&4
11586 echo "Perhaps you should not use dynamic loading." >&4;;
11587 2) echo "Test program failed using dlsym." >&4
11588 echo "Perhaps you should not use dynamic loading." >&4;;
11589 3) echo "dlsym needs a leading underscore" >&4
11591 4) echo "dlsym doesn't need a leading underscore." >&4;;
11594 echo "I can't compile and run the test program." >&4
11595 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
11600 $rm -f fred fred.* dyna.$dlext dyna.* tmp-dyna.*
11605 : see if drand48_r exists
11606 set drand48_r d_drand48_r
11608 case "$d_drand48_r" in
11610 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
11611 case "$d_drand48_r_proto:$usethreads" in
11612 ":define") d_drand48_r_proto=define
11613 set d_drand48_r_proto drand48_r $hdrs
11617 case "$d_drand48_r_proto" in
11619 case "$drand48_r_proto" in
11620 ''|0) try='int drand48_r(struct drand48_data*, double*);'
11621 ./protochk "extern $try" $hdrs && drand48_r_proto=I_ST ;;
11623 case "$drand48_r_proto" in
11624 ''|0) d_drand48_r=undef
11626 echo "Disabling drand48_r, cannot determine prototype." >&4 ;;
11627 * ) case "$drand48_r_proto" in
11628 REENTRANT_PROTO*) ;;
11629 *) drand48_r_proto="REENTRANT_PROTO_$drand48_r_proto" ;;
11631 echo "Prototype: $try" ;;
11634 *) case "$usethreads" in
11635 define) echo "drand48_r has no prototype, not using it." >&4 ;;
11642 *) drand48_r_proto=0
11646 : see if prototype for drand48 is available
11648 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
11651 : see if dup2 exists
11655 : see if eaccess exists
11656 set eaccess d_eaccess
11659 : see if endgrent exists
11660 set endgrent d_endgrent
11663 : see if this is an grp system
11669 xxx=`./findhdr grp.h`
11670 $cppstdin $cppflags $cppminus < $xxx >$$.h
11672 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
11684 set d_grpasswd; eval $setvar
11688 : see if endgrent_r exists
11689 set endgrent_r d_endgrent_r
11691 case "$d_endgrent_r" in
11693 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
11694 case "$d_endgrent_r_proto:$usethreads" in
11695 ":define") d_endgrent_r_proto=define
11696 set d_endgrent_r_proto endgrent_r $hdrs
11700 case "$d_endgrent_r_proto" in
11702 case "$endgrent_r_proto" in
11703 ''|0) try='int endgrent_r(FILE**);'
11704 ./protochk "extern $try" $hdrs && endgrent_r_proto=I_H ;;
11706 case "$endgrent_r_proto" in
11707 ''|0) try='void endgrent_r(FILE**);'
11708 ./protochk "extern $try" $hdrs && endgrent_r_proto=V_H ;;
11710 case "$endgrent_r_proto" in
11711 ''|0) d_endgrent_r=undef
11713 echo "Disabling endgrent_r, cannot determine prototype." >&4 ;;
11714 * ) case "$endgrent_r_proto" in
11715 REENTRANT_PROTO*) ;;
11716 *) endgrent_r_proto="REENTRANT_PROTO_$endgrent_r_proto" ;;
11718 echo "Prototype: $try" ;;
11721 *) case "$usethreads" in
11722 define) echo "endgrent_r has no prototype, not using it." >&4 ;;
11729 *) endgrent_r_proto=0
11733 : see if endhostent exists
11734 set endhostent d_endhent
11737 : see if this is a netdb.h system
11738 set netdb.h i_netdb
11741 : see if endhostent_r exists
11742 set endhostent_r d_endhostent_r
11744 case "$d_endhostent_r" in
11746 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11747 case "$d_endhostent_r_proto:$usethreads" in
11748 ":define") d_endhostent_r_proto=define
11749 set d_endhostent_r_proto endhostent_r $hdrs
11753 case "$d_endhostent_r_proto" in
11755 case "$endhostent_r_proto" in
11756 ''|0) try='int endhostent_r(struct hostent_data*);'
11757 ./protochk "extern $try" $hdrs && endhostent_r_proto=I_D ;;
11759 case "$endhostent_r_proto" in
11760 ''|0) try='void endhostent_r(struct hostent_data*);'
11761 ./protochk "extern $try" $hdrs && endhostent_r_proto=V_D ;;
11763 case "$endhostent_r_proto" in
11764 ''|0) d_endhostent_r=undef
11765 endhostent_r_proto=0
11766 echo "Disabling endhostent_r, cannot determine prototype." >&4 ;;
11767 * ) case "$endhostent_r_proto" in
11768 REENTRANT_PROTO*) ;;
11769 *) endhostent_r_proto="REENTRANT_PROTO_$endhostent_r_proto" ;;
11771 echo "Prototype: $try" ;;
11774 *) case "$usethreads" in
11775 define) echo "endhostent_r has no prototype, not using it." >&4 ;;
11777 d_endhostent_r=undef
11778 endhostent_r_proto=0
11782 *) endhostent_r_proto=0
11786 : see if endnetent exists
11787 set endnetent d_endnent
11790 : see if endnetent_r exists
11791 set endnetent_r d_endnetent_r
11793 case "$d_endnetent_r" in
11795 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11796 case "$d_endnetent_r_proto:$usethreads" in
11797 ":define") d_endnetent_r_proto=define
11798 set d_endnetent_r_proto endnetent_r $hdrs
11802 case "$d_endnetent_r_proto" in
11804 case "$endnetent_r_proto" in
11805 ''|0) try='int endnetent_r(struct netent_data*);'
11806 ./protochk "extern $try" $hdrs && endnetent_r_proto=I_D ;;
11808 case "$endnetent_r_proto" in
11809 ''|0) try='void endnetent_r(struct netent_data*);'
11810 ./protochk "extern $try" $hdrs && endnetent_r_proto=V_D ;;
11812 case "$endnetent_r_proto" in
11813 ''|0) d_endnetent_r=undef
11814 endnetent_r_proto=0
11815 echo "Disabling endnetent_r, cannot determine prototype." >&4 ;;
11816 * ) case "$endnetent_r_proto" in
11817 REENTRANT_PROTO*) ;;
11818 *) endnetent_r_proto="REENTRANT_PROTO_$endnetent_r_proto" ;;
11820 echo "Prototype: $try" ;;
11823 *) case "$usethreads" in
11824 define) echo "endnetent_r has no prototype, not using it." >&4 ;;
11826 d_endnetent_r=undef
11827 endnetent_r_proto=0
11831 *) endnetent_r_proto=0
11835 : see if endprotoent exists
11836 set endprotoent d_endpent
11839 : see if endprotoent_r exists
11840 set endprotoent_r d_endprotoent_r
11842 case "$d_endprotoent_r" in
11844 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
11845 case "$d_endprotoent_r_proto:$usethreads" in
11846 ":define") d_endprotoent_r_proto=define
11847 set d_endprotoent_r_proto endprotoent_r $hdrs
11851 case "$d_endprotoent_r_proto" in
11853 case "$endprotoent_r_proto" in
11854 ''|0) try='int endprotoent_r(struct protoent_data*);'
11855 ./protochk "extern $try" $hdrs && endprotoent_r_proto=I_D ;;
11857 case "$endprotoent_r_proto" in
11858 ''|0) try='void endprotoent_r(struct protoent_data*);'
11859 ./protochk "extern $try" $hdrs && endprotoent_r_proto=V_D ;;
11861 case "$endprotoent_r_proto" in
11862 ''|0) d_endprotoent_r=undef
11863 endprotoent_r_proto=0
11864 echo "Disabling endprotoent_r, cannot determine prototype." >&4 ;;
11865 * ) case "$endprotoent_r_proto" in
11866 REENTRANT_PROTO*) ;;
11867 *) endprotoent_r_proto="REENTRANT_PROTO_$endprotoent_r_proto" ;;
11869 echo "Prototype: $try" ;;
11872 *) case "$usethreads" in
11873 define) echo "endprotoent_r has no prototype, not using it." >&4 ;;
11875 d_endprotoent_r=undef
11876 endprotoent_r_proto=0
11880 *) endprotoent_r_proto=0
11884 : see if endpwent exists
11885 set endpwent d_endpwent
11888 : see if this is a pwd.h system
11894 xxx=`./findhdr pwd.h`
11895 $cppstdin $cppflags $cppminus < $xxx >$$.h
11897 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11905 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11913 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11921 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11929 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11937 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11945 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11953 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11965 set d_pwquota; eval $setvar
11966 set d_pwage; eval $setvar
11967 set d_pwchange; eval $setvar
11968 set d_pwclass; eval $setvar
11969 set d_pwexpire; eval $setvar
11970 set d_pwcomment; eval $setvar
11971 set d_pwgecos; eval $setvar
11972 set d_pwpasswd; eval $setvar
11976 : see if endpwent_r exists
11977 set endpwent_r d_endpwent_r
11979 case "$d_endpwent_r" in
11981 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
11982 case "$d_endpwent_r_proto:$usethreads" in
11983 ":define") d_endpwent_r_proto=define
11984 set d_endpwent_r_proto endpwent_r $hdrs
11988 case "$d_endpwent_r_proto" in
11990 case "$endpwent_r_proto" in
11991 ''|0) try='int endpwent_r(FILE**);'
11992 ./protochk "extern $try" $hdrs && endpwent_r_proto=I_H ;;
11994 case "$endpwent_r_proto" in
11995 ''|0) try='void endpwent_r(FILE**);'
11996 ./protochk "extern $try" $hdrs && endpwent_r_proto=V_H ;;
11998 case "$endpwent_r_proto" in
11999 ''|0) d_endpwent_r=undef
12001 echo "Disabling endpwent_r, cannot determine prototype." >&4 ;;
12002 * ) case "$endpwent_r_proto" in
12003 REENTRANT_PROTO*) ;;
12004 *) endpwent_r_proto="REENTRANT_PROTO_$endpwent_r_proto" ;;
12006 echo "Prototype: $try" ;;
12009 *) case "$usethreads" in
12010 define) echo "endpwent_r has no prototype, not using it." >&4 ;;
12017 *) endpwent_r_proto=0
12021 : see if endservent exists
12022 set endservent d_endsent
12025 : see if endservent_r exists
12026 set endservent_r d_endservent_r
12028 case "$d_endservent_r" in
12030 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
12031 case "$d_endservent_r_proto:$usethreads" in
12032 ":define") d_endservent_r_proto=define
12033 set d_endservent_r_proto endservent_r $hdrs
12037 case "$d_endservent_r_proto" in
12039 case "$endservent_r_proto" in
12040 ''|0) try='int endservent_r(struct servent_data*);'
12041 ./protochk "extern $try" $hdrs && endservent_r_proto=I_D ;;
12043 case "$endservent_r_proto" in
12044 ''|0) try='void endservent_r(struct servent_data*);'
12045 ./protochk "extern $try" $hdrs && endservent_r_proto=V_D ;;
12047 case "$endservent_r_proto" in
12048 ''|0) d_endservent_r=undef
12049 endservent_r_proto=0
12050 echo "Disabling endservent_r, cannot determine prototype." >&4 ;;
12051 * ) case "$endservent_r_proto" in
12052 REENTRANT_PROTO*) ;;
12053 *) endservent_r_proto="REENTRANT_PROTO_$endservent_r_proto" ;;
12055 echo "Prototype: $try" ;;
12058 *) case "$usethreads" in
12059 define) echo "endservent_r has no prototype, not using it." >&4 ;;
12061 d_endservent_r=undef
12062 endservent_r_proto=0
12066 *) endservent_r_proto=0
12070 : Locate the flags for 'open()'
12073 #include <sys/types.h>
12078 #include <sys/file.h>
12080 #$i_stdlib I_STDLIB
12082 #include <stdlib.h>
12093 : check sys/file.h first to get FREAD on Sun
12094 if $test `./findhdr sys/file.h` && \
12095 set try -DI_SYS_FILE && eval $compile; then
12097 echo "<sys/file.h> defines the O_* constants..." >&4
12098 if $run ./try; then
12099 echo "and you have the 3 argument form of open()." >&4
12102 echo "but not the 3 argument form of open(). Oh, well." >&4
12105 elif $test `./findhdr fcntl.h` && \
12106 set try -DI_FCNTL && eval $compile; then
12108 echo "<fcntl.h> defines the O_* constants..." >&4
12109 if $run ./try; then
12110 echo "and you have the 3 argument form of open()." >&4
12113 echo "but not the 3 argument form of open(). Oh, well." >&4
12118 echo "I can't find the O_* constant definitions! You got problems." >&4
12124 : see which of string.h or strings.h is needed
12126 strings=`./findhdr string.h`
12127 if $test "$strings" && $test -r "$strings"; then
12128 echo "Using <string.h> instead of <strings.h>." >&4
12132 strings=`./findhdr strings.h`
12133 if $test "$strings" && $test -r "$strings"; then
12134 echo "Using <strings.h> instead of <string.h>." >&4
12136 echo "No string header found -- You'll surely have problems." >&4
12141 case "$i_string" in
12142 "$undef") strings=`./findhdr strings.h`;;
12143 *) strings=`./findhdr string.h`;;
12146 : see if this is a sys/file.h system
12151 : do we need to include sys/file.h ?
12155 if $h_sysfile; then
12157 echo "We'll be including <sys/file.h>." >&4
12160 echo "We won't be including <sys/file.h>." >&4
12170 : see if fcntl.h is there
12175 : see if we can include fcntl.h
12181 echo "We'll be including <fcntl.h>." >&4
12184 if $h_sysfile; then
12185 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
12187 echo "We won't be including <fcntl.h>." >&4
12199 : see if fork exists
12203 : see if pipe exists
12207 : check for non-blocking I/O stuff
12208 case "$h_sysfile" in
12209 true) echo "#include <sys/file.h>" > head.c;;
12212 true) echo "#include <fcntl.h>" > head.c;;
12213 *) echo "#include <sys/fcntl.h>" > head.c;;
12218 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
12219 case "$o_nonblock" in
12221 $cat head.c > try.c
12222 $cat >>try.c <<EOCP
12224 #$i_stdlib I_STDLIB
12226 #include <stdlib.h>
12234 printf("O_NONBLOCK\n");
12238 printf("O_NDELAY\n");
12242 printf("FNDELAY\n");
12249 if eval $compile_ok; then
12250 o_nonblock=`$run ./try`
12251 case "$o_nonblock" in
12252 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
12253 *) echo "Seems like we can use $o_nonblock.";;
12256 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
12259 *) echo "Using $hint value $o_nonblock.";;
12264 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
12267 case "$d_fork:$d_pipe" in
12269 $cat head.c > try.c
12270 $cat >>try.c <<EOCP
12272 #include <sys/types.h>
12273 #include <signal.h>
12275 #$i_stdlib I_STDLIB
12277 #include <stdlib.h>
12283 #define MY_O_NONBLOCK $o_nonblock
12284 #ifndef errno /* XXX need better Configure test */
12287 #$i_unistd I_UNISTD
12289 #include <unistd.h>
12291 #$i_string I_STRING
12293 #include <string.h>
12295 #include <strings.h>
12297 $signal_t blech(int x) { exit(3); }
12299 $cat >> try.c <<'EOCP'
12307 pipe(pd); /* Down: child -> parent */
12308 pipe(pu); /* Up: parent -> child */
12311 close(pd[1]); /* Parent reads from pd[0] */
12312 close(pu[0]); /* Parent writes (blocking) to pu[1] */
12314 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
12319 signal(SIGALRM, blech);
12321 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
12323 sprintf(string, "%d\n", ret);
12324 write(2, string, strlen(string));
12327 if (errno == EAGAIN) {
12328 printf("EAGAIN\n");
12333 if (errno == EWOULDBLOCK)
12334 printf("EWOULDBLOCK\n");
12337 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
12338 sleep(2); /* Give it time to close our pipe */
12340 ret = read(pd[0], buf, 1); /* Should read EOF */
12342 sprintf(string, "%d\n", ret);
12343 write(4, string, strlen(string));
12347 close(pd[0]); /* We write to pd[1] */
12348 close(pu[1]); /* We read from pu[0] */
12349 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
12350 close(pd[1]); /* Pipe pd is now fully closed! */
12351 exit(0); /* Bye bye, thank you for playing! */
12355 if eval $compile_ok; then
12356 echo "$startsh" >mtry
12357 echo "$run ./try >try.out 2>try.ret 4>try.err || exit 4" >>mtry
12359 ./mtry >/dev/null 2>&1
12361 0) eagain=`$cat try.out`;;
12362 1) echo "Could not perform non-blocking setting!";;
12363 2) echo "I did a successful read() for something that was not there!";;
12364 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
12365 4) echo "Could not find F_SETFL!";;
12366 *) echo "Something terribly wrong happened during testing.";;
12368 rd_nodata=`$cat try.ret`
12369 echo "A read() system call with no data present returns $rd_nodata."
12370 case "$rd_nodata" in
12373 echo "(That's peculiar, fixing that to be -1.)"
12379 echo "Forcing errno EAGAIN on read() with no data available."
12383 echo "Your read() sets errno to $eagain when no data is available."
12386 status=`$cat try.err`
12388 0) echo "And it correctly returns 0 to signal EOF.";;
12389 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
12390 *) echo "However, your read() returns '$status' on EOF??";;
12393 if test "$status" = "$rd_nodata"; then
12394 echo "WARNING: you can't distinguish between EOF and no data!"
12398 echo "I can't compile the test program--assuming errno EAGAIN will do."
12402 *) echo "Can't figure out how to test this--assuming errno EAGAIN will do."
12411 echo "Using $hint value $eagain."
12412 echo "Your read() returns $rd_nodata when no data is present."
12413 case "$d_eofnblk" in
12414 "$define") echo "And you can see EOF because read() returns 0.";;
12415 "$undef") echo "But you can't see EOF status from read() returned value.";;
12417 echo "(Assuming you can't see EOF status from read anyway.)"
12423 $rm_try head.c mtry
12425 : see if _ptr and _cnt from stdio act std
12428 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12429 echo "(Looks like you have stdio.h from BSD.)"
12430 case "$stdio_ptr" in
12431 '') stdio_ptr='((fp)->_p)'
12434 *) ptr_lval=$d_stdio_ptr_lval;;
12436 case "$stdio_cnt" in
12437 '') stdio_cnt='((fp)->_r)'
12440 *) cnt_lval=$d_stdio_cnt_lval;;
12442 case "$stdio_base" in
12443 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12445 case "$stdio_bufsiz" in
12446 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12448 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12449 echo "(Looks like you have stdio.h from Linux.)"
12450 case "$stdio_ptr" in
12451 '') stdio_ptr='((fp)->_IO_read_ptr)'
12454 *) ptr_lval=$d_stdio_ptr_lval;;
12456 case "$stdio_cnt" in
12457 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12460 *) cnt_lval=$d_stdio_cnt_lval;;
12462 case "$stdio_base" in
12463 '') stdio_base='((fp)->_IO_read_base)';;
12465 case "$stdio_bufsiz" in
12466 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12469 case "$stdio_ptr" in
12470 '') stdio_ptr='((fp)->_ptr)'
12473 *) ptr_lval=$d_stdio_ptr_lval;;
12475 case "$stdio_cnt" in
12476 '') stdio_cnt='((fp)->_cnt)'
12479 *) cnt_lval=$d_stdio_cnt_lval;;
12481 case "$stdio_base" in
12482 '') stdio_base='((fp)->_base)';;
12484 case "$stdio_bufsiz" in
12485 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12489 : test whether _ptr and _cnt really work
12490 echo "Checking how std your stdio is..." >&4
12493 #$i_stdlib I_STDLIB
12495 #include <stdlib.h>
12497 #define FILE_ptr(fp) $stdio_ptr
12498 #define FILE_cnt(fp) $stdio_cnt
12500 FILE *fp = fopen("try.c", "r");
12503 18 <= FILE_cnt(fp) &&
12504 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12512 if eval $compile && $to try.c; then
12513 if $run ./try; then
12514 echo "Your stdio acts pretty std."
12517 echo "Your stdio isn't very std."
12520 echo "Your stdio doesn't appear very std."
12524 # glibc 2.2.90 and above apparently change stdio streams so Perl's
12525 # direct buffer manipulation no longer works. The Configure tests
12526 # should be changed to correctly detect this, but until then,
12527 # the following check should at least let perl compile and run.
12528 # (This quick fix should be updated before 5.8.1.)
12529 # To be defensive, reject all unknown versions, and all versions > 2.2.9.
12530 # A. Dougherty, June 3, 2002.
12531 case "$d_gnulibc" in
12533 case "$gnulibc_version" in
12537 *) echo "But I will not snoop inside glibc $gnulibc_version stdio buffers."
12546 : Can _ptr be used as an lvalue?
12547 case "$d_stdstdio$ptr_lval" in
12548 $define$define) val=$define ;;
12551 set d_stdio_ptr_lval
12554 : Can _cnt be used as an lvalue?
12555 case "$d_stdstdio$cnt_lval" in
12556 $define$define) val=$define ;;
12559 set d_stdio_cnt_lval
12563 : test whether setting _ptr sets _cnt as a side effect
12564 d_stdio_ptr_lval_sets_cnt="$undef"
12565 d_stdio_ptr_lval_nochange_cnt="$undef"
12566 case "$d_stdio_ptr_lval$d_stdstdio" in
12568 echo "Checking to see what happens if we set the stdio ptr..." >&4
12571 /* Can we scream? */
12572 /* Eat dust sed :-) */
12573 /* In the buffer space, no one can hear you scream. */
12574 #$i_stdlib I_STDLIB
12576 #include <stdlib.h>
12578 #define FILE_ptr(fp) $stdio_ptr
12579 #define FILE_cnt(fp) $stdio_cnt
12580 #include <sys/types.h>
12582 FILE *fp = fopen("try.c", "r");
12587 puts("Fail even to read");
12590 c = getc(fp); /* Read away the first # */
12592 puts("Fail even to read");
12596 18 <= FILE_cnt(fp) &&
12597 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12599 puts("Fail even to read");
12602 ptr = (char*) FILE_ptr(fp);
12603 cnt = (size_t)FILE_cnt(fp);
12605 FILE_ptr(fp) += 42;
12607 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12608 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12611 if (FILE_cnt(fp) <= 20) {
12612 printf ("Fail (<20 chars to test)");
12615 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12616 puts("Fail compare");
12619 if (cnt == FILE_cnt(fp)) {
12620 puts("Pass_unchanged");
12623 if (FILE_cnt(fp) == (cnt - 42)) {
12624 puts("Pass_changed");
12627 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12633 if eval $compile && $to try.c; then
12634 case `$run ./try` in
12636 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
12637 d_stdio_ptr_lval_sets_cnt="$define" ;;
12639 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12640 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12642 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12644 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12647 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12653 : see if _base is also standard
12655 case "$d_stdstdio" in
12659 #$i_stdlib I_STDLIB
12661 #include <stdlib.h>
12663 #define FILE_base(fp) $stdio_base
12664 #define FILE_bufsiz(fp) $stdio_bufsiz
12666 FILE *fp = fopen("try.c", "r");
12669 19 <= FILE_bufsiz(fp) &&
12670 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12677 if eval $compile && $to try.c; then
12678 if $run ./try; then
12679 echo "And its _base field acts std."
12682 echo "But its _base field isn't std."
12685 echo "However, it seems to be lacking the _base field."
12693 : see if fast_stdio exists
12695 case "$d_stdstdio:$d_stdio_ptr_lval" in
12697 case "$d_stdio_cnt_lval$d_stdio_ptr_lval_sets_cnt" in
12699 echo "You seem to have 'fast stdio' to directly manipulate the stdio buffers." >& 4
12710 : see if fchdir exists
12711 set fchdir d_fchdir
12714 : see if fchmod exists
12715 set fchmod d_fchmod
12718 : see if fchown exists
12719 set fchown d_fchown
12722 : see if this is an fcntl system
12727 : See if fcntl-based locking works.
12729 #$i_stdlib I_STDLIB
12731 #include <stdlib.h>
12733 #include <unistd.h>
12735 #include <signal.h>
12736 $signal_t blech(int x) { exit(3); }
12738 #if defined(F_SETLK) && defined(F_SETLKW)
12739 struct flock flock;
12741 fd = open("try.c", O_RDONLY);
12742 flock.l_type = F_RDLCK;
12743 flock.l_whence = SEEK_SET;
12744 flock.l_start = flock.l_len = 0;
12745 signal(SIGALRM, blech);
12747 retval = fcntl(fd, F_SETLK, &flock);
12749 (retval < 0 ? exit(2) : exit(0));
12755 echo "Checking if fcntl-based file locking works... "
12759 if eval $compile_ok; then
12760 if $run ./try; then
12761 echo "Yes, it seems to work."
12764 echo "Nope, it didn't work."
12769 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
12770 *** This is (almost) impossible.
12771 *** If your NFS lock daemons are not feeling well, something like
12772 *** this may happen, please investigate. Cannot continue, aborting.
12780 echo "I'm unable to compile the test program, so I'll assume not."
12785 echo "Nope, since you don't even have fcntl()."
12788 set d_fcntl_can_lock
12792 : check for fd_set items
12795 Checking to see how well your C compiler handles fd_set and friends ...
12798 #$i_stdlib I_STDLIB
12800 #include <stdlib.h>
12802 #$i_systime I_SYS_TIME
12803 #$i_sysselct I_SYS_SELECT
12804 #$d_socket HAS_SOCKET
12805 #include <sys/types.h>
12807 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12810 #include <sys/time.h>
12812 #ifdef I_SYS_SELECT
12813 #include <sys/select.h>
12822 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
12830 if eval $compile; then
12831 d_fds_bits="$define"
12833 echo "Well, your system knows about the normal fd_set typedef..." >&4
12834 if $run ./try; then
12835 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
12836 d_fd_macros="$define"
12839 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
12841 d_fd_macros="$undef"
12845 Hmm, your compiler has some difficulty with fd_set. Checking further...
12848 if eval $compile; then
12849 d_fds_bits="$undef"
12851 echo "Well, your system has some sort of fd_set available..." >&4
12852 if $run ./try; then
12853 echo "and you have the normal fd_set macros." >&4
12854 d_fd_macros="$define"
12857 but not the normal fd_set macros! Gross! More work for me...
12859 d_fd_macros="$undef"
12862 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
12864 d_fds_bits="$undef"
12865 d_fd_macros="$undef"
12870 : see if fgetpos exists
12871 set fgetpos d_fgetpos
12874 : see if finite exists
12875 set finite d_finite
12878 : see if finitel exists
12879 set finitel d_finitel
12882 : see if flock exists
12886 : see if prototype for flock is available
12888 set d_flockproto flock $i_sysfile sys/file.h
12891 : see if fp_class exists
12892 set fp_class d_fp_class
12895 : see if pathconf exists
12896 set pathconf d_pathconf
12899 : see if fpathconf exists
12900 set fpathconf d_fpathconf
12903 : see if fpclass exists
12904 set fpclass d_fpclass
12907 : see if fpclassify exists
12908 set fpclassify d_fpclassify
12911 : see if fpclassl exists
12912 set fpclassl d_fpclassl
12916 : check for fpos64_t
12918 echo "Checking to see if you have fpos64_t..." >&4
12921 int main() { fpos64_t x = 7; }
12924 if eval $compile; then
12926 echo "You have fpos64_t."
12929 echo "You do not have fpos64_t."
12930 case "$fpossize" in
12931 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
12938 : see if frexpl exists
12939 set frexpl d_frexpl
12942 : see if this is a sys/param system
12943 set sys/param.h i_sysparam
12946 : see if this is a sys/mount.h system
12947 set sys/mount.h i_sysmount
12952 echo "Checking to see if your system supports struct fs_data..." >&4
12953 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
12955 case "$d_fs_data_s" in
12956 "$define") echo "Yes, it does." ;;
12957 *) echo "No, it doesn't." ;;
12960 : see if fseeko exists
12961 set fseeko d_fseeko
12963 case "$longsize" in
12964 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
12967 : see if fsetpos exists
12968 set fsetpos d_fsetpos
12972 : see if fstatfs exists
12973 set fstatfs d_fstatfs
12977 : see if statvfs exists
12978 set statvfs d_statvfs
12981 : see if fstatvfs exists
12982 set fstatvfs d_fstatvfs
12986 : see if fsync exists
12990 : see if ftello exists
12991 set ftello d_ftello
12993 case "$longsize" in
12994 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
12998 : check for a working futimes
13000 echo "Checking if you have a working futimes()" >&4
13003 #include <sys/time.h>
13010 fd = open ("try.c", O_RDWR);
13011 if (-1 == fd) exit (1);
13012 rv = futimes (fd, NULL);
13013 exit (rv == -1 ? errno : 0);
13017 if eval $compile; then
13021 0) echo "Yes, you have" >&4
13022 d_futimes="$define"
13024 *) echo "No, you have futimes, but it isn't working ($rc) (probably harmless)" >&4
13028 echo "No, it does not (probably harmless)" >&4
13032 : see if getcwd exists
13033 set getcwd d_getcwd
13036 : see if getespwnam exists
13037 set getespwnam d_getespwnam
13041 : see if getfsstat exists
13042 set getfsstat d_getfsstat
13045 : see if getgrent exists
13046 set getgrent d_getgrent
13049 : see if getgrent_r exists
13050 set getgrent_r d_getgrent_r
13052 case "$d_getgrent_r" in
13054 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13055 case "$d_getgrent_r_proto:$usethreads" in
13056 ":define") d_getgrent_r_proto=define
13057 set d_getgrent_r_proto getgrent_r $hdrs
13061 case "$d_getgrent_r_proto" in
13063 case "$getgrent_r_proto" in
13064 ''|0) try='int getgrent_r(struct group*, char*, size_t, struct group**);'
13065 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBWR ;;
13067 case "$getgrent_r_proto" in
13068 ''|0) try='int getgrent_r(struct group*, char*, int, struct group**);'
13069 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIR ;;
13071 case "$getgrent_r_proto" in
13072 ''|0) try='struct group* getgrent_r(struct group*, char*, size_t);'
13073 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBW ;;
13075 case "$getgrent_r_proto" in
13076 ''|0) try='struct group* getgrent_r(struct group*, char*, int);'
13077 ./protochk "extern $try" $hdrs && getgrent_r_proto=S_SBI ;;
13079 case "$getgrent_r_proto" in
13080 ''|0) try='int getgrent_r(struct group*, char*, int);'
13081 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBI ;;
13083 case "$getgrent_r_proto" in
13084 ''|0) try='int getgrent_r(struct group*, char*, int, FILE**);'
13085 ./protochk "extern $try" $hdrs && getgrent_r_proto=I_SBIH ;;
13087 case "$getgrent_r_proto" in
13088 ''|0) d_getgrent_r=undef
13090 echo "Disabling getgrent_r, cannot determine prototype." >&4 ;;
13091 * ) case "$getgrent_r_proto" in
13092 REENTRANT_PROTO*) ;;
13093 *) getgrent_r_proto="REENTRANT_PROTO_$getgrent_r_proto" ;;
13095 echo "Prototype: $try" ;;
13098 *) case "$usethreads" in
13099 define) echo "getgrent_r has no prototype, not using it." >&4 ;;
13106 *) getgrent_r_proto=0
13110 : see if getgrgid_r exists
13111 set getgrgid_r d_getgrgid_r
13113 case "$d_getgrgid_r" in
13115 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13116 case "$d_getgrgid_r_proto:$usethreads" in
13117 ":define") d_getgrgid_r_proto=define
13118 set d_getgrgid_r_proto getgrgid_r $hdrs
13122 case "$d_getgrgid_r_proto" in
13124 case "$getgrgid_r_proto" in
13125 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, size_t, struct group**);'
13126 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBWR ;;
13128 case "$getgrgid_r_proto" in
13129 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int, struct group**);'
13130 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBIR ;;
13132 case "$getgrgid_r_proto" in
13133 ''|0) try='int getgrgid_r(gid_t, struct group*, char*, int);'
13134 ./protochk "extern $try" $hdrs && getgrgid_r_proto=I_TSBI ;;
13136 case "$getgrgid_r_proto" in
13137 ''|0) try='struct group* getgrgid_r(gid_t, struct group*, char*, int);'
13138 ./protochk "extern $try" $hdrs && getgrgid_r_proto=S_TSBI ;;
13140 case "$getgrgid_r_proto" in
13141 ''|0) d_getgrgid_r=undef
13143 echo "Disabling getgrgid_r, cannot determine prototype." >&4 ;;
13144 * ) case "$getgrgid_r_proto" in
13145 REENTRANT_PROTO*) ;;
13146 *) getgrgid_r_proto="REENTRANT_PROTO_$getgrgid_r_proto" ;;
13148 echo "Prototype: $try" ;;
13151 *) case "$usethreads" in
13152 define) echo "getgrgid_r has no prototype, not using it." >&4 ;;
13159 *) getgrgid_r_proto=0
13163 : see if getgrnam_r exists
13164 set getgrnam_r d_getgrnam_r
13166 case "$d_getgrnam_r" in
13168 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
13169 case "$d_getgrnam_r_proto:$usethreads" in
13170 ":define") d_getgrnam_r_proto=define
13171 set d_getgrnam_r_proto getgrnam_r $hdrs
13175 case "$d_getgrnam_r_proto" in
13177 case "$getgrnam_r_proto" in
13178 ''|0) try='int getgrnam_r(const char*, struct group*, char*, size_t, struct group**);'
13179 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBWR ;;
13181 case "$getgrnam_r_proto" in
13182 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int, struct group**);'
13183 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBIR ;;
13185 case "$getgrnam_r_proto" in
13186 ''|0) try='struct group* getgrnam_r(const char*, char*, int);'
13187 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CBI ;;
13189 case "$getgrnam_r_proto" in
13190 ''|0) try='int getgrnam_r(const char*, struct group*, char*, int);'
13191 ./protochk "extern $try" $hdrs && getgrnam_r_proto=I_CSBI ;;
13193 case "$getgrnam_r_proto" in
13194 ''|0) try='struct group* getgrnam_r(const char*, struct group*, char*, int);'
13195 ./protochk "extern $try" $hdrs && getgrnam_r_proto=S_CSBI ;;
13197 case "$getgrnam_r_proto" in
13198 ''|0) d_getgrnam_r=undef
13200 echo "Disabling getgrnam_r, cannot determine prototype." >&4 ;;
13201 * ) case "$getgrnam_r_proto" in
13202 REENTRANT_PROTO*) ;;
13203 *) getgrnam_r_proto="REENTRANT_PROTO_$getgrnam_r_proto" ;;
13205 echo "Prototype: $try" ;;
13208 *) case "$usethreads" in
13209 define) echo "getgrnam_r has no prototype, not using it." >&4 ;;
13216 *) getgrnam_r_proto=0
13220 : see if gethostbyaddr exists
13221 set gethostbyaddr d_gethbyaddr
13224 : see if gethostbyname exists
13225 set gethostbyname d_gethbyname
13228 : see if gethostent exists
13229 set gethostent d_gethent
13232 : see how we will look up host name
13235 if set gethostname val -f d_gethname; eval $csym; $val; then
13236 echo 'gethostname() found.' >&4
13237 d_gethname="$define"
13240 if set uname val -f d_uname; eval $csym; $val; then
13243 uname() was found, but you're running xenix, and older versions of xenix
13244 have a broken uname(). If you don't really know whether your xenix is old
13245 enough to have a broken system call, use the default answer.
13250 "$define") dflt=n;;
13252 rp='Is your uname() broken?'
13255 n*) d_uname="$define"; call=uname;;
13258 echo 'uname() found.' >&4
13265 case "$d_gethname" in
13266 '') d_gethname="$undef";;
13269 '') d_uname="$undef";;
13271 case "$d_uname$d_gethname" in
13276 Every now and then someone has a $call() that lies about the hostname
13277 but can't be fixed for political or economic reasons. If you wish, I can
13278 pretend $call() isn't there and maybe compute hostname at run-time
13279 thanks to the '$phostname' command.
13282 rp="Shall I ignore $call() from now on?"
13285 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
13288 case "$phostname" in
13289 '') aphostname='';;
13290 *) case "$aphostname" in
13292 *) set X $phostname
13296 file=`./loc $file $file $pth`
13297 aphostname=`echo $file $*`
13302 case "$d_uname$d_gethname" in
13305 case "$phostname" in
13307 echo "There will be no way for $package to get your hostname." >&4;;
13309 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
13313 case "$d_phostname" in
13314 '') d_phostname="$undef";;
13317 : see if gethostbyaddr_r exists
13318 set gethostbyaddr_r d_gethostbyaddr_r
13320 case "$d_gethostbyaddr_r" in
13322 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13323 case "$d_gethostbyaddr_r_proto:$usethreads" in
13324 ":define") d_gethostbyaddr_r_proto=define
13325 set d_gethostbyaddr_r_proto gethostbyaddr_r $hdrs
13329 case "$d_gethostbyaddr_r_proto" in
13331 case "$gethostbyaddr_r_proto" in
13332 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13333 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISBWRE ;;
13335 case "$gethostbyaddr_r_proto" in
13336 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, size_t, int, int*);'
13337 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBWIE ;;
13339 case "$gethostbyaddr_r_proto" in
13340 ''|0) try='struct hostent* gethostbyaddr_r(const char*, size_t, int, struct hostent*, char*, int, int*);'
13341 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CWISBIE ;;
13343 case "$gethostbyaddr_r_proto" in
13344 ''|0) try='struct hostent* gethostbyaddr_r(const void*, size_t, int, struct hostent*, char*, int, int*);'
13345 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TWISBIE ;;
13347 case "$gethostbyaddr_r_proto" in
13348 ''|0) try='struct hostent* gethostbyaddr_r(const char*, int, int, struct hostent*, char*, int, int*);'
13349 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CIISBIE ;;
13351 case "$gethostbyaddr_r_proto" in
13352 ''|0) try='struct hostent* gethostbyaddr_r(const char*, struct hostent*, char*, int, int*);'
13353 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_CSBIE ;;
13355 case "$gethostbyaddr_r_proto" in
13356 ''|0) try='struct hostent* gethostbyaddr_r(const void*, struct hostent*, char*, int, int*);'
13357 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=S_TSBIE ;;
13359 case "$gethostbyaddr_r_proto" in
13360 ''|0) try='int gethostbyaddr_r(const char*, size_t, int, struct hostent*, struct hostent_data*);'
13361 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CWISD ;;
13363 case "$gethostbyaddr_r_proto" in
13364 ''|0) try='int gethostbyaddr_r(const char*, int, int, struct hostent*, struct hostent_data*);'
13365 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CIISD ;;
13367 case "$gethostbyaddr_r_proto" in
13368 ''|0) try='int gethostbyaddr_r(const char*, int, int);'
13369 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_CII ;;
13371 case "$gethostbyaddr_r_proto" in
13372 ''|0) try='int gethostbyaddr_r(const void*, socklen_t, int, struct hostent*, char*, size_t, struct hostent**, int*);'
13373 ./protochk "extern $try" $hdrs && gethostbyaddr_r_proto=I_TsISBWRE ;;
13375 case "$gethostbyaddr_r_proto" in
13376 ''|0) d_gethostbyaddr_r=undef
13377 gethostbyaddr_r_proto=0
13378 echo "Disabling gethostbyaddr_r, cannot determine prototype." >&4 ;;
13379 * ) case "$gethostbyaddr_r_proto" in
13380 REENTRANT_PROTO*) ;;
13381 *) gethostbyaddr_r_proto="REENTRANT_PROTO_$gethostbyaddr_r_proto" ;;
13383 echo "Prototype: $try" ;;
13386 *) case "$usethreads" in
13387 define) echo "gethostbyaddr_r has no prototype, not using it." >&4 ;;
13389 d_gethostbyaddr_r=undef
13390 gethostbyaddr_r_proto=0
13394 *) gethostbyaddr_r_proto=0
13398 : see if gethostbyname_r exists
13399 set gethostbyname_r d_gethostbyname_r
13401 case "$d_gethostbyname_r" in
13403 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13404 case "$d_gethostbyname_r_proto:$usethreads" in
13405 ":define") d_gethostbyname_r_proto=define
13406 set d_gethostbyname_r_proto gethostbyname_r $hdrs
13410 case "$d_gethostbyname_r_proto" in
13412 case "$gethostbyname_r_proto" in
13413 ''|0) try='int gethostbyname_r(const char*, struct hostent*, char*, size_t, struct hostent**, int*);'
13414 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSBWRE ;;
13416 case "$gethostbyname_r_proto" in
13417 ''|0) try='struct hostent* gethostbyname_r(const char*, struct hostent*, char*, int, int*);'
13418 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=S_CSBIE ;;
13420 case "$gethostbyname_r_proto" in
13421 ''|0) try='int gethostbyname_r(const char*, struct hostent*, struct hostent_data*);'
13422 ./protochk "extern $try" $hdrs && gethostbyname_r_proto=I_CSD ;;
13424 case "$gethostbyname_r_proto" in
13425 ''|0) d_gethostbyname_r=undef
13426 gethostbyname_r_proto=0
13427 echo "Disabling gethostbyname_r, cannot determine prototype." >&4 ;;
13428 * ) case "$gethostbyname_r_proto" in
13429 REENTRANT_PROTO*) ;;
13430 *) gethostbyname_r_proto="REENTRANT_PROTO_$gethostbyname_r_proto" ;;
13432 echo "Prototype: $try" ;;
13435 *) case "$usethreads" in
13436 define) echo "gethostbyname_r has no prototype, not using it." >&4 ;;
13438 d_gethostbyname_r=undef
13439 gethostbyname_r_proto=0
13443 *) gethostbyname_r_proto=0
13447 : see if gethostent_r exists
13448 set gethostent_r d_gethostent_r
13450 case "$d_gethostent_r" in
13452 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13453 case "$d_gethostent_r_proto:$usethreads" in
13454 ":define") d_gethostent_r_proto=define
13455 set d_gethostent_r_proto gethostent_r $hdrs
13459 case "$d_gethostent_r_proto" in
13461 case "$gethostent_r_proto" in
13462 ''|0) try='int gethostent_r(struct hostent*, char*, size_t, struct hostent**, int*);'
13463 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBWRE ;;
13465 case "$gethostent_r_proto" in
13466 ''|0) try='int gethostent_r(struct hostent*, char*, int, int*);'
13467 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBIE ;;
13469 case "$gethostent_r_proto" in
13470 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int, int*);'
13471 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBIE ;;
13473 case "$gethostent_r_proto" in
13474 ''|0) try='struct hostent* gethostent_r(struct hostent*, char*, int);'
13475 ./protochk "extern $try" $hdrs && gethostent_r_proto=S_SBI ;;
13477 case "$gethostent_r_proto" in
13478 ''|0) try='int gethostent_r(struct hostent*, char*, int);'
13479 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SBI ;;
13481 case "$gethostent_r_proto" in
13482 ''|0) try='int gethostent_r(struct hostent*, struct hostent_data*);'
13483 ./protochk "extern $try" $hdrs && gethostent_r_proto=I_SD ;;
13485 case "$gethostent_r_proto" in
13486 ''|0) d_gethostent_r=undef
13487 gethostent_r_proto=0
13488 echo "Disabling gethostent_r, cannot determine prototype." >&4 ;;
13489 * ) case "$gethostent_r_proto" in
13490 REENTRANT_PROTO*) ;;
13491 *) gethostent_r_proto="REENTRANT_PROTO_$gethostent_r_proto" ;;
13493 echo "Prototype: $try" ;;
13496 *) case "$usethreads" in
13497 define) echo "gethostent_r has no prototype, not using it." >&4 ;;
13499 d_gethostent_r=undef
13500 gethostent_r_proto=0
13504 *) gethostent_r_proto=0
13508 : see if prototypes for various gethostxxx netdb.h functions are available
13510 set d_gethostprotos gethostent $i_netdb netdb.h
13513 : see if getitimer exists
13514 set getitimer d_getitimer
13517 : see if getlogin exists
13518 set getlogin d_getlogin
13521 : see if getlogin_r exists
13522 set getlogin_r d_getlogin_r
13524 case "$d_getlogin_r" in
13526 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
13527 case "$d_getlogin_r_proto:$usethreads" in
13528 ":define") d_getlogin_r_proto=define
13529 set d_getlogin_r_proto getlogin_r $hdrs
13533 case "$d_getlogin_r_proto" in
13535 case "$getlogin_r_proto" in
13536 ''|0) try='int getlogin_r(char*, size_t);'
13537 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BW ;;
13539 case "$getlogin_r_proto" in
13540 ''|0) try='int getlogin_r(char*, int);'
13541 ./protochk "extern $try" $hdrs && getlogin_r_proto=I_BI ;;
13543 case "$getlogin_r_proto" in
13544 ''|0) try='char* getlogin_r(char*, size_t);'
13545 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BW ;;
13547 case "$getlogin_r_proto" in
13548 ''|0) try='char* getlogin_r(char*, int);'
13549 ./protochk "extern $try" $hdrs && getlogin_r_proto=B_BI ;;
13551 case "$getlogin_r_proto" in
13552 ''|0) d_getlogin_r=undef
13554 echo "Disabling getlogin_r, cannot determine prototype." >&4 ;;
13555 * ) case "$getlogin_r_proto" in
13556 REENTRANT_PROTO*) ;;
13557 *) getlogin_r_proto="REENTRANT_PROTO_$getlogin_r_proto" ;;
13559 echo "Prototype: $try" ;;
13562 *) case "$usethreads" in
13563 define) echo "getlogin_r has no prototype, not using it." >&4 ;;
13570 *) getlogin_r_proto=0
13574 : see if getmnt exists
13575 set getmnt d_getmnt
13578 : see if getmntent exists
13579 set getmntent d_getmntent
13582 : see if getnetbyaddr exists
13583 set getnetbyaddr d_getnbyaddr
13586 : see if getnetbyname exists
13587 set getnetbyname d_getnbyname
13590 : see if getnetent exists
13591 set getnetent d_getnent
13594 : see if getnetbyaddr_r exists
13595 set getnetbyaddr_r d_getnetbyaddr_r
13597 case "$d_getnetbyaddr_r" in
13599 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13600 case "$d_getnetbyaddr_r_proto:$usethreads" in
13601 ":define") d_getnetbyaddr_r_proto=define
13602 set d_getnetbyaddr_r_proto getnetbyaddr_r $hdrs
13606 case "$d_getnetbyaddr_r_proto" in
13608 case "$getnetbyaddr_r_proto" in
13609 ''|0) try='int getnetbyaddr_r(unsigned long, int, struct netent*, char*, size_t, struct netent**, int*);'
13610 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_UISBWRE ;;
13612 case "$getnetbyaddr_r_proto" in
13613 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, char*, int);'
13614 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISBI ;;
13616 case "$getnetbyaddr_r_proto" in
13617 ''|0) try='struct netent* getnetbyaddr_r(in_addr_t, int, struct netent*, char*, int);'
13618 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_TISBI ;;
13620 case "$getnetbyaddr_r_proto" in
13621 ''|0) try='struct netent* getnetbyaddr_r(long, int, struct netent*, char*, int);'
13622 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=S_LISBI ;;
13624 case "$getnetbyaddr_r_proto" in
13625 ''|0) try='int getnetbyaddr_r(in_addr_t, int, struct netent*, struct netent_data*);'
13626 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_TISD ;;
13628 case "$getnetbyaddr_r_proto" in
13629 ''|0) try='int getnetbyaddr_r(long, int, struct netent*, struct netent_data*);'
13630 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_LISD ;;
13632 case "$getnetbyaddr_r_proto" in
13633 ''|0) try='int getnetbyaddr_r(int, int, struct netent*, struct netent_data*);'
13634 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_IISD ;;
13636 case "$getnetbyaddr_r_proto" in
13637 ''|0) try='int getnetbyaddr_r(uint32_t, int, struct netent*, char*, size_t, struct netent**, int*);'
13638 ./protochk "extern $try" $hdrs && getnetbyaddr_r_proto=I_uISBWRE ;;
13640 case "$getnetbyaddr_r_proto" in
13641 ''|0) d_getnetbyaddr_r=undef
13642 getnetbyaddr_r_proto=0
13643 echo "Disabling getnetbyaddr_r, cannot determine prototype." >&4 ;;
13644 * ) case "$getnetbyaddr_r_proto" in
13645 REENTRANT_PROTO*) ;;
13646 *) getnetbyaddr_r_proto="REENTRANT_PROTO_$getnetbyaddr_r_proto" ;;
13648 echo "Prototype: $try" ;;
13651 *) case "$usethreads" in
13652 define) echo "getnetbyaddr_r has no prototype, not using it." >&4 ;;
13654 d_getnetbyaddr_r=undef
13655 getnetbyaddr_r_proto=0
13659 *) getnetbyaddr_r_proto=0
13663 : see if getnetbyname_r exists
13664 set getnetbyname_r d_getnetbyname_r
13666 case "$d_getnetbyname_r" in
13668 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13669 case "$d_getnetbyname_r_proto:$usethreads" in
13670 ":define") d_getnetbyname_r_proto=define
13671 set d_getnetbyname_r_proto getnetbyname_r $hdrs
13675 case "$d_getnetbyname_r_proto" in
13677 case "$getnetbyname_r_proto" in
13678 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, size_t, struct netent**, int*);'
13679 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBWRE ;;
13681 case "$getnetbyname_r_proto" in
13682 ''|0) try='int getnetbyname_r(const char*, struct netent*, char*, int);'
13683 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSBI ;;
13685 case "$getnetbyname_r_proto" in
13686 ''|0) try='struct netent* getnetbyname_r(const char*, struct netent*, char*, int);'
13687 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=S_CSBI ;;
13689 case "$getnetbyname_r_proto" in
13690 ''|0) try='int getnetbyname_r(const char*, struct netent*, struct netent_data*);'
13691 ./protochk "extern $try" $hdrs && getnetbyname_r_proto=I_CSD ;;
13693 case "$getnetbyname_r_proto" in
13694 ''|0) d_getnetbyname_r=undef
13695 getnetbyname_r_proto=0
13696 echo "Disabling getnetbyname_r, cannot determine prototype." >&4 ;;
13697 * ) case "$getnetbyname_r_proto" in
13698 REENTRANT_PROTO*) ;;
13699 *) getnetbyname_r_proto="REENTRANT_PROTO_$getnetbyname_r_proto" ;;
13701 echo "Prototype: $try" ;;
13704 *) case "$usethreads" in
13705 define) echo "getnetbyname_r has no prototype, not using it." >&4 ;;
13707 d_getnetbyname_r=undef
13708 getnetbyname_r_proto=0
13712 *) getnetbyname_r_proto=0
13716 : see if getnetent_r exists
13717 set getnetent_r d_getnetent_r
13719 case "$d_getnetent_r" in
13721 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13722 case "$d_getnetent_r_proto:$usethreads" in
13723 ":define") d_getnetent_r_proto=define
13724 set d_getnetent_r_proto getnetent_r $hdrs
13728 case "$d_getnetent_r_proto" in
13730 case "$getnetent_r_proto" in
13731 ''|0) try='int getnetent_r(struct netent*, char*, size_t, struct netent**, int*);'
13732 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBWRE ;;
13734 case "$getnetent_r_proto" in
13735 ''|0) try='int getnetent_r(struct netent*, char*, int, int*);'
13736 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBIE ;;
13738 case "$getnetent_r_proto" in
13739 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int, int*);'
13740 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBIE ;;
13742 case "$getnetent_r_proto" in
13743 ''|0) try='struct netent* getnetent_r(struct netent*, char*, int);'
13744 ./protochk "extern $try" $hdrs && getnetent_r_proto=S_SBI ;;
13746 case "$getnetent_r_proto" in
13747 ''|0) try='int getnetent_r(struct netent*, char*, int);'
13748 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SBI ;;
13750 case "$getnetent_r_proto" in
13751 ''|0) try='int getnetent_r(struct netent*, struct netent_data*);'
13752 ./protochk "extern $try" $hdrs && getnetent_r_proto=I_SD ;;
13754 case "$getnetent_r_proto" in
13755 ''|0) d_getnetent_r=undef
13756 getnetent_r_proto=0
13757 echo "Disabling getnetent_r, cannot determine prototype." >&4 ;;
13758 * ) case "$getnetent_r_proto" in
13759 REENTRANT_PROTO*) ;;
13760 *) getnetent_r_proto="REENTRANT_PROTO_$getnetent_r_proto" ;;
13762 echo "Prototype: $try" ;;
13765 *) case "$usethreads" in
13766 define) echo "getnetent_r has no prototype, not using it." >&4 ;;
13768 d_getnetent_r=undef
13769 getnetent_r_proto=0
13773 *) getnetent_r_proto=0
13777 : see if prototypes for various getnetxxx netdb.h functions are available
13779 set d_getnetprotos getnetent $i_netdb netdb.h
13782 : see if getpagesize exists
13783 set getpagesize d_getpagsz
13787 : see if getprotobyname exists
13788 set getprotobyname d_getpbyname
13791 : see if getprotobynumber exists
13792 set getprotobynumber d_getpbynumber
13795 : see if getprotoent exists
13796 set getprotoent d_getpent
13799 : see if getpgid exists
13800 set getpgid d_getpgid
13803 : see if getpgrp2 exists
13804 set getpgrp2 d_getpgrp2
13807 : see if getppid exists
13808 set getppid d_getppid
13811 : see if getpriority exists
13812 set getpriority d_getprior
13815 : see if getprotobyname_r exists
13816 set getprotobyname_r d_getprotobyname_r
13818 case "$d_getprotobyname_r" in
13820 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13821 case "$d_getprotobyname_r_proto:$usethreads" in
13822 ":define") d_getprotobyname_r_proto=define
13823 set d_getprotobyname_r_proto getprotobyname_r $hdrs
13827 case "$d_getprotobyname_r_proto" in
13829 case "$getprotobyname_r_proto" in
13830 ''|0) try='int getprotobyname_r(const char*, struct protoent*, char*, size_t, struct protoent**);'
13831 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSBWR ;;
13833 case "$getprotobyname_r_proto" in
13834 ''|0) try='struct protoent* getprotobyname_r(const char*, struct protoent*, char*, int);'
13835 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=S_CSBI ;;
13837 case "$getprotobyname_r_proto" in
13838 ''|0) try='int getprotobyname_r(const char*, struct protoent*, struct protoent_data*);'
13839 ./protochk "extern $try" $hdrs && getprotobyname_r_proto=I_CSD ;;
13841 case "$getprotobyname_r_proto" in
13842 ''|0) d_getprotobyname_r=undef
13843 getprotobyname_r_proto=0
13844 echo "Disabling getprotobyname_r, cannot determine prototype." >&4 ;;
13845 * ) case "$getprotobyname_r_proto" in
13846 REENTRANT_PROTO*) ;;
13847 *) getprotobyname_r_proto="REENTRANT_PROTO_$getprotobyname_r_proto" ;;
13849 echo "Prototype: $try" ;;
13852 *) case "$usethreads" in
13853 define) echo "getprotobyname_r has no prototype, not using it." >&4 ;;
13855 d_getprotobyname_r=undef
13856 getprotobyname_r_proto=0
13860 *) getprotobyname_r_proto=0
13864 : see if getprotobynumber_r exists
13865 set getprotobynumber_r d_getprotobynumber_r
13867 case "$d_getprotobynumber_r" in
13869 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13870 case "$d_getprotobynumber_r_proto:$usethreads" in
13871 ":define") d_getprotobynumber_r_proto=define
13872 set d_getprotobynumber_r_proto getprotobynumber_r $hdrs
13876 case "$d_getprotobynumber_r_proto" in
13878 case "$getprotobynumber_r_proto" in
13879 ''|0) try='int getprotobynumber_r(int, struct protoent*, char*, size_t, struct protoent**);'
13880 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISBWR ;;
13882 case "$getprotobynumber_r_proto" in
13883 ''|0) try='struct protoent* getprotobynumber_r(int, struct protoent*, char*, int);'
13884 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=S_ISBI ;;
13886 case "$getprotobynumber_r_proto" in
13887 ''|0) try='int getprotobynumber_r(int, struct protoent*, struct protoent_data*);'
13888 ./protochk "extern $try" $hdrs && getprotobynumber_r_proto=I_ISD ;;
13890 case "$getprotobynumber_r_proto" in
13891 ''|0) d_getprotobynumber_r=undef
13892 getprotobynumber_r_proto=0
13893 echo "Disabling getprotobynumber_r, cannot determine prototype." >&4 ;;
13894 * ) case "$getprotobynumber_r_proto" in
13895 REENTRANT_PROTO*) ;;
13896 *) getprotobynumber_r_proto="REENTRANT_PROTO_$getprotobynumber_r_proto" ;;
13898 echo "Prototype: $try" ;;
13901 *) case "$usethreads" in
13902 define) echo "getprotobynumber_r has no prototype, not using it." >&4 ;;
13904 d_getprotobynumber_r=undef
13905 getprotobynumber_r_proto=0
13909 *) getprotobynumber_r_proto=0
13913 : see if getprotoent_r exists
13914 set getprotoent_r d_getprotoent_r
13916 case "$d_getprotoent_r" in
13918 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
13919 case "$d_getprotoent_r_proto:$usethreads" in
13920 ":define") d_getprotoent_r_proto=define
13921 set d_getprotoent_r_proto getprotoent_r $hdrs
13925 case "$d_getprotoent_r_proto" in
13927 case "$getprotoent_r_proto" in
13928 ''|0) try='int getprotoent_r(struct protoent*, char*, size_t, struct protoent**);'
13929 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBWR ;;
13931 case "$getprotoent_r_proto" in
13932 ''|0) try='int getprotoent_r(struct protoent*, char*, int);'
13933 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SBI ;;
13935 case "$getprotoent_r_proto" in
13936 ''|0) try='struct protoent* getprotoent_r(struct protoent*, char*, int);'
13937 ./protochk "extern $try" $hdrs && getprotoent_r_proto=S_SBI ;;
13939 case "$getprotoent_r_proto" in
13940 ''|0) try='int getprotoent_r(struct protoent*, struct protoent_data*);'
13941 ./protochk "extern $try" $hdrs && getprotoent_r_proto=I_SD ;;
13943 case "$getprotoent_r_proto" in
13944 ''|0) d_getprotoent_r=undef
13945 getprotoent_r_proto=0
13946 echo "Disabling getprotoent_r, cannot determine prototype." >&4 ;;
13947 * ) case "$getprotoent_r_proto" in
13948 REENTRANT_PROTO*) ;;
13949 *) getprotoent_r_proto="REENTRANT_PROTO_$getprotoent_r_proto" ;;
13951 echo "Prototype: $try" ;;
13954 *) case "$usethreads" in
13955 define) echo "getprotoent_r has no prototype, not using it." >&4 ;;
13957 d_getprotoent_r=undef
13958 getprotoent_r_proto=0
13962 *) getprotoent_r_proto=0
13966 : see if prototypes for various getprotoxxx netdb.h functions are available
13968 set d_getprotoprotos getprotoent $i_netdb netdb.h
13971 : see if getprpwnam exists
13972 set getprpwnam d_getprpwnam
13975 : see if getpwent exists
13976 set getpwent d_getpwent
13979 : see if getpwent_r exists
13980 set getpwent_r d_getpwent_r
13982 case "$d_getpwent_r" in
13984 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
13985 case "$d_getpwent_r_proto:$usethreads" in
13986 ":define") d_getpwent_r_proto=define
13987 set d_getpwent_r_proto getpwent_r $hdrs
13991 case "$d_getpwent_r_proto" in
13993 case "$getpwent_r_proto" in
13994 ''|0) try='int getpwent_r(struct passwd*, char*, size_t, struct passwd**);'
13995 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBWR ;;
13997 case "$getpwent_r_proto" in
13998 ''|0) try='int getpwent_r(struct passwd*, char*, int, struct passwd**);'
13999 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIR ;;
14001 case "$getpwent_r_proto" in
14002 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, size_t);'
14003 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBW ;;
14005 case "$getpwent_r_proto" in
14006 ''|0) try='struct passwd* getpwent_r(struct passwd*, char*, int);'
14007 ./protochk "extern $try" $hdrs && getpwent_r_proto=S_SBI ;;
14009 case "$getpwent_r_proto" in
14010 ''|0) try='int getpwent_r(struct passwd*, char*, int);'
14011 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBI ;;
14013 case "$getpwent_r_proto" in
14014 ''|0) try='int getpwent_r(struct passwd*, char*, int, FILE**);'
14015 ./protochk "extern $try" $hdrs && getpwent_r_proto=I_SBIH ;;
14017 case "$getpwent_r_proto" in
14018 ''|0) d_getpwent_r=undef
14020 echo "Disabling getpwent_r, cannot determine prototype." >&4 ;;
14021 * ) case "$getpwent_r_proto" in
14022 REENTRANT_PROTO*) ;;
14023 *) getpwent_r_proto="REENTRANT_PROTO_$getpwent_r_proto" ;;
14025 echo "Prototype: $try" ;;
14028 *) case "$usethreads" in
14029 define) echo "getpwent_r has no prototype, not using it." >&4 ;;
14036 *) getpwent_r_proto=0
14040 : see if getpwnam_r exists
14041 set getpwnam_r d_getpwnam_r
14043 case "$d_getpwnam_r" in
14045 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14046 case "$d_getpwnam_r_proto:$usethreads" in
14047 ":define") d_getpwnam_r_proto=define
14048 set d_getpwnam_r_proto getpwnam_r $hdrs
14052 case "$d_getpwnam_r_proto" in
14054 case "$getpwnam_r_proto" in
14055 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);'
14056 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBWR ;;
14058 case "$getpwnam_r_proto" in
14059 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int, struct passwd**);'
14060 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBIR ;;
14062 case "$getpwnam_r_proto" in
14063 ''|0) try='struct passwd* getpwnam_r(const char*, struct passwd*, char*, int);'
14064 ./protochk "extern $try" $hdrs && getpwnam_r_proto=S_CSBI ;;
14066 case "$getpwnam_r_proto" in
14067 ''|0) try='int getpwnam_r(const char*, struct passwd*, char*, int);'
14068 ./protochk "extern $try" $hdrs && getpwnam_r_proto=I_CSBI ;;
14070 case "$getpwnam_r_proto" in
14071 ''|0) d_getpwnam_r=undef
14073 echo "Disabling getpwnam_r, cannot determine prototype." >&4 ;;
14074 * ) case "$getpwnam_r_proto" in
14075 REENTRANT_PROTO*) ;;
14076 *) getpwnam_r_proto="REENTRANT_PROTO_$getpwnam_r_proto" ;;
14078 echo "Prototype: $try" ;;
14081 *) case "$usethreads" in
14082 define) echo "getpwnam_r has no prototype, not using it." >&4 ;;
14089 *) getpwnam_r_proto=0
14093 : see if getpwuid_r exists
14094 set getpwuid_r d_getpwuid_r
14096 case "$d_getpwuid_r" in
14098 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
14099 case "$d_getpwuid_r_proto:$usethreads" in
14100 ":define") d_getpwuid_r_proto=define
14101 set d_getpwuid_r_proto getpwuid_r $hdrs
14105 case "$d_getpwuid_r_proto" in
14107 case "$getpwuid_r_proto" in
14108 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);'
14109 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBWR ;;
14111 case "$getpwuid_r_proto" in
14112 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int, struct passwd**);'
14113 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBIR ;;
14115 case "$getpwuid_r_proto" in
14116 ''|0) try='int getpwuid_r(uid_t, struct passwd*, char*, int);'
14117 ./protochk "extern $try" $hdrs && getpwuid_r_proto=I_TSBI ;;
14119 case "$getpwuid_r_proto" in
14120 ''|0) try='struct passwd* getpwuid_r(uid_t, struct passwd*, char*, int);'
14121 ./protochk "extern $try" $hdrs && getpwuid_r_proto=S_TSBI ;;
14123 case "$getpwuid_r_proto" in
14124 ''|0) d_getpwuid_r=undef
14126 echo "Disabling getpwuid_r, cannot determine prototype." >&4 ;;
14127 * ) case "$getpwuid_r_proto" in
14128 REENTRANT_PROTO*) ;;
14129 *) getpwuid_r_proto="REENTRANT_PROTO_$getpwuid_r_proto" ;;
14131 echo "Prototype: $try" ;;
14134 *) case "$usethreads" in
14135 define) echo "getpwuid_r has no prototype, not using it." >&4 ;;
14142 *) getpwuid_r_proto=0
14147 : see if getservbyname exists
14148 set getservbyname d_getsbyname
14151 : see if getservbyport exists
14152 set getservbyport d_getsbyport
14155 : see if getservent exists
14156 set getservent d_getsent
14159 : see if getservbyname_r exists
14160 set getservbyname_r d_getservbyname_r
14162 case "$d_getservbyname_r" in
14164 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14165 case "$d_getservbyname_r_proto:$usethreads" in
14166 ":define") d_getservbyname_r_proto=define
14167 set d_getservbyname_r_proto getservbyname_r $hdrs
14171 case "$d_getservbyname_r_proto" in
14173 case "$getservbyname_r_proto" in
14174 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, char*, size_t, struct servent**);'
14175 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSBWR ;;
14177 case "$getservbyname_r_proto" in
14178 ''|0) try='struct servent* getservbyname_r(const char*, const char*, struct servent*, char*, int);'
14179 ./protochk "extern $try" $hdrs && getservbyname_r_proto=S_CCSBI ;;
14181 case "$getservbyname_r_proto" in
14182 ''|0) try='int getservbyname_r(const char*, const char*, struct servent*, struct servent_data*);'
14183 ./protochk "extern $try" $hdrs && getservbyname_r_proto=I_CCSD ;;
14185 case "$getservbyname_r_proto" in
14186 ''|0) d_getservbyname_r=undef
14187 getservbyname_r_proto=0
14188 echo "Disabling getservbyname_r, cannot determine prototype." >&4 ;;
14189 * ) case "$getservbyname_r_proto" in
14190 REENTRANT_PROTO*) ;;
14191 *) getservbyname_r_proto="REENTRANT_PROTO_$getservbyname_r_proto" ;;
14193 echo "Prototype: $try" ;;
14196 *) case "$usethreads" in
14197 define) echo "getservbyname_r has no prototype, not using it." >&4 ;;
14199 d_getservbyname_r=undef
14200 getservbyname_r_proto=0
14204 *) getservbyname_r_proto=0
14208 : see if getservbyport_r exists
14209 set getservbyport_r d_getservbyport_r
14211 case "$d_getservbyport_r" in
14213 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14214 case "$d_getservbyport_r_proto:$usethreads" in
14215 ":define") d_getservbyport_r_proto=define
14216 set d_getservbyport_r_proto getservbyport_r $hdrs
14220 case "$d_getservbyport_r_proto" in
14222 case "$getservbyport_r_proto" in
14223 ''|0) try='int getservbyport_r(int, const char*, struct servent*, char*, size_t, struct servent**);'
14224 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSBWR ;;
14226 case "$getservbyport_r_proto" in
14227 ''|0) try='struct servent* getservbyport_r(int, const char*, struct servent*, char*, int);'
14228 ./protochk "extern $try" $hdrs && getservbyport_r_proto=S_ICSBI ;;
14230 case "$getservbyport_r_proto" in
14231 ''|0) try='int getservbyport_r(int, const char*, struct servent*, struct servent_data*);'
14232 ./protochk "extern $try" $hdrs && getservbyport_r_proto=I_ICSD ;;
14234 case "$getservbyport_r_proto" in
14235 ''|0) d_getservbyport_r=undef
14236 getservbyport_r_proto=0
14237 echo "Disabling getservbyport_r, cannot determine prototype." >&4 ;;
14238 * ) case "$getservbyport_r_proto" in
14239 REENTRANT_PROTO*) ;;
14240 *) getservbyport_r_proto="REENTRANT_PROTO_$getservbyport_r_proto" ;;
14242 echo "Prototype: $try" ;;
14245 *) case "$usethreads" in
14246 define) echo "getservbyport_r has no prototype, not using it." >&4 ;;
14248 d_getservbyport_r=undef
14249 getservbyport_r_proto=0
14253 *) getservbyport_r_proto=0
14257 : see if getservent_r exists
14258 set getservent_r d_getservent_r
14260 case "$d_getservent_r" in
14262 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
14263 case "$d_getservent_r_proto:$usethreads" in
14264 ":define") d_getservent_r_proto=define
14265 set d_getservent_r_proto getservent_r $hdrs
14269 case "$d_getservent_r_proto" in
14271 case "$getservent_r_proto" in
14272 ''|0) try='int getservent_r(struct servent*, char*, size_t, struct servent**);'
14273 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBWR ;;
14275 case "$getservent_r_proto" in
14276 ''|0) try='int getservent_r(struct servent*, char*, int);'
14277 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SBI ;;
14279 case "$getservent_r_proto" in
14280 ''|0) try='struct servent* getservent_r(struct servent*, char*, int);'
14281 ./protochk "extern $try" $hdrs && getservent_r_proto=S_SBI ;;
14283 case "$getservent_r_proto" in
14284 ''|0) try='int getservent_r(struct servent*, struct servent_data*);'
14285 ./protochk "extern $try" $hdrs && getservent_r_proto=I_SD ;;
14287 case "$getservent_r_proto" in
14288 ''|0) d_getservent_r=undef
14289 getservent_r_proto=0
14290 echo "Disabling getservent_r, cannot determine prototype." >&4 ;;
14291 * ) case "$getservent_r_proto" in
14292 REENTRANT_PROTO*) ;;
14293 *) getservent_r_proto="REENTRANT_PROTO_$getservent_r_proto" ;;
14295 echo "Prototype: $try" ;;
14298 *) case "$usethreads" in
14299 define) echo "getservent_r has no prototype, not using it." >&4 ;;
14301 d_getservent_r=undef
14302 getservent_r_proto=0
14306 *) getservent_r_proto=0
14310 : see if prototypes for various getservxxx netdb.h functions are available
14312 set d_getservprotos getservent $i_netdb netdb.h
14315 : see if getspnam exists
14316 set getspnam d_getspnam
14319 : see if this is a shadow.h system
14320 set shadow.h i_shadow
14323 : see if getspnam_r exists
14324 set getspnam_r d_getspnam_r
14326 case "$d_getspnam_r" in
14328 hdrs="$i_systypes sys/types.h define stdio.h $i_shadow shadow.h"
14329 case "$d_getspnam_r_proto:$usethreads" in
14330 ":define") d_getspnam_r_proto=define
14331 set d_getspnam_r_proto getspnam_r $hdrs
14335 case "$d_getspnam_r_proto" in
14337 case "$getspnam_r_proto" in
14338 ''|0) try='int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);'
14339 ./protochk "extern $try" $hdrs && getspnam_r_proto=I_CSBWR ;;
14341 case "$getspnam_r_proto" in
14342 ''|0) try='struct spwd* getspnam_r(const char*, struct spwd*, char*, int);'
14343 ./protochk "extern $try" $hdrs && getspnam_r_proto=S_CSBI ;;
14345 case "$getspnam_r_proto" in
14346 ''|0) d_getspnam_r=undef
14348 echo "Disabling getspnam_r, cannot determine prototype." >&4 ;;
14349 * ) case "$getspnam_r_proto" in
14350 REENTRANT_PROTO*) ;;
14351 *) getspnam_r_proto="REENTRANT_PROTO_$getspnam_r_proto" ;;
14353 echo "Prototype: $try" ;;
14356 *) case "$usethreads" in
14357 define) echo "getspnam_r has no prototype, not using it." >&4 ;;
14364 *) getspnam_r_proto=0
14368 : see if gettimeofday or ftime exists
14369 set gettimeofday d_gettimeod
14371 case "$d_gettimeod" in
14377 val="$undef"; set d_ftime; eval $setvar
14380 case "$d_gettimeod$d_ftime" in
14383 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
14387 : see if gmtime_r exists
14388 set gmtime_r d_gmtime_r
14390 case "$d_gmtime_r" in
14392 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14393 case "$d_gmtime_r_proto:$usethreads" in
14394 ":define") d_gmtime_r_proto=define
14395 set d_gmtime_r_proto gmtime_r $hdrs
14399 case "$d_gmtime_r_proto" in
14401 case "$gmtime_r_proto" in
14402 ''|0) try='struct tm* gmtime_r(const time_t*, struct tm*);'
14403 ./protochk "extern $try" $hdrs && gmtime_r_proto=S_TS ;;
14405 case "$gmtime_r_proto" in
14406 ''|0) try='int gmtime_r(const time_t*, struct tm*);'
14407 ./protochk "extern $try" $hdrs && gmtime_r_proto=I_TS ;;
14409 case "$gmtime_r_proto" in
14410 ''|0) d_gmtime_r=undef
14412 echo "Disabling gmtime_r, cannot determine prototype." >&4 ;;
14413 * ) case "$gmtime_r_proto" in
14414 REENTRANT_PROTO*) ;;
14415 *) gmtime_r_proto="REENTRANT_PROTO_$gmtime_r_proto" ;;
14417 echo "Prototype: $try" ;;
14420 *) case "$usethreads" in
14421 define) echo "gmtime_r has no prototype, not using it." >&4 ;;
14428 *) gmtime_r_proto=0
14432 : see if hasmntopt exists
14433 set hasmntopt d_hasmntopt
14436 : see if this is a netinet/in.h or sys/in.h system
14437 set netinet/in.h i_niin sys/in.h i_sysin
14440 : see if arpa/inet.h has to be included
14441 set arpa/inet.h i_arpainet
14444 : see if htonl --and friends-- exists
14449 : Maybe they are macros.
14452 $cat >htonl.c <<EOM
14454 #include <sys/types.h>
14455 #$i_niin I_NETINET_IN
14457 #$i_arpainet I_ARPA_INET
14458 #ifdef I_NETINET_IN
14459 #include <netinet/in.h>
14462 #include <sys/in.h>
14465 #include <arpa/inet.h>
14468 printf("Defined as a macro.");
14471 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
14472 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
14474 echo "But it seems to be defined as a macro." >&4
14482 : see if ilogbl exists
14483 set ilogbl d_ilogbl
14488 if set index val -f; eval $csym; $val; then
14489 if set strchr val -f d_strchr; eval $csym; $val; then
14490 if $contains strchr "$strings" >/dev/null 2>&1 ; then
14493 echo "strchr() found." >&4
14497 echo "index() found." >&4
14502 echo "index() found." >&4
14505 if set strchr val -f d_strchr; eval $csym; $val; then
14508 echo "strchr() found." >&4
14510 echo "No index() or strchr() found!" >&4
14515 set d_strchr; eval $setvar
14517 set d_index; eval $setvar
14519 : check whether inet_aton exists
14520 set inet_aton d_inetaton
14525 $cat >isascii.c <<EOCP
14528 #$i_stdlib I_STDLIB
14530 #include <stdlib.h>
14541 if eval $compile; then
14542 echo "isascii() found." >&4
14545 echo "isascii() NOT found." >&4
14552 : see if isfinite exists
14553 set isfinite d_isfinite
14556 : see if isinf exists
14560 : see if isnan exists
14564 : see if isnanl exists
14565 set isnanl d_isnanl
14568 : see if killpg exists
14569 set killpg d_killpg
14572 : see if lchown exists
14574 $cat > try.c <<'EOCP'
14575 /* System header to define __stub macros and hopefully few prototypes,
14576 which can conflict with char lchown(); below. */
14577 #include <assert.h>
14578 /* Override any gcc2 internal prototype to avoid an error. */
14579 /* We use char because int might match the return type of a gcc2
14580 builtin and then its argument prototype would still apply. */
14583 /* The GNU C library defines this for functions which it implements
14584 to always fail with ENOSYS. Some functions are actually named
14585 something starting with __ and the normal name is an alias. */
14586 #if defined (__stub_lchown) || defined (__stub___lchown)
14594 if eval $compile; then
14595 $echo "lchown() found." >&4
14598 $echo "lchown() NOT found." >&4
14604 : See if number of significant digits in a double precision number is known
14606 $cat >ldbl_dig.c <<EOM
14607 #$i_limits I_LIMITS
14610 #include <limits.h>
14616 printf("Contains LDBL_DIG");
14619 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
14620 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
14621 echo "LDBL_DIG found." >&4
14624 echo "LDBL_DIG NOT found." >&4
14631 : see if this is a math.h system
14635 d_libm_lib_version="$undef"
14638 : check to see if math.h defines _LIB_VERSION
14640 echo "Checking to see if your libm supports _LIB_VERSION..." >&4
14642 #include <unistd.h>
14644 int main (int argc, char *argv[])
14646 printf ("%d\n", _LIB_VERSION);
14651 if eval $compile; then
14653 echo "Yes, it does ($foo)" >&4
14654 d_libm_lib_version="$define"
14656 echo "No, it does not (probably harmless)" >&4
14663 : see if link exists
14667 : see if localtime_r exists
14668 set localtime_r d_localtime_r
14670 case "$d_localtime_r" in
14672 hdrs="$i_systypes sys/types.h define stdio.h $i_time time.h $i_systime sys/time.h"
14673 case "$d_localtime_r_proto:$usethreads" in
14674 ":define") d_localtime_r_proto=define
14675 set d_localtime_r_proto localtime_r $hdrs
14679 case "$d_localtime_r_proto" in
14681 case "$localtime_r_proto" in
14682 ''|0) try='struct tm* localtime_r(const time_t*, struct tm*);'
14683 ./protochk "extern $try" $hdrs && localtime_r_proto=S_TS ;;
14685 case "$localtime_r_proto" in
14686 ''|0) try='int localtime_r(const time_t*, struct tm*);'
14687 ./protochk "extern $try" $hdrs && localtime_r_proto=I_TS ;;
14689 case "$localtime_r_proto" in
14690 ''|0) d_localtime_r=undef
14691 localtime_r_proto=0
14692 echo "Disabling localtime_r, cannot determine prototype." >&4 ;;
14693 * ) case "$localtime_r_proto" in
14694 REENTRANT_PROTO*) ;;
14695 *) localtime_r_proto="REENTRANT_PROTO_$localtime_r_proto" ;;
14697 echo "Prototype: $try" ;;
14700 *) case "$usethreads" in
14701 define) echo "localtime_r has no prototype, not using it." >&4 ;;
14703 d_localtime_r=undef
14704 localtime_r_proto=0
14708 *) localtime_r_proto=0
14712 : see if localtime_r calls tzset
14713 case "$localtime_r_proto" in
14716 /* Does our libc's localtime_r call tzset ?
14717 * return 0 if so, 1 otherwise.
14719 #include <sys/types.h>
14720 #include <unistd.h>
14722 #include <string.h>
14723 #include <malloc.h>
14726 time_t t = time(0L);
14727 char w_tz[]="TZ" "=GMT+5",
14728 e_tz[]="TZ" "=GMT-5",
14729 *tz_e = (char*)malloc(16),
14730 *tz_w = (char*)malloc(16);
14731 struct tm tm_e, tm_w;
14732 memset(&tm_e,'\0',sizeof(struct tm));
14733 memset(&tm_w,'\0',sizeof(struct tm));
14738 localtime_r(&t, &tm_e);
14741 localtime_r(&t, &tm_w);
14743 if( memcmp(&tm_e, &tm_w, sizeof(struct tm)) == 0 )
14749 if eval $compile; then
14750 if $run ./try; then
14751 d_localtime_r_needs_tzset=undef;
14753 d_localtime_r_needs_tzset=define;
14756 d_localtime_r_needs_tzset=undef;
14760 d_localtime_r_needs_tzset=undef;
14765 : see if localeconv exists
14766 set localeconv d_locconv
14769 : see if lockf exists
14773 : see if prototype for lseek is available
14775 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
14778 : see if lstat exists
14782 : see if madvise exists
14783 set madvise d_madvise
14786 : see if malloc_size exists
14787 set malloc_size d_malloc_size
14790 : see if malloc_size_good exists
14791 set malloc_good_size d_malloc_good_size
14794 : see if mblen exists
14798 : see if mbstowcs exists
14799 set mbstowcs d_mbstowcs
14802 : see if mbtowc exists
14803 set mbtowc d_mbtowc
14806 : see if memchr exists
14807 set memchr d_memchr
14810 : see if memcmp exists
14811 set memcmp d_memcmp
14814 : see if memcpy exists
14815 set memcpy d_memcpy
14818 : see if memmove exists
14819 set memmove d_memmove
14822 : see if memset exists
14823 set memset d_memset
14826 : see if mkdir exists
14830 : see if mkdtemp exists
14831 set mkdtemp d_mkdtemp
14834 : see if mkfifo exists
14835 set mkfifo d_mkfifo
14838 : see if mkstemp exists
14839 set mkstemp d_mkstemp
14842 : see if mkstemps exists
14843 set mkstemps d_mkstemps
14846 : see if mktime exists
14847 set mktime d_mktime
14850 : see if this is a sys/mman.h system
14851 set sys/mman.h i_sysmman
14854 : see if mmap exists
14857 : see what shmat returns
14858 : default to something harmless
14860 case "$i_sysmman$d_mmap" in
14862 $cat >mmap.c <<'END'
14863 #include <sys/mman.h>
14866 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
14871 echo "and it returns ($mmaptype)." >&4
14877 : see if sqrtl exists
14881 : see if scalbnl exists
14882 set scalbnl d_scalbnl
14885 : see if modfl exists
14889 : see if prototype for modfl is available
14891 set d_modflproto modfl $i_math math.h
14894 d_modfl_pow32_bug="$undef"
14896 case "$d_longdbl$d_modfl" in
14899 Checking to see whether your modfl() is okay for large values...
14905 if $test "X$d_modflproto" != "X$define"; then
14906 $cat >>try.c <<EOCP
14907 /* Sigh. many current glibcs provide the function, but do not prototype it. */
14908 long double modfl (long double, long double *);
14911 $cat >>try.c <<EOCP
14913 long double nv = 4294967303.15;
14919 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
14923 case "$osname:$gccversion" in
14924 aix:) saveccflags="$ccflags"
14925 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
14928 if eval $compile; then
14931 *" 4294967303.150000 1.150000 4294967302.000000")
14932 echo >&4 "Your modfl() is broken for large values."
14933 d_modfl_pow32_bug="$define"
14935 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
14939 *" 4294967303.150000 0.150000 4294967303.000000")
14940 echo >&4 "Your modfl() seems okay for large values."
14942 *) echo >&4 "I don't understand your modfl() at all."
14948 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
14951 case "$osname:$gccversion" in
14952 aix:) ccflags="$saveccflags" ;; # restore
14957 if $test "$uselongdouble" = "$define"; then
14959 if $test "$d_sqrtl" != "$define"; then
14960 message="$message sqrtl"
14962 if $test "$d_modfl" != "$define"; then
14963 if $test "$d_aintl:$d_copysignl" = "$define:$define"; then
14964 echo "You have both aintl and copysignl, so I can emulate modfl."
14966 message="$message modfl"
14969 if $test "$d_frexpl" != "$define"; then
14970 if $test "$d_ilogbl:$d_scalbnl" = "$define:$define"; then
14971 echo "You have both ilogbl and scalbnl, so I can emulate frexpl."
14973 message="$message frexpl"
14977 if $test "$message" != ""; then
14980 *** You requested the use of long doubles but you do not seem to have
14981 *** the following mathematical functions needed for long double support:
14983 *** Please rerun Configure without -Duselongdouble and/or -Dusemorebits.
14984 *** Cannot continue, aborting.
14992 : see if mprotect exists
14993 set mprotect d_mprotect
14996 : see if msgctl exists
14997 set msgctl d_msgctl
15000 : see if msgget exists
15001 set msgget d_msgget
15004 : see if msgsnd exists
15005 set msgsnd d_msgsnd
15008 : see if msgrcv exists
15009 set msgrcv d_msgrcv
15012 : see how much of the 'msg*(2)' library is present.
15015 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
15016 *"$undef"*) h_msg=false;;
15020 case "`ipcs 2>&1`" in
15021 "SVID messages"*"not configured"*)
15022 echo "Your $osname does not have the msg*(2) configured." >&4
15025 set msgctl d_msgctl
15027 set msgget d_msgget
15029 set msgsnd d_msgsnd
15031 set msgrcv d_msgrcv
15037 : we could also check for sys/ipc.h ...
15038 if $h_msg && $test `./findhdr sys/msg.h`; then
15039 echo "You have the full msg*(2) library." >&4
15042 echo "You don't have the full msg*(2) library." >&4
15050 echo "Checking to see if your system supports struct msghdr..." >&4
15051 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
15053 case "$d_msghdr_s" in
15054 "$define") echo "Yes, it does." ;;
15055 *) echo "No, it doesn't." ;;
15059 : see if msync exists
15063 : see if munmap exists
15064 set munmap d_munmap
15067 : see if nice exists
15071 : see if this is a langinfo.h system
15072 set langinfo.h i_langinfo
15075 : see if nl_langinfo exists
15076 set nl_langinfo d_nl_langinfo
15079 : check for length of character
15081 case "$charsize" in
15083 echo "Checking to see how big your characters are (hey, you never know)..." >&4
15086 #$i_stdlib I_STDLIB
15088 #include <stdlib.h>
15092 printf("%d\n", (int)sizeof(char));
15097 if eval $compile_ok; then
15101 echo "(I can't seem to compile the test program. Guessing...)"
15108 rp="What is the size of a character (in bytes)?"
15113 : check for volatile keyword
15115 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
15116 $cat >try.c <<'EOCP'
15119 typedef struct _goo_struct goo_struct;
15120 goo_struct * volatile goo = ((goo_struct *)0);
15121 struct _goo_struct {
15126 typedef unsigned short foo_t;
15127 char *volatile foo;
15129 volatile foo_t blech;
15133 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
15135 echo "Yup, it does."
15138 echo "Nope, it doesn't."
15146 $echo "Choosing the C types to be used for Perl's internal types..." >&4
15148 case "$use64bitint:$d_quad:$quadtype" in
15151 uvtype="$uquadtype"
15156 uvtype="unsigned long"
15162 case "$uselongdouble:$d_longdbl" in
15164 nvtype="long double"
15165 nvsize=$longdblsize
15172 $echo "(IV will be "$ivtype", $ivsize bytes)"
15173 $echo "(UV will be "$uvtype", $uvsize bytes)"
15174 $echo "(NV will be "$nvtype", $nvsize bytes)"
15177 #$i_inttypes I_INTTYPES
15179 #include <inttypes.h>
15184 int8_t i = INT8_MAX;
15185 uint8_t u = UINT8_MAX;
15186 printf("int8_t\n");
15189 int16_t i = INT16_MAX;
15190 uint16_t i = UINT16_MAX;
15191 printf("int16_t\n");
15194 int32_t i = INT32_MAX;
15195 uint32_t u = UINT32_MAX;
15196 printf("int32_t\n");
15202 '') case "$charsize" in
15204 u8type="unsigned char"
15213 if eval $compile; then
15214 case "`$run ./try`" in
15215 int8_t) i8type=int8_t
15225 '') if $test $charsize -ge 1; then
15227 u8type="unsigned char"
15235 '') case "$shortsize" in
15237 u16type="unsigned short"
15245 '') set try -DINT16
15246 if eval $compile; then
15247 case "`$run ./try`" in
15259 '') if $test $shortsize -ge 2; then
15261 u16type="unsigned short"
15269 '') case "$longsize" in
15271 u32type="unsigned long"
15275 *) case "$intsize" in
15277 u32type="unsigned int"
15287 '') set try -DINT32
15288 if eval $compile; then
15289 case "`$run ./try`" in
15301 '') if $test $intsize -ge 4; then
15303 u32type="unsigned int"
15311 '') case "$d_quad:$quadtype" in
15313 i64type="$quadtype"
15314 u64type="$uquadtype"
15322 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
15323 : volatile so that the compiler has to store it out to memory.
15324 if test X"$d_volatile" = X"$define"; then
15329 #$i_stdlib I_STDLIB
15331 #include <stdlib.h>
15333 #include <sys/types.h>
15334 #include <signal.h>
15336 $volatile int bletched = 0;
15337 $signal_t blech(int s) { bletched = 1; }
15342 int n = 8 * $uvsize;
15345 signal(SIGFPE, blech);
15348 for (i = 0; i < n; i++) {
15349 u = u << 1 | ($uvtype)1;
15351 if (($uvtype)d != u)
15355 d = ($nvtype)(u - 1);
15356 if (($uvtype)d != (u - 1))
15363 printf("%d\n", ((i == n) ? -n : i));
15369 d_nv_preserves_uv="$undef"
15370 if eval $compile; then
15371 nv_preserves_uv_bits="`$run ./try`"
15373 case "$nv_preserves_uv_bits" in
15375 nv_preserves_uv_bits=`expr 0 - $nv_preserves_uv_bits`
15376 $echo "Your NVs can preserve all $nv_preserves_uv_bits bits of your UVs." 2>&1
15377 d_nv_preserves_uv="$define"
15379 [1-9]*) $echo "Your NVs can preserve only $nv_preserves_uv_bits bits of your UVs." 2>&1
15380 d_nv_preserves_uv="$undef" ;;
15381 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
15382 nv_preserves_uv_bits="0" ;;
15386 $echo "Checking whether NV 0.0 is all bits zero in memory..." >&4
15387 : volatile so that the compiler has to store it out to memory.
15388 if test X"$d_volatile" = X"$define"; then
15393 #$i_stdlib I_STDLIB
15395 #include <stdlib.h>
15397 #$i_string I_STRING
15399 # include <string.h>
15401 # include <strings.h>
15403 #include <sys/types.h>
15404 #include <signal.h>
15406 $volatile int bletched = 0;
15407 $signal_t blech(int s) { bletched = 1; }
15410 int checkit($nvtype d, char *where) {
15411 unsigned char *p = (char *)&d;
15412 unsigned char *end = p + sizeof(d);
15422 printf("No - %s: 0x", where);
15424 printf ("%02X", *p++);
15429 int main(int argc, char **argv) {
15432 fail += checkit(d, "0.0");
15434 /* The compiler shouldn't be assuming that bletched is 0 */
15437 fail += checkit(d, "bleched");
15440 signal(SIGFPE, blech);
15443 /* Paranoia - the compiler should have no way of knowing that ANSI says
15444 that argv[argc] will always be NULL. Actually, if it did assume this it
15445 would be buggy, as this is C and main() can be called from elsewhere in
15447 d = argv[argc] ? 1 : 0;
15450 printf("Odd argv[argc]=%p, d=%g\n", argv[argc], d);
15453 fail += checkit(d, "ternary");
15455 memset(&d, sizeof(d), argv[argc] ? 1 : 0);
15458 printf("No - memset doesn't give 0.0\n");
15459 /* This might just blow up: */
15460 printf("(gives %g)\n", d);
15466 printf("No - something bleched\n");
15471 printf("No - %d fail(s)\n", fail);
15480 d_nv_zero_is_allbits_zero="$undef"
15481 if eval $compile; then
15487 0.0 is represented as all bits zero in memory
15489 d_nv_zero_is_allbits_zero="$define"
15492 0.0 is not represented as all bits zero in memory
15494 d_nv_zero_is_allbits_zero="$undef"
15499 0.0 is not represented as all bits zero in memory
15501 d_nv_zero_is_allbits_zero="$undef"
15507 : check for off64_t
15509 echo "Checking to see if you have off64_t..." >&4
15511 #include <sys/types.h>
15512 #include <unistd.h>
15513 int main() { off64_t x = 7; }
15516 if eval $compile; then
15518 echo "You have off64_t."
15521 echo "You do not have off64_t."
15522 case "$lseeksize" in
15523 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
15530 : how to create joinable pthreads
15531 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
15533 echo "Checking what constant to use for creating joinable pthreads..." >&4
15534 $cat >try.c <<'EOCP'
15535 #include <pthread.h>
15537 int detachstate = JOINABLE;
15540 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
15541 if eval $compile; then
15542 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
15543 val="$undef" # Yes, undef.
15544 set d_old_pthread_create_joinable
15547 set old_pthread_create_joinable
15550 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
15551 if eval $compile; then
15552 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
15554 set d_old_pthread_create_joinable
15556 val=PTHREAD_CREATE_UNDETACHED
15557 set old_pthread_create_joinable
15560 set try -DJOINABLE=__UNDETACHED
15561 if eval $compile; then
15562 echo "You seem to use __UNDETACHED." >&4
15564 set d_old_pthread_create_joinable
15567 set old_pthread_create_joinable
15570 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
15572 set d_old_pthread_create_joinable
15575 set old_pthread_create_joinable
15582 d_old_pthread_create_joinable="$undef"
15583 old_pthread_create_joinable=""
15586 : see if pause exists
15590 : see if poll exists
15594 : see if readlink exists
15595 set readlink d_readlink
15601 case "$d_readlink" in
15603 if $issymlink /proc/self/exe ; then
15604 $ls -l /proc/self/exe > reflect
15605 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15606 echo "You have Linux-like /proc/self/exe."
15607 procselfexe='"/proc/self/exe"'
15611 if $issymlink /proc/curproc/file ; then
15612 $ls -l /proc/curproc/file > reflect
15613 if $contains /`basename $ls` reflect >/dev/null 2>&1; then
15614 echo "You have BSD-like /proc/curproc/file."
15615 procselfexe='"/proc/curproc/file"'
15625 : backward compatibility for d_hvfork
15626 if test X$d_hvfork != X; then
15627 d_vfork="$d_hvfork"
15630 : see if there is a vfork
15635 d_pseudofork=$undef
15637 : Ok, but do we want to use it. vfork is reportedly unreliable in
15638 : perl on Solaris 2.x, and probably elsewhere.
15642 case "$usevfork" in
15648 Perl can only use a vfork() that doesn't suffer from strict
15649 restrictions on calling functions or modifying global data in
15650 the child. For example, glibc-2.1 contains such a vfork()
15651 that is unsuitable. If your system provides a proper fork()
15652 call, chances are that you do NOT want perl to use vfork().
15655 rp="Do you still want to use vfork()?"
15660 echo "Ok, we won't use vfork()."
15669 $define) usevfork='true';;
15670 *) usevfork='false';;
15673 : see whether the pthread_atfork exists
15675 #include <pthread.h>
15678 #ifdef PTHREAD_ATFORK
15679 pthread_atfork(NULL,NULL,NULL);
15684 : see if pthread_atfork exists
15685 set try -DPTHREAD_ATFORK
15686 if eval $compile; then
15691 case "$usethreads" in
15694 $define) echo 'pthread_atfork found.' >&4 ;;
15695 *) echo 'pthread_atfork NOT found.' >&4 ;;
15698 set d_pthread_atfork
15701 : see if pthread_attr_setscope exists
15702 set pthread_attr_setscope d_pthread_attr_setscope
15706 : see whether the various POSIXish _yields exist
15708 #include <pthread.h>
15714 #ifdef PTHREAD_YIELD
15717 #ifdef PTHREAD_YIELD_NULL
15718 pthread_yield(NULL);
15724 : see if sched_yield exists
15725 set try -DSCHED_YIELD
15726 if eval $compile; then
15728 sched_yield='sched_yield()'
15732 case "$usethreads" in
15735 $define) echo 'sched_yield() found.' >&4 ;;
15736 *) echo 'sched_yield() NOT found.' >&4 ;;
15742 : see if pthread_yield exists
15743 set try -DPTHREAD_YIELD
15744 if eval $compile; then
15746 case "$sched_yield" in
15747 '') sched_yield='pthread_yield()' ;;
15750 set try -DPTHREAD_YIELD_NULL
15751 if eval $compile; then
15753 case "$sched_yield" in
15754 '') sched_yield='pthread_yield(NULL)' ;;
15760 case "$usethreads" in
15763 $define) echo 'pthread_yield() found.' >&4 ;;
15764 *) echo 'pthread_yield() NOT found.' >&4 ;;
15768 set d_pthread_yield
15770 case "$sched_yield" in
15771 '') sched_yield=undef ;;
15775 : see if random_r exists
15776 set random_r d_random_r
15778 case "$d_random_r" in
15780 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
15781 case "$d_random_r_proto:$usethreads" in
15782 ":define") d_random_r_proto=define
15783 set d_random_r_proto random_r $hdrs
15787 case "$d_random_r_proto" in
15789 case "$random_r_proto" in
15790 ''|0) try='int random_r(int*, struct random_data*);'
15791 ./protochk "extern $try" $hdrs && random_r_proto=I_iS ;;
15793 case "$random_r_proto" in
15794 ''|0) try='int random_r(long*, struct random_data*);'
15795 ./protochk "extern $try" $hdrs && random_r_proto=I_lS ;;
15797 case "$random_r_proto" in
15798 ''|0) try='int random_r(struct random_data*, int32_t*);'
15799 ./protochk "extern $try" $hdrs && random_r_proto=I_St ;;
15801 case "$random_r_proto" in
15802 ''|0) d_random_r=undef
15804 echo "Disabling random_r, cannot determine prototype." >&4 ;;
15805 * ) case "$random_r_proto" in
15806 REENTRANT_PROTO*) ;;
15807 *) random_r_proto="REENTRANT_PROTO_$random_r_proto" ;;
15809 echo "Prototype: $try" ;;
15812 *) case "$usethreads" in
15813 define) echo "random_r has no prototype, not using it." >&4 ;;
15820 *) random_r_proto=0
15824 : see if readdir and friends exist
15825 set readdir d_readdir
15827 set seekdir d_seekdir
15829 set telldir d_telldir
15831 set rewinddir d_rewinddir
15834 : see if readdir64_r exists
15835 set readdir64_r d_readdir64_r
15837 case "$d_readdir64_r" in
15839 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15840 case "$d_readdir64_r_proto:$usethreads" in
15841 ":define") d_readdir64_r_proto=define
15842 set d_readdir64_r_proto readdir64_r $hdrs
15846 case "$d_readdir64_r_proto" in
15848 case "$readdir64_r_proto" in
15849 ''|0) try='int readdir64_r(DIR*, struct dirent64*, struct dirent64**);'
15850 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TSR ;;
15852 case "$readdir64_r_proto" in
15853 ''|0) try='int readdir64_r(DIR*, struct dirent64*);'
15854 ./protochk "extern $try" $hdrs && readdir64_r_proto=I_TS ;;
15856 case "$readdir64_r_proto" in
15857 ''|0) d_readdir64_r=undef
15858 readdir64_r_proto=0
15859 echo "Disabling readdir64_r, cannot determine prototype." >&4 ;;
15860 * ) case "$readdir64_r_proto" in
15861 REENTRANT_PROTO*) ;;
15862 *) readdir64_r_proto="REENTRANT_PROTO_$readdir64_r_proto" ;;
15864 echo "Prototype: $try" ;;
15867 *) case "$usethreads" in
15868 define) echo "readdir64_r has no prototype, not using it." >&4 ;;
15870 d_readdir64_r=undef
15871 readdir64_r_proto=0
15875 *) readdir64_r_proto=0
15879 : see if readdir_r exists
15880 set readdir_r d_readdir_r
15882 case "$d_readdir_r" in
15884 hdrs="$i_systypes sys/types.h define stdio.h $i_dirent dirent.h"
15885 case "$d_readdir_r_proto:$usethreads" in
15886 ":define") d_readdir_r_proto=define
15887 set d_readdir_r_proto readdir_r $hdrs
15891 case "$d_readdir_r_proto" in
15893 case "$readdir_r_proto" in
15894 ''|0) try='int readdir_r(DIR*, struct dirent*, struct dirent**);'
15895 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TSR ;;
15897 case "$readdir_r_proto" in
15898 ''|0) try='int readdir_r(DIR*, struct dirent*);'
15899 ./protochk "extern $try" $hdrs && readdir_r_proto=I_TS ;;
15901 case "$readdir_r_proto" in
15902 ''|0) d_readdir_r=undef
15904 echo "Disabling readdir_r, cannot determine prototype." >&4 ;;
15905 * ) case "$readdir_r_proto" in
15906 REENTRANT_PROTO*) ;;
15907 *) readdir_r_proto="REENTRANT_PROTO_$readdir_r_proto" ;;
15909 echo "Prototype: $try" ;;
15912 *) case "$usethreads" in
15913 define) echo "readdir_r has no prototype, not using it." >&4 ;;
15920 *) readdir_r_proto=0
15924 : see if readv exists
15928 : see if recvmsg exists
15929 set recvmsg d_recvmsg
15932 : see if rename exists
15933 set rename d_rename
15936 : see if rmdir exists
15940 : see if memory.h is available.
15945 : See if it conflicts with string.h
15951 $cppstdin $cppflags $cppminus < $strings > mem.h
15952 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
15954 echo "We won't be including <memory.h>."
15964 : can bcopy handle overlapping blocks?
15967 case "$d_memmove" in
15968 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
15969 *) case "$d_bcopy" in
15971 echo "Checking to see if bcopy() can do overlapping copies..." >&4
15973 #$i_memory I_MEMORY
15974 #$i_stdlib I_STDLIB
15975 #$i_string I_STRING
15976 #$i_unistd I_UNISTD
15978 $cat >>try.c <<'EOCP'
15981 # include <memory.h>
15984 # include <stdlib.h>
15987 # include <string.h>
15989 # include <strings.h>
15992 # include <unistd.h> /* Needed for NetBSD */
15996 char buf[128], abc[128];
16002 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16003 try to store the string in read-only memory. */
16004 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
16006 for (align = 7; align >= 0; align--) {
16007 for (len = 36; len; len--) {
16009 bcopy(abc, b, len);
16010 for (off = 1; off <= len; off++) {
16011 bcopy(b, b+off, len);
16012 bcopy(b+off, b, len);
16013 if (bcmp(b, abc, len))
16022 if eval $compile_ok; then
16023 if $run ./try 2>/dev/null; then
16024 echo "Yes, it can."
16027 echo "It can't, sorry."
16030 echo "(I can't compile the test program, so we'll assume not...)"
16040 : can memcpy handle overlapping blocks?
16043 case "$d_memmove" in
16044 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
16045 *) case "$d_memcpy" in
16047 echo "Checking to see if memcpy() can do overlapping copies..." >&4
16049 #$i_memory I_MEMORY
16050 #$i_stdlib I_STDLIB
16051 #$i_string I_STRING
16052 #$i_unistd I_UNISTD
16054 $cat >>try.c <<'EOCP'
16057 # include <memory.h>
16060 # include <stdlib.h>
16063 # include <string.h>
16065 # include <strings.h>
16068 # include <unistd.h> /* Needed for NetBSD */
16072 char buf[128], abc[128];
16078 /* Copy "abcde..." string to char abc[] so that gcc doesn't
16079 try to store the string in read-only memory. */
16080 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
16082 for (align = 7; align >= 0; align--) {
16083 for (len = 36; len; len--) {
16085 memcpy(b, abc, len);
16086 for (off = 1; off <= len; off++) {
16087 memcpy(b+off, b, len);
16088 memcpy(b, b+off, len);
16089 if (memcmp(b, abc, len))
16098 if eval $compile_ok; then
16099 if $run ./try 2>/dev/null; then
16100 echo "Yes, it can."
16103 echo "It can't, sorry."
16106 echo "(I can't compile the test program, so we'll assume not...)"
16116 : can memcmp be trusted to compare relative magnitude?
16118 case "$d_memcmp" in
16121 echo "Checking if your memcmp() can compare relative magnitude..." >&4
16123 #$i_memory I_MEMORY
16124 #$i_stdlib I_STDLIB
16125 #$i_string I_STRING
16126 #$i_unistd I_UNISTD
16128 $cat >>try.c <<'EOCP'
16131 # include <memory.h>
16134 # include <stdlib.h>
16137 # include <string.h>
16139 # include <strings.h>
16142 # include <unistd.h> /* Needed for NetBSD */
16148 if ((a < b) && memcmp(&a, &b, 1) < 0)
16154 if eval $compile_ok; then
16155 if $run ./try 2>/dev/null; then
16156 echo "Yes, it can."
16159 echo "No, it can't (it uses signed chars)."
16162 echo "(I can't compile the test program, so we'll assume not...)"
16170 : see if prototype for sbrk is available
16172 set d_sbrkproto sbrk $i_unistd unistd.h
16175 : see if select exists
16176 set select d_select
16179 : see if semctl exists
16180 set semctl d_semctl
16183 : see if semget exists
16184 set semget d_semget
16187 : see if semop exists
16191 : see how much of the 'sem*(2)' library is present.
16194 case "$d_semctl$d_semget$d_semop" in
16195 *"$undef"*) h_sem=false;;
16199 case "`ipcs 2>&1`" in
16200 "SVID messages"*"not configured"*)
16201 echo "Your $osname does not have the sem*(2) configured." >&4
16204 set semctl d_semctl
16206 set semget d_semget
16214 : we could also check for sys/ipc.h ...
16215 if $h_sem && $test `./findhdr sys/sem.h`; then
16216 echo "You have the full sem*(2) library." >&4
16219 echo "You don't have the full sem*(2) library." >&4
16225 : see whether sys/sem.h defines union semun
16227 $cat > try.c <<'END'
16228 #include <sys/types.h>
16229 #include <sys/ipc.h>
16230 #include <sys/sem.h>
16231 int main () { union semun semun; semun.buf = 0; }
16234 if eval $compile; then
16235 echo "You have union semun in <sys/sem.h>." >&4
16238 echo "You do not have union semun in <sys/sem.h>." >&4
16245 : see how to do semctl IPC_STAT
16249 $cat > tryh.h <<END
16252 # define S_IRUSR S_IREAD
16253 # define S_IWUSR S_IWRITE
16254 # define S_IXUSR S_IEXEC
16256 # define S_IRUSR 0400
16257 # define S_IWUSR 0200
16258 # define S_IXUSR 0100
16260 # define S_IRGRP (S_IRUSR>>3)
16261 # define S_IWGRP (S_IWUSR>>3)
16262 # define S_IXGRP (S_IXUSR>>3)
16263 # define S_IROTH (S_IRUSR>>6)
16264 # define S_IWOTH (S_IWUSR>>6)
16265 # define S_IXOTH (S_IXUSR>>6)
16268 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
16269 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
16270 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
16273 : see whether semctl IPC_STAT can use union semun
16274 case "$d_semctl_semun" in
16278 #include <sys/types.h>
16279 #include <sys/ipc.h>
16280 #include <sys/sem.h>
16281 #include <sys/stat.h>
16288 #$d_union_semun HAS_UNION_SEMUN
16291 #ifndef HAS_UNION_SEMUN
16294 struct semid_ds *buf;
16295 unsigned short *array;
16301 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
16302 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16304 struct semid_ds argbuf;
16307 st = semctl(sem, 0, IPC_STAT, arg);
16311 # endif /* IPC_STAT */
16312 printf("semctl IPC_STAT failed: errno = %d\n", errno);
16314 if (semctl(sem, 0, IPC_RMID, arg) != 0)
16315 # endif /* IPC_RMID */
16316 printf("semctl IPC_RMID failed: errno = %d\n", errno);
16318 #endif /* IPC_PRIVATE && ... */
16319 printf("semget failed: errno = %d\n", errno);
16324 if eval $compile; then
16327 semun) val="$define" ;;
16335 case "$d_semctl_semun" in
16337 echo "You can use union semun for semctl IPC_STAT." >&4
16340 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
16345 : see whether semctl IPC_STAT can use struct semid_ds pointer
16346 case "$d_semctl_semid_ds" in
16349 $cat > try.c <<'END'
16350 #include <sys/types.h>
16351 #include <sys/ipc.h>
16352 #include <sys/sem.h>
16353 #include <sys/stat.h>
16361 struct semid_ds arg;
16364 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
16365 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
16368 st = semctl(sem, 0, IPC_STAT, &arg);
16370 printf("semid_ds\n");
16372 # endif /* IPC_STAT */
16373 printf("semctl IPC_STAT failed: errno = %d\n", errno);
16375 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
16376 # endif /* IPC_RMID */
16377 printf("semctl IPC_RMID failed: errno = %d\n", errno);
16379 #endif /* IPC_PRIVATE && ... */
16380 printf("semget failed: errno = %d\n", errno);
16386 if eval $compile; then
16389 semid_ds) val="$define" ;;
16393 set d_semctl_semid_ds
16397 case "$d_semctl_semid_ds" in
16399 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
16401 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
16407 # We do not have the full sem*(2) library, so assume we can not
16413 set d_semctl_semid_ds
16419 : see if sendmsg exists
16420 set sendmsg d_sendmsg
16423 : see if setegid exists
16424 set setegid d_setegid
16427 : see if seteuid exists
16428 set seteuid d_seteuid
16431 : see if setgrent exists
16432 set setgrent d_setgrent
16435 : see if setgrent_r exists
16436 set setgrent_r d_setgrent_r
16438 case "$d_setgrent_r" in
16440 hdrs="$i_systypes sys/types.h define stdio.h $i_grp grp.h"
16441 case "$d_setgrent_r_proto:$usethreads" in
16442 ":define") d_setgrent_r_proto=define
16443 set d_setgrent_r_proto setgrent_r $hdrs
16447 case "$d_setgrent_r_proto" in
16449 case "$setgrent_r_proto" in
16450 ''|0) try='int setgrent_r(FILE**);'
16451 ./protochk "extern $try" $hdrs && setgrent_r_proto=I_H ;;
16453 case "$setgrent_r_proto" in
16454 ''|0) try='void setgrent_r(FILE**);'
16455 ./protochk "extern $try" $hdrs && setgrent_r_proto=V_H ;;
16457 case "$setgrent_r_proto" in
16458 ''|0) d_setgrent_r=undef
16460 echo "Disabling setgrent_r, cannot determine prototype." >&4 ;;
16461 * ) case "$setgrent_r_proto" in
16462 REENTRANT_PROTO*) ;;
16463 *) setgrent_r_proto="REENTRANT_PROTO_$setgrent_r_proto" ;;
16465 echo "Prototype: $try" ;;
16468 *) case "$usethreads" in
16469 define) echo "setgrent_r has no prototype, not using it." >&4 ;;
16476 *) setgrent_r_proto=0
16480 : see if sethostent exists
16481 set sethostent d_sethent
16484 : see if sethostent_r exists
16485 set sethostent_r d_sethostent_r
16487 case "$d_sethostent_r" in
16489 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16490 case "$d_sethostent_r_proto:$usethreads" in
16491 ":define") d_sethostent_r_proto=define
16492 set d_sethostent_r_proto sethostent_r $hdrs
16496 case "$d_sethostent_r_proto" in
16498 case "$sethostent_r_proto" in
16499 ''|0) try='int sethostent_r(int, struct hostent_data*);'
16500 ./protochk "extern $try" $hdrs && sethostent_r_proto=I_ID ;;
16502 case "$sethostent_r_proto" in
16503 ''|0) try='void sethostent_r(int, struct hostent_data*);'
16504 ./protochk "extern $try" $hdrs && sethostent_r_proto=V_ID ;;
16506 case "$sethostent_r_proto" in
16507 ''|0) d_sethostent_r=undef
16508 sethostent_r_proto=0
16509 echo "Disabling sethostent_r, cannot determine prototype." >&4 ;;
16510 * ) case "$sethostent_r_proto" in
16511 REENTRANT_PROTO*) ;;
16512 *) sethostent_r_proto="REENTRANT_PROTO_$sethostent_r_proto" ;;
16514 echo "Prototype: $try" ;;
16517 *) case "$usethreads" in
16518 define) echo "sethostent_r has no prototype, not using it." >&4 ;;
16520 d_sethostent_r=undef
16521 sethostent_r_proto=0
16525 *) sethostent_r_proto=0
16529 : see if setitimer exists
16530 set setitimer d_setitimer
16533 : see if setlinebuf exists
16534 set setlinebuf d_setlinebuf
16537 : see if setlocale exists
16538 set setlocale d_setlocale
16541 : see if locale.h is available
16542 set locale.h i_locale
16545 : see if setlocale_r exists
16546 set setlocale_r d_setlocale_r
16548 case "$d_setlocale_r" in
16550 hdrs="$i_systypes sys/types.h define stdio.h $i_locale locale.h"
16551 case "$d_setlocale_r_proto:$usethreads" in
16552 ":define") d_setlocale_r_proto=define
16553 set d_setlocale_r_proto setlocale_r $hdrs
16557 case "$d_setlocale_r_proto" in
16559 case "$setlocale_r_proto" in
16560 ''|0) try='int setlocale_r(int, const char*, char*, int);'
16561 ./protochk "extern $try" $hdrs && setlocale_r_proto=I_ICBI ;;
16563 case "$setlocale_r_proto" in
16564 ''|0) d_setlocale_r=undef
16565 setlocale_r_proto=0
16566 echo "Disabling setlocale_r, cannot determine prototype." >&4 ;;
16567 * ) case "$setlocale_r_proto" in
16568 REENTRANT_PROTO*) ;;
16569 *) setlocale_r_proto="REENTRANT_PROTO_$setlocale_r_proto" ;;
16571 echo "Prototype: $try" ;;
16574 *) case "$usethreads" in
16575 define) echo "setlocale_r has no prototype, not using it." >&4 ;;
16577 d_setlocale_r=undef
16578 setlocale_r_proto=0
16582 *) setlocale_r_proto=0
16586 : see if setnetent exists
16587 set setnetent d_setnent
16590 : see if setnetent_r exists
16591 set setnetent_r d_setnetent_r
16593 case "$d_setnetent_r" in
16595 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16596 case "$d_setnetent_r_proto:$usethreads" in
16597 ":define") d_setnetent_r_proto=define
16598 set d_setnetent_r_proto setnetent_r $hdrs
16602 case "$d_setnetent_r_proto" in
16604 case "$setnetent_r_proto" in
16605 ''|0) try='int setnetent_r(int, struct netent_data*);'
16606 ./protochk "extern $try" $hdrs && setnetent_r_proto=I_ID ;;
16608 case "$setnetent_r_proto" in
16609 ''|0) try='void setnetent_r(int, struct netent_data*);'
16610 ./protochk "extern $try" $hdrs && setnetent_r_proto=V_ID ;;
16612 case "$setnetent_r_proto" in
16613 ''|0) d_setnetent_r=undef
16614 setnetent_r_proto=0
16615 echo "Disabling setnetent_r, cannot determine prototype." >&4 ;;
16616 * ) case "$setnetent_r_proto" in
16617 REENTRANT_PROTO*) ;;
16618 *) setnetent_r_proto="REENTRANT_PROTO_$setnetent_r_proto" ;;
16620 echo "Prototype: $try" ;;
16623 *) case "$usethreads" in
16624 define) echo "setnetent_r has no prototype, not using it." >&4 ;;
16626 d_setnetent_r=undef
16627 setnetent_r_proto=0
16631 *) setnetent_r_proto=0
16635 : see if setprotoent exists
16636 set setprotoent d_setpent
16639 : see if setpgid exists
16640 set setpgid d_setpgid
16643 : see if setpgrp2 exists
16644 set setpgrp2 d_setpgrp2
16647 : see if setpriority exists
16648 set setpriority d_setprior
16651 : see if setproctitle exists
16652 set setproctitle d_setproctitle
16655 : see if setprotoent_r exists
16656 set setprotoent_r d_setprotoent_r
16658 case "$d_setprotoent_r" in
16660 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16661 case "$d_setprotoent_r_proto:$usethreads" in
16662 ":define") d_setprotoent_r_proto=define
16663 set d_setprotoent_r_proto setprotoent_r $hdrs
16667 case "$d_setprotoent_r_proto" in
16669 case "$setprotoent_r_proto" in
16670 ''|0) try='int setprotoent_r(int, struct protoent_data*);'
16671 ./protochk "extern $try" $hdrs && setprotoent_r_proto=I_ID ;;
16673 case "$setprotoent_r_proto" in
16674 ''|0) try='void setprotoent_r(int, struct protoent_data*);'
16675 ./protochk "extern $try" $hdrs && setprotoent_r_proto=V_ID ;;
16677 case "$setprotoent_r_proto" in
16678 ''|0) d_setprotoent_r=undef
16679 setprotoent_r_proto=0
16680 echo "Disabling setprotoent_r, cannot determine prototype." >&4 ;;
16681 * ) case "$setprotoent_r_proto" in
16682 REENTRANT_PROTO*) ;;
16683 *) setprotoent_r_proto="REENTRANT_PROTO_$setprotoent_r_proto" ;;
16685 echo "Prototype: $try" ;;
16688 *) case "$usethreads" in
16689 define) echo "setprotoent_r has no prototype, not using it." >&4 ;;
16691 d_setprotoent_r=undef
16692 setprotoent_r_proto=0
16696 *) setprotoent_r_proto=0
16700 : see if setpwent exists
16701 set setpwent d_setpwent
16704 : see if setpwent_r exists
16705 set setpwent_r d_setpwent_r
16707 case "$d_setpwent_r" in
16709 hdrs="$i_systypes sys/types.h define stdio.h $i_pwd pwd.h"
16710 case "$d_setpwent_r_proto:$usethreads" in
16711 ":define") d_setpwent_r_proto=define
16712 set d_setpwent_r_proto setpwent_r $hdrs
16716 case "$d_setpwent_r_proto" in
16718 case "$setpwent_r_proto" in
16719 ''|0) try='int setpwent_r(FILE**);'
16720 ./protochk "extern $try" $hdrs && setpwent_r_proto=I_H ;;
16722 case "$setpwent_r_proto" in
16723 ''|0) try='void setpwent_r(FILE**);'
16724 ./protochk "extern $try" $hdrs && setpwent_r_proto=V_H ;;
16726 case "$setpwent_r_proto" in
16727 ''|0) d_setpwent_r=undef
16729 echo "Disabling setpwent_r, cannot determine prototype." >&4 ;;
16730 * ) case "$setpwent_r_proto" in
16731 REENTRANT_PROTO*) ;;
16732 *) setpwent_r_proto="REENTRANT_PROTO_$setpwent_r_proto" ;;
16734 echo "Prototype: $try" ;;
16737 *) case "$usethreads" in
16738 define) echo "setpwent_r has no prototype, not using it." >&4 ;;
16745 *) setpwent_r_proto=0
16749 : see if setregid exists
16750 set setregid d_setregid
16752 set setresgid d_setresgid
16755 : see if setreuid exists
16756 set setreuid d_setreuid
16758 set setresuid d_setresuid
16761 : see if setrgid exists
16762 set setrgid d_setrgid
16765 : see if setruid exists
16766 set setruid d_setruid
16769 : see if setservent exists
16770 set setservent d_setsent
16773 : see if setservent_r exists
16774 set setservent_r d_setservent_r
16776 case "$d_setservent_r" in
16778 hdrs="$i_systypes sys/types.h define stdio.h $i_netdb netdb.h"
16779 case "$d_setservent_r_proto:$usethreads" in
16780 ":define") d_setservent_r_proto=define
16781 set d_setservent_r_proto setservent_r $hdrs
16785 case "$d_setservent_r_proto" in
16787 case "$setservent_r_proto" in
16788 ''|0) try='int setservent_r(int, struct servent_data*);'
16789 ./protochk "extern $try" $hdrs && setservent_r_proto=I_ID ;;
16791 case "$setservent_r_proto" in
16792 ''|0) try='void setservent_r(int, struct servent_data*);'
16793 ./protochk "extern $try" $hdrs && setservent_r_proto=V_ID ;;
16795 case "$setservent_r_proto" in
16796 ''|0) d_setservent_r=undef
16797 setservent_r_proto=0
16798 echo "Disabling setservent_r, cannot determine prototype." >&4 ;;
16799 * ) case "$setservent_r_proto" in
16800 REENTRANT_PROTO*) ;;
16801 *) setservent_r_proto="REENTRANT_PROTO_$setservent_r_proto" ;;
16803 echo "Prototype: $try" ;;
16806 *) case "$usethreads" in
16807 define) echo "setservent_r has no prototype, not using it." >&4 ;;
16809 d_setservent_r=undef
16810 setservent_r_proto=0
16814 *) setservent_r_proto=0
16818 : see if setsid exists
16819 set setsid d_setsid
16822 : see if setvbuf exists
16823 set setvbuf d_setvbuf
16826 : see if sfio.h is available
16831 : see if sfio library is available
16842 : Ok, but do we want to use it.
16846 true|$define|[yY]*) dflt='y';;
16849 echo "$package can use the sfio library, but it is experimental."
16850 case "$useperlio" in
16852 echo "For sfio also the PerlIO abstraction layer is needed."
16853 echo "Earlier you said you wouldn't want that."
16856 rp="You seem to have sfio available, do you want to try using it?"
16859 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
16860 useperlio="$define"
16863 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
16868 *) case "$usesfio" in
16869 true|$define|[yY]*)
16870 echo "Sorry, cannot find sfio on this machine." >&4
16871 echo "Ignoring your setting of usesfio=$usesfio." >&4
16880 $define) usesfio='true';;
16881 *) usesfio='false';;
16885 *) : Remove sfio from list of libraries to use
16888 echo "Removing unneeded -lsfio from library list" >&4
16889 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
16892 echo "libs = $libs" >&4
16899 : see if shmctl exists
16900 set shmctl d_shmctl
16903 : see if shmget exists
16904 set shmget d_shmget
16907 : see if shmat exists
16910 : see what shmat returns
16913 $cat >shmat.c <<'END'
16914 #include <sys/shm.h>
16917 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
16922 echo "and it returns ($shmattype)." >&4
16923 : see if a prototype for shmat is available
16924 xxx=`./findhdr sys/shm.h`
16925 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
16926 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
16937 set d_shmatprototype
16940 : see if shmdt exists
16944 : see how much of the 'shm*(2)' library is present.
16947 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
16948 *"$undef"*) h_shm=false;;
16952 case "`ipcs 2>&1`" in
16953 "SVID shared memory"*"not configured"*)
16954 echo "Your $osname does not have the shm*(2) configured." >&4
16957 set shmctl d_shmctl
16959 set shmget d_shmget
16969 : we could also check for sys/ipc.h ...
16970 if $h_shm && $test `./findhdr sys/shm.h`; then
16971 echo "You have the full shm*(2) library." >&4
16974 echo "You don't have the full shm*(2) library." >&4
16981 : see if we have sigaction
16982 if set sigaction val -f d_sigaction; eval $csym; $val; then
16983 echo 'sigaction() found.' >&4
16986 #include <sys/types.h>
16987 #include <signal.h>
16988 #$i_stdlib I_STDLIB
16990 #include <stdlib.h>
16994 struct sigaction act, oact;
16996 oact.sa_handler = 0;
16997 /* so that act and oact are used */
16998 exit(act.sa_flags == 0 && oact.sa_handler == 0);
17002 if eval $compile_ok; then
17005 echo "But you don't seem to have a useable struct sigaction." >&4
17009 echo 'sigaction NOT found.' >&4
17012 set d_sigaction; eval $setvar
17015 : see if this is a sunmath.h system
17016 set sunmath.h i_sunmath
17019 : see if signbit exists
17020 $echo $n "Checking to see if you have signbit() available to work on $nvtype... $c" >&4
17023 #$i_sunmath I_SUNMATH
17027 #ifdef I_SUNMATH /* Solaris special math library */
17028 # include <sunmath.h>
17031 int main(int argc, char **argv)
17035 if ((signbit(x) == 0) && (signbit(y) != 0))
17043 if eval $compile; then
17044 if $run ./try; then
17048 $echo "Signbit seems to be available, but doesn't work as I expected."
17049 $echo "I won't use it." >&4
17060 : see if sigprocmask exists
17061 set sigprocmask d_sigprocmask
17064 : see if sigsetjmp exists
17066 case "$d_sigsetjmp" in
17069 #include <setjmp.h>
17070 #$i_stdlib I_STDLIB
17072 #include <stdlib.h>
17078 if (sigsetjmp(env,1))
17081 siglongjmp(env, 1);
17086 if eval $compile; then
17087 if $run ./try >/dev/null 2>&1; then
17088 echo "POSIX sigsetjmp found." >&4
17092 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
17098 echo "sigsetjmp not found." >&4
17102 *) val="$d_sigsetjmp"
17103 case "$d_sigsetjmp" in
17104 $define) echo "POSIX sigsetjmp found." >&4;;
17105 $undef) echo "sigsetjmp not found." >&4;;
17113 : see if snprintf exists
17114 set snprintf d_snprintf
17117 : see if vsnprintf exists
17118 set vsnprintf d_vsnprintf
17121 case "$d_snprintf-$d_vsnprintf" in
17124 Checking whether your snprintf() and vsnprintf() work okay...
17126 $cat >try.c <<'EOCP'
17127 /* v?snprintf testing logic courtesy of Russ Allbery.
17128 * According to C99:
17129 * - if the buffer is too short it still must be \0-terminated
17130 * - if the buffer is too short the potentially required length
17131 * must be returned and not -1
17132 * - if the buffer is NULL the potentially required length
17133 * must be returned and not -1 or core dump
17136 #include <stdarg.h>
17140 int test (char *format, ...)
17145 va_start (args, format);
17146 count = vsnprintf (buf, sizeof buf, format, args);
17153 return ((test ("%s", "abcd") == 4 && buf[0] == 'a' && buf[1] == '\0'
17154 && snprintf (NULL, 0, "%s", "abcd") == 4) ? 0 : 1);
17158 if eval $compile; then
17161 0) echo "Your snprintf() and vsnprintf() seem to be working okay." ;;
17163 Your snprintf() and snprintf() don't seem to be working okay.
17165 d_snprintf="$undef"
17166 d_vsnprintf="$undef"
17170 echo "(I can't seem to compile the test program--assuming they don't)"
17171 d_snprintf="$undef"
17172 d_vsnprintf="$undef"
17178 : see if sockatmark exists
17179 set sockatmark d_sockatmark
17182 : see if prototype for sockatmark is available
17184 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
17187 : see if socks5_init exists
17188 set socks5_init d_socks5_init
17191 : see if sprintf returns the length of the string in the buffer as per ANSI
17192 $echo "Checking whether sprintf returns the length of the string..." >&4
17195 #$i_stdlib I_STDLIB
17197 #include <stdlib.h>
17199 #$i_string I_STRING
17201 # include <string.h>
17203 # include <strings.h>
17212 int check (size_t expect, int test) {
17213 size_t got = strlen(buffer);
17217 printf("expected %ld, got %ld in test %d '%s'\n", (long) expect, (long) got,
17222 int main(int argc, char **argv) {
17225 check(sprintf(buffer, ""), ++test);
17226 check(sprintf(buffer, "%s %s", "perl", "rules"), ++test);
17227 check(sprintf(buffer, "I like %g", atan2(0,-1)), ++test);
17234 d_sprintf_returns_strlen="$undef"
17235 if eval $compile; then
17239 sprintf returns the length of the string (as ANSI says it should)
17241 d_sprintf_returns_strlen="$define"
17244 sprintf does not return the length of the string (how old is this system?)
17246 d_sprintf_returns_strlen="$undef"
17252 : see if srand48_r exists
17253 set srand48_r d_srand48_r
17255 case "$d_srand48_r" in
17257 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17258 case "$d_srand48_r_proto:$usethreads" in
17259 ":define") d_srand48_r_proto=define
17260 set d_srand48_r_proto srand48_r $hdrs
17264 case "$d_srand48_r_proto" in
17266 case "$srand48_r_proto" in
17267 ''|0) try='int srand48_r(long, struct drand48_data*);'
17268 ./protochk "extern $try" $hdrs && srand48_r_proto=I_LS ;;
17270 case "$srand48_r_proto" in
17271 ''|0) d_srand48_r=undef
17273 echo "Disabling srand48_r, cannot determine prototype." >&4 ;;
17274 * ) case "$srand48_r_proto" in
17275 REENTRANT_PROTO*) ;;
17276 *) srand48_r_proto="REENTRANT_PROTO_$srand48_r_proto" ;;
17278 echo "Prototype: $try" ;;
17281 *) case "$usethreads" in
17282 define) echo "srand48_r has no prototype, not using it." >&4 ;;
17289 *) srand48_r_proto=0
17293 : see if srandom_r exists
17294 set srandom_r d_srandom_r
17296 case "$d_srandom_r" in
17298 hdrs="$i_systypes sys/types.h define stdio.h $i_stdlib stdlib.h"
17299 case "$d_srandom_r_proto:$usethreads" in
17300 ":define") d_srandom_r_proto=define
17301 set d_srandom_r_proto srandom_r $hdrs
17305 case "$d_srandom_r_proto" in
17307 case "$srandom_r_proto" in
17308 ''|0) try='int srandom_r(unsigned int, struct random_data*);'
17309 ./protochk "extern $try" $hdrs && srandom_r_proto=I_TS ;;
17311 case "$srandom_r_proto" in
17312 ''|0) d_srandom_r=undef
17314 echo "Disabling srandom_r, cannot determine prototype." >&4 ;;
17315 * ) case "$srandom_r_proto" in
17316 REENTRANT_PROTO*) ;;
17317 *) srandom_r_proto="REENTRANT_PROTO_$srandom_r_proto" ;;
17319 echo "Prototype: $try" ;;
17322 *) case "$usethreads" in
17323 define) echo "srandom_r has no prototype, not using it." >&4 ;;
17330 *) srandom_r_proto=0
17334 : see if prototype for setresgid is available
17336 set d_sresgproto setresgid $i_unistd unistd.h
17339 : see if prototype for setresuid is available
17341 set d_sresuproto setresuid $i_unistd unistd.h
17344 : see if sys/stat.h is available
17345 set sys/stat.h i_sysstat
17349 : see if stat knows about block sizes
17351 echo "Checking to see if your struct stat has st_blocks field..." >&4
17352 set d_statblks stat st_blocks $i_sysstat sys/stat.h
17356 : see if this is a sys/vfs.h system
17357 set sys/vfs.h i_sysvfs
17361 : see if this is a sys/statfs.h system
17362 set sys/statfs.h i_sysstatfs
17367 echo "Checking to see if your system supports struct statfs..." >&4
17368 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
17370 case "$d_statfs_s" in
17371 "$define") echo "Yes, it does." ;;
17372 *) echo "No, it doesn't." ;;
17377 : see if struct statfs knows about f_flags
17378 case "$d_statfs_s" in
17381 echo "Checking to see if your struct statfs has f_flags field..." >&4
17382 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
17386 set d_statfs_f_flags
17390 case "$d_statfs_f_flags" in
17391 "$define") echo "Yes, it does." ;;
17392 *) echo "No, it doesn't." ;;
17396 Checking how to access stdio streams by file descriptor number...
17398 case "$stdio_stream_array" in
17399 '') $cat >try.c <<EOCP
17402 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
17406 for s in _iob __iob __sF
17408 set try -DSTDIO_STREAM_ARRAY=$s
17409 if eval $compile; then
17410 case "`$run ./try`" in
17411 yes) stdio_stream_array=$s; break ;;
17417 case "$stdio_stream_array" in
17419 I can't figure out how to access stdio streams by file descriptor number.
17421 d_stdio_stream_array="$undef"
17424 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
17426 d_stdio_stream_array="$define"
17430 : see if strcoll exists
17431 set strcoll d_strcoll
17434 : check for structure copying
17436 echo "Checking to see if your C compiler can copy structs..." >&4
17437 $cat >try.c <<'EOCP'
17447 if $cc -c try.c >/dev/null 2>&1 ; then
17449 echo "Yup, it can."
17452 echo "Nope, it can't."
17458 : see if strerror and/or sys_errlist[] exist
17460 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
17461 if set strerror val -f d_strerror; eval $csym; $val; then
17462 echo 'strerror() found.' >&4
17463 d_strerror="$define"
17464 d_strerrm='strerror(e)'
17465 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
17466 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
17467 d_syserrlst="$define"
17469 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
17470 d_syserrlst="$undef"
17472 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
17473 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
17474 echo 'strerror() found in string header.' >&4
17475 d_strerror="$define"
17476 d_strerrm='strerror(e)'
17477 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
17478 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
17479 d_syserrlst="$define"
17481 echo "(You don't appear to have any sys_errlist[], how can this be?)"
17482 d_syserrlst="$undef"
17484 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
17485 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
17486 d_strerror="$undef"
17487 d_syserrlst="$define"
17488 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
17490 echo 'strerror() and sys_errlist[] NOT found.' >&4
17491 d_strerror="$undef"
17492 d_syserrlst="$undef"
17493 d_strerrm='"unknown"'
17497 : see if strerror_r exists
17498 set strerror_r d_strerror_r
17500 case "$d_strerror_r" in
17502 hdrs="$i_systypes sys/types.h define stdio.h $i_string string.h"
17503 case "$d_strerror_r_proto:$usethreads" in
17504 ":define") d_strerror_r_proto=define
17505 set d_strerror_r_proto strerror_r $hdrs
17509 case "$d_strerror_r_proto" in
17511 case "$strerror_r_proto" in
17512 ''|0) try='int strerror_r(int, char*, size_t);'
17513 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBW ;;
17515 case "$strerror_r_proto" in
17516 ''|0) try='int strerror_r(int, char*, int);'
17517 ./protochk "extern $try" $hdrs && strerror_r_proto=I_IBI ;;
17519 case "$strerror_r_proto" in
17520 ''|0) try='char* strerror_r(int, char*, size_t);'
17521 ./protochk "extern $try" $hdrs && strerror_r_proto=B_IBW ;;
17523 case "$strerror_r_proto" in
17524 ''|0) d_strerror_r=undef
17526 echo "Disabling strerror_r, cannot determine prototype." >&4 ;;
17527 * ) case "$strerror_r_proto" in
17528 REENTRANT_PROTO*) ;;
17529 *) strerror_r_proto="REENTRANT_PROTO_$strerror_r_proto" ;;
17531 echo "Prototype: $try" ;;
17534 *) case "$usethreads" in
17535 define) echo "strerror_r has no prototype, not using it." >&4 ;;
17542 *) strerror_r_proto=0
17546 : see if strftime exists
17547 set strftime d_strftime
17550 : see if strlcat exists
17551 set strlcat d_strlcat
17554 : see if strlcpy exists
17555 set strlcpy d_strlcpy
17558 : see if strtod exists
17559 set strtod d_strtod
17562 : see if strtol exists
17563 set strtol d_strtol
17566 : see if strtold exists
17567 set strtold d_strtold
17570 : see if strtoll exists
17571 set strtoll d_strtoll
17574 case "$d_longlong-$d_strtoll" in
17577 Checking whether your strtoll() works okay...
17579 $cat >try.c <<'EOCP'
17582 #define strtoll __strtoll
17585 #define strtoll _strtoll
17588 extern long long int strtoll(char *s, char **, int);
17589 static int bad = 0;
17590 int check(char *s, long long ell, int een) {
17593 gll = strtoll(s, 0, 10);
17594 if (!((gll == ell) && (errno == een)))
17598 check(" 1", 1LL, 0);
17599 check(" 0", 0LL, 0);
17600 check("-1", -1LL, 0);
17601 check("-9223372036854775808", -9223372036854775808LL, 0);
17602 check("-9223372036854775808", -9223372036854775808LL, 0);
17603 check(" 9223372036854775807", 9223372036854775807LL, 0);
17604 check("-9223372036854775808", -9223372036854775808LL, 0);
17605 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
17606 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
17612 if eval $compile; then
17615 ok) echo "Your strtoll() seems to be working okay." ;;
17617 Your strtoll() doesn't seem to be working okay.
17623 echo "(I can't seem to compile the test program--assuming it doesn't)"
17629 : see if strtoq exists
17630 set strtoq d_strtoq
17633 : see if strtoul exists
17634 set strtoul d_strtoul
17637 case "$d_strtoul" in
17640 Checking whether your strtoul() works okay...
17642 $cat >try.c <<'EOCP'
17645 extern unsigned long int strtoul(char *s, char **, int);
17646 static int bad = 0;
17647 void check(char *s, unsigned long eul, int een) {
17650 gul = strtoul(s, 0, 10);
17651 if (!((gul == eul) && (errno == een)))
17655 check(" 1", 1L, 0);
17656 check(" 0", 0L, 0);
17658 case "$longsize" in
17660 $cat >>try.c <<'EOCP'
17661 check("18446744073709551615", 18446744073709551615UL, 0);
17662 check("18446744073709551616", 18446744073709551615UL, ERANGE);
17663 #if 0 /* strtoul() for /^-/ strings is undefined. */
17664 check("-1", 18446744073709551615UL, 0);
17665 check("-18446744073709551614", 2, 0);
17666 check("-18446744073709551615", 1, 0);
17667 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
17668 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
17673 $cat >>try.c <<'EOCP'
17674 check("4294967295", 4294967295UL, 0);
17675 check("4294967296", 4294967295UL, ERANGE);
17676 #if 0 /* strtoul() for /^-/ strings is undefined. */
17677 check("-1", 4294967295UL, 0);
17678 check("-4294967294", 2, 0);
17679 check("-4294967295", 1, 0);
17680 check("-4294967296", 4294967295UL, ERANGE);
17681 check("-4294967297", 4294967295UL, ERANGE);
17686 : Should we write these tests to be more portable by sprintf-ing
17687 : ~0 and then manipulating that char string as input for strtol?
17690 $cat >>try.c <<'EOCP'
17697 if eval $compile; then
17698 case "`$run ./try`" in
17699 ok) echo "Your strtoul() seems to be working okay." ;;
17701 Your strtoul() doesn't seem to be working okay.
17707 echo "(I can't seem to compile the test program--assuming it doesn't)"
17713 : see if strtoull exists
17714 set strtoull d_strtoull
17717 case "$d_longlong-$d_strtoull" in
17720 Checking whether your strtoull() works okay...
17722 $cat >try.c <<'EOCP'
17725 #define strtoull __strtoull
17728 extern unsigned long long int strtoull(char *s, char **, int);
17729 static int bad = 0;
17730 int check(char *s, long long eull, int een) {
17733 gull = strtoull(s, 0, 10);
17734 if (!((gull == eull) && (errno == een)))
17738 check(" 1", 1LL, 0);
17739 check(" 0", 0LL, 0);
17740 check("18446744073709551615", 18446744073709551615ULL, 0);
17741 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
17742 #if 0 /* strtoull() for /^-/ strings is undefined. */
17743 check("-1", 18446744073709551615ULL, 0);
17744 check("-18446744073709551614", 2LL, 0);
17745 check("-18446744073709551615", 1LL, 0);
17746 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17747 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17754 if eval $compile; then
17755 case "`$run ./try`" in
17756 ok) echo "Your strtoull() seems to be working okay." ;;
17758 Your strtoull() doesn't seem to be working okay.
17760 d_strtoull="$undef"
17764 echo "(I can't seem to compile the test program--assuming it doesn't)"
17765 d_strtoull="$undef"
17770 : see if strtouq exists
17771 set strtouq d_strtouq
17774 case "$d_strtouq" in
17777 Checking whether your strtouq() works okay...
17779 $cat >try.c <<'EOCP'
17782 extern unsigned long long int strtouq(char *s, char **, int);
17783 static int bad = 0;
17784 void check(char *s, unsigned long long eull, int een) {
17785 unsigned long long gull;
17787 gull = strtouq(s, 0, 10);
17788 if (!((gull == eull) && (errno == een)))
17792 check(" 1", 1LL, 0);
17793 check(" 0", 0LL, 0);
17794 check("18446744073709551615", 18446744073709551615ULL, 0);
17795 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
17796 #if 0 /* strtouq() for /^-/ strings is undefined. */
17797 check("-1", 18446744073709551615ULL, 0);
17798 check("-18446744073709551614", 2LL, 0);
17799 check("-18446744073709551615", 1LL, 0);
17800 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
17801 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
17809 if eval $compile; then
17810 case "`$run ./try`" in
17811 ok) echo "Your strtouq() seems to be working okay." ;;
17813 Your strtouq() doesn't seem to be working okay.
17819 echo "(I can't seem to compile the test program--assuming it doesn't)"
17825 : see if strxfrm exists
17826 set strxfrm d_strxfrm
17829 : see if symlink exists
17830 set symlink d_symlink
17833 : see if syscall exists
17834 set syscall d_syscall
17837 : see if prototype for syscall is available
17839 set d_syscallproto syscall $i_unistd unistd.h
17842 : see if sysconf exists
17843 set sysconf d_sysconf
17846 : see if system exists
17847 set system d_system
17850 : see if tcgetpgrp exists
17851 set tcgetpgrp d_tcgetpgrp
17854 : see if tcsetpgrp exists
17855 set tcsetpgrp d_tcsetpgrp
17858 : see if prototype for telldir is available
17860 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
17863 : see if time exists
17865 if test "X$d_time" = X -o X"$timetype" = X; then
17866 if set time val -f d_time; eval $csym; $val; then
17867 echo 'time() found.' >&4
17869 rp="What is the type returned by time() on this system?"
17870 set time_t timetype long stdio.h sys/types.h
17873 echo 'time() not found, hope that will do.' >&4
17881 : see if this is a sys/times.h system
17882 set sys/times.h i_systimes
17885 : see if times exists
17887 if set times val -f d_times; eval $csym; $val; then
17888 echo 'times() found.' >&4
17891 case "$i_systimes" in
17892 "$define") inc='sys/times.h';;
17894 rp="What is the type returned by times() on this system?"
17895 set clock_t clocktype long stdio.h sys/types.h $inc
17898 echo 'times() NOT found, hope that will do.' >&4
17903 : see if tmpnam_r exists
17904 set tmpnam_r d_tmpnam_r
17906 case "$d_tmpnam_r" in
17908 hdrs="$i_systypes sys/types.h define stdio.h "
17909 case "$d_tmpnam_r_proto:$usethreads" in
17910 ":define") d_tmpnam_r_proto=define
17911 set d_tmpnam_r_proto tmpnam_r $hdrs
17915 case "$d_tmpnam_r_proto" in
17917 case "$tmpnam_r_proto" in
17918 ''|0) try='char* tmpnam_r(char*);'
17919 ./protochk "extern $try" $hdrs && tmpnam_r_proto=B_B ;;
17921 case "$tmpnam_r_proto" in
17922 ''|0) d_tmpnam_r=undef
17924 echo "Disabling tmpnam_r, cannot determine prototype." >&4 ;;
17925 * ) case "$tmpnam_r_proto" in
17926 REENTRANT_PROTO*) ;;
17927 *) tmpnam_r_proto="REENTRANT_PROTO_$tmpnam_r_proto" ;;
17929 echo "Prototype: $try" ;;
17932 *) case "$usethreads" in
17933 define) echo "tmpnam_r has no prototype, not using it." >&4 ;;
17940 *) tmpnam_r_proto=0
17944 : see if truncate exists
17945 set truncate d_truncate
17948 : see if ttyname_r exists
17949 set ttyname_r d_ttyname_r
17951 case "$d_ttyname_r" in
17953 hdrs="$i_systypes sys/types.h define stdio.h $i_unistd unistd.h"
17954 case "$d_ttyname_r_proto:$usethreads" in
17955 ":define") d_ttyname_r_proto=define
17956 set d_ttyname_r_proto ttyname_r $hdrs
17960 case "$d_ttyname_r_proto" in
17962 case "$ttyname_r_proto" in
17963 ''|0) try='int ttyname_r(int, char*, size_t);'
17964 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBW ;;
17966 case "$ttyname_r_proto" in
17967 ''|0) try='int ttyname_r(int, char*, int);'
17968 ./protochk "extern $try" $hdrs && ttyname_r_proto=I_IBI ;;
17970 case "$ttyname_r_proto" in
17971 ''|0) try='char* ttyname_r(int, char*, int);'
17972 ./protochk "extern $try" $hdrs && ttyname_r_proto=B_IBI ;;
17974 case "$ttyname_r_proto" in
17975 ''|0) d_ttyname_r=undef
17977 echo "Disabling ttyname_r, cannot determine prototype." >&4 ;;
17978 * ) case "$ttyname_r_proto" in
17979 REENTRANT_PROTO*) ;;
17980 *) ttyname_r_proto="REENTRANT_PROTO_$ttyname_r_proto" ;;
17982 echo "Prototype: $try" ;;
17985 *) case "$usethreads" in
17986 define) echo "ttyname_r has no prototype, not using it." >&4 ;;
17993 *) ttyname_r_proto=0
17997 : see if tzname[] exists
17999 if set tzname val -a d_tzname; eval $csym; $val; then
18001 echo 'tzname[] found.' >&4
18004 echo 'tzname[] NOT found.' >&4
18010 next|rhapsody|darwin) multiarch="$define" ;;
18012 case "$multiarch" in
18013 ''|[nN]*) multiarch="$undef" ;;
18016 : check for ordering of bytes in a UV
18018 case "$usecrosscompile$multiarch" in
18021 You seem to be either cross-compiling or doing a multiarchitecture build,
18022 skipping the byteorder check.
18028 case "$byteorder" in
18031 In the following, larger digits indicate more significance. A big-endian
18032 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
18033 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
18034 machines may have weird orders like 3412. A Cray will report 87654321,
18035 an Alpha will report 12345678. If the test program works the default is
18037 I'm now running the test program...
18041 #$i_stdlib I_STDLIB
18043 #include <stdlib.h>
18045 #include <sys/types.h>
18046 typedef $uvtype UV;
18056 u.l = (((UV)0x08070605) << 32) | (UV)0x04030201;
18058 u.l = (UV)0x04030201;
18059 for (i = 0; i < $uvsize; i++)
18060 printf("%c", u.c[i]+'0');
18067 if eval $compile && $run ./try > /dev/null; then
18070 [1-4][1-4][1-4][1-4]|12345678|87654321)
18071 echo "(The test program ran ok.)"
18072 echo "byteorder=$dflt"
18075 ????|????????) echo "(The test program ran ok.)" ;;
18076 *) echo "(The test program didn't run right for some reason.)" ;;
18081 (I can't seem to compile the test program. Guessing big-endian...)
18084 case "$xxx_prompt" in
18086 rp="What is the order of bytes in $uvtype?"
18101 Checking to see whether you can access character data unalignedly...
18103 case "$d_u32align" in
18104 '') $cat >try.c <<EOCP
18106 #$i_stdlib I_STDLIB
18108 #include <stdlib.h>
18110 #define U32 $u32type
18111 #define BYTEORDER 0x$byteorder
18113 #include <signal.h>
18115 $signal_t bletch(int s) { exit(4); }
18118 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
18123 if (sizeof(U32) != 4) {
18124 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
18131 signal(SIGBUS, bletch);
18143 for (i = 0; i < 4; i++) {
18144 up = (U32*)(buf + i);
18145 if (! ((*up == 1 << (8*i)) || /* big-endian */
18146 (*up == 1 << (8*(3-i))) /* little-endian */
18150 printf("read failed (%x)\n", *up);
18156 for (i = 0; i < 4; i++) {
18157 up = (U32*)(buf + i);
18159 if (*up != 0xBeef) {
18160 printf("write failed (%x)\n", *up);
18174 if eval $compile_ok; then
18175 echo "(Testing for character data alignment may crash the test. That's okay.)" >&4
18176 $run ./try 2>&1 >/dev/null
18179 You can access character data pretty unalignedly.
18181 d_u32align="$undef"
18184 It seems that you must access character data in an aligned manner.
18186 d_u32align="$define"
18190 rp='Can you access character data at unaligned addresses?'
18194 [yY]*) d_u32align="$undef" ;;
18195 *) d_u32align="$define" ;;
18202 : see if ualarm exists
18203 set ualarm d_ualarm
18206 : see if umask exists
18210 : see if unordered exists
18211 set unordered d_unordered
18214 : see if unsetenv exists
18215 set unsetenv d_unsetenv
18218 : see if usleep exists
18219 set usleep d_usleep
18222 : see if prototype for usleep is available
18224 set d_usleepproto usleep $i_unistd unistd.h
18227 : see if ustat exists
18231 : see if closedir exists
18232 set closedir d_closedir
18235 case "$d_closedir" in
18238 echo "Checking whether closedir() returns a status..." >&4
18240 #$i_dirent I_DIRENT /**/
18241 #$i_sysdir I_SYS_DIR /**/
18242 #$i_sysndir I_SYS_NDIR /**/
18243 #$i_systypes I_SYS_TYPES /**/
18245 #if defined(I_SYS_TYPES)
18246 #include <sys/types.h>
18248 #if defined(I_DIRENT)
18249 #include <dirent.h>
18250 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
18251 #include <sys/dir.h>
18255 #include <sys/ndir.h>
18259 #include <ndir.h> /* may be wrong in the future */
18261 #include <sys/dir.h>
18266 int main() { return closedir(opendir(".")); }
18269 if eval $compile_ok; then
18270 if $run ./try > /dev/null 2>&1 ; then
18271 echo "Yes, it does."
18274 echo "No, it doesn't."
18278 echo "(I can't seem to compile the test program--assuming it doesn't)"
18286 set d_void_closedir
18290 : see if there is a wait4
18294 : see if waitpid exists
18295 set waitpid d_waitpid
18298 : see if wcstombs exists
18299 set wcstombs d_wcstombs
18302 : see if wctomb exists
18303 set wctomb d_wctomb
18306 : see if writev exists
18307 set writev d_writev
18310 : preserve RCS keywords in files with variable substitution, grrr
18315 Revision='$Revision'
18317 : check for alignment requirements
18319 case "$usecrosscompile$multiarch" in
18322 You seem to be either cross-compiling or doing a multiarchitecture build,
18323 skipping the memory alignment check.
18326 case "$alignbytes" in
18327 '') alignbytes=8 ;;
18331 case "$alignbytes" in
18332 '') echo "Checking alignment constraints..." >&4
18333 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
18334 $cat >try.c <<'EOCP'
18335 typedef long double NV;
18338 $cat >try.c <<'EOCP'
18342 $cat >>try.c <<'EOCP'
18350 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
18355 if eval $compile_ok; then
18359 echo "(I can't seem to compile the test program...)"
18362 *) dflt="$alignbytes"
18365 rp="Doubles must be aligned on a how-many-byte boundary?"
18373 : set the base revision
18376 : how do we concatenate cpp tokens here?
18378 echo "Checking to see how your cpp does stuff like concatenate tokens..." >&4
18379 $cat >cpp_stuff.c <<'EOCP'
18380 #define RCAT(a,b)a/**/b
18381 #define ACAT(a,b)a ## b
18385 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
18386 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
18387 echo "Oh! Smells like ANSI's been here." >&4
18388 echo "We can catify or stringify, separately or together!"
18390 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
18391 echo "Ah, yes! The good old days!" >&4
18392 echo "However, in the good old days we don't know how to stringify and"
18393 echo "catify at the same time."
18397 Hmm, I don't seem to be able to concatenate tokens with your cpp.
18398 You're going to have to edit the values of CAT[2-5] in config.h...
18400 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
18404 : see if this is a db.h system
18410 : Check db version.
18412 echo "Checking Berkeley DB version ..." >&4
18418 #include <sys/types.h>
18420 #$i_stdlib I_STDLIB
18422 #include <stdlib.h>
18425 int main(int argc, char *argv[])
18427 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
18428 int Major, Minor, Patch ;
18429 unsigned long Version ;
18430 (void)db_version(&Major, &Minor, &Patch) ;
18432 printf("%d %d %d %d %d %d\n",
18433 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
18434 Major, Minor, Patch);
18437 printf("You have Berkeley DB Version 2 or greater.\n");
18439 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
18440 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
18441 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
18442 Major, Minor, Patch) ;
18444 /* check that db.h & libdb are compatible */
18445 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
18446 printf("db.h and libdb are incompatible.\n") ;
18450 printf("db.h and libdb are compatible.\n") ;
18452 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
18453 + DB_VERSION_PATCH ;
18455 /* needs to be >= 2.3.4 */
18456 if (Version < 2003004) {
18457 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
18458 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
18464 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
18469 printf("You have Berkeley DB Version 1.\n");
18470 exit(0); /* DB version < 2: the coast is clear. */
18472 exit(1); /* <db.h> not Berkeley DB? */
18478 if eval $compile_ok && $run ./try; then
18479 echo 'Looks OK.' >&4
18481 db_version_major=$1
18482 db_version_minor=$2
18483 db_version_patch=$3
18485 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
18489 : Remove db from list of libraries to use
18490 echo "Removing unusable -ldb from library list" >&4
18491 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
18494 echo "libs = $libs" >&4
18504 : Check the return type needed for hash
18506 echo "Checking return type needed for hash for Berkeley DB ..." >&4
18512 #include <sys/types.h>
18515 #ifndef DB_VERSION_MAJOR
18516 u_int32_t hash_cb (ptr, size)
18524 info.hash = hash_cb;
18528 if $cc $ccflags -c try.c >try.out 2>&1 ; then
18529 if $contains warning try.out >>/dev/null 2>&1 ; then
18532 db_hashtype='u_int32_t'
18535 : XXX Maybe we should just give up here.
18536 db_hashtype=u_int32_t
18538 echo "Help: I can't seem to compile the db test program." >&4
18539 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
18542 echo "Your version of Berkeley DB uses $db_hashtype for hash."
18544 *) db_hashtype=u_int32_t
18549 : Check the return type needed for prefix
18551 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
18557 #include <sys/types.h>
18560 #ifndef DB_VERSION_MAJOR
18561 size_t prefix_cb (key1, key2)
18569 info.prefix = prefix_cb;
18573 if $cc $ccflags -c try.c >try.out 2>&1 ; then
18574 if $contains warning try.out >>/dev/null 2>&1 ; then
18575 db_prefixtype='int'
18577 db_prefixtype='size_t'
18580 db_prefixtype='size_t'
18581 : XXX Maybe we should just give up here.
18583 echo "Help: I can't seem to compile the db test program." >&4
18584 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
18587 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
18589 *) db_prefixtype='size_t'
18593 : How can we generate normalized random numbers ?
18595 echo "Looking for a random number function..." >&4
18596 case "$randfunc" in
18598 if set drand48 val -f; eval $csym; $val; then
18600 echo "Good, found drand48()." >&4
18601 elif set random val -f; eval $csym; $val; then
18603 echo "OK, found random()." >&4
18606 echo "Yick, looks like I have to use rand()." >&4
18617 *-Dmy_rand=*|*-Dmy_srand=*)
18618 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
18619 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
18620 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
18621 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
18625 while $test "$cont"; do
18626 rp="Use which function to generate random numbers?"
18628 if $test "$ans" = "$dflt"; then
18634 if set $ans val -f; eval $csym; $val; then
18638 rp="I cannot find function $ans. Use that name anyway?"
18647 case "$randfunc" in
18649 drand01="drand48()"
18655 case "$randbits" in
18657 echo "Checking to see how many bits your $randfunc() function produces..." >&4
18659 #$i_unistd I_UNISTD
18660 #$i_stdlib I_STDLIB
18663 # include <unistd.h>
18666 # include <stdlib.h>
18671 register unsigned long tmp;
18672 register unsigned long max = 0L;
18674 for (i = 1000; i; i--) {
18675 tmp = (unsigned long) $randfunc();
18676 if (tmp > max) max = tmp;
18678 for (i = 0; max; i++)
18684 if eval $compile_ok; then
18688 echo "(I can't seem to compile the test program...)"
18695 rp="How many bits does your $randfunc() function produce?"
18699 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18700 seedfunc="s$randfunc"
18701 randseedtype=unsigned
18705 rp="How many bits does your $randfunc() function produce?"
18708 seedfunc="s$randfunc"
18709 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
18710 if set $seedfunc val -f; eval $csym; $val; then
18711 echo "(Using $seedfunc() to seed random generator)"
18713 echo "(Warning: no $seedfunc() to seed random generator)"
18716 randseedtype=unsigned
18724 echo "Determining whether or not we are on an EBCDIC system..." >&4
18725 $cat >try.c <<'EOM'
18728 if ('M'==0xd4) return 0;
18735 if eval $compile_ok; then
18736 if $run ./try; then
18737 echo "You seem to speak EBCDIC." >&4
18740 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
18743 echo "I'm unable to compile the test program." >&4
18744 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
18752 Checking how to flush all pending stdio output...
18754 # I only know how to find the first 32 possibly open files on SunOS.
18755 # See also hints/sunos_4_1.sh and util.c --AD
18757 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
18759 $cat >>try.c <<EOCP
18761 #$i_stdlib I_STDLIB
18763 #include <stdlib.h>
18765 #$i_unistd I_UNISTD
18767 # include <unistd.h>
18769 #$d_sysconf HAS_SYSCONF
18770 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
18771 #ifdef HAS_STDIO_STREAM_ARRAY
18772 # define STDIO_STREAM_ARRAY $stdio_stream_array
18777 p = fopen("try.out", "w");
18781 # ifdef TRY_FPRINTF
18785 #ifdef TRY_FFLUSH_NULL
18788 #ifdef TRY_FFLUSH_ALL
18790 long open_max = -1;
18791 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
18792 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
18794 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
18795 open_max = sysconf(_SC_OPEN_MAX);
18798 open_max = FOPEN_MAX;
18801 open_max = OPEN_MAX;
18810 # ifdef HAS_STDIO_STREAM_ARRAY
18811 if (open_max > 0) {
18813 for (i = 0; i < open_max; i++)
18814 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
18815 STDIO_STREAM_ARRAY[i]._file < open_max &&
18816 STDIO_STREAM_ARRAY[i]._flag)
18817 fflush(&STDIO_STREAM_ARRAY[i]);
18825 : first we have to find out how _not_ to flush
18827 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
18829 set try -DTRY_FPUTC
18830 if eval $compile; then
18831 $run ./try 2>/dev/null
18834 if $test ! -s try.out -a "X$code" = X42; then
18840 set try -DTRY_FPRINTF
18841 if eval $compile; then
18842 $run ./try 2>/dev/null
18845 if $test ! -s try.out -a "X$code" = X42; then
18846 output=-DTRY_FPRINTF
18852 : check for fflush NULL behaviour
18853 case "$fflushNULL" in
18854 '') set try -DTRY_FFLUSH_NULL $output
18855 if eval $compile; then
18856 $run ./try 2>/dev/null
18859 if $test -s try.out -a "X$code" = X42; then
18860 fflushNULL="`$cat try.out`"
18862 if $test "X$code" != X42; then
18864 (If this test failed, don't worry, we'll try another method shortly.)
18870 case "$fflushNULL" in
18872 Your fflush(NULL) works okay for output streams.
18873 Let's see if it clobbers input pipes...
18875 # As of mid-March 2000 all versions of Solaris appear to have a stdio
18876 # bug that improperly flushes the input end of pipes. So we avoid the
18877 # autoflush on fork/system/exec support for now. :-(
18878 $cat >tryp.c <<EOCP
18881 main(int argc, char **argv)
18887 while ((i = getc(stdin)) != -1
18888 && (*bp++ = i) != '\n'
18889 && bp < &buf[1024])
18892 fprintf(stdout, "%s", buf);
18900 fflushNULL="$define"
18902 if eval $compile; then
18904 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18905 if cmp tryp.c tryp.out >/dev/null 2>&1; then
18907 fflush(NULL) seems to behave okay with input streams.
18909 fflushNULL="$define"
18912 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
18914 fflushNULL="$undef"
18917 $rm -f core tryp.c tryp.core core.tryp.*
18920 Your fflush(NULL) isn't working (contrary to ANSI C).
18922 fflushNULL="$undef"
18925 Cannot figure out whether your fflush(NULL) works or not.
18926 I'm assuming it doesn't (contrary to ANSI C).
18928 fflushNULL="$undef"
18932 $define|true|[yY]*)
18933 fflushNULL="$define"
18936 fflushNULL="$undef"
18939 : check explicit looping only if NULL did not work, and if the pipe
18940 : bug does not show up on an explicit flush too
18941 case "$fflushNULL" in
18943 $cat >tryp.c <<EOCP
18946 main(int argc, char **argv)
18952 while ((i = getc(stdin)) != -1
18953 && (*bp++ = i) != '\n'
18954 && bp < &buf[1024])
18957 fprintf(stdout, "%s", buf);
18966 if eval $compile; then
18968 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
18969 if cmp tryp.c tryp.out >/dev/null 2>&1; then
18971 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
18973 : now check for fflushall behaviour
18974 case "$fflushall" in
18975 '') set try -DTRY_FFLUSH_ALL $output
18976 if eval $compile; then
18978 (Now testing the other method--but note that this also may fail.)
18980 $run ./try 2>/dev/null
18983 if $test -s try.out -a "X$code" = X42; then
18984 fflushall="`$cat try.out`"
18988 case "$fflushall" in
18990 Whew. Flushing explicitly all the stdio streams works.
18992 fflushall="$define"
18995 Sigh. Flushing explicitly all the stdio streams doesn't work.
19000 Cannot figure out whether flushing stdio streams explicitly works or not.
19001 I'm assuming it doesn't.
19007 "$define"|true|[yY]*)
19008 fflushall="$define"
19016 All is futile. Even fflush(stdin) clobbers input pipes!
19023 $rm -f core tryp.c tryp.core core.tryp.*
19025 *) fflushall="$undef"
19029 case "$fflushNULL$fflushall" in
19032 OK, I give up. I cannot figure out how to flush pending stdio output.
19033 We won't be flushing handles at all before fork/exec/popen.
19039 : Store the full pathname to the ar program for use in the C program
19040 : Respect a hint or command line value for full_ar.
19045 : Store the full pathname to the sed program for use in the C program
19048 : see what type gids are declared as in the kernel
19050 echo "Looking for the type for group ids returned by getgid()."
19051 set gid_t gidtype xxx stdio.h sys/types.h
19055 xxx=`./findhdr sys/user.h`
19056 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
19058 unsigned) dflt="$1 $2" ;;
19062 *) dflt="$gidtype";;
19065 gid_t) echo "gid_t found." ;;
19066 *) rp="What is the type for group ids returned by getgid()?"
19074 *_t) zzz="$gidtype" ;;
19077 echo "Checking the size of $zzz..." >&4
19079 #include <sys/types.h>
19081 #$i_stdlib I_STDLIB
19083 #include <stdlib.h>
19086 printf("%d\n", (int)sizeof($gidtype));
19091 if eval $compile_ok; then
19095 echo "(I can't execute the test program--guessing $gidsize.)" >&4
19098 echo "Your $zzz is $gidsize bytes long."
19103 echo "(I can't compile the test program--guessing $gidsize.)" >&4
19109 *_t) zzz="$gidtype" ;;
19112 echo "Checking the sign of $zzz..." >&4
19114 #include <sys/types.h>
19125 if eval $compile; then
19129 echo "(I can't execute the test program--guessing unsigned.)" >&4
19133 1) echo "Your $zzz is unsigned." ;;
19134 -1) echo "Your $zzz is signed." ;;
19140 echo "(I can't compile the test program--guessing unsigned.)" >&4
19146 if $test X"$quadtype" != X; then
19148 echo "Checking how to print 64-bit integers..." >&4
19150 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
19151 $cat >try.c <<'EOCP'
19152 #include <sys/types.h>
19155 int q = 12345678901;
19156 printf("%ld\n", q);
19160 if eval $compile; then
19164 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
19165 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
19166 echo "We will use %d."
19172 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
19173 $cat >try.c <<'EOCP'
19174 #include <sys/types.h>
19177 long q = 12345678901;
19178 printf("%ld\n", q);
19182 if eval $compile; then
19186 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
19187 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
19188 echo "We will use %ld."
19194 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
19195 $cat >try.c <<'EOCP'
19196 #include <sys/types.h>
19197 #include <inttypes.h>
19200 int64_t q = 12345678901;
19201 printf("%" PRId64 "\n", q);
19205 if eval $compile; then
19209 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
19210 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
19211 echo "We will use the C9X style."
19217 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19219 #include <sys/types.h>
19222 $quadtype q = 12345678901;
19223 printf("%Ld\n", q);
19227 if eval $compile; then
19231 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
19232 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
19233 echo "We will use %Ld."
19239 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
19240 $cat >try.c <<'EOCP'
19241 #include <sys/types.h>
19244 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
19245 printf("%lld\n", q);
19249 if eval $compile; then
19253 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
19254 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
19255 echo "We will use the %lld style."
19261 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
19263 #include <sys/types.h>
19266 $quadtype q = 12345678901;
19267 printf("%qd\n", q);
19271 if eval $compile; then
19275 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
19276 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
19277 echo "We will use %qd."
19283 if $test X"$sPRId64" = X; then
19284 echo "Cannot figure out how to print 64-bit integers." >&4
19291 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
19292 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
19294 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
19295 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
19301 $echo "Checking the format strings to be used for Perl's internal types..." >&4
19303 if $test X"$ivsize" = X8; then
19304 ivdformat="$sPRId64"
19305 uvuformat="$sPRIu64"
19306 uvoformat="$sPRIo64"
19307 uvxformat="$sPRIx64"
19308 uvXUformat="$sPRIXU64"
19310 if $test X"$ivsize" = X"$longsize"; then
19317 if $test X"$ivsize" = X"$intsize"; then
19325 if $test X"$ivsize" = X"$shortsize"; then
19336 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
19337 nveformat="$sPRIeldbl"
19338 nvfformat="$sPRIfldbl"
19339 nvgformat="$sPRIgldbl"
19340 nvEUformat="$sPRIEUldbl"
19341 nvFUformat="$sPRIFUldbl"
19342 nvGUformat="$sPRIGUldbl"
19352 case "$ivdformat" in
19353 '') echo "$0: Fatal: failed to find format strings, cannot continue." >&4
19360 $echo "Checking the format string to be used for gids..." >&4
19363 -1) if $test X"$gidsize" = X"$ivsize"; then
19364 gidformat="$ivdformat"
19366 if $test X"$gidsize" = X"$longsize"; then
19369 if $test X"$gidsize" = X"$intsize"; then
19372 if $test X"$gidsize" = X"$shortsize"; then
19379 *) if $test X"$gidsize" = X"$uvsize"; then
19380 gidformat="$uvuformat"
19382 if $test X"$gidsize" = X"$longsize"; then
19385 if $test X"$gidsize" = X"$intsize"; then
19388 if $test X"$gidsize" = X"$shortsize"; then
19397 : see if getgroups exists
19398 set getgroups d_getgrps
19401 : see if setgroups exists
19402 set setgroups d_setgrps
19406 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
19408 case "$d_getgrps$d_setgrps" in
19410 case "$groupstype" in
19411 '') dflt="$gidtype" ;;
19412 *) dflt="$groupstype" ;;
19415 What type of pointer is the second argument to getgroups() and setgroups()?
19416 Usually this is the same as group ids, $gidtype, but not always.
19419 rp='What type pointer is the second argument to getgroups() and setgroups()?'
19423 *) groupstype="$gidtype";;
19427 if $test $patchlevel -lt 9; then
19428 : MAD is not available in 5.8.x or earlier.
19432 $define|true|[yY]*) dflt='y' ;;
19437 Would you like to build with Misc Attribute Decoration? This is development
19438 work leading to a Perl 5 to Perl 6 convertor, which imposes a space and speed
19439 overhead on the interpreter.
19441 If this doesn't make any sense to you, just accept the default '$dflt'.
19443 rp='Build Perl with MAD?'
19448 madlyh='madly.h madly.act madly.tab'
19450 madlyobj="madly$_o" ;;
19460 echo "Checking if your $make program sets \$(MAKE)..." >&4
19461 case "$make_set_make" in
19463 $sed 's/^X //' > testmake.mak << 'EOF'
19465 X @echo 'maketemp="$(MAKE)"'
19467 case "`$make -f testmake.mak 2>/dev/null`" in
19468 *maketemp=*) make_set_make='#' ;;
19469 *) make_set_make="MAKE=$make" ;;
19471 $rm -f testmake.mak
19474 case "$make_set_make" in
19475 '#') echo "Yup, it does.";;
19476 *) echo "Nope, it doesn't.";;
19479 : see what type is used for mode_t
19480 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
19481 set mode_t modetype int stdio.h sys/types.h
19484 : see if we need va_copy
19486 case "$i_stdarg" in
19489 #include <stdarg.h>
19491 #$i_stdlib I_STDLIB
19493 #include <stdlib.h>
19495 #include <signal.h>
19498 ivfprintf(FILE *f, const char *fmt, va_list *valp)
19500 return vfprintf(f, fmt, *valp);
19504 myvfprintf(FILE *f, const char *fmt, va_list val)
19506 return ivfprintf(f, fmt, &val);
19510 myprintf(char *fmt, ...)
19513 va_start(val, fmt);
19514 return myvfprintf(stdout, fmt, val);
19518 main(int ac, char **av)
19520 signal(SIGSEGV, exit);
19522 myprintf("%s%cs all right, then\n", "that", '\'');
19527 if eval $compile && $run ./try 2>&1 >/dev/null; then
19528 case "`$run ./try`" in
19529 "that's all right, then")
19535 yes) echo "It seems that you don't need va_copy()." >&4
19536 need_va_copy="$undef"
19538 *) echo "It seems that va_copy() or similar will be needed." >&4
19539 need_va_copy="$define"
19544 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
19548 : see what type is used for size_t
19549 rp="What is the type used for the length parameter for string functions?"
19550 set size_t sizetype 'unsigned int' stdio.h sys/types.h
19553 : check for type of arguments to gethostbyaddr.
19554 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
19555 case "$d_gethbyaddr" in
19559 Checking to see what type of arguments are accepted by gethostbyaddr().
19561 hdrs="$define sys/types.h
19562 $d_socket sys/socket.h
19563 $i_niin netinet/in.h
19565 $i_unistd unistd.h"
19566 : The first arg can 'char *' or 'void *'
19567 : The second arg is some of integral type
19568 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
19569 for yyy in size_t long int; do
19570 case "$netdb_host_type" in
19571 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
19572 if ./protochk "$try" $hdrs; then
19573 echo "Your system accepts $xxx for the first arg."
19574 echo "...and $yyy for the second arg."
19575 netdb_host_type="$xxx"
19576 netdb_hlen_type="$yyy"
19582 : In case none of those worked, prompt the user.
19583 case "$netdb_host_type" in
19584 '') rp='What is the type for the 1st argument to gethostbyaddr?'
19587 netdb_host_type=$ans
19588 rp='What is the type for the 2nd argument to gethostbyaddr?'
19591 netdb_hlen_type=$ans
19595 *) : no gethostbyaddr, so pick harmless defaults
19596 netdb_host_type='char *'
19597 netdb_hlen_type="$sizetype"
19600 # Remove the "const" if needed. -- but then we'll have a
19602 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
19605 : check for type of argument to gethostbyname.
19606 if test "X$netdb_name_type" = X ; then
19607 case "$d_gethbyname" in
19611 Checking to see what type of argument is accepted by gethostbyname().
19613 hdrs="$define sys/types.h
19614 $d_socket sys/socket.h
19615 $i_niin netinet/in.h
19617 $i_unistd unistd.h"
19618 for xxx in "const char *" "char *"; do
19619 case "$netdb_name_type" in
19620 '') try="extern struct hostent *gethostbyname($xxx);"
19621 if ./protochk "$try" $hdrs; then
19622 echo "Your system accepts $xxx."
19623 netdb_name_type="$xxx"
19628 : In case none of those worked, prompt the user.
19629 case "$netdb_name_type" in
19630 '') rp='What is the type for the 1st argument to gethostbyname?'
19633 netdb_name_type=$ans
19637 *) : no gethostbyname, so pick harmless default
19638 netdb_name_type='char *'
19643 : check for type of 1st argument to getnetbyaddr.
19644 if test "X$netdb_net_type" = X ; then
19645 case "$d_getnbyaddr" in
19649 Checking to see what type of 1st argument is accepted by getnetbyaddr().
19651 hdrs="$define sys/types.h
19652 $d_socket sys/socket.h
19653 $i_niin netinet/in.h
19655 $i_unistd unistd.h"
19656 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
19657 case "$netdb_net_type" in
19658 '') try="extern struct netent *getnetbyaddr($xxx, int);"
19659 if ./protochk "$try" $hdrs; then
19660 echo "Your system accepts $xxx."
19661 netdb_net_type="$xxx"
19666 : In case none of those worked, prompt the user.
19667 case "$netdb_net_type" in
19668 '') rp='What is the type for the 1st argument to getnetbyaddr?'
19671 netdb_net_type=$ans
19675 *) : no getnetbyaddr, so pick harmless default
19676 netdb_net_type='long'
19680 : locate the preferred pager for this system
19687 [a-zA-Z]:/*) dflt=$pg;;
19691 [a-zA-Z]:/*) dflt=$more;;
19695 [a-zA-Z]:/*) dflt=$less;;
19698 '') dflt=/usr/ucb/more;;
19702 : Instruct ./getfile to trust the hinted or previous pager value,
19703 : even if it does not begin with a slash. For example, on os2,
19704 : pager might be cmd /c more. See comments in UU/getfile.
19709 rp='What pager is used on your system?'
19713 : see what type pids are declared as in the kernel
19714 rp="What is the type of process ids on this system?"
19715 set pid_t pidtype int stdio.h sys/types.h
19718 : see if ar generates random libraries by itself
19720 echo "Checking how to generate random libraries on your machine..." >&4
19721 echo 'int bar1() { return bar2(); }' > bar1.c
19722 echo 'int bar2() { return 2; }' > bar2.c
19724 #$i_stdlib I_STDLIB
19726 #include <stdlib.h>
19728 int main() { printf("%d\n", bar1()); exit(0); }
19730 $cc $ccflags -c bar1.c >/dev/null 2>&1
19731 $cc $ccflags -c bar2.c >/dev/null 2>&1
19732 $cc $ccflags -c foo.c >/dev/null 2>&1
19733 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
19734 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19735 $run ./foobar >/dev/null 2>&1; then
19736 echo "$ar appears to generate random libraries itself."
19738 if [ "X$ranlib" = "X" ]; then
19741 elif $ar s bar$_a >/dev/null 2>&1 &&
19742 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19743 $run ./foobar >/dev/null 2>&1; then
19744 echo "a table of contents needs to be added with '$ar s'."
19747 elif $ar ts bar$_a >/dev/null 2>&1 &&
19748 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
19749 $run ./foobar >/dev/null 2>&1; then
19750 echo "a table of contents needs to be added with '$ar ts'."
19757 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
19758 $test -f $ranlib || ranlib=''
19761 if $test -n "$ranlib"; then
19762 echo "your system has '$ranlib'; we'll use that."
19765 echo "your system doesn't seem to support random libraries"
19766 echo "so we'll use lorder and tsort to order the libraries."
19773 : check for type of arguments to select.
19774 case "$selecttype" in
19775 '') case "$d_select" in
19779 Checking to see what type of arguments are accepted by select().
19781 hdrs="$define sys/types.h
19782 $i_systime sys/time.h
19783 $i_sysselct sys/select.h
19784 $d_socket sys/socket.h"
19785 : The first arg can be int, unsigned, or size_t
19786 : The last arg may or may not be 'const'
19788 : void pointer has been seen but using that
19789 : breaks the selectminbits test
19790 for xxx in 'fd_set *' 'int *'; do
19791 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
19792 for tmo in 'struct timeval *' 'const struct timeval *'; do
19794 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
19795 if ./protochk "$try" $hdrs; then
19796 echo "Your system accepts $xxx."
19805 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
19806 case "$d_fd_set" in
19807 $define) dflt="fd_set *" ;;
19816 *) : no select, so pick a harmless default
19823 : check for the select 'width'
19824 case "$selectminbits" in
19825 '') safebits=`expr $ptrsize \* 8`
19826 case "$d_select" in
19830 Checking to see on how many bits at a time your select() operates...
19833 #include <sys/types.h>
19835 #$i_systime I_SYS_TIME
19836 #$i_systimek I_SYS_TIME_KERNEL
19841 # ifdef I_SYS_TIME_KERNEL
19844 # include <sys/time.h>
19845 # ifdef I_SYS_TIME_KERNEL
19849 #$i_sysselct I_SYS_SELECT
19850 #ifdef I_SYS_SELECT
19851 #include <sys/select.h>
19853 #$d_socket HAS_SOCKET
19855 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
19858 #$i_stdlib I_STDLIB
19860 #include <stdlib.h>
19863 #define S sizeof(*(b))
19865 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
19866 #define NBITS (NBYTES * 8)
19868 char *s = (char *)malloc(NBYTES);
19877 fp = fopen("try.c", "r");
19883 b = ($selecttype)s;
19884 for (i = 0; i < NBITS; i++)
19888 select(fd + 1, b, 0, 0, &t);
19889 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
19891 printf("%d\n", i + 1);
19896 if eval $compile_ok; then
19897 selectminbits=`$run ./try`
19898 case "$selectminbits" in
19900 Cannot figure out on how many bits at a time your select() operates.
19901 I'll play safe and guess it is $safebits bits.
19903 selectminbits=$safebits
19904 bits="$safebits bits"
19907 *) bits="$selectminbits bits" ;;
19909 echo "Your select() operates on $bits at a time." >&4
19911 rp='What is the minimum number of bits your select() operates on?'
19912 case "$byteorder" in
19913 12345678) dflt=64 ;;
19919 selectminbits="$val"
19923 *) : no select, so pick a harmless default
19924 selectminbits=$safebits
19930 : Trace out the files included by signal.h, then look for SIGxxx names.
19931 : Remove SIGARRAYSIZE used by HPUX.
19932 : Remove SIGSTKSIZE used by Linux.
19933 : Remove SIGSTKSZ used by Posix.
19934 : Remove SIGTYP void lines used by OS2.
19935 : Some cpps, like os390, dont give the file name anywhere
19936 if [ "X$fieldn" = X ]; then
19937 : Just make some guesses. We check them later.
19938 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
19940 xxx=`echo '#include <signal.h>' |
19941 $cppstdin $cppminus $cppflags 2>/dev/null |
19942 $grep '^[ ]*#.*include' |
19943 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
19945 : Check this list of files to be sure we have parsed the cpp output ok.
19946 : This will also avoid potentially non-existent files, such
19949 for xx in $xxx /dev/null ; do
19950 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
19952 : If we have found no files, at least try signal.h
19953 case "$xxxfiles" in
19954 '') xxxfiles=`./findhdr signal.h` ;;
19957 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
19958 print substr($2, 4, 20)
19960 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
19961 print substr($3, 4, 20)
19963 : Append some common names just in case the awk scan failed.
19964 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
19965 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
19966 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
19967 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
19968 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
19970 : generate a few handy files for later
19971 $cat > signal.c <<EOCP
19972 #include <sys/types.h>
19973 #include <signal.h>
19974 #$i_stdlib I_STDLIB
19976 #include <stdlib.h>
19981 /* Strange style to avoid deeply-nested #if/#else/#endif */
19984 # define NSIG (_NSIG)
19990 # define NSIG (SIGMAX+1)
19996 # define NSIG (SIG_MAX+1)
20002 # define NSIG (_SIG_MAX+1)
20008 # define NSIG (MAXSIG+1)
20014 # define NSIG (MAX_SIG+1)
20019 # ifdef SIGARRAYSIZE
20020 # define NSIG SIGARRAYSIZE /* Assume ary[SIGARRAYSIZE] */
20026 # define NSIG (_sys_nsig) /* Solaris 2.5 */
20030 /* Default to some arbitrary number that's big enough to get most
20031 of the common signals.
20037 printf("NSIG %d\n", NSIG);
20043 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
20045 printf "#ifdef SIG"; printf $1; printf "\n"
20046 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
20047 printf $1; printf ");\n"
20051 printf "#endif /* JUST_NSIG */\n";
20052 printf "exit(0);\n}\n";
20055 $cat >signal.awk <<'EOP'
20056 BEGIN { ndups = 0 }
20057 $1 ~ /^NSIG$/ { nsig = $2 }
20058 ($1 !~ /^NSIG$/) && (NF == 2) && ($2 ~ /^[0-9][0-9]*$/) {
20059 if ($2 > maxsig) { maxsig = $2 }
20060 if (sig_name[$2]) {
20061 dup_name[ndups] = $1
20062 dup_num[ndups] = $2
20074 printf("NSIG %d\n", nsig);
20075 for (n = 1; n < nsig; n++) {
20077 printf("%s %d\n", sig_name[n], sig_num[n])
20080 printf("NUM%d %d\n", n, n)
20083 for (n = 0; n < ndups; n++) {
20084 printf("%s %d\n", dup_name[n], dup_num[n])
20088 $cat >signal_cmd <<EOS
20090 if $test -s signal.lst; then
20091 echo "Using your existing signal.lst file"
20096 $cat >>signal_cmd <<'EOS'
20099 if eval $compile_ok; then
20100 $run ./signal$_exe | ($sort -n -k 2 2>/dev/null || $sort -n +1) | $uniq | $awk -f signal.awk >signal.lst
20102 echo "(I can't seem be able to compile the whole test program)" >&4
20103 echo "(I'll try it in little pieces.)" >&4
20104 set signal -DJUST_NSIG
20105 if eval $compile_ok; then
20106 $run ./signal$_exe > signal.nsg
20109 echo "I can't seem to figure out how many signals you have." >&4
20110 echo "Guessing 50." >&4
20111 echo 'NSIG 50' > signal.nsg
20113 : Now look at all the signal names, one at a time.
20114 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
20115 $cat > signal.c <<EOCP
20116 #include <sys/types.h>
20117 #include <signal.h>
20120 printf("$xx %d\n", SIG${xx});
20125 if eval $compile; then
20126 echo "SIG${xx} found."
20127 $run ./signal$_exe >> signal.ls1
20129 echo "SIG${xx} NOT found."
20132 if $test -s signal.ls1; then
20133 $cat signal.nsg signal.ls1 |
20134 $sort -n | $uniq | $awk -f signal.awk >signal.lst
20138 if $test -s signal.lst; then
20141 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
20142 echo 'kill -l' >signal
20143 set X `csh -f <signal`
20147 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
20149 echo $@ | $tr ' ' $trnl | \
20150 $awk '{ printf "%s %d\n", $1, ++s; }
20151 END { printf "NSIG %d\n", ++s }' >signal.lst
20153 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
20155 chmod a+x signal_cmd
20156 $eunicefix signal_cmd
20158 : generate list of signal names
20160 case "$sig_name_init" in
20162 *) case "$sig_num_init" in
20163 ''|*,*) doinit=yes ;;
20168 echo "Generating a list of signal names and numbers..." >&4
20170 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
20171 sig_name=`$awk 'BEGIN { printf "ZERO " }
20172 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
20173 sig_num=`$awk 'BEGIN { printf "0 " }
20174 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
20175 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
20176 !/^NSIG/ { printf "\"%s\", ", $1 }
20177 END { printf "0\n" }' signal.lst`
20178 sig_num_init=`$awk 'BEGIN { printf "0, " }
20179 !/^NSIG/ { printf "%d, ", $2}
20180 END { printf "0\n"}' signal.lst`
20183 echo "The following $sig_count signals are available:"
20185 echo $sig_name | $awk \
20186 'BEGIN { linelen = 0 }
20188 for (i = 1; i <= NF; i++) {
20189 name = "SIG" $i " "
20190 linelen = linelen + length(name)
20191 if (linelen > 70) {
20193 linelen = length(name)
20199 sig_size=`echo $sig_name | awk '{print NF}'`
20200 $rm -f signal signal.c signal.awk signal.lst signal_cmd
20203 case "$sizetype" in
20204 *_t) zzz="$sizetype" ;;
20205 *) zzz="filesize" ;;
20207 echo "Checking the size of $zzz..." >&4
20209 #include <sys/types.h>
20211 #$i_stdlib I_STDLIB
20213 #include <stdlib.h>
20216 printf("%d\n", (int)sizeof($sizetype));
20221 if eval $compile_ok; then
20225 echo "(I can't execute the test program--guessing $sizesize.)" >&4
20228 echo "Your $zzz size is $sizesize bytes."
20233 echo "(I can't compile the test program--guessing $sizesize.)" >&4
20237 : check for socklen_t
20239 echo "Checking to see if you have socklen_t..." >&4
20241 #include <sys/types.h>
20242 #$d_socket HAS_SOCKET
20244 #include <sys/socket.h>
20246 int main() { socklen_t x = 16; }
20249 if eval $compile; then
20251 echo "You have socklen_t."
20254 echo "You do not have socklen_t."
20255 case "$sizetype" in
20256 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
20263 : see if this is a socks.h system
20264 set socks.h i_socks
20267 : check for type of the size argument to socket calls
20268 case "$d_socket" in
20272 Checking to see what type is the last argument of accept().
20275 case "$d_socklen_t" in
20276 "$define") yyy="$yyy socklen_t"
20278 yyy="$yyy $sizetype int long unsigned"
20279 for xxx in $yyy; do
20280 case "$socksizetype" in
20281 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
20282 case "$usesocks" in
20284 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
20285 echo "Your system accepts '$xxx *' for the last argument of accept()."
20286 socksizetype="$xxx"
20289 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
20290 echo "Your system accepts '$xxx *' for the last argument of accept()."
20291 socksizetype="$xxx"
20298 : In case none of those worked, prompt the user.
20299 case "$socksizetype" in
20300 '') rp='What is the type for socket address structure sizes?'
20307 *) : no sockets, so pick relatively harmless default
20312 : see what type is used for signed size_t
20313 set ssize_t ssizetype int stdio.h sys/types.h
20318 #$i_stdlib I_STDLIB
20320 #include <stdlib.h>
20322 #include <sys/types.h>
20323 #define Size_t $sizetype
20324 #define SSize_t $dflt
20327 if (sizeof(Size_t) == sizeof(SSize_t))
20329 else if (sizeof(Size_t) == sizeof(int))
20338 if eval $compile_ok && $run ./try > /dev/null; then
20339 ssizetype=`$run ./try`
20340 echo "I'll be using $ssizetype for functions returning a byte count." >&4
20343 Help! I can't compile and run the ssize_t test program: please enlighten me!
20344 (This is probably a misconfiguration in your system or libraries, and
20345 you really ought to fix it. Still, I'll try anyway.)
20347 I need a type that is the same size as $sizetype, but is guaranteed to
20348 be signed. Common values are ssize_t, int and long.
20351 rp="What signed type is the same size as $sizetype?"
20357 : see what type of char stdio uses.
20359 echo '#include <stdio.h>' > stdio.c
20360 $cppstdin $cppminus < stdio.c > stdioh
20361 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
20362 echo "Your stdio uses unsigned chars." >&4
20363 stdchar="unsigned char"
20365 echo "Your stdio uses signed chars." >&4
20368 $rm -f stdio.* stdioh
20370 : see what type uids are declared as in the kernel
20372 echo "Looking for the type for user ids returned by getuid()."
20373 set uid_t uidtype xxx stdio.h sys/types.h
20377 xxx=`./findhdr sys/user.h`
20378 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
20380 unsigned) dflt="$1 $2" ;;
20384 *) dflt="$uidtype";;
20387 uid_t) echo "uid_t found." ;;
20388 *) rp="What is the type for user ids returned by getuid()?"
20396 *_t) zzz="$uidtype" ;;
20399 echo "Checking the size of $zzz..." >&4
20401 #include <sys/types.h>
20403 #$i_stdlib I_STDLIB
20405 #include <stdlib.h>
20408 printf("%d\n", (int)sizeof($uidtype));
20413 if eval $compile_ok; then
20417 echo "(I can't execute the test program--guessing $uidsize.)" >&4
20420 echo "Your $zzz is $uidsize bytes long."
20425 echo "(I can't compile the test program--guessing $uidsize.)" >&4
20430 *_t) zzz="$uidtype" ;;
20433 echo "Checking the sign of $zzz..." >&4
20435 #include <sys/types.h>
20446 if eval $compile; then
20450 echo "(I can't execute the test program--guessing unsigned.)" >&4
20454 1) echo "Your $zzz is unsigned." ;;
20455 -1) echo "Your $zzz is signed." ;;
20461 echo "(I can't compile the test program--guessing unsigned.)" >&4
20467 $echo "Checking the format string to be used for uids..." >&4
20470 -1) if $test X"$uidsize" = X"$ivsize"; then
20471 uidformat="$ivdformat"
20473 if $test X"$uidsize" = X"$longsize"; then
20476 if $test X"$uidsize" = X"$intsize"; then
20479 if $test X"$uidsize" = X"$shortsize"; then
20486 *) if $test X"$uidsize" = X"$uvsize"; then
20487 uidformat="$uvuformat"
20489 if $test X"$uidsize" = X"$longsize"; then
20492 if $test X"$uidsize" = X"$intsize"; then
20495 if $test X"$uidsize" = X"$shortsize"; then
20505 case "$usesitecustomize" in
20506 $define|true|[Yy]*)
20507 usesitecustomize="$define"
20510 usesitecustomize="$undef"
20514 : determine compiler compiler
20523 if $test -f "$byacc$_exe"; then
20525 comp="byacc or $comp"
20527 if $test -f "$bison$_exe"; then
20528 comp="$comp or bison -y"
20530 rp="Which compiler compiler ($comp) shall I use?"
20539 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
20545 : see if this is a fp.h system
20549 : see if this is a fp_class.h system
20550 set fp_class.h i_fp_class
20553 : see if gdbm.h is available
20558 : see if gdbm_open exists
20559 set gdbm_open d_gdbm_open
20561 case "$d_gdbm_open" in
20564 echo "We won't be including <gdbm.h>"
20573 : see if this is a ieeefp.h system
20574 case "$i_ieeefp" in
20575 '' ) set ieeefp.h i_ieeefp
20580 : see if this is a libutil.h system
20581 set libutil.h i_libutil
20584 : see if mach cthreads are available
20585 if test "X$usethreads" = "X$define"; then
20586 set mach/cthreads.h i_machcthr
20589 i_machcthr="$undef"
20594 : see if this is a mntent.h system
20595 set mntent.h i_mntent
20598 : see if ndbm.h is available
20604 # Some Linux distributions such as RedHat 7.1 put the
20605 # ndbm.h header in /usr/include/gdbm/ndbm.h.
20606 if $test -f /usr/include/gdbm/ndbm.h; then
20607 echo '<gdbm/ndbm.h> found.'
20608 ccflags="$ccflags -I/usr/include/gdbm"
20609 cppflags="$cppflags -I/usr/include/gdbm"
20617 : see if dbm_open exists
20618 set dbm_open d_dbm_open
20620 case "$d_dbm_open" in
20623 echo "We won't be including <ndbm.h>"
20632 : see if net/errno.h is available
20634 set net/errno.h val
20637 : Unfortunately, it causes problems on some systems. Arrgh.
20640 cat > try.c <<'EOM'
20643 #include <net/errno.h>
20649 if $cc $ccflags -c try.c >/dev/null 2>&1; then
20650 echo "We'll be including <net/errno.h>." >&4
20652 echo "We won't be including <net/errno.h>." >&4
20661 : see if netinet/tcp.h is available
20662 set netinet/tcp.h i_netinettcp
20665 : see if this is a poll.h system
20669 : see if this is a prot.h system
20674 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
20675 $cat <<'EOSH' > Cppsym.know
20676 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
20677 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
20678 alliant alpha am29000 AM29000 AMD64 amd64 amiga AMIGAOS AMIX
20679 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
20680 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
20681 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
20682 bull c cadmus clipper CMU COFF COMPILER_VERSION
20683 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
20684 CYGWIN DECC DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
20685 Dynix DynixPTX ELF encore EPI EXTENSIONS FAVOR_BSD
20686 FILE_OFFSET_BITS FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
20688 GNU_SOURCE GNUC GNUC_MINOR GNU_LIBRARY GO32 gould GOULD_PN
20689 H3050R H3050RX hbullx20 hcx host_mips
20690 hp200 hp300 hp700 HP700 hp800 hp9000
20691 hp9000s200 hp9000s300 hp9000s400 hp9000s500
20692 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
20693 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
20694 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
20695 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
20696 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
20697 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
20698 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
20699 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
20700 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
20701 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
20702 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
20703 MATH_HAS_NO_SIDE_EFFECTS
20704 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
20705 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
20706 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
20707 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
20708 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
20709 NetBSD news1500 news1700 news1800 news1900 news3700
20710 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
20711 ns32016 ns32332 ns32k nsc32000
20712 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
20713 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
20714 pc532 pdp11 PGC PIC plexus PORTAR posix
20715 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
20716 POSIX_C_SOURCE POSIX_SOURCE POWER
20717 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
20718 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
20719 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
20720 sony sony_news sonyrisc sparc sparclite spectrum
20721 stardent stdc STDC_EXT stratos sun sun3 sun386
20722 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
20723 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
20724 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
20725 sysV68 sysV88 Tek4132 Tek4300 titan
20726 TM3200 TM5400 TM5600
20727 tower tower32 tower32_200 tower32_600 tower32_700
20728 tower32_800 tower32_850 tss
20729 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
20730 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
20731 unix UNIX95 UNIX99 unixpc unos
20732 USE_BSD USE_FILE_OFFSET64 USE_GNU USE_ISOC9X USE_LARGEFILE USE_LARGEFILE64
20733 USE_MISC USE_POSIX USE_POSIX199309 USE_POSIX199506 USE_POSIX2
20734 USE_REENTRANT USE_SVID USE_UNIX98 USE_XOPEN USE_XOPEN_EXTENDED
20736 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms x86_64 xenix Xenix286
20737 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
20738 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
20741 # Maybe put other stuff here too.
20742 cat <<EOSH >>Cppsym.know
20745 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
20746 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
20747 $cat Cppsym.know > Cppsym.c
20748 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
20749 $rm -f Cppsym.a Cppsym.b Cppsym.c
20750 cat <<EOSH > Cppsym
20752 if $test \$# -gt 0; then
20753 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
20754 if $test -s Cppsym.got; then
20761 $tr " " "$trnl" | ./Cppsym.try
20767 cat <<EOSH > Cppsym.try
20769 cat <<'EOCP' > try.c
20772 #define STRINGIFY(a) "a"
20774 #if cpp_stuff == 42
20775 #define StGiFy(a) #a
20776 #define STRINGIFY(a) StGiFy(a)
20778 #if $cpp_stuff != 1 && $cpp_stuff != 42
20779 # include "Bletch: How does this C preprocessor stringify macros?"
20785 cat <<'EOSH' >> Cppsym.try
20787 printf "#ifdef %s\nprintf(\"%s=%%s\\n\", STRINGIFY(%s));\n#endif\n", $1, $1, $1
20788 printf "#ifdef _%s\nprintf(\"_%s=%%s\\n\", STRINGIFY(_%s));\n#endif\n", $1, $1, $1
20789 printf "#ifdef __%s\nprintf(\"__%s=%%s\\n\", STRINGIFY(__%s));\n#endif\n", $1, $1, $1
20790 printf "#ifdef __%s__\nprintf(\"__%s__=%%s\\n\", STRINGIFY(__%s__));\n#endif\n", $1, $1, $1
20792 echo 'return 0;}' >> try.c
20794 cat <<EOSH >> Cppsym.try
20796 case "$osname-$gccversion" in
20797 irix-) ccflags="\$ccflags -woff 1178" ;;
20798 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
20800 $cc -o try -Dcpp_stuff=$cpp_stuff $optimize \$ccflags $ldflags try.c $libs && $run ./try | $sed 's/ /\\\\ /g'
20802 chmod +x Cppsym.try
20803 $eunicefix Cppsym.try
20804 ./Cppsym < Cppsym.know > Cppsym.true
20805 : Add in any linux cpp "predefined macros":
20806 case "$osname::$gccversion" in
20809 rm -f $tHdrH'.h' $tHdrH
20811 if cpp -dM $tHdrH'.h' > $tHdrH'_cppsym.h' && [ -s $tHdrH'_cppsym.h' ]; then
20812 sed 's/#define[\ \ ]*//;s/[\ \ ].*$//' <$tHdrH'_cppsym.h' >$tHdrH'_cppsym.real'
20813 if [ -s $tHdrH'_cppsym.real' ]; then
20814 cat $tHdrH'_cppsym.real' Cppsym.know | sort | uniq | ./Cppsym | sort | uniq > Cppsym.true
20817 rm -f $tHdrH'.h' $tHdrH'_cppsym.h' $tHdrH'_cppsym.real'
20820 : now check the C compiler for additional symbols
20821 postprocess_cc_v=''
20823 aix) postprocess_cc_v="|$tr , ' '" ;;
20830 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
20833 -D*) echo "\$i" | $sed 's/^-D//';;
20834 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A//' | $sed 's/\(.*\)(\(.*\))/\1=\2/';;
20839 postprocess_cc_v=''
20842 ./ccsym > ccsym1.raw
20843 if $test -s ccsym1.raw; then
20844 $sort ccsym1.raw | $uniq >ccsym.raw
20846 mv ccsym1.raw ccsym.raw
20849 $awk '/\=/ { print $0; next }
20850 { print $0"=1" }' ccsym.raw >ccsym.list
20851 $comm -13 Cppsym.true ccsym.list >ccsym.own
20852 $comm -12 Cppsym.true ccsym.list >ccsym.com
20853 $comm -23 Cppsym.true ccsym.list >ccsym.cpp
20855 if $test -z ccsym.raw; then
20856 echo "Your C compiler doesn't seem to define any symbols!" >&4
20858 echo "However, your C preprocessor defines the following symbols:"
20861 cppsymbols=`$cat Cppsym.true`
20862 cppsymbols=`echo $cppsymbols`
20863 cppccsymbols="$cppsymbols"
20865 if $test -s ccsym.com; then
20866 echo "Your C compiler and pre-processor define these symbols:"
20867 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
20870 cppccsymbols=`$cat ccsym.com`
20871 cppccsymbols=`echo $cppccsymbols`
20872 $test "$silent" || sleep 1
20874 if $test -s ccsym.cpp; then
20875 $test "$also" && echo " "
20876 echo "Your C pre-processor ${also}defines the following symbols:"
20877 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
20879 cppsymbols=`$cat ccsym.cpp`
20880 cppsymbols=`echo $cppsymbols`
20881 $test "$silent" || sleep 1
20883 if $test -s ccsym.own; then
20884 $test "$also" && echo " "
20885 echo "Your C compiler ${also}defines the following cpp symbols:"
20886 $sed -e 's/\(..*\)=1/\1/' ccsym.own
20887 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
20888 ccsymbols=`$cat ccsym.own`
20889 ccsymbols=`echo $ccsymbols`
20890 $test "$silent" || sleep 1
20894 : see if this is a termio system
20898 if $test `./findhdr termios.h`; then
20899 set tcsetattr i_termios
20905 "$define") echo "You have POSIX termios.h... good!" >&4;;
20906 *) if ./Cppsym pyr; then
20907 case "`/bin/universe`" in
20908 ucb) if $test `./findhdr sgtty.h`; then
20910 echo "<sgtty.h> found." >&4
20912 echo "System is pyramid with BSD universe."
20913 echo "<sgtty.h> not found--you could have problems." >&4
20915 *) if $test `./findhdr termio.h`; then
20917 echo "<termio.h> found." >&4
20919 echo "System is pyramid with USG universe."
20920 echo "<termio.h> not found--you could have problems." >&4
20924 if $test `./findhdr termio.h`; then
20925 echo "<termio.h> found." >&4
20927 elif $test `./findhdr sgtty.h`; then
20928 echo "<sgtty.h> found." >&4
20931 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
20934 if $test `./findhdr sgtty.h`; then
20935 echo "<sgtty.h> found." >&4
20937 elif $test `./findhdr termio.h`; then
20938 echo "<termio.h> found." >&4
20941 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
20945 set i_termio; eval $setvar
20946 val=$val2; set i_sgtty; eval $setvar
20947 val=$val3; set i_termios; eval $setvar
20949 : see if stddef is available
20950 set stddef.h i_stddef
20953 : see if sys/access.h is available
20954 set sys/access.h i_sysaccess
20957 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
20958 set sys/filio.h i_sysfilio
20961 if $test `./findhdr sys/ioctl.h`; then
20963 echo '<sys/ioctl.h> found.' >&4
20966 if $test $i_sysfilio = "$define"; then
20967 echo '<sys/ioctl.h> NOT found.' >&4
20969 $test $i_sgtty = "$define" && xxx="sgtty.h"
20970 $test $i_termio = "$define" && xxx="termio.h"
20971 $test $i_termios = "$define" && xxx="termios.h"
20972 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
20978 : see if socket ioctl defs are in sys/sockio.h
20980 xxx=`./findhdr sys/sockio.h`
20981 if $test "$xxx"; then
20982 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
20984 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
20987 echo "No socket ioctls found in <sys/sockio.h>." >&4
20992 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
20999 : see if this is a syslog.h system
21000 set syslog.h i_syslog
21004 : see if this is a sys/mode.h system
21005 set sys/mode.h i_sysmode
21008 : see if sys/resource.h has to be included
21009 set sys/resource.h i_sysresrc
21012 : see if sys/security.h is available
21013 set sys/security.h i_syssecrt
21016 : see if this is a sys/statvfs.h system
21017 set sys/statvfs.h i_sysstatvfs
21020 : see if this is a sys/un.h system
21021 set sys/un.h i_sysun
21025 : see if this is a sys/utsname.h system
21026 set sys/utsname.h i_sysutsname
21029 : see if this is a syswait system
21030 set sys/wait.h i_syswait
21033 : see if this is a ustat.h system
21034 set ustat.h i_ustat
21037 : see if this is an utime system
21038 set utime.h i_utime
21041 : see if this is a values.h system
21042 set values.h i_values
21045 : see if this is a vfork system
21048 set vfork.h i_vfork
21057 echo "Looking for extensions..." >&4
21058 : If we are using the old config.sh, known_extensions may contain
21059 : old or inaccurate or duplicate values.
21060 known_extensions=''
21061 nonxs_extensions=''
21062 : We do not use find because it might not be available.
21063 : We do not just use MANIFEST because the user may have dropped
21064 : some additional extensions into the source tree and expect them
21067 : Function to recursively find available extensions, ignoring DynaLoader
21068 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
21072 DynaLoader|dynaload) ;;
21074 if $test -f $xxx/$xxx.xs -o -f $xxx/$xxx.c; then
21075 known_extensions="$known_extensions $1$xxx";
21076 elif $test -f $xxx/Makefile.PL; then
21077 nonxs_extensions="$nonxs_extensions $1$xxx";
21079 if $test -d $xxx -a $# -lt 10; then
21082 eval $find_extensions;
21094 eval $find_extensions
21095 # Special case: Add in threads/shared since it is not picked up by the
21096 # recursive find above (and adding in general recursive finding breaks
21097 # SDBM_File/sdbm). A.D. 10/25/2001.
21098 known_extensions="$known_extensions threads/shared"
21099 set X $known_extensions
21101 known_extensions="$*"
21102 set X $nonxs_extensions
21104 nonxs_extensions="$*"
21107 : Now see which are supported on this system.
21109 for xxx in $known_extensions ; do
21113 $define) avail_ext="$avail_ext $xxx" ;;
21116 GDBM_File|gdbm_fil)
21118 $define) avail_ext="$avail_ext $xxx" ;;
21121 I18N/Langinfo|i18n_lan)
21122 case "$i_langinfo$d_nl_langinfo" in
21123 $define$define) avail_ext="$avail_ext $xxx" ;;
21127 : XXX Do we need a useipcsysv variable here
21128 case "${d_msg}${d_sem}${d_shm}" in
21129 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
21132 NDBM_File|ndbm_fil)
21135 case "$osname-$use64bitint" in
21138 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
21141 *) avail_ext="$avail_ext $xxx" ;;
21146 ODBM_File|odbm_fil)
21147 case "${i_dbm}${i_rpcsvcdbm}" in
21149 case "$d_cplusplus" in
21150 define) ;; # delete as a function name will not work
21151 *) case "$osname-$use64bitint" in
21154 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
21157 *) avail_ext="$avail_ext $xxx" ;;
21165 case "$useopcode" in
21166 true|define|y) avail_ext="$avail_ext $xxx" ;;
21170 case "$useposix" in
21171 true|define|y) avail_ext="$avail_ext $xxx" ;;
21175 case "$d_socket" in
21178 beos) ;; # not unless BONE
21179 *) avail_ext="$avail_ext $xxx" ;;
21184 Sys/Syslog|sys/syslog)
21185 : XXX syslog requires socket
21186 case "$d_socket" in
21187 true|$define|y) avail_ext="$avail_ext $xxx" ;;
21191 case "$usethreads" in
21193 case "$use5005threads" in
21194 $define|true|[yY]*) avail_ext="$avail_ext $xxx" ;;
21198 threads|threads/shared)
21199 # threads and threads::shared are special cases.
21200 # To stop people from asking "Perl 5.8.0 was supposed
21201 # to have this new fancy threads implementation but my
21202 # perl doesn't have it" and from people trying to
21203 # (re)install the threads module using CPAN.pm and
21204 # CPAN.pm then offering to reinstall Perl 5.8.0,
21205 # the threads.pm and threads/shared.pm will always be
21206 # there, croaking informatively ("you need to rebuild
21207 # all of Perl with threads, sorry") when threads haven't
21208 # been compiled in.
21210 avail_ext="$avail_ext $xxx"
21214 cygwin) avail_ext="$avail_ext $xxx" ;;
21217 XS/APItest|xs/apitest)
21218 # This is just for testing. Skip it unless we have dynamic loading.
21221 $define) avail_ext="$avail_ext $xxx" ;;
21224 XS/Typemap|xs/typemap)
21225 # This is just for testing. Skip it unless we have dynamic loading.
21227 $define) avail_ext="$avail_ext $xxx" ;;
21230 *) avail_ext="$avail_ext $xxx"
21239 case "$onlyextensions" in
21241 *) keepextensions=''
21242 echo "You have requested that only certains extensions be included..." >&4
21243 for i in $onlyextensions; do
21244 case " $avail_ext " in
21246 echo "Keeping extension $i."
21247 keepextensions="$keepextensions $i"
21249 *) echo "Ignoring extension $i." ;;
21252 avail_ext="$keepextensions"
21256 case "$noextensions" in
21258 *) keepextensions=''
21259 echo "You have requested that certain extensions be ignored..." >&4
21260 for i in $avail_ext; do
21261 case " $noextensions " in
21262 *" $i "*) echo "Ignoring extension $i." ;;
21263 *) echo "Keeping extension $i.";
21264 keepextensions="$keepextensions $i"
21268 avail_ext="$keepextensions"
21272 : Now see which nonxs extensions are supported on this system.
21273 : For now assume all are.
21275 for xxx in $nonxs_extensions ; do
21277 *) nonxs_ext="$nonxs_ext $xxx"
21289 A number of extensions are supplied with $package. You may choose to
21290 compile these extensions for dynamic loading (the default), compile
21291 them into the $package executable (static loading), or not include
21292 them at all. Answer "none" to include no extensions.
21293 Note that DynaLoader is always built and need not be mentioned here.
21296 case "$dynamic_ext" in
21298 : Exclude those listed in static_ext
21300 for xxx in $avail_ext; do
21301 case " $static_ext " in
21303 *) dflt="$dflt $xxx" ;;
21310 *) dflt="$dynamic_ext"
21311 # Perhaps we are reusing an old out-of-date config.sh.
21314 if test X"$dynamic_ext" != X"$avail_ext"; then
21316 NOTICE: Your previous config.sh list may be incorrect.
21317 The extensions now available to you are
21319 but the default list from your previous config.sh is
21331 rp="What extensions do you wish to load dynamically?"
21334 none) dynamic_ext=' ' ;;
21335 *) dynamic_ext="$ans" ;;
21338 case "$static_ext" in
21340 : Exclude those already listed in dynamic linking
21342 for xxx in $avail_ext; do
21343 case " $dynamic_ext " in
21345 *) dflt="$dflt $xxx" ;;
21352 *) dflt="$static_ext"
21359 rp="What extensions do you wish to load statically?"
21362 none) static_ext=' ' ;;
21363 *) static_ext="$ans" ;;
21368 A number of extensions are supplied with $package. Answer "none"
21369 to include no extensions.
21370 Note that DynaLoader is always built and need not be mentioned here.
21373 case "$static_ext" in
21374 '') dflt="$avail_ext" ;;
21375 *) dflt="$static_ext"
21376 # Perhaps we are reusing an old out-of-date config.sh.
21379 if test X"$static_ext" != X"$avail_ext"; then
21381 NOTICE: Your previous config.sh list may be incorrect.
21382 The extensions now available to you are
21384 but the default list from your previous config.sh is
21393 : Exclude those that are not xs extensions
21397 rp="What extensions do you wish to include?"
21400 none) static_ext=' ' ;;
21401 *) static_ext="$ans" ;;
21406 # Encode is a special case. If we are building Encode as a static
21407 # extension, we need to explicitly list its subextensions as well.
21408 # For other nested extensions, this is handled automatically by
21409 # the appropriate Makefile.PL.
21410 case " $static_ext " in
21411 *" Encode "*) # Add the subextensions of Encode
21413 for xxx in `ls Encode/*/Makefile.PL|awk -F/ '{print $2}'`; do
21414 static_ext="$static_ext Encode/$xxx"
21420 set X $dynamic_ext $static_ext $nonxs_ext
21424 # Sanity check: We require an extension suitable for use with
21425 # AnyDBM_File, as well as Fcntl and IO. (Failure to have these
21426 # should show up as failures in the test suite, but it's helpful to
21427 # catch them now.) The 'extensions' list is normally sorted
21428 # alphabetically, so we need to accept either
21429 # DB_File ... Fcntl ... IO ....
21430 # or something like
21431 # Fcntl ... NDBM_File ... IO ....
21432 case " $extensions" in
21433 *"_File "*" Fcntl "*" IO "*) ;; # DB_File
21434 *" Fcntl "*"_File "*" IO "*) ;; # GDBM_File
21435 *" Fcntl "*" IO "*"_File "*) ;; # NDBM_File
21436 *) echo "WARNING: Extensions DB_File or *DBM_File, Fcntl, and IO not configured." >&4
21437 echo "WARNING: The Perl you are building will be quite crippled." >& 4
21441 : Remove libraries needed only for extensions
21442 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
21443 : The exception is SunOS 4.x, which needs them.
21444 case "${osname}X${osvers}" in
21448 *) case "$usedl" in
21449 $define|true|[yY]*)
21450 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
21454 *) perllibs="$libs"
21460 : Remove build directory name from cppstdin so it can be used from
21461 : either the present location or the final installed location.
21463 : Get out of the UU directory to get correct path name.
21465 case "$cppstdin" in
21467 echo "Stripping down cppstdin path name"
21473 : end of configuration questions
21475 echo "End of configuration questions."
21478 : back to where it started
21479 if test -d ../UU; then
21483 : configuration may be patched via a 'config.arch' file
21484 if $test -f config.arch; then
21485 echo "I see a config.arch file, loading it."
21489 : configuration may be patched via a 'config.over' file
21490 if $test -f config.over; then
21493 rp='I see a config.over file. Do you wish to load it?'
21496 n*) echo "OK, I'll ignore it.";;
21498 echo "Configuration override changes have been loaded."
21503 : in case they want portability, strip down executable paths
21504 case "$d_portable" in
21507 echo "Stripping down executable paths..." >&4
21508 for file in $loclist $trylist; do
21510 eval $file=`basename $temp`
21515 : create config.sh file
21517 echo "Creating config.sh..." >&4
21518 $spitshell <<EOT >config.sh
21521 # This file was produced by running the Configure script. It holds all the
21522 # definitions figured out by Configure. Should you modify one of these values,
21523 # do not forget to propagate your changes by running "Configure -der". You may
21524 # instead choose to run each of the .SH files by yourself, or "Configure -S".
21527 # Package name : $package
21528 # Source directory : $src
21529 # Configuration time: $cf_time
21530 # Configured by : $cf_by
21531 # Target system : $myuname
21541 Revision='$Revision'
21549 alignbytes='$alignbytes'
21550 ansi2knr='$ansi2knr'
21551 aphostname='$aphostname'
21552 api_revision='$api_revision'
21553 api_subversion='$api_subversion'
21554 api_version='$api_version'
21555 api_versionstring='$api_versionstring'
21558 archlibexp='$archlibexp'
21559 archname64='$archname64'
21560 archname='$archname'
21561 archobjs='$archobjs'
21562 asctime_r_proto='$asctime_r_proto'
21570 byteorder='$byteorder'
21572 castflags='$castflags'
21575 cccdlflags='$cccdlflags'
21576 ccdlflags='$ccdlflags'
21578 ccflags_uselargefiles='$ccflags_uselargefiles'
21580 ccsymbols='$ccsymbols'
21581 ccversion='$ccversion'
21583 cf_email='$cf_email'
21585 charsize='$charsize'
21589 clocktype='$clocktype'
21591 compress='$compress'
21592 contains='$contains'
21596 cpp_stuff='$cpp_stuff'
21597 cppccsymbols='$cppccsymbols'
21598 cppflags='$cppflags'
21600 cppminus='$cppminus'
21602 cppstdin='$cppstdin'
21603 cppsymbols='$cppsymbols'
21604 crypt_r_proto='$crypt_r_proto'
21605 cryptlib='$cryptlib'
21607 ctermid_r_proto='$ctermid_r_proto'
21608 ctime_r_proto='$ctime_r_proto'
21609 d_Gconvert='$d_Gconvert'
21610 d_PRIEUldbl='$d_PRIEUldbl'
21611 d_PRIFUldbl='$d_PRIFUldbl'
21612 d_PRIGUldbl='$d_PRIGUldbl'
21613 d_PRIXU64='$d_PRIXU64'
21614 d_PRId64='$d_PRId64'
21615 d_PRIeldbl='$d_PRIeldbl'
21616 d_PRIfldbl='$d_PRIfldbl'
21617 d_PRIgldbl='$d_PRIgldbl'
21618 d_PRIi64='$d_PRIi64'
21619 d_PRIo64='$d_PRIo64'
21620 d_PRIu64='$d_PRIu64'
21621 d_PRIx64='$d_PRIx64'
21622 d_SCNfldbl='$d_SCNfldbl'
21623 d__fwalk='$d__fwalk'
21624 d_access='$d_access'
21625 d_accessx='$d_accessx'
21628 d_archlib='$d_archlib'
21629 d_asctime_r='$d_asctime_r'
21632 d_attribute_format='$d_attribute_format'
21633 d_attribute_malloc='$d_attribute_malloc'
21634 d_attribute_nonnull='$d_attribute_nonnull'
21635 d_attribute_noreturn='$d_attribute_noreturn'
21636 d_attribute_pure='$d_attribute_pure'
21637 d_attribute_unused='$d_attribute_unused'
21638 d_attribute_warn_unused_result='$d_attribute_warn_unused_result'
21642 d_bsdgetpgrp='$d_bsdgetpgrp'
21643 d_bsdsetpgrp='$d_bsdsetpgrp'
21644 d_builtin_choose_expr='$d_builtin_choose_expr'
21645 d_builtin_expect='$d_builtin_expect'
21647 d_c99_variadic_macros='$d_c99_variadic_macros'
21648 d_casti32='$d_casti32'
21649 d_castneg='$d_castneg'
21650 d_charvspr='$d_charvspr'
21652 d_chroot='$d_chroot'
21653 d_chsize='$d_chsize'
21655 d_clearenv='$d_clearenv'
21656 d_closedir='$d_closedir'
21657 d_cmsghdr_s='$d_cmsghdr_s'
21659 d_copysignl='$d_copysignl'
21660 d_cplusplus='$d_cplusplus'
21662 d_crypt_r='$d_crypt_r'
21664 d_ctermid='$d_ctermid'
21665 d_ctermid_r='$d_ctermid_r'
21666 d_ctime_r='$d_ctime_r'
21667 d_cuserid='$d_cuserid'
21668 d_dbl_dig='$d_dbl_dig'
21669 d_dbminitproto='$d_dbminitproto'
21670 d_difftime='$d_difftime'
21671 d_dir_dd_fd='$d_dir_dd_fd'
21673 d_dirnamlen='$d_dirnamlen'
21674 d_dlerror='$d_dlerror'
21675 d_dlopen='$d_dlopen'
21676 d_dlsymun='$d_dlsymun'
21677 d_dosuid='$d_dosuid'
21678 d_drand48_r='$d_drand48_r'
21679 d_drand48proto='$d_drand48proto'
21681 d_eaccess='$d_eaccess'
21682 d_endgrent='$d_endgrent'
21683 d_endgrent_r='$d_endgrent_r'
21684 d_endhent='$d_endhent'
21685 d_endhostent_r='$d_endhostent_r'
21686 d_endnent='$d_endnent'
21687 d_endnetent_r='$d_endnetent_r'
21688 d_endpent='$d_endpent'
21689 d_endprotoent_r='$d_endprotoent_r'
21690 d_endpwent='$d_endpwent'
21691 d_endpwent_r='$d_endpwent_r'
21692 d_endsent='$d_endsent'
21693 d_endservent_r='$d_endservent_r'
21694 d_eofnblk='$d_eofnblk'
21695 d_eunice='$d_eunice'
21696 d_faststdio='$d_faststdio'
21697 d_fchdir='$d_fchdir'
21698 d_fchmod='$d_fchmod'
21699 d_fchown='$d_fchown'
21701 d_fcntl_can_lock='$d_fcntl_can_lock'
21702 d_fd_macros='$d_fd_macros'
21703 d_fd_set='$d_fd_set'
21704 d_fds_bits='$d_fds_bits'
21705 d_fgetpos='$d_fgetpos'
21706 d_finite='$d_finite'
21707 d_finitel='$d_finitel'
21708 d_flexfnam='$d_flexfnam'
21710 d_flockproto='$d_flockproto'
21712 d_fp_class='$d_fp_class'
21713 d_fpathconf='$d_fpathconf'
21714 d_fpclass='$d_fpclass'
21715 d_fpclassify='$d_fpclassify'
21716 d_fpclassl='$d_fpclassl'
21717 d_fpos64_t='$d_fpos64_t'
21718 d_frexpl='$d_frexpl'
21719 d_fs_data_s='$d_fs_data_s'
21720 d_fseeko='$d_fseeko'
21721 d_fsetpos='$d_fsetpos'
21722 d_fstatfs='$d_fstatfs'
21723 d_fstatvfs='$d_fstatvfs'
21725 d_ftello='$d_ftello'
21727 d_futimes='$d_futimes'
21728 d_getcwd='$d_getcwd'
21729 d_getespwnam='$d_getespwnam'
21730 d_getfsstat='$d_getfsstat'
21731 d_getgrent='$d_getgrent'
21732 d_getgrent_r='$d_getgrent_r'
21733 d_getgrgid_r='$d_getgrgid_r'
21734 d_getgrnam_r='$d_getgrnam_r'
21735 d_getgrps='$d_getgrps'
21736 d_gethbyaddr='$d_gethbyaddr'
21737 d_gethbyname='$d_gethbyname'
21738 d_gethent='$d_gethent'
21739 d_gethname='$d_gethname'
21740 d_gethostbyaddr_r='$d_gethostbyaddr_r'
21741 d_gethostbyname_r='$d_gethostbyname_r'
21742 d_gethostent_r='$d_gethostent_r'
21743 d_gethostprotos='$d_gethostprotos'
21744 d_getitimer='$d_getitimer'
21745 d_getlogin='$d_getlogin'
21746 d_getlogin_r='$d_getlogin_r'
21747 d_getmnt='$d_getmnt'
21748 d_getmntent='$d_getmntent'
21749 d_getnbyaddr='$d_getnbyaddr'
21750 d_getnbyname='$d_getnbyname'
21751 d_getnent='$d_getnent'
21752 d_getnetbyaddr_r='$d_getnetbyaddr_r'
21753 d_getnetbyname_r='$d_getnetbyname_r'
21754 d_getnetent_r='$d_getnetent_r'
21755 d_getnetprotos='$d_getnetprotos'
21756 d_getpagsz='$d_getpagsz'
21757 d_getpbyname='$d_getpbyname'
21758 d_getpbynumber='$d_getpbynumber'
21759 d_getpent='$d_getpent'
21760 d_getpgid='$d_getpgid'
21761 d_getpgrp2='$d_getpgrp2'
21762 d_getpgrp='$d_getpgrp'
21763 d_getppid='$d_getppid'
21764 d_getprior='$d_getprior'
21765 d_getprotobyname_r='$d_getprotobyname_r'
21766 d_getprotobynumber_r='$d_getprotobynumber_r'
21767 d_getprotoent_r='$d_getprotoent_r'
21768 d_getprotoprotos='$d_getprotoprotos'
21769 d_getprpwnam='$d_getprpwnam'
21770 d_getpwent='$d_getpwent'
21771 d_getpwent_r='$d_getpwent_r'
21772 d_getpwnam_r='$d_getpwnam_r'
21773 d_getpwuid_r='$d_getpwuid_r'
21774 d_getsbyname='$d_getsbyname'
21775 d_getsbyport='$d_getsbyport'
21776 d_getsent='$d_getsent'
21777 d_getservbyname_r='$d_getservbyname_r'
21778 d_getservbyport_r='$d_getservbyport_r'
21779 d_getservent_r='$d_getservent_r'
21780 d_getservprotos='$d_getservprotos'
21781 d_getspnam='$d_getspnam'
21782 d_getspnam_r='$d_getspnam_r'
21783 d_gettimeod='$d_gettimeod'
21784 d_gmtime_r='$d_gmtime_r'
21785 d_gnulibc='$d_gnulibc'
21786 d_grpasswd='$d_grpasswd'
21787 d_hasmntopt='$d_hasmntopt'
21789 d_ilogbl='$d_ilogbl'
21790 d_inc_version_list='$d_inc_version_list'
21792 d_inetaton='$d_inetaton'
21793 d_int64_t='$d_int64_t'
21794 d_isascii='$d_isascii'
21795 d_isfinite='$d_isfinite'
21798 d_isnanl='$d_isnanl'
21799 d_killpg='$d_killpg'
21800 d_lchown='$d_lchown'
21801 d_ldbl_dig='$d_ldbl_dig'
21802 d_libm_lib_version='$d_libm_lib_version'
21804 d_localtime_r='$d_localtime_r'
21805 d_localtime_r_needs_tzset='$d_localtime_r_needs_tzset'
21806 d_locconv='$d_locconv'
21808 d_longdbl='$d_longdbl'
21809 d_longlong='$d_longlong'
21810 d_lseekproto='$d_lseekproto'
21812 d_madvise='$d_madvise'
21813 d_malloc_good_size='$d_malloc_good_size'
21814 d_malloc_size='$d_malloc_size'
21816 d_mbstowcs='$d_mbstowcs'
21817 d_mbtowc='$d_mbtowc'
21818 d_memchr='$d_memchr'
21819 d_memcmp='$d_memcmp'
21820 d_memcpy='$d_memcpy'
21821 d_memmove='$d_memmove'
21822 d_memset='$d_memset'
21824 d_mkdtemp='$d_mkdtemp'
21825 d_mkfifo='$d_mkfifo'
21826 d_mkstemp='$d_mkstemp'
21827 d_mkstemps='$d_mkstemps'
21828 d_mktime='$d_mktime'
21831 d_modfl_pow32_bug='$d_modfl_pow32_bug'
21832 d_modflproto='$d_modflproto'
21833 d_mprotect='$d_mprotect'
21835 d_msg_ctrunc='$d_msg_ctrunc'
21836 d_msg_dontroute='$d_msg_dontroute'
21837 d_msg_oob='$d_msg_oob'
21838 d_msg_peek='$d_msg_peek'
21839 d_msg_proxy='$d_msg_proxy'
21840 d_msgctl='$d_msgctl'
21841 d_msgget='$d_msgget'
21842 d_msghdr_s='$d_msghdr_s'
21843 d_msgrcv='$d_msgrcv'
21844 d_msgsnd='$d_msgsnd'
21846 d_munmap='$d_munmap'
21847 d_mymalloc='$d_mymalloc'
21849 d_nl_langinfo='$d_nl_langinfo'
21850 d_nv_preserves_uv='$d_nv_preserves_uv'
21851 d_nv_zero_is_allbits_zero='$d_nv_zero_is_allbits_zero'
21852 d_off64_t='$d_off64_t'
21853 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
21854 d_oldpthreads='$d_oldpthreads'
21855 d_oldsock='$d_oldsock'
21857 d_pathconf='$d_pathconf'
21859 d_perl_otherlibdirs='$d_perl_otherlibdirs'
21860 d_phostname='$d_phostname'
21863 d_portable='$d_portable'
21864 d_printf_format_null='$d_printf_format_null'
21865 d_procselfexe='$d_procselfexe'
21866 d_pseudofork='$d_pseudofork'
21867 d_pthread_atfork='$d_pthread_atfork'
21868 d_pthread_attr_setscope='$d_pthread_attr_setscope'
21869 d_pthread_yield='$d_pthread_yield'
21871 d_pwchange='$d_pwchange'
21872 d_pwclass='$d_pwclass'
21873 d_pwcomment='$d_pwcomment'
21874 d_pwexpire='$d_pwexpire'
21875 d_pwgecos='$d_pwgecos'
21876 d_pwpasswd='$d_pwpasswd'
21877 d_pwquota='$d_pwquota'
21880 d_random_r='$d_random_r'
21881 d_readdir64_r='$d_readdir64_r'
21882 d_readdir='$d_readdir'
21883 d_readdir_r='$d_readdir_r'
21884 d_readlink='$d_readlink'
21886 d_recvmsg='$d_recvmsg'
21887 d_rename='$d_rename'
21888 d_rewinddir='$d_rewinddir'
21890 d_safebcpy='$d_safebcpy'
21891 d_safemcpy='$d_safemcpy'
21892 d_sanemcmp='$d_sanemcmp'
21893 d_sbrkproto='$d_sbrkproto'
21894 d_scalbnl='$d_scalbnl'
21895 d_sched_yield='$d_sched_yield'
21896 d_scm_rights='$d_scm_rights'
21897 d_seekdir='$d_seekdir'
21898 d_select='$d_select'
21900 d_semctl='$d_semctl'
21901 d_semctl_semid_ds='$d_semctl_semid_ds'
21902 d_semctl_semun='$d_semctl_semun'
21903 d_semget='$d_semget'
21905 d_sendmsg='$d_sendmsg'
21906 d_setegid='$d_setegid'
21907 d_seteuid='$d_seteuid'
21908 d_setgrent='$d_setgrent'
21909 d_setgrent_r='$d_setgrent_r'
21910 d_setgrps='$d_setgrps'
21911 d_sethent='$d_sethent'
21912 d_sethostent_r='$d_sethostent_r'
21913 d_setitimer='$d_setitimer'
21914 d_setlinebuf='$d_setlinebuf'
21915 d_setlocale='$d_setlocale'
21916 d_setlocale_r='$d_setlocale_r'
21917 d_setnent='$d_setnent'
21918 d_setnetent_r='$d_setnetent_r'
21919 d_setpent='$d_setpent'
21920 d_setpgid='$d_setpgid'
21921 d_setpgrp2='$d_setpgrp2'
21922 d_setpgrp='$d_setpgrp'
21923 d_setprior='$d_setprior'
21924 d_setproctitle='$d_setproctitle'
21925 d_setprotoent_r='$d_setprotoent_r'
21926 d_setpwent='$d_setpwent'
21927 d_setpwent_r='$d_setpwent_r'
21928 d_setregid='$d_setregid'
21929 d_setresgid='$d_setresgid'
21930 d_setresuid='$d_setresuid'
21931 d_setreuid='$d_setreuid'
21932 d_setrgid='$d_setrgid'
21933 d_setruid='$d_setruid'
21934 d_setsent='$d_setsent'
21935 d_setservent_r='$d_setservent_r'
21936 d_setsid='$d_setsid'
21937 d_setvbuf='$d_setvbuf'
21941 d_shmatprototype='$d_shmatprototype'
21942 d_shmctl='$d_shmctl'
21944 d_shmget='$d_shmget'
21945 d_sigaction='$d_sigaction'
21946 d_signbit='$d_signbit'
21947 d_sigprocmask='$d_sigprocmask'
21948 d_sigsetjmp='$d_sigsetjmp'
21949 d_sitearch='$d_sitearch'
21950 d_snprintf='$d_snprintf'
21951 d_sockatmark='$d_sockatmark'
21952 d_sockatmarkproto='$d_sockatmarkproto'
21953 d_socket='$d_socket'
21954 d_socklen_t='$d_socklen_t'
21955 d_sockpair='$d_sockpair'
21956 d_socks5_init='$d_socks5_init'
21957 d_sprintf_returns_strlen='$d_sprintf_returns_strlen'
21959 d_srand48_r='$d_srand48_r'
21960 d_srandom_r='$d_srandom_r'
21961 d_sresgproto='$d_sresgproto'
21962 d_sresuproto='$d_sresuproto'
21963 d_statblks='$d_statblks'
21964 d_statfs_f_flags='$d_statfs_f_flags'
21965 d_statfs_s='$d_statfs_s'
21966 d_statvfs='$d_statvfs'
21967 d_stdio_cnt_lval='$d_stdio_cnt_lval'
21968 d_stdio_ptr_lval='$d_stdio_ptr_lval'
21969 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
21970 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
21971 d_stdio_stream_array='$d_stdio_stream_array'
21972 d_stdiobase='$d_stdiobase'
21973 d_stdstdio='$d_stdstdio'
21974 d_strchr='$d_strchr'
21975 d_strcoll='$d_strcoll'
21976 d_strctcpy='$d_strctcpy'
21977 d_strerrm='$d_strerrm'
21978 d_strerror='$d_strerror'
21979 d_strerror_r='$d_strerror_r'
21980 d_strftime='$d_strftime'
21981 d_strlcat='$d_strlcat'
21982 d_strlcpy='$d_strlcpy'
21983 d_strtod='$d_strtod'
21984 d_strtol='$d_strtol'
21985 d_strtold='$d_strtold'
21986 d_strtoll='$d_strtoll'
21987 d_strtoq='$d_strtoq'
21988 d_strtoul='$d_strtoul'
21989 d_strtoull='$d_strtoull'
21990 d_strtouq='$d_strtouq'
21991 d_strxfrm='$d_strxfrm'
21992 d_suidsafe='$d_suidsafe'
21993 d_symlink='$d_symlink'
21994 d_syscall='$d_syscall'
21995 d_syscallproto='$d_syscallproto'
21996 d_sysconf='$d_sysconf'
21997 d_sysernlst='$d_sysernlst'
21998 d_syserrlst='$d_syserrlst'
21999 d_system='$d_system'
22000 d_tcgetpgrp='$d_tcgetpgrp'
22001 d_tcsetpgrp='$d_tcsetpgrp'
22002 d_telldir='$d_telldir'
22003 d_telldirproto='$d_telldirproto'
22006 d_tm_tm_gmtoff='$d_tm_tm_gmtoff'
22007 d_tm_tm_zone='$d_tm_tm_zone'
22008 d_tmpnam_r='$d_tmpnam_r'
22009 d_truncate='$d_truncate'
22010 d_ttyname_r='$d_ttyname_r'
22011 d_tzname='$d_tzname'
22012 d_u32align='$d_u32align'
22013 d_ualarm='$d_ualarm'
22016 d_union_semun='$d_union_semun'
22017 d_unordered='$d_unordered'
22018 d_unsetenv='$d_unsetenv'
22019 d_usleep='$d_usleep'
22020 d_usleepproto='$d_usleepproto'
22022 d_vendorarch='$d_vendorarch'
22023 d_vendorbin='$d_vendorbin'
22024 d_vendorlib='$d_vendorlib'
22025 d_vendorscript='$d_vendorscript'
22027 d_void_closedir='$d_void_closedir'
22028 d_voidsig='$d_voidsig'
22029 d_voidtty='$d_voidtty'
22030 d_volatile='$d_volatile'
22031 d_vprintf='$d_vprintf'
22032 d_vsnprintf='$d_vsnprintf'
22034 d_waitpid='$d_waitpid'
22035 d_wcstombs='$d_wcstombs'
22036 d_wctomb='$d_wctomb'
22037 d_writev='$d_writev'
22040 db_hashtype='$db_hashtype'
22041 db_prefixtype='$db_prefixtype'
22042 db_version_major='$db_version_major'
22043 db_version_minor='$db_version_minor'
22044 db_version_patch='$db_version_patch'
22045 defvoidused='$defvoidused'
22046 direntrytype='$direntrytype'
22049 doublesize='$doublesize'
22051 drand48_r_proto='$drand48_r_proto'
22052 dynamic_ext='$dynamic_ext'
22058 endgrent_r_proto='$endgrent_r_proto'
22059 endhostent_r_proto='$endhostent_r_proto'
22060 endnetent_r_proto='$endnetent_r_proto'
22061 endprotoent_r_proto='$endprotoent_r_proto'
22062 endpwent_r_proto='$endpwent_r_proto'
22063 endservent_r_proto='$endservent_r_proto'
22064 eunicefix='$eunicefix'
22067 extensions='$extensions'
22069 fflushNULL='$fflushNULL'
22070 fflushall='$fflushall'
22072 firstmakefile='$firstmakefile'
22074 fpossize='$fpossize'
22075 fpostype='$fpostype'
22076 freetype='$freetype'
22079 full_csh='$full_csh'
22080 full_sed='$full_sed'
22081 gccansipedantic='$gccansipedantic'
22082 gccosandvers='$gccosandvers'
22083 gccversion='$gccversion'
22084 getgrent_r_proto='$getgrent_r_proto'
22085 getgrgid_r_proto='$getgrgid_r_proto'
22086 getgrnam_r_proto='$getgrnam_r_proto'
22087 gethostbyaddr_r_proto='$gethostbyaddr_r_proto'
22088 gethostbyname_r_proto='$gethostbyname_r_proto'
22089 gethostent_r_proto='$gethostent_r_proto'
22090 getlogin_r_proto='$getlogin_r_proto'
22091 getnetbyaddr_r_proto='$getnetbyaddr_r_proto'
22092 getnetbyname_r_proto='$getnetbyname_r_proto'
22093 getnetent_r_proto='$getnetent_r_proto'
22094 getprotobyname_r_proto='$getprotobyname_r_proto'
22095 getprotobynumber_r_proto='$getprotobynumber_r_proto'
22096 getprotoent_r_proto='$getprotoent_r_proto'
22097 getpwent_r_proto='$getpwent_r_proto'
22098 getpwnam_r_proto='$getpwnam_r_proto'
22099 getpwuid_r_proto='$getpwuid_r_proto'
22100 getservbyname_r_proto='$getservbyname_r_proto'
22101 getservbyport_r_proto='$getservbyport_r_proto'
22102 getservent_r_proto='$getservent_r_proto'
22103 getspnam_r_proto='$getspnam_r_proto'
22104 gidformat='$gidformat'
22110 gmtime_r_proto='$gmtime_r_proto'
22111 gnulibc_version='$gnulibc_version'
22113 groupcat='$groupcat'
22114 groupstype='$groupstype'
22117 h_sysfile='$h_sysfile'
22120 html1dir='$html1dir'
22121 html1direxp='$html1direxp'
22122 html3dir='$html3dir'
22123 html3direxp='$html3direxp'
22132 i_arpainet='$i_arpainet'
22133 i_bsdioctl='$i_bsdioctl'
22137 i_dirent='$i_dirent'
22143 i_fp_class='$i_fp_class'
22146 i_ieeefp='$i_ieeefp'
22147 i_inttypes='$i_inttypes'
22148 i_langinfo='$i_langinfo'
22149 i_libutil='$i_libutil'
22150 i_limits='$i_limits'
22151 i_locale='$i_locale'
22152 i_machcthr='$i_machcthr'
22153 i_malloc='$i_malloc'
22155 i_memory='$i_memory'
22156 i_mntent='$i_mntent'
22159 i_neterrno='$i_neterrno'
22160 i_netinettcp='$i_netinettcp'
22164 i_pthread='$i_pthread'
22166 i_rpcsvcdbm='$i_rpcsvcdbm'
22169 i_shadow='$i_shadow'
22171 i_stdarg='$i_stdarg'
22172 i_stddef='$i_stddef'
22173 i_stdlib='$i_stdlib'
22174 i_string='$i_string'
22175 i_sunmath='$i_sunmath'
22176 i_sysaccess='$i_sysaccess'
22177 i_sysdir='$i_sysdir'
22178 i_sysfile='$i_sysfile'
22179 i_sysfilio='$i_sysfilio'
22181 i_sysioctl='$i_sysioctl'
22182 i_syslog='$i_syslog'
22183 i_sysmman='$i_sysmman'
22184 i_sysmode='$i_sysmode'
22185 i_sysmount='$i_sysmount'
22186 i_sysndir='$i_sysndir'
22187 i_sysparam='$i_sysparam'
22188 i_sysresrc='$i_sysresrc'
22189 i_syssecrt='$i_syssecrt'
22190 i_sysselct='$i_sysselct'
22191 i_syssockio='$i_syssockio'
22192 i_sysstat='$i_sysstat'
22193 i_sysstatfs='$i_sysstatfs'
22194 i_sysstatvfs='$i_sysstatvfs'
22195 i_systime='$i_systime'
22196 i_systimek='$i_systimek'
22197 i_systimes='$i_systimes'
22198 i_systypes='$i_systypes'
22199 i_sysuio='$i_sysuio'
22201 i_sysutsname='$i_sysutsname'
22202 i_sysvfs='$i_sysvfs'
22203 i_syswait='$i_syswait'
22204 i_termio='$i_termio'
22205 i_termios='$i_termios'
22207 i_unistd='$i_unistd'
22210 i_values='$i_values'
22211 i_varargs='$i_varargs'
22212 i_varhdr='$i_varhdr'
22214 ignore_versioned_solibs='$ignore_versioned_solibs'
22215 inc_version_list='$inc_version_list'
22216 inc_version_list_init='$inc_version_list_init'
22219 initialinstalllocation='$initialinstalllocation'
22220 installarchlib='$installarchlib'
22221 installbin='$installbin'
22222 installhtml1dir='$installhtml1dir'
22223 installhtml3dir='$installhtml3dir'
22224 installman1dir='$installman1dir'
22225 installman3dir='$installman3dir'
22226 installprefix='$installprefix'
22227 installprefixexp='$installprefixexp'
22228 installprivlib='$installprivlib'
22229 installscript='$installscript'
22230 installsitearch='$installsitearch'
22231 installsitebin='$installsitebin'
22232 installsitehtml1dir='$installsitehtml1dir'
22233 installsitehtml3dir='$installsitehtml3dir'
22234 installsitelib='$installsitelib'
22235 installsiteman1dir='$installsiteman1dir'
22236 installsiteman3dir='$installsiteman3dir'
22237 installsitescript='$installsitescript'
22238 installstyle='$installstyle'
22239 installusrbinperl='$installusrbinperl'
22240 installvendorarch='$installvendorarch'
22241 installvendorbin='$installvendorbin'
22242 installvendorhtml1dir='$installvendorhtml1dir'
22243 installvendorhtml3dir='$installvendorhtml3dir'
22244 installvendorlib='$installvendorlib'
22245 installvendorman1dir='$installvendorman1dir'
22246 installvendorman3dir='$installvendorman3dir'
22247 installvendorscript='$installvendorscript'
22249 issymlink='$issymlink'
22250 ivdformat='$ivdformat'
22253 known_extensions='$known_extensions'
22256 lddlflags='$lddlflags'
22258 ldflags_uselargefiles='$ldflags_uselargefiles'
22259 ldlibpthname='$ldlibpthname'
22266 libsdirs='$libsdirs'
22267 libsfiles='$libsfiles'
22268 libsfound='$libsfound'
22269 libspath='$libspath'
22270 libswanted='$libswanted'
22271 libswanted_uselargefiles='$libswanted_uselargefiles'
22277 localtime_r_proto='$localtime_r_proto'
22278 locincpth='$locincpth'
22279 loclibpth='$loclibpth'
22280 longdblsize='$longdblsize'
22281 longlongsize='$longlongsize'
22282 longsize='$longsize'
22286 lseeksize='$lseeksize'
22287 lseektype='$lseektype'
22290 madlyobj='$madlyobj'
22291 madlysrc='$madlysrc'
22295 make_set_make='$make_set_make'
22296 mallocobj='$mallocobj'
22297 mallocsrc='$mallocsrc'
22298 malloctype='$malloctype'
22300 man1direxp='$man1direxp'
22303 man3direxp='$man3direxp'
22305 mips_type='$mips_type'
22306 mistrustnm='$mistrustnm'
22308 mmaptype='$mmaptype'
22309 modetype='$modetype'
22311 multiarch='$multiarch'
22313 myarchname='$myarchname'
22314 mydomain='$mydomain'
22315 myhostname='$myhostname'
22318 need_va_copy='$need_va_copy'
22319 netdb_hlen_type='$netdb_hlen_type'
22320 netdb_host_type='$netdb_host_type'
22321 netdb_name_type='$netdb_name_type'
22322 netdb_net_type='$netdb_net_type'
22325 nm_so_opt='$nm_so_opt'
22326 nonxs_ext='$nonxs_ext'
22328 nvEUformat='$nvEUformat'
22329 nvFUformat='$nvFUformat'
22330 nvGUformat='$nvGUformat'
22331 nv_preserves_uv_bits='$nv_preserves_uv_bits'
22332 nveformat='$nveformat'
22333 nvfformat='$nvfformat'
22334 nvgformat='$nvgformat'
22337 o_nonblock='$o_nonblock'
22339 old_pthread_create_joinable='$old_pthread_create_joinable'
22340 optimize='$optimize'
22341 orderlib='$orderlib'
22344 otherlibdirs='$otherlibdirs'
22348 patchlevel='$patchlevel'
22349 path_sep='$path_sep'
22352 perl_patchlevel='$perl_patchlevel'
22353 perladmin='$perladmin'
22354 perllibs='$perllibs'
22355 perlpath='$perlpath'
22357 phostname='$phostname'
22363 prefixexp='$prefixexp'
22365 privlibexp='$privlibexp'
22366 procselfexe='$procselfexe'
22367 prototype='$prototype'
22369 quadkind='$quadkind'
22370 quadtype='$quadtype'
22371 randbits='$randbits'
22372 randfunc='$randfunc'
22373 random_r_proto='$random_r_proto'
22374 randseedtype='$randseedtype'
22376 rd_nodata='$rd_nodata'
22377 readdir64_r_proto='$readdir64_r_proto'
22378 readdir_r_proto='$readdir_r_proto'
22379 revision='$revision'
22385 sPRIEUldbl='$sPRIEUldbl'
22386 sPRIFUldbl='$sPRIFUldbl'
22387 sPRIGUldbl='$sPRIGUldbl'
22388 sPRIXU64='$sPRIXU64'
22390 sPRIeldbl='$sPRIeldbl'
22391 sPRIfldbl='$sPRIfldbl'
22392 sPRIgldbl='$sPRIgldbl'
22397 sSCNfldbl='$sSCNfldbl'
22398 sched_yield='$sched_yield'
22399 scriptdir='$scriptdir'
22400 scriptdirexp='$scriptdirexp'
22402 seedfunc='$seedfunc'
22403 selectminbits='$selectminbits'
22404 selecttype='$selecttype'
22405 sendmail='$sendmail'
22406 setgrent_r_proto='$setgrent_r_proto'
22407 sethostent_r_proto='$sethostent_r_proto'
22408 setlocale_r_proto='$setlocale_r_proto'
22409 setnetent_r_proto='$setnetent_r_proto'
22410 setprotoent_r_proto='$setprotoent_r_proto'
22411 setpwent_r_proto='$setpwent_r_proto'
22412 setservent_r_proto='$setservent_r_proto'
22415 sharpbang='$sharpbang'
22416 shmattype='$shmattype'
22417 shortsize='$shortsize'
22420 sig_count='$sig_count'
22421 sig_name='$sig_name'
22422 sig_name_init='$sig_name_init'
22424 sig_num_init='$sig_num_init'
22425 sig_size='$sig_size'
22426 signal_t='$signal_t'
22427 sitearch='$sitearch'
22428 sitearchexp='$sitearchexp'
22430 sitebinexp='$sitebinexp'
22431 sitehtml1dir='$sitehtml1dir'
22432 sitehtml1direxp='$sitehtml1direxp'
22433 sitehtml3dir='$sitehtml3dir'
22434 sitehtml3direxp='$sitehtml3direxp'
22436 sitelib_stem='$sitelib_stem'
22437 sitelibexp='$sitelibexp'
22438 siteman1dir='$siteman1dir'
22439 siteman1direxp='$siteman1direxp'
22440 siteman3dir='$siteman3dir'
22441 siteman3direxp='$siteman3direxp'
22442 siteprefix='$siteprefix'
22443 siteprefixexp='$siteprefixexp'
22444 sitescript='$sitescript'
22445 sitescriptexp='$sitescriptexp'
22446 sizesize='$sizesize'
22447 sizetype='$sizetype'
22451 sockethdr='$sockethdr'
22452 socketlib='$socketlib'
22453 socksizetype='$socksizetype'
22455 spackage='$spackage'
22456 spitshell='$spitshell'
22457 srand48_r_proto='$srand48_r_proto'
22458 srandom_r_proto='$srandom_r_proto'
22460 ssizetype='$ssizetype'
22461 startperl='$startperl'
22463 static_ext='$static_ext'
22465 stdio_base='$stdio_base'
22466 stdio_bufsiz='$stdio_bufsiz'
22467 stdio_cnt='$stdio_cnt'
22468 stdio_filbuf='$stdio_filbuf'
22469 stdio_ptr='$stdio_ptr'
22470 stdio_stream_array='$stdio_stream_array'
22471 strerror_r_proto='$strerror_r_proto'
22474 subversion='$subversion'
22478 targetarch='$targetarch'
22482 timeincl='$timeincl'
22483 timetype='$timetype'
22484 tmpnam_r_proto='$tmpnam_r_proto'
22490 ttyname_r_proto='$ttyname_r_proto'
22499 uidformat='$uidformat'
22505 uquadtype='$uquadtype'
22506 use5005threads='$use5005threads'
22507 use64bitall='$use64bitall'
22508 use64bitint='$use64bitint'
22509 usecrosscompile='$usecrosscompile'
22511 usefaststdio='$usefaststdio'
22512 useithreads='$useithreads'
22513 uselargefiles='$uselargefiles'
22514 uselongdouble='$uselongdouble'
22515 usemallocwrap='$usemallocwrap'
22516 usemorebits='$usemorebits'
22517 usemultiplicity='$usemultiplicity'
22518 usemymalloc='$usemymalloc'
22520 useopcode='$useopcode'
22521 useperlio='$useperlio'
22522 useposix='$useposix'
22523 usereentrant='$usereentrant'
22524 userelocatableinc='$userelocatableinc'
22526 useshrplib='$useshrplib'
22527 usesitecustomize='$usesitecustomize'
22528 usesocks='$usesocks'
22529 usethreads='$usethreads'
22530 usevendorprefix='$usevendorprefix'
22531 usevfork='$usevfork'
22534 uvXUformat='$uvXUformat'
22535 uvoformat='$uvoformat'
22538 uvuformat='$uvuformat'
22539 uvxformat='$uvxformat'
22540 vendorarch='$vendorarch'
22541 vendorarchexp='$vendorarchexp'
22542 vendorbin='$vendorbin'
22543 vendorbinexp='$vendorbinexp'
22544 vendorhtml1dir='$vendorhtml1dir'
22545 vendorhtml1direxp='$vendorhtml1direxp'
22546 vendorhtml3dir='$vendorhtml3dir'
22547 vendorhtml3direxp='$vendorhtml3direxp'
22548 vendorlib='$vendorlib'
22549 vendorlib_stem='$vendorlib_stem'
22550 vendorlibexp='$vendorlibexp'
22551 vendorman1dir='$vendorman1dir'
22552 vendorman1direxp='$vendorman1direxp'
22553 vendorman3dir='$vendorman3dir'
22554 vendorman3direxp='$vendorman3direxp'
22555 vendorprefix='$vendorprefix'
22556 vendorprefixexp='$vendorprefixexp'
22557 vendorscript='$vendorscript'
22558 vendorscriptexp='$vendorscriptexp'
22560 version_patchlevel_string='$version_patchlevel_string'
22561 versiononly='$versiononly'
22563 voidflags='$voidflags'
22566 yaccflags='$yaccflags'
22571 : Add in command line options if available
22572 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
22574 : add special variables
22575 $test -f $src/patchlevel.h && \
22576 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
22577 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
22578 echo "PERL_CONFIG_SH=true" >>config.sh
22580 : propagate old symbols
22581 if $test -f UU/config.sh; then
22582 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
22583 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
22584 $sort | $uniq -u >UU/oldsyms
22585 set X `cat UU/oldsyms`
22591 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
22593 echo "# Variables propagated from previous config.sh file." >>config.sh
22594 for sym in `cat UU/oldsyms`; do
22595 echo " Propagating $hint variable "'$'"$sym..."
22596 eval 'tmp="$'"${sym}"'"'
22598 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
22604 : Finish up by extracting the .SH files
22608 echo "Extraction done."
22618 If you'd like to make any changes to the config.sh file before I begin
22619 to configure things, do it as a shell escape now (e.g. !vi config.sh).
22622 rp="Press return or use a shell escape to edit config.sh:"
22627 *) : in case they cannot read
22628 sh 1>&4 -c "$ans";;
22633 : if this fails, just run all the .SH files by hand
22642 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
22649 Now you need to generate make dependencies by running "$make depend".
22650 You might prefer to run it in background: "$make depend > makedepend.out &"
22651 It can take a while, so you might not want to run it right now.
22656 rp="Run $make depend now?"
22660 $make depend && echo "Now you must run '$make'."
22663 echo "You must run '$make depend' then '$make'."
22666 elif test -f [Mm]akefile; then
22668 echo "Now you must run a $make."
22670 echo "Configure done."
22673 if $test -f Policy.sh; then
22676 If you compile $package on a different machine or from a different object
22677 directory, copy the Policy.sh file from this object directory to the
22678 new one before you run Configure -- this will help you with most of
22679 the policy defaults.
22683 if $test -f config.msg; then
22684 echo "Hmm. I also noted the following information while running:"
22686 $cat config.msg >&4
22689 $rm -f kit*isdone ark*isdone