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 Thu Aug 17 22:38:49 EET DST 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
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
458 d_old_pthread_create_joinable=''
459 old_pthread_create_joinable=''
705 inc_version_list_init=''
723 ignore_versioned_solibs=''
785 d_perl_otherlibdirs=''
802 d_nv_preserves_uv_bits=''
893 d_stdio_stream_array=''
894 stdio_stream_array=''
904 ccflags_uselargefiles=''
905 ldflags_uselargefiles=''
906 libswanted_uselargefiles=''
948 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
951 : We must find out about Eunice early
953 if test -f /etc/unixtovms; then
954 eunicefix=/etc/unixtovms
956 if test -f /etc/unixtovms.exe; then
957 eunicefix=/etc/unixtovms.exe
961 : set useposix=false in your hint file to disable the POSIX extension.
963 : set useopcode=false in your hint file to disable the Opcode extension.
965 : Trailing extension. Override this in a hint file, if needed.
967 : Extra object files, if any, needed on this platform.
969 : Possible local include directories to search.
970 : Set locincpth to "" in a hint file to defeat local include searches.
971 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
972 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
974 : no include file wanted by default
978 : change the next line if compiling for Xenix/286 on Xenix/386
979 xlibpth='/usr/lib/386 /lib/386'
980 : Possible local library directories to search.
981 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
982 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
984 : general looking path for locating libraries
985 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
986 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
987 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
988 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
989 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
991 : Private path used by Configure to find libraries. Its value
992 : is prepended to libpth. This variable takes care of special
993 : machines, like the mips. Usually, it should be empty.
996 : default library list
998 : some systems want to use only the non-versioned libso:s
999 ignore_versioned_solibs=''
1000 ccflags_uselargefiles=''
1001 ldflags_uselargefiles=''
1002 libswanted_uselargefiles=''
1003 : set usemultiplicity on the Configure command line to enable multiplicity.
1004 : set usesocks on the Configure command line to enable socks.
1005 : set usethreads on the Configure command line to enable threads.
1006 : full support for void wanted by default
1009 : List of libraries we want.
1010 : If anyone needs -lnet, put it in a hint file.
1011 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1012 libswanted="$libswanted dld ld sun m c cposix posix"
1013 libswanted="$libswanted ndir dir crypt sec"
1014 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1015 : We probably want to search /usr/shlib before most other libraries.
1016 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1017 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1018 glibpth="/usr/shlib $glibpth"
1019 : Do not use vfork unless overridden by a hint file.
1022 : Find the basic shell for Bourne shell scripts
1026 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1029 if test -f "$xxx"; then
1032 : Build up a list and do a single loop so we can 'break' out.
1033 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1034 for xxx in sh bash ksh pdksh ash; do
1036 try="$try ${p}/${xxx}"
1040 if test -f "$xxx"; then
1043 elif test -f "$xxx.exe"; then
1054 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1056 Usually it's in /bin/sh. How did you even get this far?
1057 Please contact me (Perl Maintainers) at perlbug@perl.com and
1058 we'll try to straighten this all out.
1064 : see if sh knows # comments
1065 if `$sh -c '#' >/dev/null 2>&1`; then
1069 test -f $xcat || xcat=/usr/bin/cat
1074 if test -s today; then
1077 echo "#! $xcat" > try
1081 if test -s today; then
1089 echo "Your $sh doesn't grok # comments--I will strip them later on."
1092 echo "exec grep -v '^[ ]*#'" >spitshell
1094 $eunicefix spitshell
1095 spitshell=`pwd`/spitshell
1097 echo "I presume that if # doesn't work, #! won't work either!"
1102 : figure out how to guarantee sh startup
1104 '') startsh=${sharpbang}${sh} ;;
1116 : echo "Yup, it does."
1118 echo "Hmm... '$startsh' does not guarantee sh startup..."
1119 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1124 : Save command line options in file UU/cmdline.opt for later use in
1125 : generating config.sh.
1126 cat > cmdline.opt <<EOSH
1127 # Configure command line arguments.
1134 cat >>cmdline.opt <<EOSH
1135 config_arg$argn='$arg'
1137 argn=`expr $argn + 1`
1140 : produce awk script to parse command line options
1141 cat >options.awk <<'EOF'
1143 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1145 len = length(optstr);
1146 for (i = 1; i <= len; i++) {
1147 c = substr(optstr, i, 1);
1148 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1159 if (substr(str, 1, 1) != "-") {
1160 printf("'%s'\n", str);
1164 for (i = 2; i <= len; i++) {
1165 c = substr(str, i, 1);
1167 printf("-%s\n", substr(str, i));
1173 printf("'%s'\n", substr(str, i + 1));
1186 : process the command line options
1187 set X `for arg in "$@"; do echo "X$arg"; done |
1188 sed -e s/X// | awk -f options.awk`
1193 : set up default values
1203 rm -f optdef.sh posthint.sh
1204 cat >optdef.sh <<EOS
1210 while test $# -gt 0; do
1212 -d) shift; fastread=yes;;
1213 -e) shift; alldone=cont;;
1217 if test -r "$1"; then
1220 echo "$me: cannot read config file $1." >&2
1225 -h) shift; error=true;;
1226 -r) shift; reuseval=true;;
1227 -s) shift; silent=true; realsilent=true;;
1228 -E) shift; alldone=exit;;
1229 -K) shift; knowitall=true;;
1230 -O) shift; override=true;;
1231 -S) shift; silent=true; extractsh=true;;
1236 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1237 echo "$me: ignoring -D $1" >&2
1240 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1241 *) echo "$1='define'" >> optdef.sh;;
1248 *=) echo "$1" >> optdef.sh;;
1250 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1251 echo "$me: ignoring -U $1" >&2
1253 *) echo "$1='undef'" >> optdef.sh;;
1264 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1268 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1269 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1275 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1276 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1277 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1278 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1279 *) xxx=`echo $yyy|sed 's!:.*!!'`
1280 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1286 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1288 echo "$yyy=''" >> posthint.sh ;;
1293 echo "$yyy='$zzz'" >> posthint.sh ;;
1295 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1297 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1302 echo "$yyy=$zzz" >> posthint.sh ;;
1303 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1307 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1310 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1318 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1319 [-U symbol] [-U symbol=] [-A command:symbol...]
1320 -d : use defaults for all answers.
1321 -e : go on without questioning past the production of config.sh.
1322 -f : specify an alternate default configuration file.
1323 -h : print this help message and exit (with an error status).
1324 -r : reuse C symbols value if possible (skips costly nm extraction).
1325 -s : silent mode, only echoes questions and essential information.
1326 -D : define symbol to have some value:
1327 -D symbol symbol gets the value 'define'
1328 -D symbol=value symbol gets the value 'value'
1329 -E : stop at the end of questions, after having produced config.sh.
1330 -K : do not use unless you know what you are doing.
1331 -O : let -D and -U override definitions from loaded configuration file.
1332 -S : perform variable substitutions on all .SH files (can mix with -f)
1333 -U : undefine symbol:
1334 -U symbol symbol gets the value 'undef'
1335 -U symbol= symbol gets completely empty
1336 -A : manipulate symbol after the platform specific hints have been applied:
1337 -A symbol=value append " "value to symbol
1338 -A append:symbol=value append value to symbol
1339 -A define:symbol=value define symbol to have value
1340 -A clear:symbol define symbol to be ''
1341 -A define:symbol define symbol to be 'define'
1342 -A eval:symbol=value define symbol to be eval of value
1343 -A prepend:symbol=value prepend value to symbol
1344 -A undef:symbol define symbol to be 'undef'
1345 -A undef:symbol= define symbol to be ''
1346 -V : print version number and exit (with a zero status).
1353 case "$fastread$alldone" in
1356 case "$extractsh" in
1359 if test ! -t 0; then
1360 echo "Say 'sh Configure', not 'sh <Configure'"
1370 true) exec 1>/dev/null;;
1373 : run the defines and the undefines, if any, but leave the file out there...
1376 : create the posthint manipulation script and leave the file out there...
1381 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1382 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1383 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1384 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1385 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1388 : Some greps do not return status, grrr.
1389 echo "grimblepritz" >grimble
1390 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1392 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1398 : the following should work in any shell
1402 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1403 cat >contains <<'EOSS'
1404 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1409 : Find the path to the source tree
1412 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1415 *) src=`cd ../$src && pwd` ;;
1428 if test -f $rsrc/Configure && \
1429 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1431 : found it, so we are ok.
1434 for src in . .. ../.. ../../.. ../../../..; do
1435 if test -f ../$src/Configure && \
1436 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1447 Sorry, I can't seem to locate the source dir for $package. Please start
1448 Configure with an explicit path -- i.e. /some/path/Configure.
1456 echo "Sources for $package found in \"$src\"." >&4
1460 : script used to extract .SH files with variable substitutions
1461 cat >extract <<'EOS'
1463 echo "Doing variable substitutions on .SH files..."
1464 if test -f $src/MANIFEST; then
1465 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1467 echo "(Looking for .SH files under the source directory.)"
1468 set x `(cd $src; find . -name "*.SH" -print)`
1472 0) set x `(cd $src; echo *.SH)`; shift;;
1474 if test ! -f $src/$1; then
1480 while test $name; do
1481 if test ! -d "$name"; then
1482 create="$name $create";
1483 name=`echo $name | sed -e "s|^[^/]*$||"`;
1484 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1489 for file in $create; do
1498 dir=`expr X$file : 'X\(.*\)/'`
1499 file=`expr X$file : 'X.*/\(.*\)'`
1500 (cd $dir && . ./$file)
1510 dir=`expr X$file : 'X\(.*\)/'`
1511 file=`expr X$file : 'X.*/\(.*\)'`
1512 (set x $dir; shift; eval $mkdir_p)
1522 if test -f $src/config_h.SH; then
1523 if test ! -f config.h; then
1524 : oops, they left it out of MANIFEST, probably, so do it anyway.
1530 : extract files and exit if asked to do so
1531 case "$extractsh" in
1533 case "$realsilent" in
1537 case "$config_sh" in
1538 '') config_sh='config.sh';;
1541 echo "Fetching answers from $config_sh..."
1544 test "$override" && . ./optdef.sh
1553 : Eunice requires " " instead of "", can you believe it
1556 echo "Beginning of configuration questions for $package."
1558 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1560 : first determine how to suppress newline on echo command
1562 echo "Checking echo to see how to suppress newlines..."
1563 (echo "hi there\c" ; echo " ") >.echotmp
1564 if $contains c .echotmp >/dev/null 2>&1 ; then
1575 echo $n "The star should be here-->$c"
1579 : Now test for existence of everything in MANIFEST
1581 if test -f $rsrc/MANIFEST; then
1582 echo "First let's make sure your kit is complete. Checking..." >&4
1583 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1586 for filelist in x??; do
1587 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1589 if test -s missing; then
1593 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1595 You have the option of continuing the configuration process, despite the
1596 distinct possibility that your kit is damaged, by typing 'y'es. If you
1597 do, don't blame me if something goes wrong. I advise you to type 'n'o
1598 and contact the author (perlbug@perl.com).
1601 echo $n "Continue? [n] $c" >&4
1605 echo "Continuing..." >&4
1609 echo "ABORTING..." >&4
1614 echo "Looks good..."
1617 echo "There is no MANIFEST file. I hope your kit is complete !"
1622 : Find the appropriate value for a newline for tr
1623 if test -n "$DJGPP"; then
1626 if test X"$trnl" = X; then
1627 case "`echo foo|tr '\n' x 2>/dev/null`" in
1631 if test X"$trnl" = X; then
1632 case "`echo foo|tr '\012' x 2>/dev/null`" in
1633 foox) trnl='\012' ;;
1636 if test X"$trnl" = X; then
1639 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1645 : compute the number of columns on the terminal for proper question formatting
1650 : set up the echo used in my read
1651 myecho="case \"\$xxxm\" in
1652 '') echo $n \"\$rp $c\" >&4;;
1654 '') echo $n \"[\$xxxm] $c\";;
1656 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1658 echo $n \"[\$xxxm] $c\" >&4
1660 echo $n \"\$rp [\$xxxm] $c\" >&4
1666 : now set up to do reads with possible shell escape and default assignment
1672 case "\$fastread" in
1673 yes) case "\$dflt" in
1676 case "\$silent-\$rp" in
1681 *) case "\$silent" in
1682 true) case "\$rp" in
1687 while expr "X\$ans" : "X!" >/dev/null; do
1691 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1699 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1708 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1713 echo "(OK, I'll run with -d after this question.)" >&4
1716 echo "*** Sorry, \$1 not supported yet." >&4
1726 echo "*** Substitution done -- please confirm."
1728 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1733 echo "*** Error -- try again."
1740 case "\$ans\$xxxm\$nostick" in
1752 : create .config dir to save info across Configure sessions
1753 test -d ../.config || mkdir ../.config
1754 cat >../.config/README <<EOF
1755 This directory created by Configure to save information that should
1756 persist across sessions for $package.
1758 You may safely delete it if you wish.
1761 xpatchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1763 $define|true|[yY]*) ;;
1764 *) case "$xpatchlevel" in
1767 *** WHOA THERE!!! ***
1769 This is an UNSTABLE DEVELOPMENT release.
1770 (The patchlevel, $xpatchlevel, is odd--as opposed to even,
1771 and that signifies a development release. If you want a
1772 maintenance release, you want an even-numbered release.)
1774 Do ***NOT*** install this into production use.
1775 Data corruption and crashes are possible.
1777 It is most seriously suggested that you do not continue any further
1778 unless you want to help in developing and debugging Perl.
1781 rp='Do you really want to continue?'
1785 [yY]) echo >&4 "Okay, continuing." ;;
1786 *) echo >&4 "Okay, bye."
1795 : general instructions
1798 user=`(logname) 2>/dev/null`
1800 '') user=`whoami 2>&1`;;
1802 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1805 rp='Would you like to see the instructions?'
1816 This installation shell script will examine your system and ask you questions
1817 to determine how the perl5 package should be installed. If you get
1818 stuck on a question, you may use a ! shell escape to start a subshell or
1819 execute a command. Many of the questions will have default answers in square
1820 brackets; typing carriage return will give you the default.
1822 On some of the questions which ask for file or directory names you are allowed
1823 to use the ~name construct to specify the login directory belonging to "name",
1824 even if you don't have a shell which knows about that. Questions where this is
1825 allowed will be marked "(~name ok)".
1829 dflt='Type carriage return to continue'
1833 The prompter used in this script allows you to use shell variables and
1834 backticks in your answers. You may use $1, $2, etc... to refer to the words
1835 in the default answer, as if the default line was a set of arguments given to a
1836 script shell. This means you may also use $* to repeat the whole default line,
1837 so you do not have to re-type everything to add something to the default.
1839 Everytime there is a substitution, you will have to confirm. If there is an
1840 error (e.g. an unmatched backtick), the default answer will remain unchanged
1841 and you will be prompted again.
1843 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1844 the questions and use the computed defaults (or the previous answers if there
1845 was already a config.sh file). Type 'Configure -h' for a list of options.
1846 You may also start interactively and then answer '& -d' at any prompt to turn
1847 on the non-interactive behaviour for the remainder of the execution.
1853 Much effort has been expended to ensure that this shell script will run on any
1854 Unix system. If despite that it blows up on yours, your best bet is to edit
1855 Configure and run it again. If you can't run Configure for some reason,
1856 you'll have to generate a config.sh file by hand. Whatever problems you
1857 have, let me (perlbug@perl.com) know how I blew it.
1859 This installation script affects things in two ways:
1861 1) it may do direct variable substitutions on some of the files included
1863 2) it builds a config.h file for inclusion in C programs. You may edit
1864 any of these files as the need arises after running this script.
1866 If you make a mistake on a question, there is no easy way to back up to it
1867 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1868 files. Configure will offer to let you do this before it runs the SH files.
1871 dflt='Type carriage return to continue'
1873 case "$firsttime" in
1874 true) echo $user >>../.config/instruct;;
1878 : find out where common programs are
1880 echo "Locating common programs..." >&4
1893 if test -d \$dir/\$thing; then
1899 for thisthing in \$dir/\$thing; do
1900 : just loop through to pick last item
1902 if test -f \$thisthing; then
1905 elif test -f \$dir/\$thing.exe; then
1906 if test -n "$DJGPP"; then
1907 echo \$dir/\$thing.exe
1909 : on Eunice apparently
1959 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1960 pth="$pth /lib /usr/lib"
1961 for file in $loclist; do
1965 if test -f "$xxx"; then
1968 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1969 xxx=`./loc $file $file $pth`
1972 '') xxx=`./loc $file $file $pth`;;
1973 *) xxx=`./loc $xxx $xxx $pth`;;
1979 echo $file is in $xxx.
1982 echo $file is in $xxx.
1985 echo "I don't know where '$file' is, and my life depends on it." >&4
1986 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1992 echo "Don't worry if any of the following aren't found..."
1994 for file in $trylist; do
1998 if test -f "$xxx"; then
2001 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2002 xxx=`./loc $file $file $pth`
2005 '') xxx=`./loc $file $file $pth`;;
2006 *) xxx=`./loc $xxx $xxx $pth`;;
2012 echo $file is in $xxx.
2015 echo $file is in $xxx.
2018 echo "I don't see $file out there, $say."
2025 echo "Substituting grep for egrep."
2031 echo "Substituting cp for ln."
2037 echo "Hopefully test is built into your sh."
2040 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2041 echo "Using the test built into your sh."
2049 echo "Hopefully echo is built into your sh."
2054 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2055 $echo $n "hi there$c" >foo1
2056 echo $n "hi there$c" >foo2
2057 if cmp foo1 foo2 >/dev/null 2>&1; then
2058 echo "They are compatible. In fact, they may be identical."
2065 They are not compatible! You are probably running ksh on a non-USG system.
2066 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2067 have echo built in and we may have to run some Bourne shell scripts. That
2068 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2071 $echo $n "The star should be here-->$c"
2081 cat <<'EOSC' >>checkcc
2086 int main(int argc, char *argv[]) {
2090 if $cc -o try try.c; then
2093 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2099 case "`$cc -v -c try.c 2>&1`" in
2102 if $test X"$trygcc" = Xyes; then
2103 if gcc -o try -c try.c; then
2105 echo "You seem to have a working gcc, though." >&4
2106 rp="Would you like to use it?"
2108 if $test -f myread; then
2111 if $test -f UU/myread; then
2114 echo "Cannot find myread, sorry. Aborting." >&2
2119 [yY]*) cc=gcc; ccflags=''; despair=no ;;
2123 if $test X"$despair" = Xyes; then
2124 echo "You need to find a working C compiler." >&4
2125 echo "I cannot continue any further, aborting." >&4
2134 : determine whether symbolic links are supported
2137 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2138 echo "Symbolic links are supported." >&4
2141 echo "Symbolic links are NOT supported." >&4
2146 : see whether [:lower:] and [:upper:] are supported character classes
2148 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2150 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2154 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2155 # (0xc9 and 0xd1), therefore that is a nice testing point.
2156 if test "X$up" = X -o "X$low" = X; then
2157 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2163 if test "X$up" = X -o "X$low" = X; then
2164 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2170 if test "X$up" = X -o "X$low" = X; then
2171 case "`echo IJ | od -x 2>/dev/null`" in
2173 echo "Hey, this might be EBCDIC." >&4
2174 if test "X$up" = X -o "X$low" = X; then
2175 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2176 ij) up='[A-IJ-RS-Z]'
2181 if test "X$up" = X -o "X$low" = X; then
2182 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2192 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2194 echo "Using $up and $low to convert case." >&4
2197 echo "I don't know how to translate letters from upper to lower case." >&4
2198 echo "Your tr is not acting any way I know of." >&4
2202 : set up the translation script tr, must be called with ./tr of course
2206 '[A-Z][a-z]') exec $tr '$up' '$low';;
2207 '[a-z][A-Z]') exec $tr '$low' '$up';;
2214 : Try to determine whether config.sh was made on this system
2215 case "$config_sh" in
2217 myuname=`$uname -a 2>/dev/null`
2218 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2219 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2220 # because the A-Z/a-z are not consecutive.
2221 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2222 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2223 newmyuname="$myuname"
2225 case "$knowitall" in
2227 if test -f ../config.sh; then
2228 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2229 eval "`grep myuname= ../config.sh`"
2231 if test "X$myuname" = "X$newmyuname"; then
2239 : Get old answers from old config file if Configure was run on the
2240 : same system, otherwise use the hints.
2243 if test -f config.sh; then
2245 rp="I see a config.sh file. Shall I use it to set the defaults?"
2248 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2249 *) echo "Fetching default answers from your old config.sh file..." >&4
2257 : Older versions did not always set $sh. Catch re-use of such
2267 if test ! -f config.sh; then
2270 First time through, eh? I have some defaults handy for some systems
2271 that need some extra help getting the Configure answers right:
2274 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2276 : Half the following guesses are probably wrong... If you have better
2277 : tests or hints, please send them to perlbug@perl.com
2278 : The metaconfig authors would also appreciate a copy...
2279 $test -f /irix && osname=irix
2280 $test -f /xenix && osname=sco_xenix
2281 $test -f /dynix && osname=dynix
2282 $test -f /dnix && osname=dnix
2283 $test -f /lynx.os && osname=lynxos
2284 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2285 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2286 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2287 $test -f /bin/mips && /bin/mips && osname=mips
2288 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2289 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2290 $test -d /usr/apollo/bin && osname=apollo
2291 $test -f /etc/saf/_sactab && osname=svr4
2292 $test -d /usr/include/minix && osname=minix
2293 if $test -d /MachTen -o -d /MachTen_Folder; then
2295 if $test -x /sbin/version; then
2296 osvers=`/sbin/version | $awk '{print $2}' |
2297 $sed -e 's/[A-Za-z]$//'`
2298 elif $test -x /usr/etc/version; then
2299 osvers=`/usr/etc/version | $awk '{print $2}' |
2300 $sed -e 's/[A-Za-z]$//'`
2306 $test -f /sys/posix.dll &&
2307 $test -f /usr/bin/what &&
2308 set X `/usr/bin/what /sys/posix.dll` &&
2309 $test "$3" = UWIN &&
2313 if $test -f $uname; then
2321 umips) osname=umips ;;
2324 [23]100) osname=mips ;;
2325 next*) osname=next ;;
2327 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2328 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2331 elif $test -f /etc/kconfig; then
2333 if test "$lns" = "$ln -s"; then
2335 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2337 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2344 if test -n "$DJGPP"; then
2353 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2355 'not found') osvers="$4"."$3" ;;
2356 '<3240'|'<>3240') osvers=3.2.0 ;;
2357 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2358 '=3250'|'>3250') osvers=3.2.5 ;;
2362 bsd386) osname=bsd386
2365 cygwin*) osname=cygwin
2368 *dc.osx) osname=dcosx
2374 domainos) osname=apollo
2380 dynixptx*) osname=dynixptx
2381 osvers=`echo "$4"|sed 's/^v//'`
2383 freebsd) osname=freebsd
2385 genix) osname=genix ;;
2387 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2403 netbsd*) osname=netbsd
2406 news-os) osvers="$3"
2408 4*) osname=newsos4 ;;
2412 next*) osname=next ;;
2413 POSIX-BC | posix-bc ) osname=posix-bc
2416 powerux | power_ux | powermax_os | powermaxos | \
2417 powerunix | power_unix) osname=powerux
2423 solaris) osname=solaris
2425 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2432 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2436 titanos) osname=titanos
2445 ultrix) osname=ultrix
2448 osf1|mls+) case "$5" in
2451 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2454 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2457 hp*) osname=hp_osf1 ;;
2458 mips) osname=mips_osf1 ;;
2461 unixware) osname=svr5
2467 $2) case "$osname" in
2471 : svr4.x or possibly later
2481 if test -f /stand/boot ; then
2482 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2483 if test -n "$INITPROG" -a -f "$INITPROG"; then
2484 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2485 if test -n "$isesix"; then
2493 *) if test -f /etc/systemid; then
2495 set `echo $3 | $sed 's/\./ /g'` $4
2496 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2498 elif $test -f $src/hints/sco_$1_$2.sh; then
2500 elif $test -f $src/hints/sco_$1.sh; then
2505 '') : Still unknown. Probably a generic Sys V.
2514 *) case "$osname" in
2515 '') : Still unknown. Probably a generic BSD.
2523 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2524 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2525 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2528 $rm -f UU/kernel.what
2529 elif test -d c:/.; then
2536 : Now look for a hint file osname_osvers, unless one has been
2537 : specified already.
2540 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2541 : Also try without trailing minor version numbers.
2542 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2543 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2544 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2545 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2548 *) case "$osvers" in
2551 *) if $test -f $src/hints/$file.sh ; then
2553 elif $test -f $src/hints/$xfile.sh ; then
2555 elif $test -f $src/hints/$xxfile.sh ; then
2557 elif $test -f $src/hints/$xxxfile.sh ; then
2559 elif $test -f $src/hints/$xxxxfile.sh ; then
2561 elif $test -f "$src/hints/${osname}.sh" ; then
2570 if $test -f Policy.sh ; then
2573 none) dflt="Policy" ;;
2574 *) dflt="Policy $dflt" ;;
2579 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2583 if $test -f Policy.sh ; then
2586 There's also a Policy hint file available, which should make the
2587 site-specific (policy) questions easier to answer.
2594 You may give one or more space-separated answers, or "none" if appropriate.
2595 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2596 is a good thing. DO NOT give a wrong version or a wrong OS.
2600 rp="Which of these apply, if any?"
2603 for file in $tans; do
2604 if $test X$file = XPolicy -a -f Policy.sh; then
2606 $cat Policy.sh >> UU/config.sh
2607 elif $test -f $src/hints/$file.sh; then
2608 . $src/hints/$file.sh
2609 $cat $src/hints/$file.sh >> UU/config.sh
2610 elif $test X$tans = X -o X$tans = Xnone ; then
2613 : Give one chance to correct a possible typo.
2614 echo "$file.sh does not exist"
2616 rp="hint to use instead?"
2618 for file in $ans; do
2619 if $test -f "$src/hints/$file.sh"; then
2620 . $src/hints/$file.sh
2621 $cat $src/hints/$file.sh >> UU/config.sh
2622 elif $test X$ans = X -o X$ans = Xnone ; then
2625 echo "$file.sh does not exist -- ignored."
2632 : Remember our hint file for later.
2633 if $test -f "$src/hints/$file.sh" ; then
2643 echo "Fetching default answers from $config_sh..." >&4
2647 cp $config_sh config.sh 2>/dev/null
2657 test "$override" && . ./optdef.sh
2658 myuname="$newmyuname"
2660 : Restore computed paths
2661 for file in $loclist $trylist; do
2662 eval $file="\$_$file"
2667 Configure uses the operating system name and version to set some defaults.
2668 The default value is probably right if the name rings a bell. Otherwise,
2669 since spelling matters for me, either accept the default or answer "none"
2676 ''|' '|none) dflt=none ;;
2677 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2680 *) dflt="$osname" ;;
2682 rp="Operating system name?"
2686 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2692 ''|' '|none) dflt=none ;;
2693 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2694 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2696 ''|' ') dflt=none ;;
2701 *) dflt="$osvers" ;;
2703 rp="Operating system version?"
2713 : who configured the system
2714 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2715 cf_by=`(logname) 2>/dev/null`
2718 cf_by=`(whoami) 2>/dev/null`
2720 "") cf_by=unknown ;;
2724 : set up the script used to warn in case of inconsistency
2731 echo "*** WHOA THERE!!! ***" >&4
2732 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2733 rp=" Keep the $hint value?"
2736 y) td=$was; tu=$was;;
2740 : function used to set $1 to $val
2741 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2743 $define$undef) . ./whoa; eval "$var=\$td";;
2744 $undef$define) . ./whoa; eval "$var=\$tu";;
2745 *) eval "$var=$val";;
2748 case "$usethreads" in
2749 $define|true|[yY]*) dflt='y';;
2754 Perl can be built to take advantage of threads on some systems.
2755 To do so, Configure can be run with -Dusethreads.
2757 Note that threading is a highly experimental feature, and
2758 some known race conditions still remain. If you choose to try
2759 it, be very sure to not actually deploy it for production
2760 purposes. README.threads has more details, and is required
2761 reading if you enable threads.
2763 If this doesn't make any sense to you, just accept the default '$dflt'.
2765 rp='Build a threading Perl?'
2768 y|Y) val="$define" ;;
2774 case "$usethreads" in
2778 As of 5.5.640, Perl has two different internal threading implementations,
2779 the 5.005 version (5005threads) and an interpreter-based version
2780 (ithreads) that has one interpreter per thread. Both are very
2781 experimental. This arrangement exists to help developers work out
2782 which one is better.
2784 If you're a casual user, you probably don't want interpreter-threads
2785 at this time. There doesn't yet exist a way to create threads from
2786 within Perl in this model, i.e., "use Thread;" will NOT work.
2788 : Default to ithreads unless overridden on command line or with
2791 case "$use5005threads" in
2792 $define|true|[yY]*) dflt='n';;
2794 case "$useithreads" in
2795 $undef|false|[nN]*) dflt='n';;
2797 rp='Use interpreter-based ithreads?'
2800 y|Y) val="$define" ;;
2805 : Now set use5005threads to the opposite value.
2806 case "$useithreads" in
2807 $define) val="$undef" ;;
2814 useithreads="$undef"
2815 use5005threads="$undef"
2819 case "$d_oldpthreads" in
2820 '') : Configure tests would be welcome here. For now, assume undef.
2822 *) val="$d_oldpthreads" ;;
2828 case "$usethreads" in
2829 "$define"|true|[yY]*)
2830 : Look for a hint-file generated 'call-back-unit'. If the
2831 : user has specified that a threading perl is to be built,
2832 : we may need to set or change some other defaults.
2833 if $test -f usethreads.cbu; then
2834 echo "Your platform has some specific hints for threaded builds, using them..."
2838 (Your platform doesn't have any specific hints for threaded builds.
2839 Assuming POSIX threads, then.)
2847 Perl can be built so that multiple Perl interpreters can coexist
2848 within the same Perl executable.
2851 case "$useithreads" in
2854 This multiple interpreter support is required for interpreter-based threads.
2858 *) case "$usemultiplicity" in
2859 $define|true|[yY]*) dflt='y';;
2863 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2864 rp='Build Perl for multiplicity?'
2867 y|Y) val="$define" ;;
2875 : determine where manual pages are on this system
2879 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2880 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2881 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2882 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2883 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2884 sysman=`./loc . /usr/man/man1 $syspath`
2887 if $test -d "$sysman"; then
2888 echo "System manual is in $sysman." >&4
2890 echo "Could not find manual pages in source form." >&4
2893 : see what memory models we can support
2896 $cat >pdp11.c <<'EOP'
2906 '') modelcc="$cc" ;;
2909 ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1
2910 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2911 dflt='unsplit split'
2913 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2916 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2921 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2924 if $test -d /lib/large || $test -d /usr/lib/large; then
2927 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2936 Some systems have different model sizes. On most systems they are called
2937 small, medium, large, and huge. On the PDP11 they are called unsplit and
2938 split. If your system doesn't support different memory models, say "none".
2939 If you wish to force everything to one memory model, say "none" here and
2940 put the appropriate flags later when it asks you for other cc and ld flags.
2941 Venix systems may wish to put "none" and let the compiler figure things out.
2942 (In the following question multiple model names should be space separated.)
2944 The default for most systems is "none".
2947 rp="Which memory models are supported?"
2962 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2963 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2970 rp="What flag indicates separate I and D space?"
2978 *large*|*small*|*medium*|*huge*)
2985 rp="What flag indicates large model?"
2995 *huge*) case "$huge" in
2999 rp="What flag indicates huge model?"
3009 *medium*) case "$medium" in
3013 rp="What flag indicates medium model?"
3020 *) medium="$large";;
3023 *small*) case "$small" in
3027 rp="What flag indicates small model?"
3038 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3041 $rm -f pdp11.* pdp11
3043 : make some quick guesses about what we are up against
3045 $echo $n "Hmm... $c"
3055 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3056 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3058 echo "Looks kind of like an OSF/1 system, but we'll see..."
3060 elif test `echo abc | tr a-z A-Z` = Abc ; then
3061 xxx=`./loc addbib blurfl $pth`
3062 if $test -f $xxx; then
3063 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3067 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3068 echo "Looks kind of like an extended USG system, but we'll see..."
3070 echo "Looks kind of like a USG system, but we'll see..."
3074 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3075 echo "Looks kind of like a BSD system, but we'll see..."
3079 echo "Looks kind of like a Version 7 system, but we'll see..."
3082 case "$eunicefix" in
3085 There is, however, a strange, musty smell in the air that reminds me of
3086 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3090 : it so happens the Eunice I know will not run shell scripts in Unix format
3094 echo "Congratulations. You aren't running Eunice."
3098 : Detect OS2. The p_ variable is set above in the Head.U unit.
3103 I have the feeling something is not exactly right, however...don't tell me...
3104 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3109 if test -f /xenix; then
3110 echo "Actually, this looks more like a XENIX system..."
3115 echo "It's not Xenix..."
3120 if test -f /venix; then
3121 echo "Actually, this looks more like a VENIX system..."
3128 echo "Nor is it Venix..."
3131 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3132 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3135 : see if we need a special compiler
3143 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3144 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3158 On some older systems the default C compiler will not resolve multiple global
3159 references that happen to have the same name. On some such systems the "Mcc"
3160 command may be used to force these to be resolved. On other systems a "cc -M"
3161 command is required. (Note that the -M flag on other systems indicates a
3162 memory model to use!) If you have the Gnu C compiler, you might wish to use
3168 rp="Use which C compiler?"
3176 rp="Use which C compiler?"
3180 : Look for a hint-file generated 'call-back-unit'. Now that the
3181 : user has specified the compiler, we may need to set or change some
3183 if $test -f cc.cbu; then
3189 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3190 $cat >gccvers.c <<EOM
3195 printf("%s\n", __VERSION__);
3197 printf("%s\n", "1");
3203 if $cc $ldflags -o gccvers gccvers.c; then
3204 gccversion=`./gccvers`
3205 case "$gccversion" in
3206 '') echo "You are not using GNU cc." ;;
3207 *) echo "You are using GNU cc $gccversion."
3212 echo "*** WHOA THERE!!! ***" >&4
3213 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3214 case "$knowitall" in
3216 echo " You'd better start hunting for one and let me know about it." >&4
3222 case "$gccversion" in
3223 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3225 case "$gccversion" in
3226 '') gccosandvers='' ;;
3227 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3228 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3230 case "$gccosandvers" in
3231 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3232 $osname$osvers) ;; # looking good
3233 $osname*) cat <<EOM >&4
3235 *** WHOA THERE!!! ***
3237 Your gcc has not been compiled for the exact release of
3238 your operating system ($gccosandvers versus $osname$osvers).
3240 In general it is a good idea to keep gcc synchronized with
3241 the operating system because otherwise serious problems
3242 may ensue when trying to compile software, like Perl.
3244 I'm trying to be optimistic here, though, and will continue.
3245 If later during the configuration and build icky compilation
3246 problems appear (headerfile conflicts being the most common
3247 manifestation), I suggest reinstalling the gcc to match
3248 your operating system release.
3252 *) gccosandvers='' ;; # failed to parse, better be silent
3260 : see how we invoke the C preprocessor
3262 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3263 cat <<'EOT' >testcpp.c
3269 if test ! -f cppstdin; then
3270 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3271 # AIX cc -E doesn't show the absolute headerfile
3272 # locations but we'll cheat by using the -M flag.
3273 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
3275 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3278 echo "Keeping your $hint cppstdin wrapper."
3281 wrapper=`pwd`/cppstdin
3285 if $test "X$cppstdin" != "X" && \
3286 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3287 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3289 echo "You used to use $cppstdin $cppminus so we'll use that again."
3291 '') echo "But let's see if we can live without a wrapper..." ;;
3293 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3294 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3296 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3299 echo "(However, $cpprun $cpplast does not work, let's see...)"
3307 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3314 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3315 $cc -E <testcpp.c >testcpp.out 2>&1; \
3316 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3317 echo "Yup, it does."
3320 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3321 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3322 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3323 echo "Yup, it does."
3326 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3327 $cc -P <testcpp.c >testcpp.out 2>&1; \
3328 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3329 echo "Yipee, that works!"
3332 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3333 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3334 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3335 echo "At long last!"
3338 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3339 $cpp <testcpp.c >testcpp.out 2>&1; \
3340 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3344 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3345 $cpp - <testcpp.c >testcpp.out 2>&1; \
3346 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3347 echo "Hooray, it works! I was beginning to wonder."
3350 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3351 $wrapper <testcpp.c >testcpp.out 2>&1; \
3352 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3358 rp="No dice. I can't find a C preprocessor. Name one:"
3362 $x_cpp <testcpp.c >testcpp.out 2>&1
3363 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3364 echo "OK, that will do." >&4
3366 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3381 echo "Perhaps can we force $cc -E using a wrapper..."
3382 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3383 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3389 echo "Nope, we'll have to live without it..."
3403 "$wrapper"|'cppstdin') ;;
3404 *) $rm -f $wrapper;;
3406 $rm -f testcpp.c testcpp.out
3408 : decide how portable to be. Allow command line overrides.
3409 case "$d_portable" in
3411 *) d_portable="$define" ;;
3414 : set up shell script to do ~ expansion
3420 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3423 if $test -f /bin/csh; then
3424 /bin/csh -f -c "glob \$1"
3429 name=\`$expr x\$1 : '..\([^/]*\)'\`
3430 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3431 if $test ! -d "\$dir"; then
3433 echo "\$me: can't locate home directory for: \$name" >&2
3438 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3454 : now set up to get a file name
3458 cat <<'EOSC' >>getfile
3474 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3475 fn=`echo $fn | sed 's/(.*)//'`
3481 loc_file=`expr $fn : '.*:\(.*\)'`
3482 fn=`expr $fn : '\(.*\):.*'`
3490 */*) fullpath=true;;
3499 *e*) exp_file=true;;
3502 *p*) nopath_ok=true;;
3507 *d*) type='Directory';;
3508 *l*) type='Locate';;
3513 Locate) what='File';;
3518 case "$d_portable" in
3526 while test "$type"; do
3531 true) rp="$rp (~name ok)";;
3534 if test -f UU/getfile.ok && \
3535 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3554 value=`UU/filexp $ans`
3557 if test "$ans" != "$value"; then
3558 echo "(That expands to $value on this system.)"
3572 /*) value="$ansexp" ;;
3573 [a-zA-Z]:/*) value="$ansexp" ;;
3578 echo "I shall only accept a full path name, as in /bin/ls." >&4
3579 echo "Use a ! shell escape if you wish to check pathnames." >&4
3582 echo "Please give a full path name, starting with slash." >&4
3585 echo "Note that using ~name is ok provided it expands well." >&4
3598 for fp in $gfpth; do
3599 if test "X$fp" = X.; then
3604 if test -f "$pf"; then
3606 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3608 echo "($value is not a plain file, but that's ok.)"
3611 if test X"$type" = X; then
3618 for fp in $gfpth; do
3619 if test "X$fp" = X.; then
3624 direxp="$fp/$ansexp"
3626 if test -d "$direxp"; then
3634 if test -d "$ansexp"; then
3635 echo "(Looking for $loc_file in directory $value.)"
3636 value="$value/$loc_file"
3637 ansexp="$ansexp/$loc_file"
3639 if test -f "$ansexp"; then
3642 case "$nopath_ok" in
3643 true) case "$value" in
3645 *) echo "Assuming $value will be in people's path."
3661 if test "$fastread" = yes; then
3666 rp="$what $value doesn't exist. Use that name anyway?"
3685 test "X$gfpthkeep" != Xy && gfpth=""
3688 : What should the include directory be ?
3690 $echo $n "Hmm... $c"
3694 if $test -f /bin/mips && /bin/mips; then
3695 echo "Looks like a MIPS system..."
3696 $cat >usr.c <<'EOCP'
3697 #ifdef SYSTYPE_BSD43
3701 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3702 dflt='/bsd43/usr/include'
3706 mips_type='System V'
3708 $rm -f usr.c usr.out
3709 echo "and you're compiling with the $mips_type compiler and libraries."
3713 echo "Doesn't look like a MIPS system."
3723 case "$xxx_prompt" in
3726 rp='Where are the include files you want to use?'
3734 : Set private lib path
3737 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3742 '') dlist="$loclibpth $plibpth $glibpth";;
3743 *) dlist="$libpth";;
3746 : Now check and see which directories actually exist, avoiding duplicates
3750 if $test -d $xxx; then
3753 *) libpth="$libpth $xxx";;
3759 Some systems have incompatible or broken versions of libraries. Among
3760 the directories listed in the question below, please remove any you
3761 know not to be holding relevant libraries, and add any that are needed.
3762 Say "none" for none.
3773 rp="Directories to use for library searches?"
3780 : compute shared library extension
3783 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3793 On some systems, shared libraries may be available. Answer 'none' if
3794 you want to suppress searching of shared libraries for the remainder
3795 of this configuration.
3798 rp='What is the file extension used for shared libraries?'
3802 : Define several unixisms.
3803 : Hints files or command line option can be used to override them.
3804 : The convoluted testing is in case hints files set either the old
3807 '') case "$exe_ext" in
3809 *) _exe="$exe_ext" ;;
3814 '') case "$lib_ext" in
3821 '') case "$obj_ext" in
3828 '') case "$path_sep" in
3839 : Which makefile gets called first. This is used by make depend.
3840 case "$firstmakefile" in
3841 '') firstmakefile='makefile';;
3845 $define|true|[yY]*) dflt='y';;
3850 Perl can be built to use the SOCKS proxy protocol library. To do so,
3851 Configure must be run with -Dusesocks.
3853 If this doesn't make any sense to you, just accept the default '$dflt'.
3855 rp='Build Perl for SOCKS?'
3858 y|Y) val="$define" ;;
3864 : Looking for optional libraries
3866 echo "Checking for optional libraries..." >&4
3871 case "$libswanted" in
3872 '') libswanted='c_s';;
3875 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3881 for thisdir in $libpth $xlibpth; do
3882 test -d $thisdir && libspath="$libspath $thisdir"
3884 for thislib in $libswanted; do
3885 for thisdir in $libspath; do
3887 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3888 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3889 $test -f "$xxx" && eval $libscheck
3890 $test -f "$xxx" && libstyle=shared
3892 if test ! -f "$xxx"; then
3893 xxx=$thisdir/lib$thislib.$so
3894 $test -f "$xxx" && eval $libscheck
3895 $test -f "$xxx" && libstyle=shared
3897 if test ! -f "$xxx"; then
3898 xxx=$thisdir/lib$thislib$_a
3899 $test -f "$xxx" && eval $libscheck
3900 $test -f "$xxx" && libstyle=static
3902 if test ! -f "$xxx"; then
3903 xxx=$thisdir/$thislib$_a
3904 $test -f "$xxx" && eval $libscheck
3905 $test -f "$xxx" && libstyle=static
3907 if test ! -f "$xxx"; then
3908 xxx=$thisdir/lib${thislib}_s$_a
3909 $test -f "$xxx" && eval $libscheck
3910 $test -f "$xxx" && libstyle=static
3911 $test -f "$xxx" && thislib=${thislib}_s
3913 if test ! -f "$xxx"; then
3914 xxx=$thisdir/Slib$thislib$_a
3915 $test -f "$xxx" && eval $libscheck
3916 $test -f "$xxx" && libstyle=static
3918 if $test -f "$xxx"; then
3920 shared) echo "Found -l$thislib (shared)." ;;
3921 static) echo "Found -l$thislib." ;;
3922 *) echo "Found -l$thislib ($libstyle)." ;;
3926 *) dflt="$dflt -l$thislib"
3927 libsfound="$libsfound $xxx"
3929 libsfiles="$libsfiles $yyy"
3930 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3931 case " $libsdirs " in
3933 *) libsdirs="$libsdirs $yyy" ;;
3940 if $test ! -f "$xxx"; then
3941 echo "No -l$thislib."
3952 ' '|'') dflt='none';;
3957 In order to compile $package on your machine, a number of libraries
3958 are usually needed. Include any other special libraries here as well.
3959 Say "none" for none. The default list is almost always right.
3963 rp="What libraries to use?"
3970 : determine optimization, if desired, or use for debug flag also
3972 ' '|$undef) dflt='none';;
3974 *) dflt="$optimize";;
3978 By default, $package compiles with the -O flag to use the optimizer.
3979 Alternately, you might want to use the symbolic debugger, which uses
3980 the -g flag (on traditional Unix systems). Either flag can be
3981 specified here. To use neither flag, specify the word "none".
3984 rp="What optimizer/debugger flag should be used?"
3988 'none') optimize=" ";;
3992 : We will not override a previous value, but we might want to
3993 : augment a hint file
3995 default|recommended)
3996 case "$gccversion" in
3997 1*) dflt='-fpcc-struct-return' ;;
4000 *-g*) dflt="$dflt -DDEBUGGING";;
4002 case "$gccversion" in
4003 2*) if test -d /etc/conf/kconfig.d &&
4004 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4010 case "$gccversion" in
4014 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4015 echo 'int main(void) { return 0; }' > gcctest.c
4016 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4017 echo "Yes, it does." 2>&1
4020 echo "Leaving current flags $ccflags alone." 2>&1
4022 *) dflt="$dflt -fno-strict-aliasing" ;;
4025 echo "Nope, it doesn't, but that's ok." 2>&1
4032 case "$mips_type" in
4033 *BSD*|'') inclwanted="$locincpth $usrinc";;
4034 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4036 for thisincl in $inclwanted; do
4037 if $test -d $thisincl; then
4038 if $test x$thisincl != x$usrinc; then
4041 *) dflt="$dflt -I$thisincl";;
4047 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4049 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4057 *) dflt="$dflt -D$2";;
4061 set signal.h LANGUAGE_C; eval $inctest
4065 ccflags="$ccflags -DSOCKS"
4070 default|recommended) dflt="$ccflags $dflt" ;;
4071 *) dflt="$ccflags";;
4079 Your C compiler may want other flags. For this question you should include
4080 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4081 but you should NOT include libraries or ld flags like -lwhatever. If you
4082 want $package to honor its debug switch, you should include -DDEBUGGING here.
4083 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4085 To use no flags, specify the word "none".
4091 rp="Any additional cc flags?"
4098 : the following weeds options from ccflags that are of no interest to cpp
4100 case "$gccversion" in
4101 1*) cppflags="$cppflags -D__GNUC__"
4103 case "$mips_type" in
4105 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4111 echo "Let me guess what the preprocessor flags are..." >&4
4125 *) ftry="$previous $flag";;
4127 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4128 >cpp1.out 2>/dev/null && \
4129 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4130 >cpp2.out 2>/dev/null && \
4131 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4132 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4134 cppflags="$cppflags $ftry"
4144 *-*) echo "They appear to be: $cppflags";;
4146 $rm -f cpp.c cpp?.out
4150 : flags used in final linking phase
4152 '') if ./venix; then
4158 *-posix*) dflt="$dflt -posix" ;;
4161 *) dflt="$ldflags";;
4164 : Try to guess additional flags to pick up local libraries.
4165 for thislibdir in $libpth; do
4166 case " $loclibpth " in
4169 *"-L$thislibdir "*) ;;
4170 *) dflt="$dflt -L$thislibdir" ;;
4182 Your C linker may need flags. For this question you should
4183 include -L/whatever and any other flags used by the C linker, but you
4184 should NOT include libraries like -lwhatever.
4186 Make sure you include the appropriate -L/path flags if your C linker
4187 does not normally search all of the directories you specified above,
4190 To use no flags, specify the word "none".
4194 rp="Any additional ld flags (NOT including libraries)?"
4200 rmlist="$rmlist pdp11"
4204 echo "Checking your choice of C compiler and flags for coherency..." >&4
4205 $cat > try.c <<'EOF'
4207 int main() { printf("Ok\n"); exit(0); }
4209 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4211 $cat >try.msg <<'EOM'
4212 I've tried to compile and run the following simple program:
4215 $cat try.c >> try.msg
4217 $cat >> try.msg <<EOM
4224 and I got the following output:
4228 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4229 if sh -c './try' >>try.msg 2>&1; then
4233 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4236 cat >> try.msg <<'EOQS'
4237 If $libs contains -lsfio, and sfio is mis-configured, then it
4238 sometimes (apparently) runs and exits with a 0 status, but with no
4239 output! It may have to do with sfio's use of _exit vs. exit.
4242 rp="You have a big problem. Shall I abort Configure"
4249 echo "The program compiled OK, but exited with status $?." >>try.msg
4250 rp="You have a problem. Shall I abort Configure"
4254 echo "I can't compile the test program." >>try.msg
4255 rp="You have a BIG problem. Shall I abort Configure"
4261 case "$knowitall" in
4263 echo "(The supplied flags or libraries might be incorrect.)"
4271 *) echo "Ok. Stopping Configure." >&4
4276 n) echo "OK, that should do.";;
4278 $rm -f try try.* core
4280 : define an is-a-typedef? function
4281 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4283 "") inclist="sys/types.h";;
4285 eval "varval=\$$var";
4289 for inc in $inclist; do
4290 echo "#include <$inc>" >>temp.c;
4292 echo "#ifdef $type" >> temp.c;
4293 echo "printf(\"We have $type\");" >> temp.c;
4294 echo "#endif" >> temp.c;
4295 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4296 if $contains $type temp.E >/dev/null 2>&1; then
4302 *) eval "$var=\$varval";;
4305 : define an is-a-typedef? function that prompts if the type is not available.
4306 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4308 "") inclist="sys/types.h";;
4310 eval "varval=\$$var";
4314 for inc in $inclist; do
4315 echo "#include <$inc>" >>temp.c;
4317 echo "#ifdef $type" >> temp.c;
4318 echo "printf(\"We have $type\");" >> temp.c;
4319 echo "#endif" >> temp.c;
4320 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4322 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4323 if $contains $type temp.E >/dev/null 2>&1; then
4324 echo "$type found." >&4;
4327 echo "$type NOT found." >&4;
4333 *) eval "$var=\$varval";;
4336 : define a shorthand compile call
4340 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4341 : define a shorthand compile call for compilations that should be ok.
4345 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4347 : check for lengths of integral types
4351 echo "Checking to see how big your integers are..." >&4
4352 $cat >intsize.c <<'EOCP'
4356 printf("intsize=%d;\n", (int)sizeof(int));
4357 printf("longsize=%d;\n", (int)sizeof(long));
4358 printf("shortsize=%d;\n", (int)sizeof(short));
4363 if eval $compile_ok && ./intsize > /dev/null; then
4365 echo "Your integers are $intsize bytes long."
4366 echo "Your long integers are $longsize bytes long."
4367 echo "Your short integers are $shortsize bytes long."
4371 Help! I can't compile and run the intsize test program: please enlighten me!
4372 (This is probably a misconfiguration in your system or libraries, and
4373 you really ought to fix it. Still, I'll try anyway.)
4377 rp="What is the size of an integer (in bytes)?"
4381 rp="What is the size of a long integer (in bytes)?"
4385 rp="What is the size of a short integer (in bytes)?"
4391 $rm -f intsize intsize.*
4393 : see what type lseek is declared as in the kernel
4394 rp="What is the type used for lseek's offset on this system?"
4395 set off_t lseektype long stdio.h sys/types.h
4399 echo "Checking to see how big your file offsets are..." >&4
4401 #include <sys/types.h>
4405 printf("%d\n", (int)sizeof($lseektype));
4410 if eval $compile_ok; then
4412 echo "Your file offsets are $lseeksize bytes long."
4416 echo "(I can't seem to compile the test program. Guessing...)"
4417 rp="What is the size of your file offsets (in bytes)?"
4423 : see what type file positions are declared as in the library
4424 rp="What is the type for file position used by fsetpos()?"
4425 set fpos_t fpostype long stdio.h sys/types.h
4430 *_t) zzz="$fpostype" ;;
4433 echo "Checking the size of $zzz..." >&4
4435 #include <sys/types.h>
4438 printf("%d\n", (int)sizeof($fpostype));
4443 if eval $compile_ok; then
4447 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4450 echo "Your $zzz is $fpossize bytes long."
4456 echo "(I can't compile the test program. Guessing...)" >&4
4457 rp="What is the size of your file positions (in bytes)?"
4464 # Backward compatibility (uselfs is deprecated).
4466 "$define"|true|[yY]*)
4469 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4471 uselargefiles="$define"
4475 case "$lseeksize:$fpossize" in
4478 You can have files larger than 2 gigabytes.
4481 *) case "$uselargefiles" in
4482 "$undef"|false|[nN]*) dflt='n' ;;
4487 Perl can be built to understand large files (files larger than 2 gigabytes)
4488 on some systems. To do so, Configure can be run with -Duselargefiles.
4490 If this doesn't make any sense to you, just accept the default '$dflt'.
4492 rp='Try to understand large files, if available?'
4495 y|Y) val="$define" ;;
4502 case "$uselargefiles" in
4504 : Look for a hint-file generated 'call-back-unit'. If the
4505 : user has specified that a large files perl is to be built,
4506 : we may need to set or change some other defaults.
4507 if $test -f uselargefiles.cbu; then
4508 echo "Your platform has some specific hints for large file builds, using them..."
4509 . ./uselargefiles.cbu
4511 echo "Rechecking to see how big your file offsets are..." >&4
4513 #include <sys/types.h>
4517 printf("%d\n", (int)sizeof($lseektype));
4522 if eval $compile_ok; then
4524 $echo "Your file offsets are now $lseeksize bytes long."
4528 echo "(I can't seem to compile the test program. Guessing...)"
4529 rp="What is the size of your file offsets (in bytes)?"
4534 *_t) zzz="$fpostype" ;;
4537 $echo $n "Rechecking the size of $zzz...$c" >&4
4539 #include <sys/types.h>
4542 printf("%d\n", (int)sizeof($fpostype));
4547 if eval $compile_ok; then
4552 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4555 echo " $fpossize bytes." >&4
4561 echo "(I can't compile the test program. Guessing...)" >&4
4562 rp="What is the size of your file positions (in bytes)?"
4572 case "$usemorebits" in
4573 "$define"|true|[yY]*)
4574 use64bitint="$define"
4575 uselongdouble="$define"
4576 usemorebits="$define"
4578 *) usemorebits="$undef"
4583 case "$uselonglong" in
4584 "$define"|true|[yY]*)
4587 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4589 use64bitint="$define"
4592 case "$use64bits" in
4593 "$define"|true|[yY]*)
4596 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4598 use64bitint="$define"
4601 case "$use64bitints" in
4602 "$define"|true|[yY]*)
4605 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4607 use64bitint="$define"
4610 case "$use64bitsint" in
4611 "$define"|true|[yY]*)
4614 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4616 use64bitint="$define"
4619 case "$uselonglongs" in
4620 "$define"|true|[yY]*)
4623 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4625 use64bitint="$define"
4628 case "$use64bitsall" in
4629 "$define"|true|[yY]*)
4632 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4634 use64bitall="$define"
4639 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4641 case "$use64bitall" in
4642 "$define"|true|[yY]*) use64bitint="$define" ;;
4648 You have natively 64-bit long integers.
4652 *) case "$use64bitint" in
4653 "$define"|true|[yY]*) dflt='y';;
4658 Perl can be built to take advantage of 64-bit integer types
4659 on some systems. To do so, Configure can be run with -Duse64bitint.
4660 Choosing this option will most probably introduce binary incompatibilities.
4662 If this doesn't make any sense to you, just accept the default '$dflt'.
4664 rp='Try to use 64-bit integers, if available?'
4667 [yY]*) val="$define" ;;
4675 case "$use64bitall" in
4676 "$define"|true|[yY]*) dflt='y' ;;
4677 *) case "$longsize" in
4685 You may also choose to try maximal 64-bitness. It means using as much
4686 64-bitness as possible on the platform. This in turn means even more
4687 binary incompatibilities. On the other hand, your platform may not
4688 have any more 64-bitness available than what you already have chosen.
4690 If this doesn't make any sense to you, just accept the default '$dflt'.
4692 rp='Try to use maximal 64-bit support, if available?'
4695 [yY]*) val="$define" ;;
4700 case "$use64bitall" in
4702 case "$use64bitint" in
4706 Since you have chosen a maximally 64-bit build, I'm also turning on
4707 the use of 64-bit integers.
4709 use64bitint="$define" ;;
4714 case "$use64bitint" in
4715 "$define"|true|[yY]*)
4716 : Look for a hint-file generated 'call-back-unit'. If the
4717 : user has specified that a 64-bit perl is to be built,
4718 : we may need to set or change some other defaults.
4719 if $test -f use64bitint.cbu; then
4720 echo "Your platform has some specific hints for 64-bit integers, using them..."
4724 4) case "$archname64" in
4725 '') archname64=64int ;;
4732 case "$use64bitall" in
4733 "$define"|true|[yY]*)
4734 : Look for a hint-file generated 'call-back-unit'. If the
4735 : user has specified that a maximally 64-bit perl is to be built,
4736 : we may need to set or change some other defaults.
4737 if $test -f use64bitall.cbu; then
4738 echo "Your platform has some specific hints for 64-bit builds, using them..."
4742 4) case "$archname64" in
4743 ''|64int) archname64=64all ;;
4750 : determine the architecture name
4752 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4753 tarch=`arch`"-$osname"
4754 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4755 if uname -m > tmparch 2>&1 ; then
4756 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4757 -e 's/$/'"-$osname/" tmparch`
4765 case "$myarchname" in
4768 echo "(Your architecture name used to be $myarchname.)"
4775 *) dflt="$archname";;
4777 rp='What is your architecture name'
4780 case "$usethreads" in
4782 echo "Threads selected." >&4
4784 *-thread*) echo "...and architecture name already has -thread." >&4
4786 *) archname="$archname-thread"
4787 echo "...setting architecture name to $archname." >&4
4792 case "$usemultiplicity" in
4794 echo "Multiplicity selected." >&4
4796 *-multi*) echo "...and architecture name already has -multi." >&4
4798 *) archname="$archname-multi"
4799 echo "...setting architecture name to $archname." >&4
4804 case "$use64bitint" in
4806 case "$archname64" in
4811 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4813 *) archname="$archname-$archname64"
4814 echo "...setting architecture name to $archname." >&4
4821 : determine root of directory hierarchy where package will be installed.
4824 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4832 By default, $package will be installed in $dflt/bin, manual pages
4833 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4834 installation directories. Typically this is something like /usr/local.
4835 If you wish to have binaries under /usr/bin but other parts of the
4836 installation under /usr/local, that's ok: you will be prompted
4837 separately for each of the installation directories, the prefix being
4838 only used to set the defaults.
4842 rp='Installation prefix to use?'
4850 *) oldprefix="$prefix";;
4860 $define|true) afs=true ;;
4861 $undef|false) afs=false ;;
4862 *) if test -d /afs; then
4870 echo "AFS may be running... I'll be extra cautious then..." >&4
4872 echo "AFS does not seem to be running..." >&4
4875 : determine installation prefix for where package is to be installed.
4879 Since you are running AFS, I need to distinguish the directory in which
4880 files will reside from the directory in which they are installed (and from
4881 which they are presumably copied to the former directory by occult means).
4884 case "$installprefix" in
4885 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4886 *) dflt="$installprefix";;
4891 In some special cases, particularly when building $package for distribution,
4892 it is convenient to distinguish between the directory in which files should
4893 be installed from the directory ($prefix) in which they
4894 will eventually reside. For most users, these two directories are the same.
4897 case "$installprefix" in
4899 *) dflt=$installprefix;;
4903 rp='What installation prefix should I use for installing files?'
4905 installprefix="$ans"
4906 installprefixexp="$ansexp"
4908 : set the prefixit variable, to compute a suitable default value
4909 prefixit='case "$3" in
4911 case "$oldprefix" in
4912 "") eval "$1=\"\$$2\"";;
4919 ""|" ") eval "$1=\"\$$2\"";;
4925 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4927 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4928 /*-$oldprefix/*|\~*-$oldprefix/*)
4929 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4930 *) eval "$1=\"\$$2\"";;
4935 : get the patchlevel
4937 echo "Getting the current patchlevel..." >&4
4938 if $test -r $rsrc/patchlevel.h;then
4939 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4940 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4941 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4942 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4943 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4944 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4953 $echo $n "(You have $package revision $revision" $c
4954 $echo $n " patchlevel $patchlevel" $c
4955 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4959 : XXX Should be a Configure test for double-dots in filenames.
4960 version=`echo $revision $patchlevel $subversion | \
4961 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4962 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4963 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4966 version=`echo $revision $patchlevel $subversion | \
4967 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4968 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4969 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4972 : Special case the 5.005_xx maintenance series, which used 5.005
4973 : without any subversion label as a subdirectory in $sitelib
4974 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4975 api_versionstring='5.005'
4978 : determine installation style
4979 : For now, try to deduce it from prefix unless it is already set.
4980 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4981 case "$installstyle" in
4982 '') case "$prefix" in
4983 *perl*) dflt='lib';;
4984 *) dflt='lib/perl5' ;;
4987 *) dflt="$installstyle" ;;
4989 : Probably not worth prompting for this since we prompt for all
4990 : the directories individually, and the prompt would be too long and
4994 : determine where private library files go
4995 : Usual default is /usr/local/lib/perl5/$version.
4996 : Also allow things like /opt/perl/lib/$version, since
4997 : /opt/perl/lib/perl5... would be redundant.
4998 : The default "style" setting is made in installstyle.U
4999 case "$installstyle" in
5000 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5001 *) set dflt privlib lib/$version ;;
5006 There are some auxiliary files for $package that need to be put into a
5007 private library directory that is accessible by everyone.
5011 rp='Pathname where the private library files will reside?'
5014 privlibexp="$ansexp"
5015 : Change installation prefix, if necessary.
5016 if $test X"$prefix" != X"$installprefix"; then
5017 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5019 installprivlib="$privlibexp"
5022 : set the prefixup variable, to restore leading tilda escape
5023 prefixup='case "$prefixexp" in
5025 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5028 : determine where public architecture dependent libraries go
5031 : privlib default is /usr/local/lib/$package/$version
5032 : archlib default is /usr/local/lib/$package/$version/$archname
5033 : privlib may have an optional trailing /share.
5034 tdflt=`echo $privlib | $sed 's,/share$,,'`
5035 tdflt=$tdflt/$archname
5044 $spackage contains architecture-dependent library files. If you are
5045 sharing libraries in a heterogeneous environment, you might store
5046 these files in a separate location. Otherwise, you can just include
5047 them with the rest of the public library files.
5051 rp='Where do you want to put the public architecture-dependent libraries?'
5054 archlibexp="$ansexp"
5055 if $test X"$archlib" = X"$privlib"; then
5060 : Change installation prefix, if necessary.
5061 if $test X"$prefix" != X"$installprefix"; then
5062 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5064 installarchlib="$archlibexp"
5068 : Binary compatibility with 5.005 is not possible for builds
5069 : with advanced features
5070 case "$usethreads$usemultiplicity" in
5072 bincompat5005="$undef"
5073 d_bincompat5005="$undef"
5077 This version of Perl can be compiled for binary compatibility with 5.005.
5078 If you decide to do so, you will be able to continue using most of the
5079 extensions that were compiled for Perl 5.005.
5082 case "$bincompat5005$d_bincompat5005" in
5083 *"$undef"*) dflt=n ;;
5086 rp='Binary compatibility with Perl 5.005?'
5089 y*) val="$define" ;;
5094 case "$d_bincompat5005" in
5096 bincompat5005="$define"
5098 *) bincompat5005="$undef"
5099 d_bincompat5005="$undef"
5106 : see if setuid scripts can be secure
5109 Some kernels have a bug that prevents setuid #! scripts from being
5110 secure. Some sites have disabled setuid #! scripts because of this.
5112 First let's decide if your kernel supports secure setuid #! scripts.
5113 (If setuid #! scripts would be secure but have been disabled anyway,
5114 don't say that they are secure if asked.)
5119 if $test -d /dev/fd; then
5120 echo "#!$ls" >reflect
5121 chmod +x,u+s reflect
5122 ./reflect >flect 2>&1
5123 if $contains "/dev/fd" flect >/dev/null; then
5124 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5128 If you are not sure if they are secure, I can check but I'll need a
5129 username and password different from the one you are using right now.
5130 If you don't have such a username or don't want me to test, simply
5134 rp='Other username to test security of setuid scripts with?'
5139 case "$d_suidsafe" in
5140 '') echo "I'll assume setuid scripts are *not* secure." >&4
5143 echo "Well, the $hint value is *not* secure." >&4
5145 *) echo "Well, the $hint value *is* secure." >&4
5150 $rm -f reflect flect
5151 echo "#!$ls" >reflect
5152 chmod +x,u+s reflect
5155 echo '"su" will (probably) prompt you for '"$ans's password."
5156 su $ans -c './reflect >flect'
5157 if $contains "/dev/fd" flect >/dev/null; then
5158 echo "Okay, it looks like setuid scripts are secure." >&4
5161 echo "I don't think setuid scripts are secure." >&4
5166 rp='Does your kernel have *secure* setuid scripts?'
5169 [yY]*) val="$define";;
5174 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5175 echo "(That's for file descriptors, not floppy disks.)"
5181 $rm -f reflect flect
5183 : now see if they want to do setuid emulation
5186 case "$d_suidsafe" in
5189 echo "No need to emulate SUID scripts since they are secure here." >& 4
5193 Some systems have disabled setuid scripts, especially systems where
5194 setuid scripts cannot be secure. On systems where setuid scripts have
5195 been disabled, the setuid/setgid bits on scripts are currently
5196 useless. It is possible for $package to detect those bits and emulate
5197 setuid/setgid in a secure fashion. This emulation will only work if
5198 setuid scripts have been disabled in your kernel.
5202 "$define") dflt=y ;;
5205 rp="Do you want to do setuid/setgid emulation?"
5208 [yY]*) val="$define";;
5216 : determine filename position in cpp output
5218 echo "Computing filename position in cpp output for #include directives..." >&4
5219 echo '#include <stdio.h>' > foo.c
5222 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5223 $grep '^[ ]*#.*stdio\.h' | \
5224 while read cline; do
5227 while $test \$# -gt 0; do
5228 if $test -r \`echo \$1 | $tr -d '"'\`; then
5233 pos=\`expr \$pos + 1\`
5245 *) pos="${fieldn}th";;
5247 echo "Your cpp writes the filename in the $pos field of the line."
5249 : locate header file
5254 for usrincdir in $usrinc
5256 if test -f \$usrincdir/\$wanted; then
5257 echo "\$usrincdir/\$wanted"
5261 awkprg='{ print \$$fieldn }'
5262 echo "#include <\$wanted>" > foo\$\$.c
5263 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5264 $grep "^[ ]*#.*\$wanted" | \
5265 while read cline; do
5266 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5268 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5269 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5274 # status = 0: grep returned 0 lines, case statement not executed
5275 # status = 1: headerfile found
5276 # status = 2: while loop executed, no headerfile found
5280 if test \$status -eq 1; then
5287 : define an alternate in-header-list? function
5288 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5289 cont=true; xxf="echo \"<\$1> found.\" >&4";
5290 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5291 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5293 case $# in 4) instead=instead;; *) instead="at last";; esac;
5294 while $test "$cont"; do
5296 var=$2; eval "was=\$$2";
5297 if $test "$xxx" && $test -r "$xxx";
5299 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5302 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5303 set $yyy; shift; shift; yyy=$@;
5304 case $# in 0) cont="";;
5305 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5306 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5307 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5308 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5312 do set $yyy; var=$2; eval "was=\$$2";
5313 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5314 set $yyy; shift; shift; yyy=$@;
5317 : see if this is a malloc.h system
5318 set malloc.h i_malloc
5321 : see if stdlib is available
5322 set stdlib.h i_stdlib
5325 : determine which malloc to compile in
5327 case "$usemymalloc" in
5328 ''|[yY]*|true|$define) dflt='y' ;;
5331 rp="Do you wish to attempt to use the malloc that comes with $package?"
5337 mallocsrc='malloc.c'
5338 mallocobj="malloc$_o"
5339 d_mymalloc="$define"
5342 : Remove malloc from list of libraries to use
5343 echo "Removing unneeded -lmalloc from library list" >&4
5344 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5347 echo "libs = $libs" >&4
5359 : compute the return types of malloc and free
5361 $cat >malloc.c <<END
5365 #include <sys/types.h>
5379 case "$malloctype" in
5381 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5388 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5392 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5399 echo "Your system uses $freetype free(), it would seem." >&4
5403 After $package is installed, you may wish to install various
5404 add-on modules and utilities. Typically, these add-ons will
5405 be installed under $prefix with the rest
5406 of this package. However, you may wish to install such add-ons
5407 elsewhere under a different prefix.
5409 If you do not wish to put everything under a single prefix, that's
5410 ok. You will be prompted for the individual locations; this siteprefix
5411 is only used to suggest the defaults.
5413 The default should be fine for most people.
5417 rp='Installation prefix to use for add-on modules and utilities?'
5418 : XXX Here might be another good place for an installstyle setting.
5419 case "$siteprefix" in
5421 *) dflt=$siteprefix ;;
5424 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5426 case "$siteprefix" in
5430 *) oldsiteprefix="$prefix";;
5435 siteprefixexp="$ansexp"
5437 : determine where site specific libraries go.
5438 : Usual default is /usr/local/lib/perl5/site_perl/$version
5439 : The default "style" setting is made in installstyle.U
5440 : XXX No longer works with Prefixit stuff.
5441 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5443 '') case "$installstyle" in
5444 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5445 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5453 The installation process will create a directory for
5454 site-specific extensions and modules. Most users find it convenient
5455 to place all site-specific files in this directory rather than in the
5456 main distribution directory.
5460 rp='Pathname for the site-specific library files?'
5463 sitelibexp="$ansexp"
5464 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5465 : Change installation prefix, if necessary.
5466 if $test X"$prefix" != X"$installprefix"; then
5467 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5469 installsitelib="$sitelibexp"
5472 : determine where site specific architecture-dependent libraries go.
5473 : sitelib default is /usr/local/lib/perl5/site_perl/$version
5474 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5475 : sitelib may have an optional trailing /share.
5477 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
5478 dflt="$dflt/$archname"
5483 set sitearch sitearch none
5487 The installation process will also create a directory for
5488 architecture-dependent site-specific extensions and modules.
5492 rp='Pathname for the site-specific architecture-dependent library files?'
5495 sitearchexp="$ansexp"
5496 : Change installation prefix, if necessary.
5497 if $test X"$prefix" != X"$installprefix"; then
5498 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5500 installsitearch="$sitearchexp"
5505 The installation process will also create a directory for
5506 vendor-supplied add-ons. Vendors who supply perl with their system
5507 may find it convenient to place all vendor-supplied files in this
5508 directory rather than in the main distribution directory. This will
5509 ease upgrades between binary-compatible maintenance versions of perl.
5511 Of course you may also use these directories in whatever way you see
5512 fit. For example, you might use them to access modules shared over a
5513 company-wide network.
5515 The default answer should be fine for most people.
5516 This causes further questions about vendor add-ons to be skipped
5517 and no vendor-specific directories will be configured for perl.
5520 rp='Do you want to configure vendor-specific add-on directories?'
5521 case "$usevendorprefix" in
5522 define|true|[yY]*) dflt=y ;;
5523 *) : User may have set vendorprefix directly on Configure command line.
5524 case "$vendorprefix" in
5533 rp='Installation prefix to use for vendor-supplied add-ons?'
5534 case "$vendorprefix" in
5536 *) dflt=$vendorprefix ;;
5539 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5541 case "$vendorprefix" in
5545 *) oldvendorprefix="$prefix";;
5549 usevendorprefix="$define"
5551 vendorprefixexp="$ansexp"
5553 *) usevendorprefix="$undef"
5559 case "$vendorprefix" in
5560 '') d_vendorlib="$undef"
5564 *) d_vendorlib="$define"
5565 : determine where vendor-supplied modules go.
5566 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5567 case "$vendorlib" in
5569 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5570 case "$installstyle" in
5571 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5572 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5575 *) dflt="$vendorlib"
5579 rp='Pathname for the vendor-supplied library files?'
5582 vendorlibexp="$ansexp"
5585 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
5586 : Change installation prefix, if necessary.
5587 if $test X"$prefix" != X"$installprefix"; then
5588 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5590 installvendorlib="$vendorlibexp"
5593 case "$vendorprefix" in
5594 '') d_vendorarch="$undef"
5598 *) d_vendorarch="$define"
5599 : determine where vendor-supplied architecture-dependent libraries go.
5600 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
5601 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5602 : vendorlib may have an optional trailing /share.
5603 case "$vendorarch" in
5604 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
5605 dflt="$dflt/$archname"
5607 *) dflt="$vendorarch" ;;
5610 rp='Pathname for vendor-supplied architecture-dependent files?'
5613 vendorarchexp="$ansexp"
5616 : Change installation prefix, if necessary.
5617 if $test X"$prefix" != X"$installprefix"; then
5618 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5620 installvendorarch="$vendorarchexp"
5623 : Final catch-all directories to search
5626 Lastly, you can have perl look in other directories for extensions and
5627 modules in addition to those already specified.
5628 These directories will be searched after
5632 test X"$vendorlib" != "X" && echo ' ' $vendorlib
5633 test X"$vendorarch" != "X" && echo ' ' $vendorarch
5635 case "$otherlibdirs" in
5636 ''|' ') dflt='none' ;;
5637 *) dflt="$otherlibdirs" ;;
5640 Enter a colon-separated set of extra paths to include in perl's @INC
5641 search path, or enter 'none' for no extra paths.
5645 rp='Colon-separated list of additional directories for perl to search?'
5648 ' '|''|none) otherlibdirs=' ' ;;
5649 *) otherlibdirs="$ans" ;;
5651 case "$otherlibdirs" in
5655 set d_perl_otherlibdirs
5658 : Cruising for prototypes
5660 echo "Checking out function prototypes..." >&4
5661 $cat >prototype.c <<'EOCP'
5662 int main(int argc, char *argv[]) {
5665 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5666 echo "Your C compiler appears to support function prototypes."
5669 echo "Your C compiler doesn't seem to understand function prototypes."
5676 case "$prototype" in
5678 *) ansi2knr='ansi2knr'
5683 This version of $package can only be compiled by a compiler that
5684 understands function prototypes. Unfortunately, your C compiler
5686 doesn't seem to understand them. Sorry about that.
5688 If GNU cc is available for your system, perhaps you could try that instead.
5690 Eventually, we hope to support building Perl with pre-ANSI compilers.
5691 If you would like to help in that effort, please contact <perlbug@perl.org>.
5693 Aborting Configure now.
5699 : determine where public executables go
5704 rp='Pathname where the public executables will reside?'
5706 if $test "X$ansexp" != "X$binexp"; then
5711 : Change installation prefix, if necessary.
5712 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5713 if $test X"$prefix" != X"$installprefix"; then
5714 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5716 installbin="$binexp"
5719 : Find perl5.005 or later.
5720 echo "Looking for a previously installed perl5.005 or later... "
5722 '') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5723 : Check if this perl is recent and can load a simple module
5724 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5727 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5737 '') echo "None found. That's ok.";;
5738 *) echo "Using $perl5." ;;
5741 : Determine list of previous versions to include in @INC
5742 $cat > getverlist <<EOPL
5745 \$api_versionstring = "$api_versionstring";
5746 \$version = "$version";
5747 \$stem = "$sitelib_stem";
5748 \$archname = "$archname";
5750 $cat >> getverlist <<'EOPL'
5751 # Can't have leading @ because metaconfig interprets it as a command!
5752 ;@inc_version_list=();
5753 # XXX Redo to do opendir/readdir?
5756 ;@candidates = glob("5.*");
5762 # XXX ToDo: These comparisons must be reworked when two-digit
5763 # subversions come along, so that 5.7.10 compares as greater than
5764 # 5.7.3! By that time, hope that 5.6.x is sufficiently
5765 # widespread that we can use the built-in version vectors rather
5766 # than reinventing them here. For 5.6.0, however, we must
5767 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
5768 foreach $d (@candidates) {
5769 if ($d lt $version) {
5770 if ($d ge $api_versionstring) {
5771 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
5773 elsif ($d ge "5.005") {
5774 unshift(@inc_version_list, grep { -d } $d);
5778 # Skip newer version. I.e. don't look in
5779 # 5.7.0 if we're installing 5.6.1.
5783 if (@inc_version_list) {
5784 print join(' ', @inc_version_list);
5787 # Blank space to preserve value for next Configure run.
5792 case "$inc_version_list" in
5793 '') if test -x "$perl5"; then
5794 dflt=`$perl5 getverlist`
5799 $undef) dflt='none' ;;
5800 *) dflt="$inc_version_list" ;;
5803 ''|' ') dflt=none ;;
5806 5.005) case "$bincompat5005" in
5807 $define|true|[yY]*) ;;
5814 In order to ease the process of upgrading, this version of perl
5815 can be configured to use modules built and installed with earlier
5816 versions of perl that were installed under $prefix. Specify here
5817 the list of earlier versions that this version of perl should check.
5818 If Configure detected no earlier versions of perl installed under
5819 $prefix, then the list will be empty. Answer 'none' to tell perl
5820 to not search earlier versions.
5822 The default should almost always be sensible, so if you're not sure,
5823 just accept the default.
5826 rp='List of earlier versions to include in @INC?'
5829 [Nn]one|''|' ') inc_version_list=' ' ;;
5830 *) inc_version_list="$ans" ;;
5832 case "$inc_version_list" in
5834 inc_version_list_init='0';;
5835 *) inc_version_list_init=`echo $inc_version_list |
5836 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5841 : determine whether to install perl also as /usr/bin/perl
5844 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5846 Many scripts expect perl to be installed as /usr/bin/perl.
5847 I can install the perl you are about to compile also as /usr/bin/perl
5848 (in addition to $installbin/perl).
5850 case "$installusrbinperl" in
5851 "$undef"|[nN]*) dflt='n';;
5854 rp="Do you want to install perl as /usr/bin/perl?"
5857 [yY]*) val="$define";;
5863 set installusrbinperl
5867 echo "Checking for GNU C Library..." >&4
5868 cat >gnulibc.c <<EOM
5880 if eval $compile_ok && ./gnulibc; then
5882 echo "You are using the GNU C Library"
5885 echo "You are not using the GNU C Library"
5891 : see if nm is to be used to determine whether a symbol is defined or not
5895 case "$d_gnulibc" in
5898 echo "nm probably won't work on the GNU C Library." >&4
5904 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5906 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5907 echo "'nm' won't be sufficient on this sytem." >&4
5913 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5914 if $test $dflt -gt 20; then
5924 true|$define) dflt=y;;
5931 I can use $nm to extract the symbols from your C libraries. This
5932 is a time consuming task which may generate huge output on the disk (up
5933 to 3 megabytes) but that should make the symbols extraction faster. The
5934 alternative is to skip the 'nm' extraction part and to compile a small
5935 test program instead to determine whether each symbol is present. If
5936 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5937 this may be the best solution.
5939 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5942 rp="Shall I use $nm to extract C symbols from the libraries?"
5945 [Nn]*) usenm=false;;
5954 : nm options which may be necessary
5956 '') if $test -f /mach_boot; then
5958 elif $test -d /usr/ccs/lib; then
5959 nm_opt='-p' # Solaris (and SunOS?)
5960 elif $test -f /dgux; then
5962 elif $test -f /lib64/rld; then
5963 nm_opt='-p' # 64-bit Irix
5969 : nm options which may be necessary for shared libraries but illegal
5970 : for archive libraries. Thank you, Linux.
5971 case "$nm_so_opt" in
5972 '') case "$myuname" in
5974 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5975 nm_so_opt='--dynamic'
5984 : get list of predefined functions in a handy place
5989 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5996 *) for thislib in $libs; do
5999 : Handle C library specially below.
6002 thislib=`echo $thislib | $sed -e 's/^-l//'`
6003 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
6005 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
6007 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
6009 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
6011 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
6013 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
6015 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
6020 libnames="$libnames $try"
6022 *) libnames="$libnames $thislib" ;;
6031 for xxx in $libpth; do
6032 $test -r $1 || set $xxx/libc.$so
6033 : The messy sed command sorts on library version numbers.
6035 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
6036 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
6038 s/[0-9][0-9]*/0000&/g
6039 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
6042 sort | $sed -e 's/^.* //'`
6045 $test -r $1 || set /usr/ccs/lib/libc.$so
6046 $test -r $1 || set /lib/libsys_s$_a
6052 if $test -r "$1"; then
6053 echo "Your (shared) C library seems to be in $1."
6055 elif $test -r /lib/libc && $test -r /lib/clib; then
6056 echo "Your C library seems to be in both /lib/clib and /lib/libc."
6058 libc='/lib/clib /lib/libc'
6059 if $test -r /lib/syslib; then
6060 echo "(Your math library is in /lib/syslib.)"
6061 libc="$libc /lib/syslib"
6063 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6064 echo "Your C library seems to be in $libc, as you said before."
6065 elif $test -r $incpath/usr/lib/libc$_a; then
6066 libc=$incpath/usr/lib/libc$_a;
6067 echo "Your C library seems to be in $libc. That's fine."
6068 elif $test -r /lib/libc$_a; then
6070 echo "Your C library seems to be in $libc. You're normal."
6072 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
6074 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
6075 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
6076 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
6078 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
6080 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
6083 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
6085 if $test -r "$tans"; then
6086 echo "Your C library seems to be in $tans, of all places."
6092 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6096 If the guess above is wrong (which it might be if you're using a strange
6097 compiler, or your machine supports multiple models), you can override it here.
6102 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
6104 I can't seem to find your C library. I've looked in the following places:
6107 $sed 's/^/ /' libpath
6110 None of these seems to contain your C library. I need to get its name...
6115 rp='Where is your C library?'
6120 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
6121 set X `cat libnames`
6124 case $# in 1) xxx=file; esac
6125 echo "Extracting names from the following $xxx for later perusal:" >&4
6127 $sed 's/^/ /' libnames >&4
6129 $echo $n "This may take a while...$c" >&4
6133 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
6134 *) $nm $nm_opt $file 2>/dev/null;;
6139 $grep fprintf libc.tmp > libc.ptf
6140 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
6141 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
6143 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
6145 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6147 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
6149 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6151 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
6153 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6155 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
6157 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6159 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
6161 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6163 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
6165 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6167 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
6168 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
6170 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6172 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
6174 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6176 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
6178 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6180 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
6182 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6184 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
6186 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6188 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
6190 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6192 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
6194 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6196 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
6198 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6201 $nm -p $* 2>/dev/null >libc.tmp
6202 $grep fprintf libc.tmp > libc.ptf
6203 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
6204 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
6210 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
6212 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
6213 for thisname in $libnames $libc; do
6214 $ar t $thisname >>libc.tmp
6216 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
6218 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
6219 # Repeat libc to extract forwarders to DLL entries too
6220 for thisname in $libnames $libc; do
6221 $ar tv $thisname >>libc.tmp
6222 # Revision 50 of EMX has bug in $ar.
6223 # it will not extract forwarders to DLL entries
6224 # Use emximp which will extract exactly them.
6225 emximp -o tmp.imp $thisname \
6227 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
6228 < tmp.imp >>libc.tmp
6231 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6234 echo "$ar didn't seem to work right." >&4
6235 echo "Maybe this is a Cray...trying bld instead..." >&4
6236 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
6238 for thisname in $libnames; do
6240 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6241 $ar t $thisname >>libc.tmp
6245 echo "That didn't work either. Giving up." >&4
6252 if $test -f /lib/syscalls.exp; then
6254 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6255 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
6259 $rm -f libnames libpath
6261 : see if dld is available
6265 : is a C symbol defined?
6268 -v) tf=libc.tmp; tc=""; tdc="";;
6269 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6270 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6273 case "$reuseval-$4" in
6275 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6281 if $contains $tlook $tf >/dev/null 2>&1;
6286 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6287 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6295 $define) tval=true;;
6301 : define an is-in-libc? function
6302 inlibc='echo " "; td=$define; tu=$undef;
6303 sym=$1; var=$2; eval "was=\$$2";
6305 case "$reuseval$was" in
6315 echo "$sym() found." >&4;
6316 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6318 echo "$sym() NOT found." >&4;
6319 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6323 $define) echo "$sym() found." >&4;;
6324 *) echo "$sym() NOT found." >&4;;
6328 : see if dlopen exists
6335 : determine which dynamic loading, if any, to compile in
6337 dldir="ext/DynaLoader"
6350 $define) dflt='y' ;;
6353 $define) dflt='y' ;;
6355 : Does a dl_xxx.xs file exist for this operating system
6356 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6359 rp="Do you wish to use dynamic loading?"
6366 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6367 dflt="$dldir/dl_${osname}.xs"
6368 elif $test "$d_dlopen" = "$define" ; then
6369 dflt="$dldir/dl_dlopen.xs"
6370 elif $test "$i_dld" = "$define" ; then
6371 dflt="$dldir/dl_dld.xs"
6376 *) dflt="$dldir/$dlsrc"
6379 echo "The following dynamic loading files are available:"
6380 : Can not go over to $dldir because getfile has path hard-coded in.
6381 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6382 rp="Source file to use for dynamic loading"
6388 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6392 Some systems may require passing special flags to $cc -c to
6393 compile modules that will be used to create a shared library.
6394 To use no flags, say "none".
6397 case "$cccdlflags" in
6398 '') case "$gccversion" in
6399 '') case "$osname" in
6401 next) dflt='none' ;;
6402 irix*) dflt='-KPIC' ;;
6403 svr4*|esix*|solaris) dflt='-KPIC' ;;
6404 sunos) dflt='-pic' ;;
6408 *) case "$osname" in
6409 svr4*|esix*|solaris) dflt='-fPIC' ;;
6414 *) dflt="$cccdlflags" ;;
6416 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6419 none) cccdlflags=' ' ;;
6420 *) cccdlflags="$ans" ;;
6425 Some systems use ld to create libraries that can be dynamically loaded,
6426 while other systems (such as those using ELF) use $cc.
6430 '') $cat >try.c <<'EOM'
6431 /* Test for whether ELF binaries are produced */
6436 int i = open("a.out",O_RDONLY);
6439 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6440 exit(0); /* succeed (yes, it's ELF) */
6445 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6447 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6451 echo "I'll use ld to build dynamic libraries."
6460 rp="What command should be used to create dynamic libraries?"
6466 Some systems may require passing special flags to $ld to create a
6467 library that can be dynamically loaded. If your ld flags include
6468 -L/other/path options to locate libraries outside your loader's normal
6469 search path, you may need to specify those -L options here as well. To
6470 use no flags, say "none".
6473 case "$lddlflags" in
6474 '') case "$osname" in
6475 beos) dflt='-nostart' ;;
6477 case "$gccversion" in
6478 '') dflt="$dflt +vnocompatwarnings" ;;
6481 linux|irix*) dflt='-shared' ;;
6482 next) dflt='none' ;;
6483 solaris) dflt='-G' ;;
6484 sunos) dflt='-assert nodefinitions' ;;
6485 svr4*|esix*) dflt="-G $ldflags" ;;
6489 *) dflt="$lddlflags" ;;
6492 : Try to guess additional flags to pick up local libraries.
6493 : Be careful not to append to a plain 'none'
6497 for thisflag in $ldflags; do
6502 *) dflt="$dflt $thisflag" ;;
6509 ''|' ') dflt='none' ;;
6512 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6515 none) lddlflags=' ' ;;
6516 *) lddlflags="$ans" ;;
6521 Some systems may require passing special flags to $cc to indicate that
6522 the resulting executable will use dynamic linking. To use no flags,
6526 case "$ccdlflags" in
6527 '') case "$osname" in
6528 hpux) dflt='-Wl,-E' ;;
6529 linux) dflt='-rdynamic' ;;
6530 next) dflt='none' ;;
6531 sunos) dflt='none' ;;
6535 *) dflt="$ccdlflags" ;;
6537 rp="Any special flags to pass to $cc to use dynamic linking?"
6540 none) ccdlflags=' ' ;;
6541 *) ccdlflags="$ans" ;;
6555 # No dynamic loading being used, so don't bother even to prompt.
6558 *) case "$useshrplib" in
6559 '') case "$osname" in
6560 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6562 also='Building a shared libperl is required for dynamic loading to work on your system.'
6567 also='Building a shared libperl is needed for MAB support.'
6585 The perl executable is normally obtained by linking perlmain.c with
6586 libperl${_a}, any static extensions (usually just DynaLoader), and
6587 any other libraries needed on this system (such as -lm, etc.). Since
6588 your system supports dynamic loading, it is probably possible to build
6589 a shared libperl.$so. If you will have more than one executable linked
6590 to libperl.$so, this will significantly reduce the size of each
6591 executable, but it may have a noticeable affect on performance. The
6592 default is probably sensible for your system.
6596 rp="Build a shared libperl.$so (y/n)"
6600 useshrplib='true' ;;
6601 *) useshrplib='false' ;;
6606 case "$useshrplib" in
6610 # Figure out a good name for libperl.so. Since it gets stored in
6611 # a version-specific architecture-dependent library, the version
6612 # number isn't really that important, except for making cc/ld happy.
6614 # A name such as libperl.so.3.1
6615 majmin="libperl.$so.$patchlevel.$subversion"
6616 # A name such as libperl.so.301
6617 majonly=`echo $patchlevel $subversion |
6618 $awk '{printf "%d%02d", $1, $2}'`
6619 majonly=libperl.$so.$majonly
6620 # I'd prefer to keep the os-specific stuff here to a minimum, and
6621 # rely on figuring it out from the naming of libc.
6622 case "${osname}${osvers}" in
6625 # XXX How handle the --version stuff for MAB?
6627 linux*) # ld won't link with a bare -lperl otherwise.
6630 cygwin*) # include version
6631 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6633 *) # Try to guess based on whether libc has major.minor.
6635 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6636 *libc.$so.[0-9]*) dflt=$majonly ;;
6637 *) dflt=libperl.$so ;;
6647 I need to select a good name for the shared libperl. If your system uses
6648 library names with major and minor numbers, then you might want something
6649 like $majmin. Alternatively, if your system uses a single version
6650 number for shared libraries, then you might want to use $majonly.
6651 Or, your system might be quite happy with a simple libperl.$so.
6653 Since the shared libperl will get installed into a version-specific
6654 architecture-dependent directory, the version number of the shared perl
6655 library probably isn't important, so the default should be o.k.
6658 rp='What name do you want to give to the shared libperl?'
6661 echo "Ok, I'll use $libperl"
6664 libperl="libperl${_a}"
6668 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6672 WARNING: Use of the shrpdir variable for the installation location of
6673 the shared $libperl is not supported. It was never documented and
6674 will not work in this version. Let me (perlbug@perl.com)
6675 know of any problems this may cause.
6681 But your current setting of $shrpdir is
6682 the default anyway, so it's harmless.
6687 Further, your current attempted setting of $shrpdir
6688 conflicts with the value of $archlibexp/CORE
6689 that installperl will use.
6696 # How will the perl executable find the installed shared $libperl?
6697 # Add $xxx to ccdlflags.
6698 # If we can't figure out a command-line option, use $shrpenv to
6699 # set env LD_RUN_PATH. The main perl makefile uses this.
6700 shrpdir=$archlibexp/CORE
6703 if "$useshrplib"; then
6706 # We'll set it in Makefile.SH...
6712 xxx="-Wl,-R$shrpdir"
6714 linux|irix*|dec_osf)
6715 xxx="-Wl,-rpath,$shrpdir"
6718 # next doesn't like the default...
6721 # beos doesn't like the default, either.
6724 # hpux doesn't like the default, either.
6725 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6728 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6734 # Only add $xxx if it isn't already in ccdlflags.
6735 case " $ccdlflags " in
6737 *) ccdlflags="$ccdlflags $xxx"
6740 Adding $xxx to the flags
6741 passed to $ld so that the perl executable will find the
6742 installed shared $libperl.
6750 # Fix ccdlflags in AIX for building external extensions.
6751 # (For building Perl itself bare -bE:perl.exp is needed,
6752 # Makefile.SH takes care of this.)
6754 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6756 # Respect a hint or command-line value.
6758 '') shrpenv="$tmp_shrpenv" ;;
6760 case "$ldlibpthname" in
6761 '') ldlibpthname=LD_LIBRARY_PATH ;;
6762 none) ldlibpthname='' ;;
6765 : determine where manual pages go
6766 set man1dir man1dir none
6770 $spackage has manual pages available in source form.
6774 echo "However, you don't have nroff, so they're probably useless to you."
6776 '') man1dir="none";;
6779 echo "If you don't want the manual sources installed, answer 'none'."
6784 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6785 lookpath="$lookpath $prefixexp/man/p_man/man1"
6786 lookpath="$lookpath $prefixexp/man/u_man/man1"
6787 lookpath="$lookpath $prefixexp/man/man.1"
6789 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6790 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6800 rp="Where do the main $spackage manual pages (source) go?"
6802 if $test "X$man1direxp" != "X$ansexp"; then
6806 man1direxp="$ansexp"
6812 : Change installation prefix, if necessary.
6813 if $test X"$prefix" != X"$installprefix"; then
6814 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6816 installman1dir="$man1direxp"
6819 : What suffix to use on installed man pages
6826 rp="What suffix should be used for the main $spackage man pages?"
6828 '') case "$man1dir" in
6842 *) dflt="$man1ext";;
6849 : see if we can have long filenames
6851 first=123456789abcdef
6853 if (echo hi >$first) 2>/dev/null; then
6854 if $test -f 123456789abcde; then
6855 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6858 echo 'You can have filenames longer than 14 characters.'>&4
6863 You can't have filenames longer than 14 chars.
6864 You can't even think about them!
6870 $rm -rf 123456789abcde*
6872 : determine where library module manual pages go
6873 set man3dir man3dir none
6877 $spackage has manual pages for many of the library modules.
6883 However, you don't have nroff, so they're probably useless to you.
6886 '') man3dir="none";;
6890 case "$d_flexfnam" in
6893 However, your system can't handle the long file names like File::Basename.3.
6896 '') man3dir="none";;
6900 echo "If you don't want the manual sources installed, answer 'none'."
6901 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6903 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6904 if $test -d "$privlib/man/man3"; then
6907 WARNING: Previous versions of perl installed man3 pages into
6908 $privlib/man/man3. This version will suggest a
6909 new default of $dflt.
6913 rp='Do you wish to preserve the old behavior?(y/n)'
6916 y*) dflt="$privlib/man/man3" ;;
6921 *) dflt="$man3dir" ;;
6928 rp="Where do the $package library man pages (source) go?"
6931 man3direxp="$ansexp"
6937 : Change installation prefix, if necessary.
6938 if $test X"$prefix" != X"$installprefix"; then
6939 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6941 installman3dir="$man3direxp"
6944 : What suffix to use on installed man pages
6950 rp="What suffix should be used for the $package library man pages?"
6952 '') case "$man3dir" in
6966 *) dflt="$man3ext";;
6973 : see if we have to deal with yellow pages, now NIS.
6974 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6975 if $test -f /usr/etc/nibindd; then
6977 echo "I'm fairly confident you're on a NeXT."
6979 rp='Do you get the hosts file via NetInfo?'
6988 y*) hostcat='nidump hosts .';;
6989 *) case "$hostcat" in
6990 nidump*) hostcat='';;
7000 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7008 rp='Are you getting the hosts file via yellow pages?'
7011 y*) hostcat='ypcat hosts';;
7012 *) hostcat='cat /etc/hosts';;
7018 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7021 '') test -f /etc/group && groupcat='cat /etc/group';;
7024 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7027 : now get the host name
7029 echo "Figuring out host name..." >&4
7030 case "$myhostname" in
7032 echo 'Maybe "hostname" will work...'
7033 if tans=`sh -c hostname 2>&1` ; then
7041 if $test "$cont"; then
7043 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7044 if tans=`cat /etc/systemid 2>&1` ; then
7046 phostname='cat /etc/systemid'
7047 echo "Whadyaknow. Xenix always was a bit strange..."
7050 elif $test -r /etc/systemid; then
7051 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7054 if $test "$cont"; then
7055 echo 'No, maybe "uuname -l" will work...'
7056 if tans=`sh -c 'uuname -l' 2>&1` ; then
7058 phostname='uuname -l'
7060 echo 'Strange. Maybe "uname -n" will work...'
7061 if tans=`sh -c 'uname -n' 2>&1` ; then
7063 phostname='uname -n'
7065 echo 'Oh well, maybe I can mine it out of whoami.h...'
7066 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7067 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7068 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7070 case "$myhostname" in
7071 '') echo "Does this machine have an identity crisis or something?"
7074 echo "Well, you said $myhostname before..."
7075 phostname='echo $myhostname';;
7081 : you do not want to know about this
7086 if $test "$myhostname" ; then
7088 rp='Your host name appears to be "'$myhostname'".'" Right?"
7096 : bad guess or no guess
7097 while $test "X$myhostname" = X ; do
7099 rp="Please type the (one word) name of your host:"
7104 : translate upper to lower if necessary
7105 case "$myhostname" in
7107 echo "(Normalizing case in your host name)"
7108 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7112 case "$myhostname" in
7114 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7115 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7116 echo "(Trimming domain name from host name--host name is now $myhostname)"
7118 *) case "$mydomain" in
7121 test "X$hostcat" = "Xypcat hosts" &&
7122 ypmatch "$myhostname" hosts 2>/dev/null |\
7123 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7126 test "X$hostcat" != "X" &&
7127 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7128 /[ ]$myhostname[ . ]/p" > hosts
7131 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7132 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7133 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7134 hosts | $sort | $uniq | \
7135 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7136 case `$echo X$dflt` in
7137 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
7140 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7145 tans=`./loc resolv.conf X /etc /usr/etc`
7146 if $test -f "$tans"; then
7147 echo "(Attempting domain name extraction from $tans)"
7148 dflt=.`$sed -n -e 's/ / /g' \
7149 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7150 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7152 .) dflt=.`$sed -n -e 's/ / /g' \
7153 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7154 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7161 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7162 dflt=.`sh -c domainname 2>/dev/null`
7165 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7170 .) echo "(Lost all hope -- silly guess then)"
7176 *) dflt="$mydomain";;
7180 rp="What is your domain name?"
7190 : translate upper to lower if necessary
7193 echo "(Normalizing case in your domain name)"
7194 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7198 : a little sanity check here
7199 case "$phostname" in
7202 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7203 $myhostname$mydomain|$myhostname) ;;
7205 case "$phostname" in
7207 echo "(That doesn't agree with your whoami.h file, by the way.)"
7210 echo "(That doesn't agree with your $phostname command, by the way.)"
7220 I need to get your e-mail address in Internet format if possible, i.e.
7221 something like user@host.domain. Please answer accurately since I have
7222 no easy means to double check it. The default value provided below
7223 is most probably close to reality but may not be valid from outside
7224 your organization...
7228 while test "$cont"; do
7230 '') dflt="$cf_by@$myhostname$mydomain";;
7231 *) dflt="$cf_email";;
7233 rp='What is your e-mail address?'
7239 rp='Address does not look like an Internet one. Use it anyway?'
7255 If you or somebody else will be maintaining perl at your site, please
7256 fill in the correct e-mail address here so that they may be contacted
7257 if necessary. Currently, the "perlbug" program included with perl
7258 will send mail to this address in addition to perlbug@perl.com. You may
7259 enter "none" for no administrator.
7262 case "$perladmin" in
7263 '') dflt="$cf_email";;
7264 *) dflt="$perladmin";;
7266 rp='Perl administrator e-mail address'
7270 : figure out how to guarantee perl startup
7271 case "$startperl" in
7273 case "$sharpbang" in
7277 I can use the #! construct to start perl on your system. This will
7278 make startup of perl scripts faster, but may cause problems if you
7279 want to share those scripts and perl is not in a standard place
7280 ($binexp/perl) on all your platforms. The alternative is to force
7281 a shell by starting the script with a single ':' character.
7285 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7288 none) startperl=": # use perl";;
7289 *) startperl="#!$ans"
7290 if $test 30 -lt `echo "$ans" | wc -c`; then
7293 WARNING: Some systems limit the #! command to 32 characters.
7294 If you experience difficulty running Perl scripts with #!, try
7295 installing Perl in a directory with a shorter pathname.
7301 *) startperl=": # use perl"
7306 echo "I'll use $startperl to start perl scripts."
7308 : figure best path for perl in scripts
7311 perlpath="$binexp/perl"
7312 case "$startperl" in
7317 I will use the "eval 'exec'" idiom to start Perl on your system.
7318 I can use the full path of your Perl binary for this purpose, but
7319 doing so may cause problems if you want to share those scripts and
7320 Perl is not always in a standard place ($binexp/perl).
7324 rp="What path shall I use in \"eval 'exec'\"?"
7331 case "$startperl" in
7333 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7336 : determine where public executable scripts go
7337 set scriptdir scriptdir
7339 case "$scriptdir" in
7342 : guess some guesses
7343 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7344 $test -d /usr/share/bin && dflt=/usr/share/bin
7345 $test -d /usr/local/script && dflt=/usr/local/script
7346 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7347 $test -d $prefixexp/script && dflt=$prefixexp/script
7351 *) dflt="$scriptdir"
7356 Some installations have a separate directory just for executable scripts so
7357 that they can mount it across multiple architectures but keep the scripts in
7358 one spot. You might, for example, have a subdirectory of /usr/share for this.
7359 Or you might just lump your scripts in with all your other executables.
7363 rp='Where do you keep publicly executable scripts?'
7365 if $test "X$ansexp" != "X$scriptdirexp"; then
7369 scriptdirexp="$ansexp"
7370 : Change installation prefix, if necessary.
7371 if $test X"$prefix" != X"$installprefix"; then
7372 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7374 installscript="$scriptdirexp"
7377 : determine where add-on public executables go
7379 '') dflt=$siteprefix/bin ;;
7383 rp='Pathname where the add-on public executables should be installed?'
7386 sitebinexp="$ansexp"
7387 : Change installation prefix, if necessary.
7388 if $test X"$prefix" != X"$installprefix"; then
7389 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7391 installsitebin="$sitebinexp"
7394 : see if sqrtl exists
7399 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7402 case "$uselongdouble" in
7403 $define|true|[yY]*) dflt='y';;
7408 Perl can be built to take advantage of long doubles which
7409 (if available) may give more accuracy and range for floating point numbers.
7411 If this doesn't make any sense to you, just accept the default '$dflt'.
7413 rp='Try to use long doubles if available?'
7416 y|Y) val="$define" ;;
7422 case "$uselongdouble" in
7423 true|[yY]*) uselongdouble="$define" ;;
7426 case "$uselongdouble" in
7428 : Look for a hint-file generated 'call-back-unit'. If the
7429 : user has specified that long doubles should be used,
7430 : we may need to set or change some other defaults.
7431 if $test -f uselongdouble.cbu; then
7432 echo "Your platform has some specific hints for long doubles, using them..."
7433 . ./uselongdouble.cbu
7436 (Your platform doesn't have any specific hints for long doubles.)
7442 case "$uselongdouble:$d_sqrtl" in
7446 *** You requested the use of long doubles but you do not seem to have
7447 *** the mathematic functions for long doubles. I'm disabling the use
7448 *** of long doubles.
7451 uselongdouble=$undef
7455 case "$useperlio" in
7456 $define|true|[yY]*) dflt='y';;
7461 Previous version of $package used the standard IO mechanisms as defined
7462 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7463 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7464 the default. This abstraction layer can use AT&T's sfio (if you already
7465 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7466 problems with some extension modules. Using PerlIO with stdio is safe,
7467 but it is slower than plain stdio and therefore is not the default.
7469 If this doesn't make any sense to you, just accept the default '$dflt'.
7471 rp='Use the experimental PerlIO abstraction layer?'
7478 echo "Ok, doing things the stdio way"
7485 case "$vendorprefix" in
7486 '') d_vendorbin="$undef"
7490 *) d_vendorbin="$define"
7491 : determine where vendor-supplied executables go.
7492 case "$vendorbin" in
7493 '') dflt=$vendorprefix/bin ;;
7494 *) dflt="$vendorbin" ;;
7497 rp='Pathname for the vendor-supplied executables directory?'
7500 vendorbinexp="$ansexp"
7503 : Change installation prefix, if necessary.
7504 if $test X"$prefix" != X"$installprefix"; then
7505 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7507 installvendorbin="$vendorbinexp"
7510 : see if qgcvt exists
7514 : check for length of double
7516 case "$doublesize" in
7518 echo "Checking to see how big your double precision numbers are..." >&4
7519 $cat >try.c <<'EOCP'
7523 printf("%d\n", (int)sizeof(double));
7528 if eval $compile_ok; then
7530 echo "Your double is $doublesize bytes long."
7533 echo "(I can't seem to compile the test program. Guessing...)"
7534 rp="What is the size of a double precision number (in bytes)?"
7542 : check for long doubles
7544 echo "Checking to see if you have long double..." >&4
7545 echo 'int main() { long double x = 7.0; }' > try.c
7547 if eval $compile; then
7549 echo "You have long double."
7552 echo "You do not have long double."
7558 : check for length of long double
7559 case "${d_longdbl}${longdblsize}" in
7562 echo "Checking to see how big your long doubles are..." >&4
7563 $cat >try.c <<'EOCP'
7567 printf("%d\n", sizeof(long double));
7572 if eval $compile; then
7573 longdblsize=`./try$exe_ext`
7574 echo "Your long doubles are $longdblsize bytes long."
7578 echo "(I can't seem to compile the test program. Guessing...)" >&4
7579 rp="What is the size of a long double (in bytes)?"
7583 if $test "X$doublesize" = "X$longdblsize"; then
7584 echo "(That isn't any different from an ordinary double.)"
7592 if $test X"$d_longdbl" = X"$define"; then
7594 echo "Checking how to print long doubles..." >&4
7596 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7597 $cat >try.c <<'EOCP'
7598 #include <sys/types.h>
7602 printf("%.3f\n", d);
7606 if eval $compile; then
7610 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7611 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7612 echo "We will use %f."
7618 if $test X"$sPRIfldbl" = X; then
7619 $cat >try.c <<'EOCP'
7620 #include <sys/types.h>
7623 long double d = 123.456;
7624 printf("%.3llf\n", d);
7628 if eval $compile; then
7632 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7633 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7634 echo "We will use %llf."
7640 if $test X"$sPRIfldbl" = X; then
7641 $cat >try.c <<'EOCP'
7642 #include <sys/types.h>
7645 long double d = 123.456;
7646 printf("%.3Lf\n", d);
7650 if eval $compile; then
7654 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7655 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7656 echo "We will use %Lf."
7662 if $test X"$sPRIfldbl" = X; then
7663 $cat >try.c <<'EOCP'
7664 #include <sys/types.h>
7667 long double d = 123.456;
7668 printf("%.3lf\n", d);
7672 if eval $compile; then
7676 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7677 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7678 echo "We will use %lf."
7684 if $test X"$sPRIfldbl" = X; then
7685 echo "Cannot figure out how to print long doubles." >&4
7692 case "$sPRIfldbl" in
7693 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7694 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7696 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7697 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7701 : Check how to convert floats to strings.
7702 if test "X$d_Gconvert" = X; then
7704 echo "Checking for an efficient way to convert floats to strings."
7706 case "$uselongdouble" in
7707 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7709 case "$d_longdbl" in
7710 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7712 case "$d_PRIgldbl" in
7713 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7717 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7718 char *myname = "gconvert";
7721 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7722 char *myname = "gcvt";
7725 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7726 char *myname = "qgcvt";
7727 #define DOUBLETYPE long double
7730 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7731 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7733 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7735 char *myname = "sprintf";
7739 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7740 #define DOUBLETYPE long double
7742 #define DOUBLETYPE double
7748 #define I_STDLIB $i_stdlib
7754 checkit(expect, got)
7758 if (strcmp(expect, got)) {
7759 printf("%s oddity: Expected %s, got %s\n",
7760 myname, expect, got);
7770 /* This must be 1st test on (which?) platform */
7771 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7772 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7773 checkit("0.1", buf);
7775 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7778 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7779 checkit("1.1", buf);
7781 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7782 checkit("1.01", buf);
7784 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7785 checkit("1.001", buf);
7787 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7788 checkit("1.0001", buf);
7790 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7791 checkit("1.00001", buf);
7793 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7794 checkit("1.000001", buf);
7796 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7799 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7802 /* Some Linux gcvt's give 1.e+5 here. */
7803 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7804 checkit("100000", buf);
7806 /* Some Linux gcvt's give -1.e+5 here. */
7807 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7808 checkit("-100000", buf);
7813 case "$d_Gconvert" in
7814 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7815 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7816 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7817 *) xxx_list='gconvert gcvt sprintf' ;;
7820 case "$d_longdbl$uselongdouble$d_qgcvt" in
7821 "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7824 for xxx_convert in $xxx_list; do
7825 echo "Trying $xxx_convert..."
7827 set try -DTRY_$xxx_convert
7828 if eval $compile; then
7829 echo "$xxx_convert() found." >&4
7831 echo "I'll use $xxx_convert to convert floats into a string." >&4
7834 echo "...But $xxx_convert didn't work as I expected."
7837 echo "$xxx_convert NOT found." >&4
7841 case "$xxx_convert" in
7842 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7843 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7844 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7845 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7846 "$define$define$define")
7847 d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7848 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7854 : Initialize h_fcntl
7857 : Initialize h_sysfile
7860 : access call always available on UNIX
7864 : locate the flags for 'access()'
7868 $cat >access.c <<'EOCP'
7869 #include <sys/types.h>
7874 #include <sys/file.h>
7883 : check sys/file.h first, no particular reason here
7884 if $test `./findhdr sys/file.h` && \
7885 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7887 echo "<sys/file.h> defines the *_OK access constants." >&4
7888 elif $test `./findhdr fcntl.h` && \
7889 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7891 echo "<fcntl.h> defines the *_OK access constants." >&4
7892 elif $test `./findhdr unistd.h` && \
7893 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7894 echo "<unistd.h> defines the *_OK access constants." >&4
7896 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7902 : see if accessx exists
7903 set accessx d_accessx
7906 : see if alarm exists
7910 : see if atolf exists
7914 : see if atoll exists
7918 : Look for GNU-cc style attribute checking
7920 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7921 $cat >attrib.c <<'EOCP'
7923 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7925 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7926 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7927 echo "Your C compiler doesn't fully support __attribute__."
7930 echo "Your C compiler supports __attribute__."
7934 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7941 : see if bcmp exists
7945 : see if bcopy exists
7949 : see if this is a unistd.h system
7950 set unistd.h i_unistd
7953 : see if getpgrp exists
7954 set getpgrp d_getpgrp
7957 case "$d_getpgrp" in
7960 echo "Checking to see which flavor of getpgrp is in use..."
7963 #include <sys/types.h>
7965 # include <unistd.h>
7969 if (getuid() == 0) {
7970 printf("(I see you are running Configure as super-user...)\n");
7974 if (getpgrp(1) == 0)
7983 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7984 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7986 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7987 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7990 echo "I can't seem to compile and run the test program."
7992 xxx="a USG one, i.e. you use getpgrp()."
7994 # SVR4 systems can appear rather BSD-ish.
7997 xxx="a BSD one, i.e. you use getpgrp(pid)."
8001 xxx="probably a USG one, i.e. you use getpgrp()."
8006 echo "Assuming your getpgrp is $xxx" >&4
8015 : see if setpgrp exists
8016 set setpgrp d_setpgrp
8019 case "$d_setpgrp" in
8022 echo "Checking to see which flavor of setpgrp is in use..."
8025 #include <sys/types.h>
8027 # include <unistd.h>
8031 if (getuid() == 0) {
8032 printf("(I see you are running Configure as super-user...)\n");
8036 if (-1 == setpgrp(1, 1))
8039 if (setpgrp() != -1)
8045 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8046 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8048 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8049 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8052 echo "(I can't seem to compile and run the test program.)"
8054 xxx="a USG one, i.e. you use setpgrp()."
8056 # SVR4 systems can appear rather BSD-ish.
8059 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8063 xxx="probably a USG one, i.e. you use setpgrp()."
8068 echo "Assuming your setpgrp is $xxx" >&4
8076 : see if bzero exists
8080 : see if signal is declared as pointer to function returning int or void
8082 xxx=`./findhdr signal.h`
8083 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8084 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8085 echo "You have int (*signal())() instead of void." >&4
8087 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8088 echo "You have void (*signal())()." >&4
8090 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8091 echo "You have int (*signal())() instead of void." >&4
8093 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8094 echo "You have void (*signal())()." >&4
8097 case "$d_voidsig" in
8099 echo "I can't determine whether signal handler returns void or int..." >&4
8101 rp="What type does your signal handler return?"
8108 echo "As you already told me, signal handler returns void." >&4
8111 *) echo "As you already told me, signal handler returns int." >&4
8118 case "$d_voidsig" in
8119 "$define") signal_t="void";;
8124 : check for ability to cast large floats to 32-bit ints.
8126 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8127 if $test "$intsize" -ge 4; then
8134 #include <sys/types.h>
8136 $signal_t blech(s) int s; { exit(3); }
8143 signal(SIGFPE, blech);
8145 /* Don't let compiler optimize the test away. Store the number
8146 in a writable string for gcc to pass to sscanf under HP/UX.
8148 sprintf(str, "2147483647");
8149 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8153 /* x86 processors will probably give 0x8000 0000, which is a
8154 sign change. We don't want that. We want to mimic SPARC
8155 behavior here, which is to preserve the sign and give
8158 if (i32 != ($xxx) f)
8164 if eval $compile_ok; then
8168 echo "(I can't seem to compile the test program--assuming it can't)"
8176 echo "Nope, it can't."
8183 : check for ability to cast negative floats to unsigned
8185 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8188 #include <sys/types.h>
8190 $signal_t blech(s) int s; { exit(7); }
8191 $signal_t blech_in_list(s) int s; { exit(4); }
8192 unsigned long dummy_long(p) unsigned long p; { return p; }
8193 unsigned int dummy_int(p) unsigned int p; { return p; }
8194 unsigned short dummy_short(p) unsigned short p; { return p; }
8198 unsigned long along;
8200 unsigned short ashort;
8204 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8205 a direct f = -123. assignment. gcc-2.8.0 reportedly
8206 optimized the whole file away
8208 /* Store the number in a writable string for gcc to pass to
8211 sprintf(str, "-123");
8212 sscanf(str, "%lf", &f); /* f = -123.; */
8214 signal(SIGFPE, blech);
8215 along = (unsigned long)f;
8216 aint = (unsigned int)f;
8217 ashort = (unsigned short)f;
8218 if (along != (unsigned long)-123)
8220 if (aint != (unsigned int)-123)
8222 if (ashort != (unsigned short)-123)
8224 sprintf(str, "1073741824.");
8225 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8228 along = (unsigned long)f;
8229 if (along != 0x80000000)
8233 along = (unsigned long)f;
8234 if (along != 0x7fffffff)
8238 along = (unsigned long)f;
8239 if (along != 0x80000001)
8243 signal(SIGFPE, blech_in_list);
8244 sprintf(str, "123.");
8245 sscanf(str, "%lf", &f); /* f = 123.; */
8246 along = dummy_long((unsigned long)f);
8247 aint = dummy_int((unsigned int)f);
8248 ashort = dummy_short((unsigned short)f);
8249 if (along != (unsigned long)123)
8251 if (aint != (unsigned int)123)
8253 if (ashort != (unsigned short)123)
8260 if eval $compile_ok; then
8264 echo "(I can't seem to compile the test program--assuming it can't)"
8267 case "$castflags" in
8272 echo "Nope, it can't."
8279 : see if vprintf exists
8281 if set vprintf val -f d_vprintf; eval $csym; $val; then
8282 echo 'vprintf() found.' >&4
8284 $cat >vprintf.c <<'EOF'
8285 #include <varargs.h>
8287 int main() { xxx("foo"); }
8296 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8300 if eval $compile && ./vprintf; then
8301 echo "Your vsprintf() returns (int)." >&4
8304 echo "Your vsprintf() returns (char*)." >&4
8308 echo 'vprintf() NOT found.' >&4
8318 : see if chown exists
8322 : see if chroot exists
8326 : see if chsize exists
8330 : check for const keyword
8332 echo 'Checking to see if your C compiler knows about "const"...' >&4
8333 $cat >const.c <<'EOCP'
8334 typedef struct spug { int drokk; } spug;
8341 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8343 echo "Yup, it does."
8346 echo "Nope, it doesn't."
8351 : see if crypt exists
8353 if set crypt val -f d_crypt; eval $csym; $val; then
8354 echo 'crypt() found.' >&4
8358 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8359 if $test -z "$cryptlib"; then
8360 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8364 if $test -z "$cryptlib"; then
8365 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8369 if $test -z "$cryptlib"; then
8370 cryptlib=`./loc libcrypt$_a "" $libpth`
8374 if $test -z "$cryptlib"; then
8375 echo 'crypt() NOT found.' >&4
8384 : get csh whereabouts
8386 'csh') val="$undef" ;;
8391 : Respect a hint or command line value for full_csh.
8393 '') full_csh=$csh ;;
8396 : see if cuserid exists
8397 set cuserid d_cuserid
8400 : see if this is a limits.h system
8401 set limits.h i_limits
8404 : see if this is a float.h system
8408 : See if number of significant digits in a double precision number is known
8410 $cat >dbl_dig.c <<EOM
8420 printf("Contains DBL_DIG");
8423 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8424 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8425 echo "DBL_DIG found." >&4
8428 echo "DBL_DIG NOT found." >&4
8435 : see if difftime exists
8436 set difftime d_difftime
8439 : see if this is a dirent system
8441 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8443 echo "<dirent.h> found." >&4
8446 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8447 echo "<sys/dir.h> found." >&4
8450 xinc=`./findhdr sys/ndir.h`
8452 echo "<dirent.h> NOT found." >&4
8457 : Look for type of directory structure.
8459 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8461 case "$direntrytype" in
8464 $define) guess1='struct dirent' ;;
8465 *) guess1='struct direct' ;;
8468 *) guess1="$direntrytype"
8473 'struct dirent') guess2='struct direct' ;;
8474 *) guess2='struct dirent' ;;
8477 if $contains "$guess1" try.c >/dev/null 2>&1; then
8478 direntrytype="$guess1"
8479 echo "Your directory entries are $direntrytype." >&4
8480 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8481 direntrytype="$guess2"
8482 echo "Your directory entries seem to be $direntrytype." >&4
8484 echo "I don't recognize your system's directory entries." >&4
8485 rp="What type is used for directory entries on this system?"
8493 : see if the directory entry stores field length
8495 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8496 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8497 echo "Good, your directory entry keeps length information in d_namlen." >&4
8500 echo "Your directory entry does not know about the d_namlen field." >&4
8507 : see if dlerror exists
8510 set dlerror d_dlerror
8514 : see if dlfcn is available
8522 On a few systems, the dynamically loaded modules that perl generates and uses
8523 will need a different extension than shared libs. The default will probably
8531 rp='What is the extension of dynamically loaded modules'
8540 : Check if dlsym need a leading underscore
8546 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8547 $cat >dyna.c <<'EOM'
8556 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8558 #include <sys/types.h>
8572 int mode = RTLD_LAZY ;
8574 handle = dlopen("./dyna.$dlext", mode) ;
8575 if (handle == NULL) {
8580 symbol = dlsym(handle, "fred") ;
8581 if (symbol == NULL) {
8582 /* try putting a leading underscore */
8583 symbol = dlsym(handle, "_fred") ;
8584 if (symbol == NULL) {
8597 : Call the object file tmp-dyna.o in case dlext=o.
8598 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8599 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8600 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
8601 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8604 1) echo "Test program failed using dlopen." >&4
8605 echo "Perhaps you should not use dynamic loading." >&4;;
8606 2) echo "Test program failed using dlsym." >&4
8607 echo "Perhaps you should not use dynamic loading." >&4;;
8608 3) echo "dlsym needs a leading underscore" >&4
8610 4) echo "dlsym doesn't need a leading underscore." >&4;;
8613 echo "I can't compile and run the test program." >&4
8614 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8619 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8624 hasproto='varname=$1; func=$2; shift; shift;
8625 while $test $# -ge 2; do
8627 $define) echo "#include <$2>";;
8631 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8632 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8633 echo "$func() prototype found.";
8636 echo "$func() prototype NOT found.";
8641 $rm -f try.c tryout.c'
8643 : see if prototype for drand48 is available
8645 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8648 : see if dup2 exists
8652 : see if eaccess exists
8653 set eaccess d_eaccess
8656 : see if endgrent exists
8657 set endgrent d_endgrent
8660 : see if endhostent exists
8661 set endhostent d_endhent
8664 : see if endnetent exists
8665 set endnetent d_endnent
8668 : see if endprotoent exists
8669 set endprotoent d_endpent
8672 : see if endpwent exists
8673 set endpwent d_endpwent
8676 : see if endservent exists
8677 set endservent d_endsent
8680 : Locate the flags for 'open()'
8682 $cat >open3.c <<'EOCP'
8683 #include <sys/types.h>
8688 #include <sys/file.h>
8699 : check sys/file.h first to get FREAD on Sun
8700 if $test `./findhdr sys/file.h` && \
8701 set open3 -DI_SYS_FILE && eval $compile; then
8703 echo "<sys/file.h> defines the O_* constants..." >&4
8705 echo "and you have the 3 argument form of open()." >&4
8708 echo "but not the 3 argument form of open(). Oh, well." >&4
8711 elif $test `./findhdr fcntl.h` && \
8712 set open3 -DI_FCNTL && eval $compile; then
8714 echo "<fcntl.h> defines the O_* constants..." >&4
8716 echo "and you have the 3 argument form of open()." >&4
8719 echo "but not the 3 argument form of open(). Oh, well." >&4
8724 echo "I can't find the O_* constant definitions! You got problems." >&4
8730 : see which of string.h or strings.h is needed
8732 strings=`./findhdr string.h`
8733 if $test "$strings" && $test -r "$strings"; then
8734 echo "Using <string.h> instead of <strings.h>." >&4
8738 strings=`./findhdr strings.h`
8739 if $test "$strings" && $test -r "$strings"; then
8740 echo "Using <strings.h> instead of <string.h>." >&4
8742 echo "No string header found -- You'll surely have problems." >&4
8748 "$undef") strings=`./findhdr strings.h`;;
8749 *) strings=`./findhdr string.h`;;
8752 : check for non-blocking I/O stuff
8753 case "$h_sysfile" in
8754 true) echo "#include <sys/file.h>" > head.c;;
8757 true) echo "#include <fcntl.h>" > head.c;;
8758 *) echo "#include <sys/fcntl.h>" > head.c;;
8763 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8764 case "$o_nonblock" in
8767 $cat >>try.c <<'EOCP'
8771 printf("O_NONBLOCK\n");
8775 printf("O_NDELAY\n");
8779 printf("FNDELAY\n");
8786 if eval $compile_ok; then
8788 case "$o_nonblock" in
8789 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8790 *) echo "Seems like we can use $o_nonblock.";;
8793 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8796 *) echo "Using $hint value $o_nonblock.";;
8798 $rm -f try try.* .out core
8801 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8807 #include <sys/types.h>
8810 #define MY_O_NONBLOCK $o_nonblock
8811 #ifndef errno /* XXX need better Configure test */
8822 #include <strings.h>
8824 $signal_t blech(x) int x; { exit(3); }
8826 $cat >> try.c <<'EOCP'
8834 pipe(pd); /* Down: child -> parent */
8835 pipe(pu); /* Up: parent -> child */
8838 close(pd[1]); /* Parent reads from pd[0] */
8839 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8840 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8842 signal(SIGALRM, blech);
8844 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8846 sprintf(string, "%d\n", ret);
8847 write(2, string, strlen(string));
8850 if (errno == EAGAIN) {
8856 if (errno == EWOULDBLOCK)
8857 printf("EWOULDBLOCK\n");
8860 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8861 sleep(2); /* Give it time to close our pipe */
8863 ret = read(pd[0], buf, 1); /* Should read EOF */
8865 sprintf(string, "%d\n", ret);
8866 write(3, string, strlen(string));
8870 close(pd[0]); /* We write to pd[1] */
8871 close(pu[1]); /* We read from pu[0] */
8872 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8873 close(pd[1]); /* Pipe pd is now fully closed! */
8874 exit(0); /* Bye bye, thank you for playing! */
8878 if eval $compile_ok; then
8879 echo "$startsh" >mtry
8880 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8882 ./mtry >/dev/null 2>&1
8884 0) eagain=`$cat try.out`;;
8885 1) echo "Could not perform non-blocking setting!";;
8886 2) echo "I did a successful read() for something that was not there!";;
8887 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8888 *) echo "Something terribly wrong happened during testing.";;
8890 rd_nodata=`$cat try.ret`
8891 echo "A read() system call with no data present returns $rd_nodata."
8892 case "$rd_nodata" in
8895 echo "(That's peculiar, fixing that to be -1.)"
8901 echo "Forcing errno EAGAIN on read() with no data available."
8905 echo "Your read() sets errno to $eagain when no data is available."
8908 status=`$cat try.err`
8910 0) echo "And it correctly returns 0 to signal EOF.";;
8911 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8912 *) echo "However, your read() returns '$status' on EOF??";;
8915 if test "$status" = "$rd_nodata"; then
8916 echo "WARNING: you can't distinguish between EOF and no data!"
8920 echo "I can't compile the test program--assuming errno EAGAIN will do."
8927 echo "Using $hint value $eagain."
8928 echo "Your read() returns $rd_nodata when no data is present."
8929 case "$d_eofnblk" in
8930 "$define") echo "And you can see EOF because read() returns 0.";;
8931 "$undef") echo "But you can't see EOF status from read() returned value.";;
8933 echo "(Assuming you can't see EOF status from read anyway.)"
8939 $rm -f try try.* .out core head.c mtry
8941 : see if fchmod exists
8945 : see if fchown exists
8949 : see if this is an fcntl system
8953 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8954 while $test $# -ge 2; do
8956 $define) echo "#include <$2>";;
8960 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8962 if eval $compile; then
8973 : see whether socket exists
8975 $echo $n "Hmm... $c" >&4
8976 if set socket val -f d_socket; eval $csym; $val; then
8977 echo "Looks like you have Berkeley networking support." >&4
8979 if set setsockopt val -f; eval $csym; $val; then
8982 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8986 if $contains socklib libc.list >/dev/null 2>&1; then
8987 echo "Looks like you have Berkeley networking support." >&4
8989 : we will have to assume that it supports the 4.2 BSD interface
8992 echo "You don't have Berkeley networking in libc$_a..." >&4
8993 if test "X$d_socket" = "X$define"; then
8994 echo "...but you seem to believe that you have sockets." >&4
8996 for net in net socket
8998 if test -f /usr/lib/lib$net$_a; then
8999 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9000 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9001 if $contains socket libc.list >/dev/null 2>&1; then
9006 echo "...but the Wollongong group seems to have hacked it in." >&4
9007 sockethdr="-I/usr/netinclude"
9010 echo "Found Berkeley sockets interface in lib$net." >& 4
9011 if $contains setsockopt libc.list >/dev/null 2>&1; then
9014 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9021 if test "X$d_socket" != "X$define"; then
9022 echo "or anywhere else I see." >&4
9030 : see if socketpair exists
9031 set socketpair d_sockpair
9036 echo "Checking the availability of certain socket constants..." >& 4
9037 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9038 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9040 #include <sys/types.h>
9041 #include <sys/socket.h>
9047 set try; if eval $compile; then
9050 set d_${enum}; eval $setvar
9054 : see if sys/select.h has to be included
9055 set sys/select.h i_sysselct
9058 : see if we should include time.h, sys/time.h, or both
9060 if test "X$timeincl" = X; then
9061 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9062 $echo $n "I'm now running the test program...$c"
9063 $cat >try.c <<'EOCP'
9064 #include <sys/types.h>
9069 #ifdef SYSTIMEKERNEL
9072 #include <sys/time.h>
9075 #include <sys/select.h>
9084 struct timezone tzp;
9086 if (foo.tm_sec == foo.tm_sec)
9089 if (bar.tv_sec == bar.tv_sec)
9096 for s_timezone in '-DS_TIMEZONE' ''; do
9098 for s_timeval in '-DS_TIMEVAL' ''; do
9099 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9100 for i_time in '' '-DI_TIME'; do
9101 for i_systime in '-DI_SYSTIME' ''; do
9104 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9105 if eval $compile; then
9106 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9110 $echo $n "Succeeded with $flags$c"
9122 *SYSTIMEKERNEL*) i_systimek="$define"
9123 timeincl=`./findhdr sys/time.h`
9124 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9125 *) i_systimek="$undef";;
9128 *I_TIME*) i_time="$define"
9129 timeincl=`./findhdr time.h`" $timeincl"
9130 echo "We'll include <time.h>." >&4;;
9131 *) i_time="$undef";;
9134 *I_SYSTIME*) i_systime="$define"
9135 timeincl=`./findhdr sys/time.h`" $timeincl"
9136 echo "We'll include <sys/time.h>." >&4;;
9137 *) i_systime="$undef";;
9142 : check for fd_set items
9145 Checking to see how well your C compiler handles fd_set and friends ...
9147 $cat >fd_set.c <<EOCP
9148 #$i_systime I_SYS_TIME
9149 #$i_sysselct I_SYS_SELECT
9150 #$d_socket HAS_SOCKET
9151 #include <sys/types.h>
9153 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9156 #include <sys/time.h>
9159 #include <sys/select.h>
9168 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9175 set fd_set -DTRYBITS
9176 if eval $compile; then
9177 d_fds_bits="$define"
9179 echo "Well, your system knows about the normal fd_set typedef..." >&4
9181 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9182 d_fd_macros="$define"
9185 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9187 d_fd_macros="$undef"
9191 Hmm, your compiler has some difficulty with fd_set. Checking further...
9194 if eval $compile; then
9197 echo "Well, your system has some sort of fd_set available..." >&4
9199 echo "and you have the normal fd_set macros." >&4
9200 d_fd_macros="$define"
9203 but not the normal fd_set macros! Gross! More work for me...
9205 d_fd_macros="$undef"
9208 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9211 d_fd_macros="$undef"
9216 : see if fgetpos exists
9217 set fgetpos d_fgetpos
9220 : see if flock exists
9224 : see if fork exists
9228 : see if pathconf exists
9229 set pathconf d_pathconf
9232 : see if fpathconf exists
9233 set fpathconf d_fpathconf
9237 : check for fpos64_t
9239 echo "Checking to see if you have fpos64_t..." >&4
9242 int main() { fpos64_t x = 7; }
9245 if eval $compile; then
9247 echo "You have fpos64_t."
9250 echo "You do not have fpos64_t."
9252 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9259 : see if frexpl exists
9263 hasstruct='varname=$1; struct=$2; shift; shift;
9264 while $test $# -ge 2; do
9266 $define) echo "#include <$2>";;
9270 echo "int main () { struct $struct foo; }" >> try.c;
9272 if eval $compile; then
9281 : see if this is a sys/param system
9282 set sys/param.h i_sysparam
9285 : see if this is a sys/mount.h system
9286 set sys/mount.h i_sysmount
9289 : see if sys/types.h has to be included
9290 set sys/types.h i_systypes
9295 echo "Checking to see if your system supports struct fs_data..." >&4
9296 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9298 case "$d_fs_data_s" in
9299 "$define") echo "Yes, it does." ;;
9300 *) echo "No, it doesn't." ;;
9303 : see if fseeko exists
9307 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9310 : see if fsetpos exists
9311 set fsetpos d_fsetpos
9315 : see if fstatfs exists
9316 set fstatfs d_fstatfs
9320 : see if statvfs exists
9321 set statvfs d_statvfs
9324 : see if fstatvfs exists
9325 set fstatvfs d_fstatvfs
9329 : see if ftello exists
9333 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9336 : see if getcwd exists
9340 : see if getespwnam exists
9341 set getespwnam d_getespwnam
9345 : see if getfsstat exists
9346 set getfsstat d_getfsstat
9349 : see if getgrent exists
9350 set getgrent d_getgrent
9353 : see if gethostbyaddr exists
9354 set gethostbyaddr d_gethbyaddr
9357 : see if gethostbyname exists
9358 set gethostbyname d_gethbyname
9361 : see if gethostent exists
9362 set gethostent d_gethent
9365 : see how we will look up host name
9368 if set gethostname val -f d_gethname; eval $csym; $val; then
9369 echo 'gethostname() found.' >&4
9370 d_gethname="$define"
9373 if set uname val -f d_uname; eval $csym; $val; then
9376 uname() was found, but you're running xenix, and older versions of xenix
9377 have a broken uname(). If you don't really know whether your xenix is old
9378 enough to have a broken system call, use the default answer.
9385 rp='Is your uname() broken?'
9388 n*) d_uname="$define"; call=uname;;
9391 echo 'uname() found.' >&4
9398 case "$d_gethname" in
9399 '') d_gethname="$undef";;
9402 '') d_uname="$undef";;
9404 case "$d_uname$d_gethname" in
9409 Every now and then someone has a $call() that lies about the hostname
9410 but can't be fixed for political or economic reasons. If you wish, I can
9411 pretend $call() isn't there and maybe compute hostname at run-time
9412 thanks to the '$phostname' command.
9415 rp="Shall I ignore $call() from now on?"
9418 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9421 case "$phostname" in
9423 *) case "$aphostname" in
9429 file=`./loc $file $file $pth`
9430 aphostname=`echo $file $*`
9435 case "$d_uname$d_gethname" in
9438 case "$phostname" in
9440 echo "There will be no way for $package to get your hostname." >&4;;
9442 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9446 case "$d_phostname" in
9447 '') d_phostname="$undef";;
9450 : see if this is a netdb.h system
9454 : see if prototypes for various gethostxxx netdb.h functions are available
9456 set d_gethostprotos gethostent $i_netdb netdb.h
9459 : see if getlogin exists
9460 set getlogin d_getlogin
9463 : see if getmnt exists
9467 : see if getmntent exists
9468 set getmntent d_getmntent
9471 : see if getnetbyaddr exists
9472 set getnetbyaddr d_getnbyaddr
9475 : see if getnetbyname exists
9476 set getnetbyname d_getnbyname
9479 : see if getnetent exists
9480 set getnetent d_getnent
9483 : see if prototypes for various getnetxxx netdb.h functions are available
9485 set d_getnetprotos getnetent $i_netdb netdb.h
9489 : see if getprotobyname exists
9490 set getprotobyname d_getpbyname
9493 : see if getprotobynumber exists
9494 set getprotobynumber d_getpbynumber
9497 : see if getprotoent exists
9498 set getprotoent d_getpent
9501 : see if getpgid exists
9502 set getpgid d_getpgid
9505 : see if getpgrp2 exists
9506 set getpgrp2 d_getpgrp2
9509 : see if getppid exists
9510 set getppid d_getppid
9513 : see if getpriority exists
9514 set getpriority d_getprior
9517 : see if prototypes for various getprotoxxx netdb.h functions are available
9519 set d_getprotoprotos getprotoent $i_netdb netdb.h
9522 : see if getprpwnam exists
9523 set getprpwnam d_getprpwnam
9526 : see if getpwent exists
9527 set getpwent d_getpwent
9531 : see if getservbyname exists
9532 set getservbyname d_getsbyname
9535 : see if getservbyport exists
9536 set getservbyport d_getsbyport
9539 : see if getservent exists
9540 set getservent d_getsent
9543 : see if prototypes for various getservxxx netdb.h functions are available
9545 set d_getservprotos getservent $i_netdb netdb.h
9548 : see if getspnam exists
9549 set getspnam d_getspnam
9552 : see if gettimeofday or ftime exists
9553 set gettimeofday d_gettimeod
9555 case "$d_gettimeod" in
9561 val="$undef"; set d_ftime; eval $setvar
9564 case "$d_gettimeod$d_ftime" in
9567 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9571 : see if this is an grp system
9577 xxx=`./findhdr grp.h`
9578 $cppstdin $cppflags $cppminus < $xxx >$$.h
9580 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9592 set d_grpasswd; eval $setvar
9596 : see if hasmntopt exists
9597 set hasmntopt d_hasmntopt
9600 : see if this is a netinet/in.h or sys/in.h system
9601 set netinet/in.h i_niin sys/in.h i_sysin
9604 : see if arpa/inet.h has to be included
9605 set arpa/inet.h i_arpainet
9608 : see if htonl --and friends-- exists
9613 : Maybe they are macros.
9618 #include <sys/types.h>
9619 #$i_niin I_NETINET_IN
9621 #$i_arpainet I_ARPA_INET
9623 #include <netinet/in.h>
9629 #include <arpa/inet.h>
9632 printf("Defined as a macro.");
9635 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9636 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9638 echo "But it seems to be defined as a macro." >&4
9646 : see if iconv exists
9652 if set index val -f; eval $csym; $val; then
9653 if set strchr val -f d_strchr; eval $csym; $val; then
9654 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9657 echo "strchr() found." >&4
9661 echo "index() found." >&4
9666 echo "index() found." >&4
9669 if set strchr val -f d_strchr; eval $csym; $val; then
9672 echo "strchr() found." >&4
9674 echo "No index() or strchr() found!" >&4
9679 set d_strchr; eval $setvar
9681 set d_index; eval $setvar
9683 : check whether inet_aton exists
9684 set inet_aton d_inetaton
9687 : see if inttypes.h is available
9688 : we want a real compile instead of Inhdr because some systems
9689 : have an inttypes.h which includes non-existent headers
9692 #include <inttypes.h>
9694 static int32_t foo32 = 0x12345678;
9698 if eval $compile; then
9699 echo "<inttypes.h> found." >&4
9702 echo "<inttypes.h> NOT found." >&4
9711 echo "Checking to see if you have int64_t..." >&4
9713 #include <sys/types.h>
9714 #$i_inttypes I_INTTYPES
9716 #include <inttypes.h>
9718 int main() { int64_t x = 7; }
9721 if eval $compile; then
9723 echo "You have int64_t."
9726 echo "You do not have int64_t."
9734 $cat >isascii.c <<'EOCP'
9746 if eval $compile; then
9747 echo "isascii() found." >&4
9750 echo "isascii() NOT found." >&4
9757 : see if isnan exists
9761 : see if isnanl exists
9765 : see if killpg exists
9769 : see if lchown exists
9771 $cat > try.c <<'EOCP'
9772 /* System header to define __stub macros and hopefully few prototypes,
9773 which can conflict with char lchown(); below. */
9775 /* Override any gcc2 internal prototype to avoid an error. */
9776 /* We use char because int might match the return type of a gcc2
9777 builtin and then its argument prototype would still apply. */
9780 /* The GNU C library defines this for functions which it implements
9781 to always fail with ENOSYS. Some functions are actually named
9782 something starting with __ and the normal name is an alias. */
9783 #if defined (__stub_lchown) || defined (__stub___lchown)
9791 if eval $compile; then
9792 $echo "lchown() found." >&4
9795 $echo "lchown() NOT found." >&4
9801 : See if number of significant digits in a double precision number is known
9803 $cat >ldbl_dig.c <<EOM
9813 printf("Contains LDBL_DIG");
9816 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9817 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9818 echo "LDBL_DIG found." >&4
9821 echo "LDBL_DIG NOT found." >&4
9828 : see if link exists
9832 : see if localeconv exists
9833 set localeconv d_locconv
9836 : see if lockf exists
9840 : check for long long
9842 echo "Checking to see if you have long long..." >&4
9843 echo 'int main() { long long x = 7; return 0; }' > try.c
9845 if eval $compile; then
9847 echo "You have long long."
9850 echo "You do not have long long."
9856 : check for length of long long
9857 case "${d_longlong}${longlongsize}" in
9860 echo "Checking to see how big your long longs are..." >&4
9861 $cat >try.c <<'EOCP'
9865 printf("%d\n", (int)sizeof(long long));
9870 if eval $compile_ok; then
9871 longlongsize=`./try$exe_ext`
9872 echo "Your long longs are $longlongsize bytes long."
9876 echo "(I can't seem to compile the test program. Guessing...)"
9877 rp="What is the size of a long long (in bytes)?"
9881 if $test "X$longsize" = "X$longlongsize"; then
9882 echo "(That isn't any different from an ordinary long.)"
9888 : see if prototype for lseek is available
9890 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9893 : see if lstat exists
9897 : see if madvise exists
9898 set madvise d_madvise
9901 : see if mblen exists
9905 : see if mbstowcs exists
9906 set mbstowcs d_mbstowcs
9909 : see if mbtowc exists
9913 : see if memchr exists
9917 : see if memcmp exists
9921 : see if memcpy exists
9925 : see if memmove exists
9926 set memmove d_memmove
9929 : see if memset exists
9933 : see if mkdir exists
9937 : see if mkdtemp exists
9938 set mkdtemp d_mkdtemp
9941 : see if mkfifo exists
9945 : see if mkstemp exists
9946 set mkstemp d_mkstemp
9949 : see if mkstemps exists
9950 set mkstemps d_mkstemps
9953 : see if mktime exists
9957 : see if this is a sys/mman.h system
9958 set sys/mman.h i_sysmman
9961 : see if mmap exists
9964 : see what shmat returns
9965 : default to something harmless
9967 case "$i_sysmman$d_mmap" in
9969 $cat >mmap.c <<'END'
9970 #include <sys/mman.h>
9973 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9978 echo "and it returns ($mmaptype)." >&4
9984 : see if modfl exists
9988 : see if mprotect exists
9989 set mprotect d_mprotect
9992 : see if msgctl exists
9996 : see if msgget exists
10000 : see if msgsnd exists
10001 set msgsnd d_msgsnd
10004 : see if msgrcv exists
10005 set msgrcv d_msgrcv
10008 : see how much of the 'msg*(2)' library is present.
10011 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10012 *"$undef"*) h_msg=false;;
10016 case "`ipcs 2>&1`" in
10017 "SVID messages"*"not configured"*)
10018 echo "Your $osname does not have the msg*(2) configured." >&4
10021 set msgctl d_msgctl
10023 set msgget d_msgget
10025 set msgsnd d_msgsnd
10027 set msgrcv d_msgrcv
10033 : we could also check for sys/ipc.h ...
10034 if $h_msg && $test `./findhdr sys/msg.h`; then
10035 echo "You have the full msg*(2) library." >&4
10038 echo "You don't have the full msg*(2) library." >&4
10044 : see if msync exists
10048 : see if munmap exists
10049 set munmap d_munmap
10052 : see if nice exists
10058 echo "Checking which 64-bit integer type we could use..." >&4
10064 val='"unsigned int"'
10069 *) case "$longsize" in
10073 val='"unsigned long"'
10078 *) case "$d_longlong:$longlongsize" in
10083 val='"unsigned long long"'
10088 *) case "$d_int64_t" in
10106 case "$quadtype" in
10107 '') echo "Alas, no 64-bit integer types in sight." >&4
10110 *) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10115 echo "We $verb use '$quadtype' for 64-bit integers." >&4
10120 : check for length of character
10122 case "$charsize" in
10124 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10125 $cat >try.c <<'EOCP'
10129 printf("%d\n", (int)sizeof(char));
10134 if eval $compile_ok; then
10138 echo "(I can't seem to compile the test program. Guessing...)"
10145 rp="What is the size of a character (in bytes)?"
10152 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10154 case "$use64bitint:$d_quad:$quadtype" in
10157 uvtype="$uquadtype"
10162 uvtype="unsigned long"
10168 case "$uselongdouble:$d_longdbl" in
10170 nvtype="long double"
10171 nvsize=$longdblsize
10178 $echo "(IV will be "$ivtype", $ivsize bytes)"
10179 $echo "(UV will be "$uvtype", $uvsize bytes)"
10180 $echo "(NV will be "$nvtype", $nvsize bytes)"
10183 #$i_inttypes I_INTTYPES
10185 #include <inttypes.h>
10190 int8_t i = INT8_MAX;
10191 uint8_t u = UINT8_MAX;
10192 printf("int8_t\n");
10195 int16_t i = INT16_MAX;
10196 uint16_t i = UINT16_MAX;
10197 printf("int16_t\n");
10200 int32_t i = INT32_MAX;
10201 uint32_t u = UINT32_MAX;
10202 printf("int32_t\n");
10208 '') case "$charsize" in
10210 u8type="unsigned char"
10219 if eval $compile; then
10220 case "`./try$exe_ext`" in
10221 int8_t) i8type=int8_t
10231 '') if $test $charsize -ge 1; then
10233 u8type="unsigned char"
10241 '') case "$shortsize" in
10243 u16type="unsigned short"
10251 '') set try -DINT16
10252 if eval $compile; then
10253 case "`./try$exe_ext`" in
10265 '') if $test $shortsize -ge 2; then
10267 u16type="unsigned short"
10275 '') case "$longsize" in
10277 u32type="unsigned long"
10281 *) case "$intsize" in
10283 u32type="unsigned int"
10293 '') set try -DINT32
10294 if eval $compile; then
10295 case "`./try$exe_ext`" in
10307 '') if $test $intsize -ge 4; then
10309 u32type="unsigned int"
10317 '') case "$d_quad:$quadtype" in
10319 i64type="$quadtype"
10320 u64type="$uquadtype"
10328 $echo "Checking whether your NVs can preserve your UVs..." >&4
10332 $uvtype k = ($uvtype)~0, l;
10338 printf("preserve\n");
10343 if eval $compile; then
10344 case "`./try$exe_ext`" in
10345 preserve) d_nv_preserves_uv="$define" ;;
10348 case "$d_nv_preserves_uv" in
10349 $define) $echo "Yes, they can." 2>&1 ;;
10350 *) $echo "No, they can't." 2>&1
10351 d_nv_preserves_uv="$undef"
10357 case "$d_nv_preserves_uv" in
10358 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10359 *) $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10364 int n = 8 * $uvsize;
10366 for (i = 0; i < n; i++) {
10367 u = u << 1 | ($uvtype)1;
10368 if (($uvtype)($nvtype)u != u)
10376 if eval $compile; then
10377 d_nv_preserves_uv_bits="`./try$exe_ext`"
10379 case "$d_nv_preserves_uv_bits" in
10380 [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs." 2>&1 ;;
10381 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10382 d_nv_preserves_uv_bits="$undef"
10391 : check for off64_t
10393 echo "Checking to see if you have off64_t..." >&4
10395 #include <sys/types.h>
10396 #include <unistd.h>
10397 int main() { off64_t x = 7; }
10400 if eval $compile; then
10402 echo "You have off64_t."
10405 echo "You do not have off64_t."
10406 case "$lseeksize" in
10407 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10414 : see if POSIX threads are available
10415 set pthread.h i_pthread
10421 : how to create joinable pthreads
10422 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10424 echo "Checking what constant to use for creating joinable pthreads..." >&4
10425 $cat >try.c <<'EOCP'
10426 #include <pthread.h>
10428 int detachstate = JOINABLE;
10431 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10432 if eval $compile; then
10433 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10434 val="$undef" # Yes, undef.
10435 set d_old_pthread_create_joinable
10438 set old_pthread_create_joinable
10441 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10442 if eval $compile; then
10443 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10445 set d_old_pthread_create_joinable
10447 val=PTHREAD_CREATE_UNDETACHED
10448 set old_pthread_create_joinable
10451 set try -DJOINABLE=__UNDETACHED
10452 if eval $compile; then
10453 echo "You seem to use __UNDETACHED." >&4
10455 set d_old_pthread_create_joinable
10458 set old_pthread_create_joinable
10461 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10463 set d_old_pthread_create_joinable
10466 set old_pthread_create_joinable
10473 d_old_pthread_create_joinable="$undef"
10474 old_pthread_create_joinable=""
10477 : see if pause exists
10481 : see if pipe exists
10485 : see if poll exists
10490 : see whether the various POSIXish _yields exist
10492 #include <pthread.h>
10498 #ifdef PTHREAD_YIELD
10501 #ifdef PTHREAD_YIELD_NULL
10502 pthread_yield(NULL);
10508 : see if sched_yield exists
10509 set try -DSCHED_YIELD
10510 if eval $compile; then
10512 sched_yield='sched_yield()'
10516 case "$usethreads" in
10519 $define) echo 'sched_yield() found.' >&4 ;;
10520 *) echo 'sched_yield() NOT found.' >&4 ;;
10526 : see if pthread_yield exists
10527 set try -DPTHREAD_YIELD
10528 if eval $compile; then
10530 case "$sched_yield" in
10531 '') sched_yield='pthread_yield()' ;;
10534 set try -DPTHREAD_YIELD_NULL
10535 if eval $compile; then
10537 case "$sched_yield" in
10538 '') sched_yield='pthread_yield(NULL)' ;;
10544 case "$usethreads" in
10547 $define) echo 'pthread_yield() found.' >&4 ;;
10548 *) echo 'pthread_yield() NOT found.' >&4 ;;
10552 set d_pthread_yield
10555 case "$sched_yield" in
10556 '') sched_yield=undef ;;
10561 : see if this is a pwd.h system
10567 xxx=`./findhdr pwd.h`
10568 $cppstdin $cppflags $cppminus < $xxx >$$.h
10570 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10578 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10586 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10594 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10602 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10610 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10618 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10626 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10638 set d_pwquota; eval $setvar
10639 set d_pwage; eval $setvar
10640 set d_pwchange; eval $setvar
10641 set d_pwclass; eval $setvar
10642 set d_pwexpire; eval $setvar
10643 set d_pwcomment; eval $setvar
10644 set d_pwgecos; eval $setvar
10645 set d_pwpasswd; eval $setvar
10649 : see if readdir and friends exist
10650 set readdir d_readdir
10652 set seekdir d_seekdir
10654 set telldir d_telldir
10656 set rewinddir d_rewinddir
10659 : see if readlink exists
10660 set readlink d_readlink
10663 : see if rename exists
10664 set rename d_rename
10667 : see if rmdir exists
10671 : see if memory.h is available.
10676 : See if it conflicts with string.h
10682 $cppstdin $cppflags $cppminus < $strings > mem.h
10683 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10685 echo "We won't be including <memory.h>."
10695 : can bcopy handle overlapping blocks?
10700 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10702 #$i_memory I_MEMORY
10703 #$i_stdlib I_STDLIB
10704 #$i_string I_STRING
10705 #$i_unistd I_UNISTD
10707 $cat >>try.c <<'EOCP'
10710 # include <memory.h>
10713 # include <stdlib.h>
10716 # include <string.h>
10718 # include <strings.h>
10721 # include <unistd.h> /* Needed for NetBSD */
10725 char buf[128], abc[128];
10731 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10733 for (align = 7; align >= 0; align--) {
10734 for (len = 36; len; len--) {
10736 bcopy(abc, b, len);
10737 for (off = 1; off <= len; off++) {
10738 bcopy(b, b+off, len);
10739 bcopy(b+off, b, len);
10740 if (bcmp(b, abc, len))
10749 if eval $compile_ok; then
10750 if ./try 2>/dev/null; then
10751 echo "Yes, it can."
10754 echo "It can't, sorry."
10755 case "$d_memmove" in
10756 "$define") echo "But that's Ok since you have memmove()." ;;
10760 echo "(I can't compile the test program, so we'll assume not...)"
10761 case "$d_memmove" in
10762 "$define") echo "But that's Ok since you have memmove()." ;;
10767 $rm -f try.* try core
10771 : can memcpy handle overlapping blocks?
10773 case "$d_memcpy" in
10776 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10778 #$i_memory I_MEMORY
10779 #$i_stdlib I_STDLIB
10780 #$i_string I_STRING
10781 #$i_unistd I_UNISTD
10783 $cat >>try.c <<'EOCP'
10786 # include <memory.h>
10789 # include <stdlib.h>
10792 # include <string.h>
10794 # include <strings.h>
10797 # include <unistd.h> /* Needed for NetBSD */
10801 char buf[128], abc[128];
10807 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10808 try to store the string in read-only memory. */
10809 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10811 for (align = 7; align >= 0; align--) {
10812 for (len = 36; len; len--) {
10814 memcpy(b, abc, len);
10815 for (off = 1; off <= len; off++) {
10816 memcpy(b+off, b, len);
10817 memcpy(b, b+off, len);
10818 if (memcmp(b, abc, len))
10827 if eval $compile_ok; then
10828 if ./try 2>/dev/null; then
10829 echo "Yes, it can."
10832 echo "It can't, sorry."
10833 case "$d_memmove" in
10834 "$define") echo "But that's Ok since you have memmove()." ;;
10838 echo "(I can't compile the test program, so we'll assume not...)"
10839 case "$d_memmove" in
10840 "$define") echo "But that's Ok since you have memmove()." ;;
10845 $rm -f try.* try core
10849 : can memcmp be trusted to compare relative magnitude?
10851 case "$d_memcmp" in
10854 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10856 #$i_memory I_MEMORY
10857 #$i_stdlib I_STDLIB
10858 #$i_string I_STRING
10859 #$i_unistd I_UNISTD
10861 $cat >>try.c <<'EOCP'
10864 # include <memory.h>
10867 # include <stdlib.h>
10870 # include <string.h>
10872 # include <strings.h>
10875 # include <unistd.h> /* Needed for NetBSD */
10881 if ((a < b) && memcmp(&a, &b, 1) < 0)
10887 if eval $compile_ok; then
10888 if ./try 2>/dev/null; then
10889 echo "Yes, it can."
10892 echo "No, it can't (it uses signed chars)."
10895 echo "(I can't compile the test program, so we'll assume not...)"
10899 $rm -f try.* try core
10903 : see if select exists
10904 set select d_select
10907 : see if semctl exists
10908 set semctl d_semctl
10911 : see if semget exists
10912 set semget d_semget
10915 : see if semop exists
10919 : see how much of the 'sem*(2)' library is present.
10922 case "$d_semctl$d_semget$d_semop" in
10923 *"$undef"*) h_sem=false;;
10927 case "`ipcs 2>&1`" in
10928 "SVID messages"*"not configured"*)
10929 echo "Your $osname does not have the sem*(2) configured." >&4
10932 set semctl d_semctl
10934 set semget d_semget
10942 : we could also check for sys/ipc.h ...
10943 if $h_sem && $test `./findhdr sys/sem.h`; then
10944 echo "You have the full sem*(2) library." >&4
10947 echo "You don't have the full sem*(2) library." >&4
10953 : see whether sys/sem.h defines union semun
10955 $cat > try.c <<'END'
10956 #include <sys/types.h>
10957 #include <sys/ipc.h>
10958 #include <sys/sem.h>
10959 int main () { union semun semun; semun.buf = 0; }
10962 if eval $compile; then
10963 echo "You have union semun in <sys/sem.h>." >&4
10966 echo "You do not have union semun in <sys/sem.h>." >&4
10969 $rm -f try try.c try.h
10973 : see how to do semctl IPC_STAT
10976 : see whether semctl IPC_STAT can use union semun
10981 # define S_IRUSR S_IREAD
10982 # define S_IWUSR S_IWRITE
10983 # define S_IXUSR S_IEXEC
10985 # define S_IRUSR 0400
10986 # define S_IWUSR 0200
10987 # define S_IXUSR 0100
10989 # define S_IRGRP (S_IRUSR>>3)
10990 # define S_IWGRP (S_IWUSR>>3)
10991 # define S_IXGRP (S_IXUSR>>3)
10992 # define S_IROTH (S_IRUSR>>6)
10993 # define S_IWOTH (S_IWUSR>>6)
10994 # define S_IXOTH (S_IXUSR>>6)
10997 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10998 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10999 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11004 #include <sys/types.h>
11005 #include <sys/ipc.h>
11006 #include <sys/sem.h>
11007 #include <sys/stat.h>
11014 #$d_union_semun HAS_UNION_SEMUN
11017 #ifndef HAS_UNION_SEMUN
11020 struct semid_ds *buf;
11021 unsigned short *array;
11027 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11028 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11030 struct semid_ds argbuf;
11033 st = semctl(sem, 0, IPC_STAT, arg);
11037 # endif /* IPC_STAT */
11038 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11040 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11041 # endif /* IPC_RMID */
11042 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11044 #endif /* IPC_PRIVATE && ... */
11045 printf("semget failed: errno = %d\n", errno);
11051 if eval $compile; then
11054 semun) val="$define" ;;
11060 case "$d_semctl_semun" in
11062 echo "You can use union semun for semctl IPC_STAT." >&4
11065 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11070 : see whether semctl IPC_STAT can use struct semid_ds pointer
11071 $cat > try.c <<'END'
11072 #include <sys/types.h>
11073 #include <sys/ipc.h>
11074 #include <sys/sem.h>
11075 #include <sys/stat.h>
11083 struct semid_ds arg;
11086 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11087 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11090 st = semctl(sem, 0, IPC_STAT, &arg);
11092 printf("semid_ds\n");
11094 # endif /* IPC_STAT */
11095 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11097 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11098 # endif /* IPC_RMID */
11099 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11101 #endif /* IPC_PRIVATE && ... */
11102 printf("semget failed: errno = %d\n", errno);
11109 if eval $compile; then
11112 semid_ds) val="$define" ;;
11116 set d_semctl_semid_ds
11118 case "$d_semctl_semid_ds" in
11120 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11122 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11129 # We do not have the full sem*(2) library, so assume we can not
11135 set d_semctl_semid_ds
11140 : see if setegid exists
11141 set setegid d_setegid
11144 : see if seteuid exists
11145 set seteuid d_seteuid
11148 : see if setgrent exists
11149 set setgrent d_setgrent
11152 : see if sethostent exists
11153 set sethostent d_sethent
11156 : see if setlinebuf exists
11157 set setlinebuf d_setlinebuf
11160 : see if setlocale exists
11161 set setlocale d_setlocale
11164 : see if setnetent exists
11165 set setnetent d_setnent
11168 : see if setprotoent exists
11169 set setprotoent d_setpent
11172 : see if setpgid exists
11173 set setpgid d_setpgid
11176 : see if setpgrp2 exists
11177 set setpgrp2 d_setpgrp2
11180 : see if setpriority exists
11181 set setpriority d_setprior
11184 : see if setproctitle exists
11185 set setproctitle d_setproctitle
11188 : see if setpwent exists
11189 set setpwent d_setpwent
11192 : see if setregid exists
11193 set setregid d_setregid
11195 set setresgid d_setresgid
11198 : see if setreuid exists
11199 set setreuid d_setreuid
11201 set setresuid d_setresuid
11204 : see if setrgid exists
11205 set setrgid d_setrgid
11208 : see if setruid exists
11209 set setruid d_setruid
11212 : see if setservent exists
11213 set setservent d_setsent
11216 : see if setsid exists
11217 set setsid d_setsid
11220 : see if setvbuf exists
11221 set setvbuf d_setvbuf
11224 : see if sfio.h is available
11229 : see if sfio library is available
11240 : Ok, but do we want to use it.
11244 true|$define|[yY]*) dflt='y';;
11247 echo "$package can use the sfio library, but it is experimental."
11248 rp="You seem to have sfio available, do you want to try using it?"
11252 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11254 : Remove sfio from list of libraries to use
11255 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11258 echo "libs = $libs" >&4
11262 *) case "$usesfio" in
11263 true|$define|[yY]*)
11264 echo "Sorry, cannot find sfio on this machine" >&4
11265 echo "Ignoring your setting of usesfio=$usesfio" >&4
11273 $define) usesfio='true';;
11274 *) usesfio='false';;
11277 : see if shmctl exists
11278 set shmctl d_shmctl
11281 : see if shmget exists
11282 set shmget d_shmget
11285 : see if shmat exists
11288 : see what shmat returns
11291 $cat >shmat.c <<'END'
11292 #include <sys/shm.h>
11295 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11300 echo "and it returns ($shmattype)." >&4
11301 : see if a prototype for shmat is available
11302 xxx=`./findhdr sys/shm.h`
11303 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11304 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11315 set d_shmatprototype
11318 : see if shmdt exists
11322 : see how much of the 'shm*(2)' library is present.
11325 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11326 *"$undef"*) h_shm=false;;
11330 case "`ipcs 2>&1`" in
11331 "SVID shared memory"*"not configured"*)
11332 echo "Your $osname does not have the shm*(2) configured." >&4
11335 set shmctl d_shmctl
11337 set shmget d_shmget
11347 : we could also check for sys/ipc.h ...
11348 if $h_shm && $test `./findhdr sys/shm.h`; then
11349 echo "You have the full shm*(2) library." >&4
11352 echo "You don't have the full shm*(2) library." >&4
11359 : see if we have sigaction
11360 if set sigaction val -f d_sigaction; eval $csym; $val; then
11361 echo 'sigaction() found.' >&4
11362 $cat > try.c <<'EOP'
11364 #include <sys/types.h>
11365 #include <signal.h>
11368 struct sigaction act, oact;
11370 oact.sa_handler = 0;
11371 /* so that act and oact are used */
11372 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11376 if eval $compile_ok; then
11379 echo "But you don't seem to have a useable struct sigaction." >&4
11383 echo 'sigaction NOT found.' >&4
11386 set d_sigaction; eval $setvar
11387 $rm -f try try$_o try.c
11389 : see if sigsetjmp exists
11391 case "$d_sigsetjmp" in
11393 $cat >try.c <<'EOP'
11394 #include <setjmp.h>
11399 if (sigsetjmp(env,1))
11402 siglongjmp(env, 1);
11407 if eval $compile; then
11408 if ./try >/dev/null 2>&1; then
11409 echo "POSIX sigsetjmp found." >&4
11413 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11419 echo "sigsetjmp not found." >&4
11423 *) val="$d_sigsetjmp"
11424 case "$d_sigsetjmp" in
11425 $define) echo "POSIX sigsetjmp found." >&4;;
11426 $undef) echo "sigsetjmp not found." >&4;;
11434 : see if sys/stat.h is available
11435 set sys/stat.h i_sysstat
11439 : see if stat knows about block sizes
11441 echo "Checking to see if your struct stat has st_blocks field..." >&4
11442 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11446 : see if this is a sys/vfs.h system
11447 set sys/vfs.h i_sysvfs
11451 : see if this is a sys/statfs.h system
11452 set sys/statfs.h i_sysstatfs
11457 echo "Checking to see if your system supports struct statfs..." >&4
11458 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
11460 case "$d_statfs_s" in
11461 "$define") echo "Yes, it does." ;;
11462 *) echo "No, it doesn't." ;;
11467 : see if struct statfs knows about f_flags
11468 case "$d_statfs_s" in
11471 echo "Checking to see if your struct statfs has f_flags field..." >&4
11472 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
11476 set d_statfs_f_flags
11480 case "$d_statfs_f_flags" in
11481 "$define") echo "Yes, it does." ;;
11482 *) echo "No, it doesn't." ;;
11485 : see if _ptr and _cnt from stdio act std
11487 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11488 echo "(Looks like you have stdio.h from Linux.)"
11489 case "$stdio_ptr" in
11490 '') stdio_ptr='((fp)->_IO_read_ptr)'
11493 *) ptr_lval=$d_stdio_ptr_lval;;
11495 case "$stdio_cnt" in
11496 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11499 *) cnt_lval=$d_stdio_cnt_lval;;
11501 case "$stdio_base" in
11502 '') stdio_base='((fp)->_IO_read_base)';;
11504 case "$stdio_bufsiz" in
11505 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11508 case "$stdio_ptr" in
11509 '') stdio_ptr='((fp)->_ptr)'
11512 *) ptr_lval=$d_stdio_ptr_lval;;
11514 case "$stdio_cnt" in
11515 '') stdio_cnt='((fp)->_cnt)'
11518 *) cnt_lval=$d_stdio_cnt_lval;;
11520 case "$stdio_base" in
11521 '') stdio_base='((fp)->_base)';;
11523 case "$stdio_bufsiz" in
11524 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11527 : test whether _ptr and _cnt really work
11528 echo "Checking how std your stdio is..." >&4
11531 #define FILE_ptr(fp) $stdio_ptr
11532 #define FILE_cnt(fp) $stdio_cnt
11534 FILE *fp = fopen("try.c", "r");
11537 18 <= FILE_cnt(fp) &&
11538 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11546 if eval $compile; then
11548 echo "Your stdio acts pretty std."
11551 echo "Your stdio isn't very std."
11554 echo "Your stdio doesn't appear very std."
11560 : Can _ptr be used as an lvalue?
11561 case "$d_stdstdio$ptr_lval" in
11562 $define$define) val=$define ;;
11565 set d_stdio_ptr_lval
11568 : Can _cnt be used as an lvalue?
11569 case "$d_stdstdio$cnt_lval" in
11570 $define$define) val=$define ;;
11573 set d_stdio_cnt_lval
11576 : see if _base is also standard
11578 case "$d_stdstdio" in
11582 #define FILE_base(fp) $stdio_base
11583 #define FILE_bufsiz(fp) $stdio_bufsiz
11585 FILE *fp = fopen("try.c", "r");
11588 19 <= FILE_bufsiz(fp) &&
11589 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11596 if eval $compile; then
11598 echo "And its _base field acts std."
11601 echo "But its _base field isn't std."
11604 echo "However, it seems to be lacking the _base field."
11613 Checking how to access stdio streams by file descriptor number...
11615 case "$stdio_stream_array" in
11616 '') $cat >try.c <<EOCP
11619 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11623 for s in _iob __iob __sF
11625 set try -DSTDIO_STREAM_ARRAY=$s
11626 if eval $compile; then
11627 case "`./try$exe_ext`" in
11628 yes) stdio_stream_array=$s; break ;;
11632 $rm -f try.* try$exe_ext
11634 case "$stdio_stream_array" in
11636 I can't figure out how to access stdio streams by file descriptor number.
11638 d_stdio_stream_array="$undef"
11641 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11643 d_stdio_stream_array="$define"
11647 : see if strcoll exists
11648 set strcoll d_strcoll
11651 : check for structure copying
11653 echo "Checking to see if your C compiler can copy structs..." >&4
11654 $cat >try.c <<'EOCP'
11664 if $cc -c try.c >/dev/null 2>&1 ; then
11666 echo "Yup, it can."
11669 echo "Nope, it can't."
11675 : see if strerror and/or sys_errlist[] exist
11677 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11678 if set strerror val -f d_strerror; eval $csym; $val; then
11679 echo 'strerror() found.' >&4
11680 d_strerror="$define"
11681 d_strerrm='strerror(e)'
11682 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11683 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11684 d_syserrlst="$define"
11686 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11687 d_syserrlst="$undef"
11689 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11690 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11691 echo 'strerror() found in string header.' >&4
11692 d_strerror="$define"
11693 d_strerrm='strerror(e)'
11694 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11695 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11696 d_syserrlst="$define"
11698 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11699 d_syserrlst="$undef"
11701 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11702 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11703 d_strerror="$undef"
11704 d_syserrlst="$define"
11705 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11707 echo 'strerror() and sys_errlist[] NOT found.' >&4
11708 d_strerror="$undef"
11709 d_syserrlst="$undef"
11710 d_strerrm='"unknown"'
11714 : see if strtod exists
11715 set strtod d_strtod
11718 : see if strtol exists
11719 set strtol d_strtol
11722 : see if strtold exists
11723 set strtold d_strtold
11726 : see if strtoll exists
11727 set strtoll d_strtoll
11730 case "$d_longlong-$d_strtoll" in
11733 Checking whether your strtoll() works okay...
11735 $cat >try.c <<'EOCP'
11738 #define strtoll __strtoll
11741 extern long long int strtoll(char *s, char **, int);
11742 static int bad = 0;
11743 int check(char *s, long long ell, int een) {
11746 gll = strtoll(s, 0, 10);
11747 if (!((gll == ell) && (errno == een)))
11751 check(" 1", 1LL, 0);
11752 check(" 0", 0LL, 0);
11753 check("-1", -1LL, 0);
11754 check("-9223372036854775808", -9223372036854775808LL, 0);
11755 check("-9223372036854775808", -9223372036854775808LL, 0);
11756 check(" 9223372036854775807", 9223372036854775807LL, 0);
11757 check("-9223372036854775808", -9223372036854775808LL, 0);
11758 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
11759 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11765 if eval $compile; then
11767 ok) echo "Your strtoll() seems to be working okay." ;;
11769 Your strtoll() doesn't seem to be working okay.
11778 : see if strtoul exists
11779 set strtoul d_strtoul
11782 : see if strtoull exists
11783 set strtoull d_strtoull
11786 case "$d_longlong-$d_strtoull" in
11789 Checking whether your strtoull() works okay...
11791 $cat >try.c <<'EOCP'
11794 #define strtoull __strtoull
11797 extern unsigned long long int strtoull(char *s, char **, int);
11798 static int bad = 0;
11799 int check(char *s, long long eull, int een) {
11802 gull = strtoull(s, 0, 10);
11803 if (!((gull == eull) && (errno == een)))
11807 check(" 1", 1LL, 0);
11808 check(" 0", 0LL, 0);
11809 check("18446744073709551615", 18446744073709551615ULL, 0);
11810 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11816 if eval $compile; then
11818 ok) echo "Your strtoull() seems to be working okay." ;;
11820 Your strtoull() doesn't seem to be working okay.
11822 d_strtoull="$undef"
11829 : see if strtouq exists
11830 set strtouq d_strtouq
11833 : see if strxfrm exists
11834 set strxfrm d_strxfrm
11837 : see if symlink exists
11838 set symlink d_symlink
11841 : see if syscall exists
11842 set syscall d_syscall
11845 : see if sysconf exists
11846 set sysconf d_sysconf
11849 : see if system exists
11850 set system d_system
11853 : see if tcgetpgrp exists
11854 set tcgetpgrp d_tcgetpgrp
11857 : see if tcsetpgrp exists
11858 set tcsetpgrp d_tcsetpgrp
11861 : see if prototype for telldir is available
11863 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11866 : see if this is a sys/times.h system
11867 set sys/times.h i_systimes
11870 : see if times exists
11872 if set times val -f d_times; eval $csym; $val; then
11873 echo 'times() found.' >&4
11876 case "$i_systimes" in
11877 "$define") inc='sys/times.h';;
11879 rp="What is the type returned by times() on this system?"
11880 set clock_t clocktype long stdio.h sys/types.h $inc
11883 echo 'times() NOT found, hope that will do.' >&4
11888 : see if truncate exists
11889 set truncate d_truncate
11892 : see if tzname[] exists
11894 if set tzname val -a d_tzname; eval $csym; $val; then
11896 echo 'tzname[] found.' >&4
11899 echo 'tzname[] NOT found.' >&4
11904 : see if umask exists
11908 : see if ustat exists
11912 : backward compatibility for d_hvfork
11913 if test X$d_hvfork != X; then
11914 d_vfork="$d_hvfork"
11917 : see if there is a vfork
11922 : Ok, but do we want to use it. vfork is reportedly unreliable in
11923 : perl on Solaris 2.x, and probably elsewhere.
11927 case "$usevfork" in
11933 Perl can only use a vfork() that doesn't suffer from strict
11934 restrictions on calling functions or modifying global data in
11935 the child. For example, glibc-2.1 contains such a vfork()
11936 that is unsuitable. If your system provides a proper fork()
11937 call, chances are that you do NOT want perl to use vfork().
11940 rp="Do you still want to use vfork()?"
11945 echo "Ok, we won't use vfork()."
11954 $define) usevfork='true';;
11955 *) usevfork='false';;
11958 : see if this is an sysdir system
11959 set sys/dir.h i_sysdir
11962 : see if this is an sysndir system
11963 set sys/ndir.h i_sysndir
11966 : see if closedir exists
11967 set closedir d_closedir
11970 case "$d_closedir" in
11973 echo "Checking whether closedir() returns a status..." >&4
11974 cat > closedir.c <<EOM
11975 #$i_dirent I_DIRENT /**/
11976 #$i_sysdir I_SYS_DIR /**/
11977 #$i_sysndir I_SYS_NDIR /**/
11978 #$i_systypes I_SYS_TYPES /**/
11980 #if defined(I_SYS_TYPES)
11981 #include <sys/types.h>
11983 #if defined(I_DIRENT)
11984 #include <dirent.h>
11985 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11986 #include <sys/dir.h>
11990 #include <sys/ndir.h>
11994 #include <ndir.h> /* may be wrong in the future */
11996 #include <sys/dir.h>
12001 int main() { return closedir(opendir(".")); }
12004 if eval $compile_ok; then
12005 if ./closedir > /dev/null 2>&1 ; then
12006 echo "Yes, it does."
12009 echo "No, it doesn't."
12013 echo "(I can't seem to compile the test program--assuming it doesn't)"
12021 set d_void_closedir
12024 : check for volatile keyword
12026 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12027 $cat >try.c <<'EOCP'
12030 typedef struct _goo_struct goo_struct;
12031 goo_struct * volatile goo = ((goo_struct *)0);
12032 struct _goo_struct {
12037 typedef unsigned short foo_t;
12038 char *volatile foo;
12040 volatile foo_t blech;
12044 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12046 echo "Yup, it does."
12049 echo "Nope, it doesn't."
12055 : see if there is a wait4
12059 : see if waitpid exists
12060 set waitpid d_waitpid
12063 : see if wcstombs exists
12064 set wcstombs d_wcstombs
12067 : see if wctomb exists
12068 set wctomb d_wctomb
12071 : preserve RCS keywords in files with variable substitution, grrr
12076 Revision='$Revision'
12078 case "$crosscompile" in
12079 ''|[nN]*) crosscompile="$undef" ;;
12083 next|rhapsody|darwin) multiarch="$define" ;;
12085 case "$multiarch" in
12086 ''|[nN]*) multiarch="$undef" ;;
12089 : check for alignment requirements
12091 case "$crosscompile$multiarch" in
12094 You seem to be either cross-compiling or doing a multiarchitecture build,
12095 skipping the memory alignment check.
12098 case "$alignbytes" in
12099 '') alignbytes=8 ;;
12103 case "$alignbytes" in
12104 '') echo "Checking alignment constraints..." >&4
12105 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12106 $cat >try.c <<'EOCP'
12107 typedef long double NV;
12110 $cat >try.c <<'EOCP'
12114 $cat >>try.c <<'EOCP'
12122 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12127 if eval $compile_ok; then
12131 echo "(I can't seem to compile the test program...)"
12134 *) dflt="$alignbytes"
12137 rp="Doubles must be aligned on a how-many-byte boundary?"
12145 : set the base revision
12148 : check for ordering of bytes in a long
12150 case "$crosscompile$multiarch" in
12153 You seem to be either cross-compiling or doing a multiarchitecture build,
12154 skipping the byteorder check.
12160 case "$byteorder" in
12163 In the following, larger digits indicate more significance. A big-endian
12164 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12165 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12166 machines may have weird orders like 3412. A Cray will report 87654321,
12167 an Alpha will report 12345678. If the test program works the default is
12169 I'm now running the test program...
12171 $cat >try.c <<'EOCP'
12178 char c[sizeof(long)];
12181 if (sizeof(long) > 4)
12182 u.l = (0x08070605L << 32) | 0x04030201L;
12185 for (i = 0; i < sizeof(long); i++)
12186 printf("%c", u.c[i]+'0');
12193 if eval $compile && ./try > /dev/null; then
12196 [1-4][1-4][1-4][1-4]|12345678|87654321)
12197 echo "(The test program ran ok.)"
12198 echo "byteorder=$dflt"
12201 ????|????????) echo "(The test program ran ok.)" ;;
12202 *) echo "(The test program didn't run right for some reason.)" ;;
12207 (I can't seem to compile the test program. Guessing big-endian...)
12210 case "$xxx_prompt" in
12212 rp="What is the order of bytes in a long?"
12226 : how do we catenate cpp tokens here?
12228 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12229 $cat >cpp_stuff.c <<'EOCP'
12230 #define RCAT(a,b)a/**/b
12231 #define ACAT(a,b)a ## b
12235 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12236 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12237 echo "Oh! Smells like ANSI's been here." >&4
12238 echo "We can catify or stringify, separately or together!"
12240 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12241 echo "Ah, yes! The good old days!" >&4
12242 echo "However, in the good old days we don't know how to stringify and"
12243 echo "catify at the same time."
12247 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12248 to have to edit the values of CAT[2-5] in config.h...
12250 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12254 : see if this is a db.h system
12260 : Check db version.
12262 echo "Checking Berkeley DB version ..." >&4
12268 #include <sys/types.h>
12273 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12274 int Major, Minor, Patch ;
12275 unsigned long Version ;
12276 (void)db_version(&Major, &Minor, &Patch) ;
12277 printf("You have Berkeley DB Version 2 or greater\n");
12279 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12280 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12281 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12282 Major, Minor, Patch) ;
12284 /* check that db.h & libdb are compatible */
12285 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12286 printf("db.h and libdb are incompatible\n") ;
12290 printf("db.h and libdb are compatible\n") ;
12292 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12293 + DB_VERSION_PATCH ;
12295 /* needs to be >= 2.3.4 */
12296 if (Version < 2003004) {
12297 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12298 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12304 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12305 printf("You have Berkeley DB Version 1\n");
12306 exit(0); /* DB version < 2: the coast is clear. */
12308 exit(1); /* <db.h> not Berkeley DB? */
12314 if eval $compile_ok && ./try; then
12315 echo 'Looks OK.' >&4
12317 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12321 : Remove db from list of libraries to use
12322 echo "Removing unusable -ldb from library list" >&4
12323 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12326 echo "libs = $libs" >&4
12336 : Check the return type needed for hash
12338 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12344 #include <sys/types.h>
12347 #ifndef DB_VERSION_MAJOR
12348 u_int32_t hash_cb (ptr, size)
12356 info.hash = hash_cb;
12360 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12361 if $contains warning try.out >>/dev/null 2>&1 ; then
12364 db_hashtype='u_int32_t'
12367 : XXX Maybe we should just give up here.
12368 db_hashtype=u_int32_t
12370 echo "Help: I can't seem to compile the db test program." >&4
12371 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12374 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12376 *) db_hashtype=u_int32_t
12381 : Check the return type needed for prefix
12383 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12389 #include <sys/types.h>
12392 #ifndef DB_VERSION_MAJOR
12393 size_t prefix_cb (key1, key2)
12401 info.prefix = prefix_cb;
12405 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12406 if $contains warning try.out >>/dev/null 2>&1 ; then
12407 db_prefixtype='int'
12409 db_prefixtype='size_t'
12412 db_prefixtype='size_t'
12413 : XXX Maybe we should just give up here.
12415 echo "Help: I can't seem to compile the db test program." >&4
12416 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12419 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12421 *) db_prefixtype='size_t'
12425 : check for void type
12427 echo "Checking to see how well your C compiler groks the void type..." >&4
12428 case "$voidflags" in
12430 $cat >try.c <<'EOCP'
12436 extern void moo(); /* function returning void */
12437 void (*goo)(); /* ptr to func returning void */
12439 void *hue; /* generic ptr */
12452 int main() { sub(); }
12454 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12455 voidflags=$defvoidused
12456 echo "Good. It appears to support void to the level $package wants.">&4
12457 if $contains warning .out >/dev/null 2>&1; then
12458 echo "However, you might get some warnings that look like this:"
12462 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12463 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12464 echo "It supports 1..."
12465 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12466 echo "It also supports 2..."
12467 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12469 echo "And it supports 4 but not 8 definitely."
12471 echo "It doesn't support 4..."
12472 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12474 echo "But it supports 8."
12477 echo "Neither does it support 8."
12481 echo "It does not support 2..."
12482 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12484 echo "But it supports 4 and 8."
12486 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12488 echo "And it supports 4 but has not heard about 8."
12490 echo "However it supports 8 but not 4."
12495 echo "There is no support at all for void."
12500 case "$voidflags" in
12502 *) $cat >&4 <<'EOM'
12503 Support flag bits are:
12504 1: basic void declarations.
12505 2: arrays of pointers to functions returning void.
12506 4: operations between pointers to and addresses of void functions.
12507 8: generic void pointers.
12510 rp="Your void support flags add up to what?"
12518 : How can we generate normalized random numbers ?
12520 echo "Looking for a random number function..." >&4
12521 case "$randfunc" in
12523 if set drand48 val -f; eval $csym; $val; then
12525 echo "Good, found drand48()." >&4
12526 elif set random val -f; eval $csym; $val; then
12528 echo "OK, found random()." >&4
12531 echo "Yick, looks like I have to use rand()." >&4
12542 *-Dmy_rand=*|*-Dmy_srand=*)
12543 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12544 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12545 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12546 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12550 while $test "$cont"; do
12551 rp="Use which function to generate random numbers?"
12553 if $test "$ans" = "$dflt"; then
12559 if set $ans val -f; eval $csym; $val; then
12563 rp="I cannot find function $ans. Use that name anyway?"
12572 case "$randfunc" in
12574 drand01="drand48()"
12580 case "$randbits" in
12582 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12584 #$i_unistd I_UNISTD
12585 #$i_stdlib I_STDLIB
12588 # include <unistd.h>
12591 # include <stdlib.h>
12596 register unsigned long tmp;
12597 register unsigned long max = 0L;
12599 for (i = 1000; i; i--) {
12600 tmp = (unsigned long) $randfunc();
12601 if (tmp > max) max = tmp;
12603 for (i = 0; max; i++)
12609 if eval $compile_ok; then
12613 echo "(I can't seem to compile the test program...)"
12620 rp="How many bits does your $randfunc() function produce?"
12624 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12625 seedfunc="s$randfunc"
12626 randseedtype=unsigned
12630 rp="How many bits does your $randfunc() function produce?"
12633 seedfunc="s$randfunc"
12634 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12635 if set $seedfunc val -f; eval $csym; $val; then
12636 echo "(Using $seedfunc() to seed random generator)"
12638 echo "(Warning: no $seedfunc() to seed random generator)"
12641 randseedtype=unsigned
12649 echo "Determining whether or not we are on an EBCDIC system..." >&4
12650 $cat >tebcdic.c <<'EOM'
12653 if ('M'==0xd4) return 0;
12660 if eval $compile_ok; then
12662 echo "You have EBCDIC." >&4
12665 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12668 echo "I'm unable to compile the test program." >&4
12669 echo "I'll assume ASCII or some ISO Latin." >&4
12671 $rm -f tebcdic.c tebcdic
12677 Checking how to flush all pending stdio output...
12679 # I only know how to find the first 32 possibly open files on SunOS.
12680 # See also hints/sunos_4_1.sh and util.c --AD
12682 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12684 $cat >>try.c <<EOCP
12686 #$i_unistd I_UNISTD
12688 # include <unistd.h>
12690 #$d_sysconf HAS_SYSCONF
12691 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12692 #ifdef HAS_STDIO_STREAM_ARRAY
12693 # define STDIO_STREAM_ARRAY $stdio_stream_array
12696 FILE* p = fopen("try.out", "w");
12700 # ifdef TRY_FPRINTF
12704 #ifdef TRY_FFLUSH_NULL
12707 #ifdef TRY_FFLUSH_ALL
12709 long open_max = -1;
12710 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12711 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12713 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12714 open_max = sysconf(_SC_OPEN_MAX);
12717 open_max = FOPEN_MAX;
12720 open_max = OPEN_MAX;
12729 # ifdef HAS_STDIO_STREAM_ARRAY
12730 if (open_max > 0) {
12732 for (i = 0; i < open_max; i++)
12733 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12734 STDIO_STREAM_ARRAY[i]._file < open_max &&
12735 STDIO_STREAM_ARRAY[i]._flag)
12736 fflush(&STDIO_STREAM_ARRAY[i]);
12744 : first we have to find out how _not_ to flush
12745 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12747 set try -DTRY_FPUTC
12748 if eval $compile; then
12750 ./try$exe_ext 2>/dev/null
12751 if $test ! -s try.out -a "X$?" = X42; then
12757 set try -DTRY_FPRINTF
12759 if eval $compile; then
12761 ./try$exe_ext 2>/dev/null
12762 if $test ! -s try.out -a "X$?" = X42; then
12763 output=-DTRY_FPRINTF
12769 : check for fflush NULL behaviour
12770 case "$fflushNULL" in
12771 '') set try -DTRY_FFLUSH_NULL $output
12772 if eval $compile; then
12774 ./try$exe_ext 2>/dev/null
12776 if $test -s try.out -a "X$code" = X42; then
12777 fflushNULL="`$cat try.out`"
12779 if $test "X$code" != X42; then
12781 (If this test failed, don't worry, we'll try another method shortly.)
12786 $rm -f core try.core core.try.*
12787 case "$fflushNULL" in
12789 Your fflush(NULL) works okay for output streams.
12790 Let's see if it clobbers input pipes...
12792 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12793 # bug that improperly flushes the input end of pipes. So we avoid the
12794 # autoflush on fork/system/exec support for now. :-(
12795 $cat >tryp.c <<EOCP
12798 main(int argc, char **argv)
12804 while ((i = getc(stdin)) != -1
12805 && (*bp++ = i) != '\n'
12806 && bp < &buf[1024])
12809 fprintf(stdout, "%s", buf);
12817 fflushNULL="$define"
12819 if eval $compile; then
12821 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12822 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12824 fflush(NULL) seems to behave okay with input streams.
12826 fflushNULL="$define"
12829 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
12831 fflushNULL="$undef"
12834 $rm -f core tryp.c tryp.core core.tryp.*
12837 Your fflush(NULL) isn't working (contrary to ANSI C).
12839 fflushNULL="$undef"
12842 Cannot figure out whether your fflush(NULL) works or not.
12843 I'm assuming it doesn't (contrary to ANSI C).
12845 fflushNULL="$undef"
12849 $define|true|[yY]*)
12850 fflushNULL="$define"
12853 fflushNULL="$undef"
12856 : check explicit looping only if NULL did not work, and if the pipe
12857 : bug does not show up on an explicit flush too
12858 case "$fflushNULL" in
12860 $cat >tryp.c <<EOCP
12863 main(int argc, char **argv)
12869 while ((i = getc(stdin)) != -1
12870 && (*bp++ = i) != '\n'
12871 && bp < &buf[1024])
12874 fprintf(stdout, "%s", buf);
12883 if eval $compile; then
12885 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12886 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12888 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12890 : now check for fflushall behaviour
12891 case "$fflushall" in
12892 '') set try -DTRY_FFLUSH_ALL $output
12893 if eval $compile; then
12895 (Now testing the other method--but note that this also may fail.)
12898 ./try$exe_ext 2>/dev/null
12899 if $test -s try.out -a "X$?" = X42; then
12900 fflushall="`$cat try.out`"
12903 $rm -f core try.core core.try.*
12904 case "$fflushall" in
12906 Whew. Flushing explicitly all the stdio streams works.
12908 fflushall="$define"
12911 Sigh. Flushing explicitly all the stdio streams doesn't work.
12916 Cannot figure out whether flushing stdio streams explicitly works or not.
12917 I'm assuming it doesn't.
12923 "$define"|true|[yY]*)
12924 fflushall="$define"
12932 All is futile. Even fflush(stdin) clobbers input pipes!
12939 $rm -f core tryp.c tryp.core core.tryp.*
12941 *) fflushall="$undef"
12945 case "$fflushNULL$fflushall" in
12948 OK, I give up. I cannot figure out how to flush pending stdio output.
12949 We won't be flushing handles at all before fork/exec/popen.
12953 $rm -f try.* try$exe_ext
12955 : Store the full pathname to the ar program for use in the C program
12956 : Respect a hint or command line value for full_ar.
12961 : Store the full pathname to the sed program for use in the C program
12964 : see what type gids are declared as in the kernel
12966 echo "Looking for the type for group ids returned by getgid()."
12967 set gid_t gidtype xxx stdio.h sys/types.h
12971 xxx=`./findhdr sys/user.h`
12972 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12974 unsigned) dflt="$1 $2" ;;
12978 *) dflt="$gidtype";;
12981 gid_t) echo "gid_t found." ;;
12982 *) rp="What is the type for group ids returned by getgid()?"
12990 *_t) zzz="$gidtype" ;;
12993 echo "Checking the size of $zzz..." >&4
12995 #include <sys/types.h>
12998 printf("%d\n", (int)sizeof($gidtype));
13003 if eval $compile_ok; then
13007 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13010 echo "Your $zzz is $gidsize bytes long."
13015 echo "(I can't compile the test program--guessing $gidsize.)" >&4
13021 *_t) zzz="$gidtype" ;;
13024 echo "Checking the sign of $zzz..." >&4
13026 #include <sys/types.h>
13037 if eval $compile; then
13041 echo "(I can't execute the test program--guessing unsigned.)" >&4
13045 1) echo "Your $zzz is unsigned." ;;
13046 -1) echo "Your $zzz is signed." ;;
13052 echo "(I can't compile the test program--guessing unsigned.)" >&4
13058 if $test X"$quadtype" != X; then
13060 echo "Checking how to print 64-bit integers..." >&4
13062 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13063 $cat >try.c <<'EOCP'
13064 #include <sys/types.h>
13067 int q = 12345678901;
13068 printf("%ld\n", q);
13072 if eval $compile; then
13073 yyy=`./try$exe_ext`
13076 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13077 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
13078 echo "We will use %d."
13084 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13085 $cat >try.c <<'EOCP'
13086 #include <sys/types.h>
13089 long q = 12345678901;
13090 printf("%ld\n", q);
13094 if eval $compile; then
13095 yyy=`./try$exe_ext`
13098 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13099 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
13100 echo "We will use %ld."
13106 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13107 $cat >try.c <<'EOCP'
13108 #include <sys/types.h>
13109 #include <inttypes.h>
13112 int64_t q = 12345678901;
13113 printf("%" PRId64 "\n", q);
13117 if eval $compile; then
13118 yyy=`./try$exe_ext`
13121 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13122 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
13123 echo "We will use the C9X style."
13129 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13130 $cat >try.c <<'EOCP'
13131 #include <sys/types.h>
13134 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
13135 printf("%lld\n", q);
13139 if eval $compile; then
13140 yyy=`./try$exe_ext`
13143 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13144 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
13145 echo "We will use the %lld style."
13151 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13153 #include <sys/types.h>
13156 $quadtype q = 12345678901;
13157 printf("%Ld\n", q);
13161 if eval $compile; then
13162 yyy=`./try$exe_ext`
13165 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13166 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13167 echo "We will use %Ld."
13173 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13175 #include <sys/types.h>
13178 $quadtype q = 12345678901;
13179 printf("%qd\n", q);
13183 if eval $compile; then
13184 yyy=`./try$exe_ext`
13187 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13188 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13189 echo "We will use %qd."
13195 if $test X"$sPRId64" = X; then
13196 echo "Cannot figure out how to print 64-bit integers." >&4
13204 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13205 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
13207 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13208 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
13214 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13216 if $test X"$ivsize" = X8; then
13217 ivdformat="$sPRId64"
13218 uvuformat="$sPRIu64"
13219 uvoformat="$sPRIo64"
13220 uvxformat="$sPRIx64"
13222 if $test X"$ivsize" = X"$longsize"; then
13228 if $test X"$ivsize" = X"$intsize"; then
13235 if $test X"$ivsize" = X"$shortsize"; then
13245 case "$ivdformat" in
13246 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13253 $echo "Checking the format string to be used for gids..." >&4
13256 -1) if $test X"$gidsize" = X"$ivsize"; then
13257 gidformat="$ivdformat"
13259 if $test X"$gidsize" = X"$longsize"; then
13262 if $test X"$gidsize" = X"$intsize"; then
13265 if $test X"$gidsize" = X"$shortsize"; then
13272 *) if $test X"$gidsize" = X"$uvsize"; then
13273 gidformat="$uvuformat"
13275 if $test X"$gidsize" = X"$longsize"; then
13278 if $test X"$gidsize" = X"$intsize"; then
13281 if $test X"$gidsize" = X"$shortsize"; then
13290 : see if getgroups exists
13291 set getgroups d_getgrps
13294 : see if setgroups exists
13295 set setgroups d_setgrps
13299 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13301 case "$d_getgrps$d_setgrps" in
13303 case "$groupstype" in
13304 '') dflt="$gidtype" ;;
13305 *) dflt="$groupstype" ;;
13308 What type of pointer is the second argument to getgroups() and setgroups()?
13309 Usually this is the same as group ids, $gidtype, but not always.
13312 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13316 *) groupstype="$gidtype";;
13320 echo "Checking if your $make program sets \$(MAKE)..." >&4
13321 case "$make_set_make" in
13323 $sed 's/^X //' > testmake.mak << 'EOF'
13325 X @echo 'maketemp="$(MAKE)"'
13327 case "`$make -f testmake.mak 2>/dev/null`" in
13328 *maketemp=*) make_set_make='#' ;;
13329 *) make_set_make="MAKE=$make" ;;
13331 $rm -f testmake.mak
13334 case "$make_set_make" in
13335 '#') echo "Yup, it does.";;
13336 *) echo "Nope, it doesn't.";;
13339 : see what type is used for mode_t
13340 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13341 set mode_t modetype int stdio.h sys/types.h
13344 : define a fucntion to check prototypes
13345 $cat > protochk <<EOSH
13348 optimize="$optimize"
13350 prototype="$prototype"
13355 $cat >> protochk <<'EOSH'
13360 while test $# -ge 2; do
13362 $define) echo "#include <$2>" >> try.c ;;
13363 literal) echo "$2" >> try.c ;;
13367 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13368 cat >> try.c <<'EOCP'
13369 #ifdef CAN_PROTOTYPE
13370 #define _(args) args
13375 echo "$foo" >> try.c
13376 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13377 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13383 $eunicefix protochk
13385 : see what type is used for size_t
13386 rp="What is the type used for the length parameter for string functions?"
13387 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13390 : check for type of arguments to gethostbyaddr.
13391 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13392 case "$d_gethbyaddr" in
13396 Checking to see what type of arguments are accepted by gethostbyaddr().
13398 hdrs="$define sys/types.h
13399 $d_socket sys/socket.h
13400 $i_niin netinet/in.h
13402 $i_unistd unistd.h"
13403 : The first arg can 'char *' or 'void *'
13404 : The second arg is some of integral type
13405 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13406 for yyy in size_t long int; do
13407 case "$netdb_host_type" in
13408 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13409 if ./protochk "$try" $hdrs; then
13410 echo "Your system accepts $xxx for the first arg."
13411 echo "...and $yyy for the second arg."
13412 netdb_host_type="$xxx"
13413 netdb_hlen_type="$yyy"
13419 : In case none of those worked, prompt the user.
13420 case "$netdb_host_type" in
13421 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13424 netdb_host_type=$ans
13425 rp='What is the type for the 2nd argument to gethostbyaddr?'
13428 netdb_hlen_type=$ans
13432 *) : no gethostbyaddr, so pick harmless defaults
13433 netdb_host_type='char *'
13434 netdb_hlen_type="$sizetype"
13437 # Remove the "const" if needed. -- but then we'll have a
13439 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13442 : check for type of argument to gethostbyname.
13443 if test "X$netdb_name_type" = X ; then
13444 case "$d_gethbyname" in
13448 Checking to see what type of argument is accepted by gethostbyname().
13450 hdrs="$define sys/types.h
13451 $d_socket sys/socket.h
13452 $i_niin netinet/in.h
13454 $i_unistd unistd.h"
13455 for xxx in "const char *" "char *"; do
13456 case "$netdb_name_type" in
13457 '') try="extern struct hostent *gethostbyname($xxx);"
13458 if ./protochk "$try" $hdrs; then
13459 echo "Your system accepts $xxx."
13460 netdb_name_type="$xxx"
13465 : In case none of those worked, prompt the user.
13466 case "$netdb_name_type" in
13467 '') rp='What is the type for the 1st argument to gethostbyname?'
13470 netdb_name_type=$ans
13474 *) : no gethostbyname, so pick harmless default
13475 netdb_name_type='char *'
13480 : check for type of 1st argument to getnetbyaddr.
13481 if test "X$netdb_net_type" = X ; then
13482 case "$d_getnbyaddr" in
13486 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13488 hdrs="$define sys/types.h
13489 $d_socket sys/socket.h
13490 $i_niin netinet/in.h
13492 $i_unistd unistd.h"
13493 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13494 case "$netdb_net_type" in
13495 '') try="extern struct netent *getnetbyaddr($xxx, int);"
13496 if ./protochk "$try" $hdrs; then
13497 echo "Your system accepts $xxx."
13498 netdb_net_type="$xxx"
13503 : In case none of those worked, prompt the user.
13504 case "$netdb_net_type" in
13505 '') rp='What is the type for the 1st argument to getnetbyaddr?'
13508 netdb_net_type=$ans
13512 *) : no getnetbyaddr, so pick harmless default
13513 netdb_net_type='long'
13517 : locate the preferred pager for this system
13531 '') dflt=/usr/ucb/more;;
13538 rp='What pager is used on your system?'
13542 : see what type pids are declared as in the kernel
13543 rp="What is the type of process ids on this system?"
13544 set pid_t pidtype int stdio.h sys/types.h
13547 : Find earliest binary compatible site_perl subdirectory perl can use.
13548 case "$bincompat5005" in
13549 "$define") xs_apiversion='5.005' ;;
13550 *) xs_apiversion=$version ;; # The current site_perl version.
13552 : Find earliest pure perl site_perl subdirectory perl can use.
13553 : The versioned directories started at 5.005.
13554 pm_apiversion='5.005'
13556 : check for length of pointer
13560 echo "Checking to see how big your pointers are..." >&4
13561 if test "$voidflags" -gt 7; then
13562 echo '#define VOID_PTR char *' > try.c
13564 echo '#define VOID_PTR void *' > try.c
13566 $cat >>try.c <<'EOCP'
13570 printf("%d\n", (int)sizeof(VOID_PTR));
13575 if eval $compile_ok; then
13577 echo "Your pointers are $ptrsize bytes long."
13580 echo "(I can't seem to compile the test program. Guessing...)" >&4
13581 rp="What is the size of a pointer (in bytes)?"
13589 : see if ar generates random libraries by itself
13591 echo "Checking how to generate random libraries on your machine..." >&4
13592 echo 'int bar1() { return bar2(); }' > bar1.c
13593 echo 'int bar2() { return 2; }' > bar2.c
13594 $cat > foo.c <<'EOP'
13595 int main() { printf("%d\n", bar1()); exit(0); }
13597 $cc $ccflags -c bar1.c >/dev/null 2>&1
13598 $cc $ccflags -c bar2.c >/dev/null 2>&1
13599 $cc $ccflags -c foo.c >/dev/null 2>&1
13600 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13601 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13602 ./foobar >/dev/null 2>&1; then
13603 echo "$ar appears to generate random libraries itself."
13606 elif $ar ts bar$_a >/dev/null 2>&1 &&
13607 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13608 ./foobar >/dev/null 2>&1; then
13609 echo "a table of contents needs to be added with '$ar ts'."
13616 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13617 $test -f $ranlib || ranlib=''
13620 if $test -n "$ranlib"; then
13621 echo "your system has '$ranlib'; we'll use that."
13624 echo "your system doesn't seem to support random libraries"
13625 echo "so we'll use lorder and tsort to order the libraries."
13632 : check for type of arguments to select.
13633 case "$selecttype" in
13634 '') case "$d_select" in
13638 Checking to see what type of arguments are accepted by select().
13640 hdrs="$define sys/types.h
13641 $i_systime sys/time.h
13642 $i_sysselct sys/select.h
13643 $d_socket sys/socket.h"
13644 : The first arg can be int, unsigned, or size_t
13645 : The last arg may or may not be 'const'
13647 : void pointer has been seen but using that
13648 : breaks the selectminbits test
13649 for xxx in 'fd_set *' 'int *'; do
13650 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13651 for tmo in 'struct timeval *' 'const struct timeval *'; do
13653 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13654 if ./protochk "$try" $hdrs; then
13655 echo "Your system accepts $xxx."
13664 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13665 case "$d_fd_set" in
13666 $define) dflt="fd_set *" ;;
13675 *) : no select, so pick a harmless default
13682 : check for the select 'width'
13683 case "$selectminbits" in
13684 '') case "$d_select" in
13688 Checking to see on how many bits at a time your select() operates...
13691 #include <sys/types.h>
13693 #$i_systime I_SYS_TIME
13694 #$i_systimek I_SYS_TIME_KERNEL
13699 # ifdef I_SYS_TIME_KERNEL
13702 # include <sys/time.h>
13703 # ifdef I_SYS_TIME_KERNEL
13707 #$i_sysselct I_SYS_SELECT
13708 #ifdef I_SYS_SELECT
13709 #include <sys/select.h>
13711 #$d_socket HAS_SOCKET
13713 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13717 #define S sizeof(*(b))
13719 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13720 #define NBITS (NBYTES * 8)
13729 fp = fopen("try.c", "r");
13735 b = ($selecttype)s;
13736 for (i = 0; i < NBITS; i++)
13740 select(fd + 1, b, 0, 0, &t);
13741 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13742 printf("%d\n", i + 1);
13747 if eval $compile_ok; then
13748 selectminbits=`./try`
13749 case "$selectminbits" in
13751 Cannot figure out on how many bits at a time your select() operates.
13752 I'll play safe and guess it is 32 bits.
13758 *) bits="$selectminbits bits" ;;
13760 echo "Your select() operates on $bits at a time." >&4
13762 rp='What is the minimum number of bits your select() operates on?'
13763 case "$byteorder" in
13764 1234|12345678) dflt=32 ;;
13769 selectminbits="$val"
13773 *) : no select, so pick a harmless default
13780 : Trace out the files included by signal.h, then look for SIGxxx names.
13781 : Remove SIGARRAYSIZE used by HPUX.
13782 : Remove SIGSTKSIZE used by Linux.
13783 : Remove SIGSTKSZ used by Posix.
13784 : Remove SIGTYP void lines used by OS2.
13785 : Some cpps, like os390, dont give the file name anywhere
13786 if [ "X$fieldn" = X ]; then
13787 : Just make some guesses. We check them later.
13788 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13790 xxx=`echo '#include <signal.h>' |
13791 $cppstdin $cppminus $cppflags 2>/dev/null |
13792 $grep '^[ ]*#.*include' |
13793 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13795 : Check this list of files to be sure we have parsed the cpp output ok.
13796 : This will also avoid potentially non-existent files, such
13799 for xx in $xxx /dev/null ; do
13800 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13802 : If we have found no files, at least try signal.h
13803 case "$xxxfiles" in
13804 '') xxxfiles=`./findhdr signal.h` ;;
13807 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13808 print substr($2, 4, 20)
13810 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13811 print substr($3, 4, 20)
13813 : Append some common names just in case the awk scan failed.
13814 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13815 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13816 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13817 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13818 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13820 : generate a few handy files for later
13821 $cat > signal.c <<'EOCP'
13822 #include <sys/types.h>
13823 #include <signal.h>
13827 /* Strange style to avoid deeply-nested #if/#else/#endif */
13830 # define NSIG (_NSIG)
13836 # define NSIG (SIGMAX+1)
13842 # define NSIG (SIG_MAX+1)
13848 # define NSIG (MAXSIG+1)
13854 # define NSIG (MAX_SIG+1)
13859 # ifdef SIGARRAYSIZE
13860 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13866 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13870 /* Default to some arbitrary number that's big enough to get most
13871 of the common signals.
13877 printf("NSIG %d\n", NSIG);
13883 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13885 printf "#ifdef SIG"; printf $1; printf "\n"
13886 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13887 printf $1; printf ");\n"
13891 printf "#endif /* JUST_NSIG */\n";
13892 printf "exit(0);\n}\n";
13895 $cat >signal.awk <<'EOP'
13896 BEGIN { ndups = 0 }
13897 $1 ~ /^NSIG$/ { nsig = $2 }
13898 ($1 !~ /^NSIG$/) && (NF == 2) {
13899 if ($2 > maxsig) { maxsig = $2 }
13900 if (sig_name[$2]) {
13901 dup_name[ndups] = $1
13902 dup_num[ndups] = $2
13914 printf("NSIG %d\n", nsig);
13915 for (n = 1; n < nsig; n++) {
13917 printf("%s %d\n", sig_name[n], sig_num[n])
13920 printf("NUM%d %d\n", n, n)
13923 for (n = 0; n < ndups; n++) {
13924 printf("%s %d\n", dup_name[n], dup_num[n])
13928 $cat >signal_cmd <<EOS
13930 if $test -s signal.lst; then
13931 echo "Using your existing signal.lst file"
13936 $cat >>signal_cmd <<'EOS'
13939 if eval $compile_ok; then
13940 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13942 echo "(I can't seem be able to compile the whole test program)" >&4
13943 echo "(I'll try it in little pieces.)" >&4
13944 set signal -DJUST_NSIG
13945 if eval $compile_ok; then
13946 ./signal$_exe > signal.nsg
13949 echo "I can't seem to figure out how many signals you have." >&4
13950 echo "Guessing 50." >&4
13951 echo 'NSIG 50' > signal.nsg
13953 : Now look at all the signal names, one at a time.
13954 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13955 $cat > signal.c <<EOCP
13956 #include <sys/types.h>
13957 #include <signal.h>
13960 printf("$xx %d\n", SIG${xx});
13965 if eval $compile; then
13966 echo "SIG${xx} found."
13967 ./signal$_exe >> signal.ls1
13969 echo "SIG${xx} NOT found."
13972 if $test -s signal.ls1; then
13973 $cat signal.nsg signal.ls1 |
13974 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13978 if $test -s signal.lst; then
13981 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13982 echo 'kill -l' >signal
13983 set X `csh -f <signal`
13987 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13989 echo $@ | $tr ' ' $trnl | \
13990 $awk '{ printf "%s %d\n", $1, ++s; }
13991 END { printf "NSIG %d\n", ++s }' >signal.lst
13993 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13995 chmod a+x signal_cmd
13996 $eunicefix signal_cmd
13998 : generate list of signal names
14000 case "$sig_name_init" in
14002 *) case "$sig_num_init" in
14003 ''|*,*) doinit=yes ;;
14008 echo "Generating a list of signal names and numbers..." >&4
14010 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14011 sig_name=`$awk 'BEGIN { printf "ZERO " }
14012 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14013 sig_num=`$awk 'BEGIN { printf "0 " }
14014 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14015 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
14016 !/^NSIG/ { printf "\"%s\", ", $1 }
14017 END { printf "0\n" }' signal.lst`
14018 sig_num_init=`$awk 'BEGIN { printf "0, " }
14019 !/^NSIG/ { printf "%d, ", $2}
14020 END { printf "0\n"}' signal.lst`
14023 echo "The following $sig_count signals are available:"
14025 echo $sig_name | $awk \
14026 'BEGIN { linelen = 0 }
14028 for (i = 1; i <= NF; i++) {
14029 name = "SIG" $i " "
14030 linelen = linelen + length(name)
14031 if (linelen > 70) {
14033 linelen = length(name)
14039 $rm -f signal signal.c signal.awk signal.lst signal_cmd
14042 case "$sizetype" in
14043 *_t) zzz="$sizetype" ;;
14044 *) zzz="filesize" ;;
14046 echo "Checking the size of $zzz..." >&4
14048 #include <sys/types.h>
14051 printf("%d\n", (int)sizeof($sizetype));
14056 if eval $compile_ok; then
14060 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14063 echo "Your $zzz size is $sizesize bytes."
14068 echo "(I can't compile the test program--guessing $sizesize.)" >&4
14072 : check for socklen_t
14074 echo "Checking to see if you have socklen_t..." >&4
14076 #include <sys/types.h>
14077 #$d_socket HAS_SOCKET
14079 #include <sys/socket.h>
14081 int main() { socklen_t x = 16; }
14084 if eval $compile; then
14086 echo "You have socklen_t."
14089 echo "You do not have socklen_t."
14090 case "$sizetype" in
14091 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14098 : check for type of the size argument to socket calls
14099 case "$d_socket" in
14103 Checking to see what type is the last argument of accept().
14105 hdrs="$define sys/types.h $d_socket sys/socket.h"
14107 case "$d_socklen_t" in
14108 "$define") yyy="$yyy socklen_t"
14110 yyy="$yyy $sizetype int long unsigned"
14111 for xxx in $yyy; do
14112 case "$socksizetype" in
14113 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14114 if ./protochk "$try" $hdrs; then
14115 echo "Your system accepts '$xxx *' for the last argument of accept()."
14116 socksizetype="$xxx"
14121 : In case none of those worked, prompt the user.
14122 case "$socksizetype" in
14123 '') rp='What is the type for socket address structure sizes?'
14130 *) : no sockets, so pick relatively harmless default
14135 : see what type is used for signed size_t
14136 set ssize_t ssizetype int stdio.h sys/types.h
14139 $cat > ssize.c <<EOM
14141 #include <sys/types.h>
14142 #define Size_t $sizetype
14143 #define SSize_t $dflt
14146 if (sizeof(Size_t) == sizeof(SSize_t))
14148 else if (sizeof(Size_t) == sizeof(int))
14157 if eval $compile_ok && ./ssize > /dev/null; then
14158 ssizetype=`./ssize`
14159 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14162 Help! I can't compile and run the ssize_t test program: please enlighten me!
14163 (This is probably a misconfiguration in your system or libraries, and
14164 you really ought to fix it. Still, I'll try anyway.)
14166 I need a type that is the same size as $sizetype, but is guaranteed to
14167 be signed. Common values are ssize_t, int and long.
14170 rp="What signed type is the same size as $sizetype?"
14174 $rm -f ssize ssize.*
14176 : see what type of char stdio uses.
14178 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14179 echo "Your stdio uses unsigned chars." >&4
14180 stdchar="unsigned char"
14182 echo "Your stdio uses signed chars." >&4
14186 : see if time exists
14188 if test "X$d_time" = X -o X"$timetype" = X; then
14189 if set time val -f d_time; eval $csym; $val; then
14190 echo 'time() found.' >&4
14192 rp="What is the type returned by time() on this system?"
14193 set time_t timetype long stdio.h sys/types.h
14196 echo 'time() not found, hope that will do.' >&4
14204 : see what type uids are declared as in the kernel
14206 echo "Looking for the type for user ids returned by getuid()."
14207 set uid_t uidtype xxx stdio.h sys/types.h
14211 xxx=`./findhdr sys/user.h`
14212 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14214 unsigned) dflt="$1 $2" ;;
14218 *) dflt="$uidtype";;
14221 uid_t) echo "uid_t found." ;;
14222 *) rp="What is the type for user ids returned by getuid()?"
14230 *_t) zzz="$uidtype" ;;
14233 echo "Checking the size of $zzz..." >&4
14235 #include <sys/types.h>
14238 printf("%d\n", (int)sizeof($uidtype));
14243 if eval $compile_ok; then
14247 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14250 echo "Your $zzz is $uidsize bytes long."
14255 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14260 *_t) zzz="$uidtype" ;;
14263 echo "Checking the sign of $zzz..." >&4
14265 #include <sys/types.h>
14276 if eval $compile; then
14280 echo "(I can't execute the test program--guessing unsigned.)" >&4
14284 1) echo "Your $zzz is unsigned." ;;
14285 -1) echo "Your $zzz is signed." ;;
14291 echo "(I can't compile the test program--guessing unsigned.)" >&4
14297 $echo "Checking the format string to be used for uids..." >&4
14300 -1) if $test X"$uidsize" = X"$ivsize"; then
14301 uidformat="$ivdformat"
14303 if $test X"$uidsize" = X"$longsize"; then
14306 if $test X"$uidsize" = X"$intsize"; then
14309 if $test X"$uidsize" = X"$shortsize"; then
14316 *) if $test X"$uidsize" = X"$uvsize"; then
14317 uidformat="$uvuformat"
14319 if $test X"$uidsize" = X"$longsize"; then
14322 if $test X"$uidsize" = X"$intsize"; then
14325 if $test X"$uidsize" = X"$shortsize"; then
14334 : see if dbm.h is available
14335 : see if dbmclose exists
14336 set dbmclose d_dbmclose
14339 case "$d_dbmclose" in
14349 *) set rpcsvc/dbm.h i_rpcsvcdbm
14354 *) echo "We won't be including <dbm.h>"
14364 : see if this is a sys/file.h system
14369 : do we need to include sys/file.h ?
14373 if $h_sysfile; then
14375 echo "We'll be including <sys/file.h>." >&4
14378 echo "We won't be including <sys/file.h>." >&4
14388 : see if fcntl.h is there
14393 : see if we can include fcntl.h
14399 echo "We'll be including <fcntl.h>." >&4
14402 if $h_sysfile; then
14403 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14405 echo "We won't be including <fcntl.h>." >&4
14417 : see if this is a iconv.h system
14418 set iconv.h i_iconv
14421 : see if this is a ieeefp.h system
14422 set ieeefp.h i_ieeefp
14425 : see if this is a libutil.h system
14426 set libutil.h i_libutil
14429 : see if locale.h is available
14430 set locale.h i_locale
14433 : see if mach cthreads are available
14434 if test "X$usethreads" = "X$define"; then
14435 set mach/cthreads.h i_machcthr
14438 i_machcthr="$undef"
14443 : see if this is a math.h system
14447 : see if this is a mntent.h system
14448 set mntent.h i_mntent
14451 : see if ndbm.h is available
14456 : see if dbm_open exists
14457 set dbm_open d_dbm_open
14459 case "$d_dbm_open" in
14462 echo "We won't be including <ndbm.h>"
14471 : see if net/errno.h is available
14473 set net/errno.h val
14476 : Unfortunately, it causes problems on some systems. Arrgh.
14479 cat > try.c <<'EOM'
14482 #include <net/errno.h>
14488 if $cc $ccflags -c try.c >/dev/null 2>&1; then
14489 echo "We'll be including <net/errno.h>." >&4
14491 echo "We won't be including <net/errno.h>." >&4
14500 : see if netinet/tcp.h is available
14501 set netinet/tcp.h i_netinettcp
14504 : see if this is a poll.h system
14508 : see if this is a prot.h system
14513 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
14514 $cat <<'EOSH' > Cppsym.know
14515 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14516 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14517 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14518 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14519 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14520 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14521 bull c cadmus clipper CMU COFF COMPILER_VERSION
14522 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14523 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14524 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14525 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14526 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14527 H3050R H3050RX hbullx20 hcx host_mips
14528 hp200 hp300 hp700 HP700 hp800 hp9000
14529 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14530 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14531 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14532 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14533 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14534 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14535 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14536 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14537 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14538 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14539 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14540 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14541 MATH_HAS_NO_SIDE_EFFECTS
14542 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14543 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14544 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14545 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14546 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14547 NetBSD news1500 news1700 news1800 news1900 news3700
14548 news700 news800 news900 NeXT NLS ns16000 ns32000
14549 ns32016 ns32332 ns32k nsc32000
14550 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14551 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14552 pc532 pdp11 PGC PIC plexus PORTAR posix
14553 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14554 POSIX_C_SOURCE POSIX_SOURCE POWER
14555 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14556 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14557 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14558 sony sony_news sonyrisc sparc sparclite spectrum
14559 stardent stdc STDC_EXT stratos sun sun3 sun386
14560 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14561 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14562 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14563 sysV68 sysV88 Tek4132 Tek4300 titan
14564 tower tower32 tower32_200 tower32_600 tower32_700
14565 tower32_800 tower32_850 tss
14566 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14567 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14568 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14569 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14570 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14571 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14574 # Maybe put other stuff here too.
14575 cat <<EOSH >>Cppsym.know
14578 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14579 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14580 $cat Cppsym.know > Cppsym.c
14581 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14582 $rm -f Cppsym.a Cppsym.b Cppsym.c
14583 cat <<EOSH > Cppsym
14585 if $test \$# -gt 0; then
14586 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14587 if $test -s Cppsym.got; then
14594 $tr " " "$trnl" | ./Cppsym.try
14600 cat <<EOSH > Cppsym.try
14602 cat <<'EOCP' > try.c
14608 cat <<'EOSH' >> Cppsym.try
14610 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
14611 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
14612 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
14613 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
14617 cat <<EOSH >> Cppsym.try
14619 case "$osname-$gccversion" in
14620 irix-) ccflags="\$ccflags -woff 1178" ;;
14621 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14623 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14625 chmod +x Cppsym.try
14626 $eunicefix Cppsym.try
14627 ./Cppsym < Cppsym.know > Cppsym.true
14628 : now check the C compiler for additional symbols
14629 postprocess_cc_v=''
14631 aix) postprocess_cc_v="|$tr , ' '" ;;
14638 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14641 -D*) echo "\$i" | $sed 's/^-D//';;
14642 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14647 postprocess_cc_v=''
14650 ./ccsym > ccsym1.raw
14651 if $test -s ccsym1.raw; then
14652 $sort ccsym1.raw | $uniq >ccsym.raw
14654 mv ccsym1.raw ccsym.raw
14657 $awk '/\=/ { print $0; next }
14658 { print $0"=1" }' ccsym.raw >ccsym.list
14659 $awk '/\=/ { print $0; next }
14660 { print $0"=1" }' Cppsym.true >ccsym.true
14661 $comm -13 ccsym.true ccsym.list >ccsym.own
14662 $comm -12 ccsym.true ccsym.list >ccsym.com
14663 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14665 if $test -z ccsym.raw; then
14666 echo "Your C compiler doesn't seem to define any symbols!" >&4
14668 echo "However, your C preprocessor defines the following symbols:"
14671 cppsymbols=`$cat Cppsym.true`
14672 cppsymbols=`echo $cppsymbols`
14673 cppccsymbols="$cppsymbols"
14675 if $test -s ccsym.com; then
14676 echo "Your C compiler and pre-processor define these symbols:"
14677 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14680 cppccsymbols=`$cat ccsym.com`
14681 cppccsymbols=`echo $cppccsymbols`
14682 $test "$silent" || sleep 1
14684 if $test -s ccsym.cpp; then
14685 $test "$also" && echo " "
14686 echo "Your C pre-processor ${also}defines the following symbols:"
14687 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14689 cppsymbols=`$cat ccsym.cpp`
14690 cppsymbols=`echo $cppsymbols`
14691 $test "$silent" || sleep 1
14693 if $test -s ccsym.own; then
14694 $test "$also" && echo " "
14695 echo "Your C compiler ${also}defines the following cpp symbols:"
14696 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14697 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14698 ccsymbols=`$cat ccsym.own`
14699 ccsymbols=`echo $ccsymbols`
14700 $test "$silent" || sleep 1
14703 $rm -f ccsym* Cppsym.*
14705 : see if this is a termio system
14709 if $test `./findhdr termios.h`; then
14710 set tcsetattr i_termios
14716 "$define") echo "You have POSIX termios.h... good!" >&4;;
14717 *) if ./Cppsym pyr; then
14718 case "`/bin/universe`" in
14719 ucb) if $test `./findhdr sgtty.h`; then
14721 echo "<sgtty.h> found." >&4
14723 echo "System is pyramid with BSD universe."
14724 echo "<sgtty.h> not found--you could have problems." >&4
14726 *) if $test `./findhdr termio.h`; then
14728 echo "<termio.h> found." >&4
14730 echo "System is pyramid with USG universe."
14731 echo "<termio.h> not found--you could have problems." >&4
14735 if $test `./findhdr termio.h`; then
14736 echo "<termio.h> found." >&4
14738 elif $test `./findhdr sgtty.h`; then
14739 echo "<sgtty.h> found." >&4
14742 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14745 if $test `./findhdr sgtty.h`; then
14746 echo "<sgtty.h> found." >&4
14748 elif $test `./findhdr termio.h`; then
14749 echo "<termio.h> found." >&4
14752 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14756 set i_termio; eval $setvar
14757 val=$val2; set i_sgtty; eval $setvar
14758 val=$val3; set i_termios; eval $setvar
14760 : see if this is a shadow.h system
14761 set shadow.h i_shadow
14764 : see if this is a socks.h system
14765 set socks.h i_socks
14768 : see if stdarg is available
14770 if $test `./findhdr stdarg.h`; then
14771 echo "<stdarg.h> found." >&4
14774 echo "<stdarg.h> NOT found." >&4
14778 : see if varags is available
14780 if $test `./findhdr varargs.h`; then
14781 echo "<varargs.h> found." >&4
14783 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14786 : set up the varargs testing programs
14787 $cat > varargs.c <<EOP
14789 #include <stdarg.h>
14792 #include <varargs.h>
14796 int f(char *p, ...)
14810 p = va_arg(ap, char *);
14815 $cat > varargs <<EOP
14817 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14826 : now check which varargs header should be included
14831 if `./varargs I_STDARG`; then
14833 elif `./varargs I_VARARGS`; then
14838 if `./varargs I_VARARGS`; then
14845 echo "I could not find the definition for va_dcl... You have problems..." >&4
14846 val="$undef"; set i_stdarg; eval $setvar
14847 val="$undef"; set i_varargs; eval $setvar
14852 case "$i_varhdr" in
14854 val="$define"; set i_stdarg; eval $setvar
14855 val="$undef"; set i_varargs; eval $setvar
14858 val="$undef"; set i_stdarg; eval $setvar
14859 val="$define"; set i_varargs; eval $setvar
14862 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14866 : see if stddef is available
14867 set stddef.h i_stddef
14870 : see if this is a sunmath.h system
14871 set sunmath.h i_sunmath
14874 : see if sys/access.h is available
14875 set sys/access.h i_sysaccess
14878 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14879 set sys/filio.h i_sysfilio
14882 if $test `./findhdr sys/ioctl.h`; then
14884 echo '<sys/ioctl.h> found.' >&4
14887 if $test $i_sysfilio = "$define"; then
14888 echo '<sys/ioctl.h> NOT found.' >&4
14890 $test $i_sgtty = "$define" && xxx="sgtty.h"
14891 $test $i_termio = "$define" && xxx="termio.h"
14892 $test $i_termios = "$define" && xxx="termios.h"
14893 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14900 : see if this is a syslog.h system
14901 set syslog.h i_syslog
14905 : see if this is a sys/mode.h system
14906 set sys/mode.h i_sysmode
14909 : see if sys/resource.h has to be included
14910 set sys/resource.h i_sysresrc
14913 : see if sys/security.h is available
14914 set sys/security.h i_syssecrt
14917 : see if this is a sys/statvfs.h system
14918 set sys/statvfs.h i_sysstatvfs
14921 : see if this is a sys/uio.h system
14922 set sys/uio.h i_sysuio
14925 : see if this is a sys/un.h system
14926 set sys/un.h i_sysun
14930 : see if this is a sys/utsname.h system
14931 set sys/utsname.h i_sysutsname
14934 : see if this is a syswait system
14935 set sys/wait.h i_syswait
14938 : see if this is a ustat.h system
14939 set ustat.h i_ustat
14942 : see if this is an utime system
14943 set utime.h i_utime
14946 : see if this is a values.h system
14947 set values.h i_values
14950 : see if this is a vfork system
14953 set vfork.h i_vfork
14961 : see if gdbm.h is available
14966 : see if gdbm_open exists
14967 set gdbm_open d_gdbm_open
14969 case "$d_gdbm_open" in
14972 echo "We won't be including <gdbm.h>"
14982 echo "Looking for extensions..." >&4
14983 : If we are using the old config.sh, known_extensions may contain
14984 : old or inaccurate or duplicate values.
14985 known_extensions=''
14986 nonxs_extensions=''
14987 : We do not use find because it might not be available.
14988 : We do not just use MANIFEST because the user may have dropped
14989 : some additional extensions into the source tree and expect them
14992 : Function to recursively find available extensions, ignoring DynaLoader
14993 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14997 DynaLoader|dynaload) ;;
14999 if $test -f $xxx/$xxx.xs; then
15000 known_extensions="$known_extensions $1$xxx";
15001 elif $test -f $xxx/Makefile.PL; then
15002 nonxs_extensions="$nonxs_extensions $1$xxx";
15004 if $test -d $xxx -a $# -lt 10; then
15007 eval $find_extensions;
15019 eval $find_extensions
15020 set X $nonxs_extensions
15022 nonxs_extensions="$*"
15023 set X $known_extensions
15025 known_extensions="$*"
15028 : Now see which are supported on this system.
15030 for xxx in $known_extensions ; do
15034 $define) avail_ext="$avail_ext $xxx" ;;
15037 GDBM_File|gdbm_fil)
15039 $define) avail_ext="$avail_ext $xxx" ;;
15042 NDBM_File|ndbm_fil)
15045 case "$osname-$use64bitint" in
15048 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15051 *) avail_ext="$avail_ext $xxx" ;;
15056 ODBM_File|odbm_fil)
15057 case "${i_dbm}${i_rpcsvcdbm}" in
15059 case "$osname-$use64bitint" in
15062 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15065 *) avail_ext="$avail_ext $xxx" ;;
15071 case "$useposix" in
15072 true|define|y) avail_ext="$avail_ext $xxx" ;;
15076 case "$useopcode" in
15077 true|define|y) avail_ext="$avail_ext $xxx" ;;
15081 case "$d_socket" in
15082 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15085 Sys/Syslog|sys/syslog)
15086 : XXX syslog requires socket
15087 case "$d_socket" in
15088 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15092 case "$usethreads" in
15093 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15097 : XXX Do we need a useipcsysv variable here
15098 case "${d_msg}${d_sem}${d_shm}" in
15099 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15102 *) avail_ext="$avail_ext $xxx"
15111 : Now see which nonxs extensions are supported on this system.
15112 : For now assume all are.
15114 for xxx in $nonxs_extensions ; do
15116 *) nonxs_ext="$nonxs_ext $xxx"
15128 A number of extensions are supplied with $package. You may choose to
15129 compile these extensions for dynamic loading (the default), compile
15130 them into the $package executable (static loading), or not include
15131 them at all. Answer "none" to include no extensions.
15132 Note that DynaLoader is always built and need not be mentioned here.
15135 case "$dynamic_ext" in
15136 '') dflt="$avail_ext" ;;
15137 *) dflt="$dynamic_ext"
15138 # Perhaps we are reusing an old out-of-date config.sh.
15141 if test X"$dynamic_ext" != X"$avail_ext"; then
15143 NOTICE: Your previous config.sh list may be incorrect.
15144 The extensions now available to you are
15146 but the default list from your previous config.sh is
15158 rp="What extensions do you wish to load dynamically?"
15161 none) dynamic_ext=' ' ;;
15162 *) dynamic_ext="$ans" ;;
15165 case "$static_ext" in
15167 : Exclude those already listed in dynamic linking
15169 for xxx in $avail_ext; do
15170 case " $dynamic_ext " in
15172 *) dflt="$dflt $xxx" ;;
15179 *) dflt="$static_ext"
15186 rp="What extensions do you wish to load statically?"
15189 none) static_ext=' ' ;;
15190 *) static_ext="$ans" ;;
15195 A number of extensions are supplied with $package. Answer "none"
15196 to include no extensions.
15197 Note that DynaLoader is always built and need not be mentioned here.
15200 case "$static_ext" in
15201 '') dflt="$avail_ext" ;;
15202 *) dflt="$static_ext"
15203 # Perhaps we are reusing an old out-of-date config.sh.
15206 if test X"$static_ext" != X"$avail_ext"; then
15208 NOTICE: Your previous config.sh list may be incorrect.
15209 The extensions now available to you are
15211 but the default list from your previous config.sh is
15220 : Exclude those that are not xs extensions
15224 rp="What extensions do you wish to include?"
15227 none) static_ext=' ' ;;
15228 *) static_ext="$ans" ;;
15233 set X $dynamic_ext $static_ext $nonxs_ext
15237 : Remove build directory name from cppstdin so it can be used from
15238 : either the present location or the final installed location.
15240 : Get out of the UU directory to get correct path name.
15242 case "$cppstdin" in
15244 echo "Stripping down cppstdin path name"
15250 : end of configuration questions
15252 echo "End of configuration questions."
15255 : back to where it started
15256 if test -d ../UU; then
15260 : configuration may be patched via a 'config.over' file
15261 if $test -f config.over; then
15264 rp='I see a config.over file. Do you wish to load it?'
15267 n*) echo "OK, I'll ignore it.";;
15269 echo "Configuration override changes have been loaded."
15274 : in case they want portability, strip down executable paths
15275 case "$d_portable" in
15278 echo "Stripping down executable paths..." >&4
15279 for file in $loclist $trylist; do
15281 eval $file=`basename $temp`
15286 : create config.sh file
15288 echo "Creating config.sh..." >&4
15289 $spitshell <<EOT >config.sh
15292 # This file was produced by running the Configure script. It holds all the
15293 # definitions figured out by Configure. Should you modify one of these values,
15294 # do not forget to propagate your changes by running "Configure -der". You may
15295 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15298 # Package name : $package
15299 # Source directory : $src
15300 # Configuration time: $cf_time
15301 # Configured by : $cf_by
15302 # Target system : $myuname
15312 Revision='$Revision'
15319 alignbytes='$alignbytes'
15320 ansi2knr='$ansi2knr'
15321 aphostname='$aphostname'
15322 api_revision='$api_revision'
15323 api_subversion='$api_subversion'
15324 api_version='$api_version'
15325 api_versionstring='$api_versionstring'
15328 archlibexp='$archlibexp'
15329 archname64='$archname64'
15330 archname='$archname'
15331 archobjs='$archobjs'
15336 bincompat5005='$bincompat5005'
15340 byteorder='$byteorder'
15342 castflags='$castflags'
15345 cccdlflags='$cccdlflags'
15346 ccdlflags='$ccdlflags'
15348 ccflags_uselargefiles='$ccflags_uselargefiles'
15349 ccsymbols='$ccsymbols'
15351 cf_email='$cf_email'
15353 charsize='$charsize'
15357 clocktype='$clocktype'
15359 compress='$compress'
15360 contains='$contains'
15364 cpp_stuff='$cpp_stuff'
15365 cppccsymbols='$cppccsymbols'
15366 cppflags='$cppflags'
15368 cppminus='$cppminus'
15370 cppstdin='$cppstdin'
15371 cppsymbols='$cppsymbols'
15372 crosscompile='$crosscompile'
15373 cryptlib='$cryptlib'
15375 d_Gconvert='$d_Gconvert'
15376 d_PRIEldbl='$d_PRIEldbl'
15377 d_PRIFldbl='$d_PRIFldbl'
15378 d_PRIGldbl='$d_PRIGldbl'
15379 d_PRIX64='$d_PRIX64'
15380 d_PRId64='$d_PRId64'
15381 d_PRIeldbl='$d_PRIeldbl'
15382 d_PRIfldbl='$d_PRIfldbl'
15383 d_PRIgldbl='$d_PRIgldbl'
15384 d_PRIi64='$d_PRIi64'
15385 d_PRIo64='$d_PRIo64'
15386 d_PRIu64='$d_PRIu64'
15387 d_PRIx64='$d_PRIx64'
15388 d_access='$d_access'
15389 d_accessx='$d_accessx'
15391 d_archlib='$d_archlib'
15394 d_attribut='$d_attribut'
15397 d_bincompat5005='$d_bincompat5005'
15399 d_bsdgetpgrp='$d_bsdgetpgrp'
15400 d_bsdsetpgrp='$d_bsdsetpgrp'
15402 d_casti32='$d_casti32'
15403 d_castneg='$d_castneg'
15404 d_charvspr='$d_charvspr'
15406 d_chroot='$d_chroot'
15407 d_chsize='$d_chsize'
15408 d_closedir='$d_closedir'
15412 d_cuserid='$d_cuserid'
15413 d_dbl_dig='$d_dbl_dig'
15414 d_difftime='$d_difftime'
15415 d_dirnamlen='$d_dirnamlen'
15416 d_dlerror='$d_dlerror'
15417 d_dlopen='$d_dlopen'
15418 d_dlsymun='$d_dlsymun'
15419 d_dosuid='$d_dosuid'
15420 d_drand48proto='$d_drand48proto'
15422 d_eaccess='$d_eaccess'
15423 d_endgrent='$d_endgrent'
15424 d_endhent='$d_endhent'
15425 d_endnent='$d_endnent'
15426 d_endpent='$d_endpent'
15427 d_endpwent='$d_endpwent'
15428 d_endsent='$d_endsent'
15429 d_eofnblk='$d_eofnblk'
15430 d_eunice='$d_eunice'
15431 d_fchmod='$d_fchmod'
15432 d_fchown='$d_fchown'
15434 d_fd_macros='$d_fd_macros'
15435 d_fd_set='$d_fd_set'
15436 d_fds_bits='$d_fds_bits'
15437 d_fgetpos='$d_fgetpos'
15438 d_flexfnam='$d_flexfnam'
15441 d_fpathconf='$d_fpathconf'
15442 d_fpos64_t='$d_fpos64_t'
15443 d_frexpl='$d_frexpl'
15444 d_fs_data_s='$d_fs_data_s'
15445 d_fseeko='$d_fseeko'
15446 d_fsetpos='$d_fsetpos'
15447 d_fstatfs='$d_fstatfs'
15448 d_fstatvfs='$d_fstatvfs'
15449 d_ftello='$d_ftello'
15451 d_getcwd='$d_getcwd'
15452 d_getespwnam='$d_getespwnam'
15453 d_getfsstat='$d_getfsstat'
15454 d_getgrent='$d_getgrent'
15455 d_getgrps='$d_getgrps'
15456 d_gethbyaddr='$d_gethbyaddr'
15457 d_gethbyname='$d_gethbyname'
15458 d_gethent='$d_gethent'
15459 d_gethname='$d_gethname'
15460 d_gethostprotos='$d_gethostprotos'
15461 d_getlogin='$d_getlogin'
15462 d_getmnt='$d_getmnt'
15463 d_getmntent='$d_getmntent'
15464 d_getnbyaddr='$d_getnbyaddr'
15465 d_getnbyname='$d_getnbyname'
15466 d_getnent='$d_getnent'
15467 d_getnetprotos='$d_getnetprotos'
15468 d_getpbyname='$d_getpbyname'
15469 d_getpbynumber='$d_getpbynumber'
15470 d_getpent='$d_getpent'
15471 d_getpgid='$d_getpgid'
15472 d_getpgrp2='$d_getpgrp2'
15473 d_getpgrp='$d_getpgrp'
15474 d_getppid='$d_getppid'
15475 d_getprior='$d_getprior'
15476 d_getprotoprotos='$d_getprotoprotos'
15477 d_getprpwnam='$d_getprpwnam'
15478 d_getpwent='$d_getpwent'
15479 d_getsbyname='$d_getsbyname'
15480 d_getsbyport='$d_getsbyport'
15481 d_getsent='$d_getsent'
15482 d_getservprotos='$d_getservprotos'
15483 d_getspnam='$d_getspnam'
15484 d_gettimeod='$d_gettimeod'
15485 d_gnulibc='$d_gnulibc'
15486 d_grpasswd='$d_grpasswd'
15487 d_hasmntopt='$d_hasmntopt'
15491 d_inetaton='$d_inetaton'
15492 d_int64_t='$d_int64_t'
15493 d_isascii='$d_isascii'
15495 d_isnanl='$d_isnanl'
15496 d_killpg='$d_killpg'
15497 d_lchown='$d_lchown'
15498 d_ldbl_dig='$d_ldbl_dig'
15500 d_locconv='$d_locconv'
15502 d_longdbl='$d_longdbl'
15503 d_longlong='$d_longlong'
15504 d_lseekproto='$d_lseekproto'
15506 d_madvise='$d_madvise'
15508 d_mbstowcs='$d_mbstowcs'
15509 d_mbtowc='$d_mbtowc'
15510 d_memchr='$d_memchr'
15511 d_memcmp='$d_memcmp'
15512 d_memcpy='$d_memcpy'
15513 d_memmove='$d_memmove'
15514 d_memset='$d_memset'
15516 d_mkdtemp='$d_mkdtemp'
15517 d_mkfifo='$d_mkfifo'
15518 d_mkstemp='$d_mkstemp'
15519 d_mkstemps='$d_mkstemps'
15520 d_mktime='$d_mktime'
15523 d_mprotect='$d_mprotect'
15525 d_msg_ctrunc='$d_msg_ctrunc'
15526 d_msg_dontroute='$d_msg_dontroute'
15527 d_msg_oob='$d_msg_oob'
15528 d_msg_peek='$d_msg_peek'
15529 d_msg_proxy='$d_msg_proxy'
15530 d_msgctl='$d_msgctl'
15531 d_msgget='$d_msgget'
15532 d_msgrcv='$d_msgrcv'
15533 d_msgsnd='$d_msgsnd'
15535 d_munmap='$d_munmap'
15536 d_mymalloc='$d_mymalloc'
15538 d_nv_preserves_uv='$d_nv_preserves_uv'
15539 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15540 d_off64_t='$d_off64_t'
15541 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15542 d_oldpthreads='$d_oldpthreads'
15543 d_oldsock='$d_oldsock'
15545 d_pathconf='$d_pathconf'
15547 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15548 d_phostname='$d_phostname'
15551 d_portable='$d_portable'
15552 d_pthread_yield='$d_pthread_yield'
15554 d_pwchange='$d_pwchange'
15555 d_pwclass='$d_pwclass'
15556 d_pwcomment='$d_pwcomment'
15557 d_pwexpire='$d_pwexpire'
15558 d_pwgecos='$d_pwgecos'
15559 d_pwpasswd='$d_pwpasswd'
15560 d_pwquota='$d_pwquota'
15563 d_readdir='$d_readdir'
15564 d_readlink='$d_readlink'
15565 d_rename='$d_rename'
15566 d_rewinddir='$d_rewinddir'
15568 d_safebcpy='$d_safebcpy'
15569 d_safemcpy='$d_safemcpy'
15570 d_sanemcmp='$d_sanemcmp'
15571 d_sched_yield='$d_sched_yield'
15572 d_scm_rights='$d_scm_rights'
15573 d_seekdir='$d_seekdir'
15574 d_select='$d_select'
15576 d_semctl='$d_semctl'
15577 d_semctl_semid_ds='$d_semctl_semid_ds'
15578 d_semctl_semun='$d_semctl_semun'
15579 d_semget='$d_semget'
15581 d_setegid='$d_setegid'
15582 d_seteuid='$d_seteuid'
15583 d_setgrent='$d_setgrent'
15584 d_setgrps='$d_setgrps'
15585 d_sethent='$d_sethent'
15586 d_setlinebuf='$d_setlinebuf'
15587 d_setlocale='$d_setlocale'
15588 d_setnent='$d_setnent'
15589 d_setpent='$d_setpent'
15590 d_setpgid='$d_setpgid'
15591 d_setpgrp2='$d_setpgrp2'
15592 d_setpgrp='$d_setpgrp'
15593 d_setprior='$d_setprior'
15594 d_setproctitle='$d_setproctitle'
15595 d_setpwent='$d_setpwent'
15596 d_setregid='$d_setregid'
15597 d_setresgid='$d_setresgid'
15598 d_setresuid='$d_setresuid'
15599 d_setreuid='$d_setreuid'
15600 d_setrgid='$d_setrgid'
15601 d_setruid='$d_setruid'
15602 d_setsent='$d_setsent'
15603 d_setsid='$d_setsid'
15604 d_setvbuf='$d_setvbuf'
15608 d_shmatprototype='$d_shmatprototype'
15609 d_shmctl='$d_shmctl'
15611 d_shmget='$d_shmget'
15612 d_sigaction='$d_sigaction'
15613 d_sigsetjmp='$d_sigsetjmp'
15614 d_socket='$d_socket'
15615 d_socklen_t='$d_socklen_t'
15616 d_sockpair='$d_sockpair'
15618 d_statblks='$d_statblks'
15619 d_statfs_f_flags='$d_statfs_f_flags'
15620 d_statfs_s='$d_statfs_s'
15621 d_statvfs='$d_statvfs'
15622 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15623 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15624 d_stdio_stream_array='$d_stdio_stream_array'
15625 d_stdiobase='$d_stdiobase'
15626 d_stdstdio='$d_stdstdio'
15627 d_strchr='$d_strchr'
15628 d_strcoll='$d_strcoll'
15629 d_strctcpy='$d_strctcpy'
15630 d_strerrm='$d_strerrm'
15631 d_strerror='$d_strerror'
15632 d_strtod='$d_strtod'
15633 d_strtol='$d_strtol'
15634 d_strtold='$d_strtold'
15635 d_strtoll='$d_strtoll'
15636 d_strtoul='$d_strtoul'
15637 d_strtoull='$d_strtoull'
15638 d_strtouq='$d_strtouq'
15639 d_strxfrm='$d_strxfrm'
15640 d_suidsafe='$d_suidsafe'
15641 d_symlink='$d_symlink'
15642 d_syscall='$d_syscall'
15643 d_sysconf='$d_sysconf'
15644 d_sysernlst='$d_sysernlst'
15645 d_syserrlst='$d_syserrlst'
15646 d_system='$d_system'
15647 d_tcgetpgrp='$d_tcgetpgrp'
15648 d_tcsetpgrp='$d_tcsetpgrp'
15649 d_telldir='$d_telldir'
15650 d_telldirproto='$d_telldirproto'
15653 d_truncate='$d_truncate'
15654 d_tzname='$d_tzname'
15657 d_union_semun='$d_union_semun'
15659 d_vendorarch='$d_vendorarch'
15660 d_vendorbin='$d_vendorbin'
15661 d_vendorlib='$d_vendorlib'
15663 d_void_closedir='$d_void_closedir'
15664 d_voidsig='$d_voidsig'
15665 d_voidtty='$d_voidtty'
15666 d_volatile='$d_volatile'
15667 d_vprintf='$d_vprintf'
15669 d_waitpid='$d_waitpid'
15670 d_wcstombs='$d_wcstombs'
15671 d_wctomb='$d_wctomb'
15674 db_hashtype='$db_hashtype'
15675 db_prefixtype='$db_prefixtype'
15676 defvoidused='$defvoidused'
15677 direntrytype='$direntrytype'
15680 doublesize='$doublesize'
15682 dynamic_ext='$dynamic_ext'
15688 eunicefix='$eunicefix'
15691 extensions='$extensions'
15692 fflushNULL='$fflushNULL'
15693 fflushall='$fflushall'
15695 firstmakefile='$firstmakefile'
15697 fpossize='$fpossize'
15698 fpostype='$fpostype'
15699 freetype='$freetype'
15701 full_csh='$full_csh'
15702 full_sed='$full_sed'
15703 gccosandvers='$gccosandvers'
15704 gccversion='$gccversion'
15705 gidformat='$gidformat'
15711 groupcat='$groupcat'
15712 groupstype='$groupstype'
15715 h_sysfile='$h_sysfile'
15727 i_arpainet='$i_arpainet'
15728 i_bsdioctl='$i_bsdioctl'
15731 i_dirent='$i_dirent'
15739 i_ieeefp='$i_ieeefp'
15740 i_inttypes='$i_inttypes'
15741 i_libutil='$i_libutil'
15742 i_limits='$i_limits'
15743 i_locale='$i_locale'
15744 i_machcthr='$i_machcthr'
15745 i_malloc='$i_malloc'
15747 i_memory='$i_memory'
15748 i_mntent='$i_mntent'
15751 i_neterrno='$i_neterrno'
15752 i_netinettcp='$i_netinettcp'
15756 i_pthread='$i_pthread'
15758 i_rpcsvcdbm='$i_rpcsvcdbm'
15761 i_shadow='$i_shadow'
15763 i_stdarg='$i_stdarg'
15764 i_stddef='$i_stddef'
15765 i_stdlib='$i_stdlib'
15766 i_string='$i_string'
15767 i_sunmath='$i_sunmath'
15768 i_sysaccess='$i_sysaccess'
15769 i_sysdir='$i_sysdir'
15770 i_sysfile='$i_sysfile'
15771 i_sysfilio='$i_sysfilio'
15773 i_sysioctl='$i_sysioctl'
15774 i_syslog='$i_syslog'
15775 i_sysmman='$i_sysmman'
15776 i_sysmode='$i_sysmode'
15777 i_sysmount='$i_sysmount'
15778 i_sysndir='$i_sysndir'
15779 i_sysparam='$i_sysparam'
15780 i_sysresrc='$i_sysresrc'
15781 i_syssecrt='$i_syssecrt'
15782 i_sysselct='$i_sysselct'
15783 i_syssockio='$i_syssockio'
15784 i_sysstat='$i_sysstat'
15785 i_sysstatfs='$i_sysstatfs'
15786 i_sysstatvfs='$i_sysstatvfs'
15787 i_systime='$i_systime'
15788 i_systimek='$i_systimek'
15789 i_systimes='$i_systimes'
15790 i_systypes='$i_systypes'
15791 i_sysuio='$i_sysuio'
15793 i_sysutsname='$i_sysutsname'
15794 i_sysvfs='$i_sysvfs'
15795 i_syswait='$i_syswait'
15796 i_termio='$i_termio'
15797 i_termios='$i_termios'
15799 i_unistd='$i_unistd'
15802 i_values='$i_values'
15803 i_varargs='$i_varargs'
15804 i_varhdr='$i_varhdr'
15806 ignore_versioned_solibs='$ignore_versioned_solibs'
15807 inc_version_list='$inc_version_list'
15808 inc_version_list_init='$inc_version_list_init'
15811 installarchlib='$installarchlib'
15812 installbin='$installbin'
15813 installman1dir='$installman1dir'
15814 installman3dir='$installman3dir'
15815 installprefix='$installprefix'
15816 installprefixexp='$installprefixexp'
15817 installprivlib='$installprivlib'
15818 installscript='$installscript'
15819 installsitearch='$installsitearch'
15820 installsitebin='$installsitebin'
15821 installsitelib='$installsitelib'
15822 installstyle='$installstyle'
15823 installusrbinperl='$installusrbinperl'
15824 installvendorarch='$installvendorarch'
15825 installvendorbin='$installvendorbin'
15826 installvendorlib='$installvendorlib'
15828 ivdformat='$ivdformat'
15831 known_extensions='$known_extensions'
15835 lddlflags='$lddlflags'
15837 ldflags_uselargefiles='$ldflags_uselargefiles'
15838 ldlibpthname='$ldlibpthname'
15845 libsdirs='$libsdirs'
15846 libsfiles='$libsfiles'
15847 libsfound='$libsfound'
15848 libspath='$libspath'
15849 libswanted='$libswanted'
15850 libswanted_uselargefiles='$libswanted_uselargefiles'
15856 locincpth='$locincpth'
15857 loclibpth='$loclibpth'
15858 longdblsize='$longdblsize'
15859 longlongsize='$longlongsize'
15860 longsize='$longsize'
15864 lseeksize='$lseeksize'
15865 lseektype='$lseektype'
15869 make_set_make='$make_set_make'
15870 mallocobj='$mallocobj'
15871 mallocsrc='$mallocsrc'
15872 malloctype='$malloctype'
15874 man1direxp='$man1direxp'
15877 man3direxp='$man3direxp'
15880 mips_type='$mips_type'
15882 mmaptype='$mmaptype'
15884 modetype='$modetype'
15886 multiarch='$multiarch'
15888 myarchname='$myarchname'
15889 mydomain='$mydomain'
15890 myhostname='$myhostname'
15893 netdb_hlen_type='$netdb_hlen_type'
15894 netdb_host_type='$netdb_host_type'
15895 netdb_name_type='$netdb_name_type'
15896 netdb_net_type='$netdb_net_type'
15899 nm_so_opt='$nm_so_opt'
15900 nonxs_ext='$nonxs_ext'
15904 o_nonblock='$o_nonblock'
15906 old_pthread_create_joinable='$old_pthread_create_joinable'
15907 optimize='$optimize'
15908 orderlib='$orderlib'
15911 otherlibdirs='$otherlibdirs'
15915 patchlevel='$patchlevel'
15916 path_sep='$path_sep'
15919 perladmin='$perladmin'
15920 perlpath='$perlpath'
15922 phostname='$phostname'
15925 pm_apiversion='$pm_apiversion'
15929 prefixexp='$prefixexp'
15931 privlibexp='$privlibexp'
15932 prototype='$prototype'
15934 quadkind='$quadkind'
15935 quadtype='$quadtype'
15936 randbits='$randbits'
15937 randfunc='$randfunc'
15938 randseedtype='$randseedtype'
15940 rd_nodata='$rd_nodata'
15941 revision='$revision'
15945 sPRIEldbl='$sPRIEldbl'
15946 sPRIFldbl='$sPRIFldbl'
15947 sPRIGldbl='$sPRIGldbl'
15950 sPRIeldbl='$sPRIeldbl'
15951 sPRIfldbl='$sPRIfldbl'
15952 sPRIgldbl='$sPRIgldbl'
15957 sched_yield='$sched_yield'
15958 scriptdir='$scriptdir'
15959 scriptdirexp='$scriptdirexp'
15961 seedfunc='$seedfunc'
15962 selectminbits='$selectminbits'
15963 selecttype='$selecttype'
15964 sendmail='$sendmail'
15967 sharpbang='$sharpbang'
15968 shmattype='$shmattype'
15969 shortsize='$shortsize'
15972 sig_count='$sig_count'
15973 sig_name='$sig_name'
15974 sig_name_init='$sig_name_init'
15976 sig_num_init='$sig_num_init'
15977 signal_t='$signal_t'
15978 sitearch='$sitearch'
15979 sitearchexp='$sitearchexp'
15981 sitebinexp='$sitebinexp'
15983 sitelib_stem='$sitelib_stem'
15984 sitelibexp='$sitelibexp'
15985 siteprefix='$siteprefix'
15986 siteprefixexp='$siteprefixexp'
15987 sizesize='$sizesize'
15988 sizetype='$sizetype'
15993 sockethdr='$sockethdr'
15994 socketlib='$socketlib'
15995 socksizetype='$socksizetype'
15997 spackage='$spackage'
15998 spitshell='$spitshell'
16001 ssizetype='$ssizetype'
16002 startperl='$startperl'
16004 static_ext='$static_ext'
16006 stdio_base='$stdio_base'
16007 stdio_bufsiz='$stdio_bufsiz'
16008 stdio_cnt='$stdio_cnt'
16009 stdio_filbuf='$stdio_filbuf'
16010 stdio_ptr='$stdio_ptr'
16011 stdio_stream_array='$stdio_stream_array'
16014 subversion='$subversion'
16021 timeincl='$timeincl'
16022 timetype='$timetype'
16035 uidformat='$uidformat'
16041 uquadtype='$uquadtype'
16042 use5005threads='$use5005threads'
16043 use64bitall='$use64bitall'
16044 use64bitint='$use64bitint'
16046 useithreads='$useithreads'
16047 uselargefiles='$uselargefiles'
16048 uselongdouble='$uselongdouble'
16049 usemorebits='$usemorebits'
16050 usemultiplicity='$usemultiplicity'
16051 usemymalloc='$usemymalloc'
16053 useopcode='$useopcode'
16054 useperlio='$useperlio'
16055 useposix='$useposix'
16057 useshrplib='$useshrplib'
16058 usesocks='$usesocks'
16059 usethreads='$usethreads'
16060 usevendorprefix='$usevendorprefix'
16061 usevfork='$usevfork'
16064 uvoformat='$uvoformat'
16067 uvuformat='$uvuformat'
16068 uvxformat='$uvxformat'
16069 vendorarch='$vendorarch'
16070 vendorarchexp='$vendorarchexp'
16071 vendorbin='$vendorbin'
16072 vendorbinexp='$vendorbinexp'
16073 vendorlib='$vendorlib'
16074 vendorlib_stem='$vendorlib_stem'
16075 vendorlibexp='$vendorlibexp'
16076 vendorprefix='$vendorprefix'
16077 vendorprefixexp='$vendorprefixexp'
16080 voidflags='$voidflags'
16082 xs_apiversion='$xs_apiversion'
16087 : Add in command line options if available
16088 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16090 : add special variables
16091 $test -f $src/patchlevel.h && \
16092 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16093 echo "CONFIGDOTSH=true" >>config.sh
16095 : propagate old symbols
16096 if $test -f UU/config.sh; then
16097 <UU/config.sh sort | uniq >UU/oldconfig.sh
16098 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16099 sort | uniq -u >UU/oldsyms
16100 set X `cat UU/oldsyms`
16106 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16108 echo "# Variables propagated from previous config.sh file." >>config.sh
16109 for sym in `cat UU/oldsyms`; do
16110 echo " Propagating $hint variable "'$'"$sym..."
16111 eval 'tmp="$'"${sym}"'"'
16113 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16119 : Finish up by extracting the .SH files
16133 If you'd like to make any changes to the config.sh file before I begin
16134 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16137 rp="Press return or use a shell escape to edit config.sh:"
16142 *) : in case they cannot read
16143 sh 1>&4 -c "$ans";;
16148 : if this fails, just run all the .SH files by hand
16155 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16162 Now you need to generate make dependencies by running "$make depend".
16163 You might prefer to run it in background: "$make depend > makedepend.out &"
16164 It can take a while, so you might not want to run it right now.
16169 rp="Run $make depend now?"
16173 $make depend && echo "Now you must run a $make."
16176 echo "You must run '$make depend' then '$make'."
16179 elif test -f [Mm]akefile; then
16181 echo "Now you must run a $make."
16186 if $test -f Policy.sh; then
16189 If you compile $package on a different machine or from a different object
16190 directory, copy the Policy.sh file from this object directory to the
16191 new one before you run Configure -- this will help you with most of
16192 the policy defaults.
16196 if $test -f config.msg; then
16197 echo "Hmm. I also noted the following information while running:"
16199 $cat config.msg >&4
16202 $rm -f kit*isdone ark*isdone