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 Wed May 31 01:00:52 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
459 d_old_pthread_create_joinable=''
460 old_pthread_create_joinable=''
702 inc_version_list_init=''
720 ignore_versioned_solibs=''
782 d_perl_otherlibdirs=''
798 d_nv_preserved_bits=''
890 d_stdio_stream_array=''
891 stdio_stream_array=''
942 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
945 : We must find out about Eunice early
947 if test -f /etc/unixtovms; then
948 eunicefix=/etc/unixtovms
950 if test -f /etc/unixtovms.exe; then
951 eunicefix=/etc/unixtovms.exe
955 : set useposix=false in your hint file to disable the POSIX extension.
957 : set useopcode=false in your hint file to disable the Opcode extension.
959 : Trailing extension. Override this in a hint file, if needed.
961 : Extra object files, if any, needed on this platform.
963 : Possible local include directories to search.
964 : Set locincpth to "" in a hint file to defeat local include searches.
965 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
966 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
968 : no include file wanted by default
972 : change the next line if compiling for Xenix/286 on Xenix/386
973 xlibpth='/usr/lib/386 /lib/386'
974 : Possible local library directories to search.
975 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
976 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
978 : general looking path for locating libraries
979 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
980 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
981 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
982 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
983 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
985 : Private path used by Configure to find libraries. Its value
986 : is prepended to libpth. This variable takes care of special
987 : machines, like the mips. Usually, it should be empty.
990 : default library list
992 : some systems want to use only the non-versioned libso:s
993 ignore_versioned_solibs=''
994 : set usemultiplicity on the Configure command line to enable multiplicity.
995 : set usesocks on the Configure command line to enable socks.
996 : set usethreads on the Configure command line to enable threads.
997 : full support for void wanted by default
1000 : List of libraries we want.
1001 : If anyone needs -lnet, put it in a hint file.
1002 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1003 libswanted="$libswanted dld ld sun m c cposix posix"
1004 libswanted="$libswanted ndir dir crypt sec"
1005 libswanted="$libswanted ucb bsd BSD PW x iconv"
1006 : We probably want to search /usr/shlib before most other libraries.
1007 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1008 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1009 glibpth="/usr/shlib $glibpth"
1010 : Do not use vfork unless overridden by a hint file.
1013 : Find the basic shell for Bourne shell scripts
1017 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1020 if test -f "$xxx"; then
1023 : Build up a list and do a single loop so we can 'break' out.
1024 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1025 for xxx in sh bash ksh pdksh ash; do
1027 try="$try ${p}/${xxx}"
1031 if test -f "$xxx"; then
1034 elif test -f "$xxx.exe"; then
1045 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1047 Usually it's in /bin/sh. How did you even get this far?
1048 Please contact me (Perl Maintainers) at perlbug@perl.com and
1049 we'll try to straighten this all out.
1055 : see if sh knows # comments
1056 if `$sh -c '#' >/dev/null 2>&1`; then
1060 test -f $xcat || xcat=/usr/bin/cat
1065 if test -s today; then
1068 echo "#! $xcat" > try
1072 if test -s today; then
1080 echo "Your $sh doesn't grok # comments--I will strip them later on."
1083 echo "exec grep -v '^[ ]*#'" >spitshell
1085 $eunicefix spitshell
1086 spitshell=`pwd`/spitshell
1088 echo "I presume that if # doesn't work, #! won't work either!"
1093 : figure out how to guarantee sh startup
1095 '') startsh=${sharpbang}${sh} ;;
1107 : echo "Yup, it does."
1109 echo "Hmm... '$startsh' does not guarantee sh startup..."
1110 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1115 : Save command line options in file UU/cmdline.opt for later use in
1116 : generating config.sh.
1117 cat > cmdline.opt <<EOSH
1118 # Configure command line arguments.
1125 cat >>cmdline.opt <<EOSH
1126 config_arg$argn='$arg'
1128 argn=`expr $argn + 1`
1131 : produce awk script to parse command line options
1132 cat >options.awk <<'EOF'
1134 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1136 len = length(optstr);
1137 for (i = 1; i <= len; i++) {
1138 c = substr(optstr, i, 1);
1139 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1150 if (substr(str, 1, 1) != "-") {
1151 printf("'%s'\n", str);
1155 for (i = 2; i <= len; i++) {
1156 c = substr(str, i, 1);
1158 printf("-%s\n", substr(str, i));
1164 printf("'%s'\n", substr(str, i + 1));
1177 : process the command line options
1178 set X `for arg in "$@"; do echo "X$arg"; done |
1179 sed -e s/X// | awk -f options.awk`
1184 : set up default values
1194 rm -f optdef.sh posthint.sh
1195 cat >optdef.sh <<EOS
1201 while test $# -gt 0; do
1203 -d) shift; fastread=yes;;
1204 -e) shift; alldone=cont;;
1208 if test -r "$1"; then
1211 echo "$me: cannot read config file $1." >&2
1216 -h) shift; error=true;;
1217 -r) shift; reuseval=true;;
1218 -s) shift; silent=true; realsilent=true;;
1219 -E) shift; alldone=exit;;
1220 -K) shift; knowitall=true;;
1221 -O) shift; override=true;;
1222 -S) shift; silent=true; extractsh=true;;
1227 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1228 echo "$me: ignoring -D $1" >&2
1231 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1232 *) echo "$1='define'" >> optdef.sh;;
1239 *=) echo "$1" >> optdef.sh;;
1241 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1242 echo "$me: ignoring -U $1" >&2
1244 *) echo "$1='undef'" >> optdef.sh;;
1255 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1259 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1260 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1266 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1267 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1268 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1269 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1270 *) xxx=`echo $yyy|sed 's!:.*!!'`
1271 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1277 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1279 echo "$yyy=''" >> posthint.sh ;;
1284 echo "$yyy='$zzz'" >> posthint.sh ;;
1286 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1288 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1293 echo "$yyy=$zzz" >> posthint.sh ;;
1294 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1298 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1301 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1309 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1310 [-U symbol] [-U symbol=] [-A command:symbol...]
1311 -d : use defaults for all answers.
1312 -e : go on without questioning past the production of config.sh.
1313 -f : specify an alternate default configuration file.
1314 -h : print this help message and exit (with an error status).
1315 -r : reuse C symbols value if possible (skips costly nm extraction).
1316 -s : silent mode, only echoes questions and essential information.
1317 -D : define symbol to have some value:
1318 -D symbol symbol gets the value 'define'
1319 -D symbol=value symbol gets the value 'value'
1320 -E : stop at the end of questions, after having produced config.sh.
1321 -K : do not use unless you know what you are doing.
1322 -O : let -D and -U override definitions from loaded configuration file.
1323 -S : perform variable substitutions on all .SH files (can mix with -f)
1324 -U : undefine symbol:
1325 -U symbol symbol gets the value 'undef'
1326 -U symbol= symbol gets completely empty
1327 -A : manipulate symbol after the platform specific hints have been applied:
1328 -A symbol=value append " "value to symbol
1329 -A append:symbol=value append value to symbol
1330 -A define:symbol=value define symbol to have value
1331 -A clear:symbol define symbol to be ''
1332 -A define:symbol define symbol to be 'define'
1333 -A eval:symbol=value define symbol to be eval of value
1334 -A prepend:symbol=value prepend value to symbol
1335 -A undef:symbol define symbol to be 'undef'
1336 -A undef:symbol= define symbol to be ''
1337 -V : print version number and exit (with a zero status).
1344 case "$fastread$alldone" in
1347 case "$extractsh" in
1350 if test ! -t 0; then
1351 echo "Say 'sh Configure', not 'sh <Configure'"
1361 true) exec 1>/dev/null;;
1364 : run the defines and the undefines, if any, but leave the file out there...
1367 : create the posthint manipulation script and leave the file out there...
1372 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1373 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1374 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1375 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1376 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1379 : Some greps do not return status, grrr.
1380 echo "grimblepritz" >grimble
1381 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1383 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1389 : the following should work in any shell
1393 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1394 cat >contains <<'EOSS'
1395 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1400 : Find the path to the source tree
1403 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1406 *) src=`cd ../$src && pwd` ;;
1419 if test -f $rsrc/Configure && \
1420 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1422 : found it, so we are ok.
1425 for src in . .. ../.. ../../.. ../../../..; do
1426 if test -f ../$src/Configure && \
1427 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1438 Sorry, I can't seem to locate the source dir for $package. Please start
1439 Configure with an explicit path -- i.e. /some/path/Configure.
1447 echo "Sources for $package found in \"$src\"." >&4
1451 : script used to extract .SH files with variable substitutions
1452 cat >extract <<'EOS'
1454 echo "Doing variable substitutions on .SH files..."
1455 if test -f $src/MANIFEST; then
1456 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1458 echo "(Looking for .SH files under the source directory.)"
1459 set x `(cd $src; find . -name "*.SH" -print)`
1463 0) set x `(cd $src; echo *.SH)`; shift;;
1465 if test ! -f $src/$1; then
1471 while test $name; do
1472 if test ! -d "$name"; then
1473 create="$name $create";
1474 name=`echo $name | sed -e "s|^[^/]*$||"`;
1475 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1480 for file in $create; do
1489 dir=`expr X$file : 'X\(.*\)/'`
1490 file=`expr X$file : 'X.*/\(.*\)'`
1491 (cd $dir && . ./$file)
1501 dir=`expr X$file : 'X\(.*\)/'`
1502 file=`expr X$file : 'X.*/\(.*\)'`
1503 (set x $dir; shift; eval $mkdir_p)
1513 if test -f $src/config_h.SH; then
1514 if test ! -f config.h; then
1515 : oops, they left it out of MANIFEST, probably, so do it anyway.
1521 : extract files and exit if asked to do so
1522 case "$extractsh" in
1524 case "$realsilent" in
1528 case "$config_sh" in
1529 '') config_sh='config.sh';;
1532 echo "Fetching answers from $config_sh..."
1535 test "$override" && . ./optdef.sh
1544 : Eunice requires " " instead of "", can you believe it
1547 echo "Beginning of configuration questions for $package."
1549 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1551 : first determine how to suppress newline on echo command
1553 echo "Checking echo to see how to suppress newlines..."
1554 (echo "hi there\c" ; echo " ") >.echotmp
1555 if $contains c .echotmp >/dev/null 2>&1 ; then
1566 echo $n "The star should be here-->$c"
1570 : Now test for existence of everything in MANIFEST
1572 if test -f $rsrc/MANIFEST; then
1573 echo "First let's make sure your kit is complete. Checking..." >&4
1574 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1577 for filelist in x??; do
1578 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1580 if test -s missing; then
1584 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1586 You have the option of continuing the configuration process, despite the
1587 distinct possibility that your kit is damaged, by typing 'y'es. If you
1588 do, don't blame me if something goes wrong. I advise you to type 'n'o
1589 and contact the author (perlbug@perl.com).
1592 echo $n "Continue? [n] $c" >&4
1596 echo "Continuing..." >&4
1600 echo "ABORTING..." >&4
1605 echo "Looks good..."
1608 echo "There is no MANIFEST file. I hope your kit is complete !"
1613 : Find the appropriate value for a newline for tr
1614 if test -n "$DJGPP"; then
1617 if test X"$trnl" = X; then
1618 case "`echo foo|tr '\n' x 2>/dev/null`" in
1622 if test X"$trnl" = X; then
1623 case "`echo foo|tr '\012' x 2>/dev/null`" in
1624 foox) trnl='\012' ;;
1627 if test X"$trnl" = X; then
1630 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1636 : compute the number of columns on the terminal for proper question formatting
1641 : set up the echo used in my read
1642 myecho="case \"\$xxxm\" in
1643 '') echo $n \"\$rp $c\" >&4;;
1645 '') echo $n \"[\$xxxm] $c\";;
1647 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1649 echo $n \"[\$xxxm] $c\" >&4
1651 echo $n \"\$rp [\$xxxm] $c\" >&4
1657 : now set up to do reads with possible shell escape and default assignment
1663 case "\$fastread" in
1664 yes) case "\$dflt" in
1667 case "\$silent-\$rp" in
1672 *) case "\$silent" in
1673 true) case "\$rp" in
1678 while expr "X\$ans" : "X!" >/dev/null; do
1682 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1690 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1699 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1704 echo "(OK, I'll run with -d after this question.)" >&4
1707 echo "*** Sorry, \$1 not supported yet." >&4
1717 echo "*** Substitution done -- please confirm."
1719 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1724 echo "*** Error -- try again."
1731 case "\$ans\$xxxm\$nostick" in
1743 : create .config dir to save info across Configure sessions
1744 test -d ../.config || mkdir ../.config
1745 cat >../.config/README <<EOF
1746 This directory created by Configure to save information that should
1747 persist across sessions for $package.
1749 You may safely delete it if you wish.
1752 : general instructions
1755 user=`(logname) 2>/dev/null`
1757 '') user=`whoami 2>&1`;;
1759 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1762 rp='Would you like to see the instructions?'
1773 This installation shell script will examine your system and ask you questions
1774 to determine how the perl5 package should be installed. If you get
1775 stuck on a question, you may use a ! shell escape to start a subshell or
1776 execute a command. Many of the questions will have default answers in square
1777 brackets; typing carriage return will give you the default.
1779 On some of the questions which ask for file or directory names you are allowed
1780 to use the ~name construct to specify the login directory belonging to "name",
1781 even if you don't have a shell which knows about that. Questions where this is
1782 allowed will be marked "(~name ok)".
1786 dflt='Type carriage return to continue'
1790 The prompter used in this script allows you to use shell variables and
1791 backticks in your answers. You may use $1, $2, etc... to refer to the words
1792 in the default answer, as if the default line was a set of arguments given to a
1793 script shell. This means you may also use $* to repeat the whole default line,
1794 so you do not have to re-type everything to add something to the default.
1796 Everytime there is a substitution, you will have to confirm. If there is an
1797 error (e.g. an unmatched backtick), the default answer will remain unchanged
1798 and you will be prompted again.
1800 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1801 the questions and use the computed defaults (or the previous answers if there
1802 was already a config.sh file). Type 'Configure -h' for a list of options.
1803 You may also start interactively and then answer '& -d' at any prompt to turn
1804 on the non-interactive behaviour for the remainder of the execution.
1810 Much effort has been expended to ensure that this shell script will run on any
1811 Unix system. If despite that it blows up on yours, your best bet is to edit
1812 Configure and run it again. If you can't run Configure for some reason,
1813 you'll have to generate a config.sh file by hand. Whatever problems you
1814 have, let me (perlbug@perl.com) know how I blew it.
1816 This installation script affects things in two ways:
1818 1) it may do direct variable substitutions on some of the files included
1820 2) it builds a config.h file for inclusion in C programs. You may edit
1821 any of these files as the need arises after running this script.
1823 If you make a mistake on a question, there is no easy way to back up to it
1824 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1825 files. Configure will offer to let you do this before it runs the SH files.
1828 dflt='Type carriage return to continue'
1830 case "$firsttime" in
1831 true) echo $user >>../.config/instruct;;
1835 : find out where common programs are
1837 echo "Locating common programs..." >&4
1850 if test -d \$dir/\$thing; then
1856 for thisthing in \$dir/\$thing; do
1857 : just loop through to pick last item
1859 if test -f \$thisthing; then
1862 elif test -f \$dir/\$thing.exe; then
1863 if test -n "$DJGPP"; then
1864 echo \$dir/\$thing.exe
1866 : on Eunice apparently
1916 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1917 pth="$pth /lib /usr/lib"
1918 for file in $loclist; do
1922 if test -f "$xxx"; then
1925 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1926 xxx=`./loc $file $file $pth`
1929 '') xxx=`./loc $file $file $pth`;;
1930 *) xxx=`./loc $xxx $xxx $pth`;;
1936 echo $file is in $xxx.
1939 echo $file is in $xxx.
1942 echo "I don't know where '$file' is, and my life depends on it." >&4
1943 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1949 echo "Don't worry if any of the following aren't found..."
1951 for file in $trylist; do
1955 if test -f "$xxx"; then
1958 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1959 xxx=`./loc $file $file $pth`
1962 '') xxx=`./loc $file $file $pth`;;
1963 *) xxx=`./loc $xxx $xxx $pth`;;
1969 echo $file is in $xxx.
1972 echo $file is in $xxx.
1975 echo "I don't see $file out there, $say."
1982 echo "Substituting grep for egrep."
1988 echo "Substituting cp for ln."
1994 echo "Hopefully test is built into your sh."
1997 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1998 echo "Using the test built into your sh."
2006 echo "Hopefully echo is built into your sh."
2011 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2012 $echo $n "hi there$c" >foo1
2013 echo $n "hi there$c" >foo2
2014 if cmp foo1 foo2 >/dev/null 2>&1; then
2015 echo "They are compatible. In fact, they may be identical."
2022 They are not compatible! You are probably running ksh on a non-USG system.
2023 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2024 have echo built in and we may have to run some Bourne shell scripts. That
2025 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2028 $echo $n "The star should be here-->$c"
2035 : determine whether symbolic links are supported
2038 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2039 echo "Symbolic links are supported." >&4
2042 echo "Symbolic links are NOT supported." >&4
2047 : see whether [:lower:] and [:upper:] are supported character classes
2049 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2051 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2055 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2056 # (0xc9 and 0xd1), therefore that is a nice testing point.
2057 if test "X$up" = X -o "X$low" = X; then
2058 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2064 if test "X$up" = X -o "X$low" = X; then
2065 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2071 if test "X$up" = X -o "X$low" = X; then
2072 case "`echo IJ | od -x 2>/dev/null`" in
2074 echo "Hey, this might be EBCDIC." >&4
2075 if test "X$up" = X -o "X$low" = X; then
2076 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2077 ij) up='[A-IJ-RS-Z]'
2082 if test "X$up" = X -o "X$low" = X; then
2083 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2093 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2095 echo "Using $up and $low to convert case." >&4
2098 echo "I don't know how to translate letters from upper to lower case." >&4
2099 echo "Your tr is not acting any way I know of." >&4
2103 : set up the translation script tr, must be called with ./tr of course
2107 '[A-Z][a-z]') exec $tr '$up' '$low';;
2108 '[a-z][A-Z]') exec $tr '$low' '$up';;
2115 : Try to determine whether config.sh was made on this system
2116 case "$config_sh" in
2118 myuname=`$uname -a 2>/dev/null`
2119 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2120 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2121 # because the A-Z/a-z are not consecutive.
2122 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2123 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2124 newmyuname="$myuname"
2126 case "$knowitall" in
2128 if test -f ../config.sh; then
2129 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2130 eval "`grep myuname= ../config.sh`"
2132 if test "X$myuname" = "X$newmyuname"; then
2140 : Get old answers from old config file if Configure was run on the
2141 : same system, otherwise use the hints.
2144 if test -f config.sh; then
2146 rp="I see a config.sh file. Shall I use it to set the defaults?"
2149 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2150 *) echo "Fetching default answers from your old config.sh file..." >&4
2158 : Older versions did not always set $sh. Catch re-use of such
2167 if test ! -f config.sh; then
2170 First time through, eh? I have some defaults handy for some systems
2171 that need some extra help getting the Configure answers right:
2174 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2176 : Half the following guesses are probably wrong... If you have better
2177 : tests or hints, please send them to perlbug@perl.com
2178 : The metaconfig authors would also appreciate a copy...
2179 $test -f /irix && osname=irix
2180 $test -f /xenix && osname=sco_xenix
2181 $test -f /dynix && osname=dynix
2182 $test -f /dnix && osname=dnix
2183 $test -f /lynx.os && osname=lynxos
2184 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2185 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2186 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2187 $test -f /bin/mips && /bin/mips && osname=mips
2188 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2189 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2190 $test -d /usr/apollo/bin && osname=apollo
2191 $test -f /etc/saf/_sactab && osname=svr4
2192 $test -d /usr/include/minix && osname=minix
2193 if $test -d /MachTen -o -d /MachTen_Folder; then
2195 if $test -x /sbin/version; then
2196 osvers=`/sbin/version | $awk '{print $2}' |
2197 $sed -e 's/[A-Za-z]$//'`
2198 elif $test -x /usr/etc/version; then
2199 osvers=`/usr/etc/version | $awk '{print $2}' |
2200 $sed -e 's/[A-Za-z]$//'`
2206 $test -f /sys/posix.dll &&
2207 $test -f /usr/bin/what &&
2208 set X `/usr/bin/what /sys/posix.dll` &&
2209 $test "$3" = UWIN &&
2213 if $test -f $uname; then
2221 umips) osname=umips ;;
2224 [23]100) osname=mips ;;
2225 next*) osname=next ;;
2227 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2228 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2231 elif $test -f /etc/kconfig; then
2233 if test "$lns" = "$ln -s"; then
2235 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2237 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2244 if test -n "$DJGPP"; then
2253 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2255 'not found') osvers="$4"."$3" ;;
2256 '<3240'|'<>3240') osvers=3.2.0 ;;
2257 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2258 '=3250'|'>3250') osvers=3.2.5 ;;
2262 bsd386) osname=bsd386
2265 cygwin*) osname=cygwin
2268 *dc.osx) osname=dcosx
2274 domainos) osname=apollo
2280 dynixptx*) osname=dynixptx
2281 osvers=`echo "$4"|sed 's/^v//'`
2283 freebsd) osname=freebsd
2285 genix) osname=genix ;;
2287 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2303 netbsd*) osname=netbsd
2306 news-os) osvers="$3"
2308 4*) osname=newsos4 ;;
2312 next*) osname=next ;;
2313 POSIX-BC | posix-bc ) osname=posix-bc
2316 powerux | power_ux | powermax_os | powermaxos | \
2317 powerunix | power_unix) osname=powerux
2323 solaris) osname=solaris
2325 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2332 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2336 titanos) osname=titanos
2345 ultrix) osname=ultrix
2348 osf1|mls+) case "$5" in
2351 osvers=`echo "$3" | sed 's/^[xvt]//'`
2353 hp*) osname=hp_osf1 ;;
2354 mips) osname=mips_osf1 ;;
2357 unixware) osname=svr5
2363 $2) case "$osname" in
2367 : svr4.x or possibly later
2377 if test -f /stand/boot ; then
2378 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2379 if test -n "$INITPROG" -a -f "$INITPROG"; then
2380 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2381 if test -n "$isesix"; then
2389 *) if test -f /etc/systemid; then
2391 set `echo $3 | $sed 's/\./ /g'` $4
2392 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2394 elif $test -f $src/hints/sco_$1_$2.sh; then
2396 elif $test -f $src/hints/sco_$1.sh; then
2401 '') : Still unknown. Probably a generic Sys V.
2410 *) case "$osname" in
2411 '') : Still unknown. Probably a generic BSD.
2419 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2420 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2421 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2424 $rm -f UU/kernel.what
2425 elif test -d c:/.; then
2432 : Now look for a hint file osname_osvers, unless one has been
2433 : specified already.
2436 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2437 : Also try without trailing minor version numbers.
2438 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2439 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2440 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2441 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2444 *) case "$osvers" in
2447 *) if $test -f $src/hints/$file.sh ; then
2449 elif $test -f $src/hints/$xfile.sh ; then
2451 elif $test -f $src/hints/$xxfile.sh ; then
2453 elif $test -f $src/hints/$xxxfile.sh ; then
2455 elif $test -f $src/hints/$xxxxfile.sh ; then
2457 elif $test -f "$src/hints/${osname}.sh" ; then
2466 if $test -f Policy.sh ; then
2469 none) dflt="Policy" ;;
2470 *) dflt="Policy $dflt" ;;
2475 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2479 if $test -f Policy.sh ; then
2482 There's also a Policy hint file available, which should make the
2483 site-specific (policy) questions easier to answer.
2490 You may give one or more space-separated answers, or "none" if appropriate.
2491 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2492 is a good thing. DO NOT give a wrong version or a wrong OS.
2496 rp="Which of these apply, if any?"
2499 for file in $tans; do
2500 if $test X$file = XPolicy -a -f Policy.sh; then
2502 $cat Policy.sh >> UU/config.sh
2503 elif $test -f $src/hints/$file.sh; then
2504 . $src/hints/$file.sh
2505 $cat $src/hints/$file.sh >> UU/config.sh
2506 elif $test X$tans = X -o X$tans = Xnone ; then
2509 : Give one chance to correct a possible typo.
2510 echo "$file.sh does not exist"
2512 rp="hint to use instead?"
2514 for file in $ans; do
2515 if $test -f "$src/hints/$file.sh"; then
2516 . $src/hints/$file.sh
2517 $cat $src/hints/$file.sh >> UU/config.sh
2518 elif $test X$ans = X -o X$ans = Xnone ; then
2521 echo "$file.sh does not exist -- ignored."
2528 : Remember our hint file for later.
2529 if $test -f "$src/hints/$file.sh" ; then
2539 echo "Fetching default answers from $config_sh..." >&4
2543 cp $config_sh config.sh 2>/dev/null
2553 test "$override" && . ./optdef.sh
2554 myuname="$newmyuname"
2556 : Restore computed paths
2557 for file in $loclist $trylist; do
2558 eval $file="\$_$file"
2563 Configure uses the operating system name and version to set some defaults.
2564 The default value is probably right if the name rings a bell. Otherwise,
2565 since spelling matters for me, either accept the default or answer "none"
2572 ''|' '|none) dflt=none ;;
2573 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2576 *) dflt="$osname" ;;
2578 rp="Operating system name?"
2582 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2588 ''|' '|none) dflt=none ;;
2589 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2590 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2592 ''|' ') dflt=none ;;
2597 *) dflt="$osvers" ;;
2599 rp="Operating system version?"
2609 : who configured the system
2610 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2611 cf_by=`(logname) 2>/dev/null`
2614 cf_by=`(whoami) 2>/dev/null`
2616 "") cf_by=unknown ;;
2620 : set up the script used to warn in case of inconsistency
2627 echo "*** WHOA THERE!!! ***" >&4
2628 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2629 rp=" Keep the $hint value?"
2632 y) td=$was; tu=$was;;
2636 : function used to set $1 to $val
2637 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2639 $define$undef) . ./whoa; eval "$var=\$td";;
2640 $undef$define) . ./whoa; eval "$var=\$tu";;
2641 *) eval "$var=$val";;
2644 case "$usethreads" in
2645 $define|true|[yY]*) dflt='y';;
2650 Perl can be built to take advantage of threads on some systems.
2651 To do so, Configure can be run with -Dusethreads.
2653 Note that threading is a highly experimental feature, and
2654 some known race conditions still remain. If you choose to try
2655 it, be very sure to not actually deploy it for production
2656 purposes. README.threads has more details, and is required
2657 reading if you enable threads.
2659 If this doesn't make any sense to you, just accept the default '$dflt'.
2661 rp='Build a threading Perl?'
2664 y|Y) val="$define" ;;
2670 case "$usethreads" in
2674 As of 5.5.640, Perl has two different internal threading implementations,
2675 the 5.005 version (5005threads) and an interpreter-based version
2676 (ithreads) that has one interpreter per thread. Both are very
2677 experimental. This arrangement exists to help developers work out
2678 which one is better.
2680 If you're a casual user, you probably don't want interpreter-threads
2681 at this time. There doesn't yet exist a way to create threads from
2682 within Perl in this model, i.e., "use Thread;" will NOT work.
2684 : Default to ithreads unless overridden on command line or with
2687 case "$use5005threads" in
2688 $define|true|[yY]*) dflt='n';;
2690 case "$useithreads" in
2691 $undef|false|[nN]*) dflt='n';;
2693 rp='Use interpreter-based ithreads?'
2696 y|Y) val="$define" ;;
2701 : Now set use5005threads to the opposite value.
2702 case "$useithreads" in
2703 $define) val="$undef" ;;
2710 useithreads="$undef"
2711 use5005threads="$undef"
2715 case "$d_oldpthreads" in
2716 '') : Configure tests would be welcome here. For now, assume undef.
2718 *) val="$d_oldpthreads" ;;
2724 case "$usethreads" in
2725 "$define"|true|[yY]*)
2726 : Look for a hint-file generated 'call-back-unit'. If the
2727 : user has specified that a threading perl is to be built,
2728 : we may need to set or change some other defaults.
2729 if $test -f usethreads.cbu; then
2730 echo "Your platform has some specific hints for threaded builds, using them..."
2734 (Your platform doesn't have any specific hints for threaded builds.
2735 Assuming POSIX threads, then.)
2743 Perl can be built so that multiple Perl interpreters can coexist
2744 within the same Perl executable.
2747 case "$useithreads" in
2750 This multiple interpreter support is required for interpreter-based threads.
2754 *) case "$usemultiplicity" in
2755 $define|true|[yY]*) dflt='y';;
2759 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2760 rp='Build Perl for multiplicity?'
2763 y|Y) val="$define" ;;
2771 : determine where manual pages are on this system
2775 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2776 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2777 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2778 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2779 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2780 sysman=`./loc . /usr/man/man1 $syspath`
2783 if $test -d "$sysman"; then
2784 echo "System manual is in $sysman." >&4
2786 echo "Could not find manual pages in source form." >&4
2789 : see what memory models we can support
2792 $cat >pdp11.c <<'EOP'
2801 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2802 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2803 dflt='unsplit split'
2805 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2808 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2813 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2816 if $test -d /lib/large || $test -d /usr/lib/large; then
2819 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2828 Some systems have different model sizes. On most systems they are called
2829 small, medium, large, and huge. On the PDP11 they are called unsplit and
2830 split. If your system doesn't support different memory models, say "none".
2831 If you wish to force everything to one memory model, say "none" here and
2832 put the appropriate flags later when it asks you for other cc and ld flags.
2833 Venix systems may wish to put "none" and let the compiler figure things out.
2834 (In the following question multiple model names should be space separated.)
2836 The default for most systems is "none".
2839 rp="Which memory models are supported?"
2854 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2855 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2862 rp="What flag indicates separate I and D space?"
2870 *large*|*small*|*medium*|*huge*)
2877 rp="What flag indicates large model?"
2887 *huge*) case "$huge" in
2891 rp="What flag indicates huge model?"
2901 *medium*) case "$medium" in
2905 rp="What flag indicates medium model?"
2912 *) medium="$large";;
2915 *small*) case "$small" in
2919 rp="What flag indicates small model?"
2930 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2933 $rm -f pdp11.* pdp11
2935 : make some quick guesses about what we are up against
2937 $echo $n "Hmm... $c"
2947 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2948 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2950 echo "Looks kind of like an OSF/1 system, but we'll see..."
2952 elif test `echo abc | tr a-z A-Z` = Abc ; then
2953 xxx=`./loc addbib blurfl $pth`
2954 if $test -f $xxx; then
2955 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2959 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2960 echo "Looks kind of like an extended USG system, but we'll see..."
2962 echo "Looks kind of like a USG system, but we'll see..."
2966 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2967 echo "Looks kind of like a BSD system, but we'll see..."
2971 echo "Looks kind of like a Version 7 system, but we'll see..."
2974 case "$eunicefix" in
2977 There is, however, a strange, musty smell in the air that reminds me of
2978 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2982 : it so happens the Eunice I know will not run shell scripts in Unix format
2986 echo "Congratulations. You aren't running Eunice."
2990 : Detect OS2. The p_ variable is set above in the Head.U unit.
2995 I have the feeling something is not exactly right, however...don't tell me...
2996 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3001 if test -f /xenix; then
3002 echo "Actually, this looks more like a XENIX system..."
3007 echo "It's not Xenix..."
3012 if test -f /venix; then
3013 echo "Actually, this looks more like a VENIX system..."
3020 echo "Nor is it Venix..."
3023 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3024 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3027 : see if we need a special compiler
3035 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3036 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3050 On some older systems the default C compiler will not resolve multiple global
3051 references that happen to have the same name. On some such systems the "Mcc"
3052 command may be used to force these to be resolved. On other systems a "cc -M"
3053 command is required. (Note that the -M flag on other systems indicates a
3054 memory model to use!) If you have the Gnu C compiler, you might wish to use
3060 rp="Use which C compiler?"
3068 rp="Use which C compiler?"
3072 : Look for a hint-file generated 'call-back-unit'. Now that the
3073 : user has specified the compiler, we may need to set or change some
3075 if $test -f cc.cbu; then
3079 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3080 $cat >gccvers.c <<EOM
3085 printf("%s\n", __VERSION__);
3087 printf("%s\n", "1");
3093 if $cc $ldflags -o gccvers gccvers.c; then
3094 gccversion=`./gccvers`
3095 case "$gccversion" in
3096 '') echo "You are not using GNU cc." ;;
3097 *) echo "You are using GNU cc $gccversion."
3102 echo "*** WHOA THERE!!! ***" >&4
3103 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3104 case "$knowitall" in
3106 echo " You'd better start hunting for one and let me know about it." >&4
3112 case "$gccversion" in
3113 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3116 : decide how portable to be. Allow command line overrides.
3117 case "$d_portable" in
3119 *) d_portable="$define" ;;
3122 : set up shell script to do ~ expansion
3128 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3131 if $test -f /bin/csh; then
3132 /bin/csh -f -c "glob \$1"
3137 name=\`$expr x\$1 : '..\([^/]*\)'\`
3138 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3139 if $test ! -d "\$dir"; then
3141 echo "\$me: can't locate home directory for: \$name" >&2
3146 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3162 : now set up to get a file name
3166 cat <<'EOSC' >>getfile
3182 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3183 fn=`echo $fn | sed 's/(.*)//'`
3189 loc_file=`expr $fn : '.*:\(.*\)'`
3190 fn=`expr $fn : '\(.*\):.*'`
3198 */*) fullpath=true;;
3207 *e*) exp_file=true;;
3210 *p*) nopath_ok=true;;
3215 *d*) type='Directory';;
3216 *l*) type='Locate';;
3221 Locate) what='File';;
3226 case "$d_portable" in
3234 while test "$type"; do
3239 true) rp="$rp (~name ok)";;
3242 if test -f UU/getfile.ok && \
3243 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3262 value=`UU/filexp $ans`
3265 if test "$ans" != "$value"; then
3266 echo "(That expands to $value on this system.)"
3280 /*) value="$ansexp" ;;
3281 [a-zA-Z]:/*) value="$ansexp" ;;
3286 echo "I shall only accept a full path name, as in /bin/ls." >&4
3287 echo "Use a ! shell escape if you wish to check pathnames." >&4
3290 echo "Please give a full path name, starting with slash." >&4
3293 echo "Note that using ~name is ok provided it expands well." >&4
3306 for fp in $gfpth; do
3307 if test "X$fp" = X.; then
3312 if test -f "$pf"; then
3314 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3316 echo "($value is not a plain file, but that's ok.)"
3319 if test X"$type" = X; then
3326 for fp in $gfpth; do
3327 if test "X$fp" = X.; then
3332 direxp="$fp/$ansexp"
3334 if test -d "$direxp"; then
3342 if test -d "$ansexp"; then
3343 echo "(Looking for $loc_file in directory $value.)"
3344 value="$value/$loc_file"
3345 ansexp="$ansexp/$loc_file"
3347 if test -f "$ansexp"; then
3350 case "$nopath_ok" in
3351 true) case "$value" in
3353 *) echo "Assuming $value will be in people's path."
3369 if test "$fastread" = yes; then
3374 rp="$what $value doesn't exist. Use that name anyway?"
3393 test "X$gfpthkeep" != Xy && gfpth=""
3396 : What should the include directory be ?
3398 $echo $n "Hmm... $c"
3402 if $test -f /bin/mips && /bin/mips; then
3403 echo "Looks like a MIPS system..."
3404 $cat >usr.c <<'EOCP'
3405 #ifdef SYSTYPE_BSD43
3409 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3410 dflt='/bsd43/usr/include'
3414 mips_type='System V'
3416 $rm -f usr.c usr.out
3417 echo "and you're compiling with the $mips_type compiler and libraries."
3421 echo "Doesn't look like a MIPS system."
3431 case "$xxx_prompt" in
3434 rp='Where are the include files you want to use?'
3442 : see how we invoke the C preprocessor
3444 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3445 cat <<'EOT' >testcpp.c
3451 if test ! -f cppstdin; then
3452 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3453 # AIX cc -E doesn't show the absolute headerfile
3454 # locations but we'll cheat by using the -M flag.
3455 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
3457 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3460 echo "Keeping your $hint cppstdin wrapper."
3463 wrapper=`pwd`/cppstdin
3467 if $test "X$cppstdin" != "X" && \
3468 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3469 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3471 echo "You used to use $cppstdin $cppminus so we'll use that again."
3473 '') echo "But let's see if we can live without a wrapper..." ;;
3475 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3476 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3478 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3481 echo "(However, $cpprun $cpplast does not work, let's see...)"
3489 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3496 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3497 $cc -E <testcpp.c >testcpp.out 2>&1; \
3498 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3499 echo "Yup, it does."
3502 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3503 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3504 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3505 echo "Yup, it does."
3508 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3509 $cc -P <testcpp.c >testcpp.out 2>&1; \
3510 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3511 echo "Yipee, that works!"
3514 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3515 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3516 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3517 echo "At long last!"
3520 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3521 $cpp <testcpp.c >testcpp.out 2>&1; \
3522 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3526 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3527 $cpp - <testcpp.c >testcpp.out 2>&1; \
3528 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3529 echo "Hooray, it works! I was beginning to wonder."
3532 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3533 $wrapper <testcpp.c >testcpp.out 2>&1; \
3534 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3540 rp="No dice. I can't find a C preprocessor. Name one:"
3544 $x_cpp <testcpp.c >testcpp.out 2>&1
3545 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3546 echo "OK, that will do." >&4
3548 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3563 echo "Perhaps can we force $cc -E using a wrapper..."
3564 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3565 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3571 echo "Nope, we'll have to live without it..."
3585 "$wrapper"|'cppstdin') ;;
3586 *) $rm -f $wrapper;;
3588 $rm -f testcpp.c testcpp.out
3590 : Set private lib path
3593 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3598 '') dlist="$loclibpth $plibpth $glibpth";;
3599 *) dlist="$libpth";;
3602 : Now check and see which directories actually exist, avoiding duplicates
3606 if $test -d $xxx; then
3609 *) libpth="$libpth $xxx";;
3615 Some systems have incompatible or broken versions of libraries. Among
3616 the directories listed in the question below, please remove any you
3617 know not to be holding relevant libraries, and add any that are needed.
3618 Say "none" for none.
3629 rp="Directories to use for library searches?"
3636 : compute shared library extension
3639 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3649 On some systems, shared libraries may be available. Answer 'none' if
3650 you want to suppress searching of shared libraries for the remainder
3651 of this configuration.
3654 rp='What is the file extension used for shared libraries?'
3658 : Define several unixisms.
3659 : Hints files or command line option can be used to override them.
3660 : The convoluted testing is in case hints files set either the old
3663 '') case "$exe_ext" in
3665 *) _exe="$exe_ext" ;;
3670 '') case "$lib_ext" in
3677 '') case "$obj_ext" in
3684 '') case "$path_sep" in
3695 : Which makefile gets called first. This is used by make depend.
3696 case "$firstmakefile" in
3697 '') firstmakefile='makefile';;
3701 $define|true|[yY]*) dflt='y';;
3706 Perl can be built to use the SOCKS proxy protocol library. To do so,
3707 Configure must be run with -Dusesocks.
3709 If this doesn't make any sense to you, just accept the default '$dflt'.
3711 rp='Build Perl for SOCKS?'
3714 y|Y) val="$define" ;;
3720 : Looking for optional libraries
3722 echo "Checking for optional libraries..." >&4
3727 case "$libswanted" in
3728 '') libswanted='c_s';;
3731 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3737 for thisdir in $libpth $xlibpth; do
3738 test -d $thisdir && libspath="$libspath $thisdir"
3740 for thislib in $libswanted; do
3741 for thisdir in $libspath; do
3743 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3744 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3745 $test -f "$xxx" && eval $libscheck
3746 $test -f "$xxx" && libstyle=shared
3748 if test ! -f "$xxx"; then
3749 xxx=$thisdir/lib$thislib.$so
3750 $test -f "$xxx" && eval $libscheck
3751 $test -f "$xxx" && libstyle=shared
3753 if test ! -f "$xxx"; then
3754 xxx=$thisdir/lib$thislib$_a
3755 $test -f "$xxx" && eval $libscheck
3756 $test -f "$xxx" && libstyle=static
3758 if test ! -f "$xxx"; then
3759 xxx=$thisdir/$thislib$_a
3760 $test -f "$xxx" && eval $libscheck
3761 $test -f "$xxx" && libstyle=static
3763 if test ! -f "$xxx"; then
3764 xxx=$thisdir/lib${thislib}_s$_a
3765 $test -f "$xxx" && eval $libscheck
3766 $test -f "$xxx" && libstyle=static
3767 $test -f "$xxx" && thislib=${thislib}_s
3769 if test ! -f "$xxx"; then
3770 xxx=$thisdir/Slib$thislib$_a
3771 $test -f "$xxx" && eval $libscheck
3772 $test -f "$xxx" && libstyle=static
3774 if $test -f "$xxx"; then
3776 shared) echo "Found -l$thislib (shared)." ;;
3777 static) echo "Found -l$thislib." ;;
3778 *) echo "Found -l$thislib ($libstyle)." ;;
3782 *) dflt="$dflt -l$thislib"
3783 libsfound="$libsfound $xxx"
3785 libsfiles="$libsfiles $yyy"
3786 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3787 case " $libsdirs " in
3789 *) libsdirs="$libsdirs $yyy" ;;
3796 if $test ! -f "$xxx"; then
3797 echo "No -l$thislib."
3808 ' '|'') dflt='none';;
3813 In order to compile $package on your machine, a number of libraries
3814 are usually needed. Include any other special libraries here as well.
3815 Say "none" for none. The default list is almost always right.
3819 rp="What libraries to use?"
3826 : determine optimization, if desired, or use for debug flag also
3828 ' '|$undef) dflt='none';;
3830 *) dflt="$optimize";;
3834 By default, $package compiles with the -O flag to use the optimizer.
3835 Alternately, you might want to use the symbolic debugger, which uses
3836 the -g flag (on traditional Unix systems). Either flag can be
3837 specified here. To use neither flag, specify the word "none".
3840 rp="What optimizer/debugger flag should be used?"
3844 'none') optimize=" ";;
3848 : We will not override a previous value, but we might want to
3849 : augment a hint file
3851 default|recommended)
3852 case "$gccversion" in
3853 1*) dflt='-fpcc-struct-return' ;;
3856 *-g*) dflt="$dflt -DDEBUGGING";;
3858 case "$gccversion" in
3859 2*) if test -d /etc/conf/kconfig.d &&
3860 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3866 case "$gccversion" in
3870 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3871 echo 'int main(void) { return 0; }' > gcctest.c
3872 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3873 echo "Yes, it does." 2>&1
3876 echo "Leaving current flags $ccflags alone." 2>&1
3878 *) dflt="$dflt -fno-strict-aliasing" ;;
3881 echo "Nope, it doesn't, but that's ok." 2>&1
3888 case "$mips_type" in
3889 *BSD*|'') inclwanted="$locincpth $usrinc";;
3890 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3892 for thisincl in $inclwanted; do
3893 if $test -d $thisincl; then
3894 if $test x$thisincl != x$usrinc; then
3897 *) dflt="$dflt -I$thisincl";;
3903 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3905 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3913 *) dflt="$dflt -D$2";;
3917 set signal.h LANGUAGE_C; eval $inctest
3921 ccflags="$ccflags -DSOCKS"
3926 default|recommended) dflt="$ccflags $dflt" ;;
3927 *) dflt="$ccflags";;
3935 Your C compiler may want other flags. For this question you should include
3936 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3937 but you should NOT include libraries or ld flags like -lwhatever. If you
3938 want $package to honor its debug switch, you should include -DDEBUGGING here.
3939 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3941 To use no flags, specify the word "none".
3947 rp="Any additional cc flags?"
3954 : the following weeds options from ccflags that are of no interest to cpp
3956 case "$gccversion" in
3957 1*) cppflags="$cppflags -D__GNUC__"
3959 case "$mips_type" in
3961 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3967 echo "Let me guess what the preprocessor flags are..." >&4
3981 *) ftry="$previous $flag";;
3983 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3984 >cpp1.out 2>/dev/null && \
3985 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3986 >cpp2.out 2>/dev/null && \
3987 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3988 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3990 cppflags="$cppflags $ftry"
4000 *-*) echo "They appear to be: $cppflags";;
4002 $rm -f cpp.c cpp?.out
4006 : flags used in final linking phase
4008 '') if ./venix; then
4014 *-posix*) dflt="$dflt -posix" ;;
4017 *) dflt="$ldflags";;
4020 : Try to guess additional flags to pick up local libraries.
4021 for thislibdir in $libpth; do
4022 case " $loclibpth " in
4025 *"-L$thislibdir "*) ;;
4026 *) dflt="$dflt -L$thislibdir" ;;
4038 Your C linker may need flags. For this question you should
4039 include -L/whatever and any other flags used by the C linker, but you
4040 should NOT include libraries like -lwhatever.
4042 Make sure you include the appropriate -L/path flags if your C linker
4043 does not normally search all of the directories you specified above,
4046 To use no flags, specify the word "none".
4050 rp="Any additional ld flags (NOT including libraries)?"
4056 rmlist="$rmlist pdp11"
4060 echo "Checking your choice of C compiler and flags for coherency..." >&4
4061 $cat > try.c <<'EOF'
4063 int main() { printf("Ok\n"); exit(0); }
4065 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4067 $cat >try.msg <<'EOM'
4068 I've tried to compile and run the following simple program:
4071 $cat try.c >> try.msg
4073 $cat >> try.msg <<EOM
4080 and I got the following output:
4084 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4085 if sh -c './try' >>try.msg 2>&1; then
4089 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4092 cat >> try.msg <<'EOQS'
4093 If $libs contains -lsfio, and sfio is mis-configured, then it
4094 sometimes (apparently) runs and exits with a 0 status, but with no
4095 output! It may have to do with sfio's use of _exit vs. exit.
4098 rp="You have a big problem. Shall I abort Configure"
4105 echo "The program compiled OK, but exited with status $?." >>try.msg
4106 rp="You have a problem. Shall I abort Configure"
4110 echo "I can't compile the test program." >>try.msg
4111 rp="You have a BIG problem. Shall I abort Configure"
4117 case "$knowitall" in
4119 echo "(The supplied flags or libraries might be incorrect.)"
4127 *) echo "Ok. Stopping Configure." >&4
4132 n) echo "OK, that should do.";;
4134 $rm -f try try.* core
4136 : define an is-a-typedef? function
4137 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4139 "") inclist="sys/types.h";;
4141 eval "varval=\$$var";
4145 for inc in $inclist; do
4146 echo "#include <$inc>" >>temp.c;
4148 echo "#ifdef $type" >> temp.c;
4149 echo "printf(\"We have $type\");" >> temp.c;
4150 echo "#endif" >> temp.c;
4151 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4152 if $contains $type temp.E >/dev/null 2>&1; then
4158 *) eval "$var=\$varval";;
4161 : define an is-a-typedef? function that prompts if the type is not available.
4162 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4164 "") inclist="sys/types.h";;
4166 eval "varval=\$$var";
4170 for inc in $inclist; do
4171 echo "#include <$inc>" >>temp.c;
4173 echo "#ifdef $type" >> temp.c;
4174 echo "printf(\"We have $type\");" >> temp.c;
4175 echo "#endif" >> temp.c;
4176 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4178 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4179 if $contains $type temp.E >/dev/null 2>&1; then
4180 echo "$type found." >&4;
4183 echo "$type NOT found." >&4;
4189 *) eval "$var=\$varval";;
4192 : define a shorthand compile call
4196 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4197 : define a shorthand compile call for compilations that should be ok.
4201 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4203 : check for lengths of integral types
4207 echo "Checking to see how big your integers are..." >&4
4208 $cat >intsize.c <<'EOCP'
4212 printf("intsize=%d;\n", (int)sizeof(int));
4213 printf("longsize=%d;\n", (int)sizeof(long));
4214 printf("shortsize=%d;\n", (int)sizeof(short));
4219 if eval $compile_ok && ./intsize > /dev/null; then
4221 echo "Your integers are $intsize bytes long."
4222 echo "Your long integers are $longsize bytes long."
4223 echo "Your short integers are $shortsize bytes long."
4227 Help! I can't compile and run the intsize test program: please enlighten me!
4228 (This is probably a misconfiguration in your system or libraries, and
4229 you really ought to fix it. Still, I'll try anyway.)
4233 rp="What is the size of an integer (in bytes)?"
4237 rp="What is the size of a long integer (in bytes)?"
4241 rp="What is the size of a short integer (in bytes)?"
4247 $rm -f intsize intsize.*
4249 : see what type lseek is declared as in the kernel
4250 rp="What is the type used for lseek's offset on this system?"
4251 set off_t lseektype long stdio.h sys/types.h
4255 echo "Checking to see how big your file offsets are..." >&4
4257 #include <sys/types.h>
4261 printf("%d\n", (int)sizeof($lseektype));
4266 if eval $compile_ok; then
4268 echo "Your file offsets are $lseeksize bytes long."
4272 echo "(I can't seem to compile the test program. Guessing...)"
4273 rp="What is the size of your file offsets (in bytes)?"
4279 : see what type file positions are declared as in the library
4280 rp="What is the type for file position used by fsetpos()?"
4281 set fpos_t fpostype long stdio.h sys/types.h
4286 *_t) zzz="$fpostype" ;;
4289 echo "Checking the size of $zzz..." >&4
4291 #include <sys/types.h>
4294 printf("%d\n", (int)sizeof($fpostype));
4299 if eval $compile_ok; then
4303 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4306 echo "Your $zzz is $fpossize bytes long."
4312 echo "(I can't compile the test program. Guessing...)" >&4
4313 rp="What is the size of your file positions (in bytes)?"
4320 # Backward compatibility (uselfs is deprecated).
4322 "$define"|true|[yY]*)
4325 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4327 uselargefiles="$define"
4331 case "$lseeksize:$fpossize" in
4334 You can have files larger than 2 gigabytes.
4337 *) case "$uselargefiles" in
4338 "$undef"|false|[nN]*) dflt='n' ;;
4343 Perl can be built to understand large files (files larger than 2 gigabytes)
4344 on some systems. To do so, Configure can be run with -Duselargefiles.
4346 If this doesn't make any sense to you, just accept the default '$dflt'.
4348 rp='Try to understand large files, if available?'
4351 y|Y) val="$define" ;;
4358 case "$uselargefiles" in
4360 : Look for a hint-file generated 'call-back-unit'. If the
4361 : user has specified that a large files perl is to be built,
4362 : we may need to set or change some other defaults.
4363 if $test -f uselargefiles.cbu; then
4364 echo "Your platform has some specific hints for large file builds, using them..."
4365 . ./uselargefiles.cbu
4367 echo "Rechecking to see how big your file offsets are..." >&4
4369 #include <sys/types.h>
4373 printf("%d\n", (int)sizeof($lseektype));
4378 if eval $compile_ok; then
4380 $echo "Your file offsets are now $lseeksize bytes long."
4384 echo "(I can't seem to compile the test program. Guessing...)"
4385 rp="What is the size of your file offsets (in bytes)?"
4390 *_t) zzz="$fpostype" ;;
4393 $echo $n "Rechecking the size of $zzz...$c" >&4
4395 #include <sys/types.h>
4398 printf("%d\n", (int)sizeof($fpostype));
4403 if eval $compile_ok; then
4408 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4411 echo " $fpossize bytes." >&4
4417 echo "(I can't compile the test program. Guessing...)" >&4
4418 rp="What is the size of your file positions (in bytes)?"
4428 case "$usemorebits" in
4429 "$define"|true|[yY]*)
4430 use64bitint="$define"
4431 uselongdouble="$define"
4432 usemorebits="$define"
4434 *) usemorebits="$undef"
4439 case "$uselonglong" in
4440 "$define"|true|[yY]*)
4443 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4445 use64bitint="$define"
4448 case "$use64bits" in
4449 "$define"|true|[yY]*)
4452 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4454 use64bitint="$define"
4457 case "$use64bitints" in
4458 "$define"|true|[yY]*)
4461 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4463 use64bitint="$define"
4466 case "$use64bitsint" in
4467 "$define"|true|[yY]*)
4470 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4472 use64bitint="$define"
4475 case "$uselonglongs" in
4476 "$define"|true|[yY]*)
4479 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4481 use64bitint="$define"
4484 case "$use64bitsall" in
4485 "$define"|true|[yY]*)
4488 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4490 use64bitall="$define"
4495 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4497 case "$use64bitall" in
4498 "$define"|true|[yY]*) use64bitint="$define" ;;
4504 You have natively 64-bit long integers.
4508 *) case "$use64bitint" in
4509 "$define"|true|[yY]*) dflt='y';;
4514 Perl can be built to take advantage of 64-bit integer types
4515 on some systems. To do so, Configure can be run with -Duse64bitint.
4516 Choosing this option will most probably introduce binary incompatibilities.
4518 If this doesn't make any sense to you, just accept the default '$dflt'.
4520 rp='Try to use 64-bit integers, if available?'
4523 [yY]*) val="$define" ;;
4531 case "$use64bitall" in
4532 "$define"|true|[yY]*) dflt='y' ;;
4533 *) case "$longsize" in
4541 You may also choose to try maximal 64-bitness. It means using as much
4542 64-bitness as possible on the platform. This in turn means even more
4543 binary incompatibilities. On the other hand, your platform may not
4544 have any more 64-bitness available than what you already have chosen.
4546 If this doesn't make any sense to you, just accept the default '$dflt'.
4548 rp='Try to use maximal 64-bit support, if available?'
4551 [yY]*) val="$define" ;;
4556 case "$use64bitall" in
4558 case "$use64bitint" in
4562 Since you have chosen a maximally 64-bit build, I'm also turning on
4563 the use of 64-bit integers.
4565 use64bitint="$define" ;;
4570 case "$use64bitint" in
4571 "$define"|true|[yY]*)
4572 : Look for a hint-file generated 'call-back-unit'. If the
4573 : user has specified that a 64-bit perl is to be built,
4574 : we may need to set or change some other defaults.
4575 if $test -f use64bitint.cbu; then
4576 echo "Your platform has some specific hints for 64-bit integers, using them..."
4580 4) case "$archname64" in
4581 '') archname64=64int ;;
4588 case "$use64bitall" in
4589 "$define"|true|[yY]*)
4590 : Look for a hint-file generated 'call-back-unit'. If the
4591 : user has specified that a maximally 64-bit perl is to be built,
4592 : we may need to set or change some other defaults.
4593 if $test -f use64bitall.cbu; then
4594 echo "Your platform has some specific hints for 64-bit builds, using them..."
4598 4) case "$archname64" in
4599 ''|64int) archname64=64all ;;
4606 : determine the architecture name
4608 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4609 tarch=`arch`"-$osname"
4610 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4611 if uname -m > tmparch 2>&1 ; then
4612 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4613 -e 's/$/'"-$osname/" tmparch`
4621 case "$myarchname" in
4624 echo "(Your architecture name used to be $myarchname.)"
4631 *) dflt="$archname";;
4633 rp='What is your architecture name'
4636 case "$usethreads" in
4638 echo "Threads selected." >&4
4640 *-thread*) echo "...and architecture name already has -thread." >&4
4642 *) archname="$archname-thread"
4643 echo "...setting architecture name to $archname." >&4
4648 case "$usemultiplicity" in
4650 echo "Multiplicity selected." >&4
4652 *-multi*) echo "...and architecture name already has -multi." >&4
4654 *) archname="$archname-multi"
4655 echo "...setting architecture name to $archname." >&4
4660 case "$use64bitint" in
4662 case "$archname64" in
4667 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4669 *) archname="$archname-$archname64"
4670 echo "...setting architecture name to $archname." >&4
4677 : determine root of directory hierarchy where package will be installed.
4680 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4688 By default, $package will be installed in $dflt/bin, manual pages
4689 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4690 installation directories. Typically this is something like /usr/local.
4691 If you wish to have binaries under /usr/bin but other parts of the
4692 installation under /usr/local, that's ok: you will be prompted
4693 separately for each of the installation directories, the prefix being
4694 only used to set the defaults.
4698 rp='Installation prefix to use?'
4706 *) oldprefix="$prefix";;
4716 $define|true) afs=true ;;
4717 $undef|false) afs=false ;;
4718 *) if test -d /afs; then
4726 echo "AFS may be running... I'll be extra cautious then..." >&4
4728 echo "AFS does not seem to be running..." >&4
4731 : determine installation prefix for where package is to be installed.
4735 Since you are running AFS, I need to distinguish the directory in which
4736 files will reside from the directory in which they are installed (and from
4737 which they are presumably copied to the former directory by occult means).
4740 case "$installprefix" in
4741 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4742 *) dflt="$installprefix";;
4747 In some special cases, particularly when building $package for distribution,
4748 it is convenient to distinguish between the directory in which files should
4749 be installed from the directory ($prefix) in which they
4750 will eventually reside. For most users, these two directories are the same.
4753 case "$installprefix" in
4755 *) dflt=$installprefix;;
4759 rp='What installation prefix should I use for installing files?'
4761 installprefix="$ans"
4762 installprefixexp="$ansexp"
4764 : set the prefixit variable, to compute a suitable default value
4765 prefixit='case "$3" in
4767 case "$oldprefix" in
4768 "") eval "$1=\"\$$2\"";;
4775 ""|" ") eval "$1=\"\$$2\"";;
4781 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4783 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4784 /*-$oldprefix/*|\~*-$oldprefix/*)
4785 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4786 *) eval "$1=\"\$$2\"";;
4791 : get the patchlevel
4793 echo "Getting the current patchlevel..." >&4
4794 if $test -r $rsrc/patchlevel.h;then
4795 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4796 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4797 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4798 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4799 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4800 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4809 $echo $n "(You have $package revision $revision" $c
4810 $echo $n " patchlevel $patchlevel" $c
4811 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4815 : XXX Should be a Configure test for double-dots in filenames.
4816 version=`echo $revision $patchlevel $subversion | \
4817 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4818 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4819 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4822 version=`echo $revision $patchlevel $subversion | \
4823 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4824 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4825 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4828 : Special case the 5.005_xx maintenance series, which used 5.005
4829 : without any subversion label as a subdirectory in $sitelib
4830 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4831 api_versionstring='5.005'
4834 : determine installation style
4835 : For now, try to deduce it from prefix unless it is already set.
4836 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4837 case "$installstyle" in
4838 '') case "$prefix" in
4839 *perl*) dflt='lib';;
4840 *) dflt='lib/perl5' ;;
4843 *) dflt="$installstyle" ;;
4845 : Probably not worth prompting for this since we prompt for all
4846 : the directories individually, and the prompt would be too long and
4850 : determine where private library files go
4851 : Usual default is /usr/local/lib/perl5/$version.
4852 : Also allow things like /opt/perl/lib/$version, since
4853 : /opt/perl/lib/perl5... would be redundant.
4854 : The default "style" setting is made in installstyle.U
4855 case "$installstyle" in
4856 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4857 *) set dflt privlib lib/$version ;;
4862 There are some auxiliary files for $package that need to be put into a
4863 private library directory that is accessible by everyone.
4867 rp='Pathname where the private library files will reside?'
4870 privlibexp="$ansexp"
4871 : Change installation prefix, if necessary.
4872 if $test X"$prefix" != X"$installprefix"; then
4873 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4875 installprivlib="$privlibexp"
4878 : set the prefixup variable, to restore leading tilda escape
4879 prefixup='case "$prefixexp" in
4881 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4884 : determine where public architecture dependent libraries go
4887 : privlib default is /usr/local/lib/$package/$version
4888 : archlib default is /usr/local/lib/$package/$version/$archname
4889 : privlib may have an optional trailing /share.
4890 tdflt=`echo $privlib | $sed 's,/share$,,'`
4891 tdflt=$tdflt/$archname
4900 $spackage contains architecture-dependent library files. If you are
4901 sharing libraries in a heterogeneous environment, you might store
4902 these files in a separate location. Otherwise, you can just include
4903 them with the rest of the public library files.
4907 rp='Where do you want to put the public architecture-dependent libraries?'
4910 archlibexp="$ansexp"
4911 if $test X"$archlib" = X"$privlib"; then
4916 : Change installation prefix, if necessary.
4917 if $test X"$prefix" != X"$installprefix"; then
4918 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4920 installarchlib="$archlibexp"
4924 : Binary compatibility with 5.005 is not possible for builds
4925 : with advanced features
4926 case "$usethreads$usemultiplicity" in
4928 bincompat5005="$undef"
4929 d_bincompat5005="$undef"
4933 This version of Perl can be compiled for binary compatibility with 5.005.
4934 If you decide to do so, you will be able to continue using most of the
4935 extensions that were compiled for Perl 5.005.
4938 case "$bincompat5005$d_bincompat5005" in
4939 *"$undef"*) dflt=n ;;
4942 rp='Binary compatibility with Perl 5.005?'
4945 y*) val="$define" ;;
4950 case "$d_bincompat5005" in
4952 bincompat5005="$define"
4954 *) bincompat5005="$undef"
4955 d_bincompat5005="$undef"
4962 : see if setuid scripts can be secure
4965 Some kernels have a bug that prevents setuid #! scripts from being
4966 secure. Some sites have disabled setuid #! scripts because of this.
4968 First let's decide if your kernel supports secure setuid #! scripts.
4969 (If setuid #! scripts would be secure but have been disabled anyway,
4970 don't say that they are secure if asked.)
4975 if $test -d /dev/fd; then
4976 echo "#!$ls" >reflect
4977 chmod +x,u+s reflect
4978 ./reflect >flect 2>&1
4979 if $contains "/dev/fd" flect >/dev/null; then
4980 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4984 If you are not sure if they are secure, I can check but I'll need a
4985 username and password different from the one you are using right now.
4986 If you don't have such a username or don't want me to test, simply
4990 rp='Other username to test security of setuid scripts with?'
4995 case "$d_suidsafe" in
4996 '') echo "I'll assume setuid scripts are *not* secure." >&4
4999 echo "Well, the $hint value is *not* secure." >&4
5001 *) echo "Well, the $hint value *is* secure." >&4
5006 $rm -f reflect flect
5007 echo "#!$ls" >reflect
5008 chmod +x,u+s reflect
5011 echo '"su" will (probably) prompt you for '"$ans's password."
5012 su $ans -c './reflect >flect'
5013 if $contains "/dev/fd" flect >/dev/null; then
5014 echo "Okay, it looks like setuid scripts are secure." >&4
5017 echo "I don't think setuid scripts are secure." >&4
5022 rp='Does your kernel have *secure* setuid scripts?'
5025 [yY]*) val="$define";;
5030 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5031 echo "(That's for file descriptors, not floppy disks.)"
5037 $rm -f reflect flect
5039 : now see if they want to do setuid emulation
5042 case "$d_suidsafe" in
5045 echo "No need to emulate SUID scripts since they are secure here." >& 4
5049 Some systems have disabled setuid scripts, especially systems where
5050 setuid scripts cannot be secure. On systems where setuid scripts have
5051 been disabled, the setuid/setgid bits on scripts are currently
5052 useless. It is possible for $package to detect those bits and emulate
5053 setuid/setgid in a secure fashion. This emulation will only work if
5054 setuid scripts have been disabled in your kernel.
5058 "$define") dflt=y ;;
5061 rp="Do you want to do setuid/setgid emulation?"
5064 [yY]*) val="$define";;
5072 : determine filename position in cpp output
5074 echo "Computing filename position in cpp output for #include directives..." >&4
5075 echo '#include <stdio.h>' > foo.c
5078 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5079 $grep '^[ ]*#.*stdio\.h' | \
5080 while read cline; do
5083 while $test \$# -gt 0; do
5084 if $test -r \`echo \$1 | $tr -d '"'\`; then
5089 pos=\`expr \$pos + 1\`
5101 *) pos="${fieldn}th";;
5103 echo "Your cpp writes the filename in the $pos field of the line."
5105 : locate header file
5110 for usrincdir in $usrinc
5112 if test -f \$usrincdir/\$wanted; then
5113 echo "\$usrincdir/\$wanted"
5117 awkprg='{ print \$$fieldn }'
5118 echo "#include <\$wanted>" > foo\$\$.c
5119 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5120 $grep "^[ ]*#.*\$wanted" | \
5121 while read cline; do
5122 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5124 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5125 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5130 # status = 0: grep returned 0 lines, case statement not executed
5131 # status = 1: headerfile found
5132 # status = 2: while loop executed, no headerfile found
5136 if test \$status -eq 1; then
5143 : define an alternate in-header-list? function
5144 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5145 cont=true; xxf="echo \"<\$1> found.\" >&4";
5146 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5147 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5149 case $# in 4) instead=instead;; *) instead="at last";; esac;
5150 while $test "$cont"; do
5152 var=$2; eval "was=\$$2";
5153 if $test "$xxx" && $test -r "$xxx";
5155 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5158 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5159 set $yyy; shift; shift; yyy=$@;
5160 case $# in 0) cont="";;
5161 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5162 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5163 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5164 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5168 do set $yyy; var=$2; eval "was=\$$2";
5169 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5170 set $yyy; shift; shift; yyy=$@;
5173 : see if this is a malloc.h system
5174 set malloc.h i_malloc
5177 : see if stdlib is available
5178 set stdlib.h i_stdlib
5181 : determine which malloc to compile in
5183 case "$usemymalloc" in
5184 ''|[yY]*|true|$define) dflt='y' ;;
5187 rp="Do you wish to attempt to use the malloc that comes with $package?"
5193 mallocsrc='malloc.c'
5194 mallocobj="malloc$_o"
5195 d_mymalloc="$define"
5198 : Remove malloc from list of libraries to use
5199 echo "Removing unneeded -lmalloc from library list" >&4
5200 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5203 echo "libs = $libs" >&4
5215 : compute the return types of malloc and free
5217 $cat >malloc.c <<END
5221 #include <sys/types.h>
5235 case "$malloctype" in
5237 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5244 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5248 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5255 echo "Your system uses $freetype free(), it would seem." >&4
5259 After $package is installed, you may wish to install various
5260 add-on modules and utilities. Typically, these add-ons will
5261 be installed under $prefix with the rest
5262 of this package. However, you may wish to install such add-ons
5263 elsewhere under a different prefix.
5265 If you do not wish to put everything under a single prefix, that's
5266 ok. You will be prompted for the individual locations; this siteprefix
5267 is only used to suggest the defaults.
5269 The default should be fine for most people.
5273 rp='Installation prefix to use for add-on modules and utilities?'
5274 : XXX Here might be another good place for an installstyle setting.
5275 case "$siteprefix" in
5277 *) dflt=$siteprefix ;;
5280 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5282 case "$siteprefix" in
5286 *) oldsiteprefix="$prefix";;
5291 siteprefixexp="$ansexp"
5293 : determine where site specific libraries go.
5294 : Usual default is /usr/local/lib/perl5/site_perl/$version
5295 : The default "style" setting is made in installstyle.U
5296 : XXX No longer works with Prefixit stuff.
5297 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5299 '') case "$installstyle" in
5300 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5301 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5309 The installation process will create a directory for
5310 site-specific extensions and modules. Most users find it convenient
5311 to place all site-specific files in this directory rather than in the
5312 main distribution directory.
5316 rp='Pathname for the site-specific library files?'
5319 sitelibexp="$ansexp"
5320 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5321 : Change installation prefix, if necessary.
5322 if $test X"$prefix" != X"$installprefix"; then
5323 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5325 installsitelib="$sitelibexp"
5328 : determine where site specific architecture-dependent libraries go.
5329 : sitelib default is /usr/local/lib/perl5/site_perl/$version
5330 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5331 : sitelib may have an optional trailing /share.
5333 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
5334 dflt="$dflt/$archname"
5339 set sitearch sitearch none
5343 The installation process will also create a directory for
5344 architecture-dependent site-specific extensions and modules.
5348 rp='Pathname for the site-specific architecture-dependent library files?'
5351 sitearchexp="$ansexp"
5352 : Change installation prefix, if necessary.
5353 if $test X"$prefix" != X"$installprefix"; then
5354 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5356 installsitearch="$sitearchexp"
5361 The installation process will also create a directory for
5362 vendor-supplied add-ons. Vendors who supply perl with their system
5363 may find it convenient to place all vendor-supplied files in this
5364 directory rather than in the main distribution directory. This will
5365 ease upgrades between binary-compatible maintenance versions of perl.
5367 Of course you may also use these directories in whatever way you see
5368 fit. For example, you might use them to access modules shared over a
5369 company-wide network.
5371 The default answer should be fine for most people.
5372 This causes further questions about vendor add-ons to be skipped
5373 and no vendor-specific directories will be configured for perl.
5376 rp='Do you want to configure vendor-specific add-on directories?'
5377 case "$usevendorprefix" in
5378 define|true|[yY]*) dflt=y ;;
5379 *) : User may have set vendorprefix directly on Configure command line.
5380 case "$vendorprefix" in
5389 rp='Installation prefix to use for vendor-supplied add-ons?'
5390 case "$vendorprefix" in
5392 *) dflt=$vendorprefix ;;
5395 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5397 case "$vendorprefix" in
5401 *) oldvendorprefix="$prefix";;
5405 usevendorprefix="$define"
5407 vendorprefixexp="$ansexp"
5409 *) usevendorprefix="$undef"
5415 case "$vendorprefix" in
5416 '') d_vendorlib="$undef"
5420 *) d_vendorlib="$define"
5421 : determine where vendor-supplied modules go.
5422 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5423 case "$vendorlib" in
5425 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5426 case "$installstyle" in
5427 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5428 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5431 *) dflt="$vendorlib"
5435 rp='Pathname for the vendor-supplied library files?'
5438 vendorlibexp="$ansexp"
5441 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
5442 : Change installation prefix, if necessary.
5443 if $test X"$prefix" != X"$installprefix"; then
5444 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5446 installvendorlib="$vendorlibexp"
5449 case "$vendorprefix" in
5450 '') d_vendorarch="$undef"
5454 *) d_vendorarch="$define"
5455 : determine where vendor-supplied architecture-dependent libraries go.
5456 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
5457 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5458 : vendorlib may have an optional trailing /share.
5459 case "$vendorarch" in
5460 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
5461 dflt="$dflt/$archname"
5463 *) dflt="$vendorarch" ;;
5466 rp='Pathname for vendor-supplied architecture-dependent files?'
5469 vendorarchexp="$ansexp"
5472 : Change installation prefix, if necessary.
5473 if $test X"$prefix" != X"$installprefix"; then
5474 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5476 installvendorarch="$vendorarchexp"
5479 : Final catch-all directories to search
5482 Lastly, you can have perl look in other directories for extensions and
5483 modules in addition to those already specified.
5484 These directories will be searched after
5488 test X"$vendorlib" != "X" && echo ' ' $vendorlib
5489 test X"$vendorarch" != "X" && echo ' ' $vendorarch
5491 case "$otherlibdirs" in
5492 ''|' ') dflt='none' ;;
5493 *) dflt="$otherlibdirs" ;;
5496 Enter a colon-separated set of extra paths to include in perl's @INC
5497 search path, or enter 'none' for no extra paths.
5501 rp='Colon-separated list of additional directories for perl to search?'
5504 ' '|''|none) otherlibdirs=' ' ;;
5505 *) otherlibdirs="$ans" ;;
5507 case "$otherlibdirs" in
5511 set d_perl_otherlibdirs
5514 : Cruising for prototypes
5516 echo "Checking out function prototypes..." >&4
5517 $cat >prototype.c <<'EOCP'
5518 int main(int argc, char *argv[]) {
5521 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5522 echo "Your C compiler appears to support function prototypes."
5525 echo "Your C compiler doesn't seem to understand function prototypes."
5532 case "$prototype" in
5534 *) ansi2knr='ansi2knr'
5539 This version of $package can only be compiled by a compiler that
5540 understands function prototypes. Unfortunately, your C compiler
5542 doesn't seem to understand them. Sorry about that.
5544 If GNU cc is available for your system, perhaps you could try that instead.
5546 Eventually, we hope to support building Perl with pre-ANSI compilers.
5547 If you would like to help in that effort, please contact <perlbug@perl.org>.
5549 Aborting Configure now.
5555 : determine where public executables go
5560 rp='Pathname where the public executables will reside?'
5562 if $test "X$ansexp" != "X$binexp"; then
5567 : Change installation prefix, if necessary.
5568 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5569 if $test X"$prefix" != X"$installprefix"; then
5570 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5572 installbin="$binexp"
5575 : Find perl5.005 or later.
5576 echo "Looking for a previously installed perl5.005 or later... "
5578 '') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5579 : Check if this perl is recent and can load a simple module
5580 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5583 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5593 '') echo "None found. That's ok.";;
5594 *) echo "Using $perl5." ;;
5597 : Determine list of previous versions to include in @INC
5598 $cat > getverlist <<EOPL
5601 \$api_versionstring = "$api_versionstring";
5602 \$version = "$version";
5603 \$stem = "$sitelib_stem";
5604 \$archname = "$archname";
5606 $cat >> getverlist <<'EOPL'
5607 # Can't have leading @ because metaconfig interprets it as a command!
5608 ;@inc_version_list=();
5609 # XXX Redo to do opendir/readdir?
5612 ;@candidates = glob("5.*");
5618 # XXX ToDo: These comparisons must be reworked when two-digit
5619 # subversions come along, so that 5.7.10 compares as greater than
5620 # 5.7.3! By that time, hope that 5.6.x is sufficiently
5621 # widespread that we can use the built-in version vectors rather
5622 # than reinventing them here. For 5.6.0, however, we must
5623 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
5624 foreach $d (@candidates) {
5625 if ($d lt $version) {
5626 if ($d ge $api_versionstring) {
5627 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
5629 elsif ($d ge "5.005") {
5630 unshift(@inc_version_list, grep { -d } $d);
5634 # Skip newer version. I.e. don't look in
5635 # 5.7.0 if we're installing 5.6.1.
5639 if (@inc_version_list) {
5640 print join(' ', @inc_version_list);
5643 # Blank space to preserve value for next Configure run.
5648 case "$inc_version_list" in
5649 '') if test -x "$perl5"; then
5650 dflt=`$perl5 getverlist`
5655 $undef) dflt='none' ;;
5656 *) dflt="$inc_version_list" ;;
5659 ''|' ') dflt=none ;;
5663 In order to ease the process of upgrading, this version of perl
5664 can be configured to use modules built and installed with earlier
5665 versions of perl that were installed under $prefix. Specify here
5666 the list of earlier versions that this version of perl should check.
5667 If Configure detected no earlier versions of perl installed under
5668 $prefix, then the list will be empty. Answer 'none' to tell perl
5669 to not search earlier versions.
5671 The default should almost always be sensible, so if you're not sure,
5672 just accept the default.
5675 rp='List of earlier versions to include in @INC?'
5678 [Nn]one|''|' ') inc_version_list=' ' ;;
5679 *) inc_version_list="$ans" ;;
5681 case "$inc_version_list" in
5683 inc_version_list_init='0';;
5684 *) inc_version_list_init=`echo $inc_version_list |
5685 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5690 : determine whether to install perl also as /usr/bin/perl
5693 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5695 Many scripts expect perl to be installed as /usr/bin/perl.
5696 I can install the perl you are about to compile also as /usr/bin/perl
5697 (in addition to $installbin/perl).
5699 case "$installusrbinperl" in
5700 "$undef"|[nN]*) dflt='n';;
5703 rp="Do you want to install perl as /usr/bin/perl?"
5706 [yY]*) val="$define";;
5712 set installusrbinperl
5716 echo "Checking for GNU C Library..." >&4
5717 cat >gnulibc.c <<EOM
5729 if eval $compile_ok && ./gnulibc; then
5731 echo "You are using the GNU C Library"
5734 echo "You are not using the GNU C Library"
5740 : see if nm is to be used to determine whether a symbol is defined or not
5744 case "$d_gnulibc" in
5747 echo "nm probably won't work on the GNU C Library." >&4
5753 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5755 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5756 echo "'nm' won't be sufficient on this sytem." >&4
5762 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5763 if $test $dflt -gt 20; then
5773 true|$define) dflt=y;;
5780 I can use $nm to extract the symbols from your C libraries. This
5781 is a time consuming task which may generate huge output on the disk (up
5782 to 3 megabytes) but that should make the symbols extraction faster. The
5783 alternative is to skip the 'nm' extraction part and to compile a small
5784 test program instead to determine whether each symbol is present. If
5785 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5786 this may be the best solution.
5788 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5791 rp="Shall I use $nm to extract C symbols from the libraries?"
5794 [Nn]*) usenm=false;;
5803 : nm options which may be necessary
5805 '') if $test -f /mach_boot; then
5807 elif $test -d /usr/ccs/lib; then
5808 nm_opt='-p' # Solaris (and SunOS?)
5809 elif $test -f /dgux; then
5811 elif $test -f /lib64/rld; then
5812 nm_opt='-p' # 64-bit Irix
5818 : nm options which may be necessary for shared libraries but illegal
5819 : for archive libraries. Thank you, Linux.
5820 case "$nm_so_opt" in
5821 '') case "$myuname" in
5823 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5824 nm_so_opt='--dynamic'
5833 : get list of predefined functions in a handy place
5838 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5845 *) for thislib in $libs; do
5848 : Handle C library specially below.
5851 thislib=`echo $thislib | $sed -e 's/^-l//'`
5852 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5854 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5856 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5858 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5860 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5862 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5864 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5869 libnames="$libnames $try"
5871 *) libnames="$libnames $thislib" ;;
5880 for xxx in $libpth; do
5881 $test -r $1 || set $xxx/libc.$so
5882 : The messy sed command sorts on library version numbers.
5884 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5885 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5887 s/[0-9][0-9]*/0000&/g
5888 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5891 sort | $sed -e 's/^.* //'`
5894 $test -r $1 || set /usr/ccs/lib/libc.$so
5895 $test -r $1 || set /lib/libsys_s$_a
5901 if $test -r "$1"; then
5902 echo "Your (shared) C library seems to be in $1."
5904 elif $test -r /lib/libc && $test -r /lib/clib; then
5905 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5907 libc='/lib/clib /lib/libc'
5908 if $test -r /lib/syslib; then
5909 echo "(Your math library is in /lib/syslib.)"
5910 libc="$libc /lib/syslib"
5912 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5913 echo "Your C library seems to be in $libc, as you said before."
5914 elif $test -r $incpath/usr/lib/libc$_a; then
5915 libc=$incpath/usr/lib/libc$_a;
5916 echo "Your C library seems to be in $libc. That's fine."
5917 elif $test -r /lib/libc$_a; then
5919 echo "Your C library seems to be in $libc. You're normal."
5921 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5923 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5924 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5925 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5927 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5929 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5932 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5934 if $test -r "$tans"; then
5935 echo "Your C library seems to be in $tans, of all places."
5941 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5945 If the guess above is wrong (which it might be if you're using a strange
5946 compiler, or your machine supports multiple models), you can override it here.
5951 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5953 I can't seem to find your C library. I've looked in the following places:
5956 $sed 's/^/ /' libpath
5959 None of these seems to contain your C library. I need to get its name...
5964 rp='Where is your C library?'
5969 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5970 set X `cat libnames`
5973 case $# in 1) xxx=file; esac
5974 echo "Extracting names from the following $xxx for later perusal:" >&4
5976 $sed 's/^/ /' libnames >&4
5978 $echo $n "This may take a while...$c" >&4
5982 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5983 *) $nm $nm_opt $file 2>/dev/null;;
5988 $grep fprintf libc.tmp > libc.ptf
5989 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5990 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5992 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5994 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5996 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5998 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6000 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
6002 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6004 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
6006 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6008 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
6010 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6012 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
6014 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6016 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
6017 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
6019 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6021 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
6023 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6025 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
6027 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6029 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
6031 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6033 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
6035 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6037 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
6039 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6041 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
6043 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6045 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
6047 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6050 $nm -p $* 2>/dev/null >libc.tmp
6051 $grep fprintf libc.tmp > libc.ptf
6052 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
6053 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
6059 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
6061 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
6062 for thisname in $libnames $libc; do
6063 $ar t $thisname >>libc.tmp
6065 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
6067 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
6068 # Repeat libc to extract forwarders to DLL entries too
6069 for thisname in $libnames $libc; do
6070 $ar tv $thisname >>libc.tmp
6071 # Revision 50 of EMX has bug in $ar.
6072 # it will not extract forwarders to DLL entries
6073 # Use emximp which will extract exactly them.
6074 emximp -o tmp.imp $thisname \
6076 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
6077 < tmp.imp >>libc.tmp
6080 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6083 echo "$ar didn't seem to work right." >&4
6084 echo "Maybe this is a Cray...trying bld instead..." >&4
6085 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
6087 for thisname in $libnames; do
6089 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6090 $ar t $thisname >>libc.tmp
6094 echo "That didn't work either. Giving up." >&4
6101 if $test -f /lib/syscalls.exp; then
6103 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6104 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
6108 $rm -f libnames libpath
6110 : see if dld is available
6114 : is a C symbol defined?
6117 -v) tf=libc.tmp; tc=""; tdc="";;
6118 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6119 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6122 case "$reuseval-$4" in
6124 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6130 if $contains $tlook $tf >/dev/null 2>&1;
6135 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6136 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6144 $define) tval=true;;
6150 : define an is-in-libc? function
6151 inlibc='echo " "; td=$define; tu=$undef;
6152 sym=$1; var=$2; eval "was=\$$2";
6154 case "$reuseval$was" in
6164 echo "$sym() found." >&4;
6165 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6167 echo "$sym() NOT found." >&4;
6168 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6172 $define) echo "$sym() found." >&4;;
6173 *) echo "$sym() NOT found." >&4;;
6177 : see if dlopen exists
6184 : determine which dynamic loading, if any, to compile in
6186 dldir="ext/DynaLoader"
6199 $define) dflt='y' ;;
6202 $define) dflt='y' ;;
6204 : Does a dl_xxx.xs file exist for this operating system
6205 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6208 rp="Do you wish to use dynamic loading?"
6215 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6216 dflt="$dldir/dl_${osname}.xs"
6217 elif $test "$d_dlopen" = "$define" ; then
6218 dflt="$dldir/dl_dlopen.xs"
6219 elif $test "$i_dld" = "$define" ; then
6220 dflt="$dldir/dl_dld.xs"
6225 *) dflt="$dldir/$dlsrc"
6228 echo "The following dynamic loading files are available:"
6229 : Can not go over to $dldir because getfile has path hard-coded in.
6230 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6231 rp="Source file to use for dynamic loading"
6237 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6241 Some systems may require passing special flags to $cc -c to
6242 compile modules that will be used to create a shared library.
6243 To use no flags, say "none".
6246 case "$cccdlflags" in
6247 '') case "$gccversion" in
6248 '') case "$osname" in
6250 next) dflt='none' ;;
6251 irix*) dflt='-KPIC' ;;
6252 svr4*|esix*|solaris) dflt='-KPIC' ;;
6253 sunos) dflt='-pic' ;;
6257 *) case "$osname" in
6258 svr4*|esix*|solaris) dflt='-fPIC' ;;
6263 *) dflt="$cccdlflags" ;;
6265 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6268 none) cccdlflags=' ' ;;
6269 *) cccdlflags="$ans" ;;
6274 Some systems use ld to create libraries that can be dynamically loaded,
6275 while other systems (such as those using ELF) use $cc.
6279 '') $cat >try.c <<'EOM'
6280 /* Test for whether ELF binaries are produced */
6285 int i = open("a.out",O_RDONLY);
6288 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6289 exit(0); /* succeed (yes, it's ELF) */
6294 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6296 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6300 echo "I'll use ld to build dynamic libraries."
6309 rp="What command should be used to create dynamic libraries?"
6315 Some systems may require passing special flags to $ld to create a
6316 library that can be dynamically loaded. If your ld flags include
6317 -L/other/path options to locate libraries outside your loader's normal
6318 search path, you may need to specify those -L options here as well. To
6319 use no flags, say "none".
6322 case "$lddlflags" in
6323 '') case "$osname" in
6324 beos) dflt='-nostart' ;;
6326 case "$gccversion" in
6327 '') dflt="$dflt +vnocompatwarnings" ;;
6330 linux|irix*) dflt='-shared' ;;
6331 next) dflt='none' ;;
6332 solaris) dflt='-G' ;;
6333 sunos) dflt='-assert nodefinitions' ;;
6334 svr4*|esix*) dflt="-G $ldflags" ;;
6338 *) dflt="$lddlflags" ;;
6341 : Try to guess additional flags to pick up local libraries.
6342 : Be careful not to append to a plain 'none'
6346 for thisflag in $ldflags; do
6351 *) dflt="$dflt $thisflag" ;;
6358 ''|' ') dflt='none' ;;
6361 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6364 none) lddlflags=' ' ;;
6365 *) lddlflags="$ans" ;;
6370 Some systems may require passing special flags to $cc to indicate that
6371 the resulting executable will use dynamic linking. To use no flags,
6375 case "$ccdlflags" in
6376 '') case "$osname" in
6377 hpux) dflt='-Wl,-E' ;;
6378 linux) dflt='-rdynamic' ;;
6379 next) dflt='none' ;;
6380 sunos) dflt='none' ;;
6384 *) dflt="$ccdlflags" ;;
6386 rp="Any special flags to pass to $cc to use dynamic linking?"
6389 none) ccdlflags=' ' ;;
6390 *) ccdlflags="$ans" ;;
6404 # No dynamic loading being used, so don't bother even to prompt.
6407 *) case "$useshrplib" in
6408 '') case "$osname" in
6409 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6411 also='Building a shared libperl is required for dynamic loading to work on your system.'
6416 also='Building a shared libperl is needed for MAB support.'
6434 The perl executable is normally obtained by linking perlmain.c with
6435 libperl${_a}, any static extensions (usually just DynaLoader), and
6436 any other libraries needed on this system (such as -lm, etc.). Since
6437 your system supports dynamic loading, it is probably possible to build
6438 a shared libperl.$so. If you will have more than one executable linked
6439 to libperl.$so, this will significantly reduce the size of each
6440 executable, but it may have a noticeable affect on performance. The
6441 default is probably sensible for your system.
6445 rp="Build a shared libperl.$so (y/n)"
6449 useshrplib='true' ;;
6450 *) useshrplib='false' ;;
6455 case "$useshrplib" in
6459 # Figure out a good name for libperl.so. Since it gets stored in
6460 # a version-specific architecture-dependent library, the version
6461 # number isn't really that important, except for making cc/ld happy.
6463 # A name such as libperl.so.3.1
6464 majmin="libperl.$so.$patchlevel.$subversion"
6465 # A name such as libperl.so.301
6466 majonly=`echo $patchlevel $subversion |
6467 $awk '{printf "%d%02d", $1, $2}'`
6468 majonly=libperl.$so.$majonly
6469 # I'd prefer to keep the os-specific stuff here to a minimum, and
6470 # rely on figuring it out from the naming of libc.
6471 case "${osname}${osvers}" in
6474 # XXX How handle the --version stuff for MAB?
6476 linux*) # ld won't link with a bare -lperl otherwise.
6479 cygwin*) # include version
6480 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6482 *) # Try to guess based on whether libc has major.minor.
6484 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6485 *libc.$so.[0-9]*) dflt=$majonly ;;
6486 *) dflt=libperl.$so ;;
6496 I need to select a good name for the shared libperl. If your system uses
6497 library names with major and minor numbers, then you might want something
6498 like $majmin. Alternatively, if your system uses a single version
6499 number for shared libraries, then you might want to use $majonly.
6500 Or, your system might be quite happy with a simple libperl.$so.
6502 Since the shared libperl will get installed into a version-specific
6503 architecture-dependent directory, the version number of the shared perl
6504 library probably isn't important, so the default should be o.k.
6507 rp='What name do you want to give to the shared libperl?'
6510 echo "Ok, I'll use $libperl"
6513 libperl="libperl${_a}"
6517 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6521 WARNING: Use of the shrpdir variable for the installation location of
6522 the shared $libperl is not supported. It was never documented and
6523 will not work in this version. Let me (perlbug@perl.com)
6524 know of any problems this may cause.
6530 But your current setting of $shrpdir is
6531 the default anyway, so it's harmless.
6536 Further, your current attempted setting of $shrpdir
6537 conflicts with the value of $archlibexp/CORE
6538 that installperl will use.
6545 # How will the perl executable find the installed shared $libperl?
6546 # Add $xxx to ccdlflags.
6547 # If we can't figure out a command-line option, use $shrpenv to
6548 # set env LD_RUN_PATH. The main perl makefile uses this.
6549 shrpdir=$archlibexp/CORE
6552 if "$useshrplib"; then
6555 # We'll set it in Makefile.SH...
6561 xxx="-Wl,-R$shrpdir"
6563 linux|irix*|dec_osf)
6564 xxx="-Wl,-rpath,$shrpdir"
6567 # next doesn't like the default...
6570 # beos doesn't like the default, either.
6573 # hpux doesn't like the default, either.
6574 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6577 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6583 # Only add $xxx if it isn't already in ccdlflags.
6584 case " $ccdlflags " in
6586 *) ccdlflags="$ccdlflags $xxx"
6589 Adding $xxx to the flags
6590 passed to $ld so that the perl executable will find the
6591 installed shared $libperl.
6599 # Fix ccdlflags in AIX for building external extensions.
6600 # (For building Perl itself bare -bE:perl.exp is needed,
6601 # Makefile.SH takes care of this.)
6603 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6605 # Respect a hint or command-line value.
6607 '') shrpenv="$tmp_shrpenv" ;;
6609 case "$ldlibpthname" in
6610 '') ldlibpthname=LD_LIBRARY_PATH ;;
6611 none) ldlibpthname='' ;;
6614 : determine where manual pages go
6615 set man1dir man1dir none
6619 $spackage has manual pages available in source form.
6623 echo "However, you don't have nroff, so they're probably useless to you."
6625 '') man1dir="none";;
6628 echo "If you don't want the manual sources installed, answer 'none'."
6633 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6634 lookpath="$lookpath $prefixexp/man/p_man/man1"
6635 lookpath="$lookpath $prefixexp/man/u_man/man1"
6636 lookpath="$lookpath $prefixexp/man/man.1"
6638 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6639 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6649 rp="Where do the main $spackage manual pages (source) go?"
6651 if $test "X$man1direxp" != "X$ansexp"; then
6655 man1direxp="$ansexp"
6661 : Change installation prefix, if necessary.
6662 if $test X"$prefix" != X"$installprefix"; then
6663 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6665 installman1dir="$man1direxp"
6668 : What suffix to use on installed man pages
6675 rp="What suffix should be used for the main $spackage man pages?"
6677 '') case "$man1dir" in
6691 *) dflt="$man1ext";;
6698 : see if we can have long filenames
6700 first=123456789abcdef
6702 if (echo hi >$first) 2>/dev/null; then
6703 if $test -f 123456789abcde; then
6704 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6707 echo 'You can have filenames longer than 14 characters.'>&4
6712 You can't have filenames longer than 14 chars.
6713 You can't even think about them!
6719 $rm -rf 123456789abcde*
6721 : determine where library module manual pages go
6722 set man3dir man3dir none
6726 $spackage has manual pages for many of the library modules.
6732 However, you don't have nroff, so they're probably useless to you.
6735 '') man3dir="none";;
6739 case "$d_flexfnam" in
6742 However, your system can't handle the long file names like File::Basename.3.
6745 '') man3dir="none";;
6749 echo "If you don't want the manual sources installed, answer 'none'."
6750 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6752 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6753 if $test -d "$privlib/man/man3"; then
6756 WARNING: Previous versions of perl installed man3 pages into
6757 $privlib/man/man3. This version will suggest a
6758 new default of $dflt.
6762 rp='Do you wish to preserve the old behavior?(y/n)'
6765 y*) dflt="$privlib/man/man3" ;;
6770 *) dflt="$man3dir" ;;
6777 rp="Where do the $package library man pages (source) go?"
6780 man3direxp="$ansexp"
6786 : Change installation prefix, if necessary.
6787 if $test X"$prefix" != X"$installprefix"; then
6788 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6790 installman3dir="$man3direxp"
6793 : What suffix to use on installed man pages
6799 rp="What suffix should be used for the $package library man pages?"
6801 '') case "$man3dir" in
6815 *) dflt="$man3ext";;
6822 : see if we have to deal with yellow pages, now NIS.
6823 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6824 if $test -f /usr/etc/nibindd; then
6826 echo "I'm fairly confident you're on a NeXT."
6828 rp='Do you get the hosts file via NetInfo?'
6837 y*) hostcat='nidump hosts .';;
6838 *) case "$hostcat" in
6839 nidump*) hostcat='';;
6849 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6857 rp='Are you getting the hosts file via yellow pages?'
6860 y*) hostcat='ypcat hosts';;
6861 *) hostcat='cat /etc/hosts';;
6867 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6870 '') test -f /etc/group && groupcat='cat /etc/group';;
6873 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6876 : now get the host name
6878 echo "Figuring out host name..." >&4
6879 case "$myhostname" in
6881 echo 'Maybe "hostname" will work...'
6882 if tans=`sh -c hostname 2>&1` ; then
6890 if $test "$cont"; then
6892 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6893 if tans=`cat /etc/systemid 2>&1` ; then
6895 phostname='cat /etc/systemid'
6896 echo "Whadyaknow. Xenix always was a bit strange..."
6899 elif $test -r /etc/systemid; then
6900 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6903 if $test "$cont"; then
6904 echo 'No, maybe "uuname -l" will work...'
6905 if tans=`sh -c 'uuname -l' 2>&1` ; then
6907 phostname='uuname -l'
6909 echo 'Strange. Maybe "uname -n" will work...'
6910 if tans=`sh -c 'uname -n' 2>&1` ; then
6912 phostname='uname -n'
6914 echo 'Oh well, maybe I can mine it out of whoami.h...'
6915 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6916 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6917 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6919 case "$myhostname" in
6920 '') echo "Does this machine have an identity crisis or something?"
6923 echo "Well, you said $myhostname before..."
6924 phostname='echo $myhostname';;
6930 : you do not want to know about this
6935 if $test "$myhostname" ; then
6937 rp='Your host name appears to be "'$myhostname'".'" Right?"
6945 : bad guess or no guess
6946 while $test "X$myhostname" = X ; do
6948 rp="Please type the (one word) name of your host:"
6953 : translate upper to lower if necessary
6954 case "$myhostname" in
6956 echo "(Normalizing case in your host name)"
6957 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6961 case "$myhostname" in
6963 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6964 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6965 echo "(Trimming domain name from host name--host name is now $myhostname)"
6967 *) case "$mydomain" in
6970 test "X$hostcat" = "Xypcat hosts" &&
6971 ypmatch "$myhostname" hosts 2>/dev/null |\
6972 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
6975 test "X$hostcat" != "X" &&
6976 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
6977 /[ ]$myhostname[ . ]/p" > hosts
6980 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
6981 END { print sum }" hosts` = x1 || tmp_re="[ ]"
6982 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6983 hosts | $sort | $uniq | \
6984 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6985 case `$echo X$dflt` in
6986 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
6989 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6994 tans=`./loc resolv.conf X /etc /usr/etc`
6995 if $test -f "$tans"; then
6996 echo "(Attempting domain name extraction from $tans)"
6997 dflt=.`$sed -n -e 's/ / /g' \
6998 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
6999 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7001 .) dflt=.`$sed -n -e 's/ / /g' \
7002 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7003 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7010 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7011 dflt=.`sh -c domainname 2>/dev/null`
7014 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7019 .) echo "(Lost all hope -- silly guess then)"
7025 *) dflt="$mydomain";;
7029 rp="What is your domain name?"
7039 : translate upper to lower if necessary
7042 echo "(Normalizing case in your domain name)"
7043 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7047 : a little sanity check here
7048 case "$phostname" in
7051 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7052 $myhostname$mydomain|$myhostname) ;;
7054 case "$phostname" in
7056 echo "(That doesn't agree with your whoami.h file, by the way.)"
7059 echo "(That doesn't agree with your $phostname command, by the way.)"
7069 I need to get your e-mail address in Internet format if possible, i.e.
7070 something like user@host.domain. Please answer accurately since I have
7071 no easy means to double check it. The default value provided below
7072 is most probably close to reality but may not be valid from outside
7073 your organization...
7077 while test "$cont"; do
7079 '') dflt="$cf_by@$myhostname$mydomain";;
7080 *) dflt="$cf_email";;
7082 rp='What is your e-mail address?'
7088 rp='Address does not look like an Internet one. Use it anyway?'
7104 If you or somebody else will be maintaining perl at your site, please
7105 fill in the correct e-mail address here so that they may be contacted
7106 if necessary. Currently, the "perlbug" program included with perl
7107 will send mail to this address in addition to perlbug@perl.com. You may
7108 enter "none" for no administrator.
7111 case "$perladmin" in
7112 '') dflt="$cf_email";;
7113 *) dflt="$perladmin";;
7115 rp='Perl administrator e-mail address'
7119 : figure out how to guarantee perl startup
7120 case "$startperl" in
7122 case "$sharpbang" in
7126 I can use the #! construct to start perl on your system. This will
7127 make startup of perl scripts faster, but may cause problems if you
7128 want to share those scripts and perl is not in a standard place
7129 ($binexp/perl) on all your platforms. The alternative is to force
7130 a shell by starting the script with a single ':' character.
7134 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7137 none) startperl=": # use perl";;
7138 *) startperl="#!$ans"
7139 if $test 30 -lt `echo "$ans" | wc -c`; then
7142 WARNING: Some systems limit the #! command to 32 characters.
7143 If you experience difficulty running Perl scripts with #!, try
7144 installing Perl in a directory with a shorter pathname.
7150 *) startperl=": # use perl"
7155 echo "I'll use $startperl to start perl scripts."
7157 : figure best path for perl in scripts
7160 perlpath="$binexp/perl"
7161 case "$startperl" in
7166 I will use the "eval 'exec'" idiom to start Perl on your system.
7167 I can use the full path of your Perl binary for this purpose, but
7168 doing so may cause problems if you want to share those scripts and
7169 Perl is not always in a standard place ($binexp/perl).
7173 rp="What path shall I use in \"eval 'exec'\"?"
7180 case "$startperl" in
7182 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7185 : determine where public executable scripts go
7186 set scriptdir scriptdir
7188 case "$scriptdir" in
7191 : guess some guesses
7192 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7193 $test -d /usr/share/bin && dflt=/usr/share/bin
7194 $test -d /usr/local/script && dflt=/usr/local/script
7195 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7196 $test -d $prefixexp/script && dflt=$prefixexp/script
7200 *) dflt="$scriptdir"
7205 Some installations have a separate directory just for executable scripts so
7206 that they can mount it across multiple architectures but keep the scripts in
7207 one spot. You might, for example, have a subdirectory of /usr/share for this.
7208 Or you might just lump your scripts in with all your other executables.
7212 rp='Where do you keep publicly executable scripts?'
7214 if $test "X$ansexp" != "X$scriptdirexp"; then
7218 scriptdirexp="$ansexp"
7219 : Change installation prefix, if necessary.
7220 if $test X"$prefix" != X"$installprefix"; then
7221 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7223 installscript="$scriptdirexp"
7226 : determine where add-on public executables go
7228 '') dflt=$siteprefix/bin ;;
7232 rp='Pathname where the add-on public executables should be installed?'
7235 sitebinexp="$ansexp"
7236 : Change installation prefix, if necessary.
7237 if $test X"$prefix" != X"$installprefix"; then
7238 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7240 installsitebin="$sitebinexp"
7243 : see if sqrtl exists
7248 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7251 case "$uselongdouble" in
7252 $define|true|[yY]*) dflt='y';;
7257 Perl can be built to take advantage of long doubles which
7258 (if available) may give more accuracy and range for floating point numbers.
7260 If this doesn't make any sense to you, just accept the default '$dflt'.
7262 rp='Try to use long doubles if available?'
7265 y|Y) val="$define" ;;
7271 case "$uselongdouble" in
7272 true|[yY]*) uselongdouble="$define" ;;
7275 case "$uselongdouble" in
7277 : Look for a hint-file generated 'call-back-unit'. If the
7278 : user has specified that long doubles should be used,
7279 : we may need to set or change some other defaults.
7280 if $test -f uselongdouble.cbu; then
7281 echo "Your platform has some specific hints for long doubles, using them..."
7282 . ./uselongdouble.cbu
7285 (Your platform doesn't have any specific hints for long doubles.)
7291 case "$uselongdouble:$d_sqrtl" in
7295 *** You requested the use of long doubles but you do not seem to have
7296 *** the mathematic functions for long doubles. I'm disabling the use
7297 *** of long doubles.
7300 uselongdouble=$undef
7304 case "$useperlio" in
7305 $define|true|[yY]*) dflt='y';;
7310 Previous version of $package used the standard IO mechanisms as defined
7311 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7312 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7313 the default. This abstraction layer can use AT&T's sfio (if you already
7314 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7315 problems with some extension modules. Using PerlIO with stdio is safe,
7316 but it is slower than plain stdio and therefore is not the default.
7318 If this doesn't make any sense to you, just accept the default '$dflt'.
7320 rp='Use the experimental PerlIO abstraction layer?'
7327 echo "Ok, doing things the stdio way"
7334 case "$vendorprefix" in
7335 '') d_vendorbin="$undef"
7339 *) d_vendorbin="$define"
7340 : determine where vendor-supplied executables go.
7341 case "$vendorbin" in
7342 '') dflt=$vendorprefix/bin ;;
7343 *) dflt="$vendorbin" ;;
7346 rp='Pathname for the vendor-supplied executables directory?'
7349 vendorbinexp="$ansexp"
7352 : Change installation prefix, if necessary.
7353 if $test X"$prefix" != X"$installprefix"; then
7354 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7356 installvendorbin="$vendorbinexp"
7359 : see if qgcvt exists
7363 : check for length of double
7365 case "$doublesize" in
7367 echo "Checking to see how big your double precision numbers are..." >&4
7368 $cat >try.c <<'EOCP'
7372 printf("%d\n", (int)sizeof(double));
7377 if eval $compile_ok; then
7379 echo "Your double is $doublesize bytes long."
7382 echo "(I can't seem to compile the test program. Guessing...)"
7383 rp="What is the size of a double precision number (in bytes)?"
7391 : check for long doubles
7393 echo "Checking to see if you have long double..." >&4
7394 echo 'int main() { long double x = 7.0; }' > try.c
7396 if eval $compile; then
7398 echo "You have long double."
7401 echo "You do not have long double."
7407 : check for length of long double
7408 case "${d_longdbl}${longdblsize}" in
7411 echo "Checking to see how big your long doubles are..." >&4
7412 $cat >try.c <<'EOCP'
7416 printf("%d\n", sizeof(long double));
7421 if eval $compile; then
7422 longdblsize=`./try$exe_ext`
7423 echo "Your long doubles are $longdblsize bytes long."
7427 echo "(I can't seem to compile the test program. Guessing...)" >&4
7428 rp="What is the size of a long double (in bytes)?"
7432 if $test "X$doublesize" = "X$longdblsize"; then
7433 echo "(That isn't any different from an ordinary double.)"
7441 if $test X"$d_longdbl" = X"$define"; then
7443 echo "Checking how to print long doubles..." >&4
7445 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7446 $cat >try.c <<'EOCP'
7447 #include <sys/types.h>
7451 printf("%.3f\n", d);
7455 if eval $compile; then
7459 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7460 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7461 echo "We will use %f."
7467 if $test X"$sPRIfldbl" = X; then
7468 $cat >try.c <<'EOCP'
7469 #include <sys/types.h>
7472 long double d = 123.456;
7473 printf("%.3llf\n", d);
7477 if eval $compile; then
7481 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7482 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7483 echo "We will use %llf."
7489 if $test X"$sPRIfldbl" = X; then
7490 $cat >try.c <<'EOCP'
7491 #include <sys/types.h>
7494 long double d = 123.456;
7495 printf("%.3Lf\n", d);
7499 if eval $compile; then
7503 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7504 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7505 echo "We will use %Lf."
7511 if $test X"$sPRIfldbl" = X; then
7512 $cat >try.c <<'EOCP'
7513 #include <sys/types.h>
7516 long double d = 123.456;
7517 printf("%.3lf\n", d);
7521 if eval $compile; then
7525 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7526 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7527 echo "We will use %lf."
7533 if $test X"$sPRIfldbl" = X; then
7534 echo "Cannot figure out how to print long doubles." >&4
7541 case "$sPRIfldbl" in
7542 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7543 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7545 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7546 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7550 : Check how to convert floats to strings.
7551 if test "X$d_Gconvert" = X; then
7553 echo "Checking for an efficient way to convert floats to strings."
7555 case "$uselongdouble" in
7556 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7558 case "$d_longdbl" in
7559 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7561 case "$d_PRIgldbl" in
7562 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7566 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7567 char *myname = "gconvert";
7570 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7571 char *myname = "gcvt";
7574 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7575 char *myname = "qgcvt";
7576 #define DOUBLETYPE long double
7579 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7580 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7582 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7584 char *myname = "sprintf";
7588 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7589 #define DOUBLETYPE long double
7591 #define DOUBLETYPE double
7597 #define I_STDLIB $i_stdlib
7603 checkit(expect, got)
7607 if (strcmp(expect, got)) {
7608 printf("%s oddity: Expected %s, got %s\n",
7609 myname, expect, got);
7619 /* This must be 1st test on (which?) platform */
7620 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7621 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7622 checkit("0.1", buf);
7624 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7627 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7628 checkit("1.1", buf);
7630 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7631 checkit("1.01", buf);
7633 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7634 checkit("1.001", buf);
7636 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7637 checkit("1.0001", buf);
7639 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7640 checkit("1.00001", buf);
7642 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7643 checkit("1.000001", buf);
7645 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7648 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7651 /* Some Linux gcvt's give 1.e+5 here. */
7652 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7653 checkit("100000", buf);
7655 /* Some Linux gcvt's give -1.e+5 here. */
7656 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7657 checkit("-100000", buf);
7662 case "$d_Gconvert" in
7663 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7664 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7665 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7666 *) xxx_list='gconvert gcvt sprintf' ;;
7669 case "$d_longdbl$uselongdouble$d_qgcvt" in
7670 "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7673 for xxx_convert in $xxx_list; do
7674 echo "Trying $xxx_convert..."
7676 set try -DTRY_$xxx_convert
7677 if eval $compile; then
7678 echo "$xxx_convert() found." >&4
7680 echo "I'll use $xxx_convert to convert floats into a string." >&4
7683 echo "...But $xxx_convert didn't work as I expected."
7686 echo "$xxx_convert NOT found." >&4
7690 case "$xxx_convert" in
7691 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7692 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7693 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7694 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7695 "$define$define$define")
7696 d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7697 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7703 : Initialize h_fcntl
7706 : Initialize h_sysfile
7709 : access call always available on UNIX
7713 : locate the flags for 'access()'
7717 $cat >access.c <<'EOCP'
7718 #include <sys/types.h>
7723 #include <sys/file.h>
7732 : check sys/file.h first, no particular reason here
7733 if $test `./findhdr sys/file.h` && \
7734 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7736 echo "<sys/file.h> defines the *_OK access constants." >&4
7737 elif $test `./findhdr fcntl.h` && \
7738 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7740 echo "<fcntl.h> defines the *_OK access constants." >&4
7741 elif $test `./findhdr unistd.h` && \
7742 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7743 echo "<unistd.h> defines the *_OK access constants." >&4
7745 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7751 : see if accessx exists
7752 set accessx d_accessx
7755 : see if alarm exists
7759 : see if atolf exists
7763 : see if atoll exists
7767 : Look for GNU-cc style attribute checking
7769 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7770 $cat >attrib.c <<'EOCP'
7772 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7774 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7775 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7776 echo "Your C compiler doesn't fully support __attribute__."
7779 echo "Your C compiler supports __attribute__."
7783 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7790 : see if bcmp exists
7794 : see if bcopy exists
7798 : see if this is a unistd.h system
7799 set unistd.h i_unistd
7802 : see if getpgrp exists
7803 set getpgrp d_getpgrp
7806 case "$d_getpgrp" in
7809 echo "Checking to see which flavor of getpgrp is in use..."
7812 #include <sys/types.h>
7814 # include <unistd.h>
7818 if (getuid() == 0) {
7819 printf("(I see you are running Configure as super-user...)\n");
7823 if (getpgrp(1) == 0)
7832 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7833 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7835 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7836 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7839 echo "I can't seem to compile and run the test program."
7841 xxx="a USG one, i.e. you use getpgrp()."
7843 # SVR4 systems can appear rather BSD-ish.
7846 xxx="a BSD one, i.e. you use getpgrp(pid)."
7850 xxx="probably a USG one, i.e. you use getpgrp()."
7855 echo "Assuming your getpgrp is $xxx" >&4
7864 : see if setpgrp exists
7865 set setpgrp d_setpgrp
7868 case "$d_setpgrp" in
7871 echo "Checking to see which flavor of setpgrp is in use..."
7874 #include <sys/types.h>
7876 # include <unistd.h>
7880 if (getuid() == 0) {
7881 printf("(I see you are running Configure as super-user...)\n");
7885 if (-1 == setpgrp(1, 1))
7888 if (setpgrp() != -1)
7894 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7895 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7897 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7898 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7901 echo "(I can't seem to compile and run the test program.)"
7903 xxx="a USG one, i.e. you use setpgrp()."
7905 # SVR4 systems can appear rather BSD-ish.
7908 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7912 xxx="probably a USG one, i.e. you use setpgrp()."
7917 echo "Assuming your setpgrp is $xxx" >&4
7925 : see if bzero exists
7929 : see if signal is declared as pointer to function returning int or void
7931 xxx=`./findhdr signal.h`
7932 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7933 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7934 echo "You have int (*signal())() instead of void." >&4
7936 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7937 echo "You have void (*signal())()." >&4
7939 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7940 echo "You have int (*signal())() instead of void." >&4
7942 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7943 echo "You have void (*signal())()." >&4
7946 case "$d_voidsig" in
7948 echo "I can't determine whether signal handler returns void or int..." >&4
7950 rp="What type does your signal handler return?"
7957 echo "As you already told me, signal handler returns void." >&4
7960 *) echo "As you already told me, signal handler returns int." >&4
7967 case "$d_voidsig" in
7968 "$define") signal_t="void";;
7973 : check for ability to cast large floats to 32-bit ints.
7975 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7976 if $test "$intsize" -ge 4; then
7983 #include <sys/types.h>
7985 $signal_t blech(s) int s; { exit(3); }
7992 signal(SIGFPE, blech);
7994 /* Don't let compiler optimize the test away. Store the number
7995 in a writable string for gcc to pass to sscanf under HP/UX.
7997 sprintf(str, "2147483647");
7998 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8002 /* x86 processors will probably give 0x8000 0000, which is a
8003 sign change. We don't want that. We want to mimic SPARC
8004 behavior here, which is to preserve the sign and give
8007 if (i32 != ($xxx) f)
8013 if eval $compile_ok; then
8017 echo "(I can't seem to compile the test program--assuming it can't)"
8025 echo "Nope, it can't."
8032 : check for ability to cast negative floats to unsigned
8034 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8037 #include <sys/types.h>
8039 $signal_t blech(s) int s; { exit(7); }
8040 $signal_t blech_in_list(s) int s; { exit(4); }
8041 unsigned long dummy_long(p) unsigned long p; { return p; }
8042 unsigned int dummy_int(p) unsigned int p; { return p; }
8043 unsigned short dummy_short(p) unsigned short p; { return p; }
8047 unsigned long along;
8049 unsigned short ashort;
8053 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8054 a direct f = -123. assignment. gcc-2.8.0 reportedly
8055 optimized the whole file away
8057 /* Store the number in a writable string for gcc to pass to
8060 sprintf(str, "-123");
8061 sscanf(str, "%lf", &f); /* f = -123.; */
8063 signal(SIGFPE, blech);
8064 along = (unsigned long)f;
8065 aint = (unsigned int)f;
8066 ashort = (unsigned short)f;
8067 if (along != (unsigned long)-123)
8069 if (aint != (unsigned int)-123)
8071 if (ashort != (unsigned short)-123)
8073 sprintf(str, "1073741824.");
8074 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8077 along = (unsigned long)f;
8078 if (along != 0x80000000)
8082 along = (unsigned long)f;
8083 if (along != 0x7fffffff)
8087 along = (unsigned long)f;
8088 if (along != 0x80000001)
8092 signal(SIGFPE, blech_in_list);
8093 sprintf(str, "123.");
8094 sscanf(str, "%lf", &f); /* f = 123.; */
8095 along = dummy_long((unsigned long)f);
8096 aint = dummy_int((unsigned int)f);
8097 ashort = dummy_short((unsigned short)f);
8098 if (along != (unsigned long)123)
8100 if (aint != (unsigned int)123)
8102 if (ashort != (unsigned short)123)
8109 if eval $compile_ok; then
8113 echo "(I can't seem to compile the test program--assuming it can't)"
8116 case "$castflags" in
8121 echo "Nope, it can't."
8128 : see if vprintf exists
8130 if set vprintf val -f d_vprintf; eval $csym; $val; then
8131 echo 'vprintf() found.' >&4
8133 $cat >vprintf.c <<'EOF'
8134 #include <varargs.h>
8136 int main() { xxx("foo"); }
8145 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8149 if eval $compile && ./vprintf; then
8150 echo "Your vsprintf() returns (int)." >&4
8153 echo "Your vsprintf() returns (char*)." >&4
8157 echo 'vprintf() NOT found.' >&4
8167 : see if chown exists
8171 : see if chroot exists
8175 : see if chsize exists
8179 : check for const keyword
8181 echo 'Checking to see if your C compiler knows about "const"...' >&4
8182 $cat >const.c <<'EOCP'
8183 typedef struct spug { int drokk; } spug;
8190 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8192 echo "Yup, it does."
8195 echo "Nope, it doesn't."
8200 : see if crypt exists
8202 if set crypt val -f d_crypt; eval $csym; $val; then
8203 echo 'crypt() found.' >&4
8207 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8208 if $test -z "$cryptlib"; then
8209 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8213 if $test -z "$cryptlib"; then
8214 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8218 if $test -z "$cryptlib"; then
8219 cryptlib=`./loc libcrypt$_a "" $libpth`
8223 if $test -z "$cryptlib"; then
8224 echo 'crypt() NOT found.' >&4
8233 : get csh whereabouts
8235 'csh') val="$undef" ;;
8240 : Respect a hint or command line value for full_csh.
8242 '') full_csh=$csh ;;
8245 : see if cuserid exists
8246 set cuserid d_cuserid
8249 : see if this is a limits.h system
8250 set limits.h i_limits
8253 : see if this is a float.h system
8257 : See if number of significant digits in a double precision number is known
8259 $cat >dbl_dig.c <<EOM
8269 printf("Contains DBL_DIG");
8272 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8273 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8274 echo "DBL_DIG found." >&4
8277 echo "DBL_DIG NOT found." >&4
8284 : see if difftime exists
8285 set difftime d_difftime
8288 : see if this is a dirent system
8290 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8292 echo "<dirent.h> found." >&4
8295 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8296 echo "<sys/dir.h> found." >&4
8299 xinc=`./findhdr sys/ndir.h`
8301 echo "<dirent.h> NOT found." >&4
8306 : Look for type of directory structure.
8308 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8310 case "$direntrytype" in
8313 $define) guess1='struct dirent' ;;
8314 *) guess1='struct direct' ;;
8317 *) guess1="$direntrytype"
8322 'struct dirent') guess2='struct direct' ;;
8323 *) guess2='struct dirent' ;;
8326 if $contains "$guess1" try.c >/dev/null 2>&1; then
8327 direntrytype="$guess1"
8328 echo "Your directory entries are $direntrytype." >&4
8329 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8330 direntrytype="$guess2"
8331 echo "Your directory entries seem to be $direntrytype." >&4
8333 echo "I don't recognize your system's directory entries." >&4
8334 rp="What type is used for directory entries on this system?"
8342 : see if the directory entry stores field length
8344 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8345 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8346 echo "Good, your directory entry keeps length information in d_namlen." >&4
8349 echo "Your directory entry does not know about the d_namlen field." >&4
8356 : see if dlerror exists
8359 set dlerror d_dlerror
8363 : see if dlfcn is available
8371 On a few systems, the dynamically loaded modules that perl generates and uses
8372 will need a different extension than shared libs. The default will probably
8380 rp='What is the extension of dynamically loaded modules'
8389 : Check if dlsym need a leading underscore
8395 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8396 $cat >dyna.c <<'EOM'
8405 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8407 #include <sys/types.h>
8421 int mode = RTLD_LAZY ;
8423 handle = dlopen("./dyna.$dlext", mode) ;
8424 if (handle == NULL) {
8429 symbol = dlsym(handle, "fred") ;
8430 if (symbol == NULL) {
8431 /* try putting a leading underscore */
8432 symbol = dlsym(handle, "_fred") ;
8433 if (symbol == NULL) {
8446 : Call the object file tmp-dyna.o in case dlext=o.
8447 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8448 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8449 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
8450 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8453 1) echo "Test program failed using dlopen." >&4
8454 echo "Perhaps you should not use dynamic loading." >&4;;
8455 2) echo "Test program failed using dlsym." >&4
8456 echo "Perhaps you should not use dynamic loading." >&4;;
8457 3) echo "dlsym needs a leading underscore" >&4
8459 4) echo "dlsym doesn't need a leading underscore." >&4;;
8462 echo "I can't compile and run the test program." >&4
8463 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8468 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8473 hasproto='varname=$1; func=$2; shift; shift;
8474 while $test $# -ge 2; do
8476 $define) echo "#include <$2>";;
8480 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8481 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8482 echo "$func() prototype found.";
8485 echo "$func() prototype NOT found.";
8490 $rm -f try.c tryout.c'
8492 : see if prototype for drand48 is available
8494 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8497 : see if dup2 exists
8501 : see if eaccess exists
8502 set eaccess d_eaccess
8505 : see if endgrent exists
8506 set endgrent d_endgrent
8509 : see if endhostent exists
8510 set endhostent d_endhent
8513 : see if endnetent exists
8514 set endnetent d_endnent
8517 : see if endprotoent exists
8518 set endprotoent d_endpent
8521 : see if endpwent exists
8522 set endpwent d_endpwent
8525 : see if endservent exists
8526 set endservent d_endsent
8529 : Locate the flags for 'open()'
8531 $cat >open3.c <<'EOCP'
8532 #include <sys/types.h>
8537 #include <sys/file.h>
8548 : check sys/file.h first to get FREAD on Sun
8549 if $test `./findhdr sys/file.h` && \
8550 set open3 -DI_SYS_FILE && eval $compile; then
8552 echo "<sys/file.h> defines the O_* constants..." >&4
8554 echo "and you have the 3 argument form of open()." >&4
8557 echo "but not the 3 argument form of open(). Oh, well." >&4
8560 elif $test `./findhdr fcntl.h` && \
8561 set open3 -DI_FCNTL && eval $compile; then
8563 echo "<fcntl.h> defines the O_* constants..." >&4
8565 echo "and you have the 3 argument form of open()." >&4
8568 echo "but not the 3 argument form of open(). Oh, well." >&4
8573 echo "I can't find the O_* constant definitions! You got problems." >&4
8579 : see which of string.h or strings.h is needed
8581 strings=`./findhdr string.h`
8582 if $test "$strings" && $test -r "$strings"; then
8583 echo "Using <string.h> instead of <strings.h>." >&4
8587 strings=`./findhdr strings.h`
8588 if $test "$strings" && $test -r "$strings"; then
8589 echo "Using <strings.h> instead of <string.h>." >&4
8591 echo "No string header found -- You'll surely have problems." >&4
8597 "$undef") strings=`./findhdr strings.h`;;
8598 *) strings=`./findhdr string.h`;;
8601 : check for non-blocking I/O stuff
8602 case "$h_sysfile" in
8603 true) echo "#include <sys/file.h>" > head.c;;
8606 true) echo "#include <fcntl.h>" > head.c;;
8607 *) echo "#include <sys/fcntl.h>" > head.c;;
8612 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8613 case "$o_nonblock" in
8616 $cat >>try.c <<'EOCP'
8620 printf("O_NONBLOCK\n");
8624 printf("O_NDELAY\n");
8628 printf("FNDELAY\n");
8635 if eval $compile_ok; then
8637 case "$o_nonblock" in
8638 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8639 *) echo "Seems like we can use $o_nonblock.";;
8642 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8645 *) echo "Using $hint value $o_nonblock.";;
8647 $rm -f try try.* .out core
8650 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8656 #include <sys/types.h>
8659 #define MY_O_NONBLOCK $o_nonblock
8660 #ifndef errno /* XXX need better Configure test */
8671 #include <strings.h>
8673 $signal_t blech(x) int x; { exit(3); }
8675 $cat >> try.c <<'EOCP'
8683 pipe(pd); /* Down: child -> parent */
8684 pipe(pu); /* Up: parent -> child */
8687 close(pd[1]); /* Parent reads from pd[0] */
8688 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8689 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8691 signal(SIGALRM, blech);
8693 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8695 sprintf(string, "%d\n", ret);
8696 write(2, string, strlen(string));
8699 if (errno == EAGAIN) {
8705 if (errno == EWOULDBLOCK)
8706 printf("EWOULDBLOCK\n");
8709 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8710 sleep(2); /* Give it time to close our pipe */
8712 ret = read(pd[0], buf, 1); /* Should read EOF */
8714 sprintf(string, "%d\n", ret);
8715 write(3, string, strlen(string));
8719 close(pd[0]); /* We write to pd[1] */
8720 close(pu[1]); /* We read from pu[0] */
8721 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8722 close(pd[1]); /* Pipe pd is now fully closed! */
8723 exit(0); /* Bye bye, thank you for playing! */
8727 if eval $compile_ok; then
8728 echo "$startsh" >mtry
8729 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8731 ./mtry >/dev/null 2>&1
8733 0) eagain=`$cat try.out`;;
8734 1) echo "Could not perform non-blocking setting!";;
8735 2) echo "I did a successful read() for something that was not there!";;
8736 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8737 *) echo "Something terribly wrong happened during testing.";;
8739 rd_nodata=`$cat try.ret`
8740 echo "A read() system call with no data present returns $rd_nodata."
8741 case "$rd_nodata" in
8744 echo "(That's peculiar, fixing that to be -1.)"
8750 echo "Forcing errno EAGAIN on read() with no data available."
8754 echo "Your read() sets errno to $eagain when no data is available."
8757 status=`$cat try.err`
8759 0) echo "And it correctly returns 0 to signal EOF.";;
8760 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8761 *) echo "However, your read() returns '$status' on EOF??";;
8764 if test "$status" = "$rd_nodata"; then
8765 echo "WARNING: you can't distinguish between EOF and no data!"
8769 echo "I can't compile the test program--assuming errno EAGAIN will do."
8776 echo "Using $hint value $eagain."
8777 echo "Your read() returns $rd_nodata when no data is present."
8778 case "$d_eofnblk" in
8779 "$define") echo "And you can see EOF because read() returns 0.";;
8780 "$undef") echo "But you can't see EOF status from read() returned value.";;
8782 echo "(Assuming you can't see EOF status from read anyway.)"
8788 $rm -f try try.* .out core head.c mtry
8790 : see if fchmod exists
8794 : see if fchown exists
8798 : see if this is an fcntl system
8802 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8803 while $test $# -ge 2; do
8805 $define) echo "#include <$2>";;
8809 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8811 if eval $compile; then
8822 : see whether socket exists
8824 $echo $n "Hmm... $c" >&4
8825 if set socket val -f d_socket; eval $csym; $val; then
8826 echo "Looks like you have Berkeley networking support." >&4
8828 if set setsockopt val -f; eval $csym; $val; then
8831 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8835 if $contains socklib libc.list >/dev/null 2>&1; then
8836 echo "Looks like you have Berkeley networking support." >&4
8838 : we will have to assume that it supports the 4.2 BSD interface
8841 echo "You don't have Berkeley networking in libc$_a..." >&4
8842 if test "X$d_socket" = "X$define"; then
8843 echo "...but you seem to believe that you have sockets." >&4
8845 for net in net socket
8847 if test -f /usr/lib/lib$net$_a; then
8848 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8849 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8850 if $contains socket libc.list >/dev/null 2>&1; then
8855 echo "...but the Wollongong group seems to have hacked it in." >&4
8856 sockethdr="-I/usr/netinclude"
8859 echo "Found Berkeley sockets interface in lib$net." >& 4
8860 if $contains setsockopt libc.list >/dev/null 2>&1; then
8863 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8870 if test "X$d_socket" != "X$define"; then
8871 echo "or anywhere else I see." >&4
8879 : see if socketpair exists
8880 set socketpair d_sockpair
8885 echo "Checking the availability of certain socket constants..." >& 4
8886 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8887 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8889 #include <sys/types.h>
8890 #include <sys/socket.h>
8896 set try; if eval $compile; then
8899 set d_${enum}; eval $setvar
8903 : see if sys/select.h has to be included
8904 set sys/select.h i_sysselct
8907 : see if we should include time.h, sys/time.h, or both
8909 if test "X$timeincl" = X; then
8910 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8911 $echo $n "I'm now running the test program...$c"
8912 $cat >try.c <<'EOCP'
8913 #include <sys/types.h>
8918 #ifdef SYSTIMEKERNEL
8921 #include <sys/time.h>
8924 #include <sys/select.h>
8933 struct timezone tzp;
8935 if (foo.tm_sec == foo.tm_sec)
8938 if (bar.tv_sec == bar.tv_sec)
8945 for s_timezone in '-DS_TIMEZONE' ''; do
8947 for s_timeval in '-DS_TIMEVAL' ''; do
8948 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8949 for i_time in '' '-DI_TIME'; do
8950 for i_systime in '-DI_SYSTIME' ''; do
8953 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8954 if eval $compile; then
8955 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8959 $echo $n "Succeeded with $flags$c"
8971 *SYSTIMEKERNEL*) i_systimek="$define"
8972 timeincl=`./findhdr sys/time.h`
8973 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8974 *) i_systimek="$undef";;
8977 *I_TIME*) i_time="$define"
8978 timeincl=`./findhdr time.h`" $timeincl"
8979 echo "We'll include <time.h>." >&4;;
8980 *) i_time="$undef";;
8983 *I_SYSTIME*) i_systime="$define"
8984 timeincl=`./findhdr sys/time.h`" $timeincl"
8985 echo "We'll include <sys/time.h>." >&4;;
8986 *) i_systime="$undef";;
8991 : check for fd_set items
8994 Checking to see how well your C compiler handles fd_set and friends ...
8996 $cat >fd_set.c <<EOCP
8997 #$i_systime I_SYS_TIME
8998 #$i_sysselct I_SYS_SELECT
8999 #$d_socket HAS_SOCKET
9000 #include <sys/types.h>
9002 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9005 #include <sys/time.h>
9008 #include <sys/select.h>
9017 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9024 set fd_set -DTRYBITS
9025 if eval $compile; then
9026 d_fds_bits="$define"
9028 echo "Well, your system knows about the normal fd_set typedef..." >&4
9030 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9031 d_fd_macros="$define"
9034 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9036 d_fd_macros="$undef"
9040 Hmm, your compiler has some difficulty with fd_set. Checking further...
9043 if eval $compile; then
9046 echo "Well, your system has some sort of fd_set available..." >&4
9048 echo "and you have the normal fd_set macros." >&4
9049 d_fd_macros="$define"
9052 but not the normal fd_set macros! Gross! More work for me...
9054 d_fd_macros="$undef"
9057 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9060 d_fd_macros="$undef"
9065 : see if fgetpos exists
9066 set fgetpos d_fgetpos
9069 : see if flock exists
9073 : see if fork exists
9077 : see if pathconf exists
9078 set pathconf d_pathconf
9081 : see if fpathconf exists
9082 set fpathconf d_fpathconf
9086 : check for fpos64_t
9088 echo "Checking to see if you have fpos64_t..." >&4
9091 int main() { fpos64_t x = 7; }
9094 if eval $compile; then
9096 echo "You have fpos64_t."
9099 echo "You do not have fpos64_t."
9101 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9108 : see if frexpl exists
9112 hasstruct='varname=$1; struct=$2; shift; shift;
9113 while $test $# -ge 2; do
9115 $define) echo "#include <$2>";;
9119 echo "int main () { struct $struct foo; }" >> try.c;
9121 if eval $compile; then
9130 : see if this is a sys/param system
9131 set sys/param.h i_sysparam
9134 : see if this is a sys/mount.h system
9135 set sys/mount.h i_sysmount
9138 : see if sys/types.h has to be included
9139 set sys/types.h i_systypes
9144 echo "Checking to see if your system supports struct fs_data..." >&4
9145 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9147 case "$d_fs_data_s" in
9148 "$define") echo "Yes, it does." ;;
9149 *) echo "No, it doesn't." ;;
9152 : see if fseeko exists
9156 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9159 : see if fsetpos exists
9160 set fsetpos d_fsetpos
9164 : see if fstatfs exists
9165 set fstatfs d_fstatfs
9169 : see if statvfs exists
9170 set statvfs d_statvfs
9173 : see if fstatvfs exists
9174 set fstatvfs d_fstatvfs
9178 : see if ftello exists
9182 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9185 : see if getcwd exists
9189 : see if getespwnam exists
9190 set getespwnam d_getespwnam
9193 : see if getespwnam exists
9194 set getespwnam d_getespwnam
9198 : see if getfsstat exists
9199 set getfsstat d_getfsstat
9202 : see if getgrent exists
9203 set getgrent d_getgrent
9206 : see if gethostbyaddr exists
9207 set gethostbyaddr d_gethbyaddr
9210 : see if gethostbyname exists
9211 set gethostbyname d_gethbyname
9214 : see if gethostent exists
9215 set gethostent d_gethent
9218 : see how we will look up host name
9221 if set gethostname val -f d_gethname; eval $csym; $val; then
9222 echo 'gethostname() found.' >&4
9223 d_gethname="$define"
9226 if set uname val -f d_uname; eval $csym; $val; then
9229 uname() was found, but you're running xenix, and older versions of xenix
9230 have a broken uname(). If you don't really know whether your xenix is old
9231 enough to have a broken system call, use the default answer.
9238 rp='Is your uname() broken?'
9241 n*) d_uname="$define"; call=uname;;
9244 echo 'uname() found.' >&4
9251 case "$d_gethname" in
9252 '') d_gethname="$undef";;
9255 '') d_uname="$undef";;
9257 case "$d_uname$d_gethname" in
9262 Every now and then someone has a $call() that lies about the hostname
9263 but can't be fixed for political or economic reasons. If you wish, I can
9264 pretend $call() isn't there and maybe compute hostname at run-time
9265 thanks to the '$phostname' command.
9268 rp="Shall I ignore $call() from now on?"
9271 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9274 case "$phostname" in
9276 *) case "$aphostname" in
9282 file=`./loc $file $file $pth`
9283 aphostname=`echo $file $*`
9288 case "$d_uname$d_gethname" in
9291 case "$phostname" in
9293 echo "There will be no way for $package to get your hostname." >&4;;
9295 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9299 case "$d_phostname" in
9300 '') d_phostname="$undef";;
9303 : see if this is a netdb.h system
9307 : see if prototypes for various gethostxxx netdb.h functions are available
9309 set d_gethostprotos gethostent $i_netdb netdb.h
9312 : see if getlogin exists
9313 set getlogin d_getlogin
9316 : see if getmnt exists
9320 : see if getmntent exists
9321 set getmntent d_getmntent
9324 : see if getnetbyaddr exists
9325 set getnetbyaddr d_getnbyaddr
9328 : see if getnetbyname exists
9329 set getnetbyname d_getnbyname
9332 : see if getnetent exists
9333 set getnetent d_getnent
9336 : see if prototypes for various getnetxxx netdb.h functions are available
9338 set d_getnetprotos getnetent $i_netdb netdb.h
9342 : see if getprotobyname exists
9343 set getprotobyname d_getpbyname
9346 : see if getprotobynumber exists
9347 set getprotobynumber d_getpbynumber
9350 : see if getprotoent exists
9351 set getprotoent d_getpent
9354 : see if getpgid exists
9355 set getpgid d_getpgid
9358 : see if getpgrp2 exists
9359 set getpgrp2 d_getpgrp2
9362 : see if getppid exists
9363 set getppid d_getppid
9366 : see if getpriority exists
9367 set getpriority d_getprior
9370 : see if prototypes for various getprotoxxx netdb.h functions are available
9372 set d_getprotoprotos getprotoent $i_netdb netdb.h
9375 : see if getprpwnam exists
9376 set getprpwnam d_getprpwnam
9379 : see if getprpwnam exists
9380 set getprpwnam d_getprpwnam
9383 : see if getpwent exists
9384 set getpwent d_getpwent
9388 : see if getservbyname exists
9389 set getservbyname d_getsbyname
9392 : see if getservbyport exists
9393 set getservbyport d_getsbyport
9396 : see if getservent exists
9397 set getservent d_getsent
9400 : see if prototypes for various getservxxx netdb.h functions are available
9402 set d_getservprotos getservent $i_netdb netdb.h
9405 : see if getspnam exists
9406 set getspnam d_getspnam
9409 : see if gettimeofday or ftime exists
9410 set gettimeofday d_gettimeod
9412 case "$d_gettimeod" in
9418 val="$undef"; set d_ftime; eval $setvar
9421 case "$d_gettimeod$d_ftime" in
9424 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9428 : see if this is an grp system
9434 xxx=`./findhdr grp.h`
9435 $cppstdin $cppflags $cppminus < $xxx >$$.h
9437 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9449 set d_grpasswd; eval $setvar
9453 : see if hasmntopt exists
9454 set hasmntopt d_hasmntopt
9457 : see if this is a netinet/in.h or sys/in.h system
9458 set netinet/in.h i_niin sys/in.h i_sysin
9461 : see if arpa/inet.h has to be included
9462 set arpa/inet.h i_arpainet
9465 : see if htonl --and friends-- exists
9470 : Maybe they are macros.
9475 #include <sys/types.h>
9476 #$i_niin I_NETINET_IN
9478 #$i_arpainet I_ARPA_INET
9480 #include <netinet/in.h>
9486 #include <arpa/inet.h>
9489 printf("Defined as a macro.");
9492 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9493 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9495 echo "But it seems to be defined as a macro." >&4
9503 : see if iconv exists
9509 if set index val -f; eval $csym; $val; then
9510 if set strchr val -f d_strchr; eval $csym; $val; then
9511 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9514 echo "strchr() found." >&4
9518 echo "index() found." >&4
9523 echo "index() found." >&4
9526 if set strchr val -f d_strchr; eval $csym; $val; then
9529 echo "strchr() found." >&4
9531 echo "No index() or strchr() found!" >&4
9536 set d_strchr; eval $setvar
9538 set d_index; eval $setvar
9540 : check whether inet_aton exists
9541 set inet_aton d_inetaton
9544 : see if inttypes.h is available
9545 : we want a real compile instead of Inhdr because some systems
9546 : have an inttypes.h which includes non-existent headers
9549 #include <inttypes.h>
9551 static int32_t foo32 = 0x12345678;
9555 if eval $compile; then
9556 echo "<inttypes.h> found." >&4
9559 echo "<inttypes.h> NOT found." >&4
9568 echo "Checking to see if you have int64_t..." >&4
9570 #include <sys/types.h>
9571 #$i_inttypes I_INTTYPES
9573 #include <inttypes.h>
9575 int main() { int64_t x = 7; }
9578 if eval $compile; then
9580 echo "You have int64_t."
9583 echo "You do not have int64_t."
9591 $cat >isascii.c <<'EOCP'
9603 if eval $compile; then
9604 echo "isascii() found." >&4
9607 echo "isascii() NOT found." >&4
9614 : see if isnan exists
9618 : see if isnanl exists
9622 : see if killpg exists
9626 : see if lchown exists
9628 $cat > try.c <<'EOCP'
9629 /* System header to define __stub macros and hopefully few prototypes,
9630 which can conflict with char lchown(); below. */
9632 /* Override any gcc2 internal prototype to avoid an error. */
9633 /* We use char because int might match the return type of a gcc2
9634 builtin and then its argument prototype would still apply. */
9637 /* The GNU C library defines this for functions which it implements
9638 to always fail with ENOSYS. Some functions are actually named
9639 something starting with __ and the normal name is an alias. */
9640 #if defined (__stub_lchown) || defined (__stub___lchown)
9648 if eval $compile; then
9649 $echo "lchown() found." >&4
9652 $echo "lchown() NOT found." >&4
9658 : See if number of significant digits in a double precision number is known
9660 $cat >ldbl_dig.c <<EOM
9670 printf("Contains LDBL_DIG");
9673 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9674 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9675 echo "LDBL_DIG found." >&4
9678 echo "LDBL_DIG NOT found." >&4
9685 : see if link exists
9689 : see if localeconv exists
9690 set localeconv d_locconv
9693 : see if lockf exists
9697 : check for long long
9699 echo "Checking to see if you have long long..." >&4
9700 echo 'int main() { long long x = 7; return 0; }' > try.c
9702 if eval $compile; then
9704 echo "You have have long long."
9707 echo "You do not have long long."
9713 : check for length of long long
9714 case "${d_longlong}${longlongsize}" in
9717 echo "Checking to see how big your long longs are..." >&4
9718 $cat >try.c <<'EOCP'
9722 printf("%d\n", (int)sizeof(long long));
9727 if eval $compile_ok; then
9728 longlongsize=`./try$exe_ext`
9729 echo "Your long longs are $longlongsize bytes long."
9733 echo "(I can't seem to compile the test program. Guessing...)"
9734 rp="What is the size of a long long (in bytes)?"
9738 if $test "X$longsize" = "X$longlongsize"; then
9739 echo "(That isn't any different from an ordinary long.)"
9745 : see if prototype for lseek is available
9747 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9750 : see if lstat exists
9754 : see if madvise exists
9755 set madvise d_madvise
9758 : see if mblen exists
9762 : see if mbstowcs exists
9763 set mbstowcs d_mbstowcs
9766 : see if mbtowc exists
9770 : see if memchr exists
9774 : see if memcmp exists
9778 : see if memcpy exists
9782 : see if memmove exists
9783 set memmove d_memmove
9786 : see if memset exists
9790 : see if mkdir exists
9794 : see if mkdtemp exists
9795 set mkdtemp d_mkdtemp
9798 : see if mkfifo exists
9802 : see if mkstemp exists
9803 set mkstemp d_mkstemp
9806 : see if mkstemps exists
9807 set mkstemps d_mkstemps
9810 : see if mktime exists
9814 : see if this is a sys/mman.h system
9815 set sys/mman.h i_sysmman
9818 : see if mmap exists
9821 : see what shmat returns
9822 : default to something harmless
9824 case "$i_sysmman$d_mmap" in
9826 $cat >mmap.c <<'END'
9827 #include <sys/mman.h>
9830 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9835 echo "and it returns ($mmaptype)." >&4
9841 : see if modfl exists
9845 : see if mprotect exists
9846 set mprotect d_mprotect
9849 : see if msgctl exists
9853 : see if msgget exists
9857 : see if msgsnd exists
9861 : see if msgrcv exists
9865 : see how much of the 'msg*(2)' library is present.
9868 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9869 *"$undef"*) h_msg=false;;
9873 case "`ipcs 2>&1`" in
9874 "SVID messages"*"not configured"*)
9875 echo "Your $osname does not have the msg*(2) configured." >&4
9890 : we could also check for sys/ipc.h ...
9891 if $h_msg && $test `./findhdr sys/msg.h`; then
9892 echo "You have the full msg*(2) library." >&4
9895 echo "You don't have the full msg*(2) library." >&4
9901 : see if msync exists
9905 : see if munmap exists
9909 : see if nice exists
9915 echo "Checking which 64-bit integer type we could use..." >&4
9921 val='"unsigned int"'
9926 *) case "$longsize" in
9930 val='"unsigned long"'
9935 *) case "$d_longlong:$longlongsize" in
9940 val='"unsigned long long"'
9945 *) case "$d_int64_t" in
9964 '') echo "Alas, no 64-bit integer types in sight." >&4
9967 *) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9972 echo "We $verb use '$quadtype' for 64-bit integers." >&4
9977 : check for length of character
9981 echo "Checking to see how big your characters are (hey, you never know)..." >&4
9982 $cat >try.c <<'EOCP'
9986 printf("%d\n", (int)sizeof(char));
9991 if eval $compile_ok; then
9995 echo "(I can't seem to compile the test program. Guessing...)"
10002 rp="What is the size of a character (in bytes)?"
10009 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10011 case "$use64bitint:$d_quad:$quadtype" in
10014 uvtype="$uquadtype"
10019 uvtype="unsigned long"
10025 case "$uselongdouble:$d_longdbl" in
10027 nvtype="long double"
10028 nvsize=$longdblsize
10035 $echo "(IV will be "$ivtype", $ivsize bytes)"
10036 $echo "(UV will be "$uvtype", $uvsize bytes)"
10037 $echo "(NV will be "$nvtype", $nvsize bytes)"
10040 #$i_inttypes I_INTTYPES
10042 #include <inttypes.h>
10047 int8_t i = INT8_MAX;
10048 uint8_t u = UINT8_MAX;
10049 printf("int8_t\n");
10052 int16_t i = INT16_MAX;
10053 uint16_t i = UINT16_MAX;
10054 printf("int16_t\n");
10057 int32_t i = INT32_MAX;
10058 uint32_t u = UINT32_MAX;
10059 printf("int32_t\n");
10065 '') case "$charsize" in
10067 u8type="unsigned char"
10076 if eval $compile; then
10077 case "`./try$exe_ext`" in
10078 int8_t) i8type=int8_t
10088 '') if $test $charsize -ge 1; then
10090 u8type="unsigned char"
10098 '') case "$shortsize" in
10100 u16type="unsigned short"
10108 '') set try -DINT16
10109 if eval $compile; then
10110 case "`./try$exe_ext`" in
10122 '') if $test $shortsize -ge 2; then
10124 u16type="unsigned short"
10132 '') case "$longsize" in
10134 u32type="unsigned long"
10138 *) case "$intsize" in
10140 u32type="unsigned int"
10150 '') set try -DINT32
10151 if eval $compile; then
10152 case "`./try$exe_ext`" in
10164 '') if $test $intsize -ge 4; then
10166 u32type="unsigned int"
10174 '') case "$d_quad:$quadtype" in
10176 i64type="$quadtype"
10177 u64type="$uquadtype"
10185 $echo "Checking whether your NVs can preserve your UVs..." >&4
10189 $uvtype k = ($uvtype)~0, l;
10195 printf("preserve\n");
10200 if eval $compile; then
10201 case "`./try$exe_ext`" in
10202 preserve) d_nv_preserves_uv="$define" ;;
10205 case "$d_nv_preserves_uv" in
10206 $define) $echo "Yes, they can." 2>&1 ;;
10207 *) $echo "No, they can't." 2>&1
10208 d_nv_preserves_uv="$undef"
10214 case "$d_nv_preserves_uv" in
10215 "$define") d_nv_preserved_bits=`expr $uvsize \* 8` ;;
10216 *) $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10221 int n = 8 * $uvsize;
10223 for (i = 0; i < n; i++) {
10224 u = u << 1 | ($uvtype)1;
10225 if (($uvtype)($nvtype)u != u)
10233 if eval $compile; then
10234 d_nv_preserved_bits="`./try$exe_ext`"
10236 case "$d_nv_preserved_bits" in
10237 [1-9]*) $echo "Your NVs can preserve $d_nv_preserved_bits bits of your NVs." 2>&1 ;;
10238 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10239 d_nv_preserved_bits="$undef"
10248 : check for off64_t
10250 echo "Checking to see if you have off64_t..." >&4
10252 #include <sys/types.h>
10253 #include <unistd.h>
10254 int main() { off64_t x = 7; }
10257 if eval $compile; then
10259 echo "You have off64_t."
10262 echo "You do not have off64_t."
10263 case "$lseeksize" in
10264 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10271 : see if POSIX threads are available
10272 set pthread.h i_pthread
10278 : how to create joinable pthreads
10279 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10281 echo "Checking what constant to use for creating joinable pthreads..." >&4
10282 $cat >try.c <<'EOCP'
10283 #include <pthread.h>
10285 int detachstate = JOINABLE;
10288 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10289 if eval $compile; then
10290 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10291 val="$undef" # Yes, undef.
10292 set d_old_pthread_create_joinable
10295 set old_pthread_create_joinable
10298 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10299 if eval $compile; then
10300 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10302 set d_old_pthread_create_joinable
10304 val=PTHREAD_CREATE_UNDETACHED
10305 set old_pthread_create_joinable
10308 set try -DJOINABLE=__UNDETACHED
10309 if eval $compile; then
10310 echo "You seem to use __UNDETACHED." >&4
10312 set d_old_pthread_create_joinable
10315 set old_pthread_create_joinable
10318 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10320 set d_old_pthread_create_joinable
10323 set old_pthread_create_joinable
10330 d_old_pthread_create_joinable="$undef"
10331 old_pthread_create_joinable=""
10334 : see if pause exists
10338 : see if pipe exists
10342 : see if poll exists
10347 : see whether the various POSIXish _yields exist
10349 #include <pthread.h>
10355 #ifdef PTHREAD_YIELD
10358 #ifdef PTHREAD_YIELD_NULL
10359 pthread_yield(NULL);
10365 : see if sched_yield exists
10366 set try -DSCHED_YIELD
10367 if eval $compile; then
10369 sched_yield='sched_yield()'
10373 case "$usethreads" in
10376 $define) echo 'sched_yield() found.' >&4 ;;
10377 *) echo 'sched_yield() NOT found.' >&4 ;;
10383 : see if pthread_yield exists
10384 set try -DPTHREAD_YIELD
10385 if eval $compile; then
10387 case "$sched_yield" in
10388 '') sched_yield='pthread_yield()' ;;
10391 set try -DPTHREAD_YIELD_NULL
10392 if eval $compile; then
10394 case "$sched_yield" in
10395 '') sched_yield='pthread_yield(NULL)' ;;
10401 case "$usethreads" in
10404 $define) echo 'pthread_yield() found.' >&4 ;;
10405 *) echo 'pthread_yield() NOT found.' >&4 ;;
10409 set d_pthread_yield
10412 case "$sched_yield" in
10413 '') sched_yield=undef ;;
10418 : see if this is a pwd.h system
10424 xxx=`./findhdr pwd.h`
10425 $cppstdin $cppflags $cppminus < $xxx >$$.h
10427 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10435 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10443 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10451 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10459 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10467 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10475 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10483 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10495 set d_pwquota; eval $setvar
10496 set d_pwage; eval $setvar
10497 set d_pwchange; eval $setvar
10498 set d_pwclass; eval $setvar
10499 set d_pwexpire; eval $setvar
10500 set d_pwcomment; eval $setvar
10501 set d_pwgecos; eval $setvar
10502 set d_pwpasswd; eval $setvar
10506 : see if readdir and friends exist
10507 set readdir d_readdir
10509 set seekdir d_seekdir
10511 set telldir d_telldir
10513 set rewinddir d_rewinddir
10516 : see if readlink exists
10517 set readlink d_readlink
10520 : see if rename exists
10521 set rename d_rename
10524 : see if rmdir exists
10528 : see if memory.h is available.
10533 : See if it conflicts with string.h
10539 $cppstdin $cppflags $cppminus < $strings > mem.h
10540 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10542 echo "We won't be including <memory.h>."
10552 : can bcopy handle overlapping blocks?
10557 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10559 #$i_memory I_MEMORY
10560 #$i_stdlib I_STDLIB
10561 #$i_string I_STRING
10562 #$i_unistd I_UNISTD
10564 $cat >>try.c <<'EOCP'
10567 # include <memory.h>
10570 # include <stdlib.h>
10573 # include <string.h>
10575 # include <strings.h>
10578 # include <unistd.h> /* Needed for NetBSD */
10582 char buf[128], abc[128];
10588 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10590 for (align = 7; align >= 0; align--) {
10591 for (len = 36; len; len--) {
10593 bcopy(abc, b, len);
10594 for (off = 1; off <= len; off++) {
10595 bcopy(b, b+off, len);
10596 bcopy(b+off, b, len);
10597 if (bcmp(b, abc, len))
10606 if eval $compile_ok; then
10607 if ./try 2>/dev/null; then
10608 echo "Yes, it can."
10611 echo "It can't, sorry."
10612 case "$d_memmove" in
10613 "$define") echo "But that's Ok since you have memmove()." ;;
10617 echo "(I can't compile the test program, so we'll assume not...)"
10618 case "$d_memmove" in
10619 "$define") echo "But that's Ok since you have memmove()." ;;
10624 $rm -f try.* try core
10628 : can memcpy handle overlapping blocks?
10630 case "$d_memcpy" in
10633 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10635 #$i_memory I_MEMORY
10636 #$i_stdlib I_STDLIB
10637 #$i_string I_STRING
10638 #$i_unistd I_UNISTD
10640 $cat >>try.c <<'EOCP'
10643 # include <memory.h>
10646 # include <stdlib.h>
10649 # include <string.h>
10651 # include <strings.h>
10654 # include <unistd.h> /* Needed for NetBSD */
10658 char buf[128], abc[128];
10664 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10665 try to store the string in read-only memory. */
10666 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10668 for (align = 7; align >= 0; align--) {
10669 for (len = 36; len; len--) {
10671 memcpy(b, abc, len);
10672 for (off = 1; off <= len; off++) {
10673 memcpy(b+off, b, len);
10674 memcpy(b, b+off, len);
10675 if (memcmp(b, abc, len))
10684 if eval $compile_ok; then
10685 if ./try 2>/dev/null; then
10686 echo "Yes, it can."
10689 echo "It can't, sorry."
10690 case "$d_memmove" in
10691 "$define") echo "But that's Ok since you have memmove()." ;;
10695 echo "(I can't compile the test program, so we'll assume not...)"
10696 case "$d_memmove" in
10697 "$define") echo "But that's Ok since you have memmove()." ;;
10702 $rm -f try.* try core
10706 : can memcmp be trusted to compare relative magnitude?
10708 case "$d_memcmp" in
10711 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10713 #$i_memory I_MEMORY
10714 #$i_stdlib I_STDLIB
10715 #$i_string I_STRING
10716 #$i_unistd I_UNISTD
10718 $cat >>try.c <<'EOCP'
10721 # include <memory.h>
10724 # include <stdlib.h>
10727 # include <string.h>
10729 # include <strings.h>
10732 # include <unistd.h> /* Needed for NetBSD */
10738 if ((a < b) && memcmp(&a, &b, 1) < 0)
10744 if eval $compile_ok; then
10745 if ./try 2>/dev/null; then
10746 echo "Yes, it can."
10749 echo "No, it can't (it uses signed chars)."
10752 echo "(I can't compile the test program, so we'll assume not...)"
10756 $rm -f try.* try core
10760 : see if select exists
10761 set select d_select
10764 : see if semctl exists
10765 set semctl d_semctl
10768 : see if semget exists
10769 set semget d_semget
10772 : see if semop exists
10776 : see how much of the 'sem*(2)' library is present.
10779 case "$d_semctl$d_semget$d_semop" in
10780 *"$undef"*) h_sem=false;;
10784 case "`ipcs 2>&1`" in
10785 "SVID messages"*"not configured"*)
10786 echo "Your $osname does not have the sem*(2) configured." >&4
10789 set semctl d_semctl
10791 set semget d_semget
10799 : we could also check for sys/ipc.h ...
10800 if $h_sem && $test `./findhdr sys/sem.h`; then
10801 echo "You have the full sem*(2) library." >&4
10804 echo "You don't have the full sem*(2) library." >&4
10810 : see whether sys/sem.h defines union semun
10812 $cat > try.c <<'END'
10813 #include <sys/types.h>
10814 #include <sys/ipc.h>
10815 #include <sys/sem.h>
10816 int main () { union semun semun; semun.buf = 0; }
10819 if eval $compile; then
10820 echo "You have union semun in <sys/sem.h>." >&4
10823 echo "You do not have union semun in <sys/sem.h>." >&4
10826 $rm -f try try.c try.h
10830 : see how to do semctl IPC_STAT
10833 : see whether semctl IPC_STAT can use union semun
10838 # define S_IRUSR S_IREAD
10839 # define S_IWUSR S_IWRITE
10840 # define S_IXUSR S_IEXEC
10842 # define S_IRUSR 0400
10843 # define S_IWUSR 0200
10844 # define S_IXUSR 0100
10846 # define S_IRGRP (S_IRUSR>>3)
10847 # define S_IWGRP (S_IWUSR>>3)
10848 # define S_IXGRP (S_IXUSR>>3)
10849 # define S_IROTH (S_IRUSR>>6)
10850 # define S_IWOTH (S_IWUSR>>6)
10851 # define S_IXOTH (S_IXUSR>>6)
10854 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10855 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10856 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10861 #include <sys/types.h>
10862 #include <sys/ipc.h>
10863 #include <sys/sem.h>
10864 #include <sys/stat.h>
10871 #$d_union_semun HAS_UNION_SEMUN
10874 #ifndef HAS_UNION_SEMUN
10877 struct semid_ds *buf;
10878 unsigned short *array;
10884 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10885 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10887 struct semid_ds argbuf;
10890 st = semctl(sem, 0, IPC_STAT, arg);
10894 # endif /* IPC_STAT */
10895 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10897 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10898 # endif /* IPC_RMID */
10899 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10901 #endif /* IPC_PRIVATE && ... */
10902 printf("semget failed: errno = %d\n", errno);
10908 if eval $compile; then
10911 semun) val="$define" ;;
10917 case "$d_semctl_semun" in
10919 echo "You can use union semun for semctl IPC_STAT." >&4
10922 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10927 : see whether semctl IPC_STAT can use struct semid_ds pointer
10928 $cat > try.c <<'END'
10929 #include <sys/types.h>
10930 #include <sys/ipc.h>
10931 #include <sys/sem.h>
10932 #include <sys/stat.h>
10940 struct semid_ds arg;
10943 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10944 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10947 st = semctl(sem, 0, IPC_STAT, &arg);
10949 printf("semid_ds\n");
10951 # endif /* IPC_STAT */
10952 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10954 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10955 # endif /* IPC_RMID */
10956 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10958 #endif /* IPC_PRIVATE && ... */
10959 printf("semget failed: errno = %d\n", errno);
10966 if eval $compile; then
10969 semid_ds) val="$define" ;;
10973 set d_semctl_semid_ds
10975 case "$d_semctl_semid_ds" in
10977 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10979 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10986 # We do not have the full sem*(2) library, so assume we can not
10992 set d_semctl_semid_ds
10997 : see if setegid exists
10998 set setegid d_setegid
11001 : see if seteuid exists
11002 set seteuid d_seteuid
11005 : see if setgrent exists
11006 set setgrent d_setgrent
11009 : see if sethostent exists
11010 set sethostent d_sethent
11013 : see if setlinebuf exists
11014 set setlinebuf d_setlinebuf
11017 : see if setlocale exists
11018 set setlocale d_setlocale
11021 : see if setnetent exists
11022 set setnetent d_setnent
11025 : see if setprotoent exists
11026 set setprotoent d_setpent
11029 : see if setpgid exists
11030 set setpgid d_setpgid
11033 : see if setpgrp2 exists
11034 set setpgrp2 d_setpgrp2
11037 : see if setpriority exists
11038 set setpriority d_setprior
11041 : see if setpwent exists
11042 set setpwent d_setpwent
11045 : see if setregid exists
11046 set setregid d_setregid
11048 set setresgid d_setresgid
11051 : see if setreuid exists
11052 set setreuid d_setreuid
11054 set setresuid d_setresuid
11057 : see if setrgid exists
11058 set setrgid d_setrgid
11061 : see if setruid exists
11062 set setruid d_setruid
11065 : see if setservent exists
11066 set setservent d_setsent
11069 : see if setsid exists
11070 set setsid d_setsid
11073 : see if setvbuf exists
11074 set setvbuf d_setvbuf
11077 : see if sfio.h is available
11082 : see if sfio library is available
11093 : Ok, but do we want to use it.
11097 true|$define|[yY]*) dflt='y';;
11100 echo "$package can use the sfio library, but it is experimental."
11101 rp="You seem to have sfio available, do you want to try using it?"
11105 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11107 : Remove sfio from list of libraries to use
11108 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11111 echo "libs = $libs" >&4
11115 *) case "$usesfio" in
11116 true|$define|[yY]*)
11117 echo "Sorry, cannot find sfio on this machine" >&4
11118 echo "Ignoring your setting of usesfio=$usesfio" >&4
11126 $define) usesfio='true';;
11127 *) usesfio='false';;
11130 : see if shmctl exists
11131 set shmctl d_shmctl
11134 : see if shmget exists
11135 set shmget d_shmget
11138 : see if shmat exists
11141 : see what shmat returns
11144 $cat >shmat.c <<'END'
11145 #include <sys/shm.h>
11148 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11153 echo "and it returns ($shmattype)." >&4
11154 : see if a prototype for shmat is available
11155 xxx=`./findhdr sys/shm.h`
11156 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11157 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11168 set d_shmatprototype
11171 : see if shmdt exists
11175 : see how much of the 'shm*(2)' library is present.
11178 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11179 *"$undef"*) h_shm=false;;
11183 case "`ipcs 2>&1`" in
11184 "SVID shared memory"*"not configured"*)
11185 echo "Your $osname does not have the shm*(2) configured." >&4
11188 set shmctl d_shmctl
11190 set shmget d_shmget
11200 : we could also check for sys/ipc.h ...
11201 if $h_shm && $test `./findhdr sys/shm.h`; then
11202 echo "You have the full shm*(2) library." >&4
11205 echo "You don't have the full shm*(2) library." >&4
11212 : see if we have sigaction
11213 if set sigaction val -f d_sigaction; eval $csym; $val; then
11214 echo 'sigaction() found.' >&4
11215 $cat > try.c <<'EOP'
11217 #include <sys/types.h>
11218 #include <signal.h>
11221 struct sigaction act, oact;
11223 oact.sa_handler = 0;
11224 /* so that act and oact are used */
11225 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11229 if eval $compile_ok; then
11232 echo "But you don't seem to have a useable struct sigaction." >&4
11236 echo 'sigaction NOT found.' >&4
11239 set d_sigaction; eval $setvar
11240 $rm -f try try$_o try.c
11242 : see if sigsetjmp exists
11244 case "$d_sigsetjmp" in
11246 $cat >try.c <<'EOP'
11247 #include <setjmp.h>
11252 if (sigsetjmp(env,1))
11255 siglongjmp(env, 1);
11260 if eval $compile; then
11261 if ./try >/dev/null 2>&1; then
11262 echo "POSIX sigsetjmp found." >&4
11266 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11272 echo "sigsetjmp not found." >&4
11276 *) val="$d_sigsetjmp"
11277 case "$d_sigsetjmp" in
11278 $define) echo "POSIX sigsetjmp found." >&4;;
11279 $undef) echo "sigsetjmp not found." >&4;;
11287 : see if sys/stat.h is available
11288 set sys/stat.h i_sysstat
11292 : see if stat knows about block sizes
11294 echo "Checking to see if your struct stat has st_blocks field..." >&4
11295 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11299 : see if this is a sys/vfs.h system
11300 set sys/vfs.h i_sysvfs
11304 : see if this is a sys/statfs.h system
11305 set sys/statfs.h i_sysstatfs
11310 echo "Checking to see if your system supports struct statfs..." >&4
11311 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
11313 case "$d_statfs_s" in
11314 "$define") echo "Yes, it does." ;;
11315 *) echo "No, it doesn't." ;;
11320 : see if struct statfs knows about f_flags
11321 case "$d_statfs_s" in
11324 echo "Checking to see if your struct statfs has f_flags field..." >&4
11325 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
11329 set d_statfs_f_flags
11333 case "$d_statfs_f_flags" in
11334 "$define") echo "Yes, it does." ;;
11335 *) echo "No, it doesn't." ;;
11338 : see if _ptr and _cnt from stdio act std
11340 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11341 echo "(Looks like you have stdio.h from Linux.)"
11342 case "$stdio_ptr" in
11343 '') stdio_ptr='((fp)->_IO_read_ptr)'
11346 *) ptr_lval=$d_stdio_ptr_lval;;
11348 case "$stdio_cnt" in
11349 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11352 *) cnt_lval=$d_stdio_cnt_lval;;
11354 case "$stdio_base" in
11355 '') stdio_base='((fp)->_IO_read_base)';;
11357 case "$stdio_bufsiz" in
11358 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11361 case "$stdio_ptr" in
11362 '') stdio_ptr='((fp)->_ptr)'
11365 *) ptr_lval=$d_stdio_ptr_lval;;
11367 case "$stdio_cnt" in
11368 '') stdio_cnt='((fp)->_cnt)'
11371 *) cnt_lval=$d_stdio_cnt_lval;;
11373 case "$stdio_base" in
11374 '') stdio_base='((fp)->_base)';;
11376 case "$stdio_bufsiz" in
11377 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11380 : test whether _ptr and _cnt really work
11381 echo "Checking how std your stdio is..." >&4
11384 #define FILE_ptr(fp) $stdio_ptr
11385 #define FILE_cnt(fp) $stdio_cnt
11387 FILE *fp = fopen("try.c", "r");
11390 18 <= FILE_cnt(fp) &&
11391 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11399 if eval $compile; then
11401 echo "Your stdio acts pretty std."
11404 echo "Your stdio isn't very std."
11407 echo "Your stdio doesn't appear very std."
11413 : Can _ptr be used as an lvalue?
11414 case "$d_stdstdio$ptr_lval" in
11415 $define$define) val=$define ;;
11418 set d_stdio_ptr_lval
11421 : Can _cnt be used as an lvalue?
11422 case "$d_stdstdio$cnt_lval" in
11423 $define$define) val=$define ;;
11426 set d_stdio_cnt_lval
11429 : see if _base is also standard
11431 case "$d_stdstdio" in
11435 #define FILE_base(fp) $stdio_base
11436 #define FILE_bufsiz(fp) $stdio_bufsiz
11438 FILE *fp = fopen("try.c", "r");
11441 19 <= FILE_bufsiz(fp) &&
11442 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11449 if eval $compile; then
11451 echo "And its _base field acts std."
11454 echo "But its _base field isn't std."
11457 echo "However, it seems to be lacking the _base field."
11466 Checking how to access stdio streams by file descriptor number...
11468 case "$stdio_stream_array" in
11469 '') $cat >try.c <<EOCP
11472 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11476 for s in _iob __iob __sF
11478 set try -DSTDIO_STREAM_ARRAY=$s
11479 if eval $compile; then
11480 case "`./try$exe_ext`" in
11481 yes) stdio_stream_array=$s; break ;;
11485 $rm -f try.* try$exe_ext
11487 case "$stdio_stream_array" in
11489 I can't figure out how to access stdio streams by file descriptor number.
11491 d_stdio_stream_array="$undef"
11494 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11496 d_stdio_stream_array="$define"
11500 : see if strcoll exists
11501 set strcoll d_strcoll
11504 : check for structure copying
11506 echo "Checking to see if your C compiler can copy structs..." >&4
11507 $cat >try.c <<'EOCP'
11517 if $cc -c try.c >/dev/null 2>&1 ; then
11519 echo "Yup, it can."
11522 echo "Nope, it can't."
11528 : see if strerror and/or sys_errlist[] exist
11530 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11531 if set strerror val -f d_strerror; eval $csym; $val; then
11532 echo 'strerror() found.' >&4
11533 d_strerror="$define"
11534 d_strerrm='strerror(e)'
11535 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11536 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11537 d_syserrlst="$define"
11539 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11540 d_syserrlst="$undef"
11542 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11543 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11544 echo 'strerror() found in string header.' >&4
11545 d_strerror="$define"
11546 d_strerrm='strerror(e)'
11547 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11548 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11549 d_syserrlst="$define"
11551 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11552 d_syserrlst="$undef"
11554 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11555 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11556 d_strerror="$undef"
11557 d_syserrlst="$define"
11558 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11560 echo 'strerror() and sys_errlist[] NOT found.' >&4
11561 d_strerror="$undef"
11562 d_syserrlst="$undef"
11563 d_strerrm='"unknown"'
11567 : see if strtod exists
11568 set strtod d_strtod
11571 : see if strtol exists
11572 set strtol d_strtol
11575 : see if strtold exists
11576 set strtold d_strtold
11579 : see if strtoll exists
11580 set strtoll d_strtoll
11583 case "$d_longlong-$d_strtoll" in
11586 Checking whether your strtoll() works okay...
11588 $cat >try.c <<'EOCP'
11591 #define strtoll __strtoll
11594 extern long long int strtoll(char *s, char **, int);
11595 static int bad = 0;
11596 int check(char *s, long long ell, int een) {
11599 gll = strtoll(s, 0, 10);
11600 if (!((gll == ell) && (errno == een)))
11604 check(" 1", 1LL, 0);
11605 check(" 0", 0LL, 0);
11606 check("-1", -1LL, 0);
11607 check("-9223372036854775808", -9223372036854775808LL, 0);
11608 check("-9223372036854775808", -9223372036854775808LL, 0);
11609 check(" 9223372036854775807", 9223372036854775807LL, 0);
11610 check("-9223372036854775808", -9223372036854775808LL, 0);
11611 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
11612 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11618 if eval $compile; then
11620 ok) echo "Your strtoll() seems to be working okay." ;;
11622 Your strtoll() doesn't seem to be working okay.
11631 : see if strtoul exists
11632 set strtoul d_strtoul
11635 : see if strtoull exists
11636 set strtoull d_strtoull
11639 case "$d_longlong-$d_strtoull" in
11642 Checking whether your strtoull() works okay...
11644 $cat >try.c <<'EOCP'
11647 #define strtoull __strtoull
11650 extern unsigned long long int strtoull(char *s, char **, int);
11651 static int bad = 0;
11652 int check(char *s, long long eull, int een) {
11655 gull = strtoull(s, 0, 10);
11656 if (!((gull == eull) && (errno == een)))
11660 check(" 1", 1LL, 0);
11661 check(" 0", 0LL, 0);
11662 check("18446744073709551615", 18446744073709551615ULL, 0);
11663 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11669 if eval $compile; then
11671 ok) echo "Your strtoull() seems to be working okay." ;;
11673 Your strtoull() doesn't seem to be working okay.
11675 d_strtoull="$undef"
11682 : see if strtouq exists
11683 set strtouq d_strtouq
11686 : see if strxfrm exists
11687 set strxfrm d_strxfrm
11690 : see if symlink exists
11691 set symlink d_symlink
11694 : see if syscall exists
11695 set syscall d_syscall
11698 : see if sysconf exists
11699 set sysconf d_sysconf
11702 : see if system exists
11703 set system d_system
11706 : see if tcgetpgrp exists
11707 set tcgetpgrp d_tcgetpgrp
11710 : see if tcsetpgrp exists
11711 set tcsetpgrp d_tcsetpgrp
11714 : see if prototype for telldir is available
11716 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11719 : see if this is a sys/times.h system
11720 set sys/times.h i_systimes
11723 : see if times exists
11725 if set times val -f d_times; eval $csym; $val; then
11726 echo 'times() found.' >&4
11729 case "$i_systimes" in
11730 "$define") inc='sys/times.h';;
11732 rp="What is the type returned by times() on this system?"
11733 set clock_t clocktype long stdio.h sys/types.h $inc
11736 echo 'times() NOT found, hope that will do.' >&4
11741 : see if truncate exists
11742 set truncate d_truncate
11745 : see if tzname[] exists
11747 if set tzname val -a d_tzname; eval $csym; $val; then
11749 echo 'tzname[] found.' >&4
11752 echo 'tzname[] NOT found.' >&4
11757 : see if umask exists
11761 : see if ustat exists
11765 : backward compatibility for d_hvfork
11766 if test X$d_hvfork != X; then
11767 d_vfork="$d_hvfork"
11770 : see if there is a vfork
11775 : Ok, but do we want to use it. vfork is reportedly unreliable in
11776 : perl on Solaris 2.x, and probably elsewhere.
11780 case "$usevfork" in
11786 Perl can only use a vfork() that doesn't suffer from strict
11787 restrictions on calling functions or modifying global data in
11788 the child. For example, glibc-2.1 contains such a vfork()
11789 that is unsuitable. If your system provides a proper fork()
11790 call, chances are that you do NOT want perl to use vfork().
11793 rp="Do you still want to use vfork()?"
11798 echo "Ok, we won't use vfork()."
11807 $define) usevfork='true';;
11808 *) usevfork='false';;
11811 : see if this is an sysdir system
11812 set sys/dir.h i_sysdir
11815 : see if this is an sysndir system
11816 set sys/ndir.h i_sysndir
11819 : see if closedir exists
11820 set closedir d_closedir
11823 case "$d_closedir" in
11826 echo "Checking whether closedir() returns a status..." >&4
11827 cat > closedir.c <<EOM
11828 #$i_dirent I_DIRENT /**/
11829 #$i_sysdir I_SYS_DIR /**/
11830 #$i_sysndir I_SYS_NDIR /**/
11831 #$i_systypes I_SYS_TYPES /**/
11833 #if defined(I_SYS_TYPES)
11834 #include <sys/types.h>
11836 #if defined(I_DIRENT)
11837 #include <dirent.h>
11838 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11839 #include <sys/dir.h>
11843 #include <sys/ndir.h>
11847 #include <ndir.h> /* may be wrong in the future */
11849 #include <sys/dir.h>
11854 int main() { return closedir(opendir(".")); }
11857 if eval $compile_ok; then
11858 if ./closedir > /dev/null 2>&1 ; then
11859 echo "Yes, it does."
11862 echo "No, it doesn't."
11866 echo "(I can't seem to compile the test program--assuming it doesn't)"
11874 set d_void_closedir
11877 : check for volatile keyword
11879 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11880 $cat >try.c <<'EOCP'
11883 typedef struct _goo_struct goo_struct;
11884 goo_struct * volatile goo = ((goo_struct *)0);
11885 struct _goo_struct {
11890 typedef unsigned short foo_t;
11891 char *volatile foo;
11893 volatile foo_t blech;
11897 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11899 echo "Yup, it does."
11902 echo "Nope, it doesn't."
11908 : see if there is a wait4
11912 : see if waitpid exists
11913 set waitpid d_waitpid
11916 : see if wcstombs exists
11917 set wcstombs d_wcstombs
11920 : see if wctomb exists
11921 set wctomb d_wctomb
11924 : preserve RCS keywords in files with variable substitution, grrr
11929 Revision='$Revision'
11931 case "$crosscompile" in
11932 ''|[nN]*) crosscompile="$undef" ;;
11936 next|rhapsody|darwin) multiarch="$define" ;;
11938 case "$multiarch" in
11939 ''|[nN]*) multiarch="$undef" ;;
11942 : check for alignment requirements
11944 case "$crosscompile$multiarch" in
11947 You seem to be either cross-compiling or doing a multiarchitecture build,
11948 skipping the memory alignment check.
11951 case "$alignbytes" in
11952 '') alignbytes=8 ;;
11956 case "$alignbytes" in
11957 '') echo "Checking alignment constraints..." >&4
11958 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11959 $cat >try.c <<'EOCP'
11960 typedef long double NV;
11963 $cat >try.c <<'EOCP'
11967 $cat >>try.c <<'EOCP'
11975 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11980 if eval $compile_ok; then
11984 echo "(I can't seem to compile the test program...)"
11987 *) dflt="$alignbytes"
11990 rp="Doubles must be aligned on a how-many-byte boundary?"
11998 : set the base revision
12001 : check for ordering of bytes in a long
12003 case "$crosscompile$multiarch" in
12006 You seem to be either cross-compiling or doing a multiarchitecture build,
12007 skipping the byteorder check.
12013 case "$byteorder" in
12016 In the following, larger digits indicate more significance. A big-endian
12017 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12018 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12019 machines may have weird orders like 3412. A Cray will report 87654321,
12020 an Alpha will report 12345678. If the test program works the default is
12022 I'm now running the test program...
12024 $cat >try.c <<'EOCP'
12031 char c[sizeof(long)];
12034 if (sizeof(long) > 4)
12035 u.l = (0x08070605L << 32) | 0x04030201L;
12038 for (i = 0; i < sizeof(long); i++)
12039 printf("%c", u.c[i]+'0');
12046 if eval $compile && ./try > /dev/null; then
12049 [1-4][1-4][1-4][1-4]|12345678|87654321)
12050 echo "(The test program ran ok.)"
12051 echo "byteorder=$dflt"
12054 ????|????????) echo "(The test program ran ok.)" ;;
12055 *) echo "(The test program didn't run right for some reason.)" ;;
12060 (I can't seem to compile the test program. Guessing big-endian...)
12063 case "$xxx_prompt" in
12065 rp="What is the order of bytes in a long?"
12079 : how do we catenate cpp tokens here?
12081 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12082 $cat >cpp_stuff.c <<'EOCP'
12083 #define RCAT(a,b)a/**/b
12084 #define ACAT(a,b)a ## b
12088 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12089 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12090 echo "Oh! Smells like ANSI's been here." >&4
12091 echo "We can catify or stringify, separately or together!"
12093 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12094 echo "Ah, yes! The good old days!" >&4
12095 echo "However, in the good old days we don't know how to stringify and"
12096 echo "catify at the same time."
12100 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12101 to have to edit the values of CAT[2-5] in config.h...
12103 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12107 : see if this is a db.h system
12113 : Check db version.
12115 echo "Checking Berkeley DB version ..." >&4
12121 #include <sys/types.h>
12126 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12127 int Major, Minor, Patch ;
12128 unsigned long Version ;
12129 (void)db_version(&Major, &Minor, &Patch) ;
12130 printf("You have Berkeley DB Version 2 or greater\n");
12132 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12133 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12134 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12135 Major, Minor, Patch) ;
12137 /* check that db.h & libdb are compatible */
12138 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12139 printf("db.h and libdb are incompatible\n") ;
12143 printf("db.h and libdb are compatible\n") ;
12145 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12146 + DB_VERSION_PATCH ;
12148 /* needs to be >= 2.3.4 */
12149 if (Version < 2003004) {
12150 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12151 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12157 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12158 printf("You have Berkeley DB Version 1\n");
12159 exit(0); /* DB version < 2: the coast is clear. */
12161 exit(1); /* <db.h> not Berkeley DB? */
12167 if eval $compile_ok && ./try; then
12168 echo 'Looks OK.' >&4
12170 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12174 : Remove db from list of libraries to use
12175 echo "Removing unusable -ldb from library list" >&4
12176 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12179 echo "libs = $libs" >&4
12189 : Check the return type needed for hash
12191 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12197 #include <sys/types.h>
12200 #ifndef DB_VERSION_MAJOR
12201 u_int32_t hash_cb (ptr, size)
12209 info.hash = hash_cb;
12213 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12214 if $contains warning try.out >>/dev/null 2>&1 ; then
12217 db_hashtype='u_int32_t'
12220 : XXX Maybe we should just give up here.
12221 db_hashtype=u_int32_t
12223 echo "Help: I can't seem to compile the db test program." >&4
12224 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12227 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12229 *) db_hashtype=u_int32_t
12234 : Check the return type needed for prefix
12236 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12242 #include <sys/types.h>
12245 #ifndef DB_VERSION_MAJOR
12246 size_t prefix_cb (key1, key2)
12254 info.prefix = prefix_cb;
12258 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12259 if $contains warning try.out >>/dev/null 2>&1 ; then
12260 db_prefixtype='int'
12262 db_prefixtype='size_t'
12265 db_prefixtype='size_t'
12266 : XXX Maybe we should just give up here.
12268 echo "Help: I can't seem to compile the db test program." >&4
12269 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12272 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12274 *) db_prefixtype='size_t'
12278 : check for void type
12280 echo "Checking to see how well your C compiler groks the void type..." >&4
12281 case "$voidflags" in
12283 $cat >try.c <<'EOCP'
12289 extern void moo(); /* function returning void */
12290 void (*goo)(); /* ptr to func returning void */
12292 void *hue; /* generic ptr */
12305 int main() { sub(); }
12307 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12308 voidflags=$defvoidused
12309 echo "Good. It appears to support void to the level $package wants.">&4
12310 if $contains warning .out >/dev/null 2>&1; then
12311 echo "However, you might get some warnings that look like this:"
12315 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12316 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12317 echo "It supports 1..."
12318 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12319 echo "It also supports 2..."
12320 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12322 echo "And it supports 4 but not 8 definitely."
12324 echo "It doesn't support 4..."
12325 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12327 echo "But it supports 8."
12330 echo "Neither does it support 8."
12334 echo "It does not support 2..."
12335 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12337 echo "But it supports 4 and 8."
12339 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12341 echo "And it supports 4 but has not heard about 8."
12343 echo "However it supports 8 but not 4."
12348 echo "There is no support at all for void."
12353 case "$voidflags" in
12355 *) $cat >&4 <<'EOM'
12356 Support flag bits are:
12357 1: basic void declarations.
12358 2: arrays of pointers to functions returning void.
12359 4: operations between pointers to and addresses of void functions.
12360 8: generic void pointers.
12363 rp="Your void support flags add up to what?"
12371 : How can we generate normalized random numbers ?
12373 echo "Looking for a random number function..." >&4
12374 case "$randfunc" in
12376 if set drand48 val -f; eval $csym; $val; then
12378 echo "Good, found drand48()." >&4
12379 elif set random val -f; eval $csym; $val; then
12381 echo "OK, found random()." >&4
12384 echo "Yick, looks like I have to use rand()." >&4
12395 *-Dmy_rand=*|*-Dmy_srand=*)
12396 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12397 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12398 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12399 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12403 while $test "$cont"; do
12404 rp="Use which function to generate random numbers?"
12406 if $test "$ans" = "$dflt"; then
12412 if set $ans val -f; eval $csym; $val; then
12416 rp="I cannot find function $ans. Use that name anyway?"
12425 case "$randfunc" in
12427 drand01="drand48()"
12433 case "$randbits" in
12435 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12437 #$i_unistd I_UNISTD
12438 #$i_stdlib I_STDLIB
12441 # include <unistd.h>
12444 # include <stdlib.h>
12449 register unsigned long tmp;
12450 register unsigned long max = 0L;
12452 for (i = 1000; i; i--) {
12453 tmp = (unsigned long) $randfunc();
12454 if (tmp > max) max = tmp;
12456 for (i = 0; max; i++)
12462 if eval $compile_ok; then
12466 echo "(I can't seem to compile the test program...)"
12473 rp="How many bits does your $randfunc() function produce?"
12477 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12478 seedfunc="s$randfunc"
12479 randseedtype=unsigned
12483 rp="How many bits does your $randfunc() function produce?"
12486 seedfunc="s$randfunc"
12487 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12488 if set $seedfunc val -f; eval $csym; $val; then
12489 echo "(Using $seedfunc() to seed random generator)"
12491 echo "(Warning: no $seedfunc() to seed random generator)"
12494 randseedtype=unsigned
12502 echo "Determining whether or not we are on an EBCDIC system..." >&4
12503 $cat >tebcdic.c <<'EOM'
12506 if ('M'==0xd4) return 0;
12513 if eval $compile_ok; then
12515 echo "You have EBCDIC." >&4
12518 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12521 echo "I'm unable to compile the test program." >&4
12522 echo "I'll assume ASCII or some ISO Latin." >&4
12524 $rm -f tebcdic.c tebcdic
12530 Checking how to flush all pending stdio output...
12532 # I only know how to find the first 32 possibly open files on SunOS.
12533 # See also hints/sunos_4_1.sh and util.c --AD
12535 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12537 $cat >>try.c <<EOCP
12539 #$i_unistd I_UNISTD
12541 # include <unistd.h>
12543 #$d_sysconf HAS_SYSCONF
12544 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12545 #ifdef HAS_STDIO_STREAM_ARRAY
12546 # define STDIO_STREAM_ARRAY $stdio_stream_array
12549 FILE* p = fopen("try.out", "w");
12553 # ifdef TRY_FPRINTF
12557 #ifdef TRY_FFLUSH_NULL
12560 #ifdef TRY_FFLUSH_ALL
12562 long open_max = -1;
12563 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12564 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12566 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12567 open_max = sysconf(_SC_OPEN_MAX);
12570 open_max = FOPEN_MAX;
12573 open_max = OPEN_MAX;
12582 # ifdef HAS_STDIO_STREAM_ARRAY
12583 if (open_max > 0) {
12585 for (i = 0; i < open_max; i++)
12586 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12587 STDIO_STREAM_ARRAY[i]._file < open_max &&
12588 STDIO_STREAM_ARRAY[i]._flag)
12589 fflush(&STDIO_STREAM_ARRAY[i]);
12597 : first we have to find out how _not_ to flush
12598 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12600 set try -DTRY_FPUTC
12601 if eval $compile; then
12603 ./try$exe_ext 2>/dev/null
12604 if $test ! -s try.out -a "X$?" = X42; then
12610 set try -DTRY_FPRINTF
12612 if eval $compile; then
12614 ./try$exe_ext 2>/dev/null
12615 if $test ! -s try.out -a "X$?" = X42; then
12616 output=-DTRY_FPRINTF
12622 : check for fflush NULL behaviour
12623 case "$fflushNULL" in
12624 '') set try -DTRY_FFLUSH_NULL $output
12625 if eval $compile; then
12627 ./try$exe_ext 2>/dev/null
12629 if $test -s try.out -a "X$code" = X42; then
12630 fflushNULL="`$cat try.out`"
12632 if $test "X$code" != X42; then
12634 (If this test failed, don't worry, we'll try another method shortly.)
12639 $rm -f core try.core core.try.*
12640 case "$fflushNULL" in
12642 Your fflush(NULL) works okay for output streams.
12643 Let's see if it clobbers input pipes...
12645 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12646 # bug that improperly flushes the input end of pipes. So we avoid the
12647 # autoflush on fork/system/exec support for now. :-(
12648 $cat >tryp.c <<EOCP
12651 main(int argc, char **argv)
12657 while ((i = getc(stdin)) != -1
12658 && (*bp++ = i) != '\n'
12659 && bp < &buf[1024])
12662 fprintf(stdout, "%s", buf);
12670 fflushNULL="$define"
12672 if eval $compile; then
12674 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12675 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12677 fflush(NULL) seems to behave okay with input streams.
12679 fflushNULL="$define"
12682 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
12684 fflushNULL="$undef"
12687 $rm -f core tryp.c tryp.core core.tryp.*
12690 Your fflush(NULL) isn't working (contrary to ANSI C).
12692 fflushNULL="$undef"
12695 Cannot figure out whether your fflush(NULL) works or not.
12696 I'm assuming it doesn't (contrary to ANSI C).
12698 fflushNULL="$undef"
12702 $define|true|[yY]*)
12703 fflushNULL="$define"
12706 fflushNULL="$undef"
12709 : check explicit looping only if NULL did not work, and if the pipe
12710 : bug does not show up on an explicit flush too
12711 case "$fflushNULL" in
12713 $cat >tryp.c <<EOCP
12716 main(int argc, char **argv)
12722 while ((i = getc(stdin)) != -1
12723 && (*bp++ = i) != '\n'
12724 && bp < &buf[1024])
12727 fprintf(stdout, "%s", buf);
12736 if eval $compile; then
12738 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12739 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12741 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12743 : now check for fflushall behaviour
12744 case "$fflushall" in
12745 '') set try -DTRY_FFLUSH_ALL $output
12746 if eval $compile; then
12748 (Now testing the other method--but note that this also may fail.)
12751 ./try$exe_ext 2>/dev/null
12752 if $test -s try.out -a "X$?" = X42; then
12753 fflushall="`$cat try.out`"
12756 $rm -f core try.core core.try.*
12757 case "$fflushall" in
12759 Whew. Flushing explicitly all the stdio streams works.
12761 fflushall="$define"
12764 Sigh. Flushing explicitly all the stdio streams doesn't work.
12769 Cannot figure out whether flushing stdio streams explicitly works or not.
12770 I'm assuming it doesn't.
12776 "$define"|true|[yY]*)
12777 fflushall="$define"
12785 All is futile. Even fflush(stdin) clobbers input pipes!
12792 $rm -f core tryp.c tryp.core core.tryp.*
12794 *) fflushall="$undef"
12798 case "$fflushNULL$fflushall" in
12801 OK, I give up. I cannot figure out how to flush pending stdio output.
12802 We won't be flushing handles at all before fork/exec/popen.
12806 $rm -f try.* try$exe_ext
12808 : Store the full pathname to the ar program for use in the C program
12809 : Respect a hint or command line value for full_ar.
12814 : Store the full pathname to the sed program for use in the C program
12817 : see what type gids are declared as in the kernel
12819 echo "Looking for the type for group ids returned by getgid()."
12820 set gid_t gidtype xxx stdio.h sys/types.h
12824 xxx=`./findhdr sys/user.h`
12825 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12827 unsigned) dflt="$1 $2" ;;
12831 *) dflt="$gidtype";;
12834 gid_t) echo "gid_t found." ;;
12835 *) rp="What is the type for group ids returned by getgid()?"
12843 *_t) zzz="$gidtype" ;;
12846 echo "Checking the size of $zzz..." >&4
12848 #include <sys/types.h>
12851 printf("%d\n", (int)sizeof($gidtype));
12856 if eval $compile_ok; then
12860 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12863 echo "Your $zzz is $gidsize bytes long."
12868 echo "(I can't compile the test program--guessing $gidsize.)" >&4
12874 *_t) zzz="$gidtype" ;;
12877 echo "Checking the sign of $zzz..." >&4
12879 #include <sys/types.h>
12890 if eval $compile; then
12894 echo "(I can't execute the test program--guessing unsigned.)" >&4
12898 1) echo "Your $zzz is unsigned." ;;
12899 -1) echo "Your $zzz is signed." ;;
12905 echo "(I can't compile the test program--guessing unsigned.)" >&4
12911 if $test X"$quadtype" != X; then
12913 echo "Checking how to print 64-bit integers..." >&4
12915 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12916 $cat >try.c <<'EOCP'
12917 #include <sys/types.h>
12920 int q = 12345678901;
12921 printf("%ld\n", q);
12925 if eval $compile; then
12926 yyy=`./try$exe_ext`
12929 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12930 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12931 echo "We will use %d."
12937 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12938 $cat >try.c <<'EOCP'
12939 #include <sys/types.h>
12942 long q = 12345678901;
12943 printf("%ld\n", q);
12947 if eval $compile; then
12948 yyy=`./try$exe_ext`
12951 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12952 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12953 echo "We will use %ld."
12959 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12960 $cat >try.c <<'EOCP'
12961 #include <sys/types.h>
12962 #include <inttypes.h>
12965 int64_t q = 12345678901;
12966 printf("%" PRId64 "\n", q);
12970 if eval $compile; then
12971 yyy=`./try$exe_ext`
12974 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12975 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12976 echo "We will use the C9X style."
12982 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12983 $cat >try.c <<'EOCP'
12984 #include <sys/types.h>
12987 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12988 printf("%lld\n", q);
12992 if eval $compile; then
12993 yyy=`./try$exe_ext`
12996 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12997 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12998 echo "We will use the %lld style."
13004 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13006 #include <sys/types.h>
13009 $quadtype q = 12345678901;
13010 printf("%Ld\n", q);
13014 if eval $compile; then
13015 yyy=`./try$exe_ext`
13018 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13019 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13020 echo "We will use %Ld."
13026 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13028 #include <sys/types.h>
13031 $quadtype q = 12345678901;
13032 printf("%qd\n", q);
13036 if eval $compile; then
13037 yyy=`./try$exe_ext`
13040 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13041 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13042 echo "We will use %qd."
13048 if $test X"$sPRId64" = X; then
13049 echo "Cannot figure out how to print 64-bit integers." >&4
13057 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13058 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
13060 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13061 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
13067 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13069 if $test X"$ivsize" = X8; then
13070 ivdformat="$sPRId64"
13071 uvuformat="$sPRIu64"
13072 uvoformat="$sPRIo64"
13073 uvxformat="$sPRIx64"
13075 if $test X"$ivsize" = X"$longsize"; then
13081 if $test X"$ivsize" = X"$intsize"; then
13088 if $test X"$ivsize" = X"$shortsize"; then
13098 case "$ivdformat" in
13099 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13106 $echo "Checking the format string to be used for gids..." >&4
13109 -1) if $test X"$gidsize" = X"$ivsize"; then
13110 gidformat="$ivdformat"
13112 if $test X"$gidsize" = X"$longsize"; then
13115 if $test X"$gidsize" = X"$intsize"; then
13118 if $test X"$gidsize" = X"$shortsize"; then
13125 *) if $test X"$gidsize" = X"$uvsize"; then
13126 gidformat="$uvuformat"
13128 if $test X"$gidsize" = X"$longsize"; then
13131 if $test X"$gidsize" = X"$intsize"; then
13134 if $test X"$gidsize" = X"$shortsize"; then
13143 : see if getgroups exists
13144 set getgroups d_getgrps
13147 : see if setgroups exists
13148 set setgroups d_setgrps
13152 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13154 case "$d_getgrps$d_setgrps" in
13156 case "$groupstype" in
13157 '') dflt="$gidtype" ;;
13158 *) dflt="$groupstype" ;;
13161 What type of pointer is the second argument to getgroups() and setgroups()?
13162 Usually this is the same as group ids, $gidtype, but not always.
13165 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13169 *) groupstype="$gidtype";;
13173 echo "Checking if your $make program sets \$(MAKE)..." >&4
13174 case "$make_set_make" in
13176 $sed 's/^X //' > testmake.mak << 'EOF'
13178 X @echo 'maketemp="$(MAKE)"'
13180 case "`$make -f testmake.mak 2>/dev/null`" in
13181 *maketemp=*) make_set_make='#' ;;
13182 *) make_set_make="MAKE=$make" ;;
13184 $rm -f testmake.mak
13187 case "$make_set_make" in
13188 '#') echo "Yup, it does.";;
13189 *) echo "Nope, it doesn't.";;
13192 : see what type is used for mode_t
13193 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13194 set mode_t modetype int stdio.h sys/types.h
13197 : define a fucntion to check prototypes
13198 $cat > protochk <<EOSH
13201 optimize="$optimize"
13203 prototype="$prototype"
13208 $cat >> protochk <<'EOSH'
13213 while test $# -ge 2; do
13215 $define) echo "#include <$2>" >> try.c ;;
13216 literal) echo "$2" >> try.c ;;
13220 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13221 cat >> try.c <<'EOCP'
13222 #ifdef CAN_PROTOTYPE
13223 #define _(args) args
13228 echo "$foo" >> try.c
13229 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13230 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13236 $eunicefix protochk
13238 : see what type is used for size_t
13239 rp="What is the type used for the length parameter for string functions?"
13240 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13243 : check for type of arguments to gethostbyaddr.
13244 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13245 case "$d_gethbyaddr" in
13249 Checking to see what type of arguments are accepted by gethostbyaddr().
13251 hdrs="$define sys/types.h
13252 $d_socket sys/socket.h
13253 $i_niin netinet/in.h
13255 $i_unistd unistd.h"
13256 : The first arg can 'char *' or 'void *'
13257 : The second arg is some of integral type
13258 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13259 for yyy in size_t long int; do
13260 case "$netdb_host_type" in
13261 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13262 if ./protochk "$try" $hdrs; then
13263 echo "Your system accepts $xxx for the first arg."
13264 echo "...and $yyy for the second arg."
13265 netdb_host_type="$xxx"
13266 netdb_hlen_type="$yyy"
13272 : In case none of those worked, prompt the user.
13273 case "$netdb_host_type" in
13274 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13277 netdb_host_type=$ans
13278 rp='What is the type for the 2nd argument to gethostbyaddr?'
13281 netdb_hlen_type=$ans
13285 *) : no gethostbyaddr, so pick harmless defaults
13286 netdb_host_type='char *'
13287 netdb_hlen_type="$sizetype"
13290 # Remove the "const" if needed. -- but then we'll have a
13292 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13295 : check for type of argument to gethostbyname.
13296 if test "X$netdb_name_type" = X ; then
13297 case "$d_gethbyname" in
13301 Checking to see what type of argument is accepted by gethostbyname().
13303 hdrs="$define sys/types.h
13304 $d_socket sys/socket.h
13305 $i_niin netinet/in.h
13307 $i_unistd unistd.h"
13308 for xxx in "const char *" "char *"; do
13309 case "$netdb_name_type" in
13310 '') try="extern struct hostent *gethostbyname($xxx);"
13311 if ./protochk "$try" $hdrs; then
13312 echo "Your system accepts $xxx."
13313 netdb_name_type="$xxx"
13318 : In case none of those worked, prompt the user.
13319 case "$netdb_name_type" in
13320 '') rp='What is the type for the 1st argument to gethostbyname?'
13323 netdb_name_type=$ans
13327 *) : no gethostbyname, so pick harmless default
13328 netdb_name_type='char *'
13333 : check for type of 1st argument to getnetbyaddr.
13334 if test "X$netdb_net_type" = X ; then
13335 case "$d_getnbyaddr" in
13339 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13341 hdrs="$define sys/types.h
13342 $d_socket sys/socket.h
13343 $i_niin netinet/in.h
13345 $i_unistd unistd.h"
13346 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13347 case "$netdb_net_type" in
13348 '') try="extern struct netent *getnetbyaddr($xxx, int);"
13349 if ./protochk "$try" $hdrs; then
13350 echo "Your system accepts $xxx."
13351 netdb_net_type="$xxx"
13356 : In case none of those worked, prompt the user.
13357 case "$netdb_net_type" in
13358 '') rp='What is the type for the 1st argument to getnetbyaddr?'
13361 netdb_net_type=$ans
13365 *) : no getnetbyaddr, so pick harmless default
13366 netdb_net_type='long'
13370 : locate the preferred pager for this system
13384 '') dflt=/usr/ucb/more;;
13391 rp='What pager is used on your system?'
13395 : see what type pids are declared as in the kernel
13396 rp="What is the type of process ids on this system?"
13397 set pid_t pidtype int stdio.h sys/types.h
13400 : Find earliest binary compatible site_perl subdirectory perl can use.
13401 case "$bincompat5005" in
13402 "$define") xs_apiversion='5.005' ;;
13403 *) xs_apiversion=$version ;; # The current site_perl version.
13405 : Find earliest pure perl site_perl subdirectory perl can use.
13406 : The versioned directories started at 5.005.
13407 pm_apiversion='5.005'
13409 : check for length of pointer
13413 echo "Checking to see how big your pointers are..." >&4
13414 if test "$voidflags" -gt 7; then
13415 echo '#define VOID_PTR char *' > try.c
13417 echo '#define VOID_PTR void *' > try.c
13419 $cat >>try.c <<'EOCP'
13423 printf("%d\n", (int)sizeof(VOID_PTR));
13428 if eval $compile_ok; then
13430 echo "Your pointers are $ptrsize bytes long."
13433 echo "(I can't seem to compile the test program. Guessing...)" >&4
13434 rp="What is the size of a pointer (in bytes)?"
13442 : see if ar generates random libraries by itself
13444 echo "Checking how to generate random libraries on your machine..." >&4
13445 echo 'int bar1() { return bar2(); }' > bar1.c
13446 echo 'int bar2() { return 2; }' > bar2.c
13447 $cat > foo.c <<'EOP'
13448 int main() { printf("%d\n", bar1()); exit(0); }
13450 $cc $ccflags -c bar1.c >/dev/null 2>&1
13451 $cc $ccflags -c bar2.c >/dev/null 2>&1
13452 $cc $ccflags -c foo.c >/dev/null 2>&1
13453 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13454 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13455 ./foobar >/dev/null 2>&1; then
13456 echo "$ar appears to generate random libraries itself."
13459 elif $ar ts bar$_a >/dev/null 2>&1 &&
13460 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13461 ./foobar >/dev/null 2>&1; then
13462 echo "a table of contents needs to be added with '$ar ts'."
13469 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13470 $test -f $ranlib || ranlib=''
13473 if $test -n "$ranlib"; then
13474 echo "your system has '$ranlib'; we'll use that."
13477 echo "your system doesn't seem to support random libraries"
13478 echo "so we'll use lorder and tsort to order the libraries."
13485 : check for type of arguments to select.
13486 case "$selecttype" in
13487 '') case "$d_select" in
13491 Checking to see what type of arguments are accepted by select().
13493 hdrs="$define sys/types.h
13494 $i_systime sys/time.h
13495 $i_sysselct sys/select.h
13496 $d_socket sys/socket.h"
13497 : The first arg can be int, unsigned, or size_t
13498 : The last arg may or may not be 'const'
13500 : void pointer has been seen but using that
13501 : breaks the selectminbits test
13502 for xxx in 'fd_set *' 'int *'; do
13503 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13504 for tmo in 'struct timeval *' 'const struct timeval *'; do
13506 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13507 if ./protochk "$try" $hdrs; then
13508 echo "Your system accepts $xxx."
13517 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13518 case "$d_fd_set" in
13519 $define) dflt="fd_set *" ;;
13528 *) : no select, so pick a harmless default
13535 : check for the select 'width'
13536 case "$selectminbits" in
13537 '') case "$d_select" in
13541 Checking to see on how many bits at a time your select() operates...
13544 #include <sys/types.h>
13546 #$i_systime I_SYS_TIME
13547 #$i_systimek I_SYS_TIME_KERNEL
13552 # ifdef I_SYS_TIME_KERNEL
13555 # include <sys/time.h>
13556 # ifdef I_SYS_TIME_KERNEL
13560 #$i_sysselct I_SYS_SELECT
13561 #ifdef I_SYS_SELECT
13562 #include <sys/select.h>
13564 #$d_socket HAS_SOCKET
13566 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13570 #define S sizeof(*(b))
13572 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13573 #define NBITS (NBYTES * 8)
13582 fp = fopen("try.c", "r");
13588 b = ($selecttype)s;
13589 for (i = 0; i < NBITS; i++)
13593 select(fd + 1, b, 0, 0, &t);
13594 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13595 printf("%d\n", i + 1);
13600 if eval $compile_ok; then
13601 selectminbits=`./try`
13602 case "$selectminbits" in
13604 Cannot figure out on how many bits at a time your select() operates.
13605 I'll play safe and guess it is 32 bits.
13611 *) bits="$selectminbits bits" ;;
13613 echo "Your select() operates on $bits at a time." >&4
13615 rp='What is the minimum number of bits your select() operates on?'
13616 case "$byteorder" in
13617 1234|12345678) dflt=32 ;;
13622 selectminbits="$val"
13626 *) : no select, so pick a harmless default
13633 : Trace out the files included by signal.h, then look for SIGxxx names.
13634 : Remove SIGARRAYSIZE used by HPUX.
13635 : Remove SIGSTKSIZE used by Linux.
13636 : Remove SIGSTKSZ used by Posix.
13637 : Remove SIGTYP void lines used by OS2.
13638 : Some cpps, like os390, dont give the file name anywhere
13639 if [ "X$fieldn" = X ]; then
13640 : Just make some guesses. We check them later.
13641 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13643 xxx=`echo '#include <signal.h>' |
13644 $cppstdin $cppminus $cppflags 2>/dev/null |
13645 $grep '^[ ]*#.*include' |
13646 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13648 : Check this list of files to be sure we have parsed the cpp output ok.
13649 : This will also avoid potentially non-existent files, such
13652 for xx in $xxx /dev/null ; do
13653 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13655 : If we have found no files, at least try signal.h
13656 case "$xxxfiles" in
13657 '') xxxfiles=`./findhdr signal.h` ;;
13660 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13661 print substr($2, 4, 20)
13663 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13664 print substr($3, 4, 20)
13666 : Append some common names just in case the awk scan failed.
13667 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13668 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13669 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13670 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13671 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13673 : generate a few handy files for later
13674 $cat > signal.c <<'EOCP'
13675 #include <sys/types.h>
13676 #include <signal.h>
13680 /* Strange style to avoid deeply-nested #if/#else/#endif */
13683 # define NSIG (_NSIG)
13689 # define NSIG (SIGMAX+1)
13695 # define NSIG (SIG_MAX+1)
13701 # define NSIG (MAXSIG+1)
13707 # define NSIG (MAX_SIG+1)
13712 # ifdef SIGARRAYSIZE
13713 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13719 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13723 /* Default to some arbitrary number that's big enough to get most
13724 of the common signals.
13730 printf("NSIG %d\n", NSIG);
13736 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13738 printf "#ifdef SIG"; printf $1; printf "\n"
13739 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13740 printf $1; printf ");\n"
13744 printf "#endif /* JUST_NSIG */\n";
13745 printf "exit(0);\n}\n";
13748 $cat >signal.awk <<'EOP'
13749 BEGIN { ndups = 0 }
13750 $1 ~ /^NSIG$/ { nsig = $2 }
13751 ($1 !~ /^NSIG$/) && (NF == 2) {
13752 if ($2 > maxsig) { maxsig = $2 }
13753 if (sig_name[$2]) {
13754 dup_name[ndups] = $1
13755 dup_num[ndups] = $2
13767 printf("NSIG %d\n", nsig);
13768 for (n = 1; n < nsig; n++) {
13770 printf("%s %d\n", sig_name[n], sig_num[n])
13773 printf("NUM%d %d\n", n, n)
13776 for (n = 0; n < ndups; n++) {
13777 printf("%s %d\n", dup_name[n], dup_num[n])
13781 $cat >signal_cmd <<EOS
13783 if $test -s signal.lst; then
13784 echo "Using your existing signal.lst file"
13789 $cat >>signal_cmd <<'EOS'
13792 if eval $compile_ok; then
13793 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13795 echo "(I can't seem be able to compile the whole test program)" >&4
13796 echo "(I'll try it in little pieces.)" >&4
13797 set signal -DJUST_NSIG
13798 if eval $compile_ok; then
13799 ./signal$_exe > signal.nsg
13802 echo "I can't seem to figure out how many signals you have." >&4
13803 echo "Guessing 50." >&4
13804 echo 'NSIG 50' > signal.nsg
13806 : Now look at all the signal names, one at a time.
13807 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13808 $cat > signal.c <<EOCP
13809 #include <sys/types.h>
13810 #include <signal.h>
13813 printf("$xx %d\n", SIG${xx});
13818 if eval $compile; then
13819 echo "SIG${xx} found."
13820 ./signal$_exe >> signal.ls1
13822 echo "SIG${xx} NOT found."
13825 if $test -s signal.ls1; then
13826 $cat signal.nsg signal.ls1 |
13827 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13831 if $test -s signal.lst; then
13834 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13835 echo 'kill -l' >signal
13836 set X `csh -f <signal`
13840 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13842 echo $@ | $tr ' ' $trnl | \
13843 $awk '{ printf "%s %d\n", $1, ++s; }
13844 END { printf "NSIG %d\n", ++s }' >signal.lst
13846 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13848 chmod a+x signal_cmd
13849 $eunicefix signal_cmd
13851 : generate list of signal names
13853 case "$sig_name_init" in
13855 *) case "$sig_num_init" in
13856 ''|*,*) doinit=yes ;;
13861 echo "Generating a list of signal names and numbers..." >&4
13863 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13864 sig_name=`$awk 'BEGIN { printf "ZERO " }
13865 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13866 sig_num=`$awk 'BEGIN { printf "0 " }
13867 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13868 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
13869 !/^NSIG/ { printf "\"%s\", ", $1 }
13870 END { printf "0\n" }' signal.lst`
13871 sig_num_init=`$awk 'BEGIN { printf "0, " }
13872 !/^NSIG/ { printf "%d, ", $2}
13873 END { printf "0\n"}' signal.lst`
13876 echo "The following $sig_count signals are available:"
13878 echo $sig_name | $awk \
13879 'BEGIN { linelen = 0 }
13881 for (i = 1; i <= NF; i++) {
13882 name = "SIG" $i " "
13883 linelen = linelen + length(name)
13884 if (linelen > 70) {
13886 linelen = length(name)
13892 $rm -f signal signal.c signal.awk signal.lst signal_cmd
13895 case "$sizetype" in
13896 *_t) zzz="$sizetype" ;;
13897 *) zzz="filesize" ;;
13899 echo "Checking the size of $zzz..." >&4
13901 #include <sys/types.h>
13904 printf("%d\n", (int)sizeof($sizetype));
13909 if eval $compile_ok; then
13913 echo "(I can't execute the test program--guessing $sizesize.)" >&4
13916 echo "Your $zzz size is $sizesize bytes."
13921 echo "(I can't compile the test program--guessing $sizesize.)" >&4
13925 : check for socklen_t
13927 echo "Checking to see if you have socklen_t..." >&4
13929 #include <sys/types.h>
13930 #$d_socket HAS_SOCKET
13932 #include <sys/socket.h>
13934 int main() { socklen_t x = 16; }
13937 if eval $compile; then
13939 echo "You have socklen_t."
13942 echo "You do not have socklen_t."
13943 case "$sizetype" in
13944 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
13951 : check for type of the size argument to socket calls
13952 case "$d_socket" in
13956 Checking to see what type is the last argument of accept().
13958 hdrs="$define sys/types.h $d_socket sys/socket.h"
13960 case "$d_socklen_t" in
13961 "$define") yyy="$yyy socklen_t"
13963 yyy="$yyy $sizetype int long unsigned"
13964 for xxx in $yyy; do
13965 case "$socksizetype" in
13966 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
13967 if ./protochk "$try" $hdrs; then
13968 echo "Your system accepts '$xxx *' for the last argument of accept()."
13969 socksizetype="$xxx"
13974 : In case none of those worked, prompt the user.
13975 case "$socksizetype" in
13976 '') rp='What is the type for socket address structure sizes?'
13983 *) : no sockets, so pick relatively harmless default
13988 : see what type is used for signed size_t
13989 set ssize_t ssizetype int stdio.h sys/types.h
13992 $cat > ssize.c <<EOM
13994 #include <sys/types.h>
13995 #define Size_t $sizetype
13996 #define SSize_t $dflt
13999 if (sizeof(Size_t) == sizeof(SSize_t))
14001 else if (sizeof(Size_t) == sizeof(int))
14010 if eval $compile_ok && ./ssize > /dev/null; then
14011 ssizetype=`./ssize`
14012 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14015 Help! I can't compile and run the ssize_t test program: please enlighten me!
14016 (This is probably a misconfiguration in your system or libraries, and
14017 you really ought to fix it. Still, I'll try anyway.)
14019 I need a type that is the same size as $sizetype, but is guaranteed to
14020 be signed. Common values are ssize_t, int and long.
14023 rp="What signed type is the same size as $sizetype?"
14027 $rm -f ssize ssize.*
14029 : see what type of char stdio uses.
14031 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14032 echo "Your stdio uses unsigned chars." >&4
14033 stdchar="unsigned char"
14035 echo "Your stdio uses signed chars." >&4
14039 : see if time exists
14041 if test "X$d_time" = X -o X"$timetype" = X; then
14042 if set time val -f d_time; eval $csym; $val; then
14043 echo 'time() found.' >&4
14045 rp="What is the type returned by time() on this system?"
14046 set time_t timetype long stdio.h sys/types.h
14049 echo 'time() not found, hope that will do.' >&4
14057 : see what type uids are declared as in the kernel
14059 echo "Looking for the type for user ids returned by getuid()."
14060 set uid_t uidtype xxx stdio.h sys/types.h
14064 xxx=`./findhdr sys/user.h`
14065 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14067 unsigned) dflt="$1 $2" ;;
14071 *) dflt="$uidtype";;
14074 uid_t) echo "uid_t found." ;;
14075 *) rp="What is the type for user ids returned by getuid()?"
14083 *_t) zzz="$uidtype" ;;
14086 echo "Checking the size of $zzz..." >&4
14088 #include <sys/types.h>
14091 printf("%d\n", (int)sizeof($uidtype));
14096 if eval $compile_ok; then
14100 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14103 echo "Your $zzz is $uidsize bytes long."
14108 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14113 *_t) zzz="$uidtype" ;;
14116 echo "Checking the sign of $zzz..." >&4
14118 #include <sys/types.h>
14129 if eval $compile; then
14133 echo "(I can't execute the test program--guessing unsigned.)" >&4
14137 1) echo "Your $zzz is unsigned." ;;
14138 -1) echo "Your $zzz is signed." ;;
14144 echo "(I can't compile the test program--guessing unsigned.)" >&4
14150 $echo "Checking the format string to be used for uids..." >&4
14153 -1) if $test X"$uidsize" = X"$ivsize"; then
14154 uidformat="$ivdformat"
14156 if $test X"$uidsize" = X"$longsize"; then
14159 if $test X"$uidsize" = X"$intsize"; then
14162 if $test X"$uidsize" = X"$shortsize"; then
14169 *) if $test X"$uidsize" = X"$uvsize"; then
14170 uidformat="$uvuformat"
14172 if $test X"$uidsize" = X"$longsize"; then
14175 if $test X"$uidsize" = X"$intsize"; then
14178 if $test X"$uidsize" = X"$shortsize"; then
14187 : see if dbm.h is available
14188 : see if dbmclose exists
14189 set dbmclose d_dbmclose
14192 case "$d_dbmclose" in
14202 *) set rpcsvc/dbm.h i_rpcsvcdbm
14207 *) echo "We won't be including <dbm.h>"
14217 : see if this is a sys/file.h system
14222 : do we need to include sys/file.h ?
14226 if $h_sysfile; then
14228 echo "We'll be including <sys/file.h>." >&4
14231 echo "We won't be including <sys/file.h>." >&4
14241 : see if fcntl.h is there
14246 : see if we can include fcntl.h
14252 echo "We'll be including <fcntl.h>." >&4
14255 if $h_sysfile; then
14256 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14258 echo "We won't be including <fcntl.h>." >&4
14270 : see if this is a iconv.h system
14271 set iconv.h i_iconv
14274 : see if this is a ieeefp.h system
14275 set ieeefp.h i_ieeefp
14278 : see if locale.h is available
14279 set locale.h i_locale
14282 : see if mach cthreads are available
14283 if test "X$usethreads" = "X$define"; then
14284 set mach/cthreads.h i_machcthr
14287 i_machcthr="$undef"
14292 : see if this is a math.h system
14296 : see if this is a mntent.h system
14297 set mntent.h i_mntent
14300 : see if ndbm.h is available
14305 : see if dbm_open exists
14306 set dbm_open d_dbm_open
14308 case "$d_dbm_open" in
14311 echo "We won't be including <ndbm.h>"
14320 : see if net/errno.h is available
14322 set net/errno.h val
14325 : Unfortunately, it causes problems on some systems. Arrgh.
14328 cat > try.c <<'EOM'
14331 #include <net/errno.h>
14337 if $cc $ccflags -c try.c >/dev/null 2>&1; then
14338 echo "We'll be including <net/errno.h>." >&4
14340 echo "We won't be including <net/errno.h>." >&4
14349 : see if netinet/tcp.h is available
14350 set netinet/tcp.h i_netinettcp
14353 : see if this is a poll.h system
14357 : see if this is a prot.h system
14361 : see if this is a prot.h system
14366 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
14367 $cat <<'EOSH' > Cppsym.know
14368 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14369 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14370 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14371 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14372 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14373 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14374 bull c cadmus clipper CMU COFF COMPILER_VERSION
14375 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14376 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14377 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14378 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14379 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14380 H3050R H3050RX hbullx20 hcx host_mips
14381 hp200 hp300 hp700 HP700 hp800 hp9000
14382 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14383 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14384 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14385 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14386 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14387 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14388 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14389 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14390 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14391 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14392 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14393 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14394 MATH_HAS_NO_SIDE_EFFECTS
14395 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14396 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14397 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14398 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14399 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14400 NetBSD news1500 news1700 news1800 news1900 news3700
14401 news700 news800 news900 NeXT NLS ns16000 ns32000
14402 ns32016 ns32332 ns32k nsc32000
14403 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14404 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14405 pc532 pdp11 PGC PIC plexus PORTAR posix
14406 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14407 POSIX_C_SOURCE POSIX_SOURCE POWER
14408 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14409 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14410 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14411 sony sony_news sonyrisc sparc sparclite spectrum
14412 stardent stdc STDC_EXT stratos sun sun3 sun386
14413 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14414 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14415 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14416 sysV68 sysV88 Tek4132 Tek4300 titan
14417 tower tower32 tower32_200 tower32_600 tower32_700
14418 tower32_800 tower32_850 tss
14419 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14420 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14421 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14422 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14423 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14424 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14427 # Maybe put other stuff here too.
14428 cat <<EOSH >>Cppsym.know
14431 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14432 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14433 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14434 $rm -f Cppsym.a Cppsym.b
14435 cat <<EOSH > Cppsym
14437 if $test \$# -gt 0; then
14438 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14439 if $test -s Cppsym.got; then
14446 $tr " " "$trnl" | ./Cppsym.try
14452 cat <<EOSH > Cppsym.try
14454 cat <<'EOCP' > try.c
14460 cat <<'EOSH' >> Cppsym.try
14462 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
14463 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
14464 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
14465 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
14469 cat <<EOSH >> Cppsym.try
14471 case "$osname-$gccversion" in
14472 irix-) ccflags="\$ccflags -woff 1178" ;;
14474 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14476 chmod +x Cppsym.try
14477 $eunicefix Cppsym.try
14478 ./Cppsym < Cppsym.know > Cppsym.true
14479 : now check the C compiler for additional symbols
14480 postprocess_cc_v=''
14482 aix) postprocess_cc_v="|$tr , ' '" ;;
14489 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14492 -D*) echo "\$i" | $sed 's/^-D//';;
14493 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14498 postprocess_cc_v=''
14501 ./ccsym > ccsym1.raw
14502 if $test -s ccsym1.raw; then
14503 $sort ccsym1.raw | $uniq >ccsym.raw
14505 mv ccsym1.raw ccsym.raw
14508 $awk '/\=/ { print $0; next }
14509 { print $0"=1" }' ccsym.raw >ccsym.list
14510 $awk '/\=/ { print $0; next }
14511 { print $0"=1" }' Cppsym.true >ccsym.true
14512 $comm -13 ccsym.true ccsym.list >ccsym.own
14513 $comm -12 ccsym.true ccsym.list >ccsym.com
14514 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14516 if $test -z ccsym.raw; then
14517 echo "Your C compiler doesn't seem to define any symbols!" >&4
14519 echo "However, your C preprocessor defines the following symbols:"
14522 cppsymbols=`$cat Cppsym.true`
14523 cppsymbols=`echo $cppsymbols`
14524 cppccsymbols="$cppsymbols"
14526 if $test -s ccsym.com; then
14527 echo "Your C compiler and pre-processor define these symbols:"
14528 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14531 cppccsymbols=`$cat ccsym.com`
14532 cppccsymbols=`echo $cppccsymbols`
14533 $test "$silent" || sleep 1
14535 if $test -s ccsym.cpp; then
14536 $test "$also" && echo " "
14537 echo "Your C pre-processor ${also}defines the following symbols:"
14538 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14540 cppsymbols=`$cat ccsym.cpp`
14541 cppsymbols=`echo $cppsymbols`
14542 $test "$silent" || sleep 1
14544 if $test -s ccsym.own; then
14545 $test "$also" && echo " "
14546 echo "Your C compiler ${also}defines the following cpp symbols:"
14547 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14548 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14549 ccsymbols=`$cat ccsym.own`
14550 ccsymbols=`echo $ccsymbols`
14551 $test "$silent" || sleep 1
14556 : see if this is a termio system
14560 if $test `./findhdr termios.h`; then
14561 set tcsetattr i_termios
14567 "$define") echo "You have POSIX termios.h... good!" >&4;;
14568 *) if ./Cppsym pyr; then
14569 case "`/bin/universe`" in
14570 ucb) if $test `./findhdr sgtty.h`; then
14572 echo "<sgtty.h> found." >&4
14574 echo "System is pyramid with BSD universe."
14575 echo "<sgtty.h> not found--you could have problems." >&4
14577 *) if $test `./findhdr termio.h`; then
14579 echo "<termio.h> found." >&4
14581 echo "System is pyramid with USG universe."
14582 echo "<termio.h> not found--you could have problems." >&4
14586 if $test `./findhdr termio.h`; then
14587 echo "<termio.h> found." >&4
14589 elif $test `./findhdr sgtty.h`; then
14590 echo "<sgtty.h> found." >&4
14593 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14596 if $test `./findhdr sgtty.h`; then
14597 echo "<sgtty.h> found." >&4
14599 elif $test `./findhdr termio.h`; then
14600 echo "<termio.h> found." >&4
14603 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14607 set i_termio; eval $setvar
14608 val=$val2; set i_sgtty; eval $setvar
14609 val=$val3; set i_termios; eval $setvar
14611 : see if this is a shadow.h system
14612 set shadow.h i_shadow
14615 : see if this is a socks.h system
14616 set socks.h i_socks
14619 : see if stdarg is available
14621 if $test `./findhdr stdarg.h`; then
14622 echo "<stdarg.h> found." >&4
14625 echo "<stdarg.h> NOT found." >&4
14629 : see if varags is available
14631 if $test `./findhdr varargs.h`; then
14632 echo "<varargs.h> found." >&4
14634 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14637 : set up the varargs testing programs
14638 $cat > varargs.c <<EOP
14640 #include <stdarg.h>
14643 #include <varargs.h>
14647 int f(char *p, ...)
14661 p = va_arg(ap, char *);
14666 $cat > varargs <<EOP
14668 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14677 : now check which varargs header should be included
14682 if `./varargs I_STDARG`; then
14684 elif `./varargs I_VARARGS`; then
14689 if `./varargs I_VARARGS`; then
14696 echo "I could not find the definition for va_dcl... You have problems..." >&4
14697 val="$undef"; set i_stdarg; eval $setvar
14698 val="$undef"; set i_varargs; eval $setvar
14703 case "$i_varhdr" in
14705 val="$define"; set i_stdarg; eval $setvar
14706 val="$undef"; set i_varargs; eval $setvar
14709 val="$undef"; set i_stdarg; eval $setvar
14710 val="$define"; set i_varargs; eval $setvar
14713 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14717 : see if stddef is available
14718 set stddef.h i_stddef
14721 : see if this is a sunmath.h system
14722 set sunmath.h i_sunmath
14725 : see if sys/access.h is available
14726 set sys/access.h i_sysaccess
14729 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14730 set sys/filio.h i_sysfilio
14733 if $test `./findhdr sys/ioctl.h`; then
14735 echo '<sys/ioctl.h> found.' >&4
14738 if $test $i_sysfilio = "$define"; then
14739 echo '<sys/ioctl.h> NOT found.' >&4
14741 $test $i_sgtty = "$define" && xxx="sgtty.h"
14742 $test $i_termio = "$define" && xxx="termio.h"
14743 $test $i_termios = "$define" && xxx="termios.h"
14744 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14751 : see if this is a syslog.h system
14752 set syslog.h i_syslog
14756 : see if this is a sys/mode.h system
14757 set sys/mode.h i_sysmode
14760 : see if sys/resource.h has to be included
14761 set sys/resource.h i_sysresrc
14764 : see if sys/security.h is available
14765 set sys/security.h i_syssecrt
14768 : see if this is a sys/statvfs.h system
14769 set sys/statvfs.h i_sysstatvfs
14772 : see if this is a sys/uio.h system
14773 set sys/uio.h i_sysuio
14776 : see if this is a sys/un.h system
14777 set sys/un.h i_sysun
14781 : see if this is a sys/utsname.h system
14782 set sys/utsname.h i_sysutsname
14785 : see if this is a syswait system
14786 set sys/wait.h i_syswait
14789 : see if this is a ustat.h system
14790 set ustat.h i_ustat
14793 : see if this is an utime system
14794 set utime.h i_utime
14797 : see if this is a values.h system
14798 set values.h i_values
14801 : see if this is a vfork system
14804 set vfork.h i_vfork
14812 : see if gdbm.h is available
14817 : see if gdbm_open exists
14818 set gdbm_open d_gdbm_open
14820 case "$d_gdbm_open" in
14823 echo "We won't be including <gdbm.h>"
14833 echo "Looking for extensions..." >&4
14834 : If we are using the old config.sh, known_extensions may contain
14835 : old or inaccurate or duplicate values.
14836 known_extensions=''
14837 nonxs_extensions=''
14838 : We do not use find because it might not be available.
14839 : We do not just use MANIFEST because the user may have dropped
14840 : some additional extensions into the source tree and expect them
14843 : Function to recursively find available extensions, ignoring DynaLoader
14844 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14848 DynaLoader|dynaload) ;;
14850 if $test -f $xxx/$xxx.xs; then
14851 known_extensions="$known_extensions $1$xxx";
14852 elif $test -f $xxx/Makefile.PL; then
14853 nonxs_extensions="$nonxs_extensions $1$xxx";
14855 if $test -d $xxx -a $# -lt 10; then
14858 eval $find_extensions;
14870 eval $find_extensions
14871 set X $nonxs_extensions
14873 nonxs_extensions="$*"
14874 set X $known_extensions
14876 known_extensions="$*"
14879 : Now see which are supported on this system.
14881 for xxx in $known_extensions ; do
14885 $define) avail_ext="$avail_ext $xxx" ;;
14888 GDBM_File|gdbm_fil)
14890 $define) avail_ext="$avail_ext $xxx" ;;
14893 NDBM_File|ndbm_fil)
14896 case "$osname-$use64bitint" in
14899 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14902 *) avail_ext="$avail_ext $xxx" ;;
14907 ODBM_File|odbm_fil)
14908 case "${i_dbm}${i_rpcsvcdbm}" in
14910 case "$osname-$use64bitint" in
14913 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14916 *) avail_ext="$avail_ext $xxx" ;;
14922 case "$useposix" in
14923 true|define|y) avail_ext="$avail_ext $xxx" ;;
14927 case "$useopcode" in
14928 true|define|y) avail_ext="$avail_ext $xxx" ;;
14932 case "$d_socket" in
14933 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14937 case "$usethreads" in
14938 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14942 : XXX Do we need a useipcsysv variable here
14943 case "${d_msg}${d_sem}${d_shm}" in
14944 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14947 *) avail_ext="$avail_ext $xxx"
14956 : Now see which nonxs extensions are supported on this system.
14957 : For now assume all are.
14959 for xxx in $nonxs_extensions ; do
14961 *) nonxs_ext="$nonxs_ext $xxx"
14973 A number of extensions are supplied with $package. You may choose to
14974 compile these extensions for dynamic loading (the default), compile
14975 them into the $package executable (static loading), or not include
14976 them at all. Answer "none" to include no extensions.
14977 Note that DynaLoader is always built and need not be mentioned here.
14980 case "$dynamic_ext" in
14981 '') dflt="$avail_ext" ;;
14982 *) dflt="$dynamic_ext"
14983 # Perhaps we are reusing an old out-of-date config.sh.
14986 if test X"$dynamic_ext" != X"$avail_ext"; then
14988 NOTICE: Your previous config.sh list may be incorrect.
14989 The extensions now available to you are
14991 but the default list from your previous config.sh is
15003 rp="What extensions do you wish to load dynamically?"
15006 none) dynamic_ext=' ' ;;
15007 *) dynamic_ext="$ans" ;;
15010 case "$static_ext" in
15012 : Exclude those already listed in dynamic linking
15014 for xxx in $avail_ext; do
15015 case " $dynamic_ext " in
15017 *) dflt="$dflt $xxx" ;;
15024 *) dflt="$static_ext"
15031 rp="What extensions do you wish to load statically?"
15034 none) static_ext=' ' ;;
15035 *) static_ext="$ans" ;;
15040 A number of extensions are supplied with $package. Answer "none"
15041 to include no extensions.
15042 Note that DynaLoader is always built and need not be mentioned here.
15045 case "$static_ext" in
15046 '') dflt="$avail_ext" ;;
15047 *) dflt="$static_ext"
15048 # Perhaps we are reusing an old out-of-date config.sh.
15051 if test X"$static_ext" != X"$avail_ext"; then
15053 NOTICE: Your previous config.sh list may be incorrect.
15054 The extensions now available to you are
15056 but the default list from your previous config.sh is
15065 : Exclude those that are not xs extensions
15069 rp="What extensions do you wish to include?"
15072 none) static_ext=' ' ;;
15073 *) static_ext="$ans" ;;
15078 set X $dynamic_ext $static_ext $nonxs_ext
15082 : Remove build directory name from cppstdin so it can be used from
15083 : either the present location or the final installed location.
15085 : Get out of the UU directory to get correct path name.
15087 case "$cppstdin" in
15089 echo "Stripping down cppstdin path name"
15095 : end of configuration questions
15097 echo "End of configuration questions."
15100 : back to where it started
15101 if test -d ../UU; then
15105 : configuration may be patched via a 'config.over' file
15106 if $test -f config.over; then
15109 rp='I see a config.over file. Do you wish to load it?'
15112 n*) echo "OK, I'll ignore it.";;
15114 echo "Configuration override changes have been loaded."
15119 : in case they want portability, strip down executable paths
15120 case "$d_portable" in
15123 echo "Stripping down executable paths..." >&4
15124 for file in $loclist $trylist; do
15126 eval $file=`basename $temp`
15131 : create config.sh file
15133 echo "Creating config.sh..." >&4
15134 $spitshell <<EOT >config.sh
15137 # This file was produced by running the Configure script. It holds all the
15138 # definitions figured out by Configure. Should you modify one of these values,
15139 # do not forget to propagate your changes by running "Configure -der". You may
15140 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15143 # Package name : $package
15144 # Source directory : $src
15145 # Configuration time: $cf_time
15146 # Configured by : $cf_by
15147 # Target system : $myuname
15157 Revision='$Revision'
15164 alignbytes='$alignbytes'
15165 ansi2knr='$ansi2knr'
15166 aphostname='$aphostname'
15167 api_revision='$api_revision'
15168 api_subversion='$api_subversion'
15169 api_version='$api_version'
15170 api_versionstring='$api_versionstring'
15173 archlibexp='$archlibexp'
15174 archname64='$archname64'
15175 archname='$archname'
15176 archobjs='$archobjs'
15181 bincompat5005='$bincompat5005'
15185 byteorder='$byteorder'
15187 castflags='$castflags'
15190 cccdlflags='$cccdlflags'
15191 ccdlflags='$ccdlflags'
15193 ccsymbols='$ccsymbols'
15195 cf_email='$cf_email'
15197 charsize='$charsize'
15201 clocktype='$clocktype'
15203 compress='$compress'
15204 contains='$contains'
15208 cpp_stuff='$cpp_stuff'
15209 cppccsymbols='$cppccsymbols'
15210 cppflags='$cppflags'
15212 cppminus='$cppminus'
15214 cppstdin='$cppstdin'
15215 cppsymbols='$cppsymbols'
15216 crosscompile='$crosscompile'
15217 cryptlib='$cryptlib'
15219 d_Gconvert='$d_Gconvert'
15220 d_PRIEldbl='$d_PRIEldbl'
15221 d_PRIFldbl='$d_PRIFldbl'
15222 d_PRIGldbl='$d_PRIGldbl'
15223 d_PRIX64='$d_PRIX64'
15224 d_PRId64='$d_PRId64'
15225 d_PRIeldbl='$d_PRIeldbl'
15226 d_PRIfldbl='$d_PRIfldbl'
15227 d_PRIgldbl='$d_PRIgldbl'
15228 d_PRIi64='$d_PRIi64'
15229 d_PRIo64='$d_PRIo64'
15230 d_PRIu64='$d_PRIu64'
15231 d_PRIx64='$d_PRIx64'
15232 d_access='$d_access'
15233 d_accessx='$d_accessx'
15235 d_archlib='$d_archlib'
15238 d_attribut='$d_attribut'
15241 d_bincompat5005='$d_bincompat5005'
15243 d_bsdgetpgrp='$d_bsdgetpgrp'
15244 d_bsdsetpgrp='$d_bsdsetpgrp'
15246 d_casti32='$d_casti32'
15247 d_castneg='$d_castneg'
15248 d_charvspr='$d_charvspr'
15250 d_chroot='$d_chroot'
15251 d_chsize='$d_chsize'
15252 d_closedir='$d_closedir'
15256 d_cuserid='$d_cuserid'
15257 d_dbl_dig='$d_dbl_dig'
15258 d_difftime='$d_difftime'
15259 d_dirnamlen='$d_dirnamlen'
15260 d_dlerror='$d_dlerror'
15261 d_dlopen='$d_dlopen'
15262 d_dlsymun='$d_dlsymun'
15263 d_dosuid='$d_dosuid'
15264 d_drand48proto='$d_drand48proto'
15266 d_eaccess='$d_eaccess'
15267 d_endgrent='$d_endgrent'
15268 d_endhent='$d_endhent'
15269 d_endnent='$d_endnent'
15270 d_endpent='$d_endpent'
15271 d_endpwent='$d_endpwent'
15272 d_endsent='$d_endsent'
15273 d_eofnblk='$d_eofnblk'
15274 d_eunice='$d_eunice'
15275 d_fchmod='$d_fchmod'
15276 d_fchown='$d_fchown'
15278 d_fd_macros='$d_fd_macros'
15279 d_fd_set='$d_fd_set'
15280 d_fds_bits='$d_fds_bits'
15281 d_fgetpos='$d_fgetpos'
15282 d_flexfnam='$d_flexfnam'
15285 d_fpathconf='$d_fpathconf'
15286 d_fpos64_t='$d_fpos64_t'
15287 d_frexpl='$d_frexpl'
15288 d_fs_data_s='$d_fs_data_s'
15289 d_fseeko='$d_fseeko'
15290 d_fsetpos='$d_fsetpos'
15291 d_fstatfs='$d_fstatfs'
15292 d_fstatvfs='$d_fstatvfs'
15293 d_ftello='$d_ftello'
15295 d_getcwd='$d_getcwd'
15296 d_getespwnam='$d_getespwnam'
15297 d_getfsstat='$d_getfsstat'
15298 d_getgrent='$d_getgrent'
15299 d_getgrps='$d_getgrps'
15300 d_gethbyaddr='$d_gethbyaddr'
15301 d_gethbyname='$d_gethbyname'
15302 d_gethent='$d_gethent'
15303 d_gethname='$d_gethname'
15304 d_gethostprotos='$d_gethostprotos'
15305 d_getlogin='$d_getlogin'
15306 d_getmnt='$d_getmnt'
15307 d_getmntent='$d_getmntent'
15308 d_getnbyaddr='$d_getnbyaddr'
15309 d_getnbyname='$d_getnbyname'
15310 d_getnent='$d_getnent'
15311 d_getnetprotos='$d_getnetprotos'
15312 d_getpbyname='$d_getpbyname'
15313 d_getpbynumber='$d_getpbynumber'
15314 d_getpent='$d_getpent'
15315 d_getpgid='$d_getpgid'
15316 d_getpgrp2='$d_getpgrp2'
15317 d_getpgrp='$d_getpgrp'
15318 d_getppid='$d_getppid'
15319 d_getprior='$d_getprior'
15320 d_getprotoprotos='$d_getprotoprotos'
15321 d_getprpwnam='$d_getprpwnam'
15322 d_getpwent='$d_getpwent'
15323 d_getsbyname='$d_getsbyname'
15324 d_getsbyport='$d_getsbyport'
15325 d_getsent='$d_getsent'
15326 d_getservprotos='$d_getservprotos'
15327 d_getspnam='$d_getspnam'
15328 d_gettimeod='$d_gettimeod'
15329 d_gnulibc='$d_gnulibc'
15330 d_grpasswd='$d_grpasswd'
15331 d_hasmntopt='$d_hasmntopt'
15335 d_inetaton='$d_inetaton'
15336 d_int64_t='$d_int64_t'
15337 d_isascii='$d_isascii'
15339 d_isnanl='$d_isnanl'
15340 d_killpg='$d_killpg'
15341 d_lchown='$d_lchown'
15342 d_ldbl_dig='$d_ldbl_dig'
15344 d_locconv='$d_locconv'
15346 d_longdbl='$d_longdbl'
15347 d_longlong='$d_longlong'
15348 d_lseekproto='$d_lseekproto'
15350 d_madvise='$d_madvise'
15352 d_mbstowcs='$d_mbstowcs'
15353 d_mbtowc='$d_mbtowc'
15354 d_memchr='$d_memchr'
15355 d_memcmp='$d_memcmp'
15356 d_memcpy='$d_memcpy'
15357 d_memmove='$d_memmove'
15358 d_memset='$d_memset'
15360 d_mkdtemp='$d_mkdtemp'
15361 d_mkfifo='$d_mkfifo'
15362 d_mkstemp='$d_mkstemp'
15363 d_mkstemps='$d_mkstemps'
15364 d_mktime='$d_mktime'
15367 d_mprotect='$d_mprotect'
15369 d_msg_ctrunc='$d_msg_ctrunc'
15370 d_msg_dontroute='$d_msg_dontroute'
15371 d_msg_oob='$d_msg_oob'
15372 d_msg_peek='$d_msg_peek'
15373 d_msg_proxy='$d_msg_proxy'
15374 d_msgctl='$d_msgctl'
15375 d_msgget='$d_msgget'
15376 d_msgrcv='$d_msgrcv'
15377 d_msgsnd='$d_msgsnd'
15379 d_munmap='$d_munmap'
15380 d_mymalloc='$d_mymalloc'
15382 d_nv_preserved_bits='$d_nv_preserved_bits'
15383 d_nv_preserves_uv='$d_nv_preserves_uv'
15384 d_off64_t='$d_off64_t'
15385 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15386 d_oldpthreads='$d_oldpthreads'
15387 d_oldsock='$d_oldsock'
15389 d_pathconf='$d_pathconf'
15391 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15392 d_phostname='$d_phostname'
15395 d_portable='$d_portable'
15396 d_pthread_yield='$d_pthread_yield'
15398 d_pwchange='$d_pwchange'
15399 d_pwclass='$d_pwclass'
15400 d_pwcomment='$d_pwcomment'
15401 d_pwexpire='$d_pwexpire'
15402 d_pwgecos='$d_pwgecos'
15403 d_pwpasswd='$d_pwpasswd'
15404 d_pwquota='$d_pwquota'
15407 d_readdir='$d_readdir'
15408 d_readlink='$d_readlink'
15409 d_rename='$d_rename'
15410 d_rewinddir='$d_rewinddir'
15412 d_safebcpy='$d_safebcpy'
15413 d_safemcpy='$d_safemcpy'
15414 d_sanemcmp='$d_sanemcmp'
15415 d_sched_yield='$d_sched_yield'
15416 d_scm_rights='$d_scm_rights'
15417 d_seekdir='$d_seekdir'
15418 d_select='$d_select'
15420 d_semctl='$d_semctl'
15421 d_semctl_semid_ds='$d_semctl_semid_ds'
15422 d_semctl_semun='$d_semctl_semun'
15423 d_semget='$d_semget'
15425 d_setegid='$d_setegid'
15426 d_seteuid='$d_seteuid'
15427 d_setgrent='$d_setgrent'
15428 d_setgrps='$d_setgrps'
15429 d_sethent='$d_sethent'
15430 d_setlinebuf='$d_setlinebuf'
15431 d_setlocale='$d_setlocale'
15432 d_setnent='$d_setnent'
15433 d_setpent='$d_setpent'
15434 d_setpgid='$d_setpgid'
15435 d_setpgrp2='$d_setpgrp2'
15436 d_setpgrp='$d_setpgrp'
15437 d_setprior='$d_setprior'
15438 d_setpwent='$d_setpwent'
15439 d_setregid='$d_setregid'
15440 d_setresgid='$d_setresgid'
15441 d_setresuid='$d_setresuid'
15442 d_setreuid='$d_setreuid'
15443 d_setrgid='$d_setrgid'
15444 d_setruid='$d_setruid'
15445 d_setsent='$d_setsent'
15446 d_setsid='$d_setsid'
15447 d_setvbuf='$d_setvbuf'
15451 d_shmatprototype='$d_shmatprototype'
15452 d_shmctl='$d_shmctl'
15454 d_shmget='$d_shmget'
15455 d_sigaction='$d_sigaction'
15456 d_sigsetjmp='$d_sigsetjmp'
15457 d_socket='$d_socket'
15458 d_socklen_t='$d_socklen_t'
15459 d_sockpair='$d_sockpair'
15461 d_statblks='$d_statblks'
15462 d_statfs_f_flags='$d_statfs_f_flags'
15463 d_statfs_s='$d_statfs_s'
15464 d_statvfs='$d_statvfs'
15465 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15466 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15467 d_stdio_stream_array='$d_stdio_stream_array'
15468 d_stdiobase='$d_stdiobase'
15469 d_stdstdio='$d_stdstdio'
15470 d_strchr='$d_strchr'
15471 d_strcoll='$d_strcoll'
15472 d_strctcpy='$d_strctcpy'
15473 d_strerrm='$d_strerrm'
15474 d_strerror='$d_strerror'
15475 d_strtod='$d_strtod'
15476 d_strtol='$d_strtol'
15477 d_strtold='$d_strtold'
15478 d_strtoll='$d_strtoll'
15479 d_strtoul='$d_strtoul'
15480 d_strtoull='$d_strtoull'
15481 d_strtouq='$d_strtouq'
15482 d_strxfrm='$d_strxfrm'
15483 d_suidsafe='$d_suidsafe'
15484 d_symlink='$d_symlink'
15485 d_syscall='$d_syscall'
15486 d_sysconf='$d_sysconf'
15487 d_sysernlst='$d_sysernlst'
15488 d_syserrlst='$d_syserrlst'
15489 d_system='$d_system'
15490 d_tcgetpgrp='$d_tcgetpgrp'
15491 d_tcsetpgrp='$d_tcsetpgrp'
15492 d_telldir='$d_telldir'
15493 d_telldirproto='$d_telldirproto'
15496 d_truncate='$d_truncate'
15497 d_tzname='$d_tzname'
15500 d_union_semun='$d_union_semun'
15502 d_vendorarch='$d_vendorarch'
15503 d_vendorbin='$d_vendorbin'
15504 d_vendorlib='$d_vendorlib'
15506 d_void_closedir='$d_void_closedir'
15507 d_voidsig='$d_voidsig'
15508 d_voidtty='$d_voidtty'
15509 d_volatile='$d_volatile'
15510 d_vprintf='$d_vprintf'
15512 d_waitpid='$d_waitpid'
15513 d_wcstombs='$d_wcstombs'
15514 d_wctomb='$d_wctomb'
15517 db_hashtype='$db_hashtype'
15518 db_prefixtype='$db_prefixtype'
15519 defvoidused='$defvoidused'
15520 direntrytype='$direntrytype'
15523 doublesize='$doublesize'
15525 dynamic_ext='$dynamic_ext'
15531 eunicefix='$eunicefix'
15534 extensions='$extensions'
15535 fflushNULL='$fflushNULL'
15536 fflushall='$fflushall'
15538 firstmakefile='$firstmakefile'
15540 fpossize='$fpossize'
15541 fpostype='$fpostype'
15542 freetype='$freetype'
15544 full_csh='$full_csh'
15545 full_sed='$full_sed'
15546 gccversion='$gccversion'
15547 gidformat='$gidformat'
15553 groupcat='$groupcat'
15554 groupstype='$groupstype'
15557 h_sysfile='$h_sysfile'
15569 i_arpainet='$i_arpainet'
15570 i_bsdioctl='$i_bsdioctl'
15573 i_dirent='$i_dirent'
15581 i_ieeefp='$i_ieeefp'
15582 i_inttypes='$i_inttypes'
15583 i_limits='$i_limits'
15584 i_locale='$i_locale'
15585 i_machcthr='$i_machcthr'
15586 i_malloc='$i_malloc'
15588 i_memory='$i_memory'
15589 i_mntent='$i_mntent'
15592 i_neterrno='$i_neterrno'
15593 i_netinettcp='$i_netinettcp'
15597 i_pthread='$i_pthread'
15599 i_rpcsvcdbm='$i_rpcsvcdbm'
15602 i_shadow='$i_shadow'
15604 i_stdarg='$i_stdarg'
15605 i_stddef='$i_stddef'
15606 i_stdlib='$i_stdlib'
15607 i_string='$i_string'
15608 i_sunmath='$i_sunmath'
15609 i_sysaccess='$i_sysaccess'
15610 i_sysdir='$i_sysdir'
15611 i_sysfile='$i_sysfile'
15612 i_sysfilio='$i_sysfilio'
15614 i_sysioctl='$i_sysioctl'
15615 i_syslog='$i_syslog'
15616 i_sysmman='$i_sysmman'
15617 i_sysmode='$i_sysmode'
15618 i_sysmount='$i_sysmount'
15619 i_sysndir='$i_sysndir'
15620 i_sysparam='$i_sysparam'
15621 i_sysresrc='$i_sysresrc'
15622 i_syssecrt='$i_syssecrt'
15623 i_sysselct='$i_sysselct'
15624 i_syssockio='$i_syssockio'
15625 i_sysstat='$i_sysstat'
15626 i_sysstatfs='$i_sysstatfs'
15627 i_sysstatvfs='$i_sysstatvfs'
15628 i_systime='$i_systime'
15629 i_systimek='$i_systimek'
15630 i_systimes='$i_systimes'
15631 i_systypes='$i_systypes'
15632 i_sysuio='$i_sysuio'
15634 i_sysutsname='$i_sysutsname'
15635 i_sysvfs='$i_sysvfs'
15636 i_syswait='$i_syswait'
15637 i_termio='$i_termio'
15638 i_termios='$i_termios'
15640 i_unistd='$i_unistd'
15643 i_values='$i_values'
15644 i_varargs='$i_varargs'
15645 i_varhdr='$i_varhdr'
15647 ignore_versioned_solibs='$ignore_versioned_solibs'
15648 inc_version_list='$inc_version_list'
15649 inc_version_list_init='$inc_version_list_init'
15652 installarchlib='$installarchlib'
15653 installbin='$installbin'
15654 installman1dir='$installman1dir'
15655 installman3dir='$installman3dir'
15656 installprefix='$installprefix'
15657 installprefixexp='$installprefixexp'
15658 installprivlib='$installprivlib'
15659 installscript='$installscript'
15660 installsitearch='$installsitearch'
15661 installsitebin='$installsitebin'
15662 installsitelib='$installsitelib'
15663 installstyle='$installstyle'
15664 installusrbinperl='$installusrbinperl'
15665 installvendorarch='$installvendorarch'
15666 installvendorbin='$installvendorbin'
15667 installvendorlib='$installvendorlib'
15669 ivdformat='$ivdformat'
15672 known_extensions='$known_extensions'
15676 lddlflags='$lddlflags'
15678 ldlibpthname='$ldlibpthname'
15685 libsdirs='$libsdirs'
15686 libsfiles='$libsfiles'
15687 libsfound='$libsfound'
15688 libspath='$libspath'
15689 libswanted='$libswanted'
15695 locincpth='$locincpth'
15696 loclibpth='$loclibpth'
15697 longdblsize='$longdblsize'
15698 longlongsize='$longlongsize'
15699 longsize='$longsize'
15703 lseeksize='$lseeksize'
15704 lseektype='$lseektype'
15708 make_set_make='$make_set_make'
15709 mallocobj='$mallocobj'
15710 mallocsrc='$mallocsrc'
15711 malloctype='$malloctype'
15713 man1direxp='$man1direxp'
15716 man3direxp='$man3direxp'
15719 mips_type='$mips_type'
15721 mmaptype='$mmaptype'
15723 modetype='$modetype'
15725 multiarch='$multiarch'
15727 myarchname='$myarchname'
15728 mydomain='$mydomain'
15729 myhostname='$myhostname'
15732 netdb_hlen_type='$netdb_hlen_type'
15733 netdb_host_type='$netdb_host_type'
15734 netdb_name_type='$netdb_name_type'
15735 netdb_net_type='$netdb_net_type'
15738 nm_so_opt='$nm_so_opt'
15739 nonxs_ext='$nonxs_ext'
15743 o_nonblock='$o_nonblock'
15745 old_pthread_create_joinable='$old_pthread_create_joinable'
15746 optimize='$optimize'
15747 orderlib='$orderlib'
15750 otherlibdirs='$otherlibdirs'
15754 patchlevel='$patchlevel'
15755 path_sep='$path_sep'
15758 perladmin='$perladmin'
15759 perlpath='$perlpath'
15761 phostname='$phostname'
15764 pm_apiversion='$pm_apiversion'
15768 prefixexp='$prefixexp'
15770 privlibexp='$privlibexp'
15771 prototype='$prototype'
15773 quadkind='$quadkind'
15774 quadtype='$quadtype'
15775 randbits='$randbits'
15776 randfunc='$randfunc'
15777 randseedtype='$randseedtype'
15779 rd_nodata='$rd_nodata'
15780 revision='$revision'
15784 sPRIEldbl='$sPRIEldbl'
15785 sPRIFldbl='$sPRIFldbl'
15786 sPRIGldbl='$sPRIGldbl'
15789 sPRIeldbl='$sPRIeldbl'
15790 sPRIfldbl='$sPRIfldbl'
15791 sPRIgldbl='$sPRIgldbl'
15796 sched_yield='$sched_yield'
15797 scriptdir='$scriptdir'
15798 scriptdirexp='$scriptdirexp'
15800 seedfunc='$seedfunc'
15801 selectminbits='$selectminbits'
15802 selecttype='$selecttype'
15803 sendmail='$sendmail'
15806 sharpbang='$sharpbang'
15807 shmattype='$shmattype'
15808 shortsize='$shortsize'
15811 sig_count='$sig_count'
15812 sig_name='$sig_name'
15813 sig_name_init='$sig_name_init'
15815 sig_num_init='$sig_num_init'
15816 signal_t='$signal_t'
15817 sitearch='$sitearch'
15818 sitearchexp='$sitearchexp'
15820 sitebinexp='$sitebinexp'
15822 sitelib_stem='$sitelib_stem'
15823 sitelibexp='$sitelibexp'
15824 siteprefix='$siteprefix'
15825 siteprefixexp='$siteprefixexp'
15826 sizesize='$sizesize'
15827 sizetype='$sizetype'
15832 sockethdr='$sockethdr'
15833 socketlib='$socketlib'
15834 socksizetype='$socksizetype'
15836 spackage='$spackage'
15837 spitshell='$spitshell'
15840 ssizetype='$ssizetype'
15841 startperl='$startperl'
15843 static_ext='$static_ext'
15845 stdio_base='$stdio_base'
15846 stdio_bufsiz='$stdio_bufsiz'
15847 stdio_cnt='$stdio_cnt'
15848 stdio_filbuf='$stdio_filbuf'
15849 stdio_ptr='$stdio_ptr'
15850 stdio_stream_array='$stdio_stream_array'
15853 subversion='$subversion'
15860 timeincl='$timeincl'
15861 timetype='$timetype'
15874 uidformat='$uidformat'
15880 uquadtype='$uquadtype'
15881 use5005threads='$use5005threads'
15882 use64bitall='$use64bitall'
15883 use64bitint='$use64bitint'
15885 useithreads='$useithreads'
15886 uselargefiles='$uselargefiles'
15887 uselongdouble='$uselongdouble'
15888 usemorebits='$usemorebits'
15889 usemultiplicity='$usemultiplicity'
15890 usemymalloc='$usemymalloc'
15892 useopcode='$useopcode'
15893 useperlio='$useperlio'
15894 useposix='$useposix'
15896 useshrplib='$useshrplib'
15897 usesocks='$usesocks'
15898 usethreads='$usethreads'
15899 usevendorprefix='$usevendorprefix'
15900 usevfork='$usevfork'
15903 uvoformat='$uvoformat'
15906 uvuformat='$uvuformat'
15907 uvxformat='$uvxformat'
15908 vendorarch='$vendorarch'
15909 vendorarchexp='$vendorarchexp'
15910 vendorbin='$vendorbin'
15911 vendorbinexp='$vendorbinexp'
15912 vendorlib='$vendorlib'
15913 vendorlib_stem='$vendorlib_stem'
15914 vendorlibexp='$vendorlibexp'
15915 vendorprefix='$vendorprefix'
15916 vendorprefixexp='$vendorprefixexp'
15919 voidflags='$voidflags'
15921 xs_apiversion='$xs_apiversion'
15926 : Add in command line options if available
15927 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15929 : add special variables
15930 $test -f $src/patchlevel.h && \
15931 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15932 echo "CONFIGDOTSH=true" >>config.sh
15934 : propagate old symbols
15935 if $test -f UU/config.sh; then
15936 <UU/config.sh sort | uniq >UU/oldconfig.sh
15937 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15938 sort | uniq -u >UU/oldsyms
15939 set X `cat UU/oldsyms`
15945 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15947 echo "# Variables propagated from previous config.sh file." >>config.sh
15948 for sym in `cat UU/oldsyms`; do
15949 echo " Propagating $hint variable "'$'"$sym..."
15950 eval 'tmp="$'"${sym}"'"'
15952 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15958 : Finish up by extracting the .SH files
15972 If you'd like to make any changes to the config.sh file before I begin
15973 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15976 rp="Press return or use a shell escape to edit config.sh:"
15981 *) : in case they cannot read
15982 sh 1>&4 -c "$ans";;
15987 : if this fails, just run all the .SH files by hand
15994 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16001 Now you need to generate make dependencies by running "$make depend".
16002 You might prefer to run it in background: "$make depend > makedepend.out &"
16003 It can take a while, so you might not want to run it right now.
16008 rp="Run $make depend now?"
16012 $make depend && echo "Now you must run a $make."
16015 echo "You must run '$make depend' then '$make'."
16018 elif test -f [Mm]akefile; then
16020 echo "Now you must run a $make."
16025 if $test -f Policy.sh; then
16028 If you compile $package on a different machine or from a different object
16029 directory, copy the Policy.sh file from this object directory to the
16030 new one before you run Configure -- this will help you with most of
16031 the policy defaults.
16035 if $test -f config.msg; then
16036 echo "Hmm. I also noted the following information while running:"
16038 $cat config.msg >&4
16041 $rm -f kit*isdone ark*isdone