3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Tue Nov 21 20:33:35 EET 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
29 SCO csh still thinks true is false. Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
32 (Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
35 [End of diatribe. We now return you to your regularly scheduled programming...]
39 OOPS! You naughty creature! You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
50 : compute my invocation name
54 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
59 : Proper separator for the PATH environment variable
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63 if test -n "$OS2_SHELL"; then
65 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67 elif test -n "$DJGPP"; then
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
86 *) test -d $p && PATH=$PATH$p_$p ;;
93 : shall we be using ksh?
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
102 if test -f /hp-ux -a -f /bin/ksh; then
103 needksh='to avoid sh bug in "here document" expansion'
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106 if test X`/usr/bin/uname -v` = X4; then
107 avoidksh="to avoid AIX 4's /bin/sh"
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112 if test X`/usr/bin/uname -s` = XOSF1; then
113 avoidksh="to avoid Digital UNIX' ksh"
115 unset BIN_SH # if this is 'xpg4' sh will start up ksh
118 case "$inksh/$needksh" in
125 case "$inksh/$avoidksh" in
131 case "$inksh/$needksh-$avoidksh-" in
134 (I see you are using the Korn shell. Some ksh's blow up on $me,
135 mainly on older exotic systems. If yours does, try the Bourne shell instead.)
141 echo "(Feeding myself to $newsh $reason.)"
143 Configure|*/Configure) exec $newsh $0 "$@";;
144 *) exec $newsh Configure "$@";;
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
154 *bash*) CDPATH='.' ;;
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
465 d_old_pthread_create_joinable=''
466 old_pthread_create_joinable=''
544 d_stdio_ptr_lval_nochange_cnt=''
545 d_stdio_ptr_lval_sets_cnt=''
716 inc_version_list_init=''
734 ignore_versioned_solibs=''
793 d_perl_otherlibdirs=''
810 d_nv_preserves_uv_bits=''
908 d_stdio_stream_array=''
909 stdio_stream_array=''
919 ccflags_uselargefiles=''
920 ldflags_uselargefiles=''
921 libswanted_uselargefiles=''
964 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
967 : We must find out about Eunice early
969 if test -f /etc/unixtovms; then
970 eunicefix=/etc/unixtovms
972 if test -f /etc/unixtovms.exe; then
973 eunicefix=/etc/unixtovms.exe
980 : set useposix=false in your hint file to disable the POSIX extension.
982 : set useopcode=false in your hint file to disable the Opcode extension.
984 : Trailing extension. Override this in a hint file, if needed.
986 : Extra object files, if any, needed on this platform.
989 : Possible local include directories to search.
990 : Set locincpth to "" in a hint file to defeat local include searches.
991 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
992 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
994 : no include file wanted by default
998 : change the next line if compiling for Xenix/286 on Xenix/386
999 xlibpth='/usr/lib/386 /lib/386'
1000 : Possible local library directories to search.
1001 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1002 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1004 : general looking path for locating libraries
1005 glibpth="/lib /usr/lib $xlibpth"
1006 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1007 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1008 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1010 : Private path used by Configure to find libraries. Its value
1011 : is prepended to libpth. This variable takes care of special
1012 : machines, like the mips. Usually, it should be empty.
1015 : default library list
1017 : some systems want to use only the non-versioned libso:s
1018 ignore_versioned_solibs=''
1020 ccflags_uselargefiles=''
1021 ldflags_uselargefiles=''
1022 libswanted_uselargefiles=''
1023 : set usemultiplicity on the Configure command line to enable multiplicity.
1024 : set usesocks on the Configure command line to enable socks.
1025 : set usethreads on the Configure command line to enable threads.
1026 : full support for void wanted by default
1029 : List of libraries we want.
1030 : If anyone needs -lnet, put it in a hint file.
1031 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1032 libswanted="$libswanted dld ld sun m c cposix posix"
1033 libswanted="$libswanted ndir dir crypt sec"
1034 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1035 : We probably want to search /usr/shlib before most other libraries.
1036 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1037 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1038 glibpth="/usr/shlib $glibpth"
1039 : Do not use vfork unless overridden by a hint file.
1042 : Find the basic shell for Bourne shell scripts
1046 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1049 if test -f "$xxx"; then
1052 : Build up a list and do a single loop so we can 'break' out.
1053 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1054 for xxx in sh bash ksh pdksh ash; do
1056 try="$try ${p}/${xxx}"
1060 if test -f "$xxx"; then
1063 elif test -f "$xxx.exe"; then
1074 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1076 Usually it's in /bin/sh. How did you even get this far?
1077 Please contact me (Perl Maintainers) at perlbug@perl.org and
1078 we'll try to straighten this all out.
1084 : see if sh knows # comments
1085 if `$sh -c '#' >/dev/null 2>&1`; then
1089 test -f $xcat || xcat=/usr/bin/cat
1094 if test -s today; then
1097 echo "#! $xcat" > try
1101 if test -s today; then
1109 echo "Your $sh doesn't grok # comments--I will strip them later on."
1112 echo "exec grep -v '^[ ]*#'" >spitshell
1114 $eunicefix spitshell
1115 spitshell=`pwd`/spitshell
1117 echo "I presume that if # doesn't work, #! won't work either!"
1122 : figure out how to guarantee sh startup
1124 '') startsh=${sharpbang}${sh} ;;
1136 : echo "Yup, it does."
1138 echo "Hmm... '$startsh' does not guarantee sh startup..."
1139 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1144 : Save command line options in file UU/cmdline.opt for later use in
1145 : generating config.sh.
1146 cat > cmdline.opt <<EOSH
1147 # Configure command line arguments.
1154 cat >>cmdline.opt <<EOSH
1155 config_arg$argn='$arg'
1157 argn=`expr $argn + 1`
1160 : produce awk script to parse command line options
1161 cat >options.awk <<'EOF'
1163 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1165 len = length(optstr);
1166 for (i = 1; i <= len; i++) {
1167 c = substr(optstr, i, 1);
1168 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1179 if (substr(str, 1, 1) != "-") {
1180 printf("'%s'\n", str);
1184 for (i = 2; i <= len; i++) {
1185 c = substr(str, i, 1);
1187 printf("-%s\n", substr(str, i));
1193 printf("'%s'\n", substr(str, i + 1));
1206 : process the command line options
1207 set X `for arg in "$@"; do echo "X$arg"; done |
1208 sed -e s/X// | awk -f options.awk`
1213 : set up default values
1223 rm -f optdef.sh posthint.sh
1224 cat >optdef.sh <<EOS
1230 while test $# -gt 0; do
1232 -d) shift; fastread=yes;;
1233 -e) shift; alldone=cont;;
1237 if test -r "$1"; then
1240 echo "$me: cannot read config file $1." >&2
1245 -h) shift; error=true;;
1246 -r) shift; reuseval=true;;
1247 -s) shift; silent=true; realsilent=true;;
1248 -E) shift; alldone=exit;;
1249 -K) shift; knowitall=true;;
1250 -O) shift; override=true;;
1251 -S) shift; silent=true; extractsh=true;;
1256 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1257 echo "$me: ignoring -D $1" >&2
1260 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1261 *) echo "$1='define'" >> optdef.sh;;
1268 *=) echo "$1" >> optdef.sh;;
1270 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1271 echo "$me: ignoring -U $1" >&2
1273 *) echo "$1='undef'" >> optdef.sh;;
1284 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1288 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1289 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1295 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1296 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1297 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1298 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1299 *) xxx=`echo $yyy|sed 's!:.*!!'`
1300 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1306 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1308 echo "$yyy=''" >> posthint.sh ;;
1313 echo "$yyy='$zzz'" >> posthint.sh ;;
1315 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1317 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1322 echo "$yyy=$zzz" >> posthint.sh ;;
1323 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1327 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1330 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1338 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1339 [-U symbol] [-U symbol=] [-A command:symbol...]
1340 -d : use defaults for all answers.
1341 -e : go on without questioning past the production of config.sh.
1342 -f : specify an alternate default configuration file.
1343 -h : print this help message and exit (with an error status).
1344 -r : reuse C symbols value if possible (skips costly nm extraction).
1345 -s : silent mode, only echoes questions and essential information.
1346 -D : define symbol to have some value:
1347 -D symbol symbol gets the value 'define'
1348 -D symbol=value symbol gets the value 'value'
1349 -E : stop at the end of questions, after having produced config.sh.
1350 -K : do not use unless you know what you are doing.
1351 -O : let -D and -U override definitions from loaded configuration file.
1352 -S : perform variable substitutions on all .SH files (can mix with -f)
1353 -U : undefine symbol:
1354 -U symbol symbol gets the value 'undef'
1355 -U symbol= symbol gets completely empty
1356 -A : manipulate symbol after the platform specific hints have been applied:
1357 -A symbol=value append " "value to symbol
1358 -A append:symbol=value append value to symbol
1359 -A define:symbol=value define symbol to have value
1360 -A clear:symbol define symbol to be ''
1361 -A define:symbol define symbol to be 'define'
1362 -A eval:symbol=value define symbol to be eval of value
1363 -A prepend:symbol=value prepend value to symbol
1364 -A undef:symbol define symbol to be 'undef'
1365 -A undef:symbol= define symbol to be ''
1366 -V : print version number and exit (with a zero status).
1373 case "$fastread$alldone" in
1376 case "$extractsh" in
1379 if test ! -t 0; then
1380 echo "Say 'sh Configure', not 'sh <Configure'"
1390 true) exec 1>/dev/null;;
1393 : run the defines and the undefines, if any, but leave the file out there...
1396 : create the posthint manipulation script and leave the file out there...
1401 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1402 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1403 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1404 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1405 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1408 : Some greps do not return status, grrr.
1409 echo "grimblepritz" >grimble
1410 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1412 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1418 : the following should work in any shell
1422 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1423 cat >contains <<'EOSS'
1424 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1429 : Find the path to the source tree
1432 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1435 *) src=`cd ../$src && pwd` ;;
1448 if test -f $rsrc/Configure && \
1449 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1451 : found it, so we are ok.
1454 for src in . .. ../.. ../../.. ../../../..; do
1455 if test -f ../$src/Configure && \
1456 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1467 Sorry, I can't seem to locate the source dir for $package. Please start
1468 Configure with an explicit path -- i.e. /some/path/Configure.
1476 echo "Sources for $package found in \"$src\"." >&4
1480 : script used to extract .SH files with variable substitutions
1481 cat >extract <<'EOS'
1483 echo "Doing variable substitutions on .SH files..."
1484 if test -f $src/MANIFEST; then
1485 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1487 echo "(Looking for .SH files under the source directory.)"
1488 set x `(cd $src; find . -name "*.SH" -print)`
1492 0) set x `(cd $src; echo *.SH)`; shift;;
1494 if test ! -f $src/$1; then
1500 while test $name; do
1501 if test ! -d "$name"; then
1502 create="$name $create";
1503 name=`echo $name | sed -e "s|^[^/]*$||"`;
1504 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1509 for file in $create; do
1518 dir=`expr X$file : 'X\(.*\)/'`
1519 file=`expr X$file : 'X.*/\(.*\)'`
1520 (cd $dir && . ./$file)
1530 dir=`expr X$file : 'X\(.*\)/'`
1531 file=`expr X$file : 'X.*/\(.*\)'`
1532 (set x $dir; shift; eval $mkdir_p)
1542 if test -f $src/config_h.SH; then
1543 if test ! -f config.h; then
1544 : oops, they left it out of MANIFEST, probably, so do it anyway.
1550 : extract files and exit if asked to do so
1551 case "$extractsh" in
1553 case "$realsilent" in
1557 case "$config_sh" in
1558 '') config_sh='config.sh';;
1561 echo "Fetching answers from $config_sh..."
1564 test "$override" && . ./optdef.sh
1573 : Eunice requires " " instead of "", can you believe it
1576 echo "Beginning of configuration questions for $package."
1578 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1580 : first determine how to suppress newline on echo command
1582 echo "Checking echo to see how to suppress newlines..."
1583 (echo "hi there\c" ; echo " ") >.echotmp
1584 if $contains c .echotmp >/dev/null 2>&1 ; then
1595 echo $n "The star should be here-->$c"
1599 : Now test for existence of everything in MANIFEST
1601 if test -f $rsrc/MANIFEST; then
1602 echo "First let's make sure your kit is complete. Checking..." >&4
1603 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1606 for filelist in x??; do
1607 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1609 if test -s missing; then
1613 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1615 You have the option of continuing the configuration process, despite the
1616 distinct possibility that your kit is damaged, by typing 'y'es. If you
1617 do, don't blame me if something goes wrong. I advise you to type 'n'o
1618 and contact the author (perlbug@perl.org).
1621 echo $n "Continue? [n] $c" >&4
1625 echo "Continuing..." >&4
1629 echo "ABORTING..." >&4
1634 echo "Looks good..."
1637 echo "There is no MANIFEST file. I hope your kit is complete !"
1642 : Find the appropriate value for a newline for tr
1643 if test -n "$DJGPP"; then
1646 if test X"$trnl" = X; then
1647 case "`echo foo|tr '\n' x 2>/dev/null`" in
1651 if test X"$trnl" = X; then
1652 case "`echo foo|tr '\012' x 2>/dev/null`" in
1653 foox) trnl='\012' ;;
1656 if test X"$trnl" = X; then
1659 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1665 : compute the number of columns on the terminal for proper question formatting
1670 : set up the echo used in my read
1671 myecho="case \"\$xxxm\" in
1672 '') echo $n \"\$rp $c\" >&4;;
1674 '') echo $n \"[\$xxxm] $c\";;
1676 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1678 echo $n \"[\$xxxm] $c\" >&4
1680 echo $n \"\$rp [\$xxxm] $c\" >&4
1686 : now set up to do reads with possible shell escape and default assignment
1692 case "\$fastread" in
1693 yes) case "\$dflt" in
1696 case "\$silent-\$rp" in
1701 *) case "\$silent" in
1702 true) case "\$rp" in
1707 while expr "X\$ans" : "X!" >/dev/null; do
1711 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1719 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1728 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1733 echo "(OK, I'll run with -d after this question.)" >&4
1736 echo "*** Sorry, \$1 not supported yet." >&4
1746 echo "*** Substitution done -- please confirm."
1748 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1753 echo "*** Error -- try again."
1760 case "\$ans\$xxxm\$nostick" in
1772 : create .config dir to save info across Configure sessions
1773 test -d ../.config || mkdir ../.config
1774 cat >../.config/README <<EOF
1775 This directory created by Configure to save information that should
1776 persist across sessions for $package.
1778 You may safely delete it if you wish.
1781 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1783 $define|true|[yY]*) ;;
1784 *) case "$xversion" in
1787 *** WHOA THERE!!! ***
1789 This is an UNSTABLE DEVELOPMENT release.
1790 The version of this $package distribution is $xversion, that is, odd,
1791 (as opposed to even) and that signifies a development release.
1792 If you want a maintenance release, you want an even-numbered version.
1794 Do ***NOT*** install this into production use.
1795 Data corruption and crashes are possible.
1797 It is most seriously suggested that you do not continue any further
1798 unless you want to help in developing and debugging Perl.
1801 rp='Do you really want to continue?'
1805 [yY]) echo >&4 "Okay, continuing." ;;
1806 *) echo >&4 "Okay, bye."
1815 : general instructions
1818 user=`(logname) 2>/dev/null`
1820 '') user=`whoami 2>&1`;;
1822 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1825 rp='Would you like to see the instructions?'
1836 This installation shell script will examine your system and ask you questions
1837 to determine how the perl5 package should be installed. If you get
1838 stuck on a question, you may use a ! shell escape to start a subshell or
1839 execute a command. Many of the questions will have default answers in square
1840 brackets; typing carriage return will give you the default.
1842 On some of the questions which ask for file or directory names you are allowed
1843 to use the ~name construct to specify the login directory belonging to "name",
1844 even if you don't have a shell which knows about that. Questions where this is
1845 allowed will be marked "(~name ok)".
1849 dflt='Type carriage return to continue'
1853 The prompter used in this script allows you to use shell variables and
1854 backticks in your answers. You may use $1, $2, etc... to refer to the words
1855 in the default answer, as if the default line was a set of arguments given to a
1856 script shell. This means you may also use $* to repeat the whole default line,
1857 so you do not have to re-type everything to add something to the default.
1859 Everytime there is a substitution, you will have to confirm. If there is an
1860 error (e.g. an unmatched backtick), the default answer will remain unchanged
1861 and you will be prompted again.
1863 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1864 the questions and use the computed defaults (or the previous answers if there
1865 was already a config.sh file). Type 'Configure -h' for a list of options.
1866 You may also start interactively and then answer '& -d' at any prompt to turn
1867 on the non-interactive behaviour for the remainder of the execution.
1873 Much effort has been expended to ensure that this shell script will run on any
1874 Unix system. If despite that it blows up on yours, your best bet is to edit
1875 Configure and run it again. If you can't run Configure for some reason,
1876 you'll have to generate a config.sh file by hand. Whatever problems you
1877 have, let me (perlbug@perl.org) know how I blew it.
1879 This installation script affects things in two ways:
1881 1) it may do direct variable substitutions on some of the files included
1883 2) it builds a config.h file for inclusion in C programs. You may edit
1884 any of these files as the need arises after running this script.
1886 If you make a mistake on a question, there is no easy way to back up to it
1887 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1888 files. Configure will offer to let you do this before it runs the SH files.
1891 dflt='Type carriage return to continue'
1893 case "$firsttime" in
1894 true) echo $user >>../.config/instruct;;
1898 : find out where common programs are
1900 echo "Locating common programs..." >&4
1913 if test -d \$dir/\$thing; then
1919 for thisthing in \$dir/\$thing; do
1920 : just loop through to pick last item
1922 if test -f \$thisthing; then
1925 elif test -f \$dir/\$thing.exe; then
1926 if test -n "$DJGPP"; then
1927 echo \$dir/\$thing.exe
1929 : on Eunice apparently
1979 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1980 pth="$pth /lib /usr/lib"
1981 for file in $loclist; do
1985 if test -f "$xxx"; then
1988 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1989 xxx=`./loc $file $file $pth`
1992 '') xxx=`./loc $file $file $pth`;;
1993 *) xxx=`./loc $xxx $xxx $pth`;;
1999 echo $file is in $xxx.
2002 echo $file is in $xxx.
2005 echo "I don't know where '$file' is, and my life depends on it." >&4
2006 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2012 echo "Don't worry if any of the following aren't found..."
2014 for file in $trylist; do
2018 if test -f "$xxx"; then
2021 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2022 xxx=`./loc $file $file $pth`
2025 '') xxx=`./loc $file $file $pth`;;
2026 *) xxx=`./loc $xxx $xxx $pth`;;
2032 echo $file is in $xxx.
2035 echo $file is in $xxx.
2038 echo "I don't see $file out there, $say."
2045 echo "Substituting grep for egrep."
2051 echo "Substituting cp for ln."
2057 echo "Hopefully test is built into your sh."
2060 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2061 echo "Using the test built into your sh."
2069 echo "Hopefully echo is built into your sh."
2074 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2075 $echo $n "hi there$c" >foo1
2076 echo $n "hi there$c" >foo2
2077 if cmp foo1 foo2 >/dev/null 2>&1; then
2078 echo "They are compatible. In fact, they may be identical."
2085 They are not compatible! You are probably running ksh on a non-USG system.
2086 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2087 have echo built in and we may have to run some Bourne shell scripts. That
2088 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2091 $echo $n "The star should be here-->$c"
2101 cat <<'EOSC' >>checkcc
2106 int main(int argc, char *argv[]) {
2110 if $cc -o try $ccflags try.c; then
2113 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2119 case "`$cc -v -c try.c 2>&1`" in
2122 if $test X"$trygcc" = Xyes; then
2123 if gcc -o try -c try.c; then
2125 echo "You seem to have a working gcc, though." >&4
2126 rp="Would you like to use it?"
2128 if $test -f myread; then
2131 if $test -f UU/myread; then
2134 echo "Cannot find myread, sorry. Aborting." >&2
2139 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2143 if $test X"$despair" = Xyes; then
2145 You need to find a working C compiler.
2146 Either (purchase and) install the C compiler supplied by your OS vendor,
2147 or for a free C compiler try http://gcc.gnu.org/
2148 I cannot continue any further, aborting.
2158 : determine whether symbolic links are supported
2161 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2162 echo "Symbolic links are supported." >&4
2165 echo "Symbolic links are NOT supported." >&4
2170 : see whether [:lower:] and [:upper:] are supported character classes
2172 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2174 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2178 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2179 # (0xc9 and 0xd1), therefore that is a nice testing point.
2180 if test "X$up" = X -o "X$low" = X; then
2181 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2187 if test "X$up" = X -o "X$low" = X; then
2188 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2194 if test "X$up" = X -o "X$low" = X; then
2195 case "`echo IJ | od -x 2>/dev/null`" in
2197 echo "Hey, this might be EBCDIC." >&4
2198 if test "X$up" = X -o "X$low" = X; then
2199 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2200 ij) up='[A-IJ-RS-Z]'
2205 if test "X$up" = X -o "X$low" = X; then
2206 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2216 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2218 echo "Using $up and $low to convert case." >&4
2221 echo "I don't know how to translate letters from upper to lower case." >&4
2222 echo "Your tr is not acting any way I know of." >&4
2226 : set up the translation script tr, must be called with ./tr of course
2230 '[A-Z][a-z]') exec $tr '$up' '$low';;
2231 '[a-z][A-Z]') exec $tr '$low' '$up';;
2238 : Try to determine whether config.sh was made on this system
2239 case "$config_sh" in
2241 myuname=`$uname -a 2>/dev/null`
2242 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2243 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2244 # because the A-Z/a-z are not consecutive.
2245 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2246 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2247 newmyuname="$myuname"
2249 case "$knowitall" in
2251 if test -f ../config.sh; then
2252 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2253 eval "`grep myuname= ../config.sh`"
2255 if test "X$myuname" = "X$newmyuname"; then
2263 : Get old answers from old config file if Configure was run on the
2264 : same system, otherwise use the hints.
2267 if test -f config.sh; then
2269 rp="I see a config.sh file. Shall I use it to set the defaults?"
2272 n*|N*) echo "OK, I'll ignore it."
2273 mv config.sh config.sh.old
2274 myuname="$newmyuname"
2276 *) echo "Fetching default answers from your old config.sh file..." >&4
2284 : Older versions did not always set $sh. Catch re-use of such
2294 if test ! -f config.sh; then
2297 First time through, eh? I have some defaults handy for some systems
2298 that need some extra help getting the Configure answers right:
2301 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2303 : Half the following guesses are probably wrong... If you have better
2304 : tests or hints, please send them to perlbug@perl.org
2305 : The metaconfig authors would also appreciate a copy...
2306 $test -f /irix && osname=irix
2307 $test -f /xenix && osname=sco_xenix
2308 $test -f /dynix && osname=dynix
2309 $test -f /dnix && osname=dnix
2310 $test -f /lynx.os && osname=lynxos
2311 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2312 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2313 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2314 $test -f /bin/mips && /bin/mips && osname=mips
2315 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2316 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2317 $test -d /usr/apollo/bin && osname=apollo
2318 $test -f /etc/saf/_sactab && osname=svr4
2319 $test -d /usr/include/minix && osname=minix
2320 if $test -d /MachTen -o -d /MachTen_Folder; then
2322 if $test -x /sbin/version; then
2323 osvers=`/sbin/version | $awk '{print $2}' |
2324 $sed -e 's/[A-Za-z]$//'`
2325 elif $test -x /usr/etc/version; then
2326 osvers=`/usr/etc/version | $awk '{print $2}' |
2327 $sed -e 's/[A-Za-z]$//'`
2333 $test -f /sys/posix.dll &&
2334 $test -f /usr/bin/what &&
2335 set X `/usr/bin/what /sys/posix.dll` &&
2336 $test "$3" = UWIN &&
2340 if $test -f $uname; then
2348 umips) osname=umips ;;
2351 [23]100) osname=mips ;;
2352 next*) osname=next ;;
2354 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2355 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2358 elif $test -f /etc/kconfig; then
2360 if test "$lns" = "$ln -s"; then
2362 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2364 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2371 if test -n "$DJGPP"; then
2380 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2382 'not found') osvers="$4"."$3" ;;
2383 '<3240'|'<>3240') osvers=3.2.0 ;;
2384 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2385 '=3250'|'>3250') osvers=3.2.5 ;;
2389 bsd386) osname=bsd386
2392 cygwin*) osname=cygwin
2395 *dc.osx) osname=dcosx
2401 domainos) osname=apollo
2407 dynixptx*) osname=dynixptx
2408 osvers=`echo "$4"|sed 's/^v//'`
2410 freebsd) osname=freebsd
2412 genix) osname=genix ;;
2414 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2430 netbsd*) osname=netbsd
2433 news-os) osvers="$3"
2435 4*) osname=newsos4 ;;
2439 next*) osname=next ;;
2440 nonstop-ux) osname=nonstopux ;;
2441 POSIX-BC | posix-bc ) osname=posix-bc
2444 powerux | power_ux | powermax_os | powermaxos | \
2445 powerunix | power_unix) osname=powerux
2451 solaris) osname=solaris
2453 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2460 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2464 titanos) osname=titanos
2473 ultrix) osname=ultrix
2476 osf1|mls+) case "$5" in
2479 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2482 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2485 hp*) osname=hp_osf1 ;;
2486 mips) osname=mips_osf1 ;;
2489 unixware) osname=svr5
2495 $2) case "$osname" in
2499 : svr4.x or possibly later
2509 if test -f /stand/boot ; then
2510 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2511 if test -n "$INITPROG" -a -f "$INITPROG"; then
2512 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2513 if test -n "$isesix"; then
2521 *) if test -f /etc/systemid; then
2523 set `echo $3 | $sed 's/\./ /g'` $4
2524 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2526 elif $test -f $src/hints/sco_$1_$2.sh; then
2528 elif $test -f $src/hints/sco_$1.sh; then
2533 '') : Still unknown. Probably a generic Sys V.
2542 *) case "$osname" in
2543 '') : Still unknown. Probably a generic BSD.
2551 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2552 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2553 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2556 $rm -f UU/kernel.what
2557 elif test -d c:/.; then
2564 : Now look for a hint file osname_osvers, unless one has been
2565 : specified already.
2568 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2569 : Also try without trailing minor version numbers.
2570 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2571 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2572 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2573 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2576 *) case "$osvers" in
2579 *) if $test -f $src/hints/$file.sh ; then
2581 elif $test -f $src/hints/$xfile.sh ; then
2583 elif $test -f $src/hints/$xxfile.sh ; then
2585 elif $test -f $src/hints/$xxxfile.sh ; then
2587 elif $test -f $src/hints/$xxxxfile.sh ; then
2589 elif $test -f "$src/hints/${osname}.sh" ; then
2598 if $test -f Policy.sh ; then
2601 none) dflt="Policy" ;;
2602 *) dflt="Policy $dflt" ;;
2607 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2611 if $test -f Policy.sh ; then
2614 There's also a Policy hint file available, which should make the
2615 site-specific (policy) questions easier to answer.
2622 You may give one or more space-separated answers, or "none" if appropriate.
2623 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2624 is a good thing. DO NOT give a wrong version or a wrong OS.
2628 rp="Which of these apply, if any?"
2631 for file in $tans; do
2632 if $test X$file = XPolicy -a -f Policy.sh; then
2634 $cat Policy.sh >> UU/config.sh
2635 elif $test -f $src/hints/$file.sh; then
2636 . $src/hints/$file.sh
2637 $cat $src/hints/$file.sh >> UU/config.sh
2638 elif $test X$tans = X -o X$tans = Xnone ; then
2641 : Give one chance to correct a possible typo.
2642 echo "$file.sh does not exist"
2644 rp="hint to use instead?"
2646 for file in $ans; do
2647 if $test -f "$src/hints/$file.sh"; then
2648 . $src/hints/$file.sh
2649 $cat $src/hints/$file.sh >> UU/config.sh
2650 elif $test X$ans = X -o X$ans = Xnone ; then
2653 echo "$file.sh does not exist -- ignored."
2660 : Remember our hint file for later.
2661 if $test -f "$src/hints/$file.sh" ; then
2671 echo "Fetching default answers from $config_sh..." >&4
2675 cp $config_sh config.sh 2>/dev/null
2685 test "$override" && . ./optdef.sh
2687 : Restore computed paths
2688 for file in $loclist $trylist; do
2689 eval $file="\$_$file"
2694 Configure uses the operating system name and version to set some defaults.
2695 The default value is probably right if the name rings a bell. Otherwise,
2696 since spelling matters for me, either accept the default or answer "none"
2703 ''|' '|none) dflt=none ;;
2704 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2707 *) dflt="$osname" ;;
2709 rp="Operating system name?"
2713 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2719 ''|' '|none) dflt=none ;;
2720 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2721 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2723 ''|' ') dflt=none ;;
2728 *) dflt="$osvers" ;;
2730 rp="Operating system version?"
2740 : who configured the system
2741 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2742 cf_by=`(logname) 2>/dev/null`
2745 cf_by=`(whoami) 2>/dev/null`
2747 "") cf_by=unknown ;;
2751 : set up the script used to warn in case of inconsistency
2758 echo "*** WHOA THERE!!! ***" >&4
2759 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2760 rp=" Keep the $hint value?"
2763 y) td=$was; tu=$was;;
2767 : function used to set $1 to $val
2768 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2770 $define$undef) . ./whoa; eval "$var=\$td";;
2771 $undef$define) . ./whoa; eval "$var=\$tu";;
2772 *) eval "$var=$val";;
2775 case "$usethreads" in
2776 $define|true|[yY]*) dflt='y';;
2781 Perl can be built to take advantage of threads on some systems.
2782 To do so, Configure can be run with -Dusethreads.
2784 Note that threading is a highly experimental feature, and
2785 some known race conditions still remain. If you choose to try
2786 it, be very sure to not actually deploy it for production
2787 purposes. README.threads has more details, and is required
2788 reading if you enable threads.
2790 If this doesn't make any sense to you, just accept the default '$dflt'.
2792 rp='Build a threading Perl?'
2795 y|Y) val="$define" ;;
2801 case "$usethreads" in
2805 As of 5.5.640, Perl has two different internal threading implementations,
2806 the 5.005 version (5005threads) and an interpreter-based version
2807 (ithreads) that has one interpreter per thread. Both are very
2808 experimental. This arrangement exists to help developers work out
2809 which one is better.
2811 If you're a casual user, you probably don't want interpreter-threads
2812 at this time. There doesn't yet exist a way to create threads from
2813 within Perl in this model, i.e., "use Thread;" will NOT work.
2815 : Default to ithreads unless overridden on command line or with
2818 case "$use5005threads" in
2819 $define|true|[yY]*) dflt='n';;
2821 case "$useithreads" in
2822 $undef|false|[nN]*) dflt='n';;
2824 rp='Use interpreter-based ithreads?'
2827 y|Y) val="$define" ;;
2832 : Now set use5005threads to the opposite value.
2833 case "$useithreads" in
2834 $define) val="$undef" ;;
2841 useithreads="$undef"
2842 use5005threads="$undef"
2846 case "$d_oldpthreads" in
2847 '') : Configure tests would be welcome here. For now, assume undef.
2849 *) val="$d_oldpthreads" ;;
2855 case "$usethreads" in
2856 "$define"|true|[yY]*)
2857 : Look for a hint-file generated 'call-back-unit'. If the
2858 : user has specified that a threading perl is to be built,
2859 : we may need to set or change some other defaults.
2860 if $test -f usethreads.cbu; then
2861 echo "Your platform has some specific hints for threaded builds, using them..."
2865 (Your platform doesn't have any specific hints for threaded builds.
2866 Assuming POSIX threads, then.)
2874 Perl can be built so that multiple Perl interpreters can coexist
2875 within the same Perl executable.
2878 case "$useithreads" in
2881 This multiple interpreter support is required for interpreter-based threads.
2885 *) case "$usemultiplicity" in
2886 $define|true|[yY]*) dflt='y';;
2890 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2891 rp='Build Perl for multiplicity?'
2894 y|Y) val="$define" ;;
2902 : make some quick guesses about what we are up against
2904 $echo $n "Hmm... $c"
2914 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2915 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2917 echo "Looks kind of like an OSF/1 system, but we'll see..."
2919 elif test `echo abc | $tr a-z A-Z` = Abc ; then
2920 xxx=`./loc addbib blurfl $pth`
2921 if $test -f $xxx; then
2922 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2926 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2927 echo "Looks kind of like an extended USG system, but we'll see..."
2929 echo "Looks kind of like a USG system, but we'll see..."
2933 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2934 echo "Looks kind of like a BSD system, but we'll see..."
2938 echo "Looks kind of like a Version 7 system, but we'll see..."
2941 case "$eunicefix" in
2944 There is, however, a strange, musty smell in the air that reminds me of
2945 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2949 : it so happens the Eunice I know will not run shell scripts in Unix format
2953 echo "Congratulations. You aren't running Eunice."
2957 : Detect OS2. The p_ variable is set above in the Head.U unit.
2958 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
2959 : semicolon as a patch separator
2964 I have the feeling something is not exactly right, however...don't tell me...
2965 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2966 (Or you may be running DOS with DJGPP.)
2971 if test -f /xenix; then
2972 echo "Actually, this looks more like a XENIX system..."
2977 echo "It's not Xenix..."
2982 if test -f /venix; then
2983 echo "Actually, this looks more like a VENIX system..."
2990 echo "Nor is it Venix..."
2993 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2994 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3001 rp="Use which C compiler?"
3004 : Look for a hint-file generated 'call-back-unit'. Now that the
3005 : user has specified the compiler, we may need to set or change some
3007 if $test -f cc.cbu; then
3013 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3014 $cat >gccvers.c <<EOM
3019 printf("%s\n", __VERSION__);
3021 printf("%s\n", "1");
3027 if $cc -o gccvers $ldflags gccvers.c; then
3028 gccversion=`./gccvers`
3029 case "$gccversion" in
3030 '') echo "You are not using GNU cc." ;;
3031 *) echo "You are using GNU cc $gccversion."
3037 echo "*** WHOA THERE!!! ***" >&4
3038 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3039 case "$knowitall" in
3041 echo " You'd better start hunting for one and let me know about it." >&4
3047 case "$gccversion" in
3048 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3050 case "$gccversion" in
3051 '') gccosandvers='' ;;
3052 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3053 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3055 case "$gccosandvers" in
3056 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3057 $osname$osvers) ;; # looking good
3058 $osname*) cat <<EOM >&4
3060 *** WHOA THERE!!! ***
3062 Your gcc has not been compiled for the exact release of
3063 your operating system ($gccosandvers versus $osname$osvers).
3065 In general it is a good idea to keep gcc synchronized with
3066 the operating system because otherwise serious problems
3067 may ensue when trying to compile software, like Perl.
3069 I'm trying to be optimistic here, though, and will continue.
3070 If later during the configuration and build icky compilation
3071 problems appear (headerfile conflicts being the most common
3072 manifestation), I suggest reinstalling the gcc to match
3073 your operating system release.
3077 *) gccosandvers='' ;; # failed to parse, better be silent
3085 : see how we invoke the C preprocessor
3087 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3088 cat <<'EOT' >testcpp.c
3094 if test ! -f cppstdin; then
3095 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3096 # AIX cc -E doesn't show the absolute headerfile
3097 # locations but we'll cheat by using the -M flag.
3098 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
3100 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3103 echo "Keeping your $hint cppstdin wrapper."
3106 wrapper=`pwd`/cppstdin
3110 if $test "X$cppstdin" != "X" && \
3111 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3112 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3114 echo "You used to use $cppstdin $cppminus so we'll use that again."
3116 '') echo "But let's see if we can live without a wrapper..." ;;
3118 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3119 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3121 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3124 echo "(However, $cpprun $cpplast does not work, let's see...)"
3132 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3139 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3140 $cc -E <testcpp.c >testcpp.out 2>&1; \
3141 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3142 echo "Yup, it does."
3145 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3146 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3147 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3148 echo "Yup, it does."
3151 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3152 $cc -P <testcpp.c >testcpp.out 2>&1; \
3153 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3154 echo "Yipee, that works!"
3157 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3158 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3159 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3160 echo "At long last!"
3163 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3164 $cpp <testcpp.c >testcpp.out 2>&1; \
3165 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3169 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3170 $cpp - <testcpp.c >testcpp.out 2>&1; \
3171 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3172 echo "Hooray, it works! I was beginning to wonder."
3175 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3176 $wrapper <testcpp.c >testcpp.out 2>&1; \
3177 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3183 rp="No dice. I can't find a C preprocessor. Name one:"
3187 $x_cpp <testcpp.c >testcpp.out 2>&1
3188 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3189 echo "OK, that will do." >&4
3191 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3206 echo "Perhaps can we force $cc -E using a wrapper..."
3207 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3208 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3214 echo "Nope, we'll have to live without it..."
3228 "$wrapper"|'cppstdin') ;;
3229 *) $rm -f $wrapper;;
3231 $rm -f testcpp.c testcpp.out
3233 : decide how portable to be. Allow command line overrides.
3234 case "$d_portable" in
3236 *) d_portable="$define" ;;
3239 : set up shell script to do ~ expansion
3245 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3248 if $test -f /bin/csh; then
3249 /bin/csh -f -c "glob \$1"
3254 name=\`$expr x\$1 : '..\([^/]*\)'\`
3255 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3256 if $test ! -d "\$dir"; then
3258 echo "\$me: can't locate home directory for: \$name" >&2
3263 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3279 : now set up to get a file name
3283 cat <<'EOSC' >>getfile
3299 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3300 fn=`echo $fn | sed 's/(.*)//'`
3306 loc_file=`expr $fn : '.*:\(.*\)'`
3307 fn=`expr $fn : '\(.*\):.*'`
3315 */*) fullpath=true;;
3324 *e*) exp_file=true;;
3327 *p*) nopath_ok=true;;
3332 *d*) type='Directory';;
3333 *l*) type='Locate';;
3338 Locate) what='File';;
3343 case "$d_portable" in
3351 while test "$type"; do
3356 true) rp="$rp (~name ok)";;
3359 if test -f UU/getfile.ok && \
3360 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3379 value=`UU/filexp $ans`
3382 if test "$ans" != "$value"; then
3383 echo "(That expands to $value on this system.)"
3397 /*) value="$ansexp" ;;
3398 [a-zA-Z]:/*) value="$ansexp" ;;
3403 echo "I shall only accept a full path name, as in /bin/ls." >&4
3404 echo "Use a ! shell escape if you wish to check pathnames." >&4
3407 echo "Please give a full path name, starting with slash." >&4
3410 echo "Note that using ~name is ok provided it expands well." >&4
3423 for fp in $gfpth; do
3424 if test "X$fp" = X.; then
3429 if test -f "$pf"; then
3431 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3433 echo "($value is not a plain file, but that's ok.)"
3436 if test X"$type" = X; then
3443 for fp in $gfpth; do
3444 if test "X$fp" = X.; then
3449 direxp="$fp/$ansexp"
3451 if test -d "$direxp"; then
3459 if test -d "$ansexp"; then
3460 echo "(Looking for $loc_file in directory $value.)"
3461 value="$value/$loc_file"
3462 ansexp="$ansexp/$loc_file"
3464 if test -f "$ansexp"; then
3467 case "$nopath_ok" in
3468 true) case "$value" in
3470 *) echo "Assuming $value will be in people's path."
3486 if test "$fastread" = yes; then
3491 rp="$what $value doesn't exist. Use that name anyway?"
3510 test "X$gfpthkeep" != Xy && gfpth=""
3513 : What should the include directory be ?
3515 $echo $n "Hmm... $c"
3519 if $test -f /bin/mips && /bin/mips; then
3520 echo "Looks like a MIPS system..."
3521 $cat >usr.c <<'EOCP'
3522 #ifdef SYSTYPE_BSD43
3526 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3527 dflt='/bsd43/usr/include'
3531 mips_type='System V'
3533 $rm -f usr.c usr.out
3534 echo "and you're compiling with the $mips_type compiler and libraries."
3538 echo "Doesn't look like a MIPS system."
3548 case "$xxx_prompt" in
3551 rp='Where are the include files you want to use?'
3559 : Set private lib path
3562 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3567 '') dlist="$loclibpth $plibpth $glibpth";;
3568 *) dlist="$libpth";;
3571 : Now check and see which directories actually exist, avoiding duplicates
3575 if $test -d $xxx; then
3578 *) libpth="$libpth $xxx";;
3584 Some systems have incompatible or broken versions of libraries. Among
3585 the directories listed in the question below, please remove any you
3586 know not to be holding relevant libraries, and add any that are needed.
3587 Say "none" for none.
3598 rp="Directories to use for library searches?"
3605 : compute shared library extension
3608 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3618 On some systems, shared libraries may be available. Answer 'none' if
3619 you want to suppress searching of shared libraries for the remainder
3620 of this configuration.
3623 rp='What is the file extension used for shared libraries?'
3627 : Define several unixisms.
3628 : Hints files or command line option can be used to override them.
3629 : The convoluted testing is in case hints files set either the old
3632 '') case "$exe_ext" in
3634 *) _exe="$exe_ext" ;;
3639 '') case "$lib_ext" in
3646 '') case "$obj_ext" in
3653 '') case "$path_sep" in
3664 : Which makefile gets called first. This is used by make depend.
3665 case "$firstmakefile" in
3666 '') firstmakefile='makefile';;
3670 $define|true|[yY]*) dflt='y';;
3675 Perl can be built to use the SOCKS proxy protocol library. To do so,
3676 Configure must be run with -Dusesocks.
3678 If this doesn't make any sense to you, just accept the default '$dflt'.
3680 rp='Build Perl for SOCKS?'
3683 y|Y) val="$define" ;;
3689 : Looking for optional libraries
3691 echo "Checking for optional libraries..." >&4
3696 case "$libswanted" in
3697 '') libswanted='c_s';;
3700 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3706 for thisdir in $libpth $xlibpth; do
3707 test -d $thisdir && libspath="$libspath $thisdir"
3709 for thislib in $libswanted; do
3710 for thisdir in $libspath; do
3712 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3713 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3714 $test -f "$xxx" && eval $libscheck
3715 $test -f "$xxx" && libstyle=shared
3717 if test ! -f "$xxx"; then
3718 xxx=$thisdir/lib$thislib.$so
3719 $test -f "$xxx" && eval $libscheck
3720 $test -f "$xxx" && libstyle=shared
3722 if test ! -f "$xxx"; then
3723 xxx=$thisdir/lib$thislib$_a
3724 $test -f "$xxx" && eval $libscheck
3725 $test -f "$xxx" && libstyle=static
3727 if test ! -f "$xxx"; then
3728 xxx=$thisdir/$thislib$_a
3729 $test -f "$xxx" && eval $libscheck
3730 $test -f "$xxx" && libstyle=static
3732 if test ! -f "$xxx"; then
3733 xxx=$thisdir/lib${thislib}_s$_a
3734 $test -f "$xxx" && eval $libscheck
3735 $test -f "$xxx" && libstyle=static
3736 $test -f "$xxx" && thislib=${thislib}_s
3738 if test ! -f "$xxx"; then
3739 xxx=$thisdir/Slib$thislib$_a
3740 $test -f "$xxx" && eval $libscheck
3741 $test -f "$xxx" && libstyle=static
3743 if $test -f "$xxx"; then
3745 shared) echo "Found -l$thislib (shared)." ;;
3746 static) echo "Found -l$thislib." ;;
3747 *) echo "Found -l$thislib ($libstyle)." ;;
3751 *) dflt="$dflt -l$thislib"
3752 libsfound="$libsfound $xxx"
3754 libsfiles="$libsfiles $yyy"
3755 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3756 case " $libsdirs " in
3758 *) libsdirs="$libsdirs $yyy" ;;
3765 if $test ! -f "$xxx"; then
3766 echo "No -l$thislib."
3777 ' '|'') dflt='none';;
3782 In order to compile $package on your machine, a number of libraries
3783 are usually needed. Include any other special libraries here as well.
3784 Say "none" for none. The default list is almost always right.
3788 rp="What libraries to use?"
3795 : determine optimization, if desired, or use for debug flag also
3797 ' '|$undef) dflt='none';;
3799 *) dflt="$optimize";;
3803 By default, $package compiles with the -O flag to use the optimizer.
3804 Alternately, you might want to use the symbolic debugger, which uses
3805 the -g flag (on traditional Unix systems). Either flag can be
3806 specified here. To use neither flag, specify the word "none".
3809 rp="What optimizer/debugger flag should be used?"
3813 'none') optimize=" ";;
3817 : We will not override a previous value, but we might want to
3818 : augment a hint file
3820 default|recommended)
3821 case "$gccversion" in
3822 1*) dflt='-fpcc-struct-return' ;;
3825 *-g*) dflt="$dflt -DDEBUGGING";;
3827 case "$gccversion" in
3828 2*) if test -d /etc/conf/kconfig.d &&
3829 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3835 case "$gccversion" in
3839 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3840 echo 'int main(void) { return 0; }' > gcctest.c
3841 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3842 echo "Yes, it does." 2>&1
3845 echo "Leaving current flags $ccflags alone." 2>&1
3847 *) dflt="$dflt -fno-strict-aliasing" ;;
3850 echo "Nope, it doesn't, but that's ok." 2>&1
3857 case "$mips_type" in
3858 *BSD*|'') inclwanted="$locincpth $usrinc";;
3859 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3861 for thisincl in $inclwanted; do
3862 if $test -d $thisincl; then
3863 if $test x$thisincl != x$usrinc; then
3865 *" -I$thisincl "*);;
3866 *) dflt="$dflt -I$thisincl ";;
3872 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3874 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3882 *) dflt="$dflt -D$2";;
3886 set signal.h LANGUAGE_C; eval $inctest
3890 ccflags="$ccflags -DSOCKS"
3895 default|recommended) dflt="$ccflags $dflt" ;;
3896 *) dflt="$ccflags";;
3905 Your C compiler may want other flags. For this question you should include
3906 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3907 but you should NOT include libraries or ld flags like -lwhatever. If you
3908 want $package to honor its debug switch, you should include -DDEBUGGING here.
3909 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3911 To use no flags, specify the word "none".
3917 rp="Any additional cc flags?"
3924 : the following weeds options from ccflags that are of no interest to cpp
3926 case "$gccversion" in
3927 1*) cppflags="$cppflags -D__GNUC__"
3929 case "$mips_type" in
3931 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3937 echo "Let me guess what the preprocessor flags are..." >&4
3951 *) ftry="$previous $flag";;
3953 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3954 >cpp1.out 2>/dev/null && \
3955 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3956 >cpp2.out 2>/dev/null && \
3957 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3958 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3960 cppflags="$cppflags $ftry"
3970 *-*) echo "They appear to be: $cppflags";;
3972 $rm -f cpp.c cpp?.out
3976 : flags used in final linking phase
3978 '') if ./venix; then
3984 *-posix*) dflt="$dflt -posix" ;;
3987 *) dflt="$ldflags";;
3990 : Try to guess additional flags to pick up local libraries.
3991 for thislibdir in $libpth; do
3992 case " $loclibpth " in
3995 *"-L$thislibdir "*) ;;
3996 *) dflt="$dflt -L$thislibdir" ;;
4008 Your C linker may need flags. For this question you should
4009 include -L/whatever and any other flags used by the C linker, but you
4010 should NOT include libraries like -lwhatever.
4012 Make sure you include the appropriate -L/path flags if your C linker
4013 does not normally search all of the directories you specified above,
4016 To use no flags, specify the word "none".
4020 rp="Any additional ld flags (NOT including libraries)?"
4026 rmlist="$rmlist pdp11"
4030 echo "Checking your choice of C compiler and flags for coherency..." >&4
4031 $cat > try.c <<'EOF'
4033 int main() { printf("Ok\n"); exit(0); }
4035 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4037 $cat >try.msg <<'EOM'
4038 I've tried to compile and run the following simple program:
4041 $cat try.c >> try.msg
4043 $cat >> try.msg <<EOM
4050 and I got the following output:
4054 if sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4055 if sh -c './try' >>try.msg 2>&1; then
4059 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4062 cat >> try.msg <<'EOQS'
4063 If $libs contains -lsfio, and sfio is mis-configured, then it
4064 sometimes (apparently) runs and exits with a 0 status, but with no
4065 output! It may have to do with sfio's use of _exit vs. exit.
4068 rp="You have a big problem. Shall I abort Configure"
4075 echo "The program compiled OK, but exited with status $?." >>try.msg
4076 rp="You have a problem. Shall I abort Configure"
4080 echo "I can't compile the test program." >>try.msg
4081 rp="You have a BIG problem. Shall I abort Configure"
4087 case "$knowitall" in
4089 echo "(The supplied flags or libraries might be incorrect.)"
4097 *) echo "Ok. Stopping Configure." >&4
4102 n) echo "OK, that should do.";;
4104 $rm -f try try.* core
4106 : define an is-a-typedef? function
4107 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4109 "") inclist="sys/types.h";;
4111 eval "varval=\$$var";
4115 for inc in $inclist; do
4116 echo "#include <$inc>" >>temp.c;
4118 echo "#ifdef $type" >> temp.c;
4119 echo "printf(\"We have $type\");" >> temp.c;
4120 echo "#endif" >> temp.c;
4121 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4122 if $contains $type temp.E >/dev/null 2>&1; then
4128 *) eval "$var=\$varval";;
4131 : define an is-a-typedef? function that prompts if the type is not available.
4132 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4134 "") inclist="sys/types.h";;
4136 eval "varval=\$$var";
4140 for inc in $inclist; do
4141 echo "#include <$inc>" >>temp.c;
4143 echo "#ifdef $type" >> temp.c;
4144 echo "printf(\"We have $type\");" >> temp.c;
4145 echo "#endif" >> temp.c;
4146 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4148 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4149 if $contains $type temp.E >/dev/null 2>&1; then
4150 echo "$type found." >&4;
4153 echo "$type NOT found." >&4;
4159 *) eval "$var=\$varval";;
4162 : define a shorthand compile call
4166 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4167 : define a shorthand compile call for compilations that should be ok.
4171 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4173 : check for lengths of integral types
4177 echo "Checking to see how big your integers are..." >&4
4178 $cat >intsize.c <<'EOCP'
4182 printf("intsize=%d;\n", (int)sizeof(int));
4183 printf("longsize=%d;\n", (int)sizeof(long));
4184 printf("shortsize=%d;\n", (int)sizeof(short));
4189 if eval $compile_ok && ./intsize > /dev/null; then
4191 echo "Your integers are $intsize bytes long."
4192 echo "Your long integers are $longsize bytes long."
4193 echo "Your short integers are $shortsize bytes long."
4197 Help! I can't compile and run the intsize test program: please enlighten me!
4198 (This is probably a misconfiguration in your system or libraries, and
4199 you really ought to fix it. Still, I'll try anyway.)
4203 rp="What is the size of an integer (in bytes)?"
4207 rp="What is the size of a long integer (in bytes)?"
4211 rp="What is the size of a short integer (in bytes)?"
4217 $rm -f intsize intsize.*
4219 : see what type lseek is declared as in the kernel
4220 rp="What is the type used for lseek's offset on this system?"
4221 set off_t lseektype long stdio.h sys/types.h
4225 echo "Checking to see how big your file offsets are..." >&4
4227 #include <sys/types.h>
4231 printf("%d\n", (int)sizeof($lseektype));
4236 if eval $compile_ok; then
4238 echo "Your file offsets are $lseeksize bytes long."
4242 echo "(I can't seem to compile the test program. Guessing...)"
4243 rp="What is the size of your file offsets (in bytes)?"
4249 : see what type file positions are declared as in the library
4250 rp="What is the type for file position used by fsetpos()?"
4251 set fpos_t fpostype long stdio.h sys/types.h
4256 *_t) zzz="$fpostype" ;;
4259 echo "Checking the size of $zzz..." >&4
4261 #include <sys/types.h>
4264 printf("%d\n", (int)sizeof($fpostype));
4269 if eval $compile_ok; then
4273 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4276 echo "Your $zzz is $fpossize bytes long."
4282 echo "(I can't compile the test program. Guessing...)" >&4
4283 rp="What is the size of your file positions (in bytes)?"
4290 # Backward compatibility (uselfs is deprecated).
4292 "$define"|true|[yY]*)
4295 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4297 uselargefiles="$define"
4301 case "$lseeksize:$fpossize" in
4304 You can have files larger than 2 gigabytes.
4307 *) case "$uselargefiles" in
4308 "$undef"|false|[nN]*) dflt='n' ;;
4313 Perl can be built to understand large files (files larger than 2 gigabytes)
4314 on some systems. To do so, Configure can be run with -Duselargefiles.
4316 If this doesn't make any sense to you, just accept the default '$dflt'.
4318 rp='Try to understand large files, if available?'
4321 y|Y) val="$define" ;;
4328 case "$uselargefiles" in
4330 : Look for a hint-file generated 'call-back-unit'. If the
4331 : user has specified that a large files perl is to be built,
4332 : we may need to set or change some other defaults.
4333 if $test -f uselargefiles.cbu; then
4334 echo "Your platform has some specific hints for large file builds, using them..."
4335 . ./uselargefiles.cbu
4337 echo "Rechecking to see how big your file offsets are..." >&4
4339 #include <sys/types.h>
4343 printf("%d\n", (int)sizeof($lseektype));
4348 if eval $compile_ok; then
4350 $echo "Your file offsets are now $lseeksize bytes long."
4354 echo "(I can't seem to compile the test program. Guessing...)"
4355 rp="What is the size of your file offsets (in bytes)?"
4360 *_t) zzz="$fpostype" ;;
4363 $echo $n "Rechecking the size of $zzz...$c" >&4
4365 #include <sys/types.h>
4368 printf("%d\n", (int)sizeof($fpostype));
4373 if eval $compile_ok; then
4378 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4381 echo " $fpossize bytes." >&4
4387 echo "(I can't compile the test program. Guessing...)" >&4
4388 rp="What is the size of your file positions (in bytes)?"
4398 case "$usemorebits" in
4399 "$define"|true|[yY]*)
4400 use64bitint="$define"
4401 uselongdouble="$define"
4402 usemorebits="$define"
4404 *) usemorebits="$undef"
4409 case "$uselonglong" in
4410 "$define"|true|[yY]*)
4413 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4415 use64bitint="$define"
4418 case "$use64bits" in
4419 "$define"|true|[yY]*)
4422 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4424 use64bitint="$define"
4427 case "$use64bitints" in
4428 "$define"|true|[yY]*)
4431 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4433 use64bitint="$define"
4436 case "$use64bitsint" in
4437 "$define"|true|[yY]*)
4440 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4442 use64bitint="$define"
4445 case "$uselonglongs" in
4446 "$define"|true|[yY]*)
4449 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4451 use64bitint="$define"
4454 case "$use64bitsall" in
4455 "$define"|true|[yY]*)
4458 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4460 use64bitall="$define"
4465 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4467 case "$use64bitall" in
4468 "$define"|true|[yY]*) use64bitint="$define" ;;
4474 You have natively 64-bit long integers.
4478 *) case "$use64bitint" in
4479 "$define"|true|[yY]*) dflt='y';;
4484 Perl can be built to take advantage of 64-bit integer types
4485 on some systems. To do so, Configure can be run with -Duse64bitint.
4486 Choosing this option will most probably introduce binary incompatibilities.
4488 If this doesn't make any sense to you, just accept the default '$dflt'.
4490 rp='Try to use 64-bit integers, if available?'
4493 [yY]*) val="$define" ;;
4501 case "$use64bitall" in
4502 "$define"|true|[yY]*) dflt='y' ;;
4503 *) case "$longsize" in
4511 You may also choose to try maximal 64-bitness. It means using as much
4512 64-bitness as possible on the platform. This in turn means even more
4513 binary incompatibilities. On the other hand, your platform may not
4514 have any more 64-bitness available than what you already have chosen.
4516 If this doesn't make any sense to you, just accept the default '$dflt'.
4518 rp='Try to use maximal 64-bit support, if available?'
4521 [yY]*) val="$define" ;;
4526 case "$use64bitall" in
4528 case "$use64bitint" in
4532 Since you have chosen a maximally 64-bit build, I'm also turning on
4533 the use of 64-bit integers.
4535 use64bitint="$define" ;;
4540 case "$use64bitint" in
4541 "$define"|true|[yY]*)
4542 : Look for a hint-file generated 'call-back-unit'. If the
4543 : user has specified that a 64-bit perl is to be built,
4544 : we may need to set or change some other defaults.
4545 if $test -f use64bitint.cbu; then
4546 echo "Your platform has some specific hints for 64-bit integers, using them..."
4550 4) case "$archname64" in
4551 '') archname64=64int ;;
4558 case "$use64bitall" in
4559 "$define"|true|[yY]*)
4560 : Look for a hint-file generated 'call-back-unit'. If the
4561 : user has specified that a maximally 64-bit perl is to be built,
4562 : we may need to set or change some other defaults.
4563 if $test -f use64bitall.cbu; then
4564 echo "Your platform has some specific hints for 64-bit builds, using them..."
4568 4) case "$archname64" in
4569 ''|64int) archname64=64all ;;
4577 echo "Checking for GNU C Library..." >&4
4578 cat >gnulibc.c <<EOM
4590 if eval $compile_ok && ./gnulibc; then
4592 echo "You are using the GNU C Library"
4595 echo "You are not using the GNU C Library"
4601 : see if nm is to be used to determine whether a symbol is defined or not
4605 case "$d_gnulibc" in
4608 echo "nm probably won't work on the GNU C Library." >&4
4614 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4616 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
4617 echo "'nm' won't be sufficient on this sytem." >&4
4623 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4624 if $test $dflt -gt 20; then
4634 true|$define) dflt=y;;
4641 I can use $nm to extract the symbols from your C libraries. This
4642 is a time consuming task which may generate huge output on the disk (up
4643 to 3 megabytes) but that should make the symbols extraction faster. The
4644 alternative is to skip the 'nm' extraction part and to compile a small
4645 test program instead to determine whether each symbol is present. If
4646 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4647 this may be the best solution.
4649 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4652 rp="Shall I use $nm to extract C symbols from the libraries?"
4655 [Nn]*) usenm=false;;
4664 : nm options which may be necessary
4666 '') if $test -f /mach_boot; then
4668 elif $test -d /usr/ccs/lib; then
4669 nm_opt='-p' # Solaris (and SunOS?)
4670 elif $test -f /dgux; then
4672 elif $test -f /lib64/rld; then
4673 nm_opt='-p' # 64-bit Irix
4679 : nm options which may be necessary for shared libraries but illegal
4680 : for archive libraries. Thank you, Linux.
4681 case "$nm_so_opt" in
4682 '') case "$myuname" in
4684 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4685 nm_so_opt='--dynamic'
4694 : get list of predefined functions in a handy place
4699 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4706 *) for thislib in $libs; do
4709 : Handle C library specially below.
4712 thislib=`echo $thislib | $sed -e 's/^-l//'`
4713 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4715 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4717 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4719 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4721 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4723 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4725 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4730 libnames="$libnames $try"
4732 *) libnames="$libnames $thislib" ;;
4741 for xxx in $libpth; do
4742 $test -r $1 || set $xxx/libc.$so
4743 : The messy sed command sorts on library version numbers.
4745 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4746 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4748 s/[0-9][0-9]*/0000&/g
4749 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4752 $sort | $sed -e 's/^.* //'`
4755 $test -r $1 || set /usr/ccs/lib/libc.$so
4756 $test -r $1 || set /lib/libsys_s$_a
4762 if $test -r "$1"; then
4763 echo "Your (shared) C library seems to be in $1."
4765 elif $test -r /lib/libc && $test -r /lib/clib; then
4766 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4768 libc='/lib/clib /lib/libc'
4769 if $test -r /lib/syslib; then
4770 echo "(Your math library is in /lib/syslib.)"
4771 libc="$libc /lib/syslib"
4773 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4774 echo "Your C library seems to be in $libc, as you said before."
4775 elif $test -r $incpath/usr/lib/libc$_a; then
4776 libc=$incpath/usr/lib/libc$_a;
4777 echo "Your C library seems to be in $libc. That's fine."
4778 elif $test -r /lib/libc$_a; then
4780 echo "Your C library seems to be in $libc. You're normal."
4782 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4784 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4785 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4786 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4788 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4790 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4793 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4795 if $test -r "$tans"; then
4796 echo "Your C library seems to be in $tans, of all places."
4802 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4806 If the guess above is wrong (which it might be if you're using a strange
4807 compiler, or your machine supports multiple models), you can override it here.
4812 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
4814 I can't seem to find your C library. I've looked in the following places:
4817 $sed 's/^/ /' libpath
4820 None of these seems to contain your C library. I need to get its name...
4825 rp='Where is your C library?'
4830 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
4831 set X `cat libnames`
4834 case $# in 1) xxx=file; esac
4835 echo "Extracting names from the following $xxx for later perusal:" >&4
4837 $sed 's/^/ /' libnames >&4
4839 $echo $n "This may take a while...$c" >&4
4843 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4844 *) $nm $nm_opt $file 2>/dev/null;;
4849 $grep fprintf libc.tmp > libc.ptf
4850 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4851 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4853 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
4855 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4857 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4859 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4861 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4863 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4865 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4867 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4869 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4871 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4873 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4875 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4877 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4878 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
4880 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4882 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4884 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4886 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4888 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4890 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4892 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4894 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4896 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4898 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4900 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4902 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4904 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4906 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
4908 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4911 $nm -p $* 2>/dev/null >libc.tmp
4912 $grep fprintf libc.tmp > libc.ptf
4913 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4914 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4920 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4922 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4923 for thisname in $libnames $libc; do
4924 $ar t $thisname >>libc.tmp
4926 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4928 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4929 # Repeat libc to extract forwarders to DLL entries too
4930 for thisname in $libnames $libc; do
4931 $ar tv $thisname >>libc.tmp
4932 # Revision 50 of EMX has bug in $ar.
4933 # it will not extract forwarders to DLL entries
4934 # Use emximp which will extract exactly them.
4935 emximp -o tmp.imp $thisname \
4937 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4938 < tmp.imp >>libc.tmp
4941 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4944 echo "$ar didn't seem to work right." >&4
4945 echo "Maybe this is a Cray...trying bld instead..." >&4
4946 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4948 for thisname in $libnames; do
4950 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4951 $ar t $thisname >>libc.tmp
4955 echo "That didn't work either. Giving up." >&4
4962 if $test -f /lib/syscalls.exp; then
4964 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4965 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
4969 $rm -f libnames libpath
4971 : is a C symbol defined?
4974 -v) tf=libc.tmp; tc=""; tdc="";;
4975 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4976 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4979 case "$reuseval-$4" in
4981 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4987 if $contains $tlook $tf >/dev/null 2>&1;
4992 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4993 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5001 $define) tval=true;;
5007 : define an is-in-libc? function
5008 inlibc='echo " "; td=$define; tu=$undef;
5009 sym=$1; var=$2; eval "was=\$$2";
5011 case "$reuseval$was" in
5021 echo "$sym() found." >&4;
5022 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5024 echo "$sym() NOT found." >&4;
5025 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5029 $define) echo "$sym() found." >&4;;
5030 *) echo "$sym() NOT found." >&4;;
5034 : see if sqrtl exists
5039 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5042 case "$uselongdouble" in
5043 $define|true|[yY]*) dflt='y';;
5048 Perl can be built to take advantage of long doubles which
5049 (if available) may give more accuracy and range for floating point numbers.
5051 If this doesn't make any sense to you, just accept the default '$dflt'.
5053 rp='Try to use long doubles if available?'
5056 y|Y) val="$define" ;;
5062 case "$uselongdouble" in
5063 true|[yY]*) uselongdouble="$define" ;;
5066 case "$uselongdouble" in
5068 : Look for a hint-file generated 'call-back-unit'. If the
5069 : user has specified that long doubles should be used,
5070 : we may need to set or change some other defaults.
5071 if $test -f uselongdouble.cbu; then
5072 echo "Your platform has some specific hints for long doubles, using them..."
5073 . ./uselongdouble.cbu
5076 (Your platform doesn't have any specific hints for long doubles.)
5082 case "$uselongdouble:$d_sqrtl" in
5086 *** You requested the use of long doubles but you do not seem to have
5087 *** the mathematic functions for long doubles. I'm disabling the use
5088 *** of long doubles.
5091 uselongdouble=$undef
5095 : check for length of double
5097 case "$doublesize" in
5099 echo "Checking to see how big your double precision numbers are..." >&4
5100 $cat >try.c <<'EOCP'
5104 printf("%d\n", (int)sizeof(double));
5109 if eval $compile_ok; then
5111 echo "Your double is $doublesize bytes long."
5114 echo "(I can't seem to compile the test program. Guessing...)"
5115 rp="What is the size of a double precision number (in bytes)?"
5123 : check for long doubles
5125 echo "Checking to see if you have long double..." >&4
5126 echo 'int main() { long double x = 7.0; }' > try.c
5128 if eval $compile; then
5130 echo "You have long double."
5133 echo "You do not have long double."
5139 : check for length of long double
5140 case "${d_longdbl}${longdblsize}" in
5143 echo "Checking to see how big your long doubles are..." >&4
5144 $cat >try.c <<'EOCP'
5148 printf("%d\n", sizeof(long double));
5153 if eval $compile; then
5154 longdblsize=`./try$exe_ext`
5155 echo "Your long doubles are $longdblsize bytes long."
5159 echo "(I can't seem to compile the test program. Guessing...)" >&4
5160 rp="What is the size of a long double (in bytes)?"
5164 if $test "X$doublesize" = "X$longdblsize"; then
5165 echo "(That isn't any different from an ordinary double.)"
5171 : determine the architecture name
5173 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5174 tarch=`arch`"-$osname"
5175 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5176 if uname -m > tmparch 2>&1 ; then
5177 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5178 -e 's/$/'"-$osname/" tmparch`
5186 case "$myarchname" in
5189 echo "(Your architecture name used to be $myarchname.)"
5196 *) dflt="$archname";;
5198 rp='What is your architecture name'
5201 case "$usethreads" in
5203 echo "Threads selected." >&4
5205 *-thread*) echo "...and architecture name already has -thread." >&4
5207 *) archname="$archname-thread"
5208 echo "...setting architecture name to $archname." >&4
5213 case "$usemultiplicity" in
5215 echo "Multiplicity selected." >&4
5217 *-multi*) echo "...and architecture name already has -multi." >&4
5219 *) archname="$archname-multi"
5220 echo "...setting architecture name to $archname." >&4
5225 case "$use64bitint$use64bitall" in
5227 case "$archname64" in
5229 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5232 case "$use64bitint" in
5233 "$define") echo "64 bit integers selected." >&4 ;;
5235 case "$use64bitall" in
5236 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5239 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5241 *) archname="$archname-$archname64"
5242 echo "...setting architecture name to $archname." >&4
5248 case "$uselongdouble" in
5250 echo "Long doubles selected." >&4
5251 case "$longdblsize" in
5253 "...but long doubles are equal to doubles, not changing architecture name." >&4
5257 *-ld*) echo "...and architecture name already has -ld." >&4
5259 *) archname="$archname-ld"
5260 echo "...setting architecture name to $archname." >&4
5268 : determine root of directory hierarchy where package will be installed.
5271 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5279 By default, $package will be installed in $dflt/bin, manual pages
5280 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5281 installation directories. Typically this is something like /usr/local.
5282 If you wish to have binaries under /usr/bin but other parts of the
5283 installation under /usr/local, that's ok: you will be prompted
5284 separately for each of the installation directories, the prefix being
5285 only used to set the defaults.
5289 rp='Installation prefix to use?'
5297 *) oldprefix="$prefix";;
5307 $define|true) afs=true ;;
5308 $undef|false) afs=false ;;
5309 *) if test -d /afs; then
5317 echo "AFS may be running... I'll be extra cautious then..." >&4
5319 echo "AFS does not seem to be running..." >&4
5322 : determine installation prefix for where package is to be installed.
5326 Since you are running AFS, I need to distinguish the directory in which
5327 files will reside from the directory in which they are installed (and from
5328 which they are presumably copied to the former directory by occult means).
5331 case "$installprefix" in
5332 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5333 *) dflt="$installprefix";;
5338 In some special cases, particularly when building $package for distribution,
5339 it is convenient to distinguish between the directory in which files should
5340 be installed from the directory ($prefix) in which they
5341 will eventually reside. For most users, these two directories are the same.
5344 case "$installprefix" in
5346 *) dflt=$installprefix;;
5350 rp='What installation prefix should I use for installing files?'
5352 installprefix="$ans"
5353 installprefixexp="$ansexp"
5355 : set the prefixit variable, to compute a suitable default value
5356 prefixit='case "$3" in
5358 case "$oldprefix" in
5359 "") eval "$1=\"\$$2\"";;
5366 ""|" ") eval "$1=\"\$$2\"";;
5372 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5374 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5375 /*-$oldprefix/*|\~*-$oldprefix/*)
5376 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5377 *) eval "$1=\"\$$2\"";;
5382 : get the patchlevel
5384 echo "Getting the current patchlevel..." >&4
5385 if $test -r $rsrc/patchlevel.h;then
5386 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5387 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5388 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5389 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5390 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5391 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5400 $echo "(You have $package version $patchlevel subversion $subversion.)"
5403 : XXX Should be a Configure test for double-dots in filenames.
5404 version=`echo $revision $patchlevel $subversion | \
5405 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5406 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5407 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5410 version=`echo $revision $patchlevel $subversion | \
5411 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5412 api_versionstring=`echo $api_revision $api_version $api_subversion | \
5413 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5416 : Special case the 5.005_xx maintenance series, which used 5.005
5417 : without any subversion label as a subdirectory in $sitelib
5418 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5419 api_versionstring='5.005'
5422 : determine installation style
5423 : For now, try to deduce it from prefix unless it is already set.
5424 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5425 case "$installstyle" in
5426 '') case "$prefix" in
5427 *perl*) dflt='lib';;
5428 *) dflt='lib/perl5' ;;
5431 *) dflt="$installstyle" ;;
5433 : Probably not worth prompting for this since we prompt for all
5434 : the directories individually, and the prompt would be too long and
5438 : determine where private library files go
5439 : Usual default is /usr/local/lib/perl5/$version.
5440 : Also allow things like /opt/perl/lib/$version, since
5441 : /opt/perl/lib/perl5... would be redundant.
5442 : The default "style" setting is made in installstyle.U
5443 case "$installstyle" in
5444 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5445 *) set dflt privlib lib/$version ;;
5450 There are some auxiliary files for $package that need to be put into a
5451 private library directory that is accessible by everyone.
5455 rp='Pathname where the private library files will reside?'
5458 privlibexp="$ansexp"
5459 : Change installation prefix, if necessary.
5460 if $test X"$prefix" != X"$installprefix"; then
5461 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5463 installprivlib="$privlibexp"
5466 : set the prefixup variable, to restore leading tilda escape
5467 prefixup='case "$prefixexp" in
5469 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5472 : determine where public architecture dependent libraries go
5475 : privlib default is /usr/local/lib/$package/$version
5476 : archlib default is /usr/local/lib/$package/$version/$archname
5477 : privlib may have an optional trailing /share.
5478 tdflt=`echo $privlib | $sed 's,/share$,,'`
5479 tdflt=$tdflt/$archname
5488 $spackage contains architecture-dependent library files. If you are
5489 sharing libraries in a heterogeneous environment, you might store
5490 these files in a separate location. Otherwise, you can just include
5491 them with the rest of the public library files.
5495 rp='Where do you want to put the public architecture-dependent libraries?'
5498 archlibexp="$ansexp"
5499 if $test X"$archlib" = X"$privlib"; then
5504 : Change installation prefix, if necessary.
5505 if $test X"$prefix" != X"$installprefix"; then
5506 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5508 installarchlib="$archlibexp"
5512 : Binary compatibility with 5.005 is not possible for builds
5513 : with advanced features
5514 case "$usethreads$usemultiplicity" in
5516 bincompat5005="$undef"
5517 d_bincompat5005="$undef"
5521 This version of Perl can be compiled for binary compatibility with 5.005.
5522 If you decide to do so, you will be able to continue using most of the
5523 extensions that were compiled for Perl 5.005.
5526 case "$bincompat5005$d_bincompat5005" in
5527 *"$undef"*) dflt=n ;;
5530 rp='Binary compatibility with Perl 5.005?'
5533 y*) val="$define" ;;
5538 case "$d_bincompat5005" in
5540 bincompat5005="$define"
5542 *) bincompat5005="$undef"
5543 d_bincompat5005="$undef"
5550 : see if setuid scripts can be secure
5553 Some kernels have a bug that prevents setuid #! scripts from being
5554 secure. Some sites have disabled setuid #! scripts because of this.
5556 First let's decide if your kernel supports secure setuid #! scripts.
5557 (If setuid #! scripts would be secure but have been disabled anyway,
5558 don't say that they are secure if asked.)
5563 if $test -d /dev/fd; then
5564 echo "#!$ls" >reflect
5565 chmod +x,u+s reflect
5566 ./reflect >flect 2>&1
5567 if $contains "/dev/fd" flect >/dev/null; then
5568 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5572 If you are not sure if they are secure, I can check but I'll need a
5573 username and password different from the one you are using right now.
5574 If you don't have such a username or don't want me to test, simply
5578 rp='Other username to test security of setuid scripts with?'
5583 case "$d_suidsafe" in
5584 '') echo "I'll assume setuid scripts are *not* secure." >&4
5587 echo "Well, the $hint value is *not* secure." >&4
5589 *) echo "Well, the $hint value *is* secure." >&4
5594 $rm -f reflect flect
5595 echo "#!$ls" >reflect
5596 chmod +x,u+s reflect
5599 echo '"su" will (probably) prompt you for '"$ans's password."
5600 su $ans -c './reflect >flect'
5601 if $contains "/dev/fd" flect >/dev/null; then
5602 echo "Okay, it looks like setuid scripts are secure." >&4
5605 echo "I don't think setuid scripts are secure." >&4
5610 rp='Does your kernel have *secure* setuid scripts?'
5613 [yY]*) val="$define";;
5618 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5619 echo "(That's for file descriptors, not floppy disks.)"
5625 $rm -f reflect flect
5627 : now see if they want to do setuid emulation
5630 case "$d_suidsafe" in
5633 echo "No need to emulate SUID scripts since they are secure here." >& 4
5637 Some systems have disabled setuid scripts, especially systems where
5638 setuid scripts cannot be secure. On systems where setuid scripts have
5639 been disabled, the setuid/setgid bits on scripts are currently
5640 useless. It is possible for $package to detect those bits and emulate
5641 setuid/setgid in a secure fashion. This emulation will only work if
5642 setuid scripts have been disabled in your kernel.
5646 "$define") dflt=y ;;
5649 rp="Do you want to do setuid/setgid emulation?"
5652 [yY]*) val="$define";;
5660 : determine filename position in cpp output
5662 echo "Computing filename position in cpp output for #include directives..." >&4
5663 echo '#include <stdio.h>' > foo.c
5666 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5667 $grep '^[ ]*#.*stdio\.h' | \
5668 while read cline; do
5671 while $test \$# -gt 0; do
5672 if $test -r \`echo \$1 | $tr -d '"'\`; then
5677 pos=\`expr \$pos + 1\`
5689 *) pos="${fieldn}th";;
5691 echo "Your cpp writes the filename in the $pos field of the line."
5693 : locate header file
5698 for usrincdir in $usrinc
5700 if test -f \$usrincdir/\$wanted; then
5701 echo "\$usrincdir/\$wanted"
5705 awkprg='{ print \$$fieldn }'
5706 echo "#include <\$wanted>" > foo\$\$.c
5707 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5708 $grep "^[ ]*#.*\$wanted" | \
5709 while read cline; do
5710 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5712 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5713 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5718 # status = 0: grep returned 0 lines, case statement not executed
5719 # status = 1: headerfile found
5720 # status = 2: while loop executed, no headerfile found
5724 if test \$status -eq 1; then
5731 : define an alternate in-header-list? function
5732 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5733 cont=true; xxf="echo \"<\$1> found.\" >&4";
5734 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5735 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5737 case $# in 4) instead=instead;; *) instead="at last";; esac;
5738 while $test "$cont"; do
5740 var=$2; eval "was=\$$2";
5741 if $test "$xxx" && $test -r "$xxx";
5743 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5746 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5747 set $yyy; shift; shift; yyy=$@;
5748 case $# in 0) cont="";;
5749 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5750 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5751 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5752 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5756 do set $yyy; var=$2; eval "was=\$$2";
5757 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5758 set $yyy; shift; shift; yyy=$@;
5761 : see if this is a malloc.h system
5762 set malloc.h i_malloc
5765 : see if stdlib is available
5766 set stdlib.h i_stdlib
5769 : determine which malloc to compile in
5771 case "$usemymalloc" in
5772 ''|[yY]*|true|$define) dflt='y' ;;
5775 rp="Do you wish to attempt to use the malloc that comes with $package?"
5781 mallocsrc='malloc.c'
5782 mallocobj="malloc$_o"
5783 d_mymalloc="$define"
5786 : Remove malloc from list of libraries to use
5787 echo "Removing unneeded -lmalloc from library list" >&4
5788 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5791 echo "libs = $libs" >&4
5803 : compute the return types of malloc and free
5805 $cat >malloc.c <<END
5809 #include <sys/types.h>
5823 case "$malloctype" in
5825 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5832 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5836 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5843 echo "Your system uses $freetype free(), it would seem." >&4
5847 After $package is installed, you may wish to install various
5848 add-on modules and utilities. Typically, these add-ons will
5849 be installed under $prefix with the rest
5850 of this package. However, you may wish to install such add-ons
5851 elsewhere under a different prefix.
5853 If you do not wish to put everything under a single prefix, that's
5854 ok. You will be prompted for the individual locations; this siteprefix
5855 is only used to suggest the defaults.
5857 The default should be fine for most people.
5861 rp='Installation prefix to use for add-on modules and utilities?'
5862 : XXX Here might be another good place for an installstyle setting.
5863 case "$siteprefix" in
5865 *) dflt=$siteprefix ;;
5868 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5870 case "$siteprefix" in
5874 *) oldsiteprefix="$prefix";;
5879 siteprefixexp="$ansexp"
5881 : determine where site specific libraries go.
5882 : Usual default is /usr/local/lib/perl5/site_perl/$version
5883 : The default "style" setting is made in installstyle.U
5884 : XXX No longer works with Prefixit stuff.
5885 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5887 '') case "$installstyle" in
5888 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5889 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5897 The installation process will create a directory for
5898 site-specific extensions and modules. Most users find it convenient
5899 to place all site-specific files in this directory rather than in the
5900 main distribution directory.
5904 rp='Pathname for the site-specific library files?'
5907 sitelibexp="$ansexp"
5908 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5909 : Change installation prefix, if necessary.
5910 if $test X"$prefix" != X"$installprefix"; then
5911 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5913 installsitelib="$sitelibexp"
5916 : determine where site specific architecture-dependent libraries go.
5917 : sitelib default is /usr/local/lib/perl5/site_perl/$version
5918 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5919 : sitelib may have an optional trailing /share.
5921 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
5922 dflt="$dflt/$archname"
5927 set sitearch sitearch none
5931 The installation process will also create a directory for
5932 architecture-dependent site-specific extensions and modules.
5936 rp='Pathname for the site-specific architecture-dependent library files?'
5939 sitearchexp="$ansexp"
5940 : Change installation prefix, if necessary.
5941 if $test X"$prefix" != X"$installprefix"; then
5942 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5944 installsitearch="$sitearchexp"
5949 The installation process will also create a directory for
5950 vendor-supplied add-ons. Vendors who supply perl with their system
5951 may find it convenient to place all vendor-supplied files in this
5952 directory rather than in the main distribution directory. This will
5953 ease upgrades between binary-compatible maintenance versions of perl.
5955 Of course you may also use these directories in whatever way you see
5956 fit. For example, you might use them to access modules shared over a
5957 company-wide network.
5959 The default answer should be fine for most people.
5960 This causes further questions about vendor add-ons to be skipped
5961 and no vendor-specific directories will be configured for perl.
5964 rp='Do you want to configure vendor-specific add-on directories?'
5965 case "$usevendorprefix" in
5966 define|true|[yY]*) dflt=y ;;
5967 *) : User may have set vendorprefix directly on Configure command line.
5968 case "$vendorprefix" in
5977 rp='Installation prefix to use for vendor-supplied add-ons?'
5978 case "$vendorprefix" in
5980 *) dflt=$vendorprefix ;;
5983 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5985 case "$vendorprefix" in
5989 *) oldvendorprefix="$prefix";;
5993 usevendorprefix="$define"
5995 vendorprefixexp="$ansexp"
5997 *) usevendorprefix="$undef"
6003 case "$vendorprefix" in
6004 '') d_vendorlib="$undef"
6008 *) d_vendorlib="$define"
6009 : determine where vendor-supplied modules go.
6010 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6011 case "$vendorlib" in
6013 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6014 case "$installstyle" in
6015 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6016 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6019 *) dflt="$vendorlib"
6023 rp='Pathname for the vendor-supplied library files?'
6026 vendorlibexp="$ansexp"
6029 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6030 : Change installation prefix, if necessary.
6031 if $test X"$prefix" != X"$installprefix"; then
6032 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6034 installvendorlib="$vendorlibexp"
6037 case "$vendorprefix" in
6038 '') d_vendorarch="$undef"
6042 *) d_vendorarch="$define"
6043 : determine where vendor-supplied architecture-dependent libraries go.
6044 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6045 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6046 : vendorlib may have an optional trailing /share.
6047 case "$vendorarch" in
6048 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6049 dflt="$dflt/$archname"
6051 *) dflt="$vendorarch" ;;
6054 rp='Pathname for vendor-supplied architecture-dependent files?'
6057 vendorarchexp="$ansexp"
6060 : Change installation prefix, if necessary.
6061 if $test X"$prefix" != X"$installprefix"; then
6062 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6064 installvendorarch="$vendorarchexp"
6067 : Final catch-all directories to search
6070 Lastly, you can have perl look in other directories for extensions and
6071 modules in addition to those already specified.
6072 These directories will be searched after
6076 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6077 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6079 case "$otherlibdirs" in
6080 ''|' ') dflt='none' ;;
6081 *) dflt="$otherlibdirs" ;;
6084 Enter a colon-separated set of extra paths to include in perl's @INC
6085 search path, or enter 'none' for no extra paths.
6089 rp='Colon-separated list of additional directories for perl to search?'
6092 ' '|''|none) otherlibdirs=' ' ;;
6093 *) otherlibdirs="$ans" ;;
6095 case "$otherlibdirs" in
6099 set d_perl_otherlibdirs
6102 : Cruising for prototypes
6104 echo "Checking out function prototypes..." >&4
6105 $cat >prototype.c <<'EOCP'
6106 int main(int argc, char *argv[]) {
6109 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6110 echo "Your C compiler appears to support function prototypes."
6113 echo "Your C compiler doesn't seem to understand function prototypes."
6120 case "$prototype" in
6122 *) ansi2knr='ansi2knr'
6127 This version of $package can only be compiled by a compiler that
6128 understands function prototypes. Unfortunately, your C compiler
6130 doesn't seem to understand them. Sorry about that.
6132 If GNU cc is available for your system, perhaps you could try that instead.
6134 Eventually, we hope to support building Perl with pre-ANSI compilers.
6135 If you would like to help in that effort, please contact <perlbug@perl.org>.
6137 Aborting Configure now.
6143 : determine where public executables go
6148 rp='Pathname where the public executables will reside?'
6150 if $test "X$ansexp" != "X$binexp"; then
6155 : Change installation prefix, if necessary.
6156 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6157 if $test X"$prefix" != X"$installprefix"; then
6158 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6160 installbin="$binexp"
6163 : Find perl5.005 or later.
6164 echo "Looking for a previously installed perl5.005 or later... "
6166 '') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6167 : Check if this perl is recent and can load a simple module
6168 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6171 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6181 '') echo "None found. That's ok.";;
6182 *) echo "Using $perl5." ;;
6185 : Determine list of previous versions to include in @INC
6186 $cat > getverlist <<EOPL
6189 \$api_versionstring = "$api_versionstring";
6190 \$version = "$version";
6191 \$stem = "$sitelib_stem";
6192 \$archname = "$archname";
6194 $cat >> getverlist <<'EOPL'
6195 # Can't have leading @ because metaconfig interprets it as a command!
6196 ;@inc_version_list=();
6197 # XXX Redo to do opendir/readdir?
6200 ;@candidates = glob("5.*");
6206 # XXX ToDo: These comparisons must be reworked when two-digit
6207 # subversions come along, so that 5.7.10 compares as greater than
6208 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6209 # widespread that we can use the built-in version vectors rather
6210 # than reinventing them here. For 5.6.0, however, we must
6211 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6212 foreach $d (@candidates) {
6213 if ($d lt $version) {
6214 if ($d ge $api_versionstring) {
6215 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6217 elsif ($d ge "5.005") {
6218 unshift(@inc_version_list, grep { -d } $d);
6222 # Skip newer version. I.e. don't look in
6223 # 5.7.0 if we're installing 5.6.1.
6227 if (@inc_version_list) {
6228 print join(' ', @inc_version_list);
6231 # Blank space to preserve value for next Configure run.
6236 case "$inc_version_list" in
6237 '') if test -x "$perl5"; then
6238 dflt=`$perl5 getverlist`
6243 $undef) dflt='none' ;;
6244 *) dflt="$inc_version_list" ;;
6247 ''|' ') dflt=none ;;
6250 5.005) case "$bincompat5005" in
6251 $define|true|[yY]*) ;;
6258 In order to ease the process of upgrading, this version of perl
6259 can be configured to use modules built and installed with earlier
6260 versions of perl that were installed under $prefix. Specify here
6261 the list of earlier versions that this version of perl should check.
6262 If Configure detected no earlier versions of perl installed under
6263 $prefix, then the list will be empty. Answer 'none' to tell perl
6264 to not search earlier versions.
6266 The default should almost always be sensible, so if you're not sure,
6267 just accept the default.
6270 rp='List of earlier versions to include in @INC?'
6273 [Nn]one|''|' ') inc_version_list=' ' ;;
6274 *) inc_version_list="$ans" ;;
6276 case "$inc_version_list" in
6278 inc_version_list_init='0';;
6279 *) inc_version_list_init=`echo $inc_version_list |
6280 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6285 : determine whether to install perl also as /usr/bin/perl
6288 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6290 Many scripts expect perl to be installed as /usr/bin/perl.
6291 I can install the perl you are about to compile also as /usr/bin/perl
6292 (in addition to $installbin/perl).
6294 case "$installusrbinperl" in
6295 "$undef"|[nN]*) dflt='n';;
6298 rp="Do you want to install perl as /usr/bin/perl?"
6301 [yY]*) val="$define";;
6307 set installusrbinperl
6310 : see if dld is available
6314 : see if dlopen exists
6321 : determine which dynamic loading, if any, to compile in
6323 dldir="ext/DynaLoader"
6336 $define) dflt='y' ;;
6339 $define) dflt='y' ;;
6341 : Does a dl_xxx.xs file exist for this operating system
6342 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6345 rp="Do you wish to use dynamic loading?"
6352 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6353 dflt="$dldir/dl_${osname}.xs"
6354 elif $test "$d_dlopen" = "$define" ; then
6355 dflt="$dldir/dl_dlopen.xs"
6356 elif $test "$i_dld" = "$define" ; then
6357 dflt="$dldir/dl_dld.xs"
6362 *) dflt="$dldir/$dlsrc"
6365 echo "The following dynamic loading files are available:"
6366 : Can not go over to $dldir because getfile has path hard-coded in.
6367 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6368 rp="Source file to use for dynamic loading"
6374 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6378 Some systems may require passing special flags to $cc -c to
6379 compile modules that will be used to create a shared library.
6380 To use no flags, say "none".
6383 case "$cccdlflags" in
6384 '') case "$gccversion" in
6385 '') case "$osname" in
6387 next) dflt='none' ;;
6388 irix*) dflt='-KPIC' ;;
6389 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6390 sunos) dflt='-pic' ;;
6394 *) case "$osname" in
6395 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6400 *) dflt="$cccdlflags" ;;
6402 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6405 none) cccdlflags=' ' ;;
6406 *) cccdlflags="$ans" ;;
6411 Some systems use ld to create libraries that can be dynamically loaded,
6412 while other systems (such as those using ELF) use $cc.
6416 '') $cat >try.c <<'EOM'
6417 /* Test for whether ELF binaries are produced */
6422 int i = open("a.out",O_RDONLY);
6425 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6426 exit(0); /* succeed (yes, it's ELF) */
6431 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6433 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6437 echo "I'll use ld to build dynamic libraries."
6446 rp="What command should be used to create dynamic libraries?"
6452 Some systems may require passing special flags to $ld to create a
6453 library that can be dynamically loaded. If your ld flags include
6454 -L/other/path options to locate libraries outside your loader's normal
6455 search path, you may need to specify those -L options here as well. To
6456 use no flags, say "none".
6459 case "$lddlflags" in
6460 '') case "$osname" in
6461 beos) dflt='-nostart' ;;
6463 case "$gccversion" in
6464 '') dflt="$dflt +vnocompatwarnings" ;;
6467 linux|irix*) dflt='-shared' ;;
6468 next) dflt='none' ;;
6469 solaris) dflt='-G' ;;
6470 sunos) dflt='-assert nodefinitions' ;;
6471 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
6475 *) dflt="$lddlflags" ;;
6478 : Try to guess additional flags to pick up local libraries.
6479 : Be careful not to append to a plain 'none'
6483 for thisflag in $ldflags; do
6488 *) dflt="$dflt $thisflag" ;;
6495 ''|' ') dflt='none' ;;
6498 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6501 none) lddlflags=' ' ;;
6502 *) lddlflags="$ans" ;;
6507 Some systems may require passing special flags to $cc to indicate that
6508 the resulting executable will use dynamic linking. To use no flags,
6512 case "$ccdlflags" in
6513 '') case "$osname" in
6514 hpux) dflt='-Wl,-E' ;;
6515 linux) dflt='-rdynamic' ;;
6516 next) dflt='none' ;;
6517 sunos) dflt='none' ;;
6521 *) dflt="$ccdlflags" ;;
6523 rp="Any special flags to pass to $cc to use dynamic linking?"
6526 none) ccdlflags=' ' ;;
6527 *) ccdlflags="$ans" ;;
6541 # No dynamic loading being used, so don't bother even to prompt.
6544 *) case "$useshrplib" in
6545 '') case "$osname" in
6546 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
6548 also='Building a shared libperl is required for dynamic loading to work on your system.'
6553 also='Building a shared libperl is needed for MAB support.'
6571 The perl executable is normally obtained by linking perlmain.c with
6572 libperl${_a}, any static extensions (usually just DynaLoader), and
6573 any other libraries needed on this system (such as -lm, etc.). Since
6574 your system supports dynamic loading, it is probably possible to build
6575 a shared libperl.$so. If you will have more than one executable linked
6576 to libperl.$so, this will significantly reduce the size of each
6577 executable, but it may have a noticeable affect on performance. The
6578 default is probably sensible for your system.
6582 rp="Build a shared libperl.$so (y/n)"
6586 useshrplib='true' ;;
6587 *) useshrplib='false' ;;
6592 case "$useshrplib" in
6596 # Figure out a good name for libperl.so. Since it gets stored in
6597 # a version-specific architecture-dependent library, the version
6598 # number isn't really that important, except for making cc/ld happy.
6600 # A name such as libperl.so.3.1
6601 majmin="libperl.$so.$patchlevel.$subversion"
6602 # A name such as libperl.so.301
6603 majonly=`echo $patchlevel $subversion |
6604 $awk '{printf "%d%02d", $1, $2}'`
6605 majonly=libperl.$so.$majonly
6606 # I'd prefer to keep the os-specific stuff here to a minimum, and
6607 # rely on figuring it out from the naming of libc.
6608 case "${osname}${osvers}" in
6611 # XXX How handle the --version stuff for MAB?
6613 linux*) # ld won't link with a bare -lperl otherwise.
6616 cygwin*) # include version
6617 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6619 *) # Try to guess based on whether libc has major.minor.
6621 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6622 *libc.$so.[0-9]*) dflt=$majonly ;;
6623 *) dflt=libperl.$so ;;
6633 I need to select a good name for the shared libperl. If your system uses
6634 library names with major and minor numbers, then you might want something
6635 like $majmin. Alternatively, if your system uses a single version
6636 number for shared libraries, then you might want to use $majonly.
6637 Or, your system might be quite happy with a simple libperl.$so.
6639 Since the shared libperl will get installed into a version-specific
6640 architecture-dependent directory, the version number of the shared perl
6641 library probably isn't important, so the default should be o.k.
6644 rp='What name do you want to give to the shared libperl?'
6647 echo "Ok, I'll use $libperl"
6650 libperl="libperl${_a}"
6654 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6658 WARNING: Use of the shrpdir variable for the installation location of
6659 the shared $libperl is not supported. It was never documented and
6660 will not work in this version. Let me (perlbug@perl.org)
6661 know of any problems this may cause.
6667 But your current setting of $shrpdir is
6668 the default anyway, so it's harmless.
6673 Further, your current attempted setting of $shrpdir
6674 conflicts with the value of $archlibexp/CORE
6675 that installperl will use.
6682 # How will the perl executable find the installed shared $libperl?
6683 # Add $xxx to ccdlflags.
6684 # If we can't figure out a command-line option, use $shrpenv to
6685 # set env LD_RUN_PATH. The main perl makefile uses this.
6686 shrpdir=$archlibexp/CORE
6689 if "$useshrplib"; then
6692 # We'll set it in Makefile.SH...
6698 xxx="-Wl,-R$shrpdir"
6700 linux|irix*|dec_osf)
6701 xxx="-Wl,-rpath,$shrpdir"
6704 # next doesn't like the default...
6707 # beos doesn't like the default, either.
6710 # hpux doesn't like the default, either.
6711 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6714 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6720 # Only add $xxx if it isn't already in ccdlflags.
6721 case " $ccdlflags " in
6723 *) ccdlflags="$ccdlflags $xxx"
6726 Adding $xxx to the flags
6727 passed to $ld so that the perl executable will find the
6728 installed shared $libperl.
6736 # Fix ccdlflags in AIX for building external extensions.
6737 # (For building Perl itself bare -bE:perl.exp is needed,
6738 # Makefile.SH takes care of this.)
6740 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6742 # Respect a hint or command-line value.
6744 '') shrpenv="$tmp_shrpenv" ;;
6746 case "$ldlibpthname" in
6747 '') ldlibpthname=LD_LIBRARY_PATH ;;
6748 none) ldlibpthname='' ;;
6751 : determine where manual pages are on this system
6755 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6756 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6757 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6758 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6759 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6760 sysman=`./loc . /usr/man/man1 $syspath`
6763 if $test -d "$sysman"; then
6764 echo "System manual is in $sysman." >&4
6766 echo "Could not find manual pages in source form." >&4
6769 : determine where manual pages go
6770 set man1dir man1dir none
6774 $spackage has manual pages available in source form.
6778 echo "However, you don't have nroff, so they're probably useless to you."
6780 '') man1dir="none";;
6783 echo "If you don't want the manual sources installed, answer 'none'."
6788 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6789 lookpath="$lookpath $prefixexp/man/p_man/man1"
6790 lookpath="$lookpath $prefixexp/man/u_man/man1"
6791 lookpath="$lookpath $prefixexp/man/man.1"
6793 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6794 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6804 rp="Where do the main $spackage manual pages (source) go?"
6806 if $test "X$man1direxp" != "X$ansexp"; then
6810 man1direxp="$ansexp"
6816 : Change installation prefix, if necessary.
6817 if $test X"$prefix" != X"$installprefix"; then
6818 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6820 installman1dir="$man1direxp"
6823 : What suffix to use on installed man pages
6830 rp="What suffix should be used for the main $spackage man pages?"
6832 '') case "$man1dir" in
6846 *) dflt="$man1ext";;
6853 : see if we can have long filenames
6855 first=123456789abcdef
6857 if (echo hi >$first) 2>/dev/null; then
6858 if $test -f 123456789abcde; then
6859 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6862 echo 'You can have filenames longer than 14 characters.'>&4
6867 You can't have filenames longer than 14 chars.
6868 You can't even think about them!
6874 $rm -rf 123456789abcde*
6876 : determine where library module manual pages go
6877 set man3dir man3dir none
6881 $spackage has manual pages for many of the library modules.
6887 However, you don't have nroff, so they're probably useless to you.
6890 '') man3dir="none";;
6894 case "$d_flexfnam" in
6897 However, your system can't handle the long file names like File::Basename.3.
6900 '') man3dir="none";;
6904 echo "If you don't want the manual sources installed, answer 'none'."
6905 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6907 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6908 if $test -d "$privlib/man/man3"; then
6911 WARNING: Previous versions of perl installed man3 pages into
6912 $privlib/man/man3. This version will suggest a
6913 new default of $dflt.
6917 rp='Do you wish to preserve the old behavior?(y/n)'
6920 y*) dflt="$privlib/man/man3" ;;
6925 *) dflt="$man3dir" ;;
6932 rp="Where do the $package library man pages (source) go?"
6935 man3direxp="$ansexp"
6941 : Change installation prefix, if necessary.
6942 if $test X"$prefix" != X"$installprefix"; then
6943 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6945 installman3dir="$man3direxp"
6948 : What suffix to use on installed man pages
6954 rp="What suffix should be used for the $package library man pages?"
6956 '') case "$man3dir" in
6970 *) dflt="$man3ext";;
6977 : see if we have to deal with yellow pages, now NIS.
6978 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6979 if $test -f /usr/etc/nibindd; then
6981 echo "I'm fairly confident you're on a NeXT."
6983 rp='Do you get the hosts file via NetInfo?'
6992 y*) hostcat='nidump hosts .';;
6993 *) case "$hostcat" in
6994 nidump*) hostcat='';;
7004 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7012 rp='Are you getting the hosts file via yellow pages?'
7015 y*) hostcat='ypcat hosts';;
7016 *) hostcat='cat /etc/hosts';;
7022 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7025 '') test -f /etc/group && groupcat='cat /etc/group';;
7028 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7031 : now get the host name
7033 echo "Figuring out host name..." >&4
7034 case "$myhostname" in
7036 echo 'Maybe "hostname" will work...'
7037 if tans=`sh -c hostname 2>&1` ; then
7045 if $test "$cont"; then
7047 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7048 if tans=`cat /etc/systemid 2>&1` ; then
7050 phostname='cat /etc/systemid'
7051 echo "Whadyaknow. Xenix always was a bit strange..."
7054 elif $test -r /etc/systemid; then
7055 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7058 if $test "$cont"; then
7059 echo 'No, maybe "uuname -l" will work...'
7060 if tans=`sh -c 'uuname -l' 2>&1` ; then
7062 phostname='uuname -l'
7064 echo 'Strange. Maybe "uname -n" will work...'
7065 if tans=`sh -c 'uname -n' 2>&1` ; then
7067 phostname='uname -n'
7069 echo 'Oh well, maybe I can mine it out of whoami.h...'
7070 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7071 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7072 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7074 case "$myhostname" in
7075 '') echo "Does this machine have an identity crisis or something?"
7078 echo "Well, you said $myhostname before..."
7079 phostname='echo $myhostname';;
7085 : you do not want to know about this
7090 if $test "$myhostname" ; then
7092 rp='Your host name appears to be "'$myhostname'".'" Right?"
7100 : bad guess or no guess
7101 while $test "X$myhostname" = X ; do
7103 rp="Please type the (one word) name of your host:"
7108 : translate upper to lower if necessary
7109 case "$myhostname" in
7111 echo "(Normalizing case in your host name)"
7112 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7116 case "$myhostname" in
7118 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7119 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7120 echo "(Trimming domain name from host name--host name is now $myhostname)"
7122 *) case "$mydomain" in
7125 test "X$hostcat" = "Xypcat hosts" &&
7126 ypmatch "$myhostname" hosts 2>/dev/null |\
7127 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7130 test "X$hostcat" != "X" &&
7131 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7132 /[ ]$myhostname[ . ]/p" > hosts
7135 if $test -f hosts; then
7136 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7137 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7138 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7139 hosts | $sort | $uniq | \
7140 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7141 case `$echo X$dflt` in
7142 X*\ *) echo "(Several hosts in the database matched hostname)"
7145 X.) echo "(You do not have fully-qualified names in the hosts database)"
7149 echo "(I cannot locate a hosts database anywhere)"
7154 tans=`./loc resolv.conf X /etc /usr/etc`
7155 if $test -f "$tans"; then
7156 echo "(Attempting domain name extraction from $tans)"
7157 dflt=.`$sed -n -e 's/ / /g' \
7158 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7159 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7161 .) dflt=.`$sed -n -e 's/ / /g' \
7162 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7163 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7170 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7171 dflt=.`sh -c domainname 2>/dev/null`
7174 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7179 .) echo "(Lost all hope -- silly guess then)"
7185 *) dflt="$mydomain";;
7189 rp="What is your domain name?"
7199 : translate upper to lower if necessary
7202 echo "(Normalizing case in your domain name)"
7203 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7207 : a little sanity check here
7208 case "$phostname" in
7211 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7212 $myhostname$mydomain|$myhostname) ;;
7214 case "$phostname" in
7216 echo "(That doesn't agree with your whoami.h file, by the way.)"
7219 echo "(That doesn't agree with your $phostname command, by the way.)"
7229 I need to get your e-mail address in Internet format if possible, i.e.
7230 something like user@host.domain. Please answer accurately since I have
7231 no easy means to double check it. The default value provided below
7232 is most probably close to reality but may not be valid from outside
7233 your organization...
7237 while test "$cont"; do
7239 '') dflt="$cf_by@$myhostname$mydomain";;
7240 *) dflt="$cf_email";;
7242 rp='What is your e-mail address?'
7248 rp='Address does not look like an Internet one. Use it anyway?'
7264 If you or somebody else will be maintaining perl at your site, please
7265 fill in the correct e-mail address here so that they may be contacted
7266 if necessary. Currently, the "perlbug" program included with perl
7267 will send mail to this address in addition to perlbug@perl.org. You may
7268 enter "none" for no administrator.
7271 case "$perladmin" in
7272 '') dflt="$cf_email";;
7273 *) dflt="$perladmin";;
7275 rp='Perl administrator e-mail address'
7279 : determine whether to only install version-specific parts.
7282 Do you want to install only the version-specific parts of the perl
7283 distribution? Usually you do *not* want to do this.
7285 case "$versiononly" in
7286 "$define"|[Yy]*|true) dflt='y' ;;
7289 rp="Do you want to install only the version-specific parts of perl?"
7292 [yY]*) val="$define";;
7298 : figure out how to guarantee perl startup
7299 case "$startperl" in
7301 case "$sharpbang" in
7305 I can use the #! construct to start perl on your system. This will
7306 make startup of perl scripts faster, but may cause problems if you
7307 want to share those scripts and perl is not in a standard place
7308 ($binexp/perl) on all your platforms. The alternative is to force
7309 a shell by starting the script with a single ':' character.
7312 case "$versiononly" in
7313 "$define") dflt="$binexp/perl$version";;
7314 *) dflt="$binexp/perl";;
7316 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7319 none) startperl=": # use perl";;
7320 *) startperl="#!$ans"
7321 if $test 30 -lt `echo "$ans" | wc -c`; then
7324 WARNING: Some systems limit the #! command to 32 characters.
7325 If you experience difficulty running Perl scripts with #!, try
7326 installing Perl in a directory with a shorter pathname.
7332 *) startperl=": # use perl"
7337 echo "I'll use $startperl to start perl scripts."
7339 : figure best path for perl in scripts
7342 perlpath="$binexp/perl"
7343 case "$startperl" in
7348 I will use the "eval 'exec'" idiom to start Perl on your system.
7349 I can use the full path of your Perl binary for this purpose, but
7350 doing so may cause problems if you want to share those scripts and
7351 Perl is not always in a standard place ($binexp/perl).
7355 rp="What path shall I use in \"eval 'exec'\"?"
7362 case "$startperl" in
7364 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7367 : determine where public executable scripts go
7368 set scriptdir scriptdir
7370 case "$scriptdir" in
7373 : guess some guesses
7374 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7375 $test -d /usr/share/bin && dflt=/usr/share/bin
7376 $test -d /usr/local/script && dflt=/usr/local/script
7377 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7378 $test -d $prefixexp/script && dflt=$prefixexp/script
7382 *) dflt="$scriptdir"
7387 Some installations have a separate directory just for executable scripts so
7388 that they can mount it across multiple architectures but keep the scripts in
7389 one spot. You might, for example, have a subdirectory of /usr/share for this.
7390 Or you might just lump your scripts in with all your other executables.
7394 rp='Where do you keep publicly executable scripts?'
7396 if $test "X$ansexp" != "X$scriptdirexp"; then
7400 scriptdirexp="$ansexp"
7401 : Change installation prefix, if necessary.
7402 if $test X"$prefix" != X"$installprefix"; then
7403 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7405 installscript="$scriptdirexp"
7408 : determine where add-on public executables go
7410 '') dflt=$siteprefix/bin ;;
7414 rp='Pathname where the add-on public executables should be installed?'
7417 sitebinexp="$ansexp"
7418 : Change installation prefix, if necessary.
7419 if $test X"$prefix" != X"$installprefix"; then
7420 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7422 installsitebin="$sitebinexp"
7425 case "$useperlio" in
7426 $define|true|[yY]*) dflt='y';;
7431 Previous version of $package used the standard IO mechanisms as defined
7432 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7433 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7434 the default. This abstraction layer can use AT&T's sfio (if you already
7435 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7436 problems with some extension modules. Using PerlIO with stdio is safe,
7437 but it is slower than plain stdio and therefore is not the default.
7439 If this doesn't make any sense to you, just accept the default '$dflt'.
7441 rp='Use the experimental PerlIO abstraction layer?'
7448 echo "Ok, doing things the stdio way"
7455 case "$vendorprefix" in
7456 '') d_vendorbin="$undef"
7460 *) d_vendorbin="$define"
7461 : determine where vendor-supplied executables go.
7462 case "$vendorbin" in
7463 '') dflt=$vendorprefix/bin ;;
7464 *) dflt="$vendorbin" ;;
7467 rp='Pathname for the vendor-supplied executables directory?'
7470 vendorbinexp="$ansexp"
7473 : Change installation prefix, if necessary.
7474 if $test X"$prefix" != X"$installprefix"; then
7475 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7477 installvendorbin="$vendorbinexp"
7480 : see if qgcvt exists
7486 if $test X"$d_longdbl" = X"$define"; then
7488 echo "Checking how to print long doubles..." >&4
7490 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7491 $cat >try.c <<'EOCP'
7492 #include <sys/types.h>
7496 printf("%.3f\n", d);
7500 if eval $compile; then
7504 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7505 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7506 echo "We will use %f."
7512 if $test X"$sPRIfldbl" = X; then
7513 $cat >try.c <<'EOCP'
7514 #include <sys/types.h>
7517 long double d = 123.456;
7518 printf("%.3llf\n", d);
7522 if eval $compile; then
7526 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7527 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7528 echo "We will use %llf."
7534 if $test X"$sPRIfldbl" = X; then
7535 $cat >try.c <<'EOCP'
7536 #include <sys/types.h>
7539 long double d = 123.456;
7540 printf("%.3Lf\n", d);
7544 if eval $compile; then
7548 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7549 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7550 echo "We will use %Lf."
7556 if $test X"$sPRIfldbl" = X; then
7557 $cat >try.c <<'EOCP'
7558 #include <sys/types.h>
7561 long double d = 123.456;
7562 printf("%.3lf\n", d);
7566 if eval $compile; then
7570 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7571 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7572 echo "We will use %lf."
7578 if $test X"$sPRIfldbl" = X; then
7579 echo "Cannot figure out how to print long doubles." >&4
7581 sSCNfldbl=$sPRIfldbl # expect consistency
7588 case "$sPRIfldbl" in
7589 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7590 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
7591 d_SCNfldbl="$undef";
7593 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7594 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
7595 d_SCNfldbl="$define";
7599 : Check how to convert floats to strings.
7601 echo "Checking for an efficient way to convert floats to strings."
7603 case "$uselongdouble" in
7604 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7606 case "$d_longdbl" in
7607 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7609 case "$d_PRIgldbl" in
7610 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7614 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7615 char *myname = "gconvert";
7618 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7619 char *myname = "gcvt";
7622 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7623 char *myname = "qgcvt";
7624 #define DOUBLETYPE long double
7627 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7628 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7630 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7632 char *myname = "sprintf";
7636 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7637 #define DOUBLETYPE long double
7639 #define DOUBLETYPE double
7645 #define I_STDLIB $i_stdlib
7651 checkit(expect, got)
7655 if (strcmp(expect, got)) {
7656 printf("%s oddity: Expected %s, got %s\n",
7657 myname, expect, got);
7667 /* This must be 1st test on (which?) platform */
7668 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7669 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7670 checkit("0.1", buf);
7672 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7675 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7676 checkit("1.1", buf);
7678 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7679 checkit("1.01", buf);
7681 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7682 checkit("1.001", buf);
7684 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7685 checkit("1.0001", buf);
7687 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7688 checkit("1.00001", buf);
7690 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7691 checkit("1.000001", buf);
7693 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7696 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7699 /* Some Linux gcvt's give 1.e+5 here. */
7700 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7701 checkit("100000", buf);
7703 /* Some Linux gcvt's give -1.e+5 here. */
7704 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7705 checkit("-100000", buf);
7707 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
7708 checkit("123.456", buf);
7713 case "$d_Gconvert" in
7714 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7715 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7716 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7717 *) xxx_list='gconvert gcvt sprintf' ;;
7720 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7721 "$define$define$define")
7722 # for long doubles prefer first qgcvt, then sprintf
7723 xxx_list="`echo $xxx_list|sed s/sprintf//`"
7724 xxx_list="sprintf $xxx_list"
7726 "$define") xxx_list="qgcvt $xxx_list" ;;
7731 for xxx_convert in $xxx_list; do
7732 echo "Trying $xxx_convert..."
7734 set try -DTRY_$xxx_convert
7735 if eval $compile; then
7736 echo "$xxx_convert() found." >&4
7738 echo "I'll use $xxx_convert to convert floats into a string." >&4
7741 echo "...But $xxx_convert didn't work as I expected."
7744 echo "$xxx_convert NOT found." >&4
7748 case "$xxx_convert" in
7749 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7750 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7751 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7752 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7753 "$define$define$define")
7754 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7755 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7760 : see if _fwalk exists
7764 : Initialize h_fcntl
7767 : Initialize h_sysfile
7770 : access call always available on UNIX
7774 : locate the flags for 'access()'
7778 $cat >access.c <<'EOCP'
7779 #include <sys/types.h>
7784 #include <sys/file.h>
7793 : check sys/file.h first, no particular reason here
7794 if $test `./findhdr sys/file.h` && \
7795 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
7797 echo "<sys/file.h> defines the *_OK access constants." >&4
7798 elif $test `./findhdr fcntl.h` && \
7799 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
7801 echo "<fcntl.h> defines the *_OK access constants." >&4
7802 elif $test `./findhdr unistd.h` && \
7803 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
7804 echo "<unistd.h> defines the *_OK access constants." >&4
7806 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7812 : see if accessx exists
7813 set accessx d_accessx
7816 : see if alarm exists
7820 : see if atolf exists
7824 : see if atoll exists
7828 : Look for GNU-cc style attribute checking
7830 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7831 $cat >attrib.c <<'EOCP'
7833 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7835 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7836 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7837 echo "Your C compiler doesn't fully support __attribute__."
7840 echo "Your C compiler supports __attribute__."
7844 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7851 : see if bcmp exists
7855 : see if bcopy exists
7859 : see if this is a unistd.h system
7860 set unistd.h i_unistd
7863 : see if getpgrp exists
7864 set getpgrp d_getpgrp
7867 case "$d_getpgrp" in
7870 echo "Checking to see which flavor of getpgrp is in use..."
7873 #include <sys/types.h>
7875 # include <unistd.h>
7879 if (getuid() == 0) {
7880 printf("(I see you are running Configure as super-user...)\n");
7884 if (getpgrp(1) == 0)
7893 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7894 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7896 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7897 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7900 echo "I can't seem to compile and run the test program."
7902 xxx="a USG one, i.e. you use getpgrp()."
7904 # SVR4 systems can appear rather BSD-ish.
7907 xxx="a BSD one, i.e. you use getpgrp(pid)."
7911 xxx="probably a USG one, i.e. you use getpgrp()."
7916 echo "Assuming your getpgrp is $xxx" >&4
7925 : see if setpgrp exists
7926 set setpgrp d_setpgrp
7929 case "$d_setpgrp" in
7932 echo "Checking to see which flavor of setpgrp is in use..."
7935 #include <sys/types.h>
7937 # include <unistd.h>
7941 if (getuid() == 0) {
7942 printf("(I see you are running Configure as super-user...)\n");
7946 if (-1 == setpgrp(1, 1))
7949 if (setpgrp() != -1)
7955 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7956 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7958 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7959 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7962 echo "(I can't seem to compile and run the test program.)"
7964 xxx="a USG one, i.e. you use setpgrp()."
7966 # SVR4 systems can appear rather BSD-ish.
7969 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7973 xxx="probably a USG one, i.e. you use setpgrp()."
7978 echo "Assuming your setpgrp is $xxx" >&4
7986 : see if bzero exists
7990 : see if signal is declared as pointer to function returning int or void
7992 xxx=`./findhdr signal.h`
7993 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7994 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7995 echo "You have int (*signal())() instead of void." >&4
7997 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7998 echo "You have void (*signal())()." >&4
8000 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8001 echo "You have int (*signal())() instead of void." >&4
8003 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8004 echo "You have void (*signal())()." >&4
8007 case "$d_voidsig" in
8009 echo "I can't determine whether signal handler returns void or int..." >&4
8011 rp="What type does your signal handler return?"
8018 echo "As you already told me, signal handler returns void." >&4
8021 *) echo "As you already told me, signal handler returns int." >&4
8028 case "$d_voidsig" in
8029 "$define") signal_t="void";;
8034 : check for ability to cast large floats to 32-bit ints.
8036 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8037 if $test "$intsize" -ge 4; then
8044 #include <sys/types.h>
8046 $signal_t blech(s) int s; { exit(3); }
8053 signal(SIGFPE, blech);
8055 /* Don't let compiler optimize the test away. Store the number
8056 in a writable string for gcc to pass to sscanf under HP/UX.
8058 sprintf(str, "2147483647");
8059 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8063 /* x86 processors will probably give 0x8000 0000, which is a
8064 sign change. We don't want that. We want to mimic SPARC
8065 behavior here, which is to preserve the sign and give
8068 if (i32 != ($xxx) f)
8074 if eval $compile_ok; then
8078 echo "(I can't seem to compile the test program--assuming it can't)"
8086 echo "Nope, it can't."
8093 : check for ability to cast negative floats to unsigned
8095 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8098 #include <sys/types.h>
8100 $signal_t blech(s) int s; { exit(7); }
8101 $signal_t blech_in_list(s) int s; { exit(4); }
8102 unsigned long dummy_long(p) unsigned long p; { return p; }
8103 unsigned int dummy_int(p) unsigned int p; { return p; }
8104 unsigned short dummy_short(p) unsigned short p; { return p; }
8108 unsigned long along;
8110 unsigned short ashort;
8114 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8115 a direct f = -123. assignment. gcc-2.8.0 reportedly
8116 optimized the whole file away
8118 /* Store the number in a writable string for gcc to pass to
8121 sprintf(str, "-123");
8122 sscanf(str, "%lf", &f); /* f = -123.; */
8124 signal(SIGFPE, blech);
8125 along = (unsigned long)f;
8126 aint = (unsigned int)f;
8127 ashort = (unsigned short)f;
8128 if (along != (unsigned long)-123)
8130 if (aint != (unsigned int)-123)
8132 if (ashort != (unsigned short)-123)
8134 sprintf(str, "1073741824.");
8135 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8138 along = (unsigned long)f;
8139 if (along != 0x80000000)
8143 along = (unsigned long)f;
8144 if (along != 0x7fffffff)
8148 along = (unsigned long)f;
8149 if (along != 0x80000001)
8153 signal(SIGFPE, blech_in_list);
8154 sprintf(str, "123.");
8155 sscanf(str, "%lf", &f); /* f = 123.; */
8156 along = dummy_long((unsigned long)f);
8157 aint = dummy_int((unsigned int)f);
8158 ashort = dummy_short((unsigned short)f);
8159 if (along != (unsigned long)123)
8161 if (aint != (unsigned int)123)
8163 if (ashort != (unsigned short)123)
8170 if eval $compile_ok; then
8174 echo "(I can't seem to compile the test program--assuming it can't)"
8177 case "$castflags" in
8182 echo "Nope, it can't."
8189 : see if vprintf exists
8191 if set vprintf val -f d_vprintf; eval $csym; $val; then
8192 echo 'vprintf() found.' >&4
8194 $cat >vprintf.c <<'EOF'
8195 #include <varargs.h>
8197 int main() { xxx("foo"); }
8206 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8210 if eval $compile && ./vprintf; then
8211 echo "Your vsprintf() returns (int)." >&4
8214 echo "Your vsprintf() returns (char*)." >&4
8218 echo 'vprintf() NOT found.' >&4
8228 : see if chown exists
8232 : see if chroot exists
8236 : see if chsize exists
8240 : check for const keyword
8242 echo 'Checking to see if your C compiler knows about "const"...' >&4
8243 $cat >const.c <<'EOCP'
8244 typedef struct spug { int drokk; } spug;
8251 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8253 echo "Yup, it does."
8256 echo "Nope, it doesn't."
8261 : see if crypt exists
8263 if set crypt val -f d_crypt; eval $csym; $val; then
8264 echo 'crypt() found.' >&4
8268 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8269 if $test -z "$cryptlib"; then
8270 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8274 if $test -z "$cryptlib"; then
8275 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8279 if $test -z "$cryptlib"; then
8280 cryptlib=`./loc libcrypt$_a "" $libpth`
8284 if $test -z "$cryptlib"; then
8285 echo 'crypt() NOT found.' >&4
8294 : get csh whereabouts
8296 'csh') val="$undef" ;;
8301 : Respect a hint or command line value for full_csh.
8303 '') full_csh=$csh ;;
8306 : see if cuserid exists
8307 set cuserid d_cuserid
8310 : see if this is a limits.h system
8311 set limits.h i_limits
8314 : see if this is a float.h system
8318 : See if number of significant digits in a double precision number is known
8320 $cat >dbl_dig.c <<EOM
8330 printf("Contains DBL_DIG");
8333 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8334 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8335 echo "DBL_DIG found." >&4
8338 echo "DBL_DIG NOT found." >&4
8345 : see if difftime exists
8346 set difftime d_difftime
8349 : see if this is a dirent system
8351 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8353 echo "<dirent.h> found." >&4
8356 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8357 echo "<sys/dir.h> found." >&4
8360 xinc=`./findhdr sys/ndir.h`
8362 echo "<dirent.h> NOT found." >&4
8367 : Look for type of directory structure.
8369 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8371 case "$direntrytype" in
8374 $define) guess1='struct dirent' ;;
8375 *) guess1='struct direct' ;;
8378 *) guess1="$direntrytype"
8383 'struct dirent') guess2='struct direct' ;;
8384 *) guess2='struct dirent' ;;
8387 if $contains "$guess1" try.c >/dev/null 2>&1; then
8388 direntrytype="$guess1"
8389 echo "Your directory entries are $direntrytype." >&4
8390 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8391 direntrytype="$guess2"
8392 echo "Your directory entries seem to be $direntrytype." >&4
8394 echo "I don't recognize your system's directory entries." >&4
8395 rp="What type is used for directory entries on this system?"
8403 : see if the directory entry stores field length
8405 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8406 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8407 echo "Good, your directory entry keeps length information in d_namlen." >&4
8410 echo "Your directory entry does not know about the d_namlen field." >&4
8417 : see if dlerror exists
8420 set dlerror d_dlerror
8424 : see if dlfcn is available
8432 On a few systems, the dynamically loaded modules that perl generates and uses
8433 will need a different extension than shared libs. The default will probably
8441 rp='What is the extension of dynamically loaded modules'
8450 : Check if dlsym need a leading underscore
8456 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8457 $cat >dyna.c <<'EOM'
8466 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8468 #include <sys/types.h>
8482 int mode = RTLD_LAZY ;
8484 handle = dlopen("./dyna.$dlext", mode) ;
8485 if (handle == NULL) {
8490 symbol = dlsym(handle, "fred") ;
8491 if (symbol == NULL) {
8492 /* try putting a leading underscore */
8493 symbol = dlsym(handle, "_fred") ;
8494 if (symbol == NULL) {
8507 : Call the object file tmp-dyna.o in case dlext=o.
8508 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8509 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8510 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
8511 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8514 1) echo "Test program failed using dlopen." >&4
8515 echo "Perhaps you should not use dynamic loading." >&4;;
8516 2) echo "Test program failed using dlsym." >&4
8517 echo "Perhaps you should not use dynamic loading." >&4;;
8518 3) echo "dlsym needs a leading underscore" >&4
8520 4) echo "dlsym doesn't need a leading underscore." >&4;;
8523 echo "I can't compile and run the test program." >&4
8524 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8529 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8534 hasproto='varname=$1; func=$2; shift; shift;
8535 while $test $# -ge 2; do
8537 $define) echo "#include <$2>";;
8541 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8542 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8543 echo "$func() prototype found.";
8546 echo "$func() prototype NOT found.";
8551 $rm -f try.c tryout.c'
8553 : see if prototype for drand48 is available
8555 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8558 : see if dup2 exists
8562 : see if eaccess exists
8563 set eaccess d_eaccess
8566 : see if endgrent exists
8567 set endgrent d_endgrent
8570 : see if endhostent exists
8571 set endhostent d_endhent
8574 : see if endnetent exists
8575 set endnetent d_endnent
8578 : see if endprotoent exists
8579 set endprotoent d_endpent
8582 : see if endpwent exists
8583 set endpwent d_endpwent
8586 : see if endservent exists
8587 set endservent d_endsent
8590 : Locate the flags for 'open()'
8592 $cat >open3.c <<'EOCP'
8593 #include <sys/types.h>
8598 #include <sys/file.h>
8609 : check sys/file.h first to get FREAD on Sun
8610 if $test `./findhdr sys/file.h` && \
8611 set open3 -DI_SYS_FILE && eval $compile; then
8613 echo "<sys/file.h> defines the O_* constants..." >&4
8615 echo "and you have the 3 argument form of open()." >&4
8618 echo "but not the 3 argument form of open(). Oh, well." >&4
8621 elif $test `./findhdr fcntl.h` && \
8622 set open3 -DI_FCNTL && eval $compile; then
8624 echo "<fcntl.h> defines the O_* constants..." >&4
8626 echo "and you have the 3 argument form of open()." >&4
8629 echo "but not the 3 argument form of open(). Oh, well." >&4
8634 echo "I can't find the O_* constant definitions! You got problems." >&4
8640 : see which of string.h or strings.h is needed
8642 strings=`./findhdr string.h`
8643 if $test "$strings" && $test -r "$strings"; then
8644 echo "Using <string.h> instead of <strings.h>." >&4
8648 strings=`./findhdr strings.h`
8649 if $test "$strings" && $test -r "$strings"; then
8650 echo "Using <strings.h> instead of <string.h>." >&4
8652 echo "No string header found -- You'll surely have problems." >&4
8658 "$undef") strings=`./findhdr strings.h`;;
8659 *) strings=`./findhdr string.h`;;
8662 : check for non-blocking I/O stuff
8663 case "$h_sysfile" in
8664 true) echo "#include <sys/file.h>" > head.c;;
8667 true) echo "#include <fcntl.h>" > head.c;;
8668 *) echo "#include <sys/fcntl.h>" > head.c;;
8673 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8674 case "$o_nonblock" in
8677 $cat >>try.c <<'EOCP'
8681 printf("O_NONBLOCK\n");
8685 printf("O_NDELAY\n");
8689 printf("FNDELAY\n");
8696 if eval $compile_ok; then
8698 case "$o_nonblock" in
8699 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8700 *) echo "Seems like we can use $o_nonblock.";;
8703 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8706 *) echo "Using $hint value $o_nonblock.";;
8708 $rm -f try try.* .out core
8711 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8717 #include <sys/types.h>
8720 #define MY_O_NONBLOCK $o_nonblock
8721 #ifndef errno /* XXX need better Configure test */
8732 #include <strings.h>
8734 $signal_t blech(x) int x; { exit(3); }
8736 $cat >> try.c <<'EOCP'
8744 pipe(pd); /* Down: child -> parent */
8745 pipe(pu); /* Up: parent -> child */
8748 close(pd[1]); /* Parent reads from pd[0] */
8749 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8750 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8752 signal(SIGALRM, blech);
8754 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8756 sprintf(string, "%d\n", ret);
8757 write(2, string, strlen(string));
8760 if (errno == EAGAIN) {
8766 if (errno == EWOULDBLOCK)
8767 printf("EWOULDBLOCK\n");
8770 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8771 sleep(2); /* Give it time to close our pipe */
8773 ret = read(pd[0], buf, 1); /* Should read EOF */
8775 sprintf(string, "%d\n", ret);
8776 write(3, string, strlen(string));
8780 close(pd[0]); /* We write to pd[1] */
8781 close(pu[1]); /* We read from pu[0] */
8782 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8783 close(pd[1]); /* Pipe pd is now fully closed! */
8784 exit(0); /* Bye bye, thank you for playing! */
8788 if eval $compile_ok; then
8789 echo "$startsh" >mtry
8790 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8792 ./mtry >/dev/null 2>&1
8794 0) eagain=`$cat try.out`;;
8795 1) echo "Could not perform non-blocking setting!";;
8796 2) echo "I did a successful read() for something that was not there!";;
8797 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8798 *) echo "Something terribly wrong happened during testing.";;
8800 rd_nodata=`$cat try.ret`
8801 echo "A read() system call with no data present returns $rd_nodata."
8802 case "$rd_nodata" in
8805 echo "(That's peculiar, fixing that to be -1.)"
8811 echo "Forcing errno EAGAIN on read() with no data available."
8815 echo "Your read() sets errno to $eagain when no data is available."
8818 status=`$cat try.err`
8820 0) echo "And it correctly returns 0 to signal EOF.";;
8821 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8822 *) echo "However, your read() returns '$status' on EOF??";;
8825 if test "$status" = "$rd_nodata"; then
8826 echo "WARNING: you can't distinguish between EOF and no data!"
8830 echo "I can't compile the test program--assuming errno EAGAIN will do."
8837 echo "Using $hint value $eagain."
8838 echo "Your read() returns $rd_nodata when no data is present."
8839 case "$d_eofnblk" in
8840 "$define") echo "And you can see EOF because read() returns 0.";;
8841 "$undef") echo "But you can't see EOF status from read() returned value.";;
8843 echo "(Assuming you can't see EOF status from read anyway.)"
8849 $rm -f try try.* .out core head.c mtry
8851 : see if fchmod exists
8855 : see if fchown exists
8859 : see if this is an fcntl system
8864 : See if fcntl-based locking works.
8865 $cat >try.c <<'EOCP'
8870 #if defined(F_SETLK) && defined(F_SETLKW)
8873 fd = open("try.c", O_RDONLY);
8874 flock.l_type = F_RDLCK;
8875 flock.l_whence = SEEK_SET;
8876 flock.l_start = flock.l_len = 0;
8877 retval = fcntl(fd, F_SETLK, &flock);
8879 (retval < 0 ? exit(2) : exit(0));
8885 echo "Checking if fcntl-based file locking works... "
8889 if eval $compile_ok; then
8891 echo "Yes, it seems to work."
8894 echo "Nope, it didn't work."
8898 echo "I'm unable to compile the test program, so I'll assume not."
8903 echo "Nope, since you don't even have fcntl()."
8906 set d_fcntl_can_lock
8911 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8912 while $test $# -ge 2; do
8914 $define) echo "#include <$2>";;
8918 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8920 if eval $compile; then
8931 : see whether socket exists
8933 $echo $n "Hmm... $c" >&4
8934 if set socket val -f d_socket; eval $csym; $val; then
8935 echo "Looks like you have Berkeley networking support." >&4
8937 if set setsockopt val -f; eval $csym; $val; then
8940 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8944 if $contains socklib libc.list >/dev/null 2>&1; then
8945 echo "Looks like you have Berkeley networking support." >&4
8947 : we will have to assume that it supports the 4.2 BSD interface
8950 echo "You don't have Berkeley networking in libc$_a..." >&4
8951 if test "X$d_socket" = "X$define"; then
8952 echo "...but you seem to believe that you have sockets." >&4
8954 for net in net socket
8956 if test -f /usr/lib/lib$net$_a; then
8957 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8958 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8959 if $contains socket libc.list >/dev/null 2>&1; then
8964 echo "...but the Wollongong group seems to have hacked it in." >&4
8965 sockethdr="-I/usr/netinclude"
8968 echo "Found Berkeley sockets interface in lib$net." >& 4
8969 if $contains setsockopt libc.list >/dev/null 2>&1; then
8972 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8979 if test "X$d_socket" != "X$define"; then
8980 echo "or anywhere else I see." >&4
8988 : see if socketpair exists
8989 set socketpair d_sockpair
8994 echo "Checking the availability of certain socket constants..." >& 4
8995 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8996 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8998 #include <sys/types.h>
8999 #include <sys/socket.h>
9005 set try; if eval $compile; then
9008 set d_${enum}; eval $setvar
9012 : see if sys/select.h has to be included
9013 set sys/select.h i_sysselct
9016 : see if we should include time.h, sys/time.h, or both
9018 if test "X$timeincl" = X; then
9019 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9020 $echo $n "I'm now running the test program...$c"
9021 $cat >try.c <<'EOCP'
9022 #include <sys/types.h>
9027 #ifdef SYSTIMEKERNEL
9030 #include <sys/time.h>
9033 #include <sys/select.h>
9042 struct timezone tzp;
9044 if (foo.tm_sec == foo.tm_sec)
9047 if (bar.tv_sec == bar.tv_sec)
9054 for s_timezone in '-DS_TIMEZONE' ''; do
9056 for s_timeval in '-DS_TIMEVAL' ''; do
9057 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9058 for i_time in '' '-DI_TIME'; do
9059 for i_systime in '-DI_SYSTIME' ''; do
9062 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9063 if eval $compile; then
9064 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9068 $echo $n "Succeeded with $flags$c"
9080 *SYSTIMEKERNEL*) i_systimek="$define"
9081 timeincl=`./findhdr sys/time.h`
9082 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9083 *) i_systimek="$undef";;
9086 *I_TIME*) i_time="$define"
9087 timeincl=`./findhdr time.h`" $timeincl"
9088 echo "We'll include <time.h>." >&4;;
9089 *) i_time="$undef";;
9092 *I_SYSTIME*) i_systime="$define"
9093 timeincl=`./findhdr sys/time.h`" $timeincl"
9094 echo "We'll include <sys/time.h>." >&4;;
9095 *) i_systime="$undef";;
9100 : check for fd_set items
9103 Checking to see how well your C compiler handles fd_set and friends ...
9105 $cat >fd_set.c <<EOCP
9106 #$i_systime I_SYS_TIME
9107 #$i_sysselct I_SYS_SELECT
9108 #$d_socket HAS_SOCKET
9109 #include <sys/types.h>
9111 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9114 #include <sys/time.h>
9117 #include <sys/select.h>
9126 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9133 set fd_set -DTRYBITS
9134 if eval $compile; then
9135 d_fds_bits="$define"
9137 echo "Well, your system knows about the normal fd_set typedef..." >&4
9139 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9140 d_fd_macros="$define"
9143 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9145 d_fd_macros="$undef"
9149 Hmm, your compiler has some difficulty with fd_set. Checking further...
9152 if eval $compile; then
9155 echo "Well, your system has some sort of fd_set available..." >&4
9157 echo "and you have the normal fd_set macros." >&4
9158 d_fd_macros="$define"
9161 but not the normal fd_set macros! Gross! More work for me...
9163 d_fd_macros="$undef"
9166 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9169 d_fd_macros="$undef"
9174 : see if fgetpos exists
9175 set fgetpos d_fgetpos
9178 : see if flock exists
9182 : see if fork exists
9186 : see if pathconf exists
9187 set pathconf d_pathconf
9190 : see if fpathconf exists
9191 set fpathconf d_fpathconf
9195 : check for fpos64_t
9197 echo "Checking to see if you have fpos64_t..." >&4
9200 int main() { fpos64_t x = 7; }
9203 if eval $compile; then
9205 echo "You have fpos64_t."
9208 echo "You do not have fpos64_t."
9210 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9217 : see if frexpl exists
9221 hasstruct='varname=$1; struct=$2; shift; shift;
9222 while $test $# -ge 2; do
9224 $define) echo "#include <$2>";;
9228 echo "int main () { struct $struct foo; }" >> try.c;
9230 if eval $compile; then
9239 : see if this is a sys/param system
9240 set sys/param.h i_sysparam
9243 : see if this is a sys/mount.h system
9244 set sys/mount.h i_sysmount
9247 : see if sys/types.h has to be included
9248 set sys/types.h i_systypes
9253 echo "Checking to see if your system supports struct fs_data..." >&4
9254 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9256 case "$d_fs_data_s" in
9257 "$define") echo "Yes, it does." ;;
9258 *) echo "No, it doesn't." ;;
9261 : see if fseeko exists
9265 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9268 : see if fsetpos exists
9269 set fsetpos d_fsetpos
9273 : see if fstatfs exists
9274 set fstatfs d_fstatfs
9278 : see if statvfs exists
9279 set statvfs d_statvfs
9282 : see if fstatvfs exists
9283 set fstatvfs d_fstatvfs
9287 : see if fsync exists
9291 : see if ftello exists
9295 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9298 : see if getcwd exists
9302 : see if getespwnam exists
9303 set getespwnam d_getespwnam
9307 : see if getfsstat exists
9308 set getfsstat d_getfsstat
9311 : see if getgrent exists
9312 set getgrent d_getgrent
9315 : see if gethostbyaddr exists
9316 set gethostbyaddr d_gethbyaddr
9319 : see if gethostbyname exists
9320 set gethostbyname d_gethbyname
9323 : see if gethostent exists
9324 set gethostent d_gethent
9327 : see how we will look up host name
9330 if set gethostname val -f d_gethname; eval $csym; $val; then
9331 echo 'gethostname() found.' >&4
9332 d_gethname="$define"
9335 if set uname val -f d_uname; eval $csym; $val; then
9338 uname() was found, but you're running xenix, and older versions of xenix
9339 have a broken uname(). If you don't really know whether your xenix is old
9340 enough to have a broken system call, use the default answer.
9347 rp='Is your uname() broken?'
9350 n*) d_uname="$define"; call=uname;;
9353 echo 'uname() found.' >&4
9360 case "$d_gethname" in
9361 '') d_gethname="$undef";;
9364 '') d_uname="$undef";;
9366 case "$d_uname$d_gethname" in
9371 Every now and then someone has a $call() that lies about the hostname
9372 but can't be fixed for political or economic reasons. If you wish, I can
9373 pretend $call() isn't there and maybe compute hostname at run-time
9374 thanks to the '$phostname' command.
9377 rp="Shall I ignore $call() from now on?"
9380 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9383 case "$phostname" in
9385 *) case "$aphostname" in
9391 file=`./loc $file $file $pth`
9392 aphostname=`echo $file $*`
9397 case "$d_uname$d_gethname" in
9400 case "$phostname" in
9402 echo "There will be no way for $package to get your hostname." >&4;;
9404 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9408 case "$d_phostname" in
9409 '') d_phostname="$undef";;
9412 : see if this is a netdb.h system
9416 : see if prototypes for various gethostxxx netdb.h functions are available
9418 set d_gethostprotos gethostent $i_netdb netdb.h
9421 : see if getlogin exists
9422 set getlogin d_getlogin
9425 : see if getmnt exists
9429 : see if getmntent exists
9430 set getmntent d_getmntent
9433 : see if getnetbyaddr exists
9434 set getnetbyaddr d_getnbyaddr
9437 : see if getnetbyname exists
9438 set getnetbyname d_getnbyname
9441 : see if getnetent exists
9442 set getnetent d_getnent
9445 : see if prototypes for various getnetxxx netdb.h functions are available
9447 set d_getnetprotos getnetent $i_netdb netdb.h
9450 : see if getpagesize exists
9451 set getpagesize d_getpagsz
9455 : see if getprotobyname exists
9456 set getprotobyname d_getpbyname
9459 : see if getprotobynumber exists
9460 set getprotobynumber d_getpbynumber
9463 : see if getprotoent exists
9464 set getprotoent d_getpent
9467 : see if getpgid exists
9468 set getpgid d_getpgid
9471 : see if getpgrp2 exists
9472 set getpgrp2 d_getpgrp2
9475 : see if getppid exists
9476 set getppid d_getppid
9479 : see if getpriority exists
9480 set getpriority d_getprior
9483 : see if prototypes for various getprotoxxx netdb.h functions are available
9485 set d_getprotoprotos getprotoent $i_netdb netdb.h
9488 : see if getprpwnam exists
9489 set getprpwnam d_getprpwnam
9492 : see if getpwent exists
9493 set getpwent d_getpwent
9497 : see if getservbyname exists
9498 set getservbyname d_getsbyname
9501 : see if getservbyport exists
9502 set getservbyport d_getsbyport
9505 : see if getservent exists
9506 set getservent d_getsent
9509 : see if prototypes for various getservxxx netdb.h functions are available
9511 set d_getservprotos getservent $i_netdb netdb.h
9514 : see if getspnam exists
9515 set getspnam d_getspnam
9518 : see if gettimeofday or ftime exists
9519 set gettimeofday d_gettimeod
9521 case "$d_gettimeod" in
9527 val="$undef"; set d_ftime; eval $setvar
9530 case "$d_gettimeod$d_ftime" in
9533 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9537 : see if this is an grp system
9543 xxx=`./findhdr grp.h`
9544 $cppstdin $cppflags $cppminus < $xxx >$$.h
9546 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9558 set d_grpasswd; eval $setvar
9562 : see if hasmntopt exists
9563 set hasmntopt d_hasmntopt
9566 : see if this is a netinet/in.h or sys/in.h system
9567 set netinet/in.h i_niin sys/in.h i_sysin
9570 : see if arpa/inet.h has to be included
9571 set arpa/inet.h i_arpainet
9574 : see if htonl --and friends-- exists
9579 : Maybe they are macros.
9584 #include <sys/types.h>
9585 #$i_niin I_NETINET_IN
9587 #$i_arpainet I_ARPA_INET
9589 #include <netinet/in.h>
9595 #include <arpa/inet.h>
9598 printf("Defined as a macro.");
9601 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9602 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9604 echo "But it seems to be defined as a macro." >&4
9612 : see if iconv exists
9618 if set index val -f; eval $csym; $val; then
9619 if set strchr val -f d_strchr; eval $csym; $val; then
9620 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9623 echo "strchr() found." >&4
9627 echo "index() found." >&4
9632 echo "index() found." >&4
9635 if set strchr val -f d_strchr; eval $csym; $val; then
9638 echo "strchr() found." >&4
9640 echo "No index() or strchr() found!" >&4
9645 set d_strchr; eval $setvar
9647 set d_index; eval $setvar
9649 : check whether inet_aton exists
9650 set inet_aton d_inetaton
9653 : see if inttypes.h is available
9654 : we want a real compile instead of Inhdr because some systems
9655 : have an inttypes.h which includes non-existent headers
9658 #include <inttypes.h>
9660 static int32_t foo32 = 0x12345678;
9664 if eval $compile; then
9665 echo "<inttypes.h> found." >&4
9668 echo "<inttypes.h> NOT found." >&4
9677 echo "Checking to see if you have int64_t..." >&4
9679 #include <sys/types.h>
9680 #$i_inttypes I_INTTYPES
9682 #include <inttypes.h>
9684 int main() { int64_t x = 7; }
9687 if eval $compile; then
9689 echo "You have int64_t."
9692 echo "You do not have int64_t."
9700 $cat >isascii.c <<'EOCP'
9712 if eval $compile; then
9713 echo "isascii() found." >&4
9716 echo "isascii() NOT found." >&4
9723 : see if isnan exists
9727 : see if isnanl exists
9731 : see if killpg exists
9735 : see if lchown exists
9737 $cat > try.c <<'EOCP'
9738 /* System header to define __stub macros and hopefully few prototypes,
9739 which can conflict with char lchown(); below. */
9741 /* Override any gcc2 internal prototype to avoid an error. */
9742 /* We use char because int might match the return type of a gcc2
9743 builtin and then its argument prototype would still apply. */
9746 /* The GNU C library defines this for functions which it implements
9747 to always fail with ENOSYS. Some functions are actually named
9748 something starting with __ and the normal name is an alias. */
9749 #if defined (__stub_lchown) || defined (__stub___lchown)
9757 if eval $compile; then
9758 $echo "lchown() found." >&4
9761 $echo "lchown() NOT found." >&4
9767 : See if number of significant digits in a double precision number is known
9769 $cat >ldbl_dig.c <<EOM
9779 printf("Contains LDBL_DIG");
9782 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9783 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9784 echo "LDBL_DIG found." >&4
9787 echo "LDBL_DIG NOT found." >&4
9794 : see if link exists
9798 : see if localeconv exists
9799 set localeconv d_locconv
9802 : see if lockf exists
9806 : check for long long
9808 echo "Checking to see if you have long long..." >&4
9809 echo 'int main() { long long x = 7; return 0; }' > try.c
9811 if eval $compile; then
9813 echo "You have long long."
9816 echo "You do not have long long."
9822 : check for length of long long
9823 case "${d_longlong}${longlongsize}" in
9826 echo "Checking to see how big your long longs are..." >&4
9827 $cat >try.c <<'EOCP'
9831 printf("%d\n", (int)sizeof(long long));
9836 if eval $compile_ok; then
9837 longlongsize=`./try$exe_ext`
9838 echo "Your long longs are $longlongsize bytes long."
9842 echo "(I can't seem to compile the test program. Guessing...)"
9843 rp="What is the size of a long long (in bytes)?"
9847 if $test "X$longsize" = "X$longlongsize"; then
9848 echo "(That isn't any different from an ordinary long.)"
9854 : see if prototype for lseek is available
9856 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9859 : see if lstat exists
9863 : see if madvise exists
9864 set madvise d_madvise
9867 : see if mblen exists
9871 : see if mbstowcs exists
9872 set mbstowcs d_mbstowcs
9875 : see if mbtowc exists
9879 : see if memchr exists
9883 : see if memcmp exists
9887 : see if memcpy exists
9891 : see if memmove exists
9892 set memmove d_memmove
9895 : see if memset exists
9899 : see if mkdir exists
9903 : see if mkdtemp exists
9904 set mkdtemp d_mkdtemp
9907 : see if mkfifo exists
9911 : see if mkstemp exists
9912 set mkstemp d_mkstemp
9915 : see if mkstemps exists
9916 set mkstemps d_mkstemps
9919 : see if mktime exists
9923 : see if this is a sys/mman.h system
9924 set sys/mman.h i_sysmman
9927 : see if mmap exists
9930 : see what shmat returns
9931 : default to something harmless
9933 case "$i_sysmman$d_mmap" in
9935 $cat >mmap.c <<'END'
9936 #include <sys/mman.h>
9939 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9944 echo "and it returns ($mmaptype)." >&4
9950 : see if modfl exists
9954 : see if mprotect exists
9955 set mprotect d_mprotect
9958 : see if msgctl exists
9962 : see if msgget exists
9966 : see if msgsnd exists
9970 : see if msgrcv exists
9974 : see how much of the 'msg*(2)' library is present.
9977 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9978 *"$undef"*) h_msg=false;;
9982 case "`ipcs 2>&1`" in
9983 "SVID messages"*"not configured"*)
9984 echo "Your $osname does not have the msg*(2) configured." >&4
9999 : we could also check for sys/ipc.h ...
10000 if $h_msg && $test `./findhdr sys/msg.h`; then
10001 echo "You have the full msg*(2) library." >&4
10004 echo "You don't have the full msg*(2) library." >&4
10010 : see if msync exists
10014 : see if munmap exists
10015 set munmap d_munmap
10018 : see if nice exists
10024 echo "Checking which 64-bit integer type we could use..." >&4
10030 val='"unsigned int"'
10035 *) case "$longsize" in
10039 val='"unsigned long"'
10044 *) case "$d_longlong:$longlongsize" in
10049 val='"unsigned long long"'
10054 *) case "$d_int64_t" in
10072 case "$quadtype" in
10073 '') echo "Alas, no 64-bit integer types in sight." >&4
10076 *) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10081 echo "We $verb use '$quadtype' for 64-bit integers." >&4
10086 : check for length of character
10088 case "$charsize" in
10090 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10091 $cat >try.c <<'EOCP'
10095 printf("%d\n", (int)sizeof(char));
10100 if eval $compile_ok; then
10104 echo "(I can't seem to compile the test program. Guessing...)"
10111 rp="What is the size of a character (in bytes)?"
10116 : check for volatile keyword
10118 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10119 $cat >try.c <<'EOCP'
10122 typedef struct _goo_struct goo_struct;
10123 goo_struct * volatile goo = ((goo_struct *)0);
10124 struct _goo_struct {
10129 typedef unsigned short foo_t;
10130 char *volatile foo;
10132 volatile foo_t blech;
10136 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10138 echo "Yup, it does."
10141 echo "Nope, it doesn't."
10149 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10151 case "$use64bitint:$d_quad:$quadtype" in
10154 uvtype="$uquadtype"
10159 uvtype="unsigned long"
10165 case "$uselongdouble:$d_longdbl" in
10167 nvtype="long double"
10168 nvsize=$longdblsize
10175 $echo "(IV will be "$ivtype", $ivsize bytes)"
10176 $echo "(UV will be "$uvtype", $uvsize bytes)"
10177 $echo "(NV will be "$nvtype", $nvsize bytes)"
10180 #$i_inttypes I_INTTYPES
10182 #include <inttypes.h>
10187 int8_t i = INT8_MAX;
10188 uint8_t u = UINT8_MAX;
10189 printf("int8_t\n");
10192 int16_t i = INT16_MAX;
10193 uint16_t i = UINT16_MAX;
10194 printf("int16_t\n");
10197 int32_t i = INT32_MAX;
10198 uint32_t u = UINT32_MAX;
10199 printf("int32_t\n");
10205 '') case "$charsize" in
10207 u8type="unsigned char"
10216 if eval $compile; then
10217 case "`./try$exe_ext`" in
10218 int8_t) i8type=int8_t
10228 '') if $test $charsize -ge 1; then
10230 u8type="unsigned char"
10238 '') case "$shortsize" in
10240 u16type="unsigned short"
10248 '') set try -DINT16
10249 if eval $compile; then
10250 case "`./try$exe_ext`" in
10262 '') if $test $shortsize -ge 2; then
10264 u16type="unsigned short"
10272 '') case "$longsize" in
10274 u32type="unsigned long"
10278 *) case "$intsize" in
10280 u32type="unsigned int"
10290 '') set try -DINT32
10291 if eval $compile; then
10292 case "`./try$exe_ext`" in
10304 '') if $test $intsize -ge 4; then
10306 u32type="unsigned int"
10314 '') case "$d_quad:$quadtype" in
10316 i64type="$quadtype"
10317 u64type="$uquadtype"
10325 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10326 : volatile so that the compiler has to store it out to memory.
10327 if test X"$d_volatile" = X"$define"; then
10332 #include <sys/types.h>
10333 #include <signal.h>
10335 $volatile int bletched = 0;
10336 $signal_t blech(s) int s; { bletched = 1; }
10341 int n = 8 * $uvsize;
10344 signal(SIGFPE, blech);
10347 for (i = 0; i < n; i++) {
10348 u = u << 1 | ($uvtype)1;
10350 if (($uvtype)d != u)
10354 d = ($nvtype)(u - 1);
10355 if (($uvtype)d != (u - 1))
10363 printf("%d\n", ((i == n) ? -n : i));
10369 d_nv_preserves_uv="$undef"
10370 if eval $compile; then
10371 d_nv_preserves_uv_bits="`./try$exe_ext`"
10373 case "$d_nv_preserves_uv_bits" in
10375 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
10376 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10377 d_nv_preserves_uv="$define"
10379 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10380 d_nv_preserves_uv="$undef" ;;
10381 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10382 d_nv_preserves_uv_bits="$undef" ;;
10388 : check for off64_t
10390 echo "Checking to see if you have off64_t..." >&4
10392 #include <sys/types.h>
10393 #include <unistd.h>
10394 int main() { off64_t x = 7; }
10397 if eval $compile; then
10399 echo "You have off64_t."
10402 echo "You do not have off64_t."
10403 case "$lseeksize" in
10404 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10411 : see if POSIX threads are available
10412 set pthread.h i_pthread
10418 : how to create joinable pthreads
10419 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10421 echo "Checking what constant to use for creating joinable pthreads..." >&4
10422 $cat >try.c <<'EOCP'
10423 #include <pthread.h>
10425 int detachstate = JOINABLE;
10428 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10429 if eval $compile; then
10430 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10431 val="$undef" # Yes, undef.
10432 set d_old_pthread_create_joinable
10435 set old_pthread_create_joinable
10438 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10439 if eval $compile; then
10440 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10442 set d_old_pthread_create_joinable
10444 val=PTHREAD_CREATE_UNDETACHED
10445 set old_pthread_create_joinable
10448 set try -DJOINABLE=__UNDETACHED
10449 if eval $compile; then
10450 echo "You seem to use __UNDETACHED." >&4
10452 set d_old_pthread_create_joinable
10455 set old_pthread_create_joinable
10458 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10460 set d_old_pthread_create_joinable
10463 set old_pthread_create_joinable
10470 d_old_pthread_create_joinable="$undef"
10471 old_pthread_create_joinable=""
10474 : see if pause exists
10478 : see if pipe exists
10482 : see if poll exists
10487 : see whether the various POSIXish _yields exist
10489 #include <pthread.h>
10495 #ifdef PTHREAD_YIELD
10498 #ifdef PTHREAD_YIELD_NULL
10499 pthread_yield(NULL);
10505 : see if sched_yield exists
10506 set try -DSCHED_YIELD
10507 if eval $compile; then
10509 sched_yield='sched_yield()'
10513 case "$usethreads" in
10516 $define) echo 'sched_yield() found.' >&4 ;;
10517 *) echo 'sched_yield() NOT found.' >&4 ;;
10523 : see if pthread_yield exists
10524 set try -DPTHREAD_YIELD
10525 if eval $compile; then
10527 case "$sched_yield" in
10528 '') sched_yield='pthread_yield()' ;;
10531 set try -DPTHREAD_YIELD_NULL
10532 if eval $compile; then
10534 case "$sched_yield" in
10535 '') sched_yield='pthread_yield(NULL)' ;;
10541 case "$usethreads" in
10544 $define) echo 'pthread_yield() found.' >&4 ;;
10545 *) echo 'pthread_yield() NOT found.' >&4 ;;
10549 set d_pthread_yield
10552 case "$sched_yield" in
10553 '') sched_yield=undef ;;
10558 : see if this is a pwd.h system
10564 xxx=`./findhdr pwd.h`
10565 $cppstdin $cppflags $cppminus < $xxx >$$.h
10567 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10575 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10583 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10591 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10599 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10607 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10615 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10623 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10635 set d_pwquota; eval $setvar
10636 set d_pwage; eval $setvar
10637 set d_pwchange; eval $setvar
10638 set d_pwclass; eval $setvar
10639 set d_pwexpire; eval $setvar
10640 set d_pwcomment; eval $setvar
10641 set d_pwgecos; eval $setvar
10642 set d_pwpasswd; eval $setvar
10646 : see if readdir and friends exist
10647 set readdir d_readdir
10649 set seekdir d_seekdir
10651 set telldir d_telldir
10653 set rewinddir d_rewinddir
10656 : see if readlink exists
10657 set readlink d_readlink
10660 : see if rename exists
10661 set rename d_rename
10664 : see if rmdir exists
10668 : see if memory.h is available.
10673 : See if it conflicts with string.h
10679 $cppstdin $cppflags $cppminus < $strings > mem.h
10680 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10682 echo "We won't be including <memory.h>."
10692 : can bcopy handle overlapping blocks?
10697 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10699 #$i_memory I_MEMORY
10700 #$i_stdlib I_STDLIB
10701 #$i_string I_STRING
10702 #$i_unistd I_UNISTD
10704 $cat >>try.c <<'EOCP'
10707 # include <memory.h>
10710 # include <stdlib.h>
10713 # include <string.h>
10715 # include <strings.h>
10718 # include <unistd.h> /* Needed for NetBSD */
10722 char buf[128], abc[128];
10728 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10730 for (align = 7; align >= 0; align--) {
10731 for (len = 36; len; len--) {
10733 bcopy(abc, b, len);
10734 for (off = 1; off <= len; off++) {
10735 bcopy(b, b+off, len);
10736 bcopy(b+off, b, len);
10737 if (bcmp(b, abc, len))
10746 if eval $compile_ok; then
10747 if ./try 2>/dev/null; then
10748 echo "Yes, it can."
10751 echo "It can't, sorry."
10752 case "$d_memmove" in
10753 "$define") echo "But that's Ok since you have memmove()." ;;
10757 echo "(I can't compile the test program, so we'll assume not...)"
10758 case "$d_memmove" in
10759 "$define") echo "But that's Ok since you have memmove()." ;;
10764 $rm -f try.* try core
10768 : can memcpy handle overlapping blocks?
10770 case "$d_memcpy" in
10773 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10775 #$i_memory I_MEMORY
10776 #$i_stdlib I_STDLIB
10777 #$i_string I_STRING
10778 #$i_unistd I_UNISTD
10780 $cat >>try.c <<'EOCP'
10783 # include <memory.h>
10786 # include <stdlib.h>
10789 # include <string.h>
10791 # include <strings.h>
10794 # include <unistd.h> /* Needed for NetBSD */
10798 char buf[128], abc[128];
10804 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10805 try to store the string in read-only memory. */
10806 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10808 for (align = 7; align >= 0; align--) {
10809 for (len = 36; len; len--) {
10811 memcpy(b, abc, len);
10812 for (off = 1; off <= len; off++) {
10813 memcpy(b+off, b, len);
10814 memcpy(b, b+off, len);
10815 if (memcmp(b, abc, len))
10824 if eval $compile_ok; then
10825 if ./try 2>/dev/null; then
10826 echo "Yes, it can."
10829 echo "It can't, sorry."
10830 case "$d_memmove" in
10831 "$define") echo "But that's Ok since you have memmove()." ;;
10835 echo "(I can't compile the test program, so we'll assume not...)"
10836 case "$d_memmove" in
10837 "$define") echo "But that's Ok since you have memmove()." ;;
10842 $rm -f try.* try core
10846 : can memcmp be trusted to compare relative magnitude?
10848 case "$d_memcmp" in
10851 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10853 #$i_memory I_MEMORY
10854 #$i_stdlib I_STDLIB
10855 #$i_string I_STRING
10856 #$i_unistd I_UNISTD
10858 $cat >>try.c <<'EOCP'
10861 # include <memory.h>
10864 # include <stdlib.h>
10867 # include <string.h>
10869 # include <strings.h>
10872 # include <unistd.h> /* Needed for NetBSD */
10878 if ((a < b) && memcmp(&a, &b, 1) < 0)
10884 if eval $compile_ok; then
10885 if ./try 2>/dev/null; then
10886 echo "Yes, it can."
10889 echo "No, it can't (it uses signed chars)."
10892 echo "(I can't compile the test program, so we'll assume not...)"
10896 $rm -f try.* try core
10900 : see if prototype for sbrk is available
10902 set d_sbrkproto sbrk $i_unistd unistd.h
10905 : see if select exists
10906 set select d_select
10909 : see if semctl exists
10910 set semctl d_semctl
10913 : see if semget exists
10914 set semget d_semget
10917 : see if semop exists
10921 : see how much of the 'sem*(2)' library is present.
10924 case "$d_semctl$d_semget$d_semop" in
10925 *"$undef"*) h_sem=false;;
10929 case "`ipcs 2>&1`" in
10930 "SVID messages"*"not configured"*)
10931 echo "Your $osname does not have the sem*(2) configured." >&4
10934 set semctl d_semctl
10936 set semget d_semget
10944 : we could also check for sys/ipc.h ...
10945 if $h_sem && $test `./findhdr sys/sem.h`; then
10946 echo "You have the full sem*(2) library." >&4
10949 echo "You don't have the full sem*(2) library." >&4
10955 : see whether sys/sem.h defines union semun
10957 $cat > try.c <<'END'
10958 #include <sys/types.h>
10959 #include <sys/ipc.h>
10960 #include <sys/sem.h>
10961 int main () { union semun semun; semun.buf = 0; }
10964 if eval $compile; then
10965 echo "You have union semun in <sys/sem.h>." >&4
10968 echo "You do not have union semun in <sys/sem.h>." >&4
10971 $rm -f try try.c try.h
10975 : see how to do semctl IPC_STAT
10978 : see whether semctl IPC_STAT can use union semun
10983 # define S_IRUSR S_IREAD
10984 # define S_IWUSR S_IWRITE
10985 # define S_IXUSR S_IEXEC
10987 # define S_IRUSR 0400
10988 # define S_IWUSR 0200
10989 # define S_IXUSR 0100
10991 # define S_IRGRP (S_IRUSR>>3)
10992 # define S_IWGRP (S_IWUSR>>3)
10993 # define S_IXGRP (S_IXUSR>>3)
10994 # define S_IROTH (S_IRUSR>>6)
10995 # define S_IWOTH (S_IWUSR>>6)
10996 # define S_IXOTH (S_IXUSR>>6)
10999 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11000 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11001 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11006 #include <sys/types.h>
11007 #include <sys/ipc.h>
11008 #include <sys/sem.h>
11009 #include <sys/stat.h>
11016 #$d_union_semun HAS_UNION_SEMUN
11019 #ifndef HAS_UNION_SEMUN
11022 struct semid_ds *buf;
11023 unsigned short *array;
11029 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11030 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11032 struct semid_ds argbuf;
11035 st = semctl(sem, 0, IPC_STAT, arg);
11039 # endif /* IPC_STAT */
11040 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11042 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11043 # endif /* IPC_RMID */
11044 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11046 #endif /* IPC_PRIVATE && ... */
11047 printf("semget failed: errno = %d\n", errno);
11053 if eval $compile; then
11056 semun) val="$define" ;;
11062 case "$d_semctl_semun" in
11064 echo "You can use union semun for semctl IPC_STAT." >&4
11067 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11072 : see whether semctl IPC_STAT can use struct semid_ds pointer
11073 $cat > try.c <<'END'
11074 #include <sys/types.h>
11075 #include <sys/ipc.h>
11076 #include <sys/sem.h>
11077 #include <sys/stat.h>
11085 struct semid_ds arg;
11088 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11089 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11092 st = semctl(sem, 0, IPC_STAT, &arg);
11094 printf("semid_ds\n");
11096 # endif /* IPC_STAT */
11097 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11099 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11100 # endif /* IPC_RMID */
11101 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11103 #endif /* IPC_PRIVATE && ... */
11104 printf("semget failed: errno = %d\n", errno);
11111 if eval $compile; then
11114 semid_ds) val="$define" ;;
11118 set d_semctl_semid_ds
11120 case "$d_semctl_semid_ds" in
11122 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11124 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11131 # We do not have the full sem*(2) library, so assume we can not
11137 set d_semctl_semid_ds
11142 : see if setegid exists
11143 set setegid d_setegid
11146 : see if seteuid exists
11147 set seteuid d_seteuid
11150 : see if setgrent exists
11151 set setgrent d_setgrent
11154 : see if sethostent exists
11155 set sethostent d_sethent
11158 : see if setlinebuf exists
11159 set setlinebuf d_setlinebuf
11162 : see if setlocale exists
11163 set setlocale d_setlocale
11166 : see if setnetent exists
11167 set setnetent d_setnent
11170 : see if setprotoent exists
11171 set setprotoent d_setpent
11174 : see if setpgid exists
11175 set setpgid d_setpgid
11178 : see if setpgrp2 exists
11179 set setpgrp2 d_setpgrp2
11182 : see if setpriority exists
11183 set setpriority d_setprior
11186 : see if setproctitle exists
11187 set setproctitle d_setproctitle
11190 : see if setpwent exists
11191 set setpwent d_setpwent
11194 : see if setregid exists
11195 set setregid d_setregid
11197 set setresgid d_setresgid
11200 : see if setreuid exists
11201 set setreuid d_setreuid
11203 set setresuid d_setresuid
11206 : see if setrgid exists
11207 set setrgid d_setrgid
11210 : see if setruid exists
11211 set setruid d_setruid
11214 : see if setservent exists
11215 set setservent d_setsent
11218 : see if setsid exists
11219 set setsid d_setsid
11222 : see if setvbuf exists
11223 set setvbuf d_setvbuf
11226 : see if sfio.h is available
11231 : see if sfio library is available
11242 : Ok, but do we want to use it.
11246 true|$define|[yY]*) dflt='y';;
11249 echo "$package can use the sfio library, but it is experimental."
11250 case "$useperlio" in
11252 echo "For sfio also the PerlIO abstraction layer is needed."
11253 echo "Earlier you said you wouldn't want that."
11256 rp="You seem to have sfio available, do you want to try using it?"
11259 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
11260 useperlio="$define"
11263 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11265 : Remove sfio from list of libraries to use
11266 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11269 echo "libs = $libs" >&4
11273 *) case "$usesfio" in
11274 true|$define|[yY]*)
11275 echo "Sorry, cannot find sfio on this machine." >&4
11276 echo "Ignoring your setting of usesfio=$usesfio." >&4
11285 $define) usesfio='true';;
11286 *) usesfio='false';;
11289 : see if shmctl exists
11290 set shmctl d_shmctl
11293 : see if shmget exists
11294 set shmget d_shmget
11297 : see if shmat exists
11300 : see what shmat returns
11303 $cat >shmat.c <<'END'
11304 #include <sys/shm.h>
11307 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11312 echo "and it returns ($shmattype)." >&4
11313 : see if a prototype for shmat is available
11314 xxx=`./findhdr sys/shm.h`
11315 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11316 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11327 set d_shmatprototype
11330 : see if shmdt exists
11334 : see how much of the 'shm*(2)' library is present.
11337 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11338 *"$undef"*) h_shm=false;;
11342 case "`ipcs 2>&1`" in
11343 "SVID shared memory"*"not configured"*)
11344 echo "Your $osname does not have the shm*(2) configured." >&4
11347 set shmctl d_shmctl
11349 set shmget d_shmget
11359 : we could also check for sys/ipc.h ...
11360 if $h_shm && $test `./findhdr sys/shm.h`; then
11361 echo "You have the full shm*(2) library." >&4
11364 echo "You don't have the full shm*(2) library." >&4
11371 : see if we have sigaction
11372 if set sigaction val -f d_sigaction; eval $csym; $val; then
11373 echo 'sigaction() found.' >&4
11374 $cat > try.c <<'EOP'
11376 #include <sys/types.h>
11377 #include <signal.h>
11380 struct sigaction act, oact;
11382 oact.sa_handler = 0;
11383 /* so that act and oact are used */
11384 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11388 if eval $compile_ok; then
11391 echo "But you don't seem to have a useable struct sigaction." >&4
11395 echo 'sigaction NOT found.' >&4
11398 set d_sigaction; eval $setvar
11399 $rm -f try try$_o try.c
11401 : see if sigsetjmp exists
11403 case "$d_sigsetjmp" in
11405 $cat >try.c <<'EOP'
11406 #include <setjmp.h>
11411 if (sigsetjmp(env,1))
11414 siglongjmp(env, 1);
11419 if eval $compile; then
11420 if ./try >/dev/null 2>&1; then
11421 echo "POSIX sigsetjmp found." >&4
11425 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11431 echo "sigsetjmp not found." >&4
11435 *) val="$d_sigsetjmp"
11436 case "$d_sigsetjmp" in
11437 $define) echo "POSIX sigsetjmp found." >&4;;
11438 $undef) echo "sigsetjmp not found." >&4;;
11446 : see if socks5_init exists
11447 set socks5_init d_socks5_init
11450 : see if sys/stat.h is available
11451 set sys/stat.h i_sysstat
11455 : see if stat knows about block sizes
11457 echo "Checking to see if your struct stat has st_blocks field..." >&4
11458 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11462 : see if this is a sys/vfs.h system
11463 set sys/vfs.h i_sysvfs
11467 : see if this is a sys/statfs.h system
11468 set sys/statfs.h i_sysstatfs
11473 echo "Checking to see if your system supports struct statfs..." >&4
11474 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
11476 case "$d_statfs_s" in
11477 "$define") echo "Yes, it does." ;;
11478 *) echo "No, it doesn't." ;;
11483 : see if struct statfs knows about f_flags
11484 case "$d_statfs_s" in
11487 echo "Checking to see if your struct statfs has f_flags field..." >&4
11488 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
11492 set d_statfs_f_flags
11496 case "$d_statfs_f_flags" in
11497 "$define") echo "Yes, it does." ;;
11498 *) echo "No, it doesn't." ;;
11501 : see if _ptr and _cnt from stdio act std
11504 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
11505 echo "(Looks like you have stdio.h from BSD.)"
11506 case "$stdio_ptr" in
11507 '') stdio_ptr='((fp)->_p)'
11510 *) ptr_lval=$d_stdio_ptr_lval;;
11512 case "$stdio_cnt" in
11513 '') stdio_cnt='((fp)->_r)'
11516 *) cnt_lval=$d_stdio_cnt_lval;;
11518 case "$stdio_base" in
11519 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
11521 case "$stdio_bufsiz" in
11522 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
11524 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11525 echo "(Looks like you have stdio.h from Linux.)"
11526 case "$stdio_ptr" in
11527 '') stdio_ptr='((fp)->_IO_read_ptr)'
11530 *) ptr_lval=$d_stdio_ptr_lval;;
11532 case "$stdio_cnt" in
11533 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11536 *) cnt_lval=$d_stdio_cnt_lval;;
11538 case "$stdio_base" in
11539 '') stdio_base='((fp)->_IO_read_base)';;
11541 case "$stdio_bufsiz" in
11542 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11545 case "$stdio_ptr" in
11546 '') stdio_ptr='((fp)->_ptr)'
11549 *) ptr_lval=$d_stdio_ptr_lval;;
11551 case "$stdio_cnt" in
11552 '') stdio_cnt='((fp)->_cnt)'
11555 *) cnt_lval=$d_stdio_cnt_lval;;
11557 case "$stdio_base" in
11558 '') stdio_base='((fp)->_base)';;
11560 case "$stdio_bufsiz" in
11561 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11565 : test whether _ptr and _cnt really work
11566 echo "Checking how std your stdio is..." >&4
11569 #define FILE_ptr(fp) $stdio_ptr
11570 #define FILE_cnt(fp) $stdio_cnt
11572 FILE *fp = fopen("try.c", "r");
11575 18 <= FILE_cnt(fp) &&
11576 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11584 if eval $compile; then
11586 echo "Your stdio acts pretty std."
11589 echo "Your stdio isn't very std."
11592 echo "Your stdio doesn't appear very std."
11598 : Can _ptr be used as an lvalue?
11599 case "$d_stdstdio$ptr_lval" in
11600 $define$define) val=$define ;;
11603 set d_stdio_ptr_lval
11606 : Can _cnt be used as an lvalue?
11607 case "$d_stdstdio$cnt_lval" in
11608 $define$define) val=$define ;;
11611 set d_stdio_cnt_lval
11615 : test whether setting _ptr sets _cnt as a side effect
11616 d_stdio_ptr_lval_sets_cnt="$undef"
11617 d_stdio_ptr_lval_nochange_cnt="$undef"
11618 case "$d_stdio_ptr_lval$d_stdstdio" in
11620 echo "Checking to see what happens if we set the stdio ptr..." >&4
11623 /* Can we scream? */
11624 /* Eat dust sed :-) */
11625 /* In the buffer space, no one can hear you scream. */
11626 #define FILE_ptr(fp) $stdio_ptr
11627 #define FILE_cnt(fp) $stdio_cnt
11628 #include <sys/types.h>
11630 FILE *fp = fopen("try.c", "r");
11635 puts("Fail even to read");
11638 c = getc(fp); /* Read away the first # */
11640 puts("Fail even to read");
11644 18 <= FILE_cnt(fp) &&
11645 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11647 puts("Fail even to read");
11650 ptr = (char*) FILE_ptr(fp);
11651 cnt = (size_t)FILE_cnt(fp);
11653 FILE_ptr(fp) += 42;
11655 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
11656 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11659 if (FILE_cnt(fp) <= 20) {
11660 printf ("Fail (<20 chars to test)");
11663 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11664 puts("Fail compare");
11667 if (cnt == FILE_cnt(fp)) {
11668 puts("Pass_unchanged");
11671 if (FILE_cnt(fp) == (cnt - 42)) {
11672 puts("Pass_changed");
11675 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11681 if eval $compile; then
11682 case `./try$exe_ext` in
11684 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
11685 d_stdio_ptr_lval_sets_cnt="$define" ;;
11687 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
11688 d_stdio_ptr_lval_nochange_cnt="$define" ;;
11690 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
11692 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11695 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
11701 : see if _base is also standard
11703 case "$d_stdstdio" in
11707 #define FILE_base(fp) $stdio_base
11708 #define FILE_bufsiz(fp) $stdio_bufsiz
11710 FILE *fp = fopen("try.c", "r");
11713 19 <= FILE_bufsiz(fp) &&
11714 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11721 if eval $compile; then
11723 echo "And its _base field acts std."
11726 echo "But its _base field isn't std."
11729 echo "However, it seems to be lacking the _base field."
11738 Checking how to access stdio streams by file descriptor number...
11740 case "$stdio_stream_array" in
11741 '') $cat >try.c <<EOCP
11744 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11748 for s in _iob __iob __sF
11750 set try -DSTDIO_STREAM_ARRAY=$s
11751 if eval $compile; then
11752 case "`./try$exe_ext`" in
11753 yes) stdio_stream_array=$s; break ;;
11757 $rm -f try.* try$exe_ext
11759 case "$stdio_stream_array" in
11761 I can't figure out how to access stdio streams by file descriptor number.
11763 d_stdio_stream_array="$undef"
11766 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11768 d_stdio_stream_array="$define"
11772 : see if strcoll exists
11773 set strcoll d_strcoll
11776 : check for structure copying
11778 echo "Checking to see if your C compiler can copy structs..." >&4
11779 $cat >try.c <<'EOCP'
11789 if $cc -c try.c >/dev/null 2>&1 ; then
11791 echo "Yup, it can."
11794 echo "Nope, it can't."
11800 : see if strerror and/or sys_errlist[] exist
11802 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11803 if set strerror val -f d_strerror; eval $csym; $val; then
11804 echo 'strerror() found.' >&4
11805 d_strerror="$define"
11806 d_strerrm='strerror(e)'
11807 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11808 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11809 d_syserrlst="$define"
11811 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11812 d_syserrlst="$undef"
11814 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11815 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11816 echo 'strerror() found in string header.' >&4
11817 d_strerror="$define"
11818 d_strerrm='strerror(e)'
11819 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11820 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11821 d_syserrlst="$define"
11823 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11824 d_syserrlst="$undef"
11826 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11827 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11828 d_strerror="$undef"
11829 d_syserrlst="$define"
11830 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11832 echo 'strerror() and sys_errlist[] NOT found.' >&4
11833 d_strerror="$undef"
11834 d_syserrlst="$undef"
11835 d_strerrm='"unknown"'
11839 : see if strtod exists
11840 set strtod d_strtod
11843 : see if strtol exists
11844 set strtol d_strtol
11847 : see if strtold exists
11848 set strtold d_strtold
11851 : see if strtoll exists
11852 set strtoll d_strtoll
11855 case "$d_longlong-$d_strtoll" in
11858 Checking whether your strtoll() works okay...
11860 $cat >try.c <<'EOCP'
11863 #define strtoll __strtoll
11866 #define strtoll _strtoll
11869 extern long long int strtoll(char *s, char **, int);
11870 static int bad = 0;
11871 int check(char *s, long long ell, int een) {
11874 gll = strtoll(s, 0, 10);
11875 if (!((gll == ell) && (errno == een)))
11879 check(" 1", 1LL, 0);
11880 check(" 0", 0LL, 0);
11881 check("-1", -1LL, 0);
11882 check("-9223372036854775808", -9223372036854775808LL, 0);
11883 check("-9223372036854775808", -9223372036854775808LL, 0);
11884 check(" 9223372036854775807", 9223372036854775807LL, 0);
11885 check("-9223372036854775808", -9223372036854775808LL, 0);
11886 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
11887 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11893 if eval $compile; then
11896 ok) echo "Your strtoll() seems to be working okay." ;;
11898 Your strtoll() doesn't seem to be working okay.
11904 echo "(I can't seem to compile the test program--assuming it doesn't)"
11910 : see if strtoul exists
11911 set strtoul d_strtoul
11914 : see if strtoull exists
11915 set strtoull d_strtoull
11918 case "$d_longlong-$d_strtoull" in
11921 Checking whether your strtoull() works okay...
11923 $cat >try.c <<'EOCP'
11926 #define strtoull __strtoull
11929 extern unsigned long long int strtoull(char *s, char **, int);
11930 static int bad = 0;
11931 int check(char *s, long long eull, int een) {
11934 gull = strtoull(s, 0, 10);
11935 if (!((gull == eull) && (errno == een)))
11939 check(" 1", 1LL, 0);
11940 check(" 0", 0LL, 0);
11941 check("18446744073709551615", 18446744073709551615ULL, 0);
11942 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11948 if eval $compile; then
11950 ok) echo "Your strtoull() seems to be working okay." ;;
11952 Your strtoull() doesn't seem to be working okay.
11954 d_strtoull="$undef"
11961 : see if strtouq exists
11962 set strtouq d_strtouq
11965 : see if strxfrm exists
11966 set strxfrm d_strxfrm
11969 : see if symlink exists
11970 set symlink d_symlink
11973 : see if syscall exists
11974 set syscall d_syscall
11977 : see if sysconf exists
11978 set sysconf d_sysconf
11981 : see if system exists
11982 set system d_system
11985 : see if tcgetpgrp exists
11986 set tcgetpgrp d_tcgetpgrp
11989 : see if tcsetpgrp exists
11990 set tcsetpgrp d_tcsetpgrp
11993 : see if prototype for telldir is available
11995 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11998 : see if this is a sys/times.h system
11999 set sys/times.h i_systimes
12002 : see if times exists
12004 if set times val -f d_times; eval $csym; $val; then
12005 echo 'times() found.' >&4
12008 case "$i_systimes" in
12009 "$define") inc='sys/times.h';;
12011 rp="What is the type returned by times() on this system?"
12012 set clock_t clocktype long stdio.h sys/types.h $inc
12015 echo 'times() NOT found, hope that will do.' >&4
12020 : see if truncate exists
12021 set truncate d_truncate
12024 : see if tzname[] exists
12026 if set tzname val -a d_tzname; eval $csym; $val; then
12028 echo 'tzname[] found.' >&4
12031 echo 'tzname[] NOT found.' >&4
12036 : see if umask exists
12040 : see if ustat exists
12044 : backward compatibility for d_hvfork
12045 if test X$d_hvfork != X; then
12046 d_vfork="$d_hvfork"
12049 : see if there is a vfork
12054 : Ok, but do we want to use it. vfork is reportedly unreliable in
12055 : perl on Solaris 2.x, and probably elsewhere.
12059 case "$usevfork" in
12065 Perl can only use a vfork() that doesn't suffer from strict
12066 restrictions on calling functions or modifying global data in
12067 the child. For example, glibc-2.1 contains such a vfork()
12068 that is unsuitable. If your system provides a proper fork()
12069 call, chances are that you do NOT want perl to use vfork().
12072 rp="Do you still want to use vfork()?"
12077 echo "Ok, we won't use vfork()."
12086 $define) usevfork='true';;
12087 *) usevfork='false';;
12090 : see if this is an sysdir system
12091 set sys/dir.h i_sysdir
12094 : see if this is an sysndir system
12095 set sys/ndir.h i_sysndir
12098 : see if closedir exists
12099 set closedir d_closedir
12102 case "$d_closedir" in
12105 echo "Checking whether closedir() returns a status..." >&4
12106 cat > closedir.c <<EOM
12107 #$i_dirent I_DIRENT /**/
12108 #$i_sysdir I_SYS_DIR /**/
12109 #$i_sysndir I_SYS_NDIR /**/
12110 #$i_systypes I_SYS_TYPES /**/
12112 #if defined(I_SYS_TYPES)
12113 #include <sys/types.h>
12115 #if defined(I_DIRENT)
12116 #include <dirent.h>
12117 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12118 #include <sys/dir.h>
12122 #include <sys/ndir.h>
12126 #include <ndir.h> /* may be wrong in the future */
12128 #include <sys/dir.h>
12133 int main() { return closedir(opendir(".")); }
12136 if eval $compile_ok; then
12137 if ./closedir > /dev/null 2>&1 ; then
12138 echo "Yes, it does."
12141 echo "No, it doesn't."
12145 echo "(I can't seem to compile the test program--assuming it doesn't)"
12153 set d_void_closedir
12156 : see if there is a wait4
12160 : see if waitpid exists
12161 set waitpid d_waitpid
12164 : see if wcstombs exists
12165 set wcstombs d_wcstombs
12168 : see if wctomb exists
12169 set wctomb d_wctomb
12172 : preserve RCS keywords in files with variable substitution, grrr
12177 Revision='$Revision'
12179 case "$crosscompile" in
12180 ''|[nN]*) crosscompile="$undef" ;;
12184 next|rhapsody|darwin) multiarch="$define" ;;
12186 case "$multiarch" in
12187 ''|[nN]*) multiarch="$undef" ;;
12190 : check for alignment requirements
12192 case "$crosscompile$multiarch" in
12195 You seem to be either cross-compiling or doing a multiarchitecture build,
12196 skipping the memory alignment check.
12199 case "$alignbytes" in
12200 '') alignbytes=8 ;;
12204 case "$alignbytes" in
12205 '') echo "Checking alignment constraints..." >&4
12206 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12207 $cat >try.c <<'EOCP'
12208 typedef long double NV;
12211 $cat >try.c <<'EOCP'
12215 $cat >>try.c <<'EOCP'
12223 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12228 if eval $compile_ok; then
12232 echo "(I can't seem to compile the test program...)"
12235 *) dflt="$alignbytes"
12238 rp="Doubles must be aligned on a how-many-byte boundary?"
12246 : set the base revision
12249 : check for ordering of bytes in a long
12251 case "$crosscompile$multiarch" in
12254 You seem to be either cross-compiling or doing a multiarchitecture build,
12255 skipping the byteorder check.
12261 case "$byteorder" in
12264 In the following, larger digits indicate more significance. A big-endian
12265 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12266 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12267 machines may have weird orders like 3412. A Cray will report 87654321,
12268 an Alpha will report 12345678. If the test program works the default is
12270 I'm now running the test program...
12272 $cat >try.c <<'EOCP'
12279 char c[sizeof(long)];
12282 if (sizeof(long) > 4)
12283 u.l = (0x08070605L << 32) | 0x04030201L;
12286 for (i = 0; i < sizeof(long); i++)
12287 printf("%c", u.c[i]+'0');
12294 if eval $compile && ./try > /dev/null; then
12297 [1-4][1-4][1-4][1-4]|12345678|87654321)
12298 echo "(The test program ran ok.)"
12299 echo "byteorder=$dflt"
12302 ????|????????) echo "(The test program ran ok.)" ;;
12303 *) echo "(The test program didn't run right for some reason.)" ;;
12308 (I can't seem to compile the test program. Guessing big-endian...)
12311 case "$xxx_prompt" in
12313 rp="What is the order of bytes in a long?"
12327 : how do we catenate cpp tokens here?
12329 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12330 $cat >cpp_stuff.c <<'EOCP'
12331 #define RCAT(a,b)a/**/b
12332 #define ACAT(a,b)a ## b
12336 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12337 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12338 echo "Oh! Smells like ANSI's been here." >&4
12339 echo "We can catify or stringify, separately or together!"
12341 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12342 echo "Ah, yes! The good old days!" >&4
12343 echo "However, in the good old days we don't know how to stringify and"
12344 echo "catify at the same time."
12348 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12349 to have to edit the values of CAT[2-5] in config.h...
12351 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12355 : see if this is a db.h system
12361 : Check db version.
12363 echo "Checking Berkeley DB version ..." >&4
12369 #include <sys/types.h>
12374 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12375 int Major, Minor, Patch ;
12376 unsigned long Version ;
12377 (void)db_version(&Major, &Minor, &Patch) ;
12378 printf("You have Berkeley DB Version 2 or greater\n");
12380 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12381 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12382 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12383 Major, Minor, Patch) ;
12385 /* check that db.h & libdb are compatible */
12386 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12387 printf("db.h and libdb are incompatible\n") ;
12391 printf("db.h and libdb are compatible\n") ;
12393 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12394 + DB_VERSION_PATCH ;
12396 /* needs to be >= 2.3.4 */
12397 if (Version < 2003004) {
12398 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12399 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12405 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12406 printf("You have Berkeley DB Version 1\n");
12407 exit(0); /* DB version < 2: the coast is clear. */
12409 exit(1); /* <db.h> not Berkeley DB? */
12415 if eval $compile_ok && ./try; then
12416 echo 'Looks OK.' >&4
12418 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12422 : Remove db from list of libraries to use
12423 echo "Removing unusable -ldb from library list" >&4
12424 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12427 echo "libs = $libs" >&4
12437 : Check the return type needed for hash
12439 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12445 #include <sys/types.h>
12448 #ifndef DB_VERSION_MAJOR
12449 u_int32_t hash_cb (ptr, size)
12457 info.hash = hash_cb;
12461 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12462 if $contains warning try.out >>/dev/null 2>&1 ; then
12465 db_hashtype='u_int32_t'
12468 : XXX Maybe we should just give up here.
12469 db_hashtype=u_int32_t
12471 echo "Help: I can't seem to compile the db test program." >&4
12472 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12475 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12477 *) db_hashtype=u_int32_t
12482 : Check the return type needed for prefix
12484 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12490 #include <sys/types.h>
12493 #ifndef DB_VERSION_MAJOR
12494 size_t prefix_cb (key1, key2)
12502 info.prefix = prefix_cb;
12506 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12507 if $contains warning try.out >>/dev/null 2>&1 ; then
12508 db_prefixtype='int'
12510 db_prefixtype='size_t'
12513 db_prefixtype='size_t'
12514 : XXX Maybe we should just give up here.
12516 echo "Help: I can't seem to compile the db test program." >&4
12517 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12520 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12522 *) db_prefixtype='size_t'
12526 : check for void type
12528 echo "Checking to see how well your C compiler groks the void type..." >&4
12529 case "$voidflags" in
12531 $cat >try.c <<'EOCP'
12537 extern void moo(); /* function returning void */
12538 void (*goo)(); /* ptr to func returning void */
12540 void *hue; /* generic ptr */
12553 int main() { sub(); }
12555 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12556 voidflags=$defvoidused
12557 echo "Good. It appears to support void to the level $package wants.">&4
12558 if $contains warning .out >/dev/null 2>&1; then
12559 echo "However, you might get some warnings that look like this:"
12563 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12564 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12565 echo "It supports 1..."
12566 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12567 echo "It also supports 2..."
12568 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12570 echo "And it supports 4 but not 8 definitely."
12572 echo "It doesn't support 4..."
12573 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12575 echo "But it supports 8."
12578 echo "Neither does it support 8."
12582 echo "It does not support 2..."
12583 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12585 echo "But it supports 4 and 8."
12587 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12589 echo "And it supports 4 but has not heard about 8."
12591 echo "However it supports 8 but not 4."
12596 echo "There is no support at all for void."
12601 case "$voidflags" in
12603 *) $cat >&4 <<'EOM'
12604 Support flag bits are:
12605 1: basic void declarations.
12606 2: arrays of pointers to functions returning void.
12607 4: operations between pointers to and addresses of void functions.
12608 8: generic void pointers.
12611 rp="Your void support flags add up to what?"
12619 : How can we generate normalized random numbers ?
12621 echo "Looking for a random number function..." >&4
12622 case "$randfunc" in
12624 if set drand48 val -f; eval $csym; $val; then
12626 echo "Good, found drand48()." >&4
12627 elif set random val -f; eval $csym; $val; then
12629 echo "OK, found random()." >&4
12632 echo "Yick, looks like I have to use rand()." >&4
12643 *-Dmy_rand=*|*-Dmy_srand=*)
12644 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12645 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12646 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12647 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12651 while $test "$cont"; do
12652 rp="Use which function to generate random numbers?"
12654 if $test "$ans" = "$dflt"; then
12660 if set $ans val -f; eval $csym; $val; then
12664 rp="I cannot find function $ans. Use that name anyway?"
12673 case "$randfunc" in
12675 drand01="drand48()"
12681 case "$randbits" in
12683 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12685 #$i_unistd I_UNISTD
12686 #$i_stdlib I_STDLIB
12689 # include <unistd.h>
12692 # include <stdlib.h>
12697 register unsigned long tmp;
12698 register unsigned long max = 0L;
12700 for (i = 1000; i; i--) {
12701 tmp = (unsigned long) $randfunc();
12702 if (tmp > max) max = tmp;
12704 for (i = 0; max; i++)
12710 if eval $compile_ok; then
12714 echo "(I can't seem to compile the test program...)"
12721 rp="How many bits does your $randfunc() function produce?"
12725 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12726 seedfunc="s$randfunc"
12727 randseedtype=unsigned
12731 rp="How many bits does your $randfunc() function produce?"
12734 seedfunc="s$randfunc"
12735 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12736 if set $seedfunc val -f; eval $csym; $val; then
12737 echo "(Using $seedfunc() to seed random generator)"
12739 echo "(Warning: no $seedfunc() to seed random generator)"
12742 randseedtype=unsigned
12750 echo "Determining whether or not we are on an EBCDIC system..." >&4
12751 $cat >tebcdic.c <<'EOM'
12754 if ('M'==0xd4) return 0;
12761 if eval $compile_ok; then
12763 echo "You seem to speak EBCDIC." >&4
12766 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
12769 echo "I'm unable to compile the test program." >&4
12770 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
12772 $rm -f tebcdic.c tebcdic
12778 Checking how to flush all pending stdio output...
12780 # I only know how to find the first 32 possibly open files on SunOS.
12781 # See also hints/sunos_4_1.sh and util.c --AD
12783 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12785 $cat >>try.c <<EOCP
12787 #$i_unistd I_UNISTD
12789 # include <unistd.h>
12791 #$d_sysconf HAS_SYSCONF
12792 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12793 #ifdef HAS_STDIO_STREAM_ARRAY
12794 # define STDIO_STREAM_ARRAY $stdio_stream_array
12797 FILE* p = fopen("try.out", "w");
12801 # ifdef TRY_FPRINTF
12805 #ifdef TRY_FFLUSH_NULL
12808 #ifdef TRY_FFLUSH_ALL
12810 long open_max = -1;
12811 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12812 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12814 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12815 open_max = sysconf(_SC_OPEN_MAX);
12818 open_max = FOPEN_MAX;
12821 open_max = OPEN_MAX;
12830 # ifdef HAS_STDIO_STREAM_ARRAY
12831 if (open_max > 0) {
12833 for (i = 0; i < open_max; i++)
12834 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12835 STDIO_STREAM_ARRAY[i]._file < open_max &&
12836 STDIO_STREAM_ARRAY[i]._flag)
12837 fflush(&STDIO_STREAM_ARRAY[i]);
12845 : first we have to find out how _not_ to flush
12846 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12848 set try -DTRY_FPUTC
12849 if eval $compile; then
12851 ./try$exe_ext 2>/dev/null
12852 if $test ! -s try.out -a "X$?" = X42; then
12858 set try -DTRY_FPRINTF
12860 if eval $compile; then
12862 ./try$exe_ext 2>/dev/null
12863 if $test ! -s try.out -a "X$?" = X42; then
12864 output=-DTRY_FPRINTF
12870 : check for fflush NULL behaviour
12871 case "$fflushNULL" in
12872 '') set try -DTRY_FFLUSH_NULL $output
12873 if eval $compile; then
12875 ./try$exe_ext 2>/dev/null
12877 if $test -s try.out -a "X$code" = X42; then
12878 fflushNULL="`$cat try.out`"
12880 if $test "X$code" != X42; then
12882 (If this test failed, don't worry, we'll try another method shortly.)
12887 $rm -f core try.core core.try.*
12888 case "$fflushNULL" in
12890 Your fflush(NULL) works okay for output streams.
12891 Let's see if it clobbers input pipes...
12893 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12894 # bug that improperly flushes the input end of pipes. So we avoid the
12895 # autoflush on fork/system/exec support for now. :-(
12896 $cat >tryp.c <<EOCP
12899 main(int argc, char **argv)
12905 while ((i = getc(stdin)) != -1
12906 && (*bp++ = i) != '\n'
12907 && bp < &buf[1024])
12910 fprintf(stdout, "%s", buf);
12918 fflushNULL="$define"
12920 if eval $compile; then
12922 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12923 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12925 fflush(NULL) seems to behave okay with input streams.
12927 fflushNULL="$define"
12930 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
12932 fflushNULL="$undef"
12935 $rm -f core tryp.c tryp.core core.tryp.*
12938 Your fflush(NULL) isn't working (contrary to ANSI C).
12940 fflushNULL="$undef"
12943 Cannot figure out whether your fflush(NULL) works or not.
12944 I'm assuming it doesn't (contrary to ANSI C).
12946 fflushNULL="$undef"
12950 $define|true|[yY]*)
12951 fflushNULL="$define"
12954 fflushNULL="$undef"
12957 : check explicit looping only if NULL did not work, and if the pipe
12958 : bug does not show up on an explicit flush too
12959 case "$fflushNULL" in
12961 $cat >tryp.c <<EOCP
12964 main(int argc, char **argv)
12970 while ((i = getc(stdin)) != -1
12971 && (*bp++ = i) != '\n'
12972 && bp < &buf[1024])
12975 fprintf(stdout, "%s", buf);
12984 if eval $compile; then
12986 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12987 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12989 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12991 : now check for fflushall behaviour
12992 case "$fflushall" in
12993 '') set try -DTRY_FFLUSH_ALL $output
12994 if eval $compile; then
12996 (Now testing the other method--but note that this also may fail.)
12999 ./try$exe_ext 2>/dev/null
13000 if $test -s try.out -a "X$?" = X42; then
13001 fflushall="`$cat try.out`"
13004 $rm -f core try.core core.try.*
13005 case "$fflushall" in
13007 Whew. Flushing explicitly all the stdio streams works.
13009 fflushall="$define"
13012 Sigh. Flushing explicitly all the stdio streams doesn't work.
13017 Cannot figure out whether flushing stdio streams explicitly works or not.
13018 I'm assuming it doesn't.
13024 "$define"|true|[yY]*)
13025 fflushall="$define"
13033 All is futile. Even fflush(stdin) clobbers input pipes!
13040 $rm -f core tryp.c tryp.core core.tryp.*
13042 *) fflushall="$undef"
13046 case "$fflushNULL$fflushall" in
13049 OK, I give up. I cannot figure out how to flush pending stdio output.
13050 We won't be flushing handles at all before fork/exec/popen.
13054 $rm -f try.* try$exe_ext
13056 : Store the full pathname to the ar program for use in the C program
13057 : Respect a hint or command line value for full_ar.
13062 : Store the full pathname to the sed program for use in the C program
13065 : see what type gids are declared as in the kernel
13067 echo "Looking for the type for group ids returned by getgid()."
13068 set gid_t gidtype xxx stdio.h sys/types.h
13072 xxx=`./findhdr sys/user.h`
13073 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13075 unsigned) dflt="$1 $2" ;;
13079 *) dflt="$gidtype";;
13082 gid_t) echo "gid_t found." ;;
13083 *) rp="What is the type for group ids returned by getgid()?"
13091 *_t) zzz="$gidtype" ;;
13094 echo "Checking the size of $zzz..." >&4
13096 #include <sys/types.h>
13099 printf("%d\n", (int)sizeof($gidtype));
13104 if eval $compile_ok; then
13108 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13111 echo "Your $zzz is $gidsize bytes long."
13116 echo "(I can't compile the test program--guessing $gidsize.)" >&4
13122 *_t) zzz="$gidtype" ;;
13125 echo "Checking the sign of $zzz..." >&4
13127 #include <sys/types.h>
13138 if eval $compile; then
13142 echo "(I can't execute the test program--guessing unsigned.)" >&4
13146 1) echo "Your $zzz is unsigned." ;;
13147 -1) echo "Your $zzz is signed." ;;
13153 echo "(I can't compile the test program--guessing unsigned.)" >&4
13159 if $test X"$quadtype" != X; then
13161 echo "Checking how to print 64-bit integers..." >&4
13163 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13164 $cat >try.c <<'EOCP'
13165 #include <sys/types.h>
13168 int q = 12345678901;
13169 printf("%ld\n", q);
13173 if eval $compile; then
13174 yyy=`./try$exe_ext`
13177 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13178 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13179 echo "We will use %d."
13185 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13186 $cat >try.c <<'EOCP'
13187 #include <sys/types.h>
13190 long q = 12345678901;
13191 printf("%ld\n", q);
13195 if eval $compile; then
13196 yyy=`./try$exe_ext`
13199 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13200 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13201 echo "We will use %ld."
13207 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13208 $cat >try.c <<'EOCP'
13209 #include <sys/types.h>
13210 #include <inttypes.h>
13213 int64_t q = 12345678901;
13214 printf("%" PRId64 "\n", q);
13218 if eval $compile; then
13219 yyy=`./try$exe_ext`
13222 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13223 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13224 echo "We will use the C9X style."
13230 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13231 $cat >try.c <<'EOCP'
13232 #include <sys/types.h>
13235 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13236 printf("%lld\n", q);
13240 if eval $compile; then
13241 yyy=`./try$exe_ext`
13244 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13245 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13246 echo "We will use the %lld style."
13252 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13254 #include <sys/types.h>
13257 $quadtype q = 12345678901;
13258 printf("%Ld\n", q);
13262 if eval $compile; then
13263 yyy=`./try$exe_ext`
13266 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13267 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13268 echo "We will use %Ld."
13274 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13276 #include <sys/types.h>
13279 $quadtype q = 12345678901;
13280 printf("%qd\n", q);
13284 if eval $compile; then
13285 yyy=`./try$exe_ext`
13288 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13289 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13290 echo "We will use %qd."
13296 if $test X"$sPRId64" = X; then
13297 echo "Cannot figure out how to print 64-bit integers." >&4
13305 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13306 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
13308 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13309 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
13315 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13317 if $test X"$ivsize" = X8; then
13318 ivdformat="$sPRId64"
13319 uvuformat="$sPRIu64"
13320 uvoformat="$sPRIo64"
13321 uvxformat="$sPRIx64"
13322 uvXUformat="$sPRIXU64"
13324 if $test X"$ivsize" = X"$longsize"; then
13331 if $test X"$ivsize" = X"$intsize"; then
13339 if $test X"$ivsize" = X"$shortsize"; then
13350 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13351 nveformat="$sPRIeldbl"
13352 nvfformat="$sPRIfldbl"
13353 nvgformat="$sPRIgldbl"
13354 nvEUformat="$sPRIEUldbl"
13355 nvFUformat="$sPRIFUldbl"
13356 nvGUformat="$sPRIGUldbl"
13366 case "$ivdformat" in
13367 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13374 $echo "Checking the format string to be used for gids..." >&4
13377 -1) if $test X"$gidsize" = X"$ivsize"; then
13378 gidformat="$ivdformat"
13380 if $test X"$gidsize" = X"$longsize"; then
13383 if $test X"$gidsize" = X"$intsize"; then
13386 if $test X"$gidsize" = X"$shortsize"; then
13393 *) if $test X"$gidsize" = X"$uvsize"; then
13394 gidformat="$uvuformat"
13396 if $test X"$gidsize" = X"$longsize"; then
13399 if $test X"$gidsize" = X"$intsize"; then
13402 if $test X"$gidsize" = X"$shortsize"; then
13411 : see if getgroups exists
13412 set getgroups d_getgrps
13415 : see if setgroups exists
13416 set setgroups d_setgrps
13420 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13422 case "$d_getgrps$d_setgrps" in
13424 case "$groupstype" in
13425 '') dflt="$gidtype" ;;
13426 *) dflt="$groupstype" ;;
13429 What type of pointer is the second argument to getgroups() and setgroups()?
13430 Usually this is the same as group ids, $gidtype, but not always.
13433 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13437 *) groupstype="$gidtype";;
13441 echo "Checking if your $make program sets \$(MAKE)..." >&4
13442 case "$make_set_make" in
13444 $sed 's/^X //' > testmake.mak << 'EOF'
13446 X @echo 'maketemp="$(MAKE)"'
13448 case "`$make -f testmake.mak 2>/dev/null`" in
13449 *maketemp=*) make_set_make='#' ;;
13450 *) make_set_make="MAKE=$make" ;;
13452 $rm -f testmake.mak
13455 case "$make_set_make" in
13456 '#') echo "Yup, it does.";;
13457 *) echo "Nope, it doesn't.";;
13460 : see what type is used for mode_t
13461 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13462 set mode_t modetype int stdio.h sys/types.h
13465 : see if stdarg is available
13467 if $test `./findhdr stdarg.h`; then
13468 echo "<stdarg.h> found." >&4
13471 echo "<stdarg.h> NOT found." >&4
13475 : see if varags is available
13477 if $test `./findhdr varargs.h`; then
13478 echo "<varargs.h> found." >&4
13480 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13483 : set up the varargs testing programs
13484 $cat > varargs.c <<EOP
13486 #include <stdarg.h>
13489 #include <varargs.h>
13493 int f(char *p, ...)
13507 p = va_arg(ap, char *);
13512 $cat > varargs <<EOP
13514 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13523 : now check which varargs header should be included
13528 if `./varargs I_STDARG`; then
13530 elif `./varargs I_VARARGS`; then
13535 if `./varargs I_VARARGS`; then
13542 echo "I could not find the definition for va_dcl... You have problems..." >&4
13543 val="$undef"; set i_stdarg; eval $setvar
13544 val="$undef"; set i_varargs; eval $setvar
13549 case "$i_varhdr" in
13551 val="$define"; set i_stdarg; eval $setvar
13552 val="$undef"; set i_varargs; eval $setvar
13555 val="$undef"; set i_stdarg; eval $setvar
13556 val="$define"; set i_varargs; eval $setvar
13559 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
13563 : see if we need va_copy
13565 case "$i_stdarg" in
13568 #include <stdarg.h>
13572 ivfprintf(FILE *f, const char *fmt, va_list *valp)
13574 return vfprintf(f, fmt, *valp);
13578 myvfprintf(FILE *f, const char *fmt, va_list val)
13580 return ivfprintf(f, fmt, &val);
13584 myprintf(char *fmt, ...)
13587 va_start(val, fmt);
13588 return myvfprintf(stdout, fmt, val);
13592 main(int ac, char **av)
13594 myprintf("%s%cs all right, then\n", "that", '\'');
13599 if eval $compile_ok && ./try >/dev/null; then
13601 "that's all right, then")
13607 yes) echo "It seems that you don't need va_copy()." >&4
13608 need_va_copy="$undef"
13610 *) echo "It seems that va_copy() or similar will be needed." >&4
13611 need_va_copy="$define"
13614 $rm -f try.* core core.* *.core *.core.*
13616 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
13620 : define a fucntion to check prototypes
13621 $cat > protochk <<EOSH
13624 optimize="$optimize"
13626 prototype="$prototype"
13631 $cat >> protochk <<'EOSH'
13636 while test $# -ge 2; do
13638 $define) echo "#include <$2>" >> try.c ;;
13639 literal) echo "$2" >> try.c ;;
13643 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13644 cat >> try.c <<'EOCP'
13645 #ifdef CAN_PROTOTYPE
13646 #define _(args) args
13651 echo "$foo" >> try.c
13652 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13653 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13659 $eunicefix protochk
13661 : see what type is used for size_t
13662 rp="What is the type used for the length parameter for string functions?"
13663 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13666 : check for type of arguments to gethostbyaddr.
13667 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13668 case "$d_gethbyaddr" in
13672 Checking to see what type of arguments are accepted by gethostbyaddr().
13674 hdrs="$define sys/types.h
13675 $d_socket sys/socket.h
13676 $i_niin netinet/in.h
13678 $i_unistd unistd.h"
13679 : The first arg can 'char *' or 'void *'
13680 : The second arg is some of integral type
13681 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13682 for yyy in size_t long int; do
13683 case "$netdb_host_type" in
13684 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13685 if ./protochk "$try" $hdrs; then
13686 echo "Your system accepts $xxx for the first arg."
13687 echo "...and $yyy for the second arg."
13688 netdb_host_type="$xxx"
13689 netdb_hlen_type="$yyy"
13695 : In case none of those worked, prompt the user.
13696 case "$netdb_host_type" in
13697 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13700 netdb_host_type=$ans
13701 rp='What is the type for the 2nd argument to gethostbyaddr?'
13704 netdb_hlen_type=$ans
13708 *) : no gethostbyaddr, so pick harmless defaults
13709 netdb_host_type='char *'
13710 netdb_hlen_type="$sizetype"
13713 # Remove the "const" if needed. -- but then we'll have a
13715 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13718 : check for type of argument to gethostbyname.
13719 if test "X$netdb_name_type" = X ; then
13720 case "$d_gethbyname" in
13724 Checking to see what type of argument is accepted by gethostbyname().
13726 hdrs="$define sys/types.h
13727 $d_socket sys/socket.h
13728 $i_niin netinet/in.h
13730 $i_unistd unistd.h"
13731 for xxx in "const char *" "char *"; do
13732 case "$netdb_name_type" in
13733 '') try="extern struct hostent *gethostbyname($xxx);"
13734 if ./protochk "$try" $hdrs; then
13735 echo "Your system accepts $xxx."
13736 netdb_name_type="$xxx"
13741 : In case none of those worked, prompt the user.
13742 case "$netdb_name_type" in
13743 '') rp='What is the type for the 1st argument to gethostbyname?'
13746 netdb_name_type=$ans
13750 *) : no gethostbyname, so pick harmless default
13751 netdb_name_type='char *'
13756 : check for type of 1st argument to getnetbyaddr.
13757 if test "X$netdb_net_type" = X ; then
13758 case "$d_getnbyaddr" in
13762 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13764 hdrs="$define sys/types.h
13765 $d_socket sys/socket.h
13766 $i_niin netinet/in.h
13768 $i_unistd unistd.h"
13769 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13770 case "$netdb_net_type" in
13771 '') try="extern struct netent *getnetbyaddr($xxx, int);"
13772 if ./protochk "$try" $hdrs; then
13773 echo "Your system accepts $xxx."
13774 netdb_net_type="$xxx"
13779 : In case none of those worked, prompt the user.
13780 case "$netdb_net_type" in
13781 '') rp='What is the type for the 1st argument to getnetbyaddr?'
13784 netdb_net_type=$ans
13788 *) : no getnetbyaddr, so pick harmless default
13789 netdb_net_type='long'
13793 : locate the preferred pager for this system
13799 [a-zA-Z]:/*) dflt=$pg;;
13803 [a-zA-Z]:/*) dflt=$more;;
13807 [a-zA-Z]:/*) dflt=$less;;
13810 '') dflt=/usr/ucb/more;;
13817 rp='What pager is used on your system?'
13821 : see what type pids are declared as in the kernel
13822 rp="What is the type of process ids on this system?"
13823 set pid_t pidtype int stdio.h sys/types.h
13826 : Find earliest binary compatible site_perl subdirectory perl can use.
13827 case "$bincompat5005" in
13828 "$define") xs_apiversion='5.005' ;;
13829 *) xs_apiversion=$version ;; # The current site_perl version.
13831 : Find earliest pure perl site_perl subdirectory perl can use.
13832 : The versioned directories started at 5.005.
13833 pm_apiversion='5.005'
13835 : check for length of pointer
13839 echo "Checking to see how big your pointers are..." >&4
13840 if test "$voidflags" -gt 7; then
13841 echo '#define VOID_PTR char *' > try.c
13843 echo '#define VOID_PTR void *' > try.c
13845 $cat >>try.c <<'EOCP'
13849 printf("%d\n", (int)sizeof(VOID_PTR));
13854 if eval $compile_ok; then
13856 echo "Your pointers are $ptrsize bytes long."
13859 echo "(I can't seem to compile the test program. Guessing...)" >&4
13860 rp="What is the size of a pointer (in bytes)?"
13868 : see if ar generates random libraries by itself
13870 echo "Checking how to generate random libraries on your machine..." >&4
13871 echo 'int bar1() { return bar2(); }' > bar1.c
13872 echo 'int bar2() { return 2; }' > bar2.c
13873 $cat > foo.c <<'EOP'
13874 int main() { printf("%d\n", bar1()); exit(0); }
13876 $cc $ccflags -c bar1.c >/dev/null 2>&1
13877 $cc $ccflags -c bar2.c >/dev/null 2>&1
13878 $cc $ccflags -c foo.c >/dev/null 2>&1
13879 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13880 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
13881 ./foobar >/dev/null 2>&1; then
13882 echo "$ar appears to generate random libraries itself."
13885 elif $ar ts bar$_a >/dev/null 2>&1 &&
13886 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
13887 ./foobar >/dev/null 2>&1; then
13888 echo "a table of contents needs to be added with '$ar ts'."
13895 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13896 $test -f $ranlib || ranlib=''
13899 if $test -n "$ranlib"; then
13900 echo "your system has '$ranlib'; we'll use that."
13903 echo "your system doesn't seem to support random libraries"
13904 echo "so we'll use lorder and tsort to order the libraries."
13911 : check for type of arguments to select.
13912 case "$selecttype" in
13913 '') case "$d_select" in
13917 Checking to see what type of arguments are accepted by select().
13919 hdrs="$define sys/types.h
13920 $i_systime sys/time.h
13921 $i_sysselct sys/select.h
13922 $d_socket sys/socket.h"
13923 : The first arg can be int, unsigned, or size_t
13924 : The last arg may or may not be 'const'
13926 : void pointer has been seen but using that
13927 : breaks the selectminbits test
13928 for xxx in 'fd_set *' 'int *'; do
13929 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13930 for tmo in 'struct timeval *' 'const struct timeval *'; do
13932 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13933 if ./protochk "$try" $hdrs; then
13934 echo "Your system accepts $xxx."
13943 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13944 case "$d_fd_set" in
13945 $define) dflt="fd_set *" ;;
13954 *) : no select, so pick a harmless default
13961 : check for the select 'width'
13962 case "$selectminbits" in
13963 '') case "$d_select" in
13967 Checking to see on how many bits at a time your select() operates...
13970 #include <sys/types.h>
13972 #$i_systime I_SYS_TIME
13973 #$i_systimek I_SYS_TIME_KERNEL
13978 # ifdef I_SYS_TIME_KERNEL
13981 # include <sys/time.h>
13982 # ifdef I_SYS_TIME_KERNEL
13986 #$i_sysselct I_SYS_SELECT
13987 #ifdef I_SYS_SELECT
13988 #include <sys/select.h>
13990 #$d_socket HAS_SOCKET
13992 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13996 #define S sizeof(*(b))
13998 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13999 #define NBITS (NBYTES * 8)
14008 fp = fopen("try.c", "r");
14014 b = ($selecttype)s;
14015 for (i = 0; i < NBITS; i++)
14019 select(fd + 1, b, 0, 0, &t);
14020 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14021 printf("%d\n", i + 1);
14026 if eval $compile_ok; then
14027 selectminbits=`./try`
14028 case "$selectminbits" in
14030 Cannot figure out on how many bits at a time your select() operates.
14031 I'll play safe and guess it is 32 bits.
14037 *) bits="$selectminbits bits" ;;
14039 echo "Your select() operates on $bits at a time." >&4
14041 rp='What is the minimum number of bits your select() operates on?'
14042 case "$byteorder" in
14043 1234|12345678) dflt=32 ;;
14048 selectminbits="$val"
14052 *) : no select, so pick a harmless default
14059 : Trace out the files included by signal.h, then look for SIGxxx names.
14060 : Remove SIGARRAYSIZE used by HPUX.
14061 : Remove SIGSTKSIZE used by Linux.
14062 : Remove SIGSTKSZ used by Posix.
14063 : Remove SIGTYP void lines used by OS2.
14064 : Some cpps, like os390, dont give the file name anywhere
14065 if [ "X$fieldn" = X ]; then
14066 : Just make some guesses. We check them later.
14067 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14069 xxx=`echo '#include <signal.h>' |
14070 $cppstdin $cppminus $cppflags 2>/dev/null |
14071 $grep '^[ ]*#.*include' |
14072 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
14074 : Check this list of files to be sure we have parsed the cpp output ok.
14075 : This will also avoid potentially non-existent files, such
14078 for xx in $xxx /dev/null ; do
14079 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
14081 : If we have found no files, at least try signal.h
14082 case "$xxxfiles" in
14083 '') xxxfiles=`./findhdr signal.h` ;;
14086 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
14087 print substr($2, 4, 20)
14089 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
14090 print substr($3, 4, 20)
14092 : Append some common names just in case the awk scan failed.
14093 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
14094 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
14095 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
14096 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
14097 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
14099 : generate a few handy files for later
14100 $cat > signal.c <<'EOCP'
14101 #include <sys/types.h>
14102 #include <signal.h>
14106 /* Strange style to avoid deeply-nested #if/#else/#endif */
14109 # define NSIG (_NSIG)
14115 # define NSIG (SIGMAX+1)
14121 # define NSIG (SIG_MAX+1)
14127 # define NSIG (MAXSIG+1)
14133 # define NSIG (MAX_SIG+1)
14138 # ifdef SIGARRAYSIZE
14139 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
14145 # define NSIG (_sys_nsig) /* Solaris 2.5 */
14149 /* Default to some arbitrary number that's big enough to get most
14150 of the common signals.
14156 printf("NSIG %d\n", NSIG);
14162 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
14164 printf "#ifdef SIG"; printf $1; printf "\n"
14165 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
14166 printf $1; printf ");\n"
14170 printf "#endif /* JUST_NSIG */\n";
14171 printf "exit(0);\n}\n";
14174 $cat >signal.awk <<'EOP'
14175 BEGIN { ndups = 0 }
14176 $1 ~ /^NSIG$/ { nsig = $2 }
14177 ($1 !~ /^NSIG$/) && (NF == 2) {
14178 if ($2 > maxsig) { maxsig = $2 }
14179 if (sig_name[$2]) {
14180 dup_name[ndups] = $1
14181 dup_num[ndups] = $2
14193 printf("NSIG %d\n", nsig);
14194 for (n = 1; n < nsig; n++) {
14196 printf("%s %d\n", sig_name[n], sig_num[n])
14199 printf("NUM%d %d\n", n, n)
14202 for (n = 0; n < ndups; n++) {
14203 printf("%s %d\n", dup_name[n], dup_num[n])
14207 $cat >signal_cmd <<EOS
14209 if $test -s signal.lst; then
14210 echo "Using your existing signal.lst file"
14215 $cat >>signal_cmd <<'EOS'
14218 if eval $compile_ok; then
14219 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14221 echo "(I can't seem be able to compile the whole test program)" >&4
14222 echo "(I'll try it in little pieces.)" >&4
14223 set signal -DJUST_NSIG
14224 if eval $compile_ok; then
14225 ./signal$_exe > signal.nsg
14228 echo "I can't seem to figure out how many signals you have." >&4
14229 echo "Guessing 50." >&4
14230 echo 'NSIG 50' > signal.nsg
14232 : Now look at all the signal names, one at a time.
14233 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14234 $cat > signal.c <<EOCP
14235 #include <sys/types.h>
14236 #include <signal.h>
14239 printf("$xx %d\n", SIG${xx});
14244 if eval $compile; then
14245 echo "SIG${xx} found."
14246 ./signal$_exe >> signal.ls1
14248 echo "SIG${xx} NOT found."
14251 if $test -s signal.ls1; then
14252 $cat signal.nsg signal.ls1 |
14253 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14257 if $test -s signal.lst; then
14260 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14261 echo 'kill -l' >signal
14262 set X `csh -f <signal`
14266 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14268 echo $@ | $tr ' ' $trnl | \
14269 $awk '{ printf "%s %d\n", $1, ++s; }
14270 END { printf "NSIG %d\n", ++s }' >signal.lst
14272 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14274 chmod a+x signal_cmd
14275 $eunicefix signal_cmd
14277 : generate list of signal names
14279 case "$sig_name_init" in
14281 *) case "$sig_num_init" in
14282 ''|*,*) doinit=yes ;;
14287 echo "Generating a list of signal names and numbers..." >&4
14289 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14290 sig_name=`$awk 'BEGIN { printf "ZERO " }
14291 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14292 sig_num=`$awk 'BEGIN { printf "0 " }
14293 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14294 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
14295 !/^NSIG/ { printf "\"%s\", ", $1 }
14296 END { printf "0\n" }' signal.lst`
14297 sig_num_init=`$awk 'BEGIN { printf "0, " }
14298 !/^NSIG/ { printf "%d, ", $2}
14299 END { printf "0\n"}' signal.lst`
14302 echo "The following $sig_count signals are available:"
14304 echo $sig_name | $awk \
14305 'BEGIN { linelen = 0 }
14307 for (i = 1; i <= NF; i++) {
14308 name = "SIG" $i " "
14309 linelen = linelen + length(name)
14310 if (linelen > 70) {
14312 linelen = length(name)
14318 $rm -f signal signal.c signal.awk signal.lst signal_cmd
14321 case "$sizetype" in
14322 *_t) zzz="$sizetype" ;;
14323 *) zzz="filesize" ;;
14325 echo "Checking the size of $zzz..." >&4
14327 #include <sys/types.h>
14330 printf("%d\n", (int)sizeof($sizetype));
14335 if eval $compile_ok; then
14339 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14342 echo "Your $zzz size is $sizesize bytes."
14347 echo "(I can't compile the test program--guessing $sizesize.)" >&4
14351 : check for socklen_t
14353 echo "Checking to see if you have socklen_t..." >&4
14355 #include <sys/types.h>
14356 #$d_socket HAS_SOCKET
14358 #include <sys/socket.h>
14360 int main() { socklen_t x = 16; }
14363 if eval $compile; then
14365 echo "You have socklen_t."
14368 echo "You do not have socklen_t."
14369 case "$sizetype" in
14370 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14377 : see if this is a socks.h system
14378 set socks.h i_socks
14381 : check for type of the size argument to socket calls
14382 case "$d_socket" in
14386 Checking to see what type is the last argument of accept().
14389 case "$d_socklen_t" in
14390 "$define") yyy="$yyy socklen_t"
14392 yyy="$yyy $sizetype int long unsigned"
14393 for xxx in $yyy; do
14394 case "$socksizetype" in
14395 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14396 case "$usesocks" in
14398 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
14399 echo "Your system accepts '$xxx *' for the last argument of accept()."
14400 socksizetype="$xxx"
14403 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
14404 echo "Your system accepts '$xxx *' for the last argument of accept()."
14405 socksizetype="$xxx"
14412 : In case none of those worked, prompt the user.
14413 case "$socksizetype" in
14414 '') rp='What is the type for socket address structure sizes?'
14421 *) : no sockets, so pick relatively harmless default
14426 : see what type is used for signed size_t
14427 set ssize_t ssizetype int stdio.h sys/types.h
14430 $cat > ssize.c <<EOM
14432 #include <sys/types.h>
14433 #define Size_t $sizetype
14434 #define SSize_t $dflt
14437 if (sizeof(Size_t) == sizeof(SSize_t))
14439 else if (sizeof(Size_t) == sizeof(int))
14448 if eval $compile_ok && ./ssize > /dev/null; then
14449 ssizetype=`./ssize`
14450 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14453 Help! I can't compile and run the ssize_t test program: please enlighten me!
14454 (This is probably a misconfiguration in your system or libraries, and
14455 you really ought to fix it. Still, I'll try anyway.)
14457 I need a type that is the same size as $sizetype, but is guaranteed to
14458 be signed. Common values are ssize_t, int and long.
14461 rp="What signed type is the same size as $sizetype?"
14465 $rm -f ssize ssize.*
14467 : see what type of char stdio uses.
14469 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14470 echo "Your stdio uses unsigned chars." >&4
14471 stdchar="unsigned char"
14473 echo "Your stdio uses signed chars." >&4
14477 : see if time exists
14479 if test "X$d_time" = X -o X"$timetype" = X; then
14480 if set time val -f d_time; eval $csym; $val; then
14481 echo 'time() found.' >&4
14483 rp="What is the type returned by time() on this system?"
14484 set time_t timetype long stdio.h sys/types.h
14487 echo 'time() not found, hope that will do.' >&4
14495 : see what type uids are declared as in the kernel
14497 echo "Looking for the type for user ids returned by getuid()."
14498 set uid_t uidtype xxx stdio.h sys/types.h
14502 xxx=`./findhdr sys/user.h`
14503 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14505 unsigned) dflt="$1 $2" ;;
14509 *) dflt="$uidtype";;
14512 uid_t) echo "uid_t found." ;;
14513 *) rp="What is the type for user ids returned by getuid()?"
14521 *_t) zzz="$uidtype" ;;
14524 echo "Checking the size of $zzz..." >&4
14526 #include <sys/types.h>
14529 printf("%d\n", (int)sizeof($uidtype));
14534 if eval $compile_ok; then
14538 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14541 echo "Your $zzz is $uidsize bytes long."
14546 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14551 *_t) zzz="$uidtype" ;;
14554 echo "Checking the sign of $zzz..." >&4
14556 #include <sys/types.h>
14567 if eval $compile; then
14571 echo "(I can't execute the test program--guessing unsigned.)" >&4
14575 1) echo "Your $zzz is unsigned." ;;
14576 -1) echo "Your $zzz is signed." ;;
14582 echo "(I can't compile the test program--guessing unsigned.)" >&4
14588 $echo "Checking the format string to be used for uids..." >&4
14591 -1) if $test X"$uidsize" = X"$ivsize"; then
14592 uidformat="$ivdformat"
14594 if $test X"$uidsize" = X"$longsize"; then
14597 if $test X"$uidsize" = X"$intsize"; then
14600 if $test X"$uidsize" = X"$shortsize"; then
14607 *) if $test X"$uidsize" = X"$uvsize"; then
14608 uidformat="$uvuformat"
14610 if $test X"$uidsize" = X"$longsize"; then
14613 if $test X"$uidsize" = X"$intsize"; then
14616 if $test X"$uidsize" = X"$shortsize"; then
14625 : see if dbm.h is available
14626 : see if dbmclose exists
14627 set dbmclose d_dbmclose
14630 case "$d_dbmclose" in
14640 *) set rpcsvc/dbm.h i_rpcsvcdbm
14645 *) echo "We won't be including <dbm.h>"
14655 : see if this is a sys/file.h system
14660 : do we need to include sys/file.h ?
14664 if $h_sysfile; then
14666 echo "We'll be including <sys/file.h>." >&4
14669 echo "We won't be including <sys/file.h>." >&4
14679 : see if fcntl.h is there
14684 : see if we can include fcntl.h
14690 echo "We'll be including <fcntl.h>." >&4
14693 if $h_sysfile; then
14694 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14696 echo "We won't be including <fcntl.h>." >&4
14708 : see if this is a iconv.h system
14709 set iconv.h i_iconv
14712 : see if this is a ieeefp.h system
14713 set ieeefp.h i_ieeefp
14716 : see if this is a libutil.h system
14717 set libutil.h i_libutil
14720 : see if locale.h is available
14721 set locale.h i_locale
14724 : see if mach cthreads are available
14725 if test "X$usethreads" = "X$define"; then
14726 set mach/cthreads.h i_machcthr
14729 i_machcthr="$undef"
14734 : see if this is a math.h system
14738 : see if this is a mntent.h system
14739 set mntent.h i_mntent
14742 : see if ndbm.h is available
14747 : see if dbm_open exists
14748 set dbm_open d_dbm_open
14750 case "$d_dbm_open" in
14753 echo "We won't be including <ndbm.h>"
14762 : see if net/errno.h is available
14764 set net/errno.h val
14767 : Unfortunately, it causes problems on some systems. Arrgh.
14770 cat > try.c <<'EOM'
14773 #include <net/errno.h>
14779 if $cc $ccflags -c try.c >/dev/null 2>&1; then
14780 echo "We'll be including <net/errno.h>." >&4
14782 echo "We won't be including <net/errno.h>." >&4
14791 : see if netinet/tcp.h is available
14792 set netinet/tcp.h i_netinettcp
14795 : see if this is a poll.h system
14799 : see if this is a prot.h system
14804 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
14805 $cat <<'EOSH' > Cppsym.know
14806 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14807 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14808 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14809 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14810 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14811 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14812 bull c cadmus clipper CMU COFF COMPILER_VERSION
14813 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14814 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14815 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14816 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14817 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14818 H3050R H3050RX hbullx20 hcx host_mips
14819 hp200 hp300 hp700 HP700 hp800 hp9000
14820 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14821 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14822 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14823 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14824 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14825 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14826 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14827 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14828 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14829 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14830 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14831 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14832 MATH_HAS_NO_SIDE_EFFECTS
14833 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14834 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14835 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14836 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14837 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14838 NetBSD news1500 news1700 news1800 news1900 news3700
14839 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
14840 ns32016 ns32332 ns32k nsc32000
14841 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14842 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14843 pc532 pdp11 PGC PIC plexus PORTAR posix
14844 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14845 POSIX_C_SOURCE POSIX_SOURCE POWER
14846 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14847 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14848 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14849 sony sony_news sonyrisc sparc sparclite spectrum
14850 stardent stdc STDC_EXT stratos sun sun3 sun386
14851 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14852 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14853 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14854 sysV68 sysV88 Tek4132 Tek4300 titan
14855 tower tower32 tower32_200 tower32_600 tower32_700
14856 tower32_800 tower32_850 tss
14857 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14858 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14859 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14860 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14861 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14862 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14865 # Maybe put other stuff here too.
14866 cat <<EOSH >>Cppsym.know
14869 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14870 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14871 $cat Cppsym.know > Cppsym.c
14872 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
14873 $rm -f Cppsym.a Cppsym.b Cppsym.c
14874 cat <<EOSH > Cppsym
14876 if $test \$# -gt 0; then
14877 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14878 if $test -s Cppsym.got; then
14885 $tr " " "$trnl" | ./Cppsym.try
14891 cat <<EOSH > Cppsym.try
14893 cat <<'EOCP' > try.c
14899 cat <<'EOSH' >> Cppsym.try
14901 printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", %s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14902 printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", _%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14903 printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", __%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14904 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
14908 cat <<EOSH >> Cppsym.try
14910 case "$osname-$gccversion" in
14911 irix-) ccflags="\$ccflags -woff 1178" ;;
14912 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14914 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
14916 chmod +x Cppsym.try
14917 $eunicefix Cppsym.try
14918 ./Cppsym < Cppsym.know > Cppsym.true
14919 : now check the C compiler for additional symbols
14920 postprocess_cc_v=''
14922 aix) postprocess_cc_v="|$tr , ' '" ;;
14929 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14932 -D*) echo "\$i" | $sed 's/^-D//';;
14933 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14938 postprocess_cc_v=''
14941 ./ccsym > ccsym1.raw
14942 if $test -s ccsym1.raw; then
14943 $sort ccsym1.raw | $uniq >ccsym.raw
14945 mv ccsym1.raw ccsym.raw
14948 $awk '/\=/ { print $0; next }
14949 { print $0"=1" }' ccsym.raw >ccsym.list
14950 $awk '/\=/ { print $0; next }
14951 { print $0"=1" }' Cppsym.true >ccsym.true
14952 $comm -13 ccsym.true ccsym.list >ccsym.own
14953 $comm -12 ccsym.true ccsym.list >ccsym.com
14954 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14956 if $test -z ccsym.raw; then
14957 echo "Your C compiler doesn't seem to define any symbols!" >&4
14959 echo "However, your C preprocessor defines the following symbols:"
14962 cppsymbols=`$cat Cppsym.true`
14963 cppsymbols=`echo $cppsymbols`
14964 cppccsymbols="$cppsymbols"
14966 if $test -s ccsym.com; then
14967 echo "Your C compiler and pre-processor define these symbols:"
14968 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14971 cppccsymbols=`$cat ccsym.com`
14972 cppccsymbols=`echo $cppccsymbols`
14973 $test "$silent" || sleep 1
14975 if $test -s ccsym.cpp; then
14976 $test "$also" && echo " "
14977 echo "Your C pre-processor ${also}defines the following symbols:"
14978 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14980 cppsymbols=`$cat ccsym.cpp`
14981 cppsymbols=`echo $cppsymbols`
14982 $test "$silent" || sleep 1
14984 if $test -s ccsym.own; then
14985 $test "$also" && echo " "
14986 echo "Your C compiler ${also}defines the following cpp symbols:"
14987 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14988 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14989 ccsymbols=`$cat ccsym.own`
14990 ccsymbols=`echo $ccsymbols`
14991 $test "$silent" || sleep 1
14994 $rm -f ccsym* Cppsym.*
14996 : see if this is a termio system
15000 if $test `./findhdr termios.h`; then
15001 set tcsetattr i_termios
15007 "$define") echo "You have POSIX termios.h... good!" >&4;;
15008 *) if ./Cppsym pyr; then
15009 case "`/bin/universe`" in
15010 ucb) if $test `./findhdr sgtty.h`; then
15012 echo "<sgtty.h> found." >&4
15014 echo "System is pyramid with BSD universe."
15015 echo "<sgtty.h> not found--you could have problems." >&4
15017 *) if $test `./findhdr termio.h`; then
15019 echo "<termio.h> found." >&4
15021 echo "System is pyramid with USG universe."
15022 echo "<termio.h> not found--you could have problems." >&4
15026 if $test `./findhdr termio.h`; then
15027 echo "<termio.h> found." >&4
15029 elif $test `./findhdr sgtty.h`; then
15030 echo "<sgtty.h> found." >&4
15033 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15036 if $test `./findhdr sgtty.h`; then
15037 echo "<sgtty.h> found." >&4
15039 elif $test `./findhdr termio.h`; then
15040 echo "<termio.h> found." >&4
15043 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15047 set i_termio; eval $setvar
15048 val=$val2; set i_sgtty; eval $setvar
15049 val=$val3; set i_termios; eval $setvar
15051 : see if this is a shadow.h system
15052 set shadow.h i_shadow
15055 : see if stddef is available
15056 set stddef.h i_stddef
15059 : see if this is a sunmath.h system
15060 set sunmath.h i_sunmath
15063 : see if sys/access.h is available
15064 set sys/access.h i_sysaccess
15067 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15068 set sys/filio.h i_sysfilio
15071 if $test `./findhdr sys/ioctl.h`; then
15073 echo '<sys/ioctl.h> found.' >&4
15076 if $test $i_sysfilio = "$define"; then
15077 echo '<sys/ioctl.h> NOT found.' >&4
15079 $test $i_sgtty = "$define" && xxx="sgtty.h"
15080 $test $i_termio = "$define" && xxx="termio.h"
15081 $test $i_termios = "$define" && xxx="termios.h"
15082 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15089 : see if this is a syslog.h system
15090 set syslog.h i_syslog
15094 : see if this is a sys/mode.h system
15095 set sys/mode.h i_sysmode
15098 : see if sys/resource.h has to be included
15099 set sys/resource.h i_sysresrc
15102 : see if sys/security.h is available
15103 set sys/security.h i_syssecrt
15106 : see if this is a sys/statvfs.h system
15107 set sys/statvfs.h i_sysstatvfs
15110 : see if this is a sys/uio.h system
15111 set sys/uio.h i_sysuio
15114 : see if this is a sys/un.h system
15115 set sys/un.h i_sysun
15119 : see if this is a sys/utsname.h system
15120 set sys/utsname.h i_sysutsname
15123 : see if this is a syswait system
15124 set sys/wait.h i_syswait
15127 : see if this is a ustat.h system
15128 set ustat.h i_ustat
15131 : see if this is an utime system
15132 set utime.h i_utime
15135 : see if this is a values.h system
15136 set values.h i_values
15139 : see if this is a vfork system
15142 set vfork.h i_vfork
15150 : see if gdbm.h is available
15155 : see if gdbm_open exists
15156 set gdbm_open d_gdbm_open
15158 case "$d_gdbm_open" in
15161 echo "We won't be including <gdbm.h>"
15171 echo "Looking for extensions..." >&4
15172 : If we are using the old config.sh, known_extensions may contain
15173 : old or inaccurate or duplicate values.
15174 known_extensions=''
15175 nonxs_extensions=''
15176 : We do not use find because it might not be available.
15177 : We do not just use MANIFEST because the user may have dropped
15178 : some additional extensions into the source tree and expect them
15181 : Function to recursively find available extensions, ignoring DynaLoader
15182 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15186 DynaLoader|dynaload) ;;
15188 if $test -f $xxx/$xxx.xs; then
15189 known_extensions="$known_extensions $1$xxx";
15190 elif $test -f $xxx/Makefile.PL; then
15191 nonxs_extensions="$nonxs_extensions $1$xxx";
15193 if $test -d $xxx -a $# -lt 10; then
15196 eval $find_extensions;
15208 eval $find_extensions
15209 set X $nonxs_extensions
15211 nonxs_extensions="$*"
15212 set X $known_extensions
15214 known_extensions="$*"
15217 : Now see which are supported on this system.
15219 for xxx in $known_extensions ; do
15223 $define) avail_ext="$avail_ext $xxx" ;;
15226 GDBM_File|gdbm_fil)
15228 $define) avail_ext="$avail_ext $xxx" ;;
15231 NDBM_File|ndbm_fil)
15234 case "$osname-$use64bitint" in
15237 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15240 *) avail_ext="$avail_ext $xxx" ;;
15245 ODBM_File|odbm_fil)
15246 case "${i_dbm}${i_rpcsvcdbm}" in
15248 case "$osname-$use64bitint" in
15251 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15254 *) avail_ext="$avail_ext $xxx" ;;
15260 case "$useposix" in
15261 true|define|y) avail_ext="$avail_ext $xxx" ;;
15265 case "$useopcode" in
15266 true|define|y) avail_ext="$avail_ext $xxx" ;;
15270 case "$d_socket" in
15271 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15274 Sys/Syslog|sys/syslog)
15275 : XXX syslog requires socket
15276 case "$d_socket" in
15277 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15281 case "$usethreads" in
15282 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15286 : XXX Do we need a useipcsysv variable here
15287 case "${d_msg}${d_sem}${d_shm}" in
15288 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15291 *) avail_ext="$avail_ext $xxx"
15300 : Now see which nonxs extensions are supported on this system.
15301 : For now assume all are.
15303 for xxx in $nonxs_extensions ; do
15305 *) nonxs_ext="$nonxs_ext $xxx"
15317 A number of extensions are supplied with $package. You may choose to
15318 compile these extensions for dynamic loading (the default), compile
15319 them into the $package executable (static loading), or not include
15320 them at all. Answer "none" to include no extensions.
15321 Note that DynaLoader is always built and need not be mentioned here.
15324 case "$dynamic_ext" in
15325 '') dflt="$avail_ext" ;;
15326 *) dflt="$dynamic_ext"
15327 # Perhaps we are reusing an old out-of-date config.sh.
15330 if test X"$dynamic_ext" != X"$avail_ext"; then
15332 NOTICE: Your previous config.sh list may be incorrect.
15333 The extensions now available to you are
15335 but the default list from your previous config.sh is
15347 rp="What extensions do you wish to load dynamically?"
15350 none) dynamic_ext=' ' ;;
15351 *) dynamic_ext="$ans" ;;
15354 case "$static_ext" in
15356 : Exclude those already listed in dynamic linking
15358 for xxx in $avail_ext; do
15359 case " $dynamic_ext " in
15361 *) dflt="$dflt $xxx" ;;
15368 *) dflt="$static_ext"
15375 rp="What extensions do you wish to load statically?"
15378 none) static_ext=' ' ;;
15379 *) static_ext="$ans" ;;
15384 A number of extensions are supplied with $package. Answer "none"
15385 to include no extensions.
15386 Note that DynaLoader is always built and need not be mentioned here.
15389 case "$static_ext" in
15390 '') dflt="$avail_ext" ;;
15391 *) dflt="$static_ext"
15392 # Perhaps we are reusing an old out-of-date config.sh.
15395 if test X"$static_ext" != X"$avail_ext"; then
15397 NOTICE: Your previous config.sh list may be incorrect.
15398 The extensions now available to you are
15400 but the default list from your previous config.sh is
15409 : Exclude those that are not xs extensions
15413 rp="What extensions do you wish to include?"
15416 none) static_ext=' ' ;;
15417 *) static_ext="$ans" ;;
15422 set X $dynamic_ext $static_ext $nonxs_ext
15426 : Remove libraries needed only for extensions
15427 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15428 : The exception is SunOS 4.x, which needs them.
15429 case "${osname}X${osvers}" in
15433 *) case "$usedl" in
15434 $define|true|[yY]*)
15435 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
15439 *) perllibs="$libs"
15445 : Remove build directory name from cppstdin so it can be used from
15446 : either the present location or the final installed location.
15448 : Get out of the UU directory to get correct path name.
15450 case "$cppstdin" in
15452 echo "Stripping down cppstdin path name"
15458 : end of configuration questions
15460 echo "End of configuration questions."
15463 : back to where it started
15464 if test -d ../UU; then
15468 : configuration may be patched via a 'config.over' file
15469 if $test -f config.over; then
15472 rp='I see a config.over file. Do you wish to load it?'
15475 n*) echo "OK, I'll ignore it.";;
15477 echo "Configuration override changes have been loaded."
15482 : in case they want portability, strip down executable paths
15483 case "$d_portable" in
15486 echo "Stripping down executable paths..." >&4
15487 for file in $loclist $trylist; do
15489 eval $file=`basename $temp`
15494 : create config.sh file
15496 echo "Creating config.sh..." >&4
15497 $spitshell <<EOT >config.sh
15500 # This file was produced by running the Configure script. It holds all the
15501 # definitions figured out by Configure. Should you modify one of these values,
15502 # do not forget to propagate your changes by running "Configure -der". You may
15503 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15506 # Package name : $package
15507 # Source directory : $src
15508 # Configuration time: $cf_time
15509 # Configured by : $cf_by
15510 # Target system : $myuname
15520 Revision='$Revision'
15527 alignbytes='$alignbytes'
15528 ansi2knr='$ansi2knr'
15529 aphostname='$aphostname'
15530 api_revision='$api_revision'
15531 api_subversion='$api_subversion'
15532 api_version='$api_version'
15533 api_versionstring='$api_versionstring'
15536 archlibexp='$archlibexp'
15537 archname64='$archname64'
15538 archname='$archname'
15539 archobjs='$archobjs'
15544 bincompat5005='$bincompat5005'
15548 byteorder='$byteorder'
15550 castflags='$castflags'
15553 cccdlflags='$cccdlflags'
15554 ccdlflags='$ccdlflags'
15556 ccflags_uselargefiles='$ccflags_uselargefiles'
15558 ccsymbols='$ccsymbols'
15559 ccversion='$ccversion'
15561 cf_email='$cf_email'
15563 charsize='$charsize'
15567 clocktype='$clocktype'
15569 compress='$compress'
15570 contains='$contains'
15574 cpp_stuff='$cpp_stuff'
15575 cppccsymbols='$cppccsymbols'
15576 cppflags='$cppflags'
15578 cppminus='$cppminus'
15580 cppstdin='$cppstdin'
15581 cppsymbols='$cppsymbols'
15582 crosscompile='$crosscompile'
15583 cryptlib='$cryptlib'
15585 d_Gconvert='$d_Gconvert'
15586 d_PRIEUldbl='$d_PRIEUldbl'
15587 d_PRIFUldbl='$d_PRIFUldbl'
15588 d_PRIGUldbl='$d_PRIGUldbl'
15589 d_PRIXU64='$d_PRIXU64'
15590 d_PRId64='$d_PRId64'
15591 d_PRIeldbl='$d_PRIeldbl'
15592 d_PRIfldbl='$d_PRIfldbl'
15593 d_PRIgldbl='$d_PRIgldbl'
15594 d_PRIi64='$d_PRIi64'
15595 d_PRIo64='$d_PRIo64'
15596 d_PRIu64='$d_PRIu64'
15597 d_PRIx64='$d_PRIx64'
15598 d_SCNfldbl='$d_SCNfldbl'
15599 d__fwalk='$d__fwalk'
15600 d_access='$d_access'
15601 d_accessx='$d_accessx'
15603 d_archlib='$d_archlib'
15606 d_attribut='$d_attribut'
15609 d_bincompat5005='$d_bincompat5005'
15611 d_bsdgetpgrp='$d_bsdgetpgrp'
15612 d_bsdsetpgrp='$d_bsdsetpgrp'
15614 d_casti32='$d_casti32'
15615 d_castneg='$d_castneg'
15616 d_charvspr='$d_charvspr'
15618 d_chroot='$d_chroot'
15619 d_chsize='$d_chsize'
15620 d_closedir='$d_closedir'
15624 d_cuserid='$d_cuserid'
15625 d_dbl_dig='$d_dbl_dig'
15626 d_difftime='$d_difftime'
15627 d_dirnamlen='$d_dirnamlen'
15628 d_dlerror='$d_dlerror'
15629 d_dlopen='$d_dlopen'
15630 d_dlsymun='$d_dlsymun'
15631 d_dosuid='$d_dosuid'
15632 d_drand48proto='$d_drand48proto'
15634 d_eaccess='$d_eaccess'
15635 d_endgrent='$d_endgrent'
15636 d_endhent='$d_endhent'
15637 d_endnent='$d_endnent'
15638 d_endpent='$d_endpent'
15639 d_endpwent='$d_endpwent'
15640 d_endsent='$d_endsent'
15641 d_eofnblk='$d_eofnblk'
15642 d_eunice='$d_eunice'
15643 d_fchmod='$d_fchmod'
15644 d_fchown='$d_fchown'
15646 d_fcntl_can_lock='$d_fcntl_can_lock'
15647 d_fd_macros='$d_fd_macros'
15648 d_fd_set='$d_fd_set'
15649 d_fds_bits='$d_fds_bits'
15650 d_fgetpos='$d_fgetpos'
15651 d_flexfnam='$d_flexfnam'
15654 d_fpathconf='$d_fpathconf'
15655 d_fpos64_t='$d_fpos64_t'
15656 d_frexpl='$d_frexpl'
15657 d_fs_data_s='$d_fs_data_s'
15658 d_fseeko='$d_fseeko'
15659 d_fsetpos='$d_fsetpos'
15660 d_fstatfs='$d_fstatfs'
15661 d_fstatvfs='$d_fstatvfs'
15663 d_ftello='$d_ftello'
15665 d_getcwd='$d_getcwd'
15666 d_getespwnam='$d_getespwnam'
15667 d_getfsstat='$d_getfsstat'
15668 d_getgrent='$d_getgrent'
15669 d_getgrps='$d_getgrps'
15670 d_gethbyaddr='$d_gethbyaddr'
15671 d_gethbyname='$d_gethbyname'
15672 d_gethent='$d_gethent'
15673 d_gethname='$d_gethname'
15674 d_gethostprotos='$d_gethostprotos'
15675 d_getlogin='$d_getlogin'
15676 d_getmnt='$d_getmnt'
15677 d_getmntent='$d_getmntent'
15678 d_getnbyaddr='$d_getnbyaddr'
15679 d_getnbyname='$d_getnbyname'
15680 d_getnent='$d_getnent'
15681 d_getnetprotos='$d_getnetprotos'
15682 d_getpagsz='$d_getpagsz'
15683 d_getpbyname='$d_getpbyname'
15684 d_getpbynumber='$d_getpbynumber'
15685 d_getpent='$d_getpent'
15686 d_getpgid='$d_getpgid'
15687 d_getpgrp2='$d_getpgrp2'
15688 d_getpgrp='$d_getpgrp'
15689 d_getppid='$d_getppid'
15690 d_getprior='$d_getprior'
15691 d_getprotoprotos='$d_getprotoprotos'
15692 d_getprpwnam='$d_getprpwnam'
15693 d_getpwent='$d_getpwent'
15694 d_getsbyname='$d_getsbyname'
15695 d_getsbyport='$d_getsbyport'
15696 d_getsent='$d_getsent'
15697 d_getservprotos='$d_getservprotos'
15698 d_getspnam='$d_getspnam'
15699 d_gettimeod='$d_gettimeod'
15700 d_gnulibc='$d_gnulibc'
15701 d_grpasswd='$d_grpasswd'
15702 d_hasmntopt='$d_hasmntopt'
15706 d_inetaton='$d_inetaton'
15707 d_int64_t='$d_int64_t'
15708 d_isascii='$d_isascii'
15710 d_isnanl='$d_isnanl'
15711 d_killpg='$d_killpg'
15712 d_lchown='$d_lchown'
15713 d_ldbl_dig='$d_ldbl_dig'
15715 d_locconv='$d_locconv'
15717 d_longdbl='$d_longdbl'
15718 d_longlong='$d_longlong'
15719 d_lseekproto='$d_lseekproto'
15721 d_madvise='$d_madvise'
15723 d_mbstowcs='$d_mbstowcs'
15724 d_mbtowc='$d_mbtowc'
15725 d_memchr='$d_memchr'
15726 d_memcmp='$d_memcmp'
15727 d_memcpy='$d_memcpy'
15728 d_memmove='$d_memmove'
15729 d_memset='$d_memset'
15731 d_mkdtemp='$d_mkdtemp'
15732 d_mkfifo='$d_mkfifo'
15733 d_mkstemp='$d_mkstemp'
15734 d_mkstemps='$d_mkstemps'
15735 d_mktime='$d_mktime'
15738 d_mprotect='$d_mprotect'
15740 d_msg_ctrunc='$d_msg_ctrunc'
15741 d_msg_dontroute='$d_msg_dontroute'
15742 d_msg_oob='$d_msg_oob'
15743 d_msg_peek='$d_msg_peek'
15744 d_msg_proxy='$d_msg_proxy'
15745 d_msgctl='$d_msgctl'
15746 d_msgget='$d_msgget'
15747 d_msgrcv='$d_msgrcv'
15748 d_msgsnd='$d_msgsnd'
15750 d_munmap='$d_munmap'
15751 d_mymalloc='$d_mymalloc'
15753 d_nv_preserves_uv='$d_nv_preserves_uv'
15754 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15755 d_off64_t='$d_off64_t'
15756 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15757 d_oldpthreads='$d_oldpthreads'
15758 d_oldsock='$d_oldsock'
15760 d_pathconf='$d_pathconf'
15762 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15763 d_phostname='$d_phostname'
15766 d_portable='$d_portable'
15767 d_pthread_yield='$d_pthread_yield'
15769 d_pwchange='$d_pwchange'
15770 d_pwclass='$d_pwclass'
15771 d_pwcomment='$d_pwcomment'
15772 d_pwexpire='$d_pwexpire'
15773 d_pwgecos='$d_pwgecos'
15774 d_pwpasswd='$d_pwpasswd'
15775 d_pwquota='$d_pwquota'
15778 d_readdir='$d_readdir'
15779 d_readlink='$d_readlink'
15780 d_rename='$d_rename'
15781 d_rewinddir='$d_rewinddir'
15783 d_safebcpy='$d_safebcpy'
15784 d_safemcpy='$d_safemcpy'
15785 d_sanemcmp='$d_sanemcmp'
15786 d_sbrkproto='$d_sbrkproto'
15787 d_sched_yield='$d_sched_yield'
15788 d_scm_rights='$d_scm_rights'
15789 d_seekdir='$d_seekdir'
15790 d_select='$d_select'
15792 d_semctl='$d_semctl'
15793 d_semctl_semid_ds='$d_semctl_semid_ds'
15794 d_semctl_semun='$d_semctl_semun'
15795 d_semget='$d_semget'
15797 d_setegid='$d_setegid'
15798 d_seteuid='$d_seteuid'
15799 d_setgrent='$d_setgrent'
15800 d_setgrps='$d_setgrps'
15801 d_sethent='$d_sethent'
15802 d_setlinebuf='$d_setlinebuf'
15803 d_setlocale='$d_setlocale'
15804 d_setnent='$d_setnent'
15805 d_setpent='$d_setpent'
15806 d_setpgid='$d_setpgid'
15807 d_setpgrp2='$d_setpgrp2'
15808 d_setpgrp='$d_setpgrp'
15809 d_setprior='$d_setprior'
15810 d_setproctitle='$d_setproctitle'
15811 d_setpwent='$d_setpwent'
15812 d_setregid='$d_setregid'
15813 d_setresgid='$d_setresgid'
15814 d_setresuid='$d_setresuid'
15815 d_setreuid='$d_setreuid'
15816 d_setrgid='$d_setrgid'
15817 d_setruid='$d_setruid'
15818 d_setsent='$d_setsent'
15819 d_setsid='$d_setsid'
15820 d_setvbuf='$d_setvbuf'
15824 d_shmatprototype='$d_shmatprototype'
15825 d_shmctl='$d_shmctl'
15827 d_shmget='$d_shmget'
15828 d_sigaction='$d_sigaction'
15829 d_sigsetjmp='$d_sigsetjmp'
15830 d_socket='$d_socket'
15831 d_socklen_t='$d_socklen_t'
15832 d_sockpair='$d_sockpair'
15833 d_socks5_init='$d_socks5_init'
15835 d_statblks='$d_statblks'
15836 d_statfs_f_flags='$d_statfs_f_flags'
15837 d_statfs_s='$d_statfs_s'
15838 d_statvfs='$d_statvfs'
15839 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15840 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15841 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
15842 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
15843 d_stdio_stream_array='$d_stdio_stream_array'
15844 d_stdiobase='$d_stdiobase'
15845 d_stdstdio='$d_stdstdio'
15846 d_strchr='$d_strchr'
15847 d_strcoll='$d_strcoll'
15848 d_strctcpy='$d_strctcpy'
15849 d_strerrm='$d_strerrm'
15850 d_strerror='$d_strerror'
15851 d_strtod='$d_strtod'
15852 d_strtol='$d_strtol'
15853 d_strtold='$d_strtold'
15854 d_strtoll='$d_strtoll'
15855 d_strtoul='$d_strtoul'
15856 d_strtoull='$d_strtoull'
15857 d_strtouq='$d_strtouq'
15858 d_strxfrm='$d_strxfrm'
15859 d_suidsafe='$d_suidsafe'
15860 d_symlink='$d_symlink'
15861 d_syscall='$d_syscall'
15862 d_sysconf='$d_sysconf'
15863 d_sysernlst='$d_sysernlst'
15864 d_syserrlst='$d_syserrlst'
15865 d_system='$d_system'
15866 d_tcgetpgrp='$d_tcgetpgrp'
15867 d_tcsetpgrp='$d_tcsetpgrp'
15868 d_telldir='$d_telldir'
15869 d_telldirproto='$d_telldirproto'
15872 d_truncate='$d_truncate'
15873 d_tzname='$d_tzname'
15876 d_union_semun='$d_union_semun'
15878 d_vendorarch='$d_vendorarch'
15879 d_vendorbin='$d_vendorbin'
15880 d_vendorlib='$d_vendorlib'
15882 d_void_closedir='$d_void_closedir'
15883 d_voidsig='$d_voidsig'
15884 d_voidtty='$d_voidtty'
15885 d_volatile='$d_volatile'
15886 d_vprintf='$d_vprintf'
15888 d_waitpid='$d_waitpid'
15889 d_wcstombs='$d_wcstombs'
15890 d_wctomb='$d_wctomb'
15893 db_hashtype='$db_hashtype'
15894 db_prefixtype='$db_prefixtype'
15895 defvoidused='$defvoidused'
15896 direntrytype='$direntrytype'
15899 doublesize='$doublesize'
15901 dynamic_ext='$dynamic_ext'
15907 eunicefix='$eunicefix'
15910 extensions='$extensions'
15911 fflushNULL='$fflushNULL'
15912 fflushall='$fflushall'
15914 firstmakefile='$firstmakefile'
15916 fpossize='$fpossize'
15917 fpostype='$fpostype'
15918 freetype='$freetype'
15920 full_csh='$full_csh'
15921 full_sed='$full_sed'
15922 gccosandvers='$gccosandvers'
15923 gccversion='$gccversion'
15924 gidformat='$gidformat'
15930 groupcat='$groupcat'
15931 groupstype='$groupstype'
15934 h_sysfile='$h_sysfile'
15945 i_arpainet='$i_arpainet'
15946 i_bsdioctl='$i_bsdioctl'
15949 i_dirent='$i_dirent'
15957 i_ieeefp='$i_ieeefp'
15958 i_inttypes='$i_inttypes'
15959 i_libutil='$i_libutil'
15960 i_limits='$i_limits'
15961 i_locale='$i_locale'
15962 i_machcthr='$i_machcthr'
15963 i_malloc='$i_malloc'
15965 i_memory='$i_memory'
15966 i_mntent='$i_mntent'
15969 i_neterrno='$i_neterrno'
15970 i_netinettcp='$i_netinettcp'
15974 i_pthread='$i_pthread'
15976 i_rpcsvcdbm='$i_rpcsvcdbm'
15979 i_shadow='$i_shadow'
15981 i_stdarg='$i_stdarg'
15982 i_stddef='$i_stddef'
15983 i_stdlib='$i_stdlib'
15984 i_string='$i_string'
15985 i_sunmath='$i_sunmath'
15986 i_sysaccess='$i_sysaccess'
15987 i_sysdir='$i_sysdir'
15988 i_sysfile='$i_sysfile'
15989 i_sysfilio='$i_sysfilio'
15991 i_sysioctl='$i_sysioctl'
15992 i_syslog='$i_syslog'
15993 i_sysmman='$i_sysmman'
15994 i_sysmode='$i_sysmode'
15995 i_sysmount='$i_sysmount'
15996 i_sysndir='$i_sysndir'
15997 i_sysparam='$i_sysparam'
15998 i_sysresrc='$i_sysresrc'
15999 i_syssecrt='$i_syssecrt'
16000 i_sysselct='$i_sysselct'
16001 i_syssockio='$i_syssockio'
16002 i_sysstat='$i_sysstat'
16003 i_sysstatfs='$i_sysstatfs'
16004 i_sysstatvfs='$i_sysstatvfs'
16005 i_systime='$i_systime'
16006 i_systimek='$i_systimek'
16007 i_systimes='$i_systimes'
16008 i_systypes='$i_systypes'
16009 i_sysuio='$i_sysuio'
16011 i_sysutsname='$i_sysutsname'
16012 i_sysvfs='$i_sysvfs'
16013 i_syswait='$i_syswait'
16014 i_termio='$i_termio'
16015 i_termios='$i_termios'
16017 i_unistd='$i_unistd'
16020 i_values='$i_values'
16021 i_varargs='$i_varargs'
16022 i_varhdr='$i_varhdr'
16024 ignore_versioned_solibs='$ignore_versioned_solibs'
16025 inc_version_list='$inc_version_list'
16026 inc_version_list_init='$inc_version_list_init'
16029 installarchlib='$installarchlib'
16030 installbin='$installbin'
16031 installman1dir='$installman1dir'
16032 installman3dir='$installman3dir'
16033 installprefix='$installprefix'
16034 installprefixexp='$installprefixexp'
16035 installprivlib='$installprivlib'
16036 installscript='$installscript'
16037 installsitearch='$installsitearch'
16038 installsitebin='$installsitebin'
16039 installsitelib='$installsitelib'
16040 installstyle='$installstyle'
16041 installusrbinperl='$installusrbinperl'
16042 installvendorarch='$installvendorarch'
16043 installvendorbin='$installvendorbin'
16044 installvendorlib='$installvendorlib'
16046 ivdformat='$ivdformat'
16049 known_extensions='$known_extensions'
16052 lddlflags='$lddlflags'
16054 ldflags_uselargefiles='$ldflags_uselargefiles'
16055 ldlibpthname='$ldlibpthname'
16062 libsdirs='$libsdirs'
16063 libsfiles='$libsfiles'
16064 libsfound='$libsfound'
16065 libspath='$libspath'
16066 libswanted='$libswanted'
16067 libswanted_uselargefiles='$libswanted_uselargefiles'
16073 locincpth='$locincpth'
16074 loclibpth='$loclibpth'
16075 longdblsize='$longdblsize'
16076 longlongsize='$longlongsize'
16077 longsize='$longsize'
16081 lseeksize='$lseeksize'
16082 lseektype='$lseektype'
16086 make_set_make='$make_set_make'
16087 mallocobj='$mallocobj'
16088 mallocsrc='$mallocsrc'
16089 malloctype='$malloctype'
16091 man1direxp='$man1direxp'
16094 man3direxp='$man3direxp'
16096 mips_type='$mips_type'
16098 mmaptype='$mmaptype'
16099 modetype='$modetype'
16101 multiarch='$multiarch'
16103 myarchname='$myarchname'
16104 mydomain='$mydomain'
16105 myhostname='$myhostname'
16108 need_va_copy='$need_va_copy'
16109 netdb_hlen_type='$netdb_hlen_type'
16110 netdb_host_type='$netdb_host_type'
16111 netdb_name_type='$netdb_name_type'
16112 netdb_net_type='$netdb_net_type'
16115 nm_so_opt='$nm_so_opt'
16116 nonxs_ext='$nonxs_ext'
16118 nvEUformat='$nvEUformat'
16119 nvFUformat='$nvFUformat'
16120 nvGUformat='$nvGUformat'
16121 nveformat='$nveformat'
16122 nvfformat='$nvfformat'
16123 nvgformat='$nvgformat'
16126 o_nonblock='$o_nonblock'
16128 old_pthread_create_joinable='$old_pthread_create_joinable'
16129 optimize='$optimize'
16130 orderlib='$orderlib'
16133 otherlibdirs='$otherlibdirs'
16137 patchlevel='$patchlevel'
16138 path_sep='$path_sep'
16141 perladmin='$perladmin'
16142 perllibs='$perllibs'
16143 perlpath='$perlpath'
16145 phostname='$phostname'
16148 pm_apiversion='$pm_apiversion'
16152 prefixexp='$prefixexp'
16154 privlibexp='$privlibexp'
16155 prototype='$prototype'
16157 quadkind='$quadkind'
16158 quadtype='$quadtype'
16159 randbits='$randbits'
16160 randfunc='$randfunc'
16161 randseedtype='$randseedtype'
16163 rd_nodata='$rd_nodata'
16164 revision='$revision'
16168 sPRIEUldbl='$sPRIEUldbl'
16169 sPRIFUldbl='$sPRIFUldbl'
16170 sPRIGUldbl='$sPRIGUldbl'
16171 sPRIXU64='$sPRIXU64'
16173 sPRIeldbl='$sPRIeldbl'
16174 sPRIfldbl='$sPRIfldbl'
16175 sPRIgldbl='$sPRIgldbl'
16180 sSCNfldbl='$sSCNfldbl'
16181 sched_yield='$sched_yield'
16182 scriptdir='$scriptdir'
16183 scriptdirexp='$scriptdirexp'
16185 seedfunc='$seedfunc'
16186 selectminbits='$selectminbits'
16187 selecttype='$selecttype'
16188 sendmail='$sendmail'
16191 sharpbang='$sharpbang'
16192 shmattype='$shmattype'
16193 shortsize='$shortsize'
16196 sig_count='$sig_count'
16197 sig_name='$sig_name'
16198 sig_name_init='$sig_name_init'
16200 sig_num_init='$sig_num_init'
16201 signal_t='$signal_t'
16202 sitearch='$sitearch'
16203 sitearchexp='$sitearchexp'
16205 sitebinexp='$sitebinexp'
16207 sitelib_stem='$sitelib_stem'
16208 sitelibexp='$sitelibexp'
16209 siteprefix='$siteprefix'
16210 siteprefixexp='$siteprefixexp'
16211 sizesize='$sizesize'
16212 sizetype='$sizetype'
16216 sockethdr='$sockethdr'
16217 socketlib='$socketlib'
16218 socksizetype='$socksizetype'
16220 spackage='$spackage'
16221 spitshell='$spitshell'
16223 ssizetype='$ssizetype'
16224 startperl='$startperl'
16226 static_ext='$static_ext'
16228 stdio_base='$stdio_base'
16229 stdio_bufsiz='$stdio_bufsiz'
16230 stdio_cnt='$stdio_cnt'
16231 stdio_filbuf='$stdio_filbuf'
16232 stdio_ptr='$stdio_ptr'
16233 stdio_stream_array='$stdio_stream_array'
16236 subversion='$subversion'
16243 timeincl='$timeincl'
16244 timetype='$timetype'
16257 uidformat='$uidformat'
16263 uquadtype='$uquadtype'
16264 use5005threads='$use5005threads'
16265 use64bitall='$use64bitall'
16266 use64bitint='$use64bitint'
16268 useithreads='$useithreads'
16269 uselargefiles='$uselargefiles'
16270 uselongdouble='$uselongdouble'
16271 usemorebits='$usemorebits'
16272 usemultiplicity='$usemultiplicity'
16273 usemymalloc='$usemymalloc'
16275 useopcode='$useopcode'
16276 useperlio='$useperlio'
16277 useposix='$useposix'
16279 useshrplib='$useshrplib'
16280 usesocks='$usesocks'
16281 usethreads='$usethreads'
16282 usevendorprefix='$usevendorprefix'
16283 usevfork='$usevfork'
16286 uvXUformat='$uvXUformat'
16287 uvoformat='$uvoformat'
16290 uvuformat='$uvuformat'
16291 uvxformat='$uvxformat'
16292 vendorarch='$vendorarch'
16293 vendorarchexp='$vendorarchexp'
16294 vendorbin='$vendorbin'
16295 vendorbinexp='$vendorbinexp'
16296 vendorlib='$vendorlib'
16297 vendorlib_stem='$vendorlib_stem'
16298 vendorlibexp='$vendorlibexp'
16299 vendorprefix='$vendorprefix'
16300 vendorprefixexp='$vendorprefixexp'
16302 versiononly='$versiononly'
16304 voidflags='$voidflags'
16306 xs_apiversion='$xs_apiversion'
16311 : Add in command line options if available
16312 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16314 : add special variables
16315 $test -f $src/patchlevel.h && \
16316 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16317 echo "CONFIGDOTSH=true" >>config.sh
16319 : propagate old symbols
16320 if $test -f UU/config.sh; then
16321 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16322 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16323 $sort | $uniq -u >UU/oldsyms
16324 set X `cat UU/oldsyms`
16330 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16332 echo "# Variables propagated from previous config.sh file." >>config.sh
16333 for sym in `cat UU/oldsyms`; do
16334 echo " Propagating $hint variable "'$'"$sym..."
16335 eval 'tmp="$'"${sym}"'"'
16337 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16343 : Finish up by extracting the .SH files
16357 If you'd like to make any changes to the config.sh file before I begin
16358 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16361 rp="Press return or use a shell escape to edit config.sh:"
16366 *) : in case they cannot read
16367 sh 1>&4 -c "$ans";;
16372 : if this fails, just run all the .SH files by hand
16379 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16386 Now you need to generate make dependencies by running "$make depend".
16387 You might prefer to run it in background: "$make depend > makedepend.out &"
16388 It can take a while, so you might not want to run it right now.
16393 rp="Run $make depend now?"
16397 $make depend && echo "Now you must run '$make'."
16400 echo "You must run '$make depend' then '$make'."
16403 elif test -f [Mm]akefile; then
16405 echo "Now you must run a $make."
16410 if $test -f Policy.sh; then
16413 If you compile $package on a different machine or from a different object
16414 directory, copy the Policy.sh file from this object directory to the
16415 new one before you run Configure -- this will help you with most of
16416 the policy defaults.
16420 if $test -f config.msg; then
16421 echo "Hmm. I also noted the following information while running:"
16423 $cat config.msg >&4
16426 $rm -f kit*isdone ark*isdone