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 Feb 9 21:43:07 EET 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
450 d_old_pthread_create_joinable=''
451 old_pthread_create_joinable=''
687 inc_version_list_init=''
707 ignore_versioned_solibs=''
868 d_stdio_stream_array=''
869 stdio_stream_array=''
915 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
918 : We must find out about Eunice early
920 if test -f /etc/unixtovms; then
921 eunicefix=/etc/unixtovms
923 if test -f /etc/unixtovms.exe; then
924 eunicefix=/etc/unixtovms.exe
928 : set useposix=false in your hint file to disable the POSIX extension.
930 : set useopcode=false in your hint file to disable the Opcode extension.
932 : Trailing extension. Override this in a hint file, if needed.
934 : Extra object files, if any, needed on this platform.
936 : Possible local include directories to search.
937 : Set locincpth to "" in a hint file to defeat local include searches.
938 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
939 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
941 : no include file wanted by default
945 : change the next line if compiling for Xenix/286 on Xenix/386
946 xlibpth='/usr/lib/386 /lib/386'
948 : Possible local library directories to search.
949 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
950 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
952 : general looking path for locating libraries
953 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
954 glibpth="$glibpth /lib /usr/lib $xlibpth"
955 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
956 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
958 : Private path used by Configure to find libraries. Its value
959 : is prepended to libpth. This variable takes care of special
960 : machines, like the mips. Usually, it should be empty.
963 : default library list
965 : some systems want to use only the non-versioned libso:s
966 ignore_versioned_solibs=''
967 : set usemultiplicity on the Configure command line to enable multiplicity.
968 : set usesocks on the Configure command line to enable socks.
969 : set usethreads on the Configure command line to enable threads.
970 : full support for void wanted by default
973 : List of libraries we want.
974 : If anyone needs -lnet, put it in a hint file.
975 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
976 libswanted="$libswanted dld ld sun m c cposix posix"
977 libswanted="$libswanted ndir dir crypt sec"
978 libswanted="$libswanted ucb bsd BSD PW x"
979 : We probably want to search /usr/shlib before most other libraries.
980 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
981 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
982 glibpth="/usr/shlib $glibpth"
983 : Do not use vfork unless overridden by a hint file.
986 : Find the basic shell for Bourne shell scripts
990 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
993 if test -f "$xxx"; then
996 : Build up a list and do a single loop so we can 'break' out.
997 pth=`echo $PATH | sed -e "s/$p_/ /g"`
998 for xxx in sh bash ksh pdksh ash; do
1000 try="$try ${p}/${xxx}"
1004 if test -f "$xxx"; then
1007 elif test -f "$xxx.exe"; then
1018 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1020 Usually it's in /bin/sh. How did you even get this far?
1021 Please contact me (Perl Maintainers) at perlbug@perl.com and
1022 we'll try to straighten this all out.
1028 : see if sh knows # comments
1029 if `$sh -c '#' >/dev/null 2>&1`; then
1033 test -f $xcat || xcat=/usr/bin/cat
1038 if test -s today; then
1041 echo "#! $xcat" > try
1045 if test -s today; then
1053 echo "Your $sh doesn't grok # comments--I will strip them later on."
1056 echo "exec grep -v '^[ ]*#'" >spitshell
1058 $eunicefix spitshell
1059 spitshell=`pwd`/spitshell
1061 echo "I presume that if # doesn't work, #! won't work either!"
1066 : figure out how to guarantee sh startup
1068 '') startsh=${sharpbang}${sh} ;;
1080 : echo "Yup, it does."
1082 echo "Hmm... '$startsh' does not guarantee sh startup..."
1083 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1088 : Save command line options in file UU/cmdline.opt for later use in
1089 : generating config.sh.
1090 cat > cmdline.opt <<EOSH
1091 # Configure command line arguments.
1098 cat >>cmdline.opt <<EOSH
1099 config_arg$argn='$arg'
1101 argn=`expr $argn + 1`
1104 : produce awk script to parse command line options
1105 cat >options.awk <<'EOF'
1107 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1109 len = length(optstr);
1110 for (i = 1; i <= len; i++) {
1111 c = substr(optstr, i, 1);
1112 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1123 if (substr(str, 1, 1) != "-") {
1124 printf("'%s'\n", str);
1128 for (i = 2; i <= len; i++) {
1129 c = substr(str, i, 1);
1131 printf("-%s\n", substr(str, i));
1137 printf("'%s'\n", substr(str, i + 1));
1150 : process the command line options
1151 set X `for arg in "$@"; do echo "X$arg"; done |
1152 sed -e s/X// | awk -f options.awk`
1157 : set up default values
1167 rm -f optdef.sh posthint.sh
1168 cat >optdef.sh <<EOS
1174 while test $# -gt 0; do
1176 -d) shift; fastread=yes;;
1177 -e) shift; alldone=cont;;
1181 if test -r "$1"; then
1184 echo "$me: cannot read config file $1." >&2
1189 -h) shift; error=true;;
1190 -r) shift; reuseval=true;;
1191 -s) shift; silent=true; realsilent=true;;
1192 -E) shift; alldone=exit;;
1193 -K) shift; knowitall=true;;
1194 -O) shift; override=true;;
1195 -S) shift; silent=true; extractsh=true;;
1200 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1201 echo "$me: ignoring -D $1" >&2
1204 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1205 *) echo "$1='define'" >> optdef.sh;;
1212 *=) echo "$1" >> optdef.sh;;
1214 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1215 echo "$me: ignoring -U $1" >&2
1217 *) echo "$1='undef'" >> optdef.sh;;
1228 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1232 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1233 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1239 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1240 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1241 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1242 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1243 *) xxx=`echo $yyy|sed 's!:.*!!'`
1244 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1250 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1252 echo "$yyy=''" >> posthint.sh ;;
1257 echo "$yyy='$zzz'" >> posthint.sh ;;
1259 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1261 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1266 echo "$yyy=$zzz" >> posthint.sh ;;
1267 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1270 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1273 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1281 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1282 [-U symbol] [-U symbol=] [-A command:symbol...]
1283 -d : use defaults for all answers.
1284 -e : go on without questioning past the production of config.sh.
1285 -f : specify an alternate default configuration file.
1286 -h : print this help message and exit (with an error status).
1287 -r : reuse C symbols value if possible (skips costly nm extraction).
1288 -s : silent mode, only echoes questions and essential information.
1289 -D : define symbol to have some value:
1290 -D symbol symbol gets the value 'define'
1291 -D symbol=value symbol gets the value 'value'
1292 -E : stop at the end of questions, after having produced config.sh.
1293 -K : do not use unless you know what you are doing.
1294 -O : let -D and -U override definitions from loaded configuration file.
1295 -S : perform variable substitutions on all .SH files (can mix with -f)
1296 -U : undefine symbol:
1297 -U symbol symbol gets the value 'undef'
1298 -U symbol= symbol gets completely empty
1299 -A : manipulate symbol after the platform specific hints have been applied:
1300 -A symbol=value append " "value to symbol
1301 -A append:symbol=value append value to symbol
1302 -A define:symbol=value define symbol to have value
1303 -A clear:symbol define symbol to be ''
1304 -A define:symbol define symbol to be 'define'
1305 -A eval:symbol=value define symbol to be eval of value
1306 -A prepend:symbol=value prepend value to symbol
1307 -A undef:symbol define symbol to be 'undef'
1308 -A undef:symbol= define symbol to be ''
1309 -V : print version number and exit (with a zero status).
1316 case "$fastread$alldone" in
1319 if test ! -t 0; then
1320 echo "Say 'sh Configure', not 'sh <Configure'"
1328 true) exec 1>/dev/null;;
1331 : run the defines and the undefines, if any, but leave the file out there...
1334 : create the posthint manipulation script and leave the file out there...
1339 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1340 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1341 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1342 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1343 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1346 : Some greps do not return status, grrr.
1347 echo "grimblepritz" >grimble
1348 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1350 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1356 : the following should work in any shell
1360 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1361 cat >contains <<'EOSS'
1362 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1367 : Find the path to the source tree
1370 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1373 *) src=`cd ../$src && pwd` ;;
1386 if test -f $rsrc/Configure && \
1387 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1389 : found it, so we are ok.
1392 for src in . .. ../.. ../../.. ../../../..; do
1393 if test -f ../$src/Configure && \
1394 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1405 Sorry, I can't seem to locate the source dir for $package. Please start
1406 Configure with an explicit path -- i.e. /some/path/Configure.
1414 echo "Sources for $package found in \"$src\"." >&4
1418 : script used to extract .SH files with variable substitutions
1419 cat >extract <<'EOS'
1421 echo "Doing variable substitutions on .SH files..."
1422 if test -f $src/MANIFEST; then
1423 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1425 echo "(Looking for .SH files under the source directory.)"
1426 set x `(cd $src; find . -name "*.SH" -print)`
1430 0) set x `(cd $src; echo *.SH)`; shift;;
1432 if test ! -f $src/$1; then
1438 while test $name; do
1439 if test ! -d "$name"; then
1440 create="$name $create";
1441 name=`echo $name | sed -e "s|^[^/]*$||"`;
1442 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1447 for file in $create; do
1456 dir=`expr X$file : 'X\(.*\)/'`
1457 file=`expr X$file : 'X.*/\(.*\)'`
1458 (cd $dir && . ./$file)
1468 dir=`expr X$file : 'X\(.*\)/'`
1469 file=`expr X$file : 'X.*/\(.*\)'`
1470 (set x $dir; shift; eval $mkdir_p)
1480 if test -f $src/config_h.SH; then
1481 if test ! -f config.h; then
1482 : oops, they left it out of MANIFEST, probably, so do it anyway.
1488 : extract files and exit if asked to do so
1489 case "$extractsh" in
1491 case "$realsilent" in
1495 case "$config_sh" in
1496 '') config_sh='config.sh';;
1499 echo "Fetching answers from $config_sh..."
1502 test "$override" && . ./optdef.sh
1511 : Eunice requires " " instead of "", can you believe it
1514 echo "Beginning of configuration questions for $package."
1516 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1518 : first determine how to suppress newline on echo command
1520 echo "Checking echo to see how to suppress newlines..."
1521 (echo "hi there\c" ; echo " ") >.echotmp
1522 if $contains c .echotmp >/dev/null 2>&1 ; then
1533 echo $n "The star should be here-->$c"
1537 : Now test for existence of everything in MANIFEST
1539 if test -f $rsrc/MANIFEST; then
1540 echo "First let's make sure your kit is complete. Checking..." >&4
1541 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1544 for filelist in x??; do
1545 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1547 if test -s missing; then
1551 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1553 You have the option of continuing the configuration process, despite the
1554 distinct possibility that your kit is damaged, by typing 'y'es. If you
1555 do, don't blame me if something goes wrong. I advise you to type 'n'o
1556 and contact the author (perlbug@perl.com).
1559 echo $n "Continue? [n] $c" >&4
1563 echo "Continuing..." >&4
1567 echo "ABORTING..." >&4
1572 echo "Looks good..."
1575 echo "There is no MANIFEST file. I hope your kit is complete !"
1580 : Find the appropriate value for a newline for tr
1581 if test -n "$DJGPP"; then
1584 if test X"$trnl" = X; then
1585 case "`echo foo|tr '\n' x 2>/dev/null`" in
1589 if test X"$trnl" = X; then
1590 case "`echo foo|tr '\012' x 2>/dev/null`" in
1591 foox) trnl='\012' ;;
1594 if test X"$trnl" = X; then
1597 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1603 : compute the number of columns on the terminal for proper question formatting
1608 : set up the echo used in my read
1609 myecho="case \"\$xxxm\" in
1610 '') echo $n \"\$rp $c\" >&4;;
1612 '') echo $n \"[\$xxxm] $c\";;
1614 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1616 echo $n \"[\$xxxm] $c\" >&4
1618 echo $n \"\$rp [\$xxxm] $c\" >&4
1624 : now set up to do reads with possible shell escape and default assignment
1630 case "\$fastread" in
1631 yes) case "\$dflt" in
1634 case "\$silent-\$rp" in
1639 *) case "\$silent" in
1640 true) case "\$rp" in
1645 while expr "X\$ans" : "X!" >/dev/null; do
1649 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1657 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1666 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1671 echo "(OK, I'll run with -d after this question.)" >&4
1674 echo "*** Sorry, \$1 not supported yet." >&4
1684 echo "*** Substitution done -- please confirm."
1686 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1691 echo "*** Error -- try again."
1698 case "\$ans\$xxxm\$nostick" in
1710 : create .config dir to save info across Configure sessions
1711 test -d ../.config || mkdir ../.config
1712 cat >../.config/README <<EOF
1713 This directory created by Configure to save information that should
1714 persist across sessions for $package.
1716 You may safely delete it if you wish.
1719 : general instructions
1722 user=`(logname) 2>/dev/null`
1724 '') user=`whoami 2>&1`;;
1726 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1729 rp='Would you like to see the instructions?'
1740 This installation shell script will examine your system and ask you questions
1741 to determine how the perl5 package should be installed. If you get
1742 stuck on a question, you may use a ! shell escape to start a subshell or
1743 execute a command. Many of the questions will have default answers in square
1744 brackets; typing carriage return will give you the default.
1746 On some of the questions which ask for file or directory names you are allowed
1747 to use the ~name construct to specify the login directory belonging to "name",
1748 even if you don't have a shell which knows about that. Questions where this is
1749 allowed will be marked "(~name ok)".
1753 dflt='Type carriage return to continue'
1757 The prompter used in this script allows you to use shell variables and
1758 backticks in your answers. You may use $1, $2, etc... to refer to the words
1759 in the default answer, as if the default line was a set of arguments given to a
1760 script shell. This means you may also use $* to repeat the whole default line,
1761 so you do not have to re-type everything to add something to the default.
1763 Everytime there is a substitution, you will have to confirm. If there is an
1764 error (e.g. an unmatched backtick), the default answer will remain unchanged
1765 and you will be prompted again.
1767 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1768 the questions and use the computed defaults (or the previous answers if there
1769 was already a config.sh file). Type 'Configure -h' for a list of options.
1770 You may also start interactively and then answer '& -d' at any prompt to turn
1771 on the non-interactive behaviour for the remainder of the execution.
1777 Much effort has been expended to ensure that this shell script will run on any
1778 Unix system. If despite that it blows up on yours, your best bet is to edit
1779 Configure and run it again. If you can't run Configure for some reason,
1780 you'll have to generate a config.sh file by hand. Whatever problems you
1781 have, let me (perlbug@perl.com) know how I blew it.
1783 This installation script affects things in two ways:
1785 1) it may do direct variable substitutions on some of the files included
1787 2) it builds a config.h file for inclusion in C programs. You may edit
1788 any of these files as the need arises after running this script.
1790 If you make a mistake on a question, there is no easy way to back up to it
1791 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1792 files. Configure will offer to let you do this before it runs the SH files.
1795 dflt='Type carriage return to continue'
1797 case "$firsttime" in
1798 true) echo $user >>../.config/instruct;;
1802 : find out where common programs are
1804 echo "Locating common programs..." >&4
1817 if test -d \$dir/\$thing; then
1823 for thisthing in \$dir/\$thing; do
1824 : just loop through to pick last item
1826 if test -f \$thisthing; then
1829 elif test -f \$dir/\$thing.exe; then
1830 if test -n "$DJGPP"; then
1831 echo \$dir/\$thing.exe
1833 : on Eunice apparently
1884 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1885 pth="$pth /lib /usr/lib"
1886 for file in $loclist; do
1890 if test -f "$xxx"; then
1893 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1894 xxx=`./loc $file $file $pth`
1897 '') xxx=`./loc $file $file $pth`;;
1898 *) xxx=`./loc $xxx $xxx $pth`;;
1904 echo $file is in $xxx.
1907 echo $file is in $xxx.
1910 echo "I don't know where '$file' is, and my life depends on it." >&4
1911 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1917 echo "Don't worry if any of the following aren't found..."
1919 for file in $trylist; do
1923 if test -f "$xxx"; then
1926 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1927 xxx=`./loc $file $file $pth`
1930 '') xxx=`./loc $file $file $pth`;;
1931 *) xxx=`./loc $xxx $xxx $pth`;;
1937 echo $file is in $xxx.
1940 echo $file is in $xxx.
1943 echo "I don't see $file out there, $say."
1950 echo "Substituting grep for egrep."
1956 echo "Substituting cp for ln."
1962 echo "Hopefully test is built into your sh."
1965 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1966 echo "Using the test built into your sh."
1974 echo "Hopefully echo is built into your sh."
1979 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1980 $echo $n "hi there$c" >foo1
1981 echo $n "hi there$c" >foo2
1982 if cmp foo1 foo2 >/dev/null 2>&1; then
1983 echo "They are compatible. In fact, they may be identical."
1990 They are not compatible! You are probably running ksh on a non-USG system.
1991 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1992 have echo built in and we may have to run some Bourne shell scripts. That
1993 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1996 $echo $n "The star should be here-->$c"
2003 : determine whether symbolic links are supported
2006 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2007 echo "Symbolic links are supported." >&4
2010 echo "Symbolic links are NOT supported." >&4
2015 : see whether [:lower:] and [:upper:] are supported character classes
2017 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2019 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2023 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2024 # (0xc9 and 0xd1), therefore that is a nice testing point.
2025 if test "X$up" = X -o "X$low" = X; then
2026 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2032 if test "X$up" = X -o "X$low" = X; then
2033 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2039 if test "X$up" = X -o "X$low" = X; then
2040 case "`echo IJ | od -x 2>/dev/null`" in
2042 echo "Hey, this might be EBCDIC." >&4
2043 if test "X$up" = X -o "X$low" = X; then
2044 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2045 ij) up='[A-IJ-RS-Z]'
2050 if test "X$up" = X -o "X$low" = X; then
2051 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2061 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2063 echo "Using $up and $low to convert case." >&4
2066 echo "I don't know how to translate letters from upper to lower case." >&4
2067 echo "Your tr is not acting any way I know of." >&4
2071 : set up the translation script tr, must be called with ./tr of course
2075 '[A-Z][a-z]') exec $tr '$up' '$low';;
2076 '[a-z][A-Z]') exec $tr '$low' '$up';;
2083 : Try to determine whether config.sh was made on this system
2084 case "$config_sh" in
2086 myuname=`$uname -a 2>/dev/null`
2087 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2088 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2089 # because the A-Z/a-z are not consecutive.
2090 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2091 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2092 newmyuname="$myuname"
2094 case "$knowitall" in
2096 if test -f ../config.sh; then
2097 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2098 eval "`grep myuname= ../config.sh`"
2100 if test "X$myuname" = "X$newmyuname"; then
2108 : Get old answers from old config file if Configure was run on the
2109 : same system, otherwise use the hints.
2112 if test -f config.sh; then
2114 rp="I see a config.sh file. Shall I use it to set the defaults?"
2117 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2118 *) echo "Fetching default answers from your old config.sh file..." >&4
2126 : Older versions did not always set $sh. Catch re-use of such
2135 if test ! -f config.sh; then
2138 First time through, eh? I have some defaults handy for some systems
2139 that need some extra help getting the Configure answers right:
2142 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2144 : Half the following guesses are probably wrong... If you have better
2145 : tests or hints, please send them to perlbug@perl.com
2146 : The metaconfig authors would also appreciate a copy...
2147 $test -f /irix && osname=irix
2148 $test -f /xenix && osname=sco_xenix
2149 $test -f /dynix && osname=dynix
2150 $test -f /dnix && osname=dnix
2151 $test -f /lynx.os && osname=lynxos
2152 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2153 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2154 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2155 $test -f /bin/mips && /bin/mips && osname=mips
2156 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2157 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2158 $test -d /usr/apollo/bin && osname=apollo
2159 $test -f /etc/saf/_sactab && osname=svr4
2160 $test -d /usr/include/minix && osname=minix
2161 if $test -d /MachTen -o -d /MachTen_Folder; then
2163 if $test -x /sbin/version; then
2164 osvers=`/sbin/version | $awk '{print $2}' |
2165 $sed -e 's/[A-Za-z]$//'`
2166 elif $test -x /usr/etc/version; then
2167 osvers=`/usr/etc/version | $awk '{print $2}' |
2168 $sed -e 's/[A-Za-z]$//'`
2174 $test -f /sys/posix.dll &&
2175 $test -f /usr/bin/what &&
2176 set X `/usr/bin/what /sys/posix.dll` &&
2177 $test "$3" = UWIN &&
2181 if $test -f $uname; then
2189 umips) osname=umips ;;
2192 [23]100) osname=mips ;;
2193 next*) osname=next ;;
2195 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2196 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2199 elif $test -f /etc/kconfig; then
2201 if test "$lns" = "$ln -s"; then
2203 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2205 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2212 if test -n "$DJGPP"; then
2221 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2223 'not found') osvers="$4"."$3" ;;
2224 '<3240'|'<>3240') osvers=3.2.0 ;;
2225 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2226 '=3250'|'>3250') osvers=3.2.5 ;;
2230 bsd386) osname=bsd386
2233 cygwin*) osname=cygwin
2236 *dc.osx) osname=dcosx
2242 domainos) osname=apollo
2248 dynixptx*) osname=dynixptx
2249 osvers=`echo "$4"|sed 's/^v//'`
2251 freebsd) osname=freebsd
2253 genix) osname=genix ;;
2255 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2271 netbsd*) osname=netbsd
2274 news-os) osvers="$3"
2276 4*) osname=newsos4 ;;
2280 next*) osname=next ;;
2281 POSIX-BC | posix-bc ) osname=posix-bc
2284 powerux | power_ux | powermax_os | powermaxos | \
2285 powerunix | power_unix) osname=powerux
2291 solaris) osname=solaris
2293 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2300 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2304 titanos) osname=titanos
2313 ultrix) osname=ultrix
2316 osf1|mls+) case "$5" in
2319 osvers=`echo "$3" | sed 's/^[xvt]//'`
2321 hp*) osname=hp_osf1 ;;
2322 mips) osname=mips_osf1 ;;
2325 unixware) osname=svr5
2331 $2) case "$osname" in
2335 : svr4.x or possibly later
2345 if test -f /stand/boot ; then
2346 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2347 if test -n "$INITPROG" -a -f "$INITPROG"; then
2348 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2349 if test -n "$isesix"; then
2357 *) if test -f /etc/systemid; then
2359 set `echo $3 | $sed 's/\./ /g'` $4
2360 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2362 elif $test -f $src/hints/sco_$1_$2.sh; then
2364 elif $test -f $src/hints/sco_$1.sh; then
2369 '') : Still unknown. Probably a generic Sys V.
2378 *) case "$osname" in
2379 '') : Still unknown. Probably a generic BSD.
2387 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2388 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2389 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2392 $rm -f UU/kernel.what
2393 elif test -d c:/.; then
2400 : Now look for a hint file osname_osvers, unless one has been
2401 : specified already.
2404 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2405 : Also try without trailing minor version numbers.
2406 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2407 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2408 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2409 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2412 *) case "$osvers" in
2415 *) if $test -f $src/hints/$file.sh ; then
2417 elif $test -f $src/hints/$xfile.sh ; then
2419 elif $test -f $src/hints/$xxfile.sh ; then
2421 elif $test -f $src/hints/$xxxfile.sh ; then
2423 elif $test -f $src/hints/$xxxxfile.sh ; then
2425 elif $test -f "$src/hints/${osname}.sh" ; then
2434 if $test -f Policy.sh ; then
2437 none) dflt="Policy" ;;
2438 *) dflt="Policy $dflt" ;;
2443 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2447 if $test -f Policy.sh ; then
2450 There's also a Policy hint file available, which should make the
2451 site-specific (policy) questions easier to answer.
2458 You may give one or more space-separated answers, or "none" if appropriate.
2459 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2460 is a good thing. DO NOT give a wrong version or a wrong OS.
2464 rp="Which of these apply, if any?"
2467 for file in $tans; do
2468 if $test X$file = XPolicy -a -f Policy.sh; then
2470 $cat Policy.sh >> UU/config.sh
2471 elif $test -f $src/hints/$file.sh; then
2472 . $src/hints/$file.sh
2473 $cat $src/hints/$file.sh >> UU/config.sh
2474 elif $test X$tans = X -o X$tans = Xnone ; then
2477 : Give one chance to correct a possible typo.
2478 echo "$file.sh does not exist"
2480 rp="hint to use instead?"
2482 for file in $ans; do
2483 if $test -f "$src/hints/$file.sh"; then
2484 . $src/hints/$file.sh
2485 $cat $src/hints/$file.sh >> UU/config.sh
2486 elif $test X$ans = X -o X$ans = Xnone ; then
2489 echo "$file.sh does not exist -- ignored."
2496 : Remember our hint file for later.
2497 if $test -f "$src/hints/$file.sh" ; then
2507 echo "Fetching default answers from $config_sh..." >&4
2511 cp $config_sh config.sh 2>/dev/null
2521 test "$override" && . ./optdef.sh
2522 myuname="$newmyuname"
2524 : Restore computed paths
2525 for file in $loclist $trylist; do
2526 eval $file="\$_$file"
2531 Configure uses the operating system name and version to set some defaults.
2532 The default value is probably right if the name rings a bell. Otherwise,
2533 since spelling matters for me, either accept the default or answer "none"
2540 ''|' '|none) dflt=none ;;
2541 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2544 *) dflt="$osname" ;;
2546 rp="Operating system name?"
2550 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2556 ''|' '|none) dflt=none ;;
2557 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2558 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2560 ''|' ') dflt=none ;;
2565 *) dflt="$osvers" ;;
2567 rp="Operating system version?"
2577 : who configured the system
2578 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2579 cf_by=`(logname) 2>/dev/null`
2582 cf_by=`(whoami) 2>/dev/null`
2584 "") cf_by=unknown ;;
2588 : set up the script used to warn in case of inconsistency
2595 echo "*** WHOA THERE!!! ***" >&4
2596 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2597 rp=" Keep the $hint value?"
2600 y) td=$was; tu=$was;;
2604 : function used to set $1 to $val
2605 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2607 $define$undef) . ./whoa; eval "$var=\$td";;
2608 $undef$define) . ./whoa; eval "$var=\$tu";;
2609 *) eval "$var=$val";;
2614 Perl can be built to take advantage of threads on some systems.
2615 To do so, Configure must be run with -Dusethreads.
2617 Note that threading is a highly experimental feature, and
2618 some known race conditions still remain. If you choose to try
2619 it, be very sure to not actually deploy it for production
2620 purposes. README.threads has more details, and is required
2621 reading if you enable threads.
2623 case "$usethreads" in
2624 $define|true|[yY]*) dflt='y';;
2627 rp='Build a threading Perl?'
2630 y|Y) val="$define" ;;
2636 case "$usethreads" in
2640 As of 5.5.640, Perl has two different internal threading implementations,
2641 the 5.005 version (5005threads) and an interpreter-based version
2642 (ithreads) that has one interpreter per thread. Both are very
2643 experimental. This arrangement exists to help developers work out
2644 which one is better.
2646 If you're a casual user, you probably don't want interpreter-threads
2647 at this time. There doesn't yet exist a way to create threads from
2648 within Perl in this model, i.e., "use Thread;" will NOT work.
2650 : Default to ithreads unless overridden on command line or with
2653 case "$use5005threads" in
2654 $define|true|[yY]*) dflt='n';;
2656 case "$useithreads" in
2657 $undef|false|[nN]*) dflt='n';;
2659 rp='Use interpreter-based ithreads?'
2662 y|Y) val="$define" ;;
2667 : Now set use5005threads to the opposite value.
2668 case "$useithreads" in
2669 $define) val="$undef" ;;
2676 useithreads="$undef"
2677 use5005threads="$undef"
2681 case "$d_oldpthreads" in
2682 '') : Configure tests would be welcome here. For now, assume undef.
2684 *) val="$d_oldpthreads" ;;
2690 case "$usethreads" in
2691 "$define"|true|[yY]*)
2692 : Look for a hint-file generated 'call-back-unit'. If the
2693 : user has specified that a threading perl is to be built,
2694 : we may need to set or change some other defaults.
2695 if $test -f usethreads.cbu; then
2696 echo "Your platform has some specific hints for threaded builds, using them..."
2700 (Your platform doesn't have any specific hints for threaded builds.
2701 Assuming POSIX threads, then.)
2709 Perl can be built so that multiple Perl interpreters can coexist
2710 within the same Perl executable.
2713 case "$useithreads" in
2716 This multiple interpreter support is required for interpreter-based threads.
2721 echo 'Normally you do not need this and you should answer no.'
2722 case "$usemultiplicity" in
2723 $define|true|[yY]*) dflt='y';;
2726 rp='Build Perl for multiplicity?'
2729 y|Y) val="$define" ;;
2737 : determine where manual pages are on this system
2741 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2742 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2743 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2744 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2745 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2746 sysman=`./loc . /usr/man/man1 $syspath`
2749 if $test -d "$sysman"; then
2750 echo "System manual is in $sysman." >&4
2752 echo "Could not find manual pages in source form." >&4
2755 : see what memory models we can support
2758 $cat >pdp11.c <<'EOP'
2767 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2768 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2769 dflt='unsplit split'
2771 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2774 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2779 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2782 if $test -d /lib/large || $test -d /usr/lib/large; then
2785 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2794 Some systems have different model sizes. On most systems they are called
2795 small, medium, large, and huge. On the PDP11 they are called unsplit and
2796 split. If your system doesn't support different memory models, say "none".
2797 If you wish to force everything to one memory model, say "none" here and
2798 put the appropriate flags later when it asks you for other cc and ld flags.
2799 Venix systems may wish to put "none" and let the compiler figure things out.
2800 (In the following question multiple model names should be space separated.)
2802 The default for most systems is "none".
2805 rp="Which memory models are supported?"
2820 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2821 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2828 rp="What flag indicates separate I and D space?"
2836 *large*|*small*|*medium*|*huge*)
2843 rp="What flag indicates large model?"
2853 *huge*) case "$huge" in
2857 rp="What flag indicates huge model?"
2867 *medium*) case "$medium" in
2871 rp="What flag indicates medium model?"
2878 *) medium="$large";;
2881 *small*) case "$small" in
2885 rp="What flag indicates small model?"
2896 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2899 $rm -f pdp11.* pdp11
2901 : make some quick guesses about what we are up against
2903 $echo $n "Hmm... $c"
2913 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2914 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2916 echo "Looks kind of like an OSF/1 system, but we'll see..."
2918 elif test `echo abc | tr a-z A-Z` = Abc ; then
2919 xxx=`./loc addbib blurfl $pth`
2920 if $test -f $xxx; then
2921 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2925 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2926 echo "Looks kind of like an extended USG system, but we'll see..."
2928 echo "Looks kind of like a USG system, but we'll see..."
2932 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2933 echo "Looks kind of like a BSD system, but we'll see..."
2937 echo "Looks kind of like a Version 7 system, but we'll see..."
2940 case "$eunicefix" in
2943 There is, however, a strange, musty smell in the air that reminds me of
2944 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2948 : it so happens the Eunice I know will not run shell scripts in Unix format
2952 echo "Congratulations. You aren't running Eunice."
2956 : Detect OS2. The p_ variable is set above in the Head.U unit.
2961 I have the feeling something is not exactly right, however...don't tell me...
2962 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2967 if test -f /xenix; then
2968 echo "Actually, this looks more like a XENIX system..."
2973 echo "It's not Xenix..."
2978 if test -f /venix; then
2979 echo "Actually, this looks more like a VENIX system..."
2986 echo "Nor is it Venix..."
2989 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2990 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2993 : see if we need a special compiler
3001 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3002 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3016 On some older systems the default C compiler will not resolve multiple global
3017 references that happen to have the same name. On some such systems the "Mcc"
3018 command may be used to force these to be resolved. On other systems a "cc -M"
3019 command is required. (Note that the -M flag on other systems indicates a
3020 memory model to use!) If you have the Gnu C compiler, you might wish to use
3026 rp="Use which C compiler?"
3034 rp="Use which C compiler?"
3038 : Look for a hint-file generated 'call-back-unit'. Now that the
3039 : user has specified the compiler, we may need to set or change some
3041 if $test -f cc.cbu; then
3045 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3046 $cat >gccvers.c <<EOM
3051 printf("%s\n", __VERSION__);
3053 printf("%s\n", "1");
3059 if $cc -o gccvers gccvers.c; then
3060 gccversion=`./gccvers`
3061 case "$gccversion" in
3062 '') echo "You are not using GNU cc." ;;
3063 *) echo "You are using GNU cc $gccversion."
3068 echo "*** WHOA THERE!!! ***" >&4
3069 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3070 case "$knowitall" in
3072 echo " You'd better start hunting for one and let me know about it." >&4
3078 case "$gccversion" in
3079 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3082 : decide how portable to be. Allow command line overrides.
3083 case "$d_portable" in
3085 *) d_portable="$define" ;;
3088 : set up shell script to do ~ expansion
3094 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3097 if $test -f /bin/csh; then
3098 /bin/csh -f -c "glob \$1"
3103 name=\`$expr x\$1 : '..\([^/]*\)'\`
3104 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3105 if $test ! -d "\$dir"; then
3107 echo "\$me: can't locate home directory for: \$name" >&2
3112 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3128 : now set up to get a file name
3132 cat <<'EOSC' >>getfile
3148 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3149 fn=`echo $fn | sed 's/(.*)//'`
3155 loc_file=`expr $fn : '.*:\(.*\)'`
3156 fn=`expr $fn : '\(.*\):.*'`
3164 */*) fullpath=true;;
3173 *e*) exp_file=true;;
3176 *p*) nopath_ok=true;;
3181 *d*) type='Directory';;
3182 *l*) type='Locate';;
3187 Locate) what='File';;
3192 case "$d_portable" in
3200 while test "$type"; do
3205 true) rp="$rp (~name ok)";;
3208 if test -f UU/getfile.ok && \
3209 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3228 value=`UU/filexp $ans`
3231 if test "$ans" != "$value"; then
3232 echo "(That expands to $value on this system.)"
3246 /*) value="$ansexp" ;;
3251 echo "I shall only accept a full path name, as in /bin/ls." >&4
3252 echo "Use a ! shell escape if you wish to check pathnames." >&4
3255 echo "Please give a full path name, starting with slash." >&4
3258 echo "Note that using ~name is ok provided it expands well." >&4
3271 for fp in $gfpth; do
3272 if test "X$fp" = X.; then
3277 if test -f "$pf"; then
3279 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3281 echo "($value is not a plain file, but that's ok.)"
3284 if test X"$type" = X; then
3291 for fp in $gfpth; do
3292 if test "X$fp" = X.; then
3297 if test -d "$pf"; then
3305 if test -d "$ansexp"; then
3306 echo "(Looking for $loc_file in directory $value.)"
3307 value="$value/$loc_file"
3308 ansexp="$ansexp/$loc_file"
3310 if test -f "$ansexp"; then
3313 case "$nopath_ok" in
3314 true) case "$value" in
3316 *) echo "Assuming $value will be in people's path."
3332 if test "$fastread" = yes; then
3337 rp="$what $value doesn't exist. Use that name anyway?"
3356 test "X$gfpthkeep" != Xy && gfpth=""
3359 : What should the include directory be ?
3361 $echo $n "Hmm... $c"
3365 if $test -f /bin/mips && /bin/mips; then
3366 echo "Looks like a MIPS system..."
3367 $cat >usr.c <<'EOCP'
3368 #ifdef SYSTYPE_BSD43
3372 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3373 dflt='/bsd43/usr/include'
3377 mips_type='System V'
3379 $rm -f usr.c usr.out
3380 echo "and you're compiling with the $mips_type compiler and libraries."
3384 echo "Doesn't look like a MIPS system."
3394 case "$xxx_prompt" in
3397 rp='Where are the include files you want to use?'
3405 : see how we invoke the C preprocessor
3407 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3408 cat <<'EOT' >testcpp.c
3414 if test ! -f cppstdin; then
3415 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3416 # AIX cc -E doesn't show the absolute headerfile
3417 # locations but we'll cheat by using the -M flag.
3418 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
3420 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3423 echo "Keeping your $hint cppstdin wrapper."
3426 wrapper=`pwd`/cppstdin
3430 if $test "X$cppstdin" != "X" && \
3431 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3432 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3434 echo "You used to use $cppstdin $cppminus so we'll use that again."
3436 '') echo "But let's see if we can live without a wrapper..." ;;
3438 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3439 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3441 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3444 echo "(However, $cpprun $cpplast does not work, let's see...)"
3452 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3459 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3460 $cc -E <testcpp.c >testcpp.out 2>&1; \
3461 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3462 echo "Yup, it does."
3465 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3466 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3467 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3468 echo "Yup, it does."
3471 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3472 $cc -P <testcpp.c >testcpp.out 2>&1; \
3473 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3474 echo "Yipee, that works!"
3477 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3478 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3479 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3480 echo "At long last!"
3483 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3484 $cpp <testcpp.c >testcpp.out 2>&1; \
3485 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3489 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3490 $cpp - <testcpp.c >testcpp.out 2>&1; \
3491 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3492 echo "Hooray, it works! I was beginning to wonder."
3495 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3496 $wrapper <testcpp.c >testcpp.out 2>&1; \
3497 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3503 rp="No dice. I can't find a C preprocessor. Name one:"
3507 $x_cpp <testcpp.c >testcpp.out 2>&1
3508 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3509 echo "OK, that will do." >&4
3511 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3526 echo "Perhaps can we force $cc -E using a wrapper..."
3527 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3528 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3534 echo "Nope, we'll have to live without it..."
3548 "$wrapper"|'cppstdin') ;;
3549 *) $rm -f $wrapper;;
3551 $rm -f testcpp.c testcpp.out
3553 : Set private lib path
3556 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3561 '') dlist="$loclibpth $plibpth $glibpth";;
3562 *) dlist="$libpth";;
3565 : Now check and see which directories actually exist, avoiding duplicates
3569 if $test -d $xxx; then
3572 *) libpth="$libpth $xxx";;
3578 Some systems have incompatible or broken versions of libraries. Among
3579 the directories listed in the question below, please remove any you
3580 know not to be holding relevant libraries, and add any that are needed.
3581 Say "none" for none.
3592 rp="Directories to use for library searches?"
3599 : compute shared library extension
3602 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3612 On some systems, shared libraries may be available. Answer 'none' if
3613 you want to suppress searching of shared libraries for the remainder
3614 of this configuration.
3617 rp='What is the file extension used for shared libraries?'
3621 : Define several unixisms.
3622 : Hints files or command line option can be used to override them.
3623 : The convoluted testing is in case hints files set either the old
3626 '') case "$exe_ext" in
3628 *) _exe="$exe_ext" ;;
3633 '') case "$lib_ext" in
3640 '') case "$obj_ext" in
3647 '') case "$path_sep" in
3658 : Which makefile gets called first. This is used by make depend.
3659 case "$firstmakefile" in
3660 '') firstmakefile='makefile';;
3665 Perl can be built to use the SOCKS proxy protocol library. To do so,
3666 Configure must be run with -Dusesocks.
3668 Normally you do not need this and you should answer no.
3672 $define|true|[yY]*) dflt='y';;
3675 rp='Build Perl for SOCKS?'
3678 y|Y) val="$define" ;;
3684 : Looking for optional libraries
3686 echo "Checking for optional libraries..." >&4
3691 case "$libswanted" in
3692 '') libswanted='c_s';;
3696 libswanted="$libswanted socks5 socks5_sh"
3699 for thislib in $libswanted; do
3702 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`
3703 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X" ; then
3705 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3707 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3709 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3711 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3713 libname=${thislib}_s
3714 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3717 if $test -f "$xxx"; then
3720 if $test -f "$xxx"; then
3722 shared) echo "Found -l$libname (shared)." ;;
3723 static) echo "Found -l$libname." ;;
3724 *) echo "Found -l$libname ($libstyle)." ;;
3728 *) dflt="$dflt -l$libname"
3729 libsfound="$libsfound $xxx"
3731 libsfiles="$libsfiles $yyy"
3732 yyy=`echo $xxx|sed "s@/$yyy\\$@@"`
3733 case " $libsdirs " in
3735 *) libsdirs="$libsdirs $yyy" ;;
3740 echo "No -l$thislib."
3751 ' '|'') dflt='none';;
3756 In order to compile $package on your machine, a number of libraries
3757 are usually needed. Include any other special libraries here as well.
3758 Say "none" for none. The default list is almost always right.
3762 rp="What libraries to use?"
3769 : determine optimization, if desired, or use for debug flag also
3771 ' '|$undef) dflt='none';;
3773 *) dflt="$optimize";;
3777 By default, $package compiles with the -O flag to use the optimizer.
3778 Alternately, you might want to use the symbolic debugger, which uses
3779 the -g flag (on traditional Unix systems). Either flag can be
3780 specified here. To use neither flag, specify the word "none".
3783 rp="What optimizer/debugger flag should be used?"
3787 'none') optimize=" ";;
3791 : We will not override a previous value, but we might want to
3792 : augment a hint file
3794 default|recommended)
3795 case "$gccversion" in
3796 1*) dflt='-fpcc-struct-return' ;;
3799 *-g*) dflt="$dflt -DDEBUGGING";;
3801 case "$gccversion" in
3802 2*) if test -d /etc/conf/kconfig.d &&
3803 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3809 case "$gccversion" in
3813 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3814 echo 'int main(void) { return 0; }' > gcctest.c
3815 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3816 echo "Yes, it does." 2>&1
3819 echo "Leaving current flags $ccflags alone." 2>&1
3821 *) dflt="$dflt -fno-strict-aliasing" ;;
3824 echo "Nope, it doesn't, but that's ok." 2>&1
3831 case "$mips_type" in
3832 *BSD*|'') inclwanted="$locincpth $usrinc";;
3833 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3835 for thisincl in $inclwanted; do
3836 if $test -d $thisincl; then
3837 if $test x$thisincl != x$usrinc; then
3840 *) dflt="$dflt -I$thisincl";;
3846 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3848 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3856 *) dflt="$dflt -D$2";;
3860 set signal.h LANGUAGE_C; eval $inctest
3864 ccflags="$ccflags -DSOCKS"
3869 default|recommended) dflt="$ccflags $dflt" ;;
3870 *) dflt="$ccflags";;
3878 Your C compiler may want other flags. For this question you should include
3879 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3880 but you should NOT include libraries or ld flags like -lwhatever. If you
3881 want $package to honor its debug switch, you should include -DDEBUGGING here.
3882 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3884 To use no flags, specify the word "none".
3890 rp="Any additional cc flags?"
3897 : the following weeds options from ccflags that are of no interest to cpp
3899 case "$gccversion" in
3900 1*) cppflags="$cppflags -D__GNUC__"
3902 case "$mips_type" in
3904 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3910 echo "Let me guess what the preprocessor flags are..." >&4
3924 *) ftry="$previous $flag";;
3926 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3927 >cpp1.out 2>/dev/null && \
3928 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3929 >cpp2.out 2>/dev/null && \
3930 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3931 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3933 cppflags="$cppflags $ftry"
3943 *-*) echo "They appear to be: $cppflags";;
3945 $rm -f cpp.c cpp?.out
3949 : flags used in final linking phase
3951 '') if ./venix; then
3957 *-posix*) dflt="$dflt -posix" ;;
3960 *) dflt="$ldflags";;
3963 : Try to guess additional flags to pick up local libraries.
3964 for thislibdir in $libpth; do
3965 case " $loclibpth " in
3968 *"-L$thislibdir "*) ;;
3969 *) dflt="$dflt -L$thislibdir" ;;
3981 Your C linker may need flags. For this question you should
3982 include -L/whatever and any other flags used by the C linker, but you
3983 should NOT include libraries like -lwhatever.
3985 Make sure you include the appropriate -L/path flags if your C linker
3986 does not normally search all of the directories you specified above,
3989 To use no flags, specify the word "none".
3993 rp="Any additional ld flags (NOT including libraries)?"
3999 rmlist="$rmlist pdp11"
4003 echo "Checking your choice of C compiler and flags for coherency..." >&4
4004 $cat > try.c <<'EOF'
4006 int main() { printf("Ok\n"); exit(0); }
4008 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4010 $cat >try.msg <<'EOM'
4011 I've tried to compile and run the following simple program:
4014 $cat try.c >> try.msg
4016 $cat >> try.msg <<EOM
4023 and I got the following output:
4027 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4028 if sh -c './try' >>try.msg 2>&1; then
4032 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4035 cat >> try.msg <<'EOQS'
4036 If $libs contains -lsfio, and sfio is mis-configured, then it
4037 sometimes (apparently) runs and exits with a 0 status, but with no
4038 output! It may have to do with sfio's use of _exit vs. exit.
4041 rp="You have a big problem. Shall I abort Configure"
4048 echo "The program compiled OK, but exited with status $?." >>try.msg
4049 rp="You have a problem. Shall I abort Configure"
4053 echo "I can't compile the test program." >>try.msg
4054 rp="You have a BIG problem. Shall I abort Configure"
4060 case "$knowitall" in
4062 echo "(The supplied flags or libraries might be incorrect.)"
4070 *) echo "Ok. Stopping Configure." >&4
4075 n) echo "OK, that should do.";;
4077 $rm -f try try.* core
4079 : define an is-a-typedef? function
4080 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4082 "") inclist="sys/types.h";;
4084 eval "varval=\$$var";
4088 for inc in $inclist; do
4089 echo "#include <$inc>" >>temp.c;
4091 echo "#ifdef $type" >> temp.c;
4092 echo "printf(\"We have $type\");" >> temp.c;
4093 echo "#endif" >> temp.c;
4094 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4095 if $contains $type temp.E >/dev/null 2>&1; then
4101 *) eval "$var=\$varval";;
4104 : define an is-a-typedef? function that prompts if the type is not available.
4105 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4107 "") inclist="sys/types.h";;
4109 eval "varval=\$$var";
4113 for inc in $inclist; do
4114 echo "#include <$inc>" >>temp.c;
4116 echo "#ifdef $type" >> temp.c;
4117 echo "printf(\"We have $type\");" >> temp.c;
4118 echo "#endif" >> temp.c;
4119 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4121 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4122 if $contains $type temp.E >/dev/null 2>&1; then
4123 echo "$type found." >&4;
4126 echo "$type NOT found." >&4;
4132 *) eval "$var=\$varval";;
4135 : define a shorthand compile call
4139 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4140 : define a shorthand compile call for compilations that should be ok.
4144 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4146 : check for lengths of integral types
4150 echo "Checking to see how big your integers are..." >&4
4151 $cat >intsize.c <<'EOCP'
4155 printf("intsize=%d;\n", (int)sizeof(int));
4156 printf("longsize=%d;\n", (int)sizeof(long));
4157 printf("shortsize=%d;\n", (int)sizeof(short));
4162 if eval $compile_ok && ./intsize > /dev/null; then
4164 echo "Your integers are $intsize bytes long."
4165 echo "Your long integers are $longsize bytes long."
4166 echo "Your short integers are $shortsize bytes long."
4170 Help! I can't compile and run the intsize test program: please enlighten me!
4171 (This is probably a misconfiguration in your system or libraries, and
4172 you really ought to fix it. Still, I'll try anyway.)
4176 rp="What is the size of an integer (in bytes)?"
4180 rp="What is the size of a long integer (in bytes)?"
4184 rp="What is the size of a short integer (in bytes)?"
4190 $rm -f intsize intsize.*
4192 : see what type lseek is declared as in the kernel
4193 rp="What is the type used for lseek's offset on this system?"
4194 set off_t lseektype long stdio.h sys/types.h
4198 $echo $n "Checking to see how big your file offsets are...$c" >&4
4200 #include <sys/types.h>
4204 printf("%d\n", (int)sizeof($lseektype));
4209 if eval $compile_ok; then
4211 $echo " $lseeksize bytes." >&4
4215 echo "(I can't seem to compile the test program. Guessing...)"
4216 rp="What is the size of your file offsets (in bytes)?"
4222 : see what type file positions are declared as in the library
4223 rp="What is the type for file position used by fsetpos()?"
4224 set fpos_t fpostype long stdio.h sys/types.h
4229 *_t) zzz="$fpostype" ;;
4232 $echo $n "Checking the size of $zzz...$c" >&4
4234 #include <sys/types.h>
4237 printf("%d\n", (int)sizeof($fpostype));
4242 if eval $compile_ok; then
4247 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4250 echo " $fpossize bytes."
4256 echo "(I can't compile the test program. Guessing...)" >&4
4257 rp="What is the size of your file positions (in bytes)?"
4264 case "$lseeksize:$fpossize" in
4267 You can have files larger than 2 gigabytes.
4272 Perl can be built to understand large files (files larger than 2 gigabytes)
4273 on some systems. To do so, Configure must be run with -Duselargefiles.
4275 If this doesn't make any sense to you, just accept the default 'y'.
4277 case "$uselargefiles" in
4278 "$undef"|false|[nN]*) dflt='n' ;;
4281 rp='Try to understand large files, if available?'
4284 y|Y) val="$define" ;;
4291 case "$uselargefiles" in
4293 : Look for a hint-file generated 'call-back-unit'. If the
4294 : user has specified that a large files perl is to be built,
4295 : we may need to set or change some other defaults.
4296 if $test -f uselfs.cbu; then
4297 echo "Your platform has some specific hints for large file builds, using them..."
4300 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4302 #include <sys/types.h>
4306 printf("%d\n", (int)sizeof($lseektype));
4311 if eval $compile_ok; then
4313 $echo " $lseeksize bytes." >&4
4317 echo "(I can't seem to compile the test program. Guessing...)"
4318 rp="What is the size of your file offsets (in bytes)?"
4323 *_t) zzz="$fpostype" ;;
4326 $echo $n "Rechecking the size of $zzz...$c" >&4
4328 #include <sys/types.h>
4331 printf("%d\n", (int)sizeof($fpostype));
4336 if eval $compile_ok; then
4341 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4344 echo " $fpossize bytes."
4350 echo "(I can't compile the test program. Guessing...)" >&4
4351 rp="What is the size of your file positions (in bytes)?"
4361 case "$usemorebits" in
4362 "$define"|true|[yY]*)
4364 uselongdouble="$define"
4365 usemorebits="$define"
4367 *) usemorebits="$undef"
4372 case "$intsize:$longsize" in
4375 You have natively 64-bit integers.
4380 Perl can be built to take advantage of 64-bit integer types
4381 on some systems. To do so, Configure must be run with -Duse64bits.
4383 If this doesn't make any sense to you, just accept the default.
4385 case "$use64bits" in
4386 $define|true|[yY]*) dflt='y';;
4389 rp='Try to use 64-bit integers, if available?'
4392 y|Y) val="$define" ;;
4400 case "$archname64" in
4401 '') archname64='' ;; # not a typo
4404 case "$use64bits" in
4405 "$define"|true|[yY]*)
4406 : Look for a hint-file generated 'call-back-unit'. If the
4407 : user has specified that a 64-bit perl is to be built,
4408 : we may need to set or change some other defaults.
4409 if $test -f use64bits.cbu; then
4410 echo "Your platform has some specific hints for 64-bit builds, using them..."
4414 (Your platform doesn't have any specific hints for 64-bit builds.)
4416 case "$intsize:$longsize" in
4418 (This is probably okay, as your system is a natively 64-bit system.)
4422 case "$gccversion" in
4424 *) case "$ccflags" in
4425 *-DUSE_LONG_LONG*) ;;
4427 But since you seem to be using gcc, I will now add -DUSE_LONG_LONG
4428 to the compilation flags.
4430 ccflags="$ccflags -DUSE_LONG_LONG"
4439 : determine the architecture name
4441 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4442 tarch=`arch`"-$osname"
4443 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4444 if uname -m > tmparch 2>&1 ; then
4445 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4446 -e 's/$/'"-$osname/" tmparch`
4454 case "$myarchname" in
4457 echo "(Your architecture name used to be $myarchname.)"
4464 *) dflt="$archname";;
4466 rp='What is your architecture name'
4469 case "$usethreads" in
4471 echo "Threads selected." >&4
4473 *-thread*) echo "...and architecture name already has -thread." >&4
4475 *) archname="$archname-thread"
4476 echo "...setting architecture name to $archname." >&4
4481 case "$usemultiplicity" in
4483 echo "Multiplicity selected." >&4
4485 *-multi*) echo "...and architecture name already has -multi." >&4
4487 *) archname="$archname-multi"
4488 echo "...setting architecture name to $archname." >&4
4493 case "$use64bits" in
4495 case "$archname64" in
4500 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4502 *) archname="$archname-$archname64"
4503 echo "...setting architecture name to $archname." >&4
4510 : determine root of directory hierarchy where package will be installed.
4513 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4521 By default, $package will be installed in $dflt/bin, manual pages
4522 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4523 installation directories. Typically this is something like /usr/local.
4524 If you wish to have binaries under /usr/bin but other parts of the
4525 installation under /usr/local, that's ok: you will be prompted
4526 separately for each of the installation directories, the prefix being
4527 only used to set the defaults.
4531 rp='Installation prefix to use?'
4539 *) oldprefix="$prefix";;
4549 $define|true) afs=true ;;
4550 $undef|false) afs=false ;;
4551 *) if test -d /afs; then
4559 echo "AFS may be running... I'll be extra cautious then..." >&4
4561 echo "AFS does not seem to be running..." >&4
4564 : determine installation prefix for where package is to be installed.
4568 Since you are running AFS, I need to distinguish the directory in which
4569 files will reside from the directory in which they are installed (and from
4570 which they are presumably copied to the former directory by occult means).
4573 case "$installprefix" in
4574 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4575 *) dflt="$installprefix";;
4580 In some special cases, particularly when building $package for distribution,
4581 it is convenient to distinguish between the directory in which files should
4582 be installed from the directory ($prefix) in which they
4583 will eventually reside. For most users, these two directories are the same.
4586 case "$installprefix" in
4588 *) dflt=$installprefix;;
4592 rp='What installation prefix should I use for installing files?'
4594 installprefix="$ans"
4595 installprefixexp="$ansexp"
4597 : set the prefixit variable, to compute a suitable default value
4598 prefixit='case "$3" in
4600 case "$oldprefix" in
4601 "") eval "$1=\"\$$2\"";;
4608 ""|" ") eval "$1=\"\$$2\"";;
4614 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4616 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4617 /*-$oldprefix/*|\~*-$oldprefix/*)
4618 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4619 *) eval "$1=\"\$$2\"";;
4623 : set the base revision
4627 : get the patchlevel
4629 echo "Getting the current patchlevel..." >&4
4630 if $test -r $rsrc/patchlevel.h;then
4631 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4632 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4633 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4634 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4635 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4643 $echo $n "(You have $package" $c
4646 *) $echo $n " $baserev" $c ;;
4648 $echo $n " patchlevel $patchlevel" $c
4649 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4653 : XXX Should be a Configure test for double-dots in filenames.
4654 version=`echo $baserev $patchlevel $subversion | \
4655 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4656 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4657 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4660 version=`echo $baserev $patchlevel $subversion | \
4661 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4662 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4663 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4666 : Special case the 5.005_xx maintenance series, which used 5.005
4667 : without any subversion label as a subdirectory in $sitelib
4668 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4669 api_versionstring='5.005'
4672 : determine installation style
4673 : For now, try to deduce it from prefix unless it is already set.
4674 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4675 case "$installstyle" in
4676 '') case "$prefix" in
4677 *perl*) dflt='lib';;
4678 *) dflt='lib/perl5' ;;
4681 *) dflt='lib/perl5' ;;
4683 : Probably not worth prompting for this since we prompt for all
4684 : the directories individually, and the prompt would be too long and
4688 : determine where private library files go
4689 : Usual default is /usr/local/lib/perl5/$version.
4690 : Also allow things like /opt/perl/lib/$version, since
4691 : /opt/perl/lib/perl5... would be redundant.
4692 : The default "style" setting is made in installstyle.U
4693 case "$installstyle" in
4694 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4695 *) set dflt privlib lib/$version ;;
4700 There are some auxiliary files for $package that need to be put into a
4701 private library directory that is accessible by everyone.
4705 rp='Pathname where the private library files will reside?'
4708 privlibexp="$ansexp"
4709 : Change installation prefix, if necessary.
4710 if $test X"$prefix" != X"$installprefix"; then
4711 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4713 installprivlib="$privlibexp"
4716 : set the prefixup variable, to restore leading tilda escape
4717 prefixup='case "$prefixexp" in
4719 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4722 : determine where public architecture dependent libraries go
4725 : privlib default is /usr/local/lib/$package/$version
4726 : archlib default is /usr/local/lib/$package/$version/$archname
4727 : privlib may have an optional trailing /share.
4728 tdflt=`echo $privlib | $sed 's,/share$,,'`
4729 tdflt=$tdflt/$archname
4738 $spackage contains architecture-dependent library files. If you are
4739 sharing libraries in a heterogeneous environment, you might store
4740 these files in a separate location. Otherwise, you can just include
4741 them with the rest of the public library files.
4745 rp='Where do you want to put the public architecture-dependent libraries?'
4748 archlibexp="$ansexp"
4749 if $test X"$archlib" = X"$privlib"; then
4754 : Change installation prefix, if necessary.
4755 if $test X"$prefix" != X"$installprefix"; then
4756 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4758 installarchlib="$archlibexp"
4762 : Binary compatibility with 5.005 is not possible for builds
4763 : with advanced features
4764 case "$usethreads$usemultiplicity" in
4766 bincompat5005="$undef"
4767 d_bincompat5005="$undef"
4771 Perl 5.006 can be compiled for binary compatibility with 5.005.
4772 If you decide to do so, you will be able to continue using most
4773 of the extensions that were compiled for Perl 5.005.
4776 case "$bincompat5005$d_bincompat5005" in
4777 *"$undef"*) dflt=n ;;
4780 rp='Binary compatibility with Perl 5.005?'
4783 y*) val="$define" ;;
4788 case "$d_bincompat5005" in
4790 bincompat5005="$define"
4792 *) bincompat5005="$undef"
4793 d_bincompat5005="$undef"
4800 : see if setuid scripts can be secure
4803 Some kernels have a bug that prevents setuid #! scripts from being
4804 secure. Some sites have disabled setuid #! scripts because of this.
4806 First let's decide if your kernel supports secure setuid #! scripts.
4807 (If setuid #! scripts would be secure but have been disabled anyway,
4808 don't say that they are secure if asked.)
4813 if $test -d /dev/fd; then
4814 echo "#!$ls" >reflect
4815 chmod +x,u+s reflect
4816 ./reflect >flect 2>&1
4817 if $contains "/dev/fd" flect >/dev/null; then
4818 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4822 If you are not sure if they are secure, I can check but I'll need a
4823 username and password different from the one you are using right now.
4824 If you don't have such a username or don't want me to test, simply
4828 rp='Other username to test security of setuid scripts with?'
4833 case "$d_suidsafe" in
4834 '') echo "I'll assume setuid scripts are *not* secure." >&4
4837 echo "Well, the $hint value is *not* secure." >&4
4839 *) echo "Well, the $hint value *is* secure." >&4
4844 $rm -f reflect flect
4845 echo "#!$ls" >reflect
4846 chmod +x,u+s reflect
4849 echo '"su" will (probably) prompt you for '"$ans's password."
4850 su $ans -c './reflect >flect'
4851 if $contains "/dev/fd" flect >/dev/null; then
4852 echo "Okay, it looks like setuid scripts are secure." >&4
4855 echo "I don't think setuid scripts are secure." >&4
4860 rp='Does your kernel have *secure* setuid scripts?'
4863 [yY]*) val="$define";;
4868 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4869 echo "(That's for file descriptors, not floppy disks.)"
4875 $rm -f reflect flect
4877 : now see if they want to do setuid emulation
4880 case "$d_suidsafe" in
4883 echo "No need to emulate SUID scripts since they are secure here." >& 4
4887 Some systems have disabled setuid scripts, especially systems where
4888 setuid scripts cannot be secure. On systems where setuid scripts have
4889 been disabled, the setuid/setgid bits on scripts are currently
4890 useless. It is possible for $package to detect those bits and emulate
4891 setuid/setgid in a secure fashion. This emulation will only work if
4892 setuid scripts have been disabled in your kernel.
4896 "$define") dflt=y ;;
4899 rp="Do you want to do setuid/setgid emulation?"
4902 [yY]*) val="$define";;
4910 : determine filename position in cpp output
4912 echo "Computing filename position in cpp output for #include directives..." >&4
4913 echo '#include <stdio.h>' > foo.c
4916 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4917 $grep '^[ ]*#.*stdio\.h' | \
4918 while read cline; do
4921 while $test \$# -gt 0; do
4922 if $test -r \`echo \$1 | $tr -d '"'\`; then
4927 pos=\`expr \$pos + 1\`
4939 *) pos="${fieldn}th";;
4941 echo "Your cpp writes the filename in the $pos field of the line."
4943 : locate header file
4948 for usrincdir in $usrinc
4950 if test -f \$usrincdir/\$wanted; then
4951 echo "\$usrincdir/\$wanted"
4955 awkprg='{ print \$$fieldn }'
4956 echo "#include <\$wanted>" > foo\$\$.c
4957 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4958 $grep "^[ ]*#.*\$wanted" | \
4959 while read cline; do
4960 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4962 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4963 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4968 # status = 0: grep returned 0 lines, case statement not executed
4969 # status = 1: headerfile found
4970 # status = 2: while loop executed, no headerfile found
4974 if test \$status -eq 1; then
4981 : define an alternate in-header-list? function
4982 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4983 cont=true; xxf="echo \"<\$1> found.\" >&4";
4984 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4985 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4987 case $# in 4) instead=instead;; *) instead="at last";; esac;
4988 while $test "$cont"; do
4990 var=$2; eval "was=\$$2";
4991 if $test "$xxx" && $test -r "$xxx";
4993 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4996 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4997 set $yyy; shift; shift; yyy=$@;
4998 case $# in 0) cont="";;
4999 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5000 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5001 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5002 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5006 do set $yyy; var=$2; eval "was=\$$2";
5007 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5008 set $yyy; shift; shift; yyy=$@;
5011 : see if this is a malloc.h system
5012 set malloc.h i_malloc
5015 : see if stdlib is available
5016 set stdlib.h i_stdlib
5019 : determine which malloc to compile in
5021 case "$usemymalloc" in
5022 ''|[yY]*|true|$define) dflt='y' ;;
5025 rp="Do you wish to attempt to use the malloc that comes with $package?"
5031 mallocsrc='malloc.c'
5032 mallocobj="malloc$_o"
5033 d_mymalloc="$define"
5036 : Remove malloc from list of libraries to use
5037 echo "Removing unneeded -lmalloc from library list" >&4
5038 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5041 echo "libs = $libs" >&4
5053 : compute the return types of malloc and free
5055 $cat >malloc.c <<END
5059 #include <sys/types.h>
5073 case "$malloctype" in
5075 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5082 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5086 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5093 echo "Your system uses $freetype free(), it would seem." >&4
5097 The installation process will also create a directory for
5098 vendor-supplied add-ons. Vendors who supply perl with their system
5099 may find it convenient to place all vendor-supplied files in this
5100 directory rather than in the main distribution directory. This will
5101 ease upgrades between binary-compatible maintenance versions of perl.
5103 Of course you may also use these directories in whatever way you see
5104 fit. For example, you might use them to access modules shared over a
5105 company-wide network.
5107 The default answer should be fine for most people.
5108 This causes further questions about vendor add-ons to be skipped
5109 and no vendor-specific directories will be configured for perl.
5112 rp='Do you want to configure vendor-specific add-on directories?'
5113 case "$usevendorprefix" in
5114 define|true|[yY]*) dflt=y ;;
5120 rp='Installation prefix to use for vendor-supplied add-ons?'
5121 case "$vendorprefix" in
5123 *) dflt=$vendorprefix ;;
5127 case "$vendorprefix" in
5131 *) oldvendorprefix="$prefix";;
5135 usevendorprefix="$define"
5137 vendorprefixexp="$ansexp"
5139 *) usevendorprefix="$undef"
5145 case "$vendorprefix" in
5146 '') d_vendorlib="$undef"
5150 *) d_vendorlib="$define"
5151 : determine where vendor-supplied modules go.
5152 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5153 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5154 case "$installstyle" in
5155 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5156 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5159 rp='Pathname for the vendor-supplied library files?'
5162 vendorlibexp="$ansexp"
5163 : Change installation prefix, if necessary.
5164 if $test X"$prefix" != X"$installprefix"; then
5165 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5167 installvendorlib="$vendorlibexp"
5172 : Cruising for prototypes
5174 echo "Checking out function prototypes..." >&4
5175 $cat >prototype.c <<'EOCP'
5176 int main(int argc, char *argv[]) {
5179 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5180 echo "Your C compiler appears to support function prototypes."
5183 echo "Your C compiler doesn't seem to understand function prototypes."
5190 case "$prototype" in
5192 *) ansi2knr='ansi2knr'
5197 This version of $package can only be compiled by a compiler that
5198 understands function prototypes. Unfortunately, your C compiler
5200 doesn't seem to understand them. Sorry about that.
5202 If GNU cc is available for your system, perhaps you could try that instead.
5204 Eventually, we hope to support building Perl with pre-ANSI compilers.
5205 If you would like to help in that effort, please contact <perlbug@perl.org>.
5207 Aborting Configure now.
5213 : determine where public executables go
5218 rp='Pathname where the public executables will reside?'
5220 if $test "X$ansexp" != "X$binexp"; then
5225 : Change installation prefix, if necessary.
5226 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5227 if $test X"$prefix" != X"$installprefix"; then
5228 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5230 installbin="$binexp"
5235 After $package is installed, you may wish to install various
5236 add-on modules and utilities. Typically, these add-ons will
5237 be installed under $prefix with the rest
5238 of this package. However, you may wish to install such add-ons
5239 elsewhere under a different prefix.
5241 If you do not wish to put everything under a single prefix, that's
5242 ok. You will be prompted for the individual locations; this siteprefix
5243 is only used to suggest the defaults.
5245 The default should be fine for most people.
5249 rp='Installation prefix to use for add-on modules and utilities?'
5250 : XXX Here might be another good place for an installstyle setting.
5251 case "$siteprefix" in
5253 *) dflt=$siteprefix ;;
5257 case "$siteprefix" in
5262 *) oldsiteprefix="$prefix";;
5267 siteprefixexp="$ansexp"
5269 : determine where site specific libraries go.
5270 : Usual default is /usr/local/lib/perl5/site_perl/$version
5271 : The default "style" setting is made in installstyle.U
5272 : XXX No longer works with Prefixit stuff.
5273 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5274 case "$installstyle" in
5275 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5276 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5280 The installation process will create a directory for
5281 site-specific extensions and modules. Most users find it convenient
5282 to place all site-specific files in this directory rather than in the
5283 main distribution directory.
5287 rp='Pathname for the site-specific library files?'
5290 sitelibexp="$ansexp"
5291 : Change installation prefix, if necessary.
5292 if $test X"$prefix" != X"$installprefix"; then
5293 installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5295 installsitelib="$sitelibexp"
5298 : Determine list of previous versions to include in @INC
5299 $cat > getverlist <<EOPL
5302 \$api_versionstring = "$api_versionstring";
5303 \$version = "$version";
5304 \$sitelib = "$sitelib";
5305 \$archname = "$archname";
5307 $cat >> getverlist <<'EOPL'
5308 # Can't have leading @ because metaconfig interprets it as a command!
5309 ;@inc_version_list=();
5310 $stem=dirname($sitelib);
5311 # Redo to do opendir/readdir?
5314 ;@candidates = glob("5.*");
5320 # XXX ToDo: These comparisons must be reworked when two-digit
5321 # subversions come along, so that 5.7.10 compares as greater than
5322 # 5.7.3! By that time, hope that 5.6.x is sufficiently
5323 # widespread that we can use the built-in version vectors rather
5324 # than reinventing them here. For 5.6.0, however, we must
5325 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
5326 foreach $d (@candidates) {
5327 if ($d lt $version) {
5328 if ($d ge $api_versionstring) {
5329 unshift(@inc_version_list, "$d/$archname", $d);
5331 elsif ($d ge "5.005") {
5332 unshift(@inc_version_list, $d);
5336 # Skip newer version. I.e. don't look in
5337 # 5.7.0 if we're installing 5.6.1.
5341 if (@inc_version_list) {
5342 print join(' ', @inc_version_list);
5345 # Blank space to preserve value for next Configure run.
5350 case "$inc_version_list" in
5351 '') if test -x $perl; then
5352 dflt=`$perl getverlist`
5357 $undef) dflt='none' ;;
5358 *) dflt="$inc_version_list" ;;
5362 In order to ease the process of upgrading, this version of perl
5363 can be configured to use modules built and installed with earlier
5364 versions of perl that were installed under $prefix. Specify here
5365 the list of earlier versions that this version of perl should check.
5366 If Configure detected no earlier versions of perl installed under
5367 $prefix, then the list will be empty. Answer 'none' to tell perl
5368 to not search earlier versions.
5370 The default should almost always be sensible, so if you're not sure,
5371 just accept the default.
5374 rp='List of earlier versions to include in @INC?'
5377 [Nn]one) inc_version_list=' ' ;;
5378 *) inc_version_list="$ans" ;;
5380 case "$inc_version_list" in
5382 inc_version_list_init='0';;
5383 *) inc_version_list_init=`echo $inc_version_list |
5384 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5389 : determine whether to install perl also as /usr/bin/perl
5392 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5394 Many scripts expect to perl to be installed as /usr/bin/perl.
5395 I can install the perl you are about to compile also as /usr/bin/perl
5396 (in addition to $installbin/perl).
5398 case "$installusrbinperl" in
5399 "$undef"|[nN]*) dflt='n';;
5402 rp="Do you want to install perl as /usr/bin/perl?"
5405 [yY]*) val="$define";;
5411 set installusrbinperl
5415 echo "Checking for GNU C Library..." >&4
5416 cat >gnulibc.c <<EOM
5428 if eval $compile_ok && ./gnulibc; then
5430 echo "You are using the GNU C Library"
5433 echo "You are not using the GNU C Library"
5439 : see if nm is to be used to determine whether a symbol is defined or not
5443 case "$d_gnulibc" in
5446 echo "nm probably won't work on the GNU C Library." >&4
5452 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5454 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5455 echo "'nm' won't be sufficient on this sytem." >&4
5461 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5462 if $test $dflt -gt 20; then
5472 true|$define) dflt=y;;
5479 I can use $nm to extract the symbols from your C libraries. This
5480 is a time consuming task which may generate huge output on the disk (up
5481 to 3 megabytes) but that should make the symbols extraction faster. The
5482 alternative is to skip the 'nm' extraction part and to compile a small
5483 test program instead to determine whether each symbol is present. If
5484 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5485 this may be the best solution.
5487 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5490 rp="Shall I use $nm to extract C symbols from the libraries?"
5493 [Nn]*) usenm=false;;
5502 : nm options which may be necessary
5504 '') if $test -f /mach_boot; then
5506 elif $test -d /usr/ccs/lib; then
5507 nm_opt='-p' # Solaris (and SunOS?)
5508 elif $test -f /dgux; then
5510 elif $test -f /lib64/rld; then
5511 nm_opt='-p' # 64-bit Irix
5517 : nm options which may be necessary for shared libraries but illegal
5518 : for archive libraries. Thank you, Linux.
5519 case "$nm_so_opt" in
5520 '') case "$myuname" in
5522 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5523 nm_so_opt='--dynamic'
5532 : get list of predefined functions in a handy place
5537 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5544 *) for thislib in $libs; do
5547 : Handle C library specially below.
5550 thislib=`echo $thislib | $sed -e 's/^-l//'`
5551 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5553 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5555 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5557 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5559 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5561 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5563 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5568 libnames="$libnames $try"
5570 *) libnames="$libnames $thislib" ;;
5579 for xxx in $libpth; do
5580 $test -r $1 || set $xxx/libc.$so
5581 : The messy sed command sorts on library version numbers.
5583 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5584 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5586 s/[0-9][0-9]*/0000&/g
5587 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5590 sort | $sed -e 's/^.* //'`
5593 $test -r $1 || set /usr/ccs/lib/libc.$so
5594 $test -r $1 || set /lib/libsys_s$_a
5600 if $test -r "$1"; then
5601 echo "Your (shared) C library seems to be in $1."
5603 elif $test -r /lib/libc && $test -r /lib/clib; then
5604 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5606 libc='/lib/clib /lib/libc'
5607 if $test -r /lib/syslib; then
5608 echo "(Your math library is in /lib/syslib.)"
5609 libc="$libc /lib/syslib"
5611 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5612 echo "Your C library seems to be in $libc, as you said before."
5613 elif $test -r $incpath/usr/lib/libc$_a; then
5614 libc=$incpath/usr/lib/libc$_a;
5615 echo "Your C library seems to be in $libc. That's fine."
5616 elif $test -r /lib/libc$_a; then
5618 echo "Your C library seems to be in $libc. You're normal."
5620 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5622 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5623 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5624 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5626 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5628 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5631 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5633 if $test -r "$tans"; then
5634 echo "Your C library seems to be in $tans, of all places."
5640 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5644 If the guess above is wrong (which it might be if you're using a strange
5645 compiler, or your machine supports multiple models), you can override it here.
5650 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5652 I can't seem to find your C library. I've looked in the following places:
5655 $sed 's/^/ /' libpath
5658 None of these seems to contain your C library. I need to get its name...
5663 rp='Where is your C library?'
5668 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5669 set X `cat libnames`
5672 case $# in 1) xxx=file; esac
5673 echo "Extracting names from the following $xxx for later perusal:" >&4
5675 $sed 's/^/ /' libnames >&4
5677 $echo $n "This may take a while...$c" >&4
5681 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5682 *) $nm $nm_opt $file 2>/dev/null;;
5687 $grep fprintf libc.tmp > libc.ptf
5688 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5689 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5691 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5693 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5695 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5697 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5699 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5701 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5703 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5705 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5707 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5709 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5711 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5713 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5715 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5716 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5718 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5720 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5722 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5724 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5726 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5728 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5730 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5732 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5734 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5736 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5738 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5740 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5742 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5744 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5746 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5749 $nm -p $* 2>/dev/null >libc.tmp
5750 $grep fprintf libc.tmp > libc.ptf
5751 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5752 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5758 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5760 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5761 for thisname in $libnames $libc; do
5762 $ar t $thisname >>libc.tmp
5764 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5766 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5767 # Repeat libc to extract forwarders to DLL entries too
5768 for thisname in $libnames $libc; do
5769 $ar tv $thisname >>libc.tmp
5770 # Revision 50 of EMX has bug in $ar.
5771 # it will not extract forwarders to DLL entries
5772 # Use emximp which will extract exactly them.
5773 emximp -o tmp.imp $thisname \
5775 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5776 < tmp.imp >>libc.tmp
5779 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5782 echo "$ar didn't seem to work right." >&4
5783 echo "Maybe this is a Cray...trying bld instead..." >&4
5784 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5786 for thisname in $libnames; do
5788 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5789 $ar t $thisname >>libc.tmp
5793 echo "That didn't work either. Giving up." >&4
5800 if $test -f /lib/syscalls.exp; then
5802 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5803 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5807 $rm -f libnames libpath
5809 : see if dld is available
5813 : is a C symbol defined?
5816 -v) tf=libc.tmp; tc=""; tdc="";;
5817 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5818 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5821 case "$reuseval-$4" in
5823 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5829 if $contains $tlook $tf >/dev/null 2>&1;
5834 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5835 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5843 $define) tval=true;;
5849 : define an is-in-libc? function
5850 inlibc='echo " "; td=$define; tu=$undef;
5851 sym=$1; var=$2; eval "was=\$$2";
5853 case "$reuseval$was" in
5863 echo "$sym() found." >&4;
5864 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5866 echo "$sym() NOT found." >&4;
5867 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5871 $define) echo "$sym() found." >&4;;
5872 *) echo "$sym() NOT found." >&4;;
5876 : see if dlopen exists
5883 : determine which dynamic loading, if any, to compile in
5885 dldir="ext/DynaLoader"
5898 $define) dflt='y' ;;
5901 $define) dflt='y' ;;
5903 : Does a dl_xxx.xs file exist for this operating system
5904 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5907 rp="Do you wish to use dynamic loading?"
5914 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5915 dflt="$dldir/dl_${osname}.xs"
5916 elif $test "$d_dlopen" = "$define" ; then
5917 dflt="$dldir/dl_dlopen.xs"
5918 elif $test "$i_dld" = "$define" ; then
5919 dflt="$dldir/dl_dld.xs"
5924 *) dflt="$dldir/$dlsrc"
5927 echo "The following dynamic loading files are available:"
5928 : Can not go over to $dldir because getfile has path hard-coded in.
5929 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5930 rp="Source file to use for dynamic loading"
5936 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5940 Some systems may require passing special flags to $cc -c to
5941 compile modules that will be used to create a shared library.
5942 To use no flags, say "none".
5945 case "$cccdlflags" in
5946 '') case "$gccversion" in
5947 '') case "$osname" in
5949 next) dflt='none' ;;
5950 irix*) dflt='-KPIC' ;;
5951 svr4*|esix*|solaris) dflt='-KPIC' ;;
5952 sunos) dflt='-pic' ;;
5956 *) case "$osname" in
5957 svr4*|esix*|solaris) dflt='-fPIC' ;;
5962 *) dflt="$cccdlflags" ;;
5964 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5967 none) cccdlflags=' ' ;;
5968 *) cccdlflags="$ans" ;;
5973 Some systems use ld to create libraries that can be dynamically loaded,
5974 while other systems (such as those using ELF) use $cc.
5978 '') $cat >try.c <<'EOM'
5979 /* Test for whether ELF binaries are produced */
5984 int i = open("a.out",O_RDONLY);
5987 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5988 exit(0); /* succeed (yes, it's ELF) */
5993 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5995 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5999 echo "I'll use ld to build dynamic libraries."
6008 rp="What command should be used to create dynamic libraries?"
6014 Some systems may require passing special flags to $ld to create a
6015 library that can be dynamically loaded. If your ld flags include
6016 -L/other/path options to locate libraries outside your loader's normal
6017 search path, you may need to specify those -L options here as well. To
6018 use no flags, say "none".
6021 case "$lddlflags" in
6022 '') case "$osname" in
6023 beos) dflt='-nostart' ;;
6025 linux|irix*) dflt='-shared' ;;
6026 next) dflt='none' ;;
6027 solaris) dflt='-G' ;;
6028 sunos) dflt='-assert nodefinitions' ;;
6029 svr4*|esix*) dflt="-G $ldflags" ;;
6033 *) dflt="$lddlflags" ;;
6036 : Try to guess additional flags to pick up local libraries.
6037 : Be careful not to append to a plain 'none'
6041 for thisflag in $ldflags; do
6046 *) dflt="$dflt $thisflag" ;;
6053 ''|' ') dflt='none' ;;
6056 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6059 none) lddlflags=' ' ;;
6060 *) lddlflags="$ans" ;;
6065 Some systems may require passing special flags to $cc to indicate that
6066 the resulting executable will use dynamic linking. To use no flags,
6070 case "$ccdlflags" in
6071 '') case "$osname" in
6072 hpux) dflt='-Wl,-E' ;;
6073 linux) dflt='-rdynamic' ;;
6074 next) dflt='none' ;;
6075 sunos) dflt='none' ;;
6079 *) dflt="$ccdlflags" ;;
6081 rp="Any special flags to pass to $cc to use dynamic linking?"
6084 none) ccdlflags=' ' ;;
6085 *) ccdlflags="$ans" ;;
6099 # No dynamic loading being used, so don't bother even to prompt.
6102 *) case "$useshrplib" in
6103 '') case "$osname" in
6104 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6106 also='Building a shared libperl is required for dynamic loading to work on your system.'
6111 also='Building a shared libperl is needed for MAB support.'
6129 The perl executable is normally obtained by linking perlmain.c with
6130 libperl${_a}, any static extensions (usually just DynaLoader), and
6131 any other libraries needed on this system (such as -lm, etc.). Since
6132 your system supports dynamic loading, it is probably possible to build
6133 a shared libperl.$so. If you will have more than one executable linked
6134 to libperl.$so, this will significantly reduce the size of each
6135 executable, but it may have a noticeable affect on performance. The
6136 default is probably sensible for your system.
6140 rp="Build a shared libperl.$so (y/n)"
6144 useshrplib='true' ;;
6145 *) useshrplib='false' ;;
6150 case "$useshrplib" in
6154 # Figure out a good name for libperl.so. Since it gets stored in
6155 # a version-specific architecture-dependent library, the version
6156 # number isn't really that important, except for making cc/ld happy.
6158 # A name such as libperl.so.3.1
6159 majmin="libperl.$so.$patchlevel.$subversion"
6160 # A name such as libperl.so.301
6161 majonly=`echo $patchlevel $subversion |
6162 $awk '{printf "%d%02d", $1, $2}'`
6163 majonly=libperl.$so.$majonly
6164 # I'd prefer to keep the os-specific stuff here to a minimum, and
6165 # rely on figuring it out from the naming of libc.
6166 case "${osname}${osvers}" in
6169 # XXX How handle the --version stuff for MAB?
6171 linux*) # ld won't link with a bare -lperl otherwise.
6174 cygwin*) # include version
6175 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6177 *) # Try to guess based on whether libc has major.minor.
6179 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6180 *libc.$so.[0-9]*) dflt=$majonly ;;
6181 *) dflt=libperl.$so ;;
6191 I need to select a good name for the shared libperl. If your system uses
6192 library names with major and minor numbers, then you might want something
6193 like $majmin. Alternatively, if your system uses a single version
6194 number for shared libraries, then you might want to use $majonly.
6195 Or, your system might be quite happy with a simple libperl.$so.
6197 Since the shared libperl will get installed into a version-specific
6198 architecture-dependent directory, the version number of the shared perl
6199 library probably isn't important, so the default should be o.k.
6202 rp='What name do you want to give to the shared libperl?'
6205 echo "Ok, I'll use $libperl"
6208 libperl="libperl${_a}"
6212 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6216 WARNING: Use of the shrpdir variable for the installation location of
6217 the shared $libperl is not supported. It was never documented and
6218 will not work in this version. Let me (perlbug@perl.com)
6219 know of any problems this may cause.
6225 But your current setting of $shrpdir is
6226 the default anyway, so it's harmless.
6231 Further, your current attempted setting of $shrpdir
6232 conflicts with the value of $archlibexp/CORE
6233 that installperl will use.
6240 # How will the perl executable find the installed shared $libperl?
6241 # Add $xxx to ccdlflags.
6242 # If we can't figure out a command-line option, use $shrpenv to
6243 # set env LD_RUN_PATH. The main perl makefile uses this.
6244 shrpdir=$archlibexp/CORE
6247 if "$useshrplib"; then
6250 # We'll set it in Makefile.SH...
6256 xxx="-Wl,-R$shrpdir"
6258 linux|irix*|dec_osf)
6259 xxx="-Wl,-rpath,$shrpdir"
6262 # next doesn't like the default...
6265 # beos doesn't like the default, either.
6268 # hpux doesn't like the default, either.
6269 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6272 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6278 # Only add $xxx if it isn't already in ccdlflags.
6279 case " $ccdlflags " in
6281 *) ccdlflags="$ccdlflags $xxx"
6284 Adding $xxx to the flags
6285 passed to $ld so that the perl executable will find the
6286 installed shared $libperl.
6294 # Fix ccdlflags in AIX for building external extensions.
6295 # (For building Perl itself bare -bE:perl.exp is needed,
6296 # Makefile.SH takes care of this.)
6298 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6300 # Respect a hint or command-line value.
6302 '') shrpenv="$tmp_shrpenv" ;;
6304 case "$ldlibpthname" in
6305 '') ldlibpthname=LD_LIBRARY_PATH ;;
6306 none) ldlibpthname='' ;;
6309 : determine where manual pages go
6310 set man1dir man1dir none
6314 $spackage has manual pages available in source form.
6318 echo "However, you don't have nroff, so they're probably useless to you."
6320 '') man1dir="none";;
6323 echo "If you don't want the manual sources installed, answer 'none'."
6328 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6329 lookpath="$lookpath $prefixexp/man/p_man/man1"
6330 lookpath="$lookpath $prefixexp/man/u_man/man1"
6331 lookpath="$lookpath $prefixexp/man/man.1"
6333 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6334 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6344 rp="Where do the main $spackage manual pages (source) go?"
6346 if $test "X$man1direxp" != "X$ansexp"; then
6350 man1direxp="$ansexp"
6356 : Change installation prefix, if necessary.
6357 if $test X"$prefix" != X"$installprefix"; then
6358 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6360 installman1dir="$man1direxp"
6363 : What suffix to use on installed man pages
6370 rp="What suffix should be used for the main $spackage man pages?"
6372 '') case "$man1dir" in
6386 *) dflt="$man1ext";;
6393 : see if we can have long filenames
6395 rmlist="$rmlist /tmp/cf$$"
6396 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6397 first=123456789abcdef
6398 second=/tmp/cf$$/$first
6399 $rm -f $first $second
6400 if (echo hi >$first) 2>/dev/null; then
6401 if $test -f 123456789abcde; then
6402 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6405 if (echo hi >$second) 2>/dev/null; then
6406 if $test -f /tmp/cf$$/123456789abcde; then
6408 That's peculiar... You can have filenames longer than 14 characters, but only
6409 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
6410 I shall consider your system cannot support long filenames at all.
6414 echo 'You can have filenames longer than 14 characters.' >&4
6419 How confusing! Some of your filesystems are sane enough to allow filenames
6420 longer than 14 characters but some others like /tmp can't even think about them.
6421 So, for now on, I shall assume your kernel does not allow them at all.
6428 You can't have filenames longer than 14 chars. You can't even think about them!
6434 $rm -rf /tmp/cf$$ 123456789abcde*
6436 : determine where library module manual pages go
6437 set man3dir man3dir none
6441 $spackage has manual pages for many of the library modules.
6447 However, you don't have nroff, so they're probably useless to you.
6450 '') man3dir="none";;
6454 case "$d_flexfnam" in
6457 However, your system can't handle the long file names like File::Basename.3.
6460 '') man3dir="none";;
6464 echo "If you don't want the manual sources installed, answer 'none'."
6465 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6467 '') dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6468 if $test -d "$privlib/man/man3"; then
6471 WARNING: Previous versions of perl installed man3 pages into
6472 $privlib/man/man3. This version will suggest a
6473 new default of $dflt.
6477 rp='Do you wish to preserve the old behavior?(y/n)'
6480 y*) dflt="$privlib/man/man3" ;;
6486 *) dflt="$man3dir" ;;
6490 rp="Where do the $package library man pages (source) go?"
6493 man3direxp="$ansexp"
6499 : Change installation prefix, if necessary.
6500 if $test X"$prefix" != X"$installprefix"; then
6501 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6503 installman3dir="$man3direxp"
6506 : What suffix to use on installed man pages
6512 rp="What suffix should be used for the $package library man pages?"
6514 '') case "$man3dir" in
6528 *) dflt="$man3ext";;
6535 : see if we have to deal with yellow pages, now NIS.
6536 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6537 if $test -f /usr/etc/nibindd; then
6539 echo "I'm fairly confident you're on a NeXT."
6541 rp='Do you get the hosts file via NetInfo?'
6550 y*) hostcat='nidump hosts .';;
6551 *) case "$hostcat" in
6552 nidump*) hostcat='';;
6562 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6570 rp='Are you getting the hosts file via yellow pages?'
6573 y*) hostcat='ypcat hosts';;
6574 *) hostcat='cat /etc/hosts';;
6580 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6583 '') test -f /etc/group && groupcat='cat /etc/group';;
6586 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6589 : now get the host name
6591 echo "Figuring out host name..." >&4
6592 case "$myhostname" in
6594 echo 'Maybe "hostname" will work...'
6595 if tans=`sh -c hostname 2>&1` ; then
6603 if $test "$cont"; then
6605 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6606 if tans=`cat /etc/systemid 2>&1` ; then
6608 phostname='cat /etc/systemid'
6609 echo "Whadyaknow. Xenix always was a bit strange..."
6612 elif $test -r /etc/systemid; then
6613 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6616 if $test "$cont"; then
6617 echo 'No, maybe "uuname -l" will work...'
6618 if tans=`sh -c 'uuname -l' 2>&1` ; then
6620 phostname='uuname -l'
6622 echo 'Strange. Maybe "uname -n" will work...'
6623 if tans=`sh -c 'uname -n' 2>&1` ; then
6625 phostname='uname -n'
6627 echo 'Oh well, maybe I can mine it out of whoami.h...'
6628 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6629 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6630 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6632 case "$myhostname" in
6633 '') echo "Does this machine have an identity crisis or something?"
6636 echo "Well, you said $myhostname before..."
6637 phostname='echo $myhostname';;
6643 : you do not want to know about this
6648 if $test "$myhostname" ; then
6650 rp='Your host name appears to be "'$myhostname'".'" Right?"
6658 : bad guess or no guess
6659 while $test "X$myhostname" = X ; do
6661 rp="Please type the (one word) name of your host:"
6666 : translate upper to lower if necessary
6667 case "$myhostname" in
6669 echo "(Normalizing case in your host name)"
6670 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6674 case "$myhostname" in
6676 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6677 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6678 echo "(Trimming domain name from host name--host name is now $myhostname)"
6680 *) case "$mydomain" in
6683 test "X$hostcat" = "Xypcat hosts" &&
6684 ypmatch "$myhostname" hosts 2>/dev/null |\
6685 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
6688 test "X$hostcat" != "X" &&
6689 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
6690 /[ ]$myhostname[ . ]/p" > hosts
6693 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
6694 END { print sum }" hosts` = x1 || tmp_re="[ ]"
6695 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6696 hosts | $sort | $uniq | \
6697 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6698 case `$echo X$dflt` in
6699 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
6702 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6707 tans=`./loc resolv.conf X /etc /usr/etc`
6708 if $test -f "$tans"; then
6709 echo "(Attempting domain name extraction from $tans)"
6710 dflt=.`$sed -n -e 's/ / /g' \
6711 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
6712 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6714 .) dflt=.`$sed -n -e 's/ / /g' \
6715 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
6716 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6723 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6724 dflt=.`sh -c domainname 2>/dev/null`
6727 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6732 .) echo "(Lost all hope -- silly guess then)"
6738 *) dflt="$mydomain";;
6742 rp="What is your domain name?"
6752 : translate upper to lower if necessary
6755 echo "(Normalizing case in your domain name)"
6756 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6760 : a little sanity check here
6761 case "$phostname" in
6764 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6765 $myhostname$mydomain|$myhostname) ;;
6767 case "$phostname" in
6769 echo "(That doesn't agree with your whoami.h file, by the way.)"
6772 echo "(That doesn't agree with your $phostname command, by the way.)"
6782 I need to get your e-mail address in Internet format if possible, i.e.
6783 something like user@host.domain. Please answer accurately since I have
6784 no easy means to double check it. The default value provided below
6785 is most probably close to reality but may not be valid from outside
6786 your organization...
6790 while test "$cont"; do
6792 '') dflt="$cf_by@$myhostname$mydomain";;
6793 *) dflt="$cf_email";;
6795 rp='What is your e-mail address?'
6801 rp='Address does not look like an Internet one. Use it anyway?'
6817 If you or somebody else will be maintaining perl at your site, please
6818 fill in the correct e-mail address here so that they may be contacted
6819 if necessary. Currently, the "perlbug" program included with perl
6820 will send mail to this address in addition to perlbug@perl.com. You may
6821 enter "none" for no administrator.
6824 case "$perladmin" in
6825 '') dflt="$cf_email";;
6826 *) dflt="$perladmin";;
6828 rp='Perl administrator e-mail address'
6832 : figure out how to guarantee perl startup
6833 case "$startperl" in
6835 case "$sharpbang" in
6839 I can use the #! construct to start perl on your system. This will
6840 make startup of perl scripts faster, but may cause problems if you
6841 want to share those scripts and perl is not in a standard place
6842 ($binexp/perl) on all your platforms. The alternative is to force
6843 a shell by starting the script with a single ':' character.
6847 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6850 none) startperl=": # use perl";;
6851 *) startperl="#!$ans"
6852 if $test 30 -lt `echo "$ans" | wc -c`; then
6855 WARNING: Some systems limit the #! command to 32 characters.
6856 If you experience difficulty running Perl scripts with #!, try
6857 installing Perl in a directory with a shorter pathname.
6863 *) startperl=": # use perl"
6868 echo "I'll use $startperl to start perl scripts."
6870 : figure best path for perl in scripts
6873 perlpath="$binexp/perl"
6874 case "$startperl" in
6879 I will use the "eval 'exec'" idiom to start Perl on your system.
6880 I can use the full path of your Perl binary for this purpose, but
6881 doing so may cause problems if you want to share those scripts and
6882 Perl is not always in a standard place ($binexp/perl).
6886 rp="What path shall I use in \"eval 'exec'\"?"
6893 case "$startperl" in
6895 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6898 : determine where public executable scripts go
6899 set scriptdir scriptdir
6901 case "$scriptdir" in
6904 : guess some guesses
6905 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6906 $test -d /usr/share/bin && dflt=/usr/share/bin
6907 $test -d /usr/local/script && dflt=/usr/local/script
6908 $test -d /usr/local/scripts && dflt=/usr/local/scripts
6909 $test -d $prefixexp/script && dflt=$prefixexp/script
6913 *) dflt="$scriptdir"
6918 Some installations have a separate directory just for executable scripts so
6919 that they can mount it across multiple architectures but keep the scripts in
6920 one spot. You might, for example, have a subdirectory of /usr/share for this.
6921 Or you might just lump your scripts in with all your other executables.
6925 rp='Where do you keep publicly executable scripts?'
6927 if $test "X$ansexp" != "X$scriptdirexp"; then
6931 scriptdirexp="$ansexp"
6932 : Change installation prefix, if necessary.
6933 if $test X"$prefix" != X"$installprefix"; then
6934 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6936 installscript="$scriptdirexp"
6939 : determine where site specific architecture-dependent libraries go.
6940 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6941 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6942 : sitelib may have an optional trailing /share.
6943 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6944 tdflt="$tdflt/$archname"
6945 set sitearch sitearch none
6948 '') dflt="$tdflt" ;;
6949 *) dflt="$sitearch" ;;
6953 The installation process will also create a directory for
6954 architecture-dependent site-specific extensions and modules.
6958 rp='Pathname for the site-specific architecture-dependent library files?'
6961 sitearchexp="$ansexp"
6962 : Change installation prefix, if necessary.
6963 if $test X"$prefix" != X"$installprefix"; then
6964 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6966 installsitearch="$sitearchexp"
6969 : determine where add-on public executables go
6971 '') dflt=$siteprefix/bin ;;
6975 rp='Pathname where the add-on public executables should be installed?'
6978 sitebinexp="$ansexp"
6979 : Change installation prefix, if necessary.
6980 if $test X"$prefix" != X"$installprefix"; then
6981 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
6983 installsitebin="$sitebinexp"
6986 : see if sqrtl exists
6992 Perl can be built to take advantage of long doubles which
6993 (if available) may give more accuracy and range for floating point numbers.
6995 If this doesn't make any sense to you, just accept the default 'n'.
6999 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7002 case "$uselongdouble" in
7003 $define|true|[yY]*) dflt='y';;
7006 rp='Try to use long doubles if available?'
7009 y|Y) val="$define" ;;
7015 case "$uselongdouble" in
7016 true|[yY]*) uselongdouble="$define" ;;
7019 case "$uselongdouble" in
7021 : Look for a hint-file generated 'call-back-unit'. If the
7022 : user has specified that long doubles should be used,
7023 : we may need to set or change some other defaults.
7024 if $test -f uselongdouble.cbu; then
7025 echo "Your platform has some specific hints for long doubles, using them..."
7026 . ./uselongdouble.cbu
7029 (Your platform doesn't have any specific hints for long doubles.)
7035 case "$uselongdouble:$d_sqrtl" in
7039 You requested the use of long doubles but you do not seem to have
7040 the mathematic functions for long doubles. I'm disabling the use
7043 uselongdouble=$undef
7049 Perl can be built to take advantage of long longs which
7050 (if available) may give more range for integer numbers.
7052 If this doesn't make any sense to you, just accept the default 'n'.
7056 *-DUSE_LONG_LONG*) uselonglong="$define" ;;
7059 case "$uselonglong" in
7062 rp='Try to use long longs if available?'
7065 y|Y) val="$define" ;;
7071 case "$uselonglong" in
7072 true|[yY]*) uselonglong="$define" ;;
7075 case "$uselonglong" in
7077 : Look for a hint-file generated 'call-back-unit'. If the
7078 : user has specified that long longs should be used,
7079 : we may need to set or change some other defaults.
7080 if $test -f uselonglong.cbu; then
7081 echo "Your platform has some specific hints for long longs, using them..."
7085 (Your platform doesn't have any specific hints for long longs.)
7093 Previous version of $package used the standard IO mechanisms as defined
7094 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7095 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7096 the default. This abstraction layer can use AT&T's sfio (if you already
7097 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7098 problems with some extension modules. Using PerlIO with stdio is safe,
7099 but it is slower than plain stdio and therefore is not the default.
7101 If this doesn't make any sense to you, just accept the default 'n'.
7103 case "$useperlio" in
7104 $define|true|[yY]*) dflt='y';;
7107 rp='Use the experimental PerlIO abstraction layer?'
7114 echo "Ok, doing things the stdio way"
7121 case "$vendorprefix" in
7122 '') d_vendorbin="$undef"
7126 *) d_vendorbin="$define"
7127 : determine where vendor-supplied executables go.
7128 dflt=$vendorprefix/bin
7130 rp='Pathname for the vendor-supplied executables directory?'
7133 vendorbinexp="$ansexp"
7134 : Change installation prefix, if necessary.
7135 if $test X"$prefix" != X"$installprefix"; then
7136 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7138 installvendorbin="$vendorbinexp"
7143 : check for length of double
7145 case "$doublesize" in
7147 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7148 $cat >try.c <<'EOCP'
7152 printf("%d\n", (int)sizeof(double));
7157 if eval $compile_ok; then
7159 $echo " $doublesize bytes." >&4
7162 echo "(I can't seem to compile the test program. Guessing...)"
7163 rp="What is the size of a double precision number (in bytes)?"
7171 : check for long doubles
7173 $echo $n "Checking to see if your system supports long double..." $c >&4
7174 echo 'int main() { long double x = 7.0; }' > try.c
7176 if eval $compile; then
7178 echo " Yes, it does." >&4
7181 echo " No, it doesn't." >&4
7187 : check for length of long double
7188 case "${d_longdbl}${longdblsize}" in
7191 $echo $n "Checking to see how big your long doubles are..." $c >&4
7192 $cat >try.c <<'EOCP'
7196 printf("%d\n", sizeof(long double));
7201 if eval $compile; then
7202 longdblsize=`./try$exe_ext`
7203 $echo " $longdblsize bytes." >&4
7207 echo "(I can't seem to compile the test program. Guessing...)" >&4
7208 rp="What is the size of a long double (in bytes)?"
7212 if $test "X$doublesize" = "X$longdblsize"; then
7213 echo "(That isn't any different from an ordinary double.)"
7219 : Check how to convert floats to strings.
7220 if test "X$d_Gconvert" = X; then
7222 echo "Checking for an efficient way to convert floats to strings."
7225 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7226 char *myname = "gconvert";
7229 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7230 char *myname = "gcvt";
7233 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7234 char *myname = "qgcvt";
7235 #define DOUBLETYPE long double
7238 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7239 char *myname = "sprintf";
7243 #define DOUBLETYPE double
7248 #define I_STDLIB $i_stdlib
7254 checkit(expect, got)
7258 if (strcmp(expect, got)) {
7259 printf("%s oddity: Expected %s, got %s\n",
7260 myname, expect, got);
7270 /* This must be 1st test on (which?) platform */
7271 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7272 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7273 checkit("0.1", buf);
7275 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7278 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7281 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7284 /* Some Linux gcvt's give 1.e+5 here. */
7285 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7286 checkit("100000", buf);
7288 /* Some Linux gcvt's give -1.e+5 here. */
7289 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7290 checkit("-100000", buf);
7295 case "$d_Gconvert" in
7296 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7297 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7298 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7299 *) xxx_list='gconvert gcvt sprintf' ;;
7302 case "$d_longdbl$uselongdouble" in
7303 definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7306 for xxx_convert in $xxx_list; do
7307 echo "Trying $xxx_convert..."
7309 set try -DTRY_$xxx_convert
7310 if eval $compile; then
7311 echo "$xxx_convert() found." >&4
7313 echo "I'll use $xxx_convert to convert floats into a string." >&4
7316 echo "...But $xxx_convert didn't work as I expected."
7319 echo "$xxx_convert NOT found." >&4
7323 case "$xxx_convert" in
7324 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7325 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7326 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7327 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7333 if $test X"$d_longdbl" = X"$define"; then
7335 echo "Checking how to print long doubles..." >&4
7337 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7338 $cat >try.c <<'EOCP'
7339 #include <sys/types.h>
7343 printf("%.3f\n", d);
7347 if eval $compile; then
7351 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7352 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7353 echo "We will use %f."
7359 if $test X"$sPRIfldbl" = X; then
7360 $cat >try.c <<'EOCP'
7361 #include <sys/types.h>
7364 long double d = 123.456;
7365 printf("%.3llf\n", d);
7369 if eval $compile; then
7373 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7374 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7375 echo "We will use %llf."
7381 if $test X"$sPRIfldbl" = X; then
7382 $cat >try.c <<'EOCP'
7383 #include <sys/types.h>
7386 long double d = 123.456;
7387 printf("%.3Lf\n", d);
7391 if eval $compile; then
7395 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7396 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7397 echo "We will use %Lf."
7403 if $test X"$sPRIfldbl" = X; then
7404 $cat >try.c <<'EOCP'
7405 #include <sys/types.h>
7408 long double d = 123.456;
7409 printf("%.3lf\n", d);
7413 if eval $compile; then
7417 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7418 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7419 echo "We will use %lf."
7425 if $test X"$sPRIfldbl" = X; then
7426 echo "Cannot figure out how to print long doubles." >&4
7433 case "$sPRIfldbl" in
7434 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7435 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7437 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7438 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7442 : Initialize h_fcntl
7445 : Initialize h_sysfile
7448 : access call always available on UNIX
7452 : locate the flags for 'access()'
7456 $cat >access.c <<'EOCP'
7457 #include <sys/types.h>
7462 #include <sys/file.h>
7471 : check sys/file.h first, no particular reason here
7472 if $test `./findhdr sys/file.h` && \
7473 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7475 echo "<sys/file.h> defines the *_OK access constants." >&4
7476 elif $test `./findhdr fcntl.h` && \
7477 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7479 echo "<fcntl.h> defines the *_OK access constants." >&4
7480 elif $test `./findhdr unistd.h` && \
7481 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7482 echo "<unistd.h> defines the *_OK access constants." >&4
7484 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7490 : see if accessx exists
7491 set accessx d_accessx
7494 : see if alarm exists
7498 : see if atolf exists
7502 : see if atoll exists
7506 : Look for GNU-cc style attribute checking
7508 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7509 $cat >attrib.c <<'EOCP'
7511 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7513 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7514 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7515 echo "Your C compiler doesn't fully support __attribute__."
7518 echo "Your C compiler supports __attribute__."
7522 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7529 : see if bcmp exists
7533 : see if bcopy exists
7537 : see if this is a unistd.h system
7538 set unistd.h i_unistd
7541 : see if getpgrp exists
7542 set getpgrp d_getpgrp
7545 case "$d_getpgrp" in
7548 echo "Checking to see which flavor of getpgrp is in use..."
7551 #include <sys/types.h>
7553 # include <unistd.h>
7557 if (getuid() == 0) {
7558 printf("(I see you are running Configure as super-user...)\n");
7562 if (getpgrp(1) == 0)
7571 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7572 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7574 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7575 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7578 echo "I can't seem to compile and run the test program."
7580 xxx="a USG one, i.e. you use getpgrp()."
7582 # SVR4 systems can appear rather BSD-ish.
7585 xxx="a BSD one, i.e. you use getpgrp(pid)."
7589 xxx="probably a USG one, i.e. you use getpgrp()."
7594 echo "Assuming your getpgrp is $xxx" >&4
7603 : see if setpgrp exists
7604 set setpgrp d_setpgrp
7607 case "$d_setpgrp" in
7610 echo "Checking to see which flavor of setpgrp is in use..."
7613 #include <sys/types.h>
7615 # include <unistd.h>
7619 if (getuid() == 0) {
7620 printf("(I see you are running Configure as super-user...)\n");
7624 if (-1 == setpgrp(1, 1))
7627 if (setpgrp() != -1)
7633 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7634 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7636 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7637 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7640 echo "(I can't seem to compile and run the test program.)"
7642 xxx="a USG one, i.e. you use setpgrp()."
7644 # SVR4 systems can appear rather BSD-ish.
7647 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7651 xxx="probably a USG one, i.e. you use setpgrp()."
7656 echo "Assuming your setpgrp is $xxx" >&4
7664 : see if bzero exists
7668 : see if signal is declared as pointer to function returning int or void
7670 xxx=`./findhdr signal.h`
7671 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7672 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7673 echo "You have int (*signal())() instead of void." >&4
7675 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7676 echo "You have void (*signal())()." >&4
7678 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7679 echo "You have int (*signal())() instead of void." >&4
7681 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7682 echo "You have void (*signal())()." >&4
7685 case "$d_voidsig" in
7687 echo "I can't determine whether signal handler returns void or int..." >&4
7689 rp="What type does your signal handler return?"
7696 echo "As you already told me, signal handler returns void." >&4
7699 *) echo "As you already told me, signal handler returns int." >&4
7706 case "$d_voidsig" in
7707 "$define") signal_t="void";;
7712 : check for ability to cast large floats to 32-bit ints.
7714 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7715 if $test "$intsize" -ge 4; then
7722 #include <sys/types.h>
7724 $signal_t blech(s) int s; { exit(3); }
7731 signal(SIGFPE, blech);
7733 /* Don't let compiler optimize the test away. Store the number
7734 in a writable string for gcc to pass to sscanf under HP/UX.
7736 sprintf(str, "2147483647");
7737 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7741 /* x86 processors will probably give 0x8000 0000, which is a
7742 sign change. We don't want that. We want to mimic SPARC
7743 behavior here, which is to preserve the sign and give
7746 if (i32 != ($xxx) f)
7752 if eval $compile_ok; then
7756 echo "(I can't seem to compile the test program--assuming it can't)"
7764 echo "Nope, it can't."
7771 : check for ability to cast negative floats to unsigned
7773 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7776 #include <sys/types.h>
7778 $signal_t blech(s) int s; { exit(7); }
7779 $signal_t blech_in_list(s) int s; { exit(4); }
7780 unsigned long dummy_long(p) unsigned long p; { return p; }
7781 unsigned int dummy_int(p) unsigned int p; { return p; }
7782 unsigned short dummy_short(p) unsigned short p; { return p; }
7786 unsigned long along;
7788 unsigned short ashort;
7792 /* Frustrate gcc-2.7.2's optimizer which failed this test with
7793 a direct f = -123. assignment. gcc-2.8.0 reportedly
7794 optimized the whole file away
7796 /* Store the number in a writable string for gcc to pass to
7799 sprintf(str, "-123");
7800 sscanf(str, "%lf", &f); /* f = -123.; */
7802 signal(SIGFPE, blech);
7803 along = (unsigned long)f;
7804 aint = (unsigned int)f;
7805 ashort = (unsigned short)f;
7806 if (along != (unsigned long)-123)
7808 if (aint != (unsigned int)-123)
7810 if (ashort != (unsigned short)-123)
7812 sprintf(str, "1073741824.");
7813 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7816 along = (unsigned long)f;
7817 if (along != 0x80000000)
7821 along = (unsigned long)f;
7822 if (along != 0x7fffffff)
7826 along = (unsigned long)f;
7827 if (along != 0x80000001)
7831 signal(SIGFPE, blech_in_list);
7832 sprintf(str, "123.");
7833 sscanf(str, "%lf", &f); /* f = 123.; */
7834 along = dummy_long((unsigned long)f);
7835 aint = dummy_int((unsigned int)f);
7836 ashort = dummy_short((unsigned short)f);
7837 if (along != (unsigned long)123)
7839 if (aint != (unsigned int)123)
7841 if (ashort != (unsigned short)123)
7848 if eval $compile_ok; then
7852 echo "(I can't seem to compile the test program--assuming it can't)"
7855 case "$castflags" in
7860 echo "Nope, it can't."
7867 : see if vprintf exists
7869 if set vprintf val -f d_vprintf; eval $csym; $val; then
7870 echo 'vprintf() found.' >&4
7872 $cat >vprintf.c <<'EOF'
7873 #include <varargs.h>
7875 int main() { xxx("foo"); }
7884 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7888 if eval $compile && ./vprintf; then
7889 echo "Your vsprintf() returns (int)." >&4
7892 echo "Your vsprintf() returns (char*)." >&4
7896 echo 'vprintf() NOT found.' >&4
7906 : see if chown exists
7910 : see if chroot exists
7914 : see if chsize exists
7918 : check for const keyword
7920 echo 'Checking to see if your C compiler knows about "const"...' >&4
7921 $cat >const.c <<'EOCP'
7922 typedef struct spug { int drokk; } spug;
7929 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7931 echo "Yup, it does."
7934 echo "Nope, it doesn't."
7939 : see if crypt exists
7941 if set crypt val -f d_crypt; eval $csym; $val; then
7942 echo 'crypt() found.' >&4
7946 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7947 if $test -z "$cryptlib"; then
7948 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7952 if $test -z "$cryptlib"; then
7953 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7957 if $test -z "$cryptlib"; then
7958 cryptlib=`./loc libcrypt$_a "" $libpth`
7962 if $test -z "$cryptlib"; then
7963 echo 'crypt() NOT found.' >&4
7972 : get csh whereabouts
7974 'csh') val="$undef" ;;
7979 : Respect a hint or command line value for full_csh.
7981 '') full_csh=$csh ;;
7984 : see if cuserid exists
7985 set cuserid d_cuserid
7988 : see if this is a limits.h system
7989 set limits.h i_limits
7992 : see if this is a float.h system
7996 : See if number of significant digits in a double precision number is known
7998 $cat >dbl_dig.c <<EOM
8008 printf("Contains DBL_DIG");
8011 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8012 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8013 echo "DBL_DIG found." >&4
8016 echo "DBL_DIG NOT found." >&4
8023 : see if difftime exists
8024 set difftime d_difftime
8027 : see if this is a dirent system
8029 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8031 echo "<dirent.h> found." >&4
8034 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8035 echo "<sys/dir.h> found." >&4
8038 xinc=`./findhdr sys/ndir.h`
8040 echo "<dirent.h> NOT found." >&4
8045 : Look for type of directory structure.
8047 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8049 case "$direntrytype" in
8052 $define) guess1='struct dirent' ;;
8053 *) guess1='struct direct' ;;
8056 *) guess1="$direntrytype"
8061 'struct dirent') guess2='struct direct' ;;
8062 *) guess2='struct dirent' ;;
8065 if $contains "$guess1" try.c >/dev/null 2>&1; then
8066 direntrytype="$guess1"
8067 echo "Your directory entries are $direntrytype." >&4
8068 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8069 direntrytype="$guess2"
8070 echo "Your directory entries seem to be $direntrytype." >&4
8072 echo "I don't recognize your system's directory entries." >&4
8073 rp="What type is used for directory entries on this system?"
8081 : see if the directory entry stores field length
8083 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8084 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8085 echo "Good, your directory entry keeps length information in d_namlen." >&4
8088 echo "Your directory entry does not know about the d_namlen field." >&4
8095 : see if dlerror exists
8098 set dlerror d_dlerror
8102 : see if dlfcn is available
8110 On a few systems, the dynamically loaded modules that perl generates and uses
8111 will need a different extension than shared libs. The default will probably
8119 rp='What is the extension of dynamically loaded modules'
8128 : Check if dlsym need a leading underscore
8134 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8135 $cat >dyna.c <<'EOM'
8144 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8146 #include <sys/types.h>
8160 int mode = RTLD_LAZY ;
8162 handle = dlopen("./dyna.$dlext", mode) ;
8163 if (handle == NULL) {
8168 symbol = dlsym(handle, "fred") ;
8169 if (symbol == NULL) {
8170 /* try putting a leading underscore */
8171 symbol = dlsym(handle, "_fred") ;
8172 if (symbol == NULL) {
8185 : Call the object file tmp-dyna.o in case dlext=o.
8186 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8187 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8188 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
8189 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8192 1) echo "Test program failed using dlopen." >&4
8193 echo "Perhaps you should not use dynamic loading." >&4;;
8194 2) echo "Test program failed using dlsym." >&4
8195 echo "Perhaps you should not use dynamic loading." >&4;;
8196 3) echo "dlsym needs a leading underscore" >&4
8198 4) echo "dlsym doesn't need a leading underscore." >&4;;
8201 echo "I can't compile and run the test program." >&4
8202 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8207 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8212 hasproto='varname=$1; func=$2; shift; shift;
8213 while $test $# -ge 2; do
8215 $define) echo "#include <$2>";;
8219 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8220 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8221 echo "$func() prototype found.";
8224 echo "$func() prototype NOT found.";
8229 $rm -f try.c tryout.c'
8231 : see if prototype for drand48 is available
8233 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8236 : see if dup2 exists
8240 : see if eaccess exists
8241 set eaccess d_eaccess
8244 : see if endgrent exists
8245 set endgrent d_endgrent
8248 : see if endhostent exists
8249 set endhostent d_endhent
8252 : see if endnetent exists
8253 set endnetent d_endnent
8256 : see if endprotoent exists
8257 set endprotoent d_endpent
8260 : see if endpwent exists
8261 set endpwent d_endpwent
8264 : see if endservent exists
8265 set endservent d_endsent
8268 : see if endspent exists
8269 set endspent d_endspent
8272 : Locate the flags for 'open()'
8274 $cat >open3.c <<'EOCP'
8275 #include <sys/types.h>
8280 #include <sys/file.h>
8291 : check sys/file.h first to get FREAD on Sun
8292 if $test `./findhdr sys/file.h` && \
8293 set open3 -DI_SYS_FILE && eval $compile; then
8295 echo "<sys/file.h> defines the O_* constants..." >&4
8297 echo "and you have the 3 argument form of open()." >&4
8300 echo "but not the 3 argument form of open(). Oh, well." >&4
8303 elif $test `./findhdr fcntl.h` && \
8304 set open3 -DI_FCNTL && eval $compile; then
8306 echo "<fcntl.h> defines the O_* constants..." >&4
8308 echo "and you have the 3 argument form of open()." >&4
8311 echo "but not the 3 argument form of open(). Oh, well." >&4
8316 echo "I can't find the O_* constant definitions! You got problems." >&4
8322 : see which of string.h or strings.h is needed
8324 strings=`./findhdr string.h`
8325 if $test "$strings" && $test -r "$strings"; then
8326 echo "Using <string.h> instead of <strings.h>." >&4
8330 strings=`./findhdr strings.h`
8331 if $test "$strings" && $test -r "$strings"; then
8332 echo "Using <strings.h> instead of <string.h>." >&4
8334 echo "No string header found -- You'll surely have problems." >&4
8340 "$undef") strings=`./findhdr strings.h`;;
8341 *) strings=`./findhdr string.h`;;
8344 : check for non-blocking I/O stuff
8345 case "$h_sysfile" in
8346 true) echo "#include <sys/file.h>" > head.c;;
8349 true) echo "#include <fcntl.h>" > head.c;;
8350 *) echo "#include <sys/fcntl.h>" > head.c;;
8355 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8356 case "$o_nonblock" in
8359 $cat >>try.c <<'EOCP'
8363 printf("O_NONBLOCK\n");
8367 printf("O_NDELAY\n");
8371 printf("FNDELAY\n");
8378 if eval $compile_ok; then
8380 case "$o_nonblock" in
8381 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8382 *) echo "Seems like we can use $o_nonblock.";;
8385 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8388 *) echo "Using $hint value $o_nonblock.";;
8390 $rm -f try try.* .out core
8393 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8399 #include <sys/types.h>
8402 #define MY_O_NONBLOCK $o_nonblock
8403 #ifndef errno /* XXX need better Configure test */
8413 #include <strings.h>
8415 $signal_t blech(x) int x; { exit(3); }
8417 $cat >> try.c <<'EOCP'
8425 pipe(pd); /* Down: child -> parent */
8426 pipe(pu); /* Up: parent -> child */
8429 close(pd[1]); /* Parent reads from pd[0] */
8430 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8431 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8433 signal(SIGALRM, blech);
8435 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8437 sprintf(string, "%d\n", ret);
8438 write(2, string, strlen(string));
8441 if (errno == EAGAIN) {
8447 if (errno == EWOULDBLOCK)
8448 printf("EWOULDBLOCK\n");
8451 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8452 sleep(2); /* Give it time to close our pipe */
8454 ret = read(pd[0], buf, 1); /* Should read EOF */
8456 sprintf(string, "%d\n", ret);
8457 write(3, string, strlen(string));
8461 close(pd[0]); /* We write to pd[1] */
8462 close(pu[1]); /* We read from pu[0] */
8463 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8464 close(pd[1]); /* Pipe pd is now fully closed! */
8465 exit(0); /* Bye bye, thank you for playing! */
8469 if eval $compile_ok; then
8470 echo "$startsh" >mtry
8471 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8473 ./mtry >/dev/null 2>&1
8475 0) eagain=`$cat try.out`;;
8476 1) echo "Could not perform non-blocking setting!";;
8477 2) echo "I did a successful read() for something that was not there!";;
8478 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8479 *) echo "Something terribly wrong happened during testing.";;
8481 rd_nodata=`$cat try.ret`
8482 echo "A read() system call with no data present returns $rd_nodata."
8483 case "$rd_nodata" in
8486 echo "(That's peculiar, fixing that to be -1.)"
8492 echo "Forcing errno EAGAIN on read() with no data available."
8496 echo "Your read() sets errno to $eagain when no data is available."
8499 status=`$cat try.err`
8501 0) echo "And it correctly returns 0 to signal EOF.";;
8502 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8503 *) echo "However, your read() returns '$status' on EOF??";;
8506 if test "$status" = "$rd_nodata"; then
8507 echo "WARNING: you can't distinguish between EOF and no data!"
8511 echo "I can't compile the test program--assuming errno EAGAIN will do."
8518 echo "Using $hint value $eagain."
8519 echo "Your read() returns $rd_nodata when no data is present."
8520 case "$d_eofnblk" in
8521 "$define") echo "And you can see EOF because read() returns 0.";;
8522 "$undef") echo "But you can't see EOF status from read() returned value.";;
8524 echo "(Assuming you can't see EOF status from read anyway.)"
8530 $rm -f try try.* .out core head.c mtry
8532 : see if fchmod exists
8536 : see if fchown exists
8540 : see if this is an fcntl system
8544 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8545 while $test $# -ge 2; do
8547 $define) echo "#include <$2>";;
8551 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8553 if eval $compile; then
8564 : see whether socket exists
8566 $echo $n "Hmm... $c" >&4
8567 if set socket val -f d_socket; eval $csym; $val; then
8568 echo "Looks like you have Berkeley networking support." >&4
8570 if set setsockopt val -f; eval $csym; $val; then
8573 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8577 if $contains socklib libc.list >/dev/null 2>&1; then
8578 echo "Looks like you have Berkeley networking support." >&4
8580 : we will have to assume that it supports the 4.2 BSD interface
8583 echo "You don't have Berkeley networking in libc$_a..." >&4
8584 if test "X$d_socket" = "X$define"; then
8585 echo "...but you seem to believe that you have sockets." >&4
8587 for net in net socket
8589 if test -f /usr/lib/lib$net$_a; then
8590 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8591 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8592 if $contains socket libc.list >/dev/null 2>&1; then
8597 echo "...but the Wollongong group seems to have hacked it in." >&4
8598 sockethdr="-I/usr/netinclude"
8601 echo "Found Berkeley sockets interface in lib$net." >& 4
8602 if $contains setsockopt libc.list >/dev/null 2>&1; then
8605 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8612 if test "X$d_socket" != "X$define"; then
8613 echo "or anywhere else I see." >&4
8621 : see if socketpair exists
8622 set socketpair d_sockpair
8627 echo "Checking the availability of certain socket constants..." >& 4
8628 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8629 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8631 #include <sys/types.h>
8632 #include <sys/socket.h>
8638 set try; if eval $compile; then
8641 set d_${enum}; eval $setvar
8645 : see if sys/select.h has to be included
8646 set sys/select.h i_sysselct
8649 : see if we should include time.h, sys/time.h, or both
8651 if test "X$timeincl" = X; then
8652 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8653 $echo $n "I'm now running the test program...$c"
8654 $cat >try.c <<'EOCP'
8655 #include <sys/types.h>
8660 #ifdef SYSTIMEKERNEL
8663 #include <sys/time.h>
8666 #include <sys/select.h>
8675 struct timezone tzp;
8677 if (foo.tm_sec == foo.tm_sec)
8680 if (bar.tv_sec == bar.tv_sec)
8687 for s_timezone in '-DS_TIMEZONE' ''; do
8689 for s_timeval in '-DS_TIMEVAL' ''; do
8690 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8691 for i_time in '' '-DI_TIME'; do
8692 for i_systime in '-DI_SYSTIME' ''; do
8695 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8696 if eval $compile; then
8697 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8701 $echo $n "Succeeded with $flags$c"
8713 *SYSTIMEKERNEL*) i_systimek="$define"
8714 timeincl=`./findhdr sys/time.h`
8715 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8716 *) i_systimek="$undef";;
8719 *I_TIME*) i_time="$define"
8720 timeincl=`./findhdr time.h`" $timeincl"
8721 echo "We'll include <time.h>." >&4;;
8722 *) i_time="$undef";;
8725 *I_SYSTIME*) i_systime="$define"
8726 timeincl=`./findhdr sys/time.h`" $timeincl"
8727 echo "We'll include <sys/time.h>." >&4;;
8728 *) i_systime="$undef";;
8733 : check for fd_set items
8736 Checking to see how well your C compiler handles fd_set and friends ...
8738 $cat >fd_set.c <<EOCP
8739 #$i_systime I_SYS_TIME
8740 #$i_sysselct I_SYS_SELECT
8741 #$d_socket HAS_SOCKET
8742 #include <sys/types.h>
8744 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8747 #include <sys/time.h>
8750 #include <sys/select.h>
8759 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8766 set fd_set -DTRYBITS
8767 if eval $compile; then
8768 d_fds_bits="$define"
8770 echo "Well, your system knows about the normal fd_set typedef..." >&4
8772 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8773 d_fd_macros="$define"
8776 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8778 d_fd_macros="$undef"
8782 Hmm, your compiler has some difficulty with fd_set. Checking further...
8785 if eval $compile; then
8788 echo "Well, your system has some sort of fd_set available..." >&4
8790 echo "and you have the normal fd_set macros." >&4
8791 d_fd_macros="$define"
8794 but not the normal fd_set macros! Gross! More work for me...
8796 d_fd_macros="$undef"
8799 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8802 d_fd_macros="$undef"
8807 : see if fgetpos exists
8808 set fgetpos d_fgetpos
8811 : see if flock exists
8815 : see if fork exists
8819 : see if pathconf exists
8820 set pathconf d_pathconf
8823 : see if fpathconf exists
8824 set fpathconf d_fpathconf
8830 echo "Checking to see if your system supports off64_t..." >&4
8832 #include <sys/types.h>
8834 int main() { off64_t x = 7; }'
8837 if eval $compile; then
8839 echo "Yes, it does."
8842 echo "No, it doesn't."
8843 case "$lseeksize" in
8844 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8851 : check for fpos64_t
8853 echo "Checking to see if your system supports fpos64_t..." >&4
8855 #include <sys/stdio.h>
8856 int main() { fpos64_t x x = 7; }'
8859 if eval $compile; then
8861 echo "Yes, it does."
8864 echo "No, it doesn't."
8866 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8873 hasstruct='varname=$1; struct=$2; shift; shift;
8874 while $test $# -ge 2; do
8876 $define) echo "#include <$2>";;
8880 echo "int main () { struct $struct foo; }" >> try.c;
8882 if eval $compile; then
8891 : see if this is a sys/param system
8892 set sys/param.h i_sysparam
8895 : see if this is a sys/mount.h system
8896 set sys/mount.h i_sysmount
8899 : see if sys/types.h has to be included
8900 set sys/types.h i_systypes
8905 echo "Checking to see if your system supports struct fs_data..." >&4
8906 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8908 case "$d_fs_data_s" in
8909 "$define") echo "Yes, it does." ;;
8910 *) echo "No, it doesn't." ;;
8913 : see if fseeko exists
8917 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
8920 : see if fsetpos exists
8921 set fsetpos d_fsetpos
8925 : see if fstatfs exists
8926 set fstatfs d_fstatfs
8930 : see if statvfs exists
8931 set statvfs d_statvfs
8934 : see if fstatvfs exists
8935 set fstatvfs d_fstatvfs
8939 : see if ftello exists
8943 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
8946 : see if getcwd exists
8950 : see if getgrent exists
8951 set getgrent d_getgrent
8954 : see if gethostbyaddr exists
8955 set gethostbyaddr d_gethbyaddr
8958 : see if gethostbyname exists
8959 set gethostbyname d_gethbyname
8962 : see if gethostent exists
8963 set gethostent d_gethent
8966 : see how we will look up host name
8969 if set gethostname val -f d_gethname; eval $csym; $val; then
8970 echo 'gethostname() found.' >&4
8971 d_gethname="$define"
8974 if set uname val -f d_uname; eval $csym; $val; then
8977 uname() was found, but you're running xenix, and older versions of xenix
8978 have a broken uname(). If you don't really know whether your xenix is old
8979 enough to have a broken system call, use the default answer.
8986 rp='Is your uname() broken?'
8989 n*) d_uname="$define"; call=uname;;
8992 echo 'uname() found.' >&4
8999 case "$d_gethname" in
9000 '') d_gethname="$undef";;
9003 '') d_uname="$undef";;
9005 case "$d_uname$d_gethname" in
9010 Every now and then someone has a $call() that lies about the hostname
9011 but can't be fixed for political or economic reasons. If you wish, I can
9012 pretend $call() isn't there and maybe compute hostname at run-time
9013 thanks to the '$phostname' command.
9016 rp="Shall I ignore $call() from now on?"
9019 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9022 case "$phostname" in
9024 *) case "$aphostname" in
9030 file=`./loc $file $file $pth`
9031 aphostname=`echo $file $*`
9036 case "$d_uname$d_gethname" in
9039 case "$phostname" in
9041 echo "There will be no way for $package to get your hostname." >&4;;
9043 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9047 case "$d_phostname" in
9048 '') d_phostname="$undef";;
9051 : see if this is a netdb.h system
9055 : see if prototypes for various gethostxxx netdb.h functions are available
9057 set d_gethostprotos gethostent $i_netdb netdb.h
9060 : see if getlogin exists
9061 set getlogin d_getlogin
9064 : see if getmnt exists
9068 : see if getmntent exists
9069 set getmntent d_getmntent
9072 : see if getnetbyaddr exists
9073 set getnetbyaddr d_getnbyaddr
9076 : see if getnetbyname exists
9077 set getnetbyname d_getnbyname
9080 : see if getnetent exists
9081 set getnetent d_getnent
9084 : see if prototypes for various getnetxxx netdb.h functions are available
9086 set d_getnetprotos getnetent $i_netdb netdb.h
9090 : see if getprotobyname exists
9091 set getprotobyname d_getpbyname
9094 : see if getprotobynumber exists
9095 set getprotobynumber d_getpbynumber
9098 : see if getprotoent exists
9099 set getprotoent d_getpent
9102 : see if getpgid exists
9103 set getpgid d_getpgid
9106 : see if getpgrp2 exists
9107 set getpgrp2 d_getpgrp2
9110 : see if getppid exists
9111 set getppid d_getppid
9114 : see if getpriority exists
9115 set getpriority d_getprior
9118 : see if prototypes for various getprotoxxx netdb.h functions are available
9120 set d_getprotoprotos getprotoent $i_netdb netdb.h
9123 : see if getpwent exists
9124 set getpwent d_getpwent
9128 : see if getservbyname exists
9129 set getservbyname d_getsbyname
9132 : see if getservbyport exists
9133 set getservbyport d_getsbyport
9136 : see if getservent exists
9137 set getservent d_getsent
9140 : see if prototypes for various getservxxx netdb.h functions are available
9142 set d_getservprotos getservent $i_netdb netdb.h
9145 : see if getspent exists
9146 set getspent d_getspent
9149 : see if getspnam exists
9150 set getspnam d_getspnam
9153 : see if gettimeofday or ftime exists
9154 set gettimeofday d_gettimeod
9156 case "$d_gettimeod" in
9162 val="$undef"; set d_ftime; eval $setvar
9165 case "$d_gettimeod$d_ftime" in
9168 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9172 : see if this is an grp system
9178 xxx=`./findhdr grp.h`
9179 $cppstdin $cppflags $cppminus < $xxx >$$.h
9181 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9193 set d_grpasswd; eval $setvar
9197 : see if hasmntopt exists
9198 set hasmntopt d_hasmntopt
9201 : see if this is a netinet/in.h or sys/in.h system
9202 set netinet/in.h i_niin sys/in.h i_sysin
9205 : see if arpa/inet.h has to be included
9206 set arpa/inet.h i_arpainet
9209 : see if htonl --and friends-- exists
9214 : Maybe they are macros.
9219 #include <sys/types.h>
9220 #$i_niin I_NETINET_IN
9222 #$i_arpainet I_ARPA_INET
9224 #include <netinet/in.h>
9230 #include <arpa/inet.h>
9233 printf("Defined as a macro.");
9236 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9237 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9239 echo "But it seems to be defined as a macro." >&4
9247 : see if iconv exists
9253 if set index val -f; eval $csym; $val; then
9254 if set strchr val -f d_strchr; eval $csym; $val; then
9255 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9258 echo "strchr() found." >&4
9262 echo "index() found." >&4
9267 echo "index() found." >&4
9270 if set strchr val -f d_strchr; eval $csym; $val; then
9273 echo "strchr() found." >&4
9275 echo "No index() or strchr() found!" >&4
9280 set d_strchr; eval $setvar
9282 set d_index; eval $setvar
9284 : check whether inet_aton exists
9285 set inet_aton d_inetaton
9288 : see if inttypes.h is available
9289 : we want a real compile instead of Inhdr because some systems
9290 : have an inttypes.h which includes non-existent headers
9293 #include <inttypes.h>
9295 static int32_t foo32 = 0x12345678;
9299 if eval $compile; then
9300 echo "<inttypes.h> found." >&4
9303 echo "<inttypes.h> NOT found." >&4
9312 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9314 #include <sys/types.h>
9315 #$i_inttypes I_INTTYPES
9317 #include <inttypes.h>
9319 int main() { int64_t x = 7; }
9322 if eval $compile; then
9324 echo " Yes, it does." >&4
9327 echo " No, it doesn't." >&4
9335 $cat >isascii.c <<'EOCP'
9347 if eval $compile; then
9348 echo "isascii() found." >&4
9351 echo "isascii() NOT found." >&4
9358 : see if killpg exists
9362 : see if lchown exists
9364 $cat > try.c <<'EOCP'
9365 /* System header to define __stub macros and hopefully few prototypes,
9366 which can conflict with char lchown(); below. */
9368 /* Override any gcc2 internal prototype to avoid an error. */
9369 /* We use char because int might match the return type of a gcc2
9370 builtin and then its argument prototype would still apply. */
9373 /* The GNU C library defines this for functions which it implements
9374 to always fail with ENOSYS. Some functions are actually named
9375 something starting with __ and the normal name is an alias. */
9376 #if defined (__stub_lchown) || defined (__stub___lchown)
9384 if eval $compile; then
9385 $echo "lchown() found." >&4
9388 $echo "lchown() NOT found." >&4
9394 : See if number of significant digits in a double precision number is known
9396 $cat >ldbl_dig.c <<EOM
9406 printf("Contains LDBL_DIG");
9409 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9410 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9411 echo "LDBL_DIG found." >&4
9414 echo "LDBL_DIG NOT found." >&4
9421 : see if link exists
9425 : see if localeconv exists
9426 set localeconv d_locconv
9429 : see if lockf exists
9433 : check for long long
9435 $echo $n "Checking to see if your system supports long long..." $c >&4
9436 echo 'int main() { long long x = 7; return 0; }' > try.c
9438 if eval $compile; then
9440 echo " Yes, it does." >&4
9443 echo " No, it doesn't." >&4
9449 : check for length of long long
9450 case "${d_longlong}${longlongsize}" in
9453 $echo $n "Checking to see how big your long longs are..." $c >&4
9454 $cat >try.c <<'EOCP'
9458 printf("%d\n", (int)sizeof(long long));
9463 if eval $compile_ok; then
9464 longlongsize=`./try$exe_ext`
9465 $echo " $longlongsize bytes." >&4
9469 echo "(I can't seem to compile the test program. Guessing...)"
9470 rp="What is the size of a long long (in bytes)?"
9474 if $test "X$longsize" = "X$longlongsize"; then
9475 echo "(That isn't any different from an ordinary long.)"
9481 : see if lstat exists
9485 : see if mblen exists
9489 : see if mbstowcs exists
9490 set mbstowcs d_mbstowcs
9493 : see if mbtowc exists
9497 : see if memchr exists
9501 : see if memcmp exists
9505 : see if memcpy exists
9509 : see if memmove exists
9510 set memmove d_memmove
9513 : see if memset exists
9517 : see if mkdir exists
9521 : see if mkdtemp exists
9522 set mkdtemp d_mkdtemp
9525 : see if mkfifo exists
9529 : see if mkstemp exists
9530 set mkstemp d_mkstemp
9533 : see if mkstemps exists
9534 set mkstemps d_mkstemps
9537 : see if mktime exists
9541 : see if mprotect exists
9542 set mprotect d_mprotect
9545 : see if msgctl exists
9549 : see if msgget exists
9553 : see if msgsnd exists
9557 : see if msgrcv exists
9561 : see how much of the 'msg*(2)' library is present.
9564 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9565 *"$undef"*) h_msg=false;;
9569 case "`ipcs 2>&1`" in
9570 "SVID messages"*"not configured"*)
9571 echo "Your $osname does not have the msg*(2) configured." >&4
9586 : we could also check for sys/ipc.h ...
9587 if $h_msg && $test `./findhdr sys/msg.h`; then
9588 echo "You have the full msg*(2) library." >&4
9591 echo "You don't have the full msg*(2) library." >&4
9597 : see if msync exists
9601 : see if munmap exists
9605 : see if nice exists
9611 echo "Checking which 64-bit integer type we could use..." >&4
9617 val='"unsigned int"'
9622 *) case "$longsize" in
9626 val='"unsigned long"'
9631 *) case "$d_longlong:$longlongsize" in
9636 val='"unsigned long long"'
9641 *) case "$d_int64t" in
9660 '') case "$uselonglong:$d_longlong:$longlongsize" in
9662 echo "(You would have 'long long', but you are not using it.)" >&4 ;;
9663 *) echo "Alas, no 64-bit integer types in sight." >&4 ;;
9667 *) if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9672 echo "We $verb use '$quadtype' for 64-bit integers." >&4
9677 : check for length of character
9681 echo "Checking to see how big your characters are (hey, you never know)..." >&4
9682 $cat >try.c <<'EOCP'
9686 printf("%d\n", (int)sizeof(char));
9691 if eval $compile_ok; then
9695 echo "(I can't seem to compile the test program. Guessing...)"
9702 rp="What is the size of a character (in bytes)?"
9709 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9711 case "$use64bits:$d_quad:$quadtype" in
9719 uvtype="unsigned long"
9725 case "$uselongdouble:$d_longdbl" in
9727 nvtype="long double"
9735 $echo "(IV will be "$ivtype", $ivsize bytes)"
9736 $echo "(UV will be "$uvtype", $uvsize bytes)"
9737 $echo "(NV will be "$nvtype", $nvsize bytes)"
9740 #$i_inttypes I_INTTYPES
9742 #include <inttypes.h>
9747 int8_t i = INT8_MAX;
9748 uint8_t u = UINT8_MAX;
9752 int16_t i = INT16_MAX;
9753 uint16_t i = UINT16_MAX;
9754 printf("int16_t\n");
9757 int32_t i = INT32_MAX;
9758 uint32_t u = UINT32_MAX;
9759 printf("int32_t\n");
9765 '') case "$charsize" in
9767 u8type="unsigned char"
9776 if eval $compile; then
9777 case "`./try$exe_ext`" in
9778 int8_t) i8type=int8_t
9788 '') if $test $charsize -ge 1; then
9790 u8type="unsigned char"
9798 '') case "$shortsize" in
9800 u16type="unsigned short"
9809 if eval $compile; then
9810 case "`./try$exe_ext`" in
9822 '') if $test $shortsize -ge 2; then
9824 u16type="unsigned short"
9832 '') case "$longsize" in
9834 u32type="unsigned long"
9838 *) case "$intsize" in
9840 u32type="unsigned int"
9851 if eval $compile; then
9852 case "`./try$exe_ext`" in
9864 '') if $test $intsize -ge 4; then
9866 u32type="unsigned int"
9874 '') case "$d_quad:$quadtype" in
9877 u64type="$uquadtype"
9885 $echo "Checking whether your NVs can preserve your UVs..." >&4
9889 $uvtype k = ($uvtype)~0, l;
9895 printf("preserve\n");
9900 if eval $compile; then
9901 case "`./try$exe_ext`" in
9902 preserve) d_nv_preserves_uv="$define" ;;
9905 case "$d_nv_preserves_uv" in
9906 $define) $echo "Yes, they can." 2>&1 ;;
9907 *) $echo "No, they can't." 2>&1
9908 d_nv_preserves_uv="$undef"
9914 : see if POSIX threads are available
9915 set pthread.h i_pthread
9921 : how to create joinable pthreads
9922 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9924 echo "Checking what constant to use for creating joinable pthreads..." >&4
9925 $cat >try.c <<'EOCP'
9926 #include <pthread.h>
9928 int detachstate = JOINABLE;
9931 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9932 if eval $compile; then
9933 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9934 val="$undef" # Yes, undef.
9935 set d_old_pthread_create_joinable
9938 set old_pthread_create_joinable
9941 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9942 if eval $compile; then
9943 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9945 set d_old_pthread_create_joinable
9947 val=PTHREAD_CREATE_UNDETACHED
9948 set old_pthread_create_joinable
9951 set try -DJOINABLE=__UNDETACHED
9952 if eval $compile; then
9953 echo "You seem to use __UNDETACHED." >&4
9955 set d_old_pthread_create_joinable
9958 set old_pthread_create_joinable
9961 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
9963 set d_old_pthread_create_joinable
9966 set old_pthread_create_joinable
9973 d_old_pthread_create_joinable="$undef"
9974 old_pthread_create_joinable=""
9977 : see if pause exists
9981 : see if pipe exists
9985 : see if poll exists
9990 : see whether the various POSIXish _yields exist
9992 #include <pthread.h>
9998 #ifdef PTHREAD_YIELD
10001 #ifdef PTHREAD_YIELD_NULL
10002 pthread_yield(NULL);
10008 : see if sched_yield exists
10009 set try -DSCHED_YIELD
10010 if eval $compile; then
10012 sched_yield='sched_yield()'
10016 case "$usethreads" in
10019 $define) echo 'sched_yield() found.' >&4 ;;
10020 *) echo 'sched_yield() NOT found.' >&4 ;;
10026 : see if pthread_yield exists
10027 set try -DPTHREAD_YIELD
10028 if eval $compile; then
10030 case "$sched_yield" in
10031 '') sched_yield='pthread_yield()' ;;
10034 set try -DPTHREAD_YIELD_NULL
10035 if eval $compile; then
10037 case "$sched_yield" in
10038 '') sched_yield='pthread_yield(NULL)' ;;
10044 case "$usethreads" in
10047 $define) echo 'pthread_yield() found.' >&4 ;;
10048 *) echo 'pthread_yield() NOT found.' >&4 ;;
10052 set d_pthread_yield
10055 case "$sched_yield" in
10056 '') sched_yield=undef ;;
10061 : see if this is a pwd.h system
10067 xxx=`./findhdr pwd.h`
10068 $cppstdin $cppflags $cppminus < $xxx >$$.h
10070 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10078 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10086 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10094 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10102 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10110 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10118 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10126 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10138 set d_pwquota; eval $setvar
10139 set d_pwage; eval $setvar
10140 set d_pwchange; eval $setvar
10141 set d_pwclass; eval $setvar
10142 set d_pwexpire; eval $setvar
10143 set d_pwcomment; eval $setvar
10144 set d_pwgecos; eval $setvar
10145 set d_pwpasswd; eval $setvar
10149 : see if readdir and friends exist
10150 set readdir d_readdir
10152 set seekdir d_seekdir
10154 set telldir d_telldir
10156 set rewinddir d_rewinddir
10159 : see if readlink exists
10160 set readlink d_readlink
10163 : see if rename exists
10164 set rename d_rename
10167 : see if rmdir exists
10171 : see if memory.h is available.
10176 : See if it conflicts with string.h
10182 $cppstdin $cppflags $cppminus < $strings > mem.h
10183 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10185 echo "We won't be including <memory.h>."
10195 : can bcopy handle overlapping blocks?
10200 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10202 #$i_memory I_MEMORY
10203 #$i_stdlib I_STDLIB
10204 #$i_string I_STRING
10205 #$i_unistd I_UNISTD
10207 $cat >>try.c <<'EOCP'
10210 # include <memory.h>
10213 # include <stdlib.h>
10216 # include <string.h>
10218 # include <strings.h>
10221 # include <unistd.h> /* Needed for NetBSD */
10225 char buf[128], abc[128];
10231 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10233 for (align = 7; align >= 0; align--) {
10234 for (len = 36; len; len--) {
10236 bcopy(abc, b, len);
10237 for (off = 1; off <= len; off++) {
10238 bcopy(b, b+off, len);
10239 bcopy(b+off, b, len);
10240 if (bcmp(b, abc, len))
10249 if eval $compile_ok; then
10250 if ./try 2>/dev/null; then
10251 echo "Yes, it can."
10254 echo "It can't, sorry."
10255 case "$d_memmove" in
10256 "$define") echo "But that's Ok since you have memmove()." ;;
10260 echo "(I can't compile the test program, so we'll assume not...)"
10261 case "$d_memmove" in
10262 "$define") echo "But that's Ok since you have memmove()." ;;
10267 $rm -f try.* try core
10271 : can memcpy handle overlapping blocks?
10273 case "$d_memcpy" in
10276 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10278 #$i_memory I_MEMORY
10279 #$i_stdlib I_STDLIB
10280 #$i_string I_STRING
10281 #$i_unistd I_UNISTD
10283 $cat >>try.c <<'EOCP'
10286 # include <memory.h>
10289 # include <stdlib.h>
10292 # include <string.h>
10294 # include <strings.h>
10297 # include <unistd.h> /* Needed for NetBSD */
10301 char buf[128], abc[128];
10307 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10308 try to store the string in read-only memory. */
10309 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10311 for (align = 7; align >= 0; align--) {
10312 for (len = 36; len; len--) {
10314 memcpy(b, abc, len);
10315 for (off = 1; off <= len; off++) {
10316 memcpy(b+off, b, len);
10317 memcpy(b, b+off, len);
10318 if (memcmp(b, abc, len))
10327 if eval $compile_ok; then
10328 if ./try 2>/dev/null; then
10329 echo "Yes, it can."
10332 echo "It can't, sorry."
10333 case "$d_memmove" in
10334 "$define") echo "But that's Ok since you have memmove()." ;;
10338 echo "(I can't compile the test program, so we'll assume not...)"
10339 case "$d_memmove" in
10340 "$define") echo "But that's Ok since you have memmove()." ;;
10345 $rm -f try.* try core
10349 : can memcmp be trusted to compare relative magnitude?
10351 case "$d_memcmp" in
10354 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10356 #$i_memory I_MEMORY
10357 #$i_stdlib I_STDLIB
10358 #$i_string I_STRING
10359 #$i_unistd I_UNISTD
10361 $cat >>try.c <<'EOCP'
10364 # include <memory.h>
10367 # include <stdlib.h>
10370 # include <string.h>
10372 # include <strings.h>
10375 # include <unistd.h> /* Needed for NetBSD */
10381 if ((a < b) && memcmp(&a, &b, 1) < 0)
10387 if eval $compile_ok; then
10388 if ./try 2>/dev/null; then
10389 echo "Yes, it can."
10392 echo "No, it can't (it uses signed chars)."
10395 echo "(I can't compile the test program, so we'll assume not...)"
10399 $rm -f try.* try core
10403 : see if select exists
10404 set select d_select
10407 : see if semctl exists
10408 set semctl d_semctl
10411 : see if semget exists
10412 set semget d_semget
10415 : see if semop exists
10419 : see how much of the 'sem*(2)' library is present.
10422 case "$d_semctl$d_semget$d_semop" in
10423 *"$undef"*) h_sem=false;;
10427 case "`ipcs 2>&1`" in
10428 "SVID messages"*"not configured"*)
10429 echo "Your $osname does not have the sem*(2) configured." >&4
10432 set semctl d_semctl
10434 set semget d_semget
10442 : we could also check for sys/ipc.h ...
10443 if $h_sem && $test `./findhdr sys/sem.h`; then
10444 echo "You have the full sem*(2) library." >&4
10447 echo "You don't have the full sem*(2) library." >&4
10453 : see whether sys/sem.h defines union semun
10455 $cat > try.c <<'END'
10456 #include <sys/types.h>
10457 #include <sys/ipc.h>
10458 #include <sys/sem.h>
10459 int main () { union semun semun; semun.buf = 0; }
10462 if eval $compile; then
10463 echo "You have union semun in <sys/sem.h>." >&4
10466 echo "You do not have union semun in <sys/sem.h>." >&4
10469 $rm -f try try.c try.h
10473 : see how to do semctl IPC_STAT
10476 : see whether semctl IPC_STAT can use union semun
10481 # define S_IRUSR S_IREAD
10482 # define S_IWUSR S_IWRITE
10483 # define S_IXUSR S_IEXEC
10485 # define S_IRUSR 0400
10486 # define S_IWUSR 0200
10487 # define S_IXUSR 0100
10489 # define S_IRGRP (S_IRUSR>>3)
10490 # define S_IWGRP (S_IWUSR>>3)
10491 # define S_IXGRP (S_IXUSR>>3)
10492 # define S_IROTH (S_IRUSR>>6)
10493 # define S_IWOTH (S_IWUSR>>6)
10494 # define S_IXOTH (S_IXUSR>>6)
10497 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10498 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10499 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10504 #include <sys/types.h>
10505 #include <sys/ipc.h>
10506 #include <sys/sem.h>
10507 #include <sys/stat.h>
10514 #$d_union_semun HAS_UNION_SEMUN
10517 #ifndef HAS_UNION_SEMUN
10520 struct semid_ds *buf;
10521 unsigned short *array;
10527 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10528 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10530 struct semid_ds argbuf;
10533 st = semctl(sem, 0, IPC_STAT, arg);
10537 # endif /* IPC_STAT */
10538 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10540 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10541 # endif /* IPC_RMID */
10542 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10544 #endif /* IPC_PRIVATE && ... */
10545 printf("semget failed: errno = %d\n", errno);
10551 if eval $compile; then
10554 semun) val="$define" ;;
10560 case "$d_semctl_semun" in
10562 echo "You can use union semun for semctl IPC_STAT." >&4
10565 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10570 : see whether semctl IPC_STAT can use struct semid_ds pointer
10571 $cat > try.c <<'END'
10572 #include <sys/types.h>
10573 #include <sys/ipc.h>
10574 #include <sys/sem.h>
10575 #include <sys/stat.h>
10583 struct semid_ds arg;
10586 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10587 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10590 st = semctl(sem, 0, IPC_STAT, &arg);
10592 printf("semid_ds\n");
10594 # endif /* IPC_STAT */
10595 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10597 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10598 # endif /* IPC_RMID */
10599 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10601 #endif /* IPC_PRIVATE && ... */
10602 printf("semget failed: errno = %d\n", errno);
10609 if eval $compile; then
10612 semid_ds) val="$define" ;;
10616 set d_semctl_semid_ds
10618 case "$d_semctl_semid_ds" in
10620 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10622 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10629 # We do not have the full sem*(2) library, so assume we can not
10635 set d_semctl_semid_ds
10640 : see if setegid exists
10641 set setegid d_setegid
10644 : see if seteuid exists
10645 set seteuid d_seteuid
10648 : see if setgrent exists
10649 set setgrent d_setgrent
10652 : see if sethostent exists
10653 set sethostent d_sethent
10656 : see if setlinebuf exists
10657 set setlinebuf d_setlinebuf
10660 : see if setlocale exists
10661 set setlocale d_setlocale
10664 : see if setnetent exists
10665 set setnetent d_setnent
10668 : see if setprotoent exists
10669 set setprotoent d_setpent
10672 : see if setpgid exists
10673 set setpgid d_setpgid
10676 : see if setpgrp2 exists
10677 set setpgrp2 d_setpgrp2
10680 : see if setpriority exists
10681 set setpriority d_setprior
10684 : see if setpwent exists
10685 set setpwent d_setpwent
10688 : see if setregid exists
10689 set setregid d_setregid
10691 set setresgid d_setresgid
10694 : see if setreuid exists
10695 set setreuid d_setreuid
10697 set setresuid d_setresuid
10700 : see if setrgid exists
10701 set setrgid d_setrgid
10704 : see if setruid exists
10705 set setruid d_setruid
10708 : see if setservent exists
10709 set setservent d_setsent
10712 : see if setsid exists
10713 set setsid d_setsid
10716 : see if setspent exists
10717 set setspent d_setspent
10720 : see if setvbuf exists
10721 set setvbuf d_setvbuf
10724 : see if sfio.h is available
10729 : see if sfio library is available
10740 : Ok, but do we want to use it.
10744 true|$define|[yY]*) dflt='y';;
10747 echo "$package can use the sfio library, but it is experimental."
10748 rp="You seem to have sfio available, do you want to try using it?"
10752 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
10754 : Remove sfio from list of libraries to use
10755 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10758 echo "libs = $libs" >&4
10762 *) case "$usesfio" in
10763 true|$define|[yY]*)
10764 echo "Sorry, cannot find sfio on this machine" >&4
10765 echo "Ignoring your setting of usesfio=$usesfio" >&4
10773 $define) usesfio='true';;
10774 *) usesfio='false';;
10777 : see if shmctl exists
10778 set shmctl d_shmctl
10781 : see if shmget exists
10782 set shmget d_shmget
10785 : see if shmat exists
10788 : see what shmat returns
10791 $cat >shmat.c <<'END'
10792 #include <sys/shm.h>
10795 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10800 echo "and it returns ($shmattype)." >&4
10801 : see if a prototype for shmat is available
10802 xxx=`./findhdr sys/shm.h`
10803 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10804 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10815 set d_shmatprototype
10818 : see if shmdt exists
10822 : see how much of the 'shm*(2)' library is present.
10825 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10826 *"$undef"*) h_shm=false;;
10830 case "`ipcs 2>&1`" in
10831 "SVID shared memory"*"not configured"*)
10832 echo "Your $osname does not have the shm*(2) configured." >&4
10835 set shmctl d_shmctl
10837 set shmget d_shmget
10847 : we could also check for sys/ipc.h ...
10848 if $h_shm && $test `./findhdr sys/shm.h`; then
10849 echo "You have the full shm*(2) library." >&4
10852 echo "You don't have the full shm*(2) library." >&4
10859 : see if we have sigaction
10860 if set sigaction val -f d_sigaction; eval $csym; $val; then
10861 echo 'sigaction() found.' >&4
10862 $cat > try.c <<'EOP'
10864 #include <sys/types.h>
10865 #include <signal.h>
10868 struct sigaction act, oact;
10870 oact.sa_handler = 0;
10871 /* so that act and oact are used */
10872 exit(act.sa_flags == 0 && oact.sa_handler == 0);
10876 if eval $compile_ok; then
10879 echo "But you don't seem to have a useable struct sigaction." >&4
10883 echo 'sigaction NOT found.' >&4
10886 set d_sigaction; eval $setvar
10887 $rm -f try try$_o try.c
10889 : see if sigsetjmp exists
10891 case "$d_sigsetjmp" in
10893 $cat >try.c <<'EOP'
10894 #include <setjmp.h>
10899 if (sigsetjmp(env,1))
10902 siglongjmp(env, 1);
10907 if eval $compile; then
10908 if ./try >/dev/null 2>&1; then
10909 echo "POSIX sigsetjmp found." >&4
10913 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10919 echo "sigsetjmp not found." >&4
10923 *) val="$d_sigsetjmp"
10924 case "$d_sigsetjmp" in
10925 $define) echo "POSIX sigsetjmp found." >&4;;
10926 $undef) echo "sigsetjmp not found." >&4;;
10934 : see if sys/stat.h is available
10935 set sys/stat.h i_sysstat
10939 : see if stat knows about block sizes
10941 echo "Checking to see if your struct stat has st_blocks field..." >&4
10942 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10946 : see if this is a sys/vfs.h system
10947 set sys/vfs.h i_sysvfs
10951 : see if this is a sys/statfs.h system
10952 set sys/statfs.h i_sysstatfs
10957 echo "Checking to see if your system supports struct statfs..." >&4
10958 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
10960 case "$d_statfs_s" in
10961 "$define") echo "Yes, it does." ;;
10962 *) echo "No, it doesn't." ;;
10967 : see if struct statfs knows about f_flags
10968 case "$d_statfs_s" in
10971 echo "Checking to see if your struct statfs has f_flags field..." >&4
10972 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
10976 set d_statfs_f_flags
10980 case "$d_statfs_f_flags" in
10981 "$define") echo "Yes, it does." ;;
10982 *) echo "No, it doesn't." ;;
10985 : see if _ptr and _cnt from stdio act std
10987 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10988 echo "(Looks like you have stdio.h from Linux.)"
10989 case "$stdio_ptr" in
10990 '') stdio_ptr='((fp)->_IO_read_ptr)'
10993 *) ptr_lval=$d_stdio_ptr_lval;;
10995 case "$stdio_cnt" in
10996 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10999 *) cnt_lval=$d_stdio_cnt_lval;;
11001 case "$stdio_base" in
11002 '') stdio_base='((fp)->_IO_read_base)';;
11004 case "$stdio_bufsiz" in
11005 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11008 case "$stdio_ptr" in
11009 '') stdio_ptr='((fp)->_ptr)'
11012 *) ptr_lval=$d_stdio_ptr_lval;;
11014 case "$stdio_cnt" in
11015 '') stdio_cnt='((fp)->_cnt)'
11018 *) cnt_lval=$d_stdio_cnt_lval;;
11020 case "$stdio_base" in
11021 '') stdio_base='((fp)->_base)';;
11023 case "$stdio_bufsiz" in
11024 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11027 : test whether _ptr and _cnt really work
11028 echo "Checking how std your stdio is..." >&4
11031 #define FILE_ptr(fp) $stdio_ptr
11032 #define FILE_cnt(fp) $stdio_cnt
11034 FILE *fp = fopen("try.c", "r");
11037 18 <= FILE_cnt(fp) &&
11038 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11046 if eval $compile; then
11048 echo "Your stdio acts pretty std."
11051 echo "Your stdio isn't very std."
11054 echo "Your stdio doesn't appear very std."
11060 : Can _ptr be used as an lvalue?
11061 case "$d_stdstdio$ptr_lval" in
11062 $define$define) val=$define ;;
11065 set d_stdio_ptr_lval
11068 : Can _cnt be used as an lvalue?
11069 case "$d_stdstdio$cnt_lval" in
11070 $define$define) val=$define ;;
11073 set d_stdio_cnt_lval
11076 : see if _base is also standard
11078 case "$d_stdstdio" in
11082 #define FILE_base(fp) $stdio_base
11083 #define FILE_bufsiz(fp) $stdio_bufsiz
11085 FILE *fp = fopen("try.c", "r");
11088 19 <= FILE_bufsiz(fp) &&
11089 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11096 if eval $compile; then
11098 echo "And its _base field acts std."
11101 echo "But its _base field isn't std."
11104 echo "However, it seems to be lacking the _base field."
11113 Checking how to access stdio streams by file descriptor number...
11115 case "$stdio_stream_array" in
11116 '') $cat >try.c <<EOCP
11119 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11123 for s in _iob __iob __sF
11125 set try -DSTDIO_STREAM_ARRAY=$s
11126 if eval $compile; then
11127 case "`./try$exe_ext`" in
11128 yes) stdio_stream_array=$s; break ;;
11132 $rm -f try.* try$exe_ext
11134 case "$stdio_stream_array" in
11136 I can't figure out how to access stdio streams by file descriptor number.
11138 d_stdio_stream_array="$undef"
11141 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11143 d_stdio_stream_array="$define"
11147 : see if strcoll exists
11148 set strcoll d_strcoll
11151 : check for structure copying
11153 echo "Checking to see if your C compiler can copy structs..." >&4
11154 $cat >try.c <<'EOCP'
11164 if $cc -c try.c >/dev/null 2>&1 ; then
11166 echo "Yup, it can."
11169 echo "Nope, it can't."
11175 : see if strerror and/or sys_errlist[] exist
11177 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11178 if set strerror val -f d_strerror; eval $csym; $val; then
11179 echo 'strerror() found.' >&4
11180 d_strerror="$define"
11181 d_strerrm='strerror(e)'
11182 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11183 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11184 d_syserrlst="$define"
11186 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11187 d_syserrlst="$undef"
11189 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11190 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11191 echo 'strerror() found in string header.' >&4
11192 d_strerror="$define"
11193 d_strerrm='strerror(e)'
11194 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11195 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11196 d_syserrlst="$define"
11198 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11199 d_syserrlst="$undef"
11201 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11202 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11203 d_strerror="$undef"
11204 d_syserrlst="$define"
11205 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11207 echo 'strerror() and sys_errlist[] NOT found.' >&4
11208 d_strerror="$undef"
11209 d_syserrlst="$undef"
11210 d_strerrm='"unknown"'
11214 : see if strtod exists
11215 set strtod d_strtod
11218 : see if strtol exists
11219 set strtol d_strtol
11222 : see if strtold exists
11223 set strtold d_strtold
11226 : see if strtoll exists
11227 set strtoll d_strtoll
11230 : see if strtoul exists
11231 set strtoul d_strtoul
11234 : see if strtoull exists
11235 set strtoull d_strtoull
11238 : see if strtouq exists
11239 set strtouq d_strtouq
11242 : see if strxfrm exists
11243 set strxfrm d_strxfrm
11246 : see if symlink exists
11247 set symlink d_symlink
11250 : see if syscall exists
11251 set syscall d_syscall
11254 : see if sysconf exists
11255 set sysconf d_sysconf
11258 : see if system exists
11259 set system d_system
11262 : see if tcgetpgrp exists
11263 set tcgetpgrp d_tcgetpgrp
11266 : see if tcsetpgrp exists
11267 set tcsetpgrp d_tcsetpgrp
11270 : see if prototype for telldir is available
11272 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11275 : see if this is a sys/times.h system
11276 set sys/times.h i_systimes
11279 : see if times exists
11281 if set times val -f d_times; eval $csym; $val; then
11282 echo 'times() found.' >&4
11285 case "$i_systimes" in
11286 "$define") inc='sys/times.h';;
11288 rp="What is the type returned by times() on this system?"
11289 set clock_t clocktype long stdio.h sys/types.h $inc
11292 echo 'times() NOT found, hope that will do.' >&4
11297 : see if truncate exists
11298 set truncate d_truncate
11301 : see if tzname[] exists
11303 if set tzname val -a d_tzname; eval $csym; $val; then
11305 echo 'tzname[] found.' >&4
11308 echo 'tzname[] NOT found.' >&4
11313 : see if umask exists
11317 : see if ustat exists
11321 : backward compatibility for d_hvfork
11322 if test X$d_hvfork != X; then
11323 d_vfork="$d_hvfork"
11326 : see if there is a vfork
11331 : Ok, but do we want to use it. vfork is reportedly unreliable in
11332 : perl on Solaris 2.x, and probably elsewhere.
11336 case "$usevfork" in
11342 Perl can only use a vfork() that doesn't suffer from strict
11343 restrictions on calling functions or modifying global data in
11344 the child. For example, glibc-2.1 contains such a vfork()
11345 that is unsuitable. If your system provides a proper fork()
11346 call, chances are that you do NOT want perl to use vfork().
11349 rp="Do you still want to use vfork()?"
11354 echo "Ok, we won't use vfork()."
11363 $define) usevfork='true';;
11364 *) usevfork='false';;
11367 : see if this is an sysdir system
11368 set sys/dir.h i_sysdir
11371 : see if this is an sysndir system
11372 set sys/ndir.h i_sysndir
11375 : see if closedir exists
11376 set closedir d_closedir
11379 case "$d_closedir" in
11382 echo "Checking whether closedir() returns a status..." >&4
11383 cat > closedir.c <<EOM
11384 #$i_dirent I_DIRENT /**/
11385 #$i_sysdir I_SYS_DIR /**/
11386 #$i_sysndir I_SYS_NDIR /**/
11387 #$i_systypes I_SYS_TYPES /**/
11389 #if defined(I_SYS_TYPES)
11390 #include <sys/types.h>
11392 #if defined(I_DIRENT)
11393 #include <dirent.h>
11394 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11395 #include <sys/dir.h>
11399 #include <sys/ndir.h>
11403 #include <ndir.h> /* may be wrong in the future */
11405 #include <sys/dir.h>
11410 int main() { return closedir(opendir(".")); }
11413 if eval $compile_ok; then
11414 if ./closedir > /dev/null 2>&1 ; then
11415 echo "Yes, it does."
11418 echo "No, it doesn't."
11422 echo "(I can't seem to compile the test program--assuming it doesn't)"
11430 set d_void_closedir
11433 : check for volatile keyword
11435 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11436 $cat >try.c <<'EOCP'
11439 typedef struct _goo_struct goo_struct;
11440 goo_struct * volatile goo = ((goo_struct *)0);
11441 struct _goo_struct {
11446 typedef unsigned short foo_t;
11447 char *volatile foo;
11449 volatile foo_t blech;
11453 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11455 echo "Yup, it does."
11458 echo "Nope, it doesn't."
11464 : see if there is a wait4
11468 : see if waitpid exists
11469 set waitpid d_waitpid
11472 : see if wcstombs exists
11473 set wcstombs d_wcstombs
11476 : see if wctomb exists
11477 set wctomb d_wctomb
11480 : preserve RCS keywords in files with variable substitution, grrr
11485 Revision='$Revision'
11487 case "$crosscompile" in
11488 ''|[nN]*) crosscompile="$undef" ;;
11492 next|rhapsody) multiarch="$define" ;;
11494 case "$multiarch" in
11495 ''|[nN]*) multiarch="$undef" ;;
11498 : check for alignment requirements
11500 case "$crosscompile$multiarch" in
11503 You seem to be either cross-compiling or doing a multiarchitecture build,
11504 skipping the memory alignment check.
11507 case "$alignbytes" in
11508 '') alignbytes=8 ;;
11512 case "$alignbytes" in
11513 '') echo "Checking alignment constraints..." >&4
11514 $cat >try.c <<'EOCP'
11522 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11527 if eval $compile_ok; then
11531 echo "(I can't seem to compile the test program...)"
11534 *) dflt="$alignbytes"
11537 rp="Doubles must be aligned on a how-many-byte boundary?"
11545 : check for ordering of bytes in a long
11547 case "$crosscompile$multiarch" in
11550 You seem to be either cross-compiling or doing a multiarchitecture build,
11551 skipping the byteorder check.
11557 case "$byteorder" in
11560 In the following, larger digits indicate more significance. A big-endian
11561 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11562 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11563 machines may have weird orders like 3412. A Cray will report 87654321,
11564 an Alpha will report 12345678. If the test program works the default is
11566 I'm now running the test program...
11568 $cat >try.c <<'EOCP'
11575 char c[sizeof(long)];
11578 if (sizeof(long) > 4)
11579 u.l = (0x08070605L << 32) | 0x04030201L;
11582 for (i = 0; i < sizeof(long); i++)
11583 printf("%c", u.c[i]+'0');
11590 if eval $compile && ./try > /dev/null; then
11593 [1-4][1-4][1-4][1-4]|12345678|87654321)
11594 echo "(The test program ran ok.)"
11595 echo "byteorder=$dflt"
11598 ????|????????) echo "(The test program ran ok.)" ;;
11599 *) echo "(The test program didn't run right for some reason.)" ;;
11604 (I can't seem to compile the test program. Guessing big-endian...)
11607 case "$xxx_prompt" in
11609 rp="What is the order of bytes in a long?"
11623 : how do we catenate cpp tokens here?
11625 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11626 $cat >cpp_stuff.c <<'EOCP'
11627 #define RCAT(a,b)a/**/b
11628 #define ACAT(a,b)a ## b
11632 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11633 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11634 echo "Oh! Smells like ANSI's been here." >&4
11635 echo "We can catify or stringify, separately or together!"
11637 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11638 echo "Ah, yes! The good old days!" >&4
11639 echo "However, in the good old days we don't know how to stringify and"
11640 echo "catify at the same time."
11644 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
11645 to have to edit the values of CAT[2-5] in config.h...
11647 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11651 : see if this is a db.h system
11657 : Check db version.
11659 echo "Checking Berkeley DB version ..." >&4
11665 #include <sys/types.h>
11670 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11671 int Major, Minor, Patch ;
11672 unsigned long Version ;
11673 (void)db_version(&Major, &Minor, &Patch) ;
11674 printf("You have Berkeley DB Version 2 or greater\n");
11676 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11677 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11678 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11679 Major, Minor, Patch) ;
11681 /* check that db.h & libdb are compatible */
11682 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11683 printf("db.h and libdb are incompatible\n") ;
11687 printf("db.h and libdb are compatible\n") ;
11689 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11690 + DB_VERSION_PATCH ;
11692 /* needs to be >= 2.3.4 */
11693 if (Version < 2003004) {
11694 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11695 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11701 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11702 printf("You have Berkeley DB Version 1\n");
11703 exit(0); /* DB version < 2: the coast is clear. */
11705 exit(1); /* <db.h> not Berkeley DB? */
11711 if eval $compile_ok && ./try; then
11712 echo 'Looks OK.' >&4
11714 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
11718 : Remove db from list of libraries to use
11719 echo "Removing unusable -ldb from library list" >&4
11720 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11723 echo "libs = $libs" >&4
11733 : Check the return type needed for hash
11735 echo "Checking return type needed for hash for Berkeley DB ..." >&4
11741 #include <sys/types.h>
11744 #ifndef DB_VERSION_MAJOR
11745 u_int32_t hash_cb (ptr, size)
11753 info.hash = hash_cb;
11757 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11758 if $contains warning try.out >>/dev/null 2>&1 ; then
11761 db_hashtype='u_int32_t'
11764 : XXX Maybe we should just give up here.
11765 db_hashtype=u_int32_t
11767 echo "Help: I can't seem to compile the db test program." >&4
11768 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11771 echo "Your version of Berkeley DB uses $db_hashtype for hash."
11773 *) db_hashtype=u_int32_t
11778 : Check the return type needed for prefix
11780 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11786 #include <sys/types.h>
11789 #ifndef DB_VERSION_MAJOR
11790 size_t prefix_cb (key1, key2)
11798 info.prefix = prefix_cb;
11802 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11803 if $contains warning try.out >>/dev/null 2>&1 ; then
11804 db_prefixtype='int'
11806 db_prefixtype='size_t'
11809 db_prefixtype='size_t'
11810 : XXX Maybe we should just give up here.
11812 echo "Help: I can't seem to compile the db test program." >&4
11813 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11816 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11818 *) db_prefixtype='size_t'
11822 : check for void type
11824 echo "Checking to see how well your C compiler groks the void type..." >&4
11825 case "$voidflags" in
11827 $cat >try.c <<'EOCP'
11833 extern void moo(); /* function returning void */
11834 void (*goo)(); /* ptr to func returning void */
11836 void *hue; /* generic ptr */
11849 int main() { sub(); }
11851 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11852 voidflags=$defvoidused
11853 echo "Good. It appears to support void to the level $package wants.">&4
11854 if $contains warning .out >/dev/null 2>&1; then
11855 echo "However, you might get some warnings that look like this:"
11859 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11860 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11861 echo "It supports 1..."
11862 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11863 echo "It also supports 2..."
11864 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11866 echo "And it supports 4 but not 8 definitely."
11868 echo "It doesn't support 4..."
11869 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11871 echo "But it supports 8."
11874 echo "Neither does it support 8."
11878 echo "It does not support 2..."
11879 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11881 echo "But it supports 4 and 8."
11883 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11885 echo "And it supports 4 but has not heard about 8."
11887 echo "However it supports 8 but not 4."
11892 echo "There is no support at all for void."
11897 case "$voidflags" in
11899 *) $cat >&4 <<'EOM'
11900 Support flag bits are:
11901 1: basic void declarations.
11902 2: arrays of pointers to functions returning void.
11903 4: operations between pointers to and addresses of void functions.
11904 8: generic void pointers.
11907 rp="Your void support flags add up to what?"
11915 : How can we generate normalized random numbers ?
11917 echo "Looking for a random number function..." >&4
11918 case "$randfunc" in
11920 if set drand48 val -f; eval $csym; $val; then
11922 echo "Good, found drand48()." >&4
11923 elif set random val -f; eval $csym; $val; then
11925 echo "OK, found random()." >&4
11928 echo "Yick, looks like I have to use rand()." >&4
11939 *-Dmy_rand=*|*-Dmy_srand=*)
11940 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11941 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11942 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11943 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11947 while $test "$cont"; do
11948 rp="Use which function to generate random numbers?"
11950 if $test "$ans" = "$dflt"; then
11956 if set $ans val -f; eval $csym; $val; then
11960 rp="I cannot find function $ans. Use that name anyway?"
11969 case "$randfunc" in
11971 drand01="drand48()"
11977 case "$randbits" in
11979 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11981 #$i_unistd I_UNISTD
11982 #$i_stdlib I_STDLIB
11985 # include <unistd.h>
11988 # include <stdlib.h>
11993 register unsigned long tmp;
11994 register unsigned long max = 0L;
11996 for (i = 1000; i; i--) {
11997 tmp = (unsigned long) $randfunc();
11998 if (tmp > max) max = tmp;
12000 for (i = 0; max; i++)
12006 if eval $compile_ok; then
12010 echo "(I can't seem to compile the test program...)"
12017 rp="How many bits does your $randfunc() function produce?"
12021 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12022 seedfunc="s$randfunc"
12023 randseedtype=unsigned
12027 rp="How many bits does your $randfunc() function produce?"
12030 seedfunc="s$randfunc"
12031 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12032 if set $seedfunc val -f; eval $csym; $val; then
12033 echo "(Using $seedfunc() to seed random generator)"
12035 echo "(Warning: no $seedfunc() to seed random generator)"
12038 randseedtype=unsigned
12046 echo "Determining whether or not we are on an EBCDIC system..." >&4
12047 $cat >tebcdic.c <<'EOM'
12050 if ('M'==0xd4) return 0;
12057 if eval $compile_ok; then
12059 echo "You have EBCDIC." >&4
12062 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12065 echo "I'm unable to compile the test program." >&4
12066 echo "I'll assume ASCII or some ISO Latin." >&4
12068 $rm -f tebcdic.c tebcdic
12074 Checking how to flush all pending stdio output...
12076 # I only know how to find the first 32 possibly open files on SunOS.
12077 # See also hints/sunos_4_1.sh and util.c --AD
12079 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12081 $cat >>try.c <<EOCP
12083 #$i_unistd I_UNISTD
12085 # include <unistd.h>
12087 #$d_sysconf HAS_SYSCONF
12088 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12089 #ifdef HAS_STDIO_STREAM_ARRAY
12090 # define STDIO_STREAM_ARRAY $stdio_stream_array
12093 FILE* p = fopen("try.out", "w");
12097 # ifdef TRY_FPRINTF
12101 #ifdef TRY_FFLUSH_NULL
12104 #ifdef TRY_FFLUSH_ALL
12106 long open_max = -1;
12107 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12108 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12110 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12111 open_max = sysconf(_SC_OPEN_MAX);
12114 open_max = FOPEN_MAX;
12117 open_max = OPEN_MAX;
12126 # ifdef HAS_STDIO_STREAM_ARRAY
12127 if (open_max > 0) {
12129 for (i = 0; i < open_max; i++)
12130 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12131 STDIO_STREAM_ARRAY[i]._file < open_max &&
12132 STDIO_STREAM_ARRAY[i]._flag)
12133 fflush(&STDIO_STREAM_ARRAY[i]);
12141 : first we have to find out how _not_ to flush
12142 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12144 set try -DTRY_FPUTC
12145 if eval $compile; then
12147 ./try$exe_ext 2>/dev/null
12148 if $test ! -s try.out -a "X$?" = X42; then
12154 set try -DTRY_FPRINTF
12156 if eval $compile; then
12158 ./try$exe_ext 2>/dev/null
12159 if $test ! -s try.out -a "X$?" = X42; then
12160 output=-DTRY_FPRINTF
12166 : check for fflush NULL behaviour
12167 case "$fflushNULL" in
12168 '') set try -DTRY_FFLUSH_NULL $output
12169 if eval $compile; then
12171 ./try$exe_ext 2>/dev/null
12173 if $test -s try.out -a "X$code" = X42; then
12174 fflushNULL="`$cat try.out`"
12176 if $test "X$code" != X42; then
12178 (If this test failed, don't worry, we'll try another method shortly.)
12183 $rm -f core try.core core.try.*
12184 case "$fflushNULL" in
12186 Your fflush(NULL) works okay.
12188 fflushNULL="$define"
12191 Your fflush(NULL) isn't working (contrary to ANSI C).
12193 fflushNULL="$undef"
12196 Cannot figure out whether your fflush(NULL) works or not.
12197 I'm assuming it doesn't (contrary to ANSI C).
12199 fflushNULL="$undef"
12203 $define|true|[yY]*)
12204 fflushNULL="$define"
12207 fflushNULL="$undef"
12210 : check explicit looping only if NULL did not work
12211 case "$fflushNULL" in
12213 : check for fflush all behaviour
12214 case "$fflushall" in
12215 '') set try -DTRY_FFLUSH_ALL $output
12216 if eval $compile; then
12218 (Now testing the other method--but note that also this may fail.)
12221 ./try$exe_ext 2>/dev/null
12222 if $test -s try.out -a "X$?" = X42; then
12223 fflushall="`$cat try.out`"
12226 $rm -f core try.core core.try.*
12227 case "$fflushall" in
12229 Whew. Flushing explicitly all the stdio streams works.
12231 fflushall="$define"
12234 Sigh. Flushing explicitly all the stdio streams doesn't work.
12239 Cannot figure out whether flushing stdio streams explicitly works or not.
12240 I'm assuming it doesn't.
12246 "$define"|true|[yY]*)
12247 fflushall="$define"
12254 *) fflushall="$undef"
12257 case "$fflushNULL$fflushall" in
12260 I cannot figure out how to flush pending stdio output.
12264 $rm -f try.* try$exe_ext
12266 : Store the full pathname to the ar program for use in the C program
12267 : Respect a hint or command line value for full_ar.
12272 : Store the full pathname to the sed program for use in the C program
12275 : see what type gids are declared as in the kernel
12277 echo "Looking for the type for group ids returned by getgid()."
12278 set gid_t gidtype xxx stdio.h sys/types.h
12282 xxx=`./findhdr sys/user.h`
12283 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12285 unsigned) dflt="$1 $2" ;;
12289 *) dflt="$gidtype";;
12292 gid_t) echo "gid_t found." ;;
12293 *) rp="What is the type for group ids returned by getgid()?"
12301 *_t) zzz="$gidtype" ;;
12304 echo "Checking the size of $zzz..." >&4
12306 #include <sys/types.h>
12309 printf("%d\n", (int)sizeof($gidtype));
12314 if eval $compile_ok; then
12318 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12321 echo "Your $zzz size is $gidsize bytes."
12326 echo "(I can't compile the test program--guessing $gidsize.)" >&4
12332 *_t) zzz="$gidtype" ;;
12335 echo "Checking the sign of $zzz..." >&4
12337 #include <sys/types.h>
12348 if eval $compile; then
12352 echo "(I can't execute the test program--guessing unsigned.)" >&4
12356 1) echo "Your $zzz is unsigned." ;;
12357 -1) echo "Your $zzz is signed." ;;
12363 echo "(I can't compile the test program--guessing unsigned.)" >&4
12369 if $test X"$quadtype" != X; then
12371 echo "Checking how to print 64-bit integers..." >&4
12373 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12374 $cat >try.c <<'EOCP'
12375 #include <sys/types.h>
12378 int q = 12345678901;
12379 printf("%ld\n", q);
12383 if eval $compile; then
12384 yyy=`./try$exe_ext`
12387 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12388 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12389 echo "We will use %d."
12395 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12396 $cat >try.c <<'EOCP'
12397 #include <sys/types.h>
12400 long q = 12345678901;
12401 printf("%ld\n", q);
12405 if eval $compile; then
12406 yyy=`./try$exe_ext`
12409 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12410 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12411 echo "We will use %ld."
12417 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12418 $cat >try.c <<'EOCP'
12419 #include <sys/types.h>
12420 #include <inttypes.h>
12423 int64_t q = 12345678901;
12424 printf("%" PRId64 "\n", q);
12428 if eval $compile; then
12429 yyy=`./try$exe_ext`
12432 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12433 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12434 echo "We will use the C9X style."
12440 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12441 $cat >try.c <<'EOCP'
12442 #include <sys/types.h>
12445 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12446 printf("%lld\n", q);
12450 if eval $compile; then
12451 yyy=`./try$exe_ext`
12454 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12455 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12456 echo "We will use the %lld style."
12462 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12464 #include <sys/types.h>
12467 $quadtype q = 12345678901;
12468 printf("%Ld\n", q);
12472 if eval $compile; then
12473 yyy=`./try$exe_ext`
12476 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12477 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12478 echo "We will use %Ld."
12484 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12486 #include <sys/types.h>
12489 $quadtype q = 12345678901;
12490 printf("%qd\n", q);
12494 if eval $compile; then
12495 yyy=`./try$exe_ext`
12498 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12499 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12500 echo "We will use %qd."
12506 if $test X"$sPRId64" = X; then
12507 echo "Cannot figure out how to print 64-bit integers." >&4
12515 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
12516 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
12518 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
12519 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
12525 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12527 if $test X"$ivsize" = X8; then
12528 ivdformat="$sPRId64"
12529 uvuformat="$sPRIu64"
12530 uvoformat="$sPRIo64"
12531 uvxformat="$sPRIx64"
12533 if $test X"$ivsize" = X"$longsize"; then
12539 if $test X"$ivsize" = X"$intsize"; then
12546 if $test X"$ivsize" = X"$shortsize"; then
12556 case "$ivdformat" in
12557 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12564 $echo "Checking the format string to be used for gids..." >&4
12567 -1) if $test X"$gidsize" = X"$ivsize"; then
12568 gidformat="$ivdformat"
12570 if $test X"$gidsize" = X"$longsize"; then
12573 if $test X"$gidsize" = X"$intsize"; then
12576 if $test X"$gidsize" = X"$shortsize"; then
12583 *) if $test X"$gidsize" = X"$uvsize"; then
12584 gidformat="$uvuformat"
12586 if $test X"$gidsize" = X"$longsize"; then
12589 if $test X"$gidsize" = X"$intsize"; then
12592 if $test X"$gidsize" = X"$shortsize"; then
12601 : see if getgroups exists
12602 set getgroups d_getgrps
12605 : see if setgroups exists
12606 set setgroups d_setgrps
12610 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12612 case "$d_getgrps$d_setgrps" in
12614 case "$groupstype" in
12615 '') dflt="$gidtype" ;;
12616 *) dflt="$groupstype" ;;
12619 What type of pointer is the second argument to getgroups() and setgroups()?
12620 Usually this is the same as group ids, $gidtype, but not always.
12623 rp='What type pointer is the second argument to getgroups() and setgroups()?'
12627 *) groupstype="$gidtype";;
12631 echo "Checking if your $make program sets \$(MAKE)..." >&4
12632 case "$make_set_make" in
12634 $sed 's/^X //' > testmake.mak << 'EOF'
12636 X @echo 'maketemp="$(MAKE)"'
12638 case "`$make -f testmake.mak 2>/dev/null`" in
12639 *maketemp=*) make_set_make='#' ;;
12640 *) make_set_make="MAKE=$make" ;;
12642 $rm -f testmake.mak
12645 case "$make_set_make" in
12646 '#') echo "Yup, it does.";;
12647 *) echo "Nope, it doesn't.";;
12650 : see if this is a sys/mman.h system
12651 set sys/mman.h i_sysmman
12654 : see if mmap exists
12657 : see what shmat returns
12658 : default to something harmless
12660 case "$i_sysmman$d_mmap" in
12662 $cat >mmap.c <<'END'
12663 #include <sys/mman.h>
12666 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
12671 echo "and it returns ($mmaptype)." >&4
12677 : see what type is used for mode_t
12678 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12679 set mode_t modetype int stdio.h sys/types.h
12682 : define a fucntion to check prototypes
12683 $cat > protochk <<EOSH
12686 optimize="$optimize"
12688 prototype="$prototype"
12693 $cat >> protochk <<'EOSH'
12698 while test $# -ge 2; do
12700 $define) echo "#include <$2>" >> try.c ;;
12701 literal) echo "$2" >> try.c ;;
12705 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
12706 cat >> try.c <<'EOCP'
12707 #ifdef CAN_PROTOTYPE
12708 #define _(args) args
12713 echo "$foo" >> try.c
12714 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12715 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12721 $eunicefix protochk
12723 : see what type is used for size_t
12724 rp="What is the type used for the length parameter for string functions?"
12725 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12728 : check for type of arguments to gethostbyaddr.
12729 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12730 case "$d_gethbyaddr" in
12734 Checking to see what type of arguments are accepted by gethostbyaddr().
12736 hdrs="$define sys/types.h
12737 $d_socket sys/socket.h
12738 $i_niin netinet/in.h
12740 $i_unistd unistd.h"
12741 : The first arg can 'char *' or 'void *'
12742 : The second arg is some of integral type
12743 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12744 for yyy in size_t long int; do
12745 case "$netdb_host_type" in
12746 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12747 if ./protochk "$try" $hdrs; then
12748 echo "Your system accepts $xxx for the first arg."
12749 echo "...and $yyy for the second arg."
12750 netdb_host_type="$xxx"
12751 netdb_hlen_type="$yyy"
12757 : In case none of those worked, prompt the user.
12758 case "$netdb_host_type" in
12759 '') rp='What is the type for the 1st argument to gethostbyaddr?'
12762 netdb_host_type=$ans
12763 rp='What is the type for the 2nd argument to gethostbyaddr?'
12766 netdb_hlen_type=$ans
12770 *) : no gethostbyaddr, so pick harmless defaults
12771 netdb_host_type='char *'
12772 netdb_hlen_type="$sizetype"
12775 # Remove the "const" if needed. -- but then we'll have a
12777 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12780 : check for type of argument to gethostbyname.
12781 if test "X$netdb_name_type" = X ; then
12782 case "$d_gethbyname" in
12786 Checking to see what type of argument is accepted by gethostbyname().
12788 hdrs="$define sys/types.h
12789 $d_socket sys/socket.h
12790 $i_niin netinet/in.h
12792 $i_unistd unistd.h"
12793 for xxx in "const char *" "char *"; do
12794 case "$netdb_name_type" in
12795 '') try="extern struct hostent *gethostbyname($xxx);"
12796 if ./protochk "$try" $hdrs; then
12797 echo "Your system accepts $xxx."
12798 netdb_name_type="$xxx"
12803 : In case none of those worked, prompt the user.
12804 case "$netdb_name_type" in
12805 '') rp='What is the type for the 1st argument to gethostbyname?'
12808 netdb_name_type=$ans
12812 *) : no gethostbyname, so pick harmless default
12813 netdb_name_type='char *'
12818 : check for type of 1st argument to getnetbyaddr.
12819 if test "X$netdb_net_type" = X ; then
12820 case "$d_getnbyaddr" in
12824 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12826 hdrs="$define sys/types.h
12827 $d_socket sys/socket.h
12828 $i_niin netinet/in.h
12830 $i_unistd unistd.h"
12831 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12832 case "$netdb_net_type" in
12833 '') try="extern struct netent *getnetbyaddr($xxx, int);"
12834 if ./protochk "$try" $hdrs; then
12835 echo "Your system accepts $xxx."
12836 netdb_net_type="$xxx"
12841 : In case none of those worked, prompt the user.
12842 case "$netdb_net_type" in
12843 '') rp='What is the type for the 1st argument to getnetbyaddr?'
12846 netdb_net_type=$ans
12850 *) : no getnetbyaddr, so pick harmless default
12851 netdb_net_type='long'
12855 : locate the preferred pager for this system
12869 '') dflt=/usr/ucb/more;;
12876 rp='What pager is used on your system?'
12880 : see what type pids are declared as in the kernel
12881 rp="What is the type of process ids on this system?"
12882 set pid_t pidtype int stdio.h sys/types.h
12885 : Find earliest binary compatible site_perl subdirectory perl can use.
12886 case "$bincompat5005" in
12887 "$define") xs_apiversion='5.005' ;;
12888 *) xs_apiversion=$version ;; # The current site_perl version.
12890 : Find earliest pure perl site_perl subdirectory perl can use.
12891 : The versioned directories started at 5.005.
12892 pm_apiversion='5.005'
12894 : check for length of pointer
12898 $echo $n "Checking to see how big your pointers are...$c" >&4
12899 if test "$voidflags" -gt 7; then
12900 echo '#define VOID_PTR char *' > try.c
12902 echo '#define VOID_PTR void *' > try.c
12904 $cat >>try.c <<'EOCP'
12908 printf("%d\n", (int)sizeof(VOID_PTR));
12913 if eval $compile_ok; then
12915 $echo " $ptrsize bytes." >&4
12918 echo "(I can't seem to compile the test program. Guessing...)" >&4
12919 rp="What is the size of a pointer (in bytes)?"
12927 : see if ar generates random libraries by itself
12929 echo "Checking how to generate random libraries on your machine..." >&4
12930 echo 'int bar1() { return bar2(); }' > bar1.c
12931 echo 'int bar2() { return 2; }' > bar2.c
12932 $cat > foo.c <<'EOP'
12933 int main() { printf("%d\n", bar1()); exit(0); }
12935 $cc $ccflags -c bar1.c >/dev/null 2>&1
12936 $cc $ccflags -c bar2.c >/dev/null 2>&1
12937 $cc $ccflags -c foo.c >/dev/null 2>&1
12938 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12939 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12940 ./foobar >/dev/null 2>&1; then
12941 echo "$ar appears to generate random libraries itself."
12944 elif $ar ts bar$_a >/dev/null 2>&1 &&
12945 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12946 ./foobar >/dev/null 2>&1; then
12947 echo "a table of contents needs to be added with '$ar ts'."
12954 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12955 $test -f $ranlib || ranlib=''
12958 if $test -n "$ranlib"; then
12959 echo "your system has '$ranlib'; we'll use that."
12962 echo "your system doesn't seem to support random libraries"
12963 echo "so we'll use lorder and tsort to order the libraries."
12970 : check for type of arguments to select.
12971 case "$selecttype" in
12972 '') case "$d_select" in
12976 Checking to see what type of arguments are accepted by select().
12978 hdrs="$define sys/types.h
12979 $i_systime sys/time.h
12980 $i_sysselct sys/select.h
12981 $d_socket sys/socket.h"
12982 : The first arg can be int, unsigned, or size_t
12983 : The last arg may or may not be 'const'
12985 : void pointer has been seen but using that
12986 : breaks the selectminbits test
12987 for xxx in 'fd_set *' 'int *'; do
12988 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12989 for tmo in 'struct timeval *' 'const struct timeval *'; do
12991 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12992 if ./protochk "$try" $hdrs; then
12993 echo "Your system accepts $xxx."
13002 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13003 case "$d_fd_set" in
13004 $define) dflt="fd_set *" ;;
13013 *) : no select, so pick a harmless default
13020 : check for the select 'width'
13021 case "$selectminbits" in
13022 '') case "$d_select" in
13026 Checking to see on how many bits at a time your select() operates...
13029 #include <sys/types.h>
13031 #$i_systime I_SYS_TIME
13032 #$i_systimek I_SYS_TIME_KERNEL
13037 # ifdef I_SYS_TIME_KERNEL
13040 # include <sys/time.h>
13041 # ifdef I_SYS_TIME_KERNEL
13045 #$i_sysselct I_SYS_SELECT
13046 #ifdef I_SYS_SELECT
13047 #include <sys/select.h>
13049 #$d_socket HAS_SOCKET
13051 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13055 #define S sizeof(*(b))
13057 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13058 #define NBITS (NBYTES * 8)
13067 fp = fopen("try.c", "r");
13073 b = ($selecttype)s;
13074 for (i = 0; i < NBITS; i++)
13078 select(fd + 1, b, 0, 0, &t);
13079 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13080 printf("%d\n", i + 1);
13085 if eval $compile_ok; then
13086 selectminbits=`./try`
13087 case "$selectminbits" in
13089 Cannot figure out on how many bits at a time your select() operates.
13090 I'll play safe and guess it is 32 bits.
13096 *) bits="$selectminbits bits" ;;
13098 echo "Your select() operates on $bits at a time." >&4
13100 rp='What is the minimum number of bits your select() operates on?'
13101 case "$byteorder" in
13102 1234|12345678) dflt=32 ;;
13107 selectminbits="$val"
13111 *) : no select, so pick a harmless default
13118 : Trace out the files included by signal.h, then look for SIGxxx names.
13119 : Remove SIGARRAYSIZE used by HPUX.
13120 : Remove SIGSTKSIZE used by Linux.
13121 : Remove SIGSTKSZ used by Posix.
13122 : Remove SIGTYP void lines used by OS2.
13123 : Some cpps, like os390, dont give the file name anywhere
13124 if [ "X$fieldn" = X ]; then
13125 : Just make some guesses. We check them later.
13126 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13128 xxx=`echo '#include <signal.h>' |
13129 $cppstdin $cppminus $cppflags 2>/dev/null |
13130 $grep '^[ ]*#.*include' |
13131 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13133 : Check this list of files to be sure we have parsed the cpp output ok.
13134 : This will also avoid potentially non-existent files, such
13137 for xx in $xxx /dev/null ; do
13138 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13140 : If we have found no files, at least try signal.h
13141 case "$xxxfiles" in
13142 '') xxxfiles=`./findhdr signal.h` ;;
13145 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13146 print substr($2, 4, 20)
13148 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13149 print substr($3, 4, 20)
13151 : Append some common names just in case the awk scan failed.
13152 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13153 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13154 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13155 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13156 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13158 : generate a few handy files for later
13159 $cat > signal.c <<'EOCP'
13160 #include <sys/types.h>
13161 #include <signal.h>
13165 /* Strange style to avoid deeply-nested #if/#else/#endif */
13168 # define NSIG (_NSIG)
13174 # define NSIG (SIGMAX+1)
13180 # define NSIG (SIG_MAX+1)
13186 # define NSIG (MAXSIG+1)
13192 # define NSIG (MAX_SIG+1)
13197 # ifdef SIGARRAYSIZE
13198 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13204 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13208 /* Default to some arbitrary number that's big enough to get most
13209 of the common signals.
13215 printf("NSIG %d\n", NSIG);
13221 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13223 printf "#ifdef SIG"; printf $1; printf "\n"
13224 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13225 printf $1; printf ");\n"
13229 printf "#endif /* JUST_NSIG */\n";
13230 printf "exit(0);\n}\n";
13233 $cat >signal.awk <<'EOP'
13234 BEGIN { ndups = 0 }
13235 $1 ~ /^NSIG$/ { nsig = $2 }
13236 ($1 !~ /^NSIG$/) && (NF == 2) {
13237 if ($2 > maxsig) { maxsig = $2 }
13238 if (sig_name[$2]) {
13239 dup_name[ndups] = $1
13240 dup_num[ndups] = $2
13252 printf("NSIG %d\n", nsig);
13253 for (n = 1; n < nsig; n++) {
13255 printf("%s %d\n", sig_name[n], sig_num[n])
13258 printf("NUM%d %d\n", n, n)
13261 for (n = 0; n < ndups; n++) {
13262 printf("%s %d\n", dup_name[n], dup_num[n])
13266 $cat >signal_cmd <<EOS
13268 if $test -s signal.lst; then
13269 echo "Using your existing signal.lst file"
13274 $cat >>signal_cmd <<'EOS'
13277 if eval $compile_ok; then
13278 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13280 echo "(I can't seem be able to compile the whole test program)" >&4
13281 echo "(I'll try it in little pieces.)" >&4
13282 set signal -DJUST_NSIG
13283 if eval $compile_ok; then
13284 ./signal$_exe > signal.nsg
13287 echo "I can't seem to figure out how many signals you have." >&4
13288 echo "Guessing 50." >&4
13289 echo 'NSIG 50' > signal.nsg
13291 : Now look at all the signal names, one at a time.
13292 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13293 $cat > signal.c <<EOCP
13294 #include <sys/types.h>
13295 #include <signal.h>
13298 printf("$xx %d\n", SIG${xx});
13303 if eval $compile; then
13304 echo "SIG${xx} found."
13305 ./signal$_exe >> signal.ls1
13307 echo "SIG${xx} NOT found."
13310 if $test -s signal.ls1; then
13311 $cat signal.nsg signal.ls1 |
13312 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13316 if $test -s signal.lst; then
13319 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13320 echo 'kill -l' >signal
13321 set X `csh -f <signal`
13325 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13327 echo $@ | $tr ' ' $trnl | \
13328 $awk '{ printf "%s %d\n", $1, ++s; }
13329 END { printf "NSIG %d\n", ++s }' >signal.lst
13331 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13333 chmod a+x signal_cmd
13334 $eunicefix signal_cmd
13336 : generate list of signal names
13338 case "$sig_name_init" in
13340 *) case "$sig_num_init" in
13341 ''|*,*) doinit=yes ;;
13346 echo "Generating a list of signal names and numbers..." >&4
13348 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13349 sig_name=`$awk 'BEGIN { printf "ZERO " }
13350 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13351 sig_num=`$awk 'BEGIN { printf "0 " }
13352 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13353 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
13354 !/^NSIG/ { printf "\"%s\", ", $1 }
13355 END { printf "0\n" }' signal.lst`
13356 sig_num_init=`$awk 'BEGIN { printf "0, " }
13357 !/^NSIG/ { printf "%d, ", $2}
13358 END { printf "0\n"}' signal.lst`
13361 echo "The following $sig_count signals are available:"
13363 echo $sig_name | $awk \
13364 'BEGIN { linelen = 0 }
13366 for (i = 1; i <= NF; i++) {
13367 name = "SIG" $i " "
13368 linelen = linelen + length(name)
13369 if (linelen > 70) {
13371 linelen = length(name)
13377 $rm -f signal signal.c signal.awk signal.lst signal_cmd
13379 : see what type is used for signed size_t
13380 set ssize_t ssizetype int stdio.h sys/types.h
13383 $cat > ssize.c <<EOM
13385 #include <sys/types.h>
13386 #define Size_t $sizetype
13387 #define SSize_t $dflt
13390 if (sizeof(Size_t) == sizeof(SSize_t))
13392 else if (sizeof(Size_t) == sizeof(int))
13401 if eval $compile_ok && ./ssize > /dev/null; then
13402 ssizetype=`./ssize`
13403 echo "I'll be using $ssizetype for functions returning a byte count." >&4
13406 Help! I can't compile and run the ssize_t test program: please enlighten me!
13407 (This is probably a misconfiguration in your system or libraries, and
13408 you really ought to fix it. Still, I'll try anyway.)
13410 I need a type that is the same size as $sizetype, but is guaranteed to
13411 be signed. Common values are ssize_t, int and long.
13414 rp="What signed type is the same size as $sizetype?"
13418 $rm -f ssize ssize.*
13420 : see what type of char stdio uses.
13422 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13423 echo "Your stdio uses unsigned chars." >&4
13424 stdchar="unsigned char"
13426 echo "Your stdio uses signed chars." >&4
13430 : see if time exists
13432 if test "X$d_time" = X -o X"$timetype" = X; then
13433 if set time val -f d_time; eval $csym; $val; then
13434 echo 'time() found.' >&4
13436 rp="What is the type returned by time() on this system?"
13437 set time_t timetype long stdio.h sys/types.h
13440 echo 'time() not found, hope that will do.' >&4
13448 : see what type uids are declared as in the kernel
13450 echo "Looking for the type for user ids returned by getuid()."
13451 set uid_t uidtype xxx stdio.h sys/types.h
13455 xxx=`./findhdr sys/user.h`
13456 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13458 unsigned) dflt="$1 $2" ;;
13462 *) dflt="$uidtype";;
13465 uid_t) echo "uid_t found." ;;
13466 *) rp="What is the type for user ids returned by getuid()?"
13474 *_t) zzz="$uidtype" ;;
13477 echo "Checking the size of $zzz..." >&4
13479 #include <sys/types.h>
13482 printf("%d\n", (int)sizeof($uidtype));
13487 if eval $compile_ok; then
13491 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13494 echo "Your $zzz size is $uidsize bytes."
13499 echo "(I can't compile the test program--guessing $uidsize.)" >&4
13504 *_t) zzz="$uidtype" ;;
13507 echo "Checking the sign of $zzz..." >&4
13509 #include <sys/types.h>
13520 if eval $compile; then
13524 echo "(I can't execute the test program--guessing unsigned.)" >&4
13528 1) echo "Your $zzz is unsigned." ;;
13529 -1) echo "Your $zzz is signed." ;;
13535 echo "(I can't compile the test program--guessing unsigned.)" >&4
13541 $echo "Checking the format string to be used for uids..." >&4
13544 -1) if $test X"$uidsize" = X"$ivsize"; then
13545 uidformat="$ivdformat"
13547 if $test X"$uidsize" = X"$longsize"; then
13550 if $test X"$uidsize" = X"$intsize"; then
13553 if $test X"$uidsize" = X"$shortsize"; then
13560 *) if $test X"$uidsize" = X"$uvsize"; then
13561 uidformat="$uvuformat"
13563 if $test X"$uidsize" = X"$longsize"; then
13566 if $test X"$uidsize" = X"$intsize"; then
13569 if $test X"$uidsize" = X"$shortsize"; then
13578 : see if dbm.h is available
13579 : see if dbmclose exists
13580 set dbmclose d_dbmclose
13583 case "$d_dbmclose" in
13593 *) set rpcsvc/dbm.h i_rpcsvcdbm
13598 *) echo "We won't be including <dbm.h>"
13608 : see if this is a sys/file.h system
13613 : do we need to include sys/file.h ?
13617 if $h_sysfile; then
13619 echo "We'll be including <sys/file.h>." >&4
13622 echo "We won't be including <sys/file.h>." >&4
13632 : see if fcntl.h is there
13637 : see if we can include fcntl.h
13643 echo "We'll be including <fcntl.h>." >&4
13646 if $h_sysfile; then
13647 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13649 echo "We won't be including <fcntl.h>." >&4
13661 : see if this is a iconv.h system
13662 set iconv.h i_iconv
13665 : see if locale.h is available
13666 set locale.h i_locale
13669 : see if mach cthreads are available
13670 if test "X$usethreads" = "X$define"; then
13671 set mach/cthreads.h i_machcthr
13674 i_machcthr="$undef"
13679 : see if this is a math.h system
13683 : see if this is a mntent.h system
13684 set mntent.h i_mntent
13687 : see if ndbm.h is available
13692 : see if dbm_open exists
13693 set dbm_open d_dbm_open
13695 case "$d_dbm_open" in
13698 echo "We won't be including <ndbm.h>"
13707 : see if net/errno.h is available
13709 set net/errno.h val
13712 : Unfortunately, it causes problems on some systems. Arrgh.
13715 cat > try.c <<'EOM'
13718 #include <net/errno.h>
13724 if $cc $ccflags -c try.c >/dev/null 2>&1; then
13725 echo "We'll be including <net/errno.h>." >&4
13727 echo "We won't be including <net/errno.h>." >&4
13736 : see if netinet/tcp.h is available
13737 set netinet/tcp.h i_netinettcp
13740 : see if this is a poll.h system
13745 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
13746 $cat <<'EOSH' > Cppsym.know
13747 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13748 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13749 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13750 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13751 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13752 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13753 bull c cadmus clipper CMU COFF COMPILER_VERSION
13754 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13755 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13756 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13757 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13758 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13759 H3050R H3050RX hbullx20 hcx host_mips
13760 hp200 hp300 hp700 HP700 hp800 hp9000
13761 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13762 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13763 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13764 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13765 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13766 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13767 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13768 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13769 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13770 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13771 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13772 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13773 MATH_HAS_NO_SIDE_EFFECTS
13774 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13775 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13776 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13777 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13778 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13779 NetBSD news1500 news1700 news1800 news1900 news3700
13780 news700 news800 news900 NeXT NLS ns16000 ns32000
13781 ns32016 ns32332 ns32k nsc32000
13782 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13783 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13784 pc532 pdp11 PGC PIC plexus PORTAR posix
13785 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
13786 POSIX_C_SOURCE POSIX_SOURCE POWER
13787 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
13788 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
13789 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
13790 sony sony_news sonyrisc sparc sparclite spectrum
13791 stardent stdc STDC_EXT stratos sun sun3 sun386
13792 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
13793 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
13794 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
13795 sysV68 sysV88 Tek4132 Tek4300 titan
13796 tower tower32 tower32_200 tower32_600 tower32_700
13797 tower32_800 tower32_850 tss
13798 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
13799 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
13800 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
13801 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
13802 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
13803 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
13806 # Maybe put other stuff here too.
13807 cat <<EOSH >>Cppsym.know
13810 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13811 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13812 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
13813 $rm -f Cppsym.a Cppsym.b
13814 cat <<EOSH > Cppsym
13816 if $test \$# -gt 0; then
13817 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13818 if $test -s Cppsym.got; then
13825 $tr " " "$trnl" | ./Cppsym.try
13831 cat <<EOSH > Cppsym.try
13833 cat <<'EOCP' > try.c
13839 cat <<'EOSH' >> Cppsym.try
13841 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
13842 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
13843 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
13844 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
13848 cat <<EOSH >> Cppsym.try
13850 optimize="$optimize"
13855 $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try$exe_ext
13857 chmod +x Cppsym.try
13858 $eunicefix Cppsym.try
13859 ./Cppsym < Cppsym.know > Cppsym.true
13860 : now check the C compiler for additional symbols
13861 postprocess_cc_v=''
13863 aix) postprocess_cc_v="|$tr , ' '" ;;
13870 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13873 -D*) echo "\$i" | $sed 's/^-D//';;
13874 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13879 postprocess_cc_v=''
13882 ./ccsym > ccsym1.raw
13883 if $test -s ccsym1.raw; then
13884 $sort ccsym1.raw | $uniq >ccsym.raw
13886 mv ccsym1.raw ccsym.raw
13889 $awk '/\=/ { print $0; next }
13890 { print $0"=1" }' ccsym.raw >ccsym.list
13891 $awk '/\=/ { print $0; next }
13892 { print $0"=1" }' Cppsym.true >ccsym.true
13893 $comm -13 ccsym.true ccsym.list >ccsym.own
13894 $comm -12 ccsym.true ccsym.list >ccsym.com
13895 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13897 if $test -z ccsym.raw; then
13898 echo "Your C compiler doesn't seem to define any symbols!" >&4
13900 echo "However, your C preprocessor defines the following symbols:"
13903 cppsymbols=`$cat Cppsym.true`
13904 cppsymbols=`echo $cppsymbols`
13905 cppccsymbols="$cppsymbols"
13907 if $test -s ccsym.com; then
13908 echo "Your C compiler and pre-processor define these symbols:"
13909 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13912 cppccsymbols=`$cat ccsym.com`
13913 cppccsymbols=`echo $cppccsymbols`
13914 $test "$silent" || sleep 1
13916 if $test -s ccsym.cpp; then
13917 $test "$also" && echo " "
13918 echo "Your C pre-processor ${also}defines the following symbols:"
13919 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13921 cppsymbols=`$cat ccsym.cpp`
13922 cppsymbols=`echo $cppsymbols`
13923 $test "$silent" || sleep 1
13925 if $test -s ccsym.own; then
13926 $test "$also" && echo " "
13927 echo "Your C compiler ${also}defines the following cpp symbols:"
13928 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13929 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13930 ccsymbols=`$cat ccsym.own`
13931 ccsymbols=`echo $ccsymbols`
13932 $test "$silent" || sleep 1
13937 : see if this is a termio system
13941 if $test `./findhdr termios.h`; then
13942 set tcsetattr i_termios
13948 "$define") echo "You have POSIX termios.h... good!" >&4;;
13949 *) if ./Cppsym pyr; then
13950 case "`/bin/universe`" in
13951 ucb) if $test `./findhdr sgtty.h`; then
13953 echo "<sgtty.h> found." >&4
13955 echo "System is pyramid with BSD universe."
13956 echo "<sgtty.h> not found--you could have problems." >&4
13958 *) if $test `./findhdr termio.h`; then
13960 echo "<termio.h> found." >&4
13962 echo "System is pyramid with USG universe."
13963 echo "<termio.h> not found--you could have problems." >&4
13967 if $test `./findhdr termio.h`; then
13968 echo "<termio.h> found." >&4
13970 elif $test `./findhdr sgtty.h`; then
13971 echo "<sgtty.h> found." >&4
13974 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13977 if $test `./findhdr sgtty.h`; then
13978 echo "<sgtty.h> found." >&4
13980 elif $test `./findhdr termio.h`; then
13981 echo "<termio.h> found." >&4
13984 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13988 set i_termio; eval $setvar
13989 val=$val2; set i_sgtty; eval $setvar
13990 val=$val3; set i_termios; eval $setvar
13992 : see if this is a shadow.h system
13993 set shadow.h i_shadow
13996 : see if this is a socks.h system
13997 set socks.h i_socks
14000 : see if stdarg is available
14002 if $test `./findhdr stdarg.h`; then
14003 echo "<stdarg.h> found." >&4
14006 echo "<stdarg.h> NOT found." >&4
14010 : see if varags is available
14012 if $test `./findhdr varargs.h`; then
14013 echo "<varargs.h> found." >&4
14015 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14018 : set up the varargs testing programs
14019 $cat > varargs.c <<EOP
14021 #include <stdarg.h>
14024 #include <varargs.h>
14028 int f(char *p, ...)
14042 p = va_arg(ap, char *);
14047 $cat > varargs <<EOP
14049 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14058 : now check which varargs header should be included
14063 if `./varargs I_STDARG`; then
14065 elif `./varargs I_VARARGS`; then
14070 if `./varargs I_VARARGS`; then
14077 echo "I could not find the definition for va_dcl... You have problems..." >&4
14078 val="$undef"; set i_stdarg; eval $setvar
14079 val="$undef"; set i_varargs; eval $setvar
14084 case "$i_varhdr" in
14086 val="$define"; set i_stdarg; eval $setvar
14087 val="$undef"; set i_varargs; eval $setvar
14090 val="$undef"; set i_stdarg; eval $setvar
14091 val="$define"; set i_varargs; eval $setvar
14094 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14098 : see if stddef is available
14099 set stddef.h i_stddef
14102 : see if sys/access.h is available
14103 set sys/access.h i_sysaccess
14106 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14107 set sys/filio.h i_sysfilio
14110 if $test `./findhdr sys/ioctl.h`; then
14112 echo '<sys/ioctl.h> found.' >&4
14115 if $test $i_sysfilio = "$define"; then
14116 echo '<sys/ioctl.h> NOT found.' >&4
14118 $test $i_sgtty = "$define" && xxx="sgtty.h"
14119 $test $i_termio = "$define" && xxx="termio.h"
14120 $test $i_termios = "$define" && xxx="termios.h"
14121 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14128 : see if this is a syslog.h system
14129 set syslog.h i_syslog
14132 : see if sys/resource.h has to be included
14133 set sys/resource.h i_sysresrc
14136 : see if sys/security.h is available
14137 set sys/security.h i_syssecrt
14140 : see if this is a sys/statvfs.h system
14141 set sys/statvfs.h i_sysstatvfs
14144 : see if this is a sys/uio.h system
14145 set sys/uio.h i_sysuio
14148 : see if this is a sys/un.h system
14149 set sys/un.h i_sysun
14152 : see if this is a syswait system
14153 set sys/wait.h i_syswait
14156 : see if this is a ustat.h system
14157 set ustat.h i_ustat
14160 : see if this is an utime system
14161 set utime.h i_utime
14164 : see if this is a values.h system
14165 set values.h i_values
14168 : see if this is a vfork system
14171 set vfork.h i_vfork
14179 : see if gdbm.h is available
14184 : see if gdbm_open exists
14185 set gdbm_open d_gdbm_open
14187 case "$d_gdbm_open" in
14190 echo "We won't be including <gdbm.h>"
14200 echo "Looking for extensions..." >&4
14201 : If we are using the old config.sh, known_extensions may contain
14202 : old or inaccurate or duplicate values.
14203 known_extensions=''
14204 nonxs_extensions=''
14205 : We do not use find because it might not be available.
14206 : We do not just use MANIFEST because the user may have dropped
14207 : some additional extensions into the source tree and expect them
14210 : Function to recursively find available extensions, ignoring DynaLoader
14211 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14215 DynaLoader|dynaload) ;;
14217 if $test -f $xxx/$xxx.xs; then
14218 known_extensions="$known_extensions $1$xxx";
14219 elif $test -f $xxx/Makefile.PL; then
14220 nonxs_extensions="$nonxs_extensions $1$xxx";
14222 if $test -d $xxx -a $# -lt 10; then
14225 eval $find_extensions;
14237 eval $find_extensions
14238 set X $nonxs_extensions
14240 nonxs_extensions="$*"
14241 set X $known_extensions
14243 known_extensions="$*"
14246 : Now see which are supported on this system.
14248 for xxx in $known_extensions ; do
14252 $define) avail_ext="$avail_ext $xxx" ;;
14255 GDBM_File|gdbm_fil)
14257 $define) avail_ext="$avail_ext $xxx" ;;
14260 NDBM_File|ndbm_fil)
14262 $define) avail_ext="$avail_ext $xxx" ;;
14265 ODBM_File|odbm_fil)
14266 case "${i_dbm}${i_rpcsvcdbm}" in
14267 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14271 case "$useposix" in
14272 true|define|y) avail_ext="$avail_ext $xxx" ;;
14276 case "$useopcode" in
14277 true|define|y) avail_ext="$avail_ext $xxx" ;;
14281 case "$d_socket" in
14282 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14286 case "$usethreads" in
14287 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14291 : XXX Do we need a useipcsysv variable here
14292 case "${d_msg}${d_sem}${d_shm}" in
14293 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14296 *) avail_ext="$avail_ext $xxx"
14305 : Now see which nonxs extensions are supported on this system.
14306 : For now assume all are.
14308 for xxx in $nonxs_extensions ; do
14310 *) nonxs_ext="$nonxs_ext $xxx"
14322 A number of extensions are supplied with $package. You may choose to
14323 compile these extensions for dynamic loading (the default), compile
14324 them into the $package executable (static loading), or not include
14325 them at all. Answer "none" to include no extensions.
14326 Note that DynaLoader is always built and need not be mentioned here.
14329 case "$dynamic_ext" in
14330 '') dflt="$avail_ext" ;;
14331 *) dflt="$dynamic_ext"
14332 # Perhaps we are reusing an old out-of-date config.sh.
14335 if test X"$dynamic_ext" != X"$avail_ext"; then
14337 NOTICE: Your previous config.sh list may be incorrect.
14338 The extensions now available to you are
14340 but the default list from your previous config.sh is
14352 rp="What extensions do you wish to load dynamically?"
14355 none) dynamic_ext=' ' ;;
14356 *) dynamic_ext="$ans" ;;
14359 case "$static_ext" in
14361 : Exclude those already listed in dynamic linking
14363 for xxx in $avail_ext; do
14364 case " $dynamic_ext " in
14366 *) dflt="$dflt $xxx" ;;
14373 *) dflt="$static_ext"
14380 rp="What extensions do you wish to load statically?"
14383 none) static_ext=' ' ;;
14384 *) static_ext="$ans" ;;
14389 A number of extensions are supplied with $package. Answer "none"
14390 to include no extensions.
14391 Note that DynaLoader is always built and need not be mentioned here.
14394 case "$static_ext" in
14395 '') dflt="$avail_ext" ;;
14396 *) dflt="$static_ext"
14397 # Perhaps we are reusing an old out-of-date config.sh.
14400 if test X"$static_ext" != X"$avail_ext"; then
14402 NOTICE: Your previous config.sh list may be incorrect.
14403 The extensions now available to you are
14405 but the default list from your previous config.sh is
14414 : Exclude those that are not xs extensions
14418 rp="What extensions do you wish to include?"
14421 none) static_ext=' ' ;;
14422 *) static_ext="$ans" ;;
14427 set X $dynamic_ext $static_ext $nonxs_ext
14431 : Remove build directory name from cppstdin so it can be used from
14432 : either the present location or the final installed location.
14434 : Get out of the UU directory to get correct path name.
14436 case "$cppstdin" in
14438 echo "Stripping down cppstdin path name"
14444 : end of configuration questions
14446 echo "End of configuration questions."
14449 : back to where it started
14450 if test -d ../UU; then
14454 : configuration may be patched via a 'config.over' file
14455 if $test -f config.over; then
14458 rp='I see a config.over file. Do you wish to load it?'
14461 n*) echo "OK, I'll ignore it.";;
14463 echo "Configuration override changes have been loaded."
14468 : in case they want portability, strip down executable paths
14469 case "$d_portable" in
14472 echo "Stripping down executable paths..." >&4
14473 for file in $loclist $trylist; do
14475 eval $file=`basename $temp`
14480 : create config.sh file
14482 echo "Creating config.sh..." >&4
14483 $spitshell <<EOT >config.sh
14486 # This file was produced by running the Configure script. It holds all the
14487 # definitions figured out by Configure. Should you modify one of these values,
14488 # do not forget to propagate your changes by running "Configure -der". You may
14489 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14492 # Package name : $package
14493 # Source directory : $src
14494 # Configuration time: $cf_time
14495 # Configured by : $cf_by
14496 # Target system : $myuname
14506 Revision='$Revision'
14513 alignbytes='$alignbytes'
14514 ansi2knr='$ansi2knr'
14515 aphostname='$aphostname'
14516 api_revision='$api_revision'
14517 api_subversion='$api_subversion'
14518 api_version='$api_version'
14519 api_versionstring='$api_versionstring'
14522 archlibexp='$archlibexp'
14523 archname64='$archname64'
14524 archname='$archname'
14525 archobjs='$archobjs'
14530 bincompat5005='$bincompat5005'
14534 byteorder='$byteorder'
14536 castflags='$castflags'
14539 cccdlflags='$cccdlflags'
14540 ccdlflags='$ccdlflags'
14542 ccsymbols='$ccsymbols'
14544 cf_email='$cf_email'
14546 charsize='$charsize'
14550 clocktype='$clocktype'
14552 compress='$compress'
14553 contains='$contains'
14557 cpp_stuff='$cpp_stuff'
14558 cppccsymbols='$cppccsymbols'
14559 cppflags='$cppflags'
14561 cppminus='$cppminus'
14563 cppstdin='$cppstdin'
14564 cppsymbols='$cppsymbols'
14565 crosscompile='$crosscompile'
14566 cryptlib='$cryptlib'
14568 d_Gconvert='$d_Gconvert'
14569 d_PRIEldbl='$d_PRIEldbl'
14570 d_PRIFldbl='$d_PRIFldbl'
14571 d_PRIGldbl='$d_PRIGldbl'
14572 d_PRIX64='$d_PRIX64'
14573 d_PRId64='$d_PRId64'
14574 d_PRIeldbl='$d_PRIeldbl'
14575 d_PRIfldbl='$d_PRIfldbl'
14576 d_PRIgldbl='$d_PRIgldbl'
14577 d_PRIi64='$d_PRIi64'
14578 d_PRIo64='$d_PRIo64'
14579 d_PRIu64='$d_PRIu64'
14580 d_PRIx64='$d_PRIx64'
14581 d_access='$d_access'
14582 d_accessx='$d_accessx'
14584 d_archlib='$d_archlib'
14587 d_attribut='$d_attribut'
14590 d_bincompat5005='$d_bincompat5005'
14592 d_bsdgetpgrp='$d_bsdgetpgrp'
14593 d_bsdsetpgrp='$d_bsdsetpgrp'
14595 d_casti32='$d_casti32'
14596 d_castneg='$d_castneg'
14597 d_charvspr='$d_charvspr'
14599 d_chroot='$d_chroot'
14600 d_chsize='$d_chsize'
14601 d_closedir='$d_closedir'
14605 d_cuserid='$d_cuserid'
14606 d_dbl_dig='$d_dbl_dig'
14607 d_difftime='$d_difftime'
14608 d_dirnamlen='$d_dirnamlen'
14609 d_dlerror='$d_dlerror'
14610 d_dlopen='$d_dlopen'
14611 d_dlsymun='$d_dlsymun'
14612 d_dosuid='$d_dosuid'
14613 d_drand48proto='$d_drand48proto'
14615 d_eaccess='$d_eaccess'
14616 d_endgrent='$d_endgrent'
14617 d_endhent='$d_endhent'
14618 d_endnent='$d_endnent'
14619 d_endpent='$d_endpent'
14620 d_endpwent='$d_endpwent'
14621 d_endsent='$d_endsent'
14622 d_endspent='$d_endspent'
14623 d_eofnblk='$d_eofnblk'
14624 d_eunice='$d_eunice'
14625 d_fchmod='$d_fchmod'
14626 d_fchown='$d_fchown'
14628 d_fd_macros='$d_fd_macros'
14629 d_fd_set='$d_fd_set'
14630 d_fds_bits='$d_fds_bits'
14631 d_fgetpos='$d_fgetpos'
14632 d_flexfnam='$d_flexfnam'
14635 d_fpathconf='$d_fpathconf'
14636 d_fpos64_t='$d_fpos64_t'
14637 d_fs_data_s='$d_fs_data_s'
14638 d_fseeko='$d_fseeko'
14639 d_fsetpos='$d_fsetpos'
14640 d_fstatfs='$d_fstatfs'
14641 d_fstatvfs='$d_fstatvfs'
14642 d_ftello='$d_ftello'
14644 d_getcwd='$d_getcwd'
14645 d_getgrent='$d_getgrent'
14646 d_getgrps='$d_getgrps'
14647 d_gethbyaddr='$d_gethbyaddr'
14648 d_gethbyname='$d_gethbyname'
14649 d_gethent='$d_gethent'
14650 d_gethname='$d_gethname'
14651 d_gethostprotos='$d_gethostprotos'
14652 d_getlogin='$d_getlogin'
14653 d_getmnt='$d_getmnt'
14654 d_getmntent='$d_getmntent'
14655 d_getnbyaddr='$d_getnbyaddr'
14656 d_getnbyname='$d_getnbyname'
14657 d_getnent='$d_getnent'
14658 d_getnetprotos='$d_getnetprotos'
14659 d_getpbyname='$d_getpbyname'
14660 d_getpbynumber='$d_getpbynumber'
14661 d_getpent='$d_getpent'
14662 d_getpgid='$d_getpgid'
14663 d_getpgrp2='$d_getpgrp2'
14664 d_getpgrp='$d_getpgrp'
14665 d_getppid='$d_getppid'
14666 d_getprior='$d_getprior'
14667 d_getprotoprotos='$d_getprotoprotos'
14668 d_getpwent='$d_getpwent'
14669 d_getsbyname='$d_getsbyname'
14670 d_getsbyport='$d_getsbyport'
14671 d_getsent='$d_getsent'
14672 d_getservprotos='$d_getservprotos'
14673 d_getspent='$d_getspent'
14674 d_getspnam='$d_getspnam'
14675 d_gettimeod='$d_gettimeod'
14676 d_gnulibc='$d_gnulibc'
14677 d_grpasswd='$d_grpasswd'
14678 d_hasmntopt='$d_hasmntopt'
14682 d_inetaton='$d_inetaton'
14683 d_int64t='$d_int64t'
14684 d_isascii='$d_isascii'
14685 d_killpg='$d_killpg'
14686 d_lchown='$d_lchown'
14687 d_ldbl_dig='$d_ldbl_dig'
14689 d_locconv='$d_locconv'
14691 d_longdbl='$d_longdbl'
14692 d_longlong='$d_longlong'
14695 d_mbstowcs='$d_mbstowcs'
14696 d_mbtowc='$d_mbtowc'
14697 d_memchr='$d_memchr'
14698 d_memcmp='$d_memcmp'
14699 d_memcpy='$d_memcpy'
14700 d_memmove='$d_memmove'
14701 d_memset='$d_memset'
14703 d_mkdtemp='$d_mkdtemp'
14704 d_mkfifo='$d_mkfifo'
14705 d_mkstemp='$d_mkstemp'
14706 d_mkstemps='$d_mkstemps'
14707 d_mktime='$d_mktime'
14709 d_mprotect='$d_mprotect'
14711 d_msg_ctrunc='$d_msg_ctrunc'
14712 d_msg_dontroute='$d_msg_dontroute'
14713 d_msg_oob='$d_msg_oob'
14714 d_msg_peek='$d_msg_peek'
14715 d_msg_proxy='$d_msg_proxy'
14716 d_msgctl='$d_msgctl'
14717 d_msgget='$d_msgget'
14718 d_msgrcv='$d_msgrcv'
14719 d_msgsnd='$d_msgsnd'
14721 d_munmap='$d_munmap'
14722 d_mymalloc='$d_mymalloc'
14724 d_nv_preserves_uv='$d_nv_preserves_uv'
14725 d_off64_t='$d_off64_t'
14726 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14727 d_oldpthreads='$d_oldpthreads'
14728 d_oldsock='$d_oldsock'
14730 d_pathconf='$d_pathconf'
14732 d_phostname='$d_phostname'
14735 d_portable='$d_portable'
14736 d_pthread_yield='$d_pthread_yield'
14738 d_pwchange='$d_pwchange'
14739 d_pwclass='$d_pwclass'
14740 d_pwcomment='$d_pwcomment'
14741 d_pwexpire='$d_pwexpire'
14742 d_pwgecos='$d_pwgecos'
14743 d_pwpasswd='$d_pwpasswd'
14744 d_pwquota='$d_pwquota'
14746 d_readdir='$d_readdir'
14747 d_readlink='$d_readlink'
14748 d_rename='$d_rename'
14749 d_rewinddir='$d_rewinddir'
14751 d_safebcpy='$d_safebcpy'
14752 d_safemcpy='$d_safemcpy'
14753 d_sanemcmp='$d_sanemcmp'
14754 d_sched_yield='$d_sched_yield'
14755 d_scm_rights='$d_scm_rights'
14756 d_seekdir='$d_seekdir'
14757 d_select='$d_select'
14759 d_semctl='$d_semctl'
14760 d_semctl_semid_ds='$d_semctl_semid_ds'
14761 d_semctl_semun='$d_semctl_semun'
14762 d_semget='$d_semget'
14764 d_setegid='$d_setegid'
14765 d_seteuid='$d_seteuid'
14766 d_setgrent='$d_setgrent'
14767 d_setgrps='$d_setgrps'
14768 d_sethent='$d_sethent'
14769 d_setlinebuf='$d_setlinebuf'
14770 d_setlocale='$d_setlocale'
14771 d_setnent='$d_setnent'
14772 d_setpent='$d_setpent'
14773 d_setpgid='$d_setpgid'
14774 d_setpgrp2='$d_setpgrp2'
14775 d_setpgrp='$d_setpgrp'
14776 d_setprior='$d_setprior'
14777 d_setpwent='$d_setpwent'
14778 d_setregid='$d_setregid'
14779 d_setresgid='$d_setresgid'
14780 d_setresuid='$d_setresuid'
14781 d_setreuid='$d_setreuid'
14782 d_setrgid='$d_setrgid'
14783 d_setruid='$d_setruid'
14784 d_setsent='$d_setsent'
14785 d_setsid='$d_setsid'
14786 d_setspent='$d_setspent'
14787 d_setvbuf='$d_setvbuf'
14791 d_shmatprototype='$d_shmatprototype'
14792 d_shmctl='$d_shmctl'
14794 d_shmget='$d_shmget'
14795 d_sigaction='$d_sigaction'
14796 d_sigsetjmp='$d_sigsetjmp'
14797 d_socket='$d_socket'
14798 d_sockpair='$d_sockpair'
14800 d_statblks='$d_statblks'
14801 d_statfs_f_flags='$d_statfs_f_flags'
14802 d_statfs_s='$d_statfs_s'
14803 d_statvfs='$d_statvfs'
14804 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14805 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14806 d_stdio_stream_array='$d_stdio_stream_array'
14807 d_stdiobase='$d_stdiobase'
14808 d_stdstdio='$d_stdstdio'
14809 d_strchr='$d_strchr'
14810 d_strcoll='$d_strcoll'
14811 d_strctcpy='$d_strctcpy'
14812 d_strerrm='$d_strerrm'
14813 d_strerror='$d_strerror'
14814 d_strtod='$d_strtod'
14815 d_strtol='$d_strtol'
14816 d_strtold='$d_strtold'
14817 d_strtoll='$d_strtoll'
14818 d_strtoul='$d_strtoul'
14819 d_strtoull='$d_strtoull'
14820 d_strtouq='$d_strtouq'
14821 d_strxfrm='$d_strxfrm'
14822 d_suidsafe='$d_suidsafe'
14823 d_symlink='$d_symlink'
14824 d_syscall='$d_syscall'
14825 d_sysconf='$d_sysconf'
14826 d_sysernlst='$d_sysernlst'
14827 d_syserrlst='$d_syserrlst'
14828 d_system='$d_system'
14829 d_tcgetpgrp='$d_tcgetpgrp'
14830 d_tcsetpgrp='$d_tcsetpgrp'
14831 d_telldir='$d_telldir'
14832 d_telldirproto='$d_telldirproto'
14835 d_truncate='$d_truncate'
14836 d_tzname='$d_tzname'
14839 d_union_semun='$d_union_semun'
14841 d_vendorbin='$d_vendorbin'
14842 d_vendorlib='$d_vendorlib'
14844 d_void_closedir='$d_void_closedir'
14845 d_voidsig='$d_voidsig'
14846 d_voidtty='$d_voidtty'
14847 d_volatile='$d_volatile'
14848 d_vprintf='$d_vprintf'
14850 d_waitpid='$d_waitpid'
14851 d_wcstombs='$d_wcstombs'
14852 d_wctomb='$d_wctomb'
14855 db_hashtype='$db_hashtype'
14856 db_prefixtype='$db_prefixtype'
14857 defvoidused='$defvoidused'
14858 direntrytype='$direntrytype'
14861 doublesize='$doublesize'
14863 dynamic_ext='$dynamic_ext'
14869 eunicefix='$eunicefix'
14872 extensions='$extensions'
14873 fflushNULL='$fflushNULL'
14874 fflushall='$fflushall'
14876 firstmakefile='$firstmakefile'
14878 fpossize='$fpossize'
14879 fpostype='$fpostype'
14880 freetype='$freetype'
14882 full_csh='$full_csh'
14883 full_sed='$full_sed'
14884 gccversion='$gccversion'
14885 gidformat='$gidformat'
14891 groupcat='$groupcat'
14892 groupstype='$groupstype'
14895 h_sysfile='$h_sysfile'
14907 i_arpainet='$i_arpainet'
14908 i_bsdioctl='$i_bsdioctl'
14911 i_dirent='$i_dirent'
14919 i_inttypes='$i_inttypes'
14920 i_limits='$i_limits'
14921 i_locale='$i_locale'
14922 i_machcthr='$i_machcthr'
14923 i_malloc='$i_malloc'
14925 i_memory='$i_memory'
14926 i_mntent='$i_mntent'
14929 i_neterrno='$i_neterrno'
14930 i_netinettcp='$i_netinettcp'
14933 i_pthread='$i_pthread'
14935 i_rpcsvcdbm='$i_rpcsvcdbm'
14938 i_shadow='$i_shadow'
14940 i_stdarg='$i_stdarg'
14941 i_stddef='$i_stddef'
14942 i_stdlib='$i_stdlib'
14943 i_string='$i_string'
14944 i_sysaccess='$i_sysaccess'
14945 i_sysdir='$i_sysdir'
14946 i_sysfile='$i_sysfile'
14947 i_sysfilio='$i_sysfilio'
14949 i_sysioctl='$i_sysioctl'
14950 i_syslog='$i_syslog'
14951 i_sysmman='$i_sysmman'
14952 i_sysmount='$i_sysmount'
14953 i_sysndir='$i_sysndir'
14954 i_sysparam='$i_sysparam'
14955 i_sysresrc='$i_sysresrc'
14956 i_syssecrt='$i_syssecrt'
14957 i_sysselct='$i_sysselct'
14958 i_syssockio='$i_syssockio'
14959 i_sysstat='$i_sysstat'
14960 i_sysstatfs='$i_sysstatfs'
14961 i_sysstatvfs='$i_sysstatvfs'
14962 i_systime='$i_systime'
14963 i_systimek='$i_systimek'
14964 i_systimes='$i_systimes'
14965 i_systypes='$i_systypes'
14966 i_sysuio='$i_sysuio'
14968 i_sysvfs='$i_sysvfs'
14969 i_syswait='$i_syswait'
14970 i_termio='$i_termio'
14971 i_termios='$i_termios'
14973 i_unistd='$i_unistd'
14976 i_values='$i_values'
14977 i_varargs='$i_varargs'
14978 i_varhdr='$i_varhdr'
14980 ignore_versioned_solibs='$ignore_versioned_solibs'
14981 inc_version_list='$inc_version_list'
14982 inc_version_list_init='$inc_version_list_init'
14985 installarchlib='$installarchlib'
14986 installbin='$installbin'
14987 installman1dir='$installman1dir'
14988 installman3dir='$installman3dir'
14989 installprefix='$installprefix'
14990 installprefixexp='$installprefixexp'
14991 installprivlib='$installprivlib'
14992 installscript='$installscript'
14993 installsitearch='$installsitearch'
14994 installsitebin='$installsitebin'
14995 installsitelib='$installsitelib'
14996 installstyle='$installstyle'
14997 installusrbinperl='$installusrbinperl'
14998 installvendorbin='$installvendorbin'
14999 installvendorlib='$installvendorlib'
15001 ivdformat='$ivdformat'
15004 known_extensions='$known_extensions'
15008 lddlflags='$lddlflags'
15010 ldlibpthname='$ldlibpthname'
15017 libsdirs='$libsdirs'
15018 libsfiles='$libsfiles'
15019 libsfound='$libsfound'
15020 libswanted='$libswanted'
15026 locincpth='$locincpth'
15027 loclibpth='$loclibpth'
15028 longdblsize='$longdblsize'
15029 longlongsize='$longlongsize'
15030 longsize='$longsize'
15034 lseeksize='$lseeksize'
15035 lseektype='$lseektype'
15039 make_set_make='$make_set_make'
15040 mallocobj='$mallocobj'
15041 mallocsrc='$mallocsrc'
15042 malloctype='$malloctype'
15044 man1direxp='$man1direxp'
15047 man3direxp='$man3direxp'
15050 mips_type='$mips_type'
15052 mmaptype='$mmaptype'
15054 modetype='$modetype'
15056 multiarch='$multiarch'
15058 myarchname='$myarchname'
15059 mydomain='$mydomain'
15060 myhostname='$myhostname'
15063 netdb_hlen_type='$netdb_hlen_type'
15064 netdb_host_type='$netdb_host_type'
15065 netdb_name_type='$netdb_name_type'
15066 netdb_net_type='$netdb_net_type'
15069 nm_so_opt='$nm_so_opt'
15070 nonxs_ext='$nonxs_ext'
15074 o_nonblock='$o_nonblock'
15076 old_pthread_create_joinable='$old_pthread_create_joinable'
15077 optimize='$optimize'
15078 orderlib='$orderlib'
15084 patchlevel='$patchlevel'
15085 path_sep='$path_sep'
15087 perladmin='$perladmin'
15088 perlpath='$perlpath'
15090 phostname='$phostname'
15093 pm_apiversion='$pm_apiversion'
15097 prefixexp='$prefixexp'
15099 privlibexp='$privlibexp'
15100 prototype='$prototype'
15102 quadkind='$quadkind'
15103 quadtype='$quadtype'
15104 randbits='$randbits'
15105 randfunc='$randfunc'
15106 randseedtype='$randseedtype'
15108 rd_nodata='$rd_nodata'
15112 sPRIEldbl='$sPRIEldbl'
15113 sPRIFldbl='$sPRIFldbl'
15114 sPRIGldbl='$sPRIGldbl'
15117 sPRIeldbl='$sPRIeldbl'
15118 sPRIfldbl='$sPRIfldbl'
15119 sPRIgldbl='$sPRIgldbl'
15124 sched_yield='$sched_yield'
15125 scriptdir='$scriptdir'
15126 scriptdirexp='$scriptdirexp'
15128 seedfunc='$seedfunc'
15129 selectminbits='$selectminbits'
15130 selecttype='$selecttype'
15131 sendmail='$sendmail'
15134 sharpbang='$sharpbang'
15135 shmattype='$shmattype'
15136 shortsize='$shortsize'
15139 sig_count='$sig_count'
15140 sig_name='$sig_name'
15141 sig_name_init='$sig_name_init'
15143 sig_num_init='$sig_num_init'
15144 signal_t='$signal_t'
15145 sitearch='$sitearch'
15146 sitearchexp='$sitearchexp'
15148 sitebinexp='$sitebinexp'
15150 sitelibexp='$sitelibexp'
15151 siteprefix='$siteprefix'
15152 siteprefixexp='$siteprefixexp'
15153 sizetype='$sizetype'
15158 sockethdr='$sockethdr'
15159 socketlib='$socketlib'
15161 spackage='$spackage'
15162 spitshell='$spitshell'
15165 ssizetype='$ssizetype'
15166 startperl='$startperl'
15168 static_ext='$static_ext'
15170 stdio_base='$stdio_base'
15171 stdio_bufsiz='$stdio_bufsiz'
15172 stdio_cnt='$stdio_cnt'
15173 stdio_filbuf='$stdio_filbuf'
15174 stdio_ptr='$stdio_ptr'
15175 stdio_stream_array='$stdio_stream_array'
15178 subversion='$subversion'
15185 timeincl='$timeincl'
15186 timetype='$timetype'
15199 uidformat='$uidformat'
15205 uquadtype='$uquadtype'
15206 use5005threads='$use5005threads'
15207 use64bits='$use64bits'
15209 useithreads='$useithreads'
15210 uselargefiles='$uselargefiles'
15211 uselongdouble='$uselongdouble'
15212 uselonglong='$uselonglong'
15213 usemorebits='$usemorebits'
15214 usemultiplicity='$usemultiplicity'
15215 usemymalloc='$usemymalloc'
15217 useopcode='$useopcode'
15218 useperlio='$useperlio'
15219 useposix='$useposix'
15221 useshrplib='$useshrplib'
15222 usesocks='$usesocks'
15223 usethreads='$usethreads'
15224 usevendorprefix='$usevendorprefix'
15225 usevfork='$usevfork'
15228 uvoformat='$uvoformat'
15231 uvuformat='$uvuformat'
15232 uvxformat='$uvxformat'
15233 vendorbin='$vendorbin'
15234 vendorbinexp='$vendorbinexp'
15235 vendorlib='$vendorlib'
15236 vendorlibexp='$vendorlibexp'
15237 vendorprefix='$vendorprefix'
15238 vendorprefixexp='$vendorprefixexp'
15241 voidflags='$voidflags'
15243 xs_apiversion='$xs_apiversion'
15248 : Add in command line options if available
15249 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15251 : add special variables
15252 $test -f $src/patchlevel.h && \
15253 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15254 echo "CONFIGDOTSH=true" >>config.sh
15256 : propagate old symbols
15257 if $test -f UU/config.sh; then
15258 <UU/config.sh sort | uniq >UU/oldconfig.sh
15259 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15260 sort | uniq -u >UU/oldsyms
15261 set X `cat UU/oldsyms`
15267 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15269 echo "# Variables propagated from previous config.sh file." >>config.sh
15270 for sym in `cat UU/oldsyms`; do
15271 echo " Propagating $hint variable "'$'"$sym..."
15272 eval 'tmp="$'"${sym}"'"'
15274 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15280 : Finish up by extracting the .SH files
15294 If you'd like to make any changes to the config.sh file before I begin
15295 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15298 rp="Press return or use a shell escape to edit config.sh:"
15303 *) : in case they cannot read
15304 sh 1>&4 -c "$ans";;
15309 : if this fails, just run all the .SH files by hand
15316 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15323 Now you need to generate make dependencies by running "$make depend".
15324 You might prefer to run it in background: "$make depend > makedepend.out &"
15325 It can take a while, so you might not want to run it right now.
15330 rp="Run $make depend now?"
15334 $make depend && echo "Now you must run a $make."
15337 echo "You must run '$make depend' then '$make'."
15340 elif test -f [Mm]akefile; then
15342 echo "Now you must run a $make."
15347 if $test -f Policy.sh; then
15350 If you compile $package on a different machine or from a different object
15351 directory, copy the Policy.sh file from this object directory to the
15352 new one before you run Configure -- this will help you with most of
15353 the policy defaults.
15357 if $test -f config.msg; then
15358 echo "Hmm. I also noted the following information while running:"
15360 $cat config.msg >&4
15363 $rm -f kit*isdone ark*isdone