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 Sat Feb 12 21:21:49 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=''
914 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
917 : We must find out about Eunice early
919 if test -f /etc/unixtovms; then
920 eunicefix=/etc/unixtovms
922 if test -f /etc/unixtovms.exe; then
923 eunicefix=/etc/unixtovms.exe
927 : set useposix=false in your hint file to disable the POSIX extension.
929 : set useopcode=false in your hint file to disable the Opcode extension.
931 : Trailing extension. Override this in a hint file, if needed.
933 : Extra object files, if any, needed on this platform.
935 : Possible local include directories to search.
936 : Set locincpth to "" in a hint file to defeat local include searches.
937 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
938 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
940 : no include file wanted by default
944 : change the next line if compiling for Xenix/286 on Xenix/386
945 xlibpth='/usr/lib/386 /lib/386'
947 : Possible local library directories to search.
948 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
949 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
951 : general looking path for locating libraries
952 glibpth="/shlib /usr/shlib /lib/pa20_64 /lib/pa1.1 /usr/lib/large"
953 glibpth="$glibpth /lib /usr/lib $xlibpth"
954 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
955 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
957 : Private path used by Configure to find libraries. Its value
958 : is prepended to libpth. This variable takes care of special
959 : machines, like the mips. Usually, it should be empty.
962 : default library list
964 : some systems want to use only the non-versioned libso:s
965 ignore_versioned_solibs=''
966 : set usemultiplicity on the Configure command line to enable multiplicity.
967 : set usesocks on the Configure command line to enable socks.
968 : set usethreads on the Configure command line to enable threads.
969 : full support for void wanted by default
972 : List of libraries we want.
973 : If anyone needs -lnet, put it in a hint file.
974 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
975 libswanted="$libswanted dld ld sun m c cposix posix"
976 libswanted="$libswanted ndir dir crypt sec"
977 libswanted="$libswanted ucb bsd BSD PW x"
978 : We probably want to search /usr/shlib before most other libraries.
979 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
980 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
981 glibpth="/usr/shlib $glibpth"
982 : Do not use vfork unless overridden by a hint file.
985 : Find the basic shell for Bourne shell scripts
989 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
992 if test -f "$xxx"; then
995 : Build up a list and do a single loop so we can 'break' out.
996 pth=`echo $PATH | sed -e "s/$p_/ /g"`
997 for xxx in sh bash ksh pdksh ash; do
999 try="$try ${p}/${xxx}"
1003 if test -f "$xxx"; then
1006 elif test -f "$xxx.exe"; then
1017 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1019 Usually it's in /bin/sh. How did you even get this far?
1020 Please contact me (Perl Maintainers) at perlbug@perl.com and
1021 we'll try to straighten this all out.
1027 : see if sh knows # comments
1028 if `$sh -c '#' >/dev/null 2>&1`; then
1032 test -f $xcat || xcat=/usr/bin/cat
1037 if test -s today; then
1040 echo "#! $xcat" > try
1044 if test -s today; then
1052 echo "Your $sh doesn't grok # comments--I will strip them later on."
1055 echo "exec grep -v '^[ ]*#'" >spitshell
1057 $eunicefix spitshell
1058 spitshell=`pwd`/spitshell
1060 echo "I presume that if # doesn't work, #! won't work either!"
1065 : figure out how to guarantee sh startup
1067 '') startsh=${sharpbang}${sh} ;;
1079 : echo "Yup, it does."
1081 echo "Hmm... '$startsh' does not guarantee sh startup..."
1082 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1087 : Save command line options in file UU/cmdline.opt for later use in
1088 : generating config.sh.
1089 cat > cmdline.opt <<EOSH
1090 # Configure command line arguments.
1097 cat >>cmdline.opt <<EOSH
1098 config_arg$argn='$arg'
1100 argn=`expr $argn + 1`
1103 : produce awk script to parse command line options
1104 cat >options.awk <<'EOF'
1106 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1108 len = length(optstr);
1109 for (i = 1; i <= len; i++) {
1110 c = substr(optstr, i, 1);
1111 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1122 if (substr(str, 1, 1) != "-") {
1123 printf("'%s'\n", str);
1127 for (i = 2; i <= len; i++) {
1128 c = substr(str, i, 1);
1130 printf("-%s\n", substr(str, i));
1136 printf("'%s'\n", substr(str, i + 1));
1149 : process the command line options
1150 set X `for arg in "$@"; do echo "X$arg"; done |
1151 sed -e s/X// | awk -f options.awk`
1156 : set up default values
1166 rm -f optdef.sh posthint.sh
1167 cat >optdef.sh <<EOS
1173 while test $# -gt 0; do
1175 -d) shift; fastread=yes;;
1176 -e) shift; alldone=cont;;
1180 if test -r "$1"; then
1183 echo "$me: cannot read config file $1." >&2
1188 -h) shift; error=true;;
1189 -r) shift; reuseval=true;;
1190 -s) shift; silent=true; realsilent=true;;
1191 -E) shift; alldone=exit;;
1192 -K) shift; knowitall=true;;
1193 -O) shift; override=true;;
1194 -S) shift; silent=true; extractsh=true;;
1199 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1200 echo "$me: ignoring -D $1" >&2
1203 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1204 *) echo "$1='define'" >> optdef.sh;;
1211 *=) echo "$1" >> optdef.sh;;
1213 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1214 echo "$me: ignoring -U $1" >&2
1216 *) echo "$1='undef'" >> optdef.sh;;
1227 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1231 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1232 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1238 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1239 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1240 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1241 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1242 *) xxx=`echo $yyy|sed 's!:.*!!'`
1243 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1249 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1251 echo "$yyy=''" >> posthint.sh ;;
1256 echo "$yyy='$zzz'" >> posthint.sh ;;
1258 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1260 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1265 echo "$yyy=$zzz" >> posthint.sh ;;
1266 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1269 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1272 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1280 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1281 [-U symbol] [-U symbol=] [-A command:symbol...]
1282 -d : use defaults for all answers.
1283 -e : go on without questioning past the production of config.sh.
1284 -f : specify an alternate default configuration file.
1285 -h : print this help message and exit (with an error status).
1286 -r : reuse C symbols value if possible (skips costly nm extraction).
1287 -s : silent mode, only echoes questions and essential information.
1288 -D : define symbol to have some value:
1289 -D symbol symbol gets the value 'define'
1290 -D symbol=value symbol gets the value 'value'
1291 -E : stop at the end of questions, after having produced config.sh.
1292 -K : do not use unless you know what you are doing.
1293 -O : let -D and -U override definitions from loaded configuration file.
1294 -S : perform variable substitutions on all .SH files (can mix with -f)
1295 -U : undefine symbol:
1296 -U symbol symbol gets the value 'undef'
1297 -U symbol= symbol gets completely empty
1298 -A : manipulate symbol after the platform specific hints have been applied:
1299 -A symbol=value append " "value to symbol
1300 -A append:symbol=value append value to symbol
1301 -A define:symbol=value define symbol to have value
1302 -A clear:symbol define symbol to be ''
1303 -A define:symbol define symbol to be 'define'
1304 -A eval:symbol=value define symbol to be eval of value
1305 -A prepend:symbol=value prepend value to symbol
1306 -A undef:symbol define symbol to be 'undef'
1307 -A undef:symbol= define symbol to be ''
1308 -V : print version number and exit (with a zero status).
1315 case "$fastread$alldone" in
1318 if test ! -t 0; then
1319 echo "Say 'sh Configure', not 'sh <Configure'"
1327 true) exec 1>/dev/null;;
1330 : run the defines and the undefines, if any, but leave the file out there...
1333 : create the posthint manipulation script and leave the file out there...
1338 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1339 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1340 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1341 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1342 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1345 : Some greps do not return status, grrr.
1346 echo "grimblepritz" >grimble
1347 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1349 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1355 : the following should work in any shell
1359 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1360 cat >contains <<'EOSS'
1361 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1366 : Find the path to the source tree
1369 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1372 *) src=`cd ../$src && pwd` ;;
1385 if test -f $rsrc/Configure && \
1386 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1388 : found it, so we are ok.
1391 for src in . .. ../.. ../../.. ../../../..; do
1392 if test -f ../$src/Configure && \
1393 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1404 Sorry, I can't seem to locate the source dir for $package. Please start
1405 Configure with an explicit path -- i.e. /some/path/Configure.
1413 echo "Sources for $package found in \"$src\"." >&4
1417 : script used to extract .SH files with variable substitutions
1418 cat >extract <<'EOS'
1420 echo "Doing variable substitutions on .SH files..."
1421 if test -f $src/MANIFEST; then
1422 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1424 echo "(Looking for .SH files under the source directory.)"
1425 set x `(cd $src; find . -name "*.SH" -print)`
1429 0) set x `(cd $src; echo *.SH)`; shift;;
1431 if test ! -f $src/$1; then
1437 while test $name; do
1438 if test ! -d "$name"; then
1439 create="$name $create";
1440 name=`echo $name | sed -e "s|^[^/]*$||"`;
1441 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1446 for file in $create; do
1455 dir=`expr X$file : 'X\(.*\)/'`
1456 file=`expr X$file : 'X.*/\(.*\)'`
1457 (cd $dir && . ./$file)
1467 dir=`expr X$file : 'X\(.*\)/'`
1468 file=`expr X$file : 'X.*/\(.*\)'`
1469 (set x $dir; shift; eval $mkdir_p)
1479 if test -f $src/config_h.SH; then
1480 if test ! -f config.h; then
1481 : oops, they left it out of MANIFEST, probably, so do it anyway.
1487 : extract files and exit if asked to do so
1488 case "$extractsh" in
1490 case "$realsilent" in
1494 case "$config_sh" in
1495 '') config_sh='config.sh';;
1498 echo "Fetching answers from $config_sh..."
1501 test "$override" && . ./optdef.sh
1510 : Eunice requires " " instead of "", can you believe it
1513 echo "Beginning of configuration questions for $package."
1515 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1517 : first determine how to suppress newline on echo command
1519 echo "Checking echo to see how to suppress newlines..."
1520 (echo "hi there\c" ; echo " ") >.echotmp
1521 if $contains c .echotmp >/dev/null 2>&1 ; then
1532 echo $n "The star should be here-->$c"
1536 : Now test for existence of everything in MANIFEST
1538 if test -f $rsrc/MANIFEST; then
1539 echo "First let's make sure your kit is complete. Checking..." >&4
1540 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1543 for filelist in x??; do
1544 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1546 if test -s missing; then
1550 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1552 You have the option of continuing the configuration process, despite the
1553 distinct possibility that your kit is damaged, by typing 'y'es. If you
1554 do, don't blame me if something goes wrong. I advise you to type 'n'o
1555 and contact the author (perlbug@perl.com).
1558 echo $n "Continue? [n] $c" >&4
1562 echo "Continuing..." >&4
1566 echo "ABORTING..." >&4
1571 echo "Looks good..."
1574 echo "There is no MANIFEST file. I hope your kit is complete !"
1579 : Find the appropriate value for a newline for tr
1580 if test -n "$DJGPP"; then
1583 if test X"$trnl" = X; then
1584 case "`echo foo|tr '\n' x 2>/dev/null`" in
1588 if test X"$trnl" = X; then
1589 case "`echo foo|tr '\012' x 2>/dev/null`" in
1590 foox) trnl='\012' ;;
1593 if test X"$trnl" = X; then
1596 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1602 : compute the number of columns on the terminal for proper question formatting
1607 : set up the echo used in my read
1608 myecho="case \"\$xxxm\" in
1609 '') echo $n \"\$rp $c\" >&4;;
1611 '') echo $n \"[\$xxxm] $c\";;
1613 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1615 echo $n \"[\$xxxm] $c\" >&4
1617 echo $n \"\$rp [\$xxxm] $c\" >&4
1623 : now set up to do reads with possible shell escape and default assignment
1629 case "\$fastread" in
1630 yes) case "\$dflt" in
1633 case "\$silent-\$rp" in
1638 *) case "\$silent" in
1639 true) case "\$rp" in
1644 while expr "X\$ans" : "X!" >/dev/null; do
1648 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1656 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1665 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1670 echo "(OK, I'll run with -d after this question.)" >&4
1673 echo "*** Sorry, \$1 not supported yet." >&4
1683 echo "*** Substitution done -- please confirm."
1685 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1690 echo "*** Error -- try again."
1697 case "\$ans\$xxxm\$nostick" in
1709 : create .config dir to save info across Configure sessions
1710 test -d ../.config || mkdir ../.config
1711 cat >../.config/README <<EOF
1712 This directory created by Configure to save information that should
1713 persist across sessions for $package.
1715 You may safely delete it if you wish.
1718 : general instructions
1721 user=`(logname) 2>/dev/null`
1723 '') user=`whoami 2>&1`;;
1725 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1728 rp='Would you like to see the instructions?'
1739 This installation shell script will examine your system and ask you questions
1740 to determine how the perl5 package should be installed. If you get
1741 stuck on a question, you may use a ! shell escape to start a subshell or
1742 execute a command. Many of the questions will have default answers in square
1743 brackets; typing carriage return will give you the default.
1745 On some of the questions which ask for file or directory names you are allowed
1746 to use the ~name construct to specify the login directory belonging to "name",
1747 even if you don't have a shell which knows about that. Questions where this is
1748 allowed will be marked "(~name ok)".
1752 dflt='Type carriage return to continue'
1756 The prompter used in this script allows you to use shell variables and
1757 backticks in your answers. You may use $1, $2, etc... to refer to the words
1758 in the default answer, as if the default line was a set of arguments given to a
1759 script shell. This means you may also use $* to repeat the whole default line,
1760 so you do not have to re-type everything to add something to the default.
1762 Everytime there is a substitution, you will have to confirm. If there is an
1763 error (e.g. an unmatched backtick), the default answer will remain unchanged
1764 and you will be prompted again.
1766 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1767 the questions and use the computed defaults (or the previous answers if there
1768 was already a config.sh file). Type 'Configure -h' for a list of options.
1769 You may also start interactively and then answer '& -d' at any prompt to turn
1770 on the non-interactive behaviour for the remainder of the execution.
1776 Much effort has been expended to ensure that this shell script will run on any
1777 Unix system. If despite that it blows up on yours, your best bet is to edit
1778 Configure and run it again. If you can't run Configure for some reason,
1779 you'll have to generate a config.sh file by hand. Whatever problems you
1780 have, let me (perlbug@perl.com) know how I blew it.
1782 This installation script affects things in two ways:
1784 1) it may do direct variable substitutions on some of the files included
1786 2) it builds a config.h file for inclusion in C programs. You may edit
1787 any of these files as the need arises after running this script.
1789 If you make a mistake on a question, there is no easy way to back up to it
1790 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1791 files. Configure will offer to let you do this before it runs the SH files.
1794 dflt='Type carriage return to continue'
1796 case "$firsttime" in
1797 true) echo $user >>../.config/instruct;;
1801 : find out where common programs are
1803 echo "Locating common programs..." >&4
1816 if test -d \$dir/\$thing; then
1822 for thisthing in \$dir/\$thing; do
1823 : just loop through to pick last item
1825 if test -f \$thisthing; then
1828 elif test -f \$dir/\$thing.exe; then
1829 if test -n "$DJGPP"; then
1830 echo \$dir/\$thing.exe
1832 : on Eunice apparently
1883 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1884 pth="$pth /lib /usr/lib"
1885 for file in $loclist; do
1889 if test -f "$xxx"; then
1892 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1893 xxx=`./loc $file $file $pth`
1896 '') xxx=`./loc $file $file $pth`;;
1897 *) xxx=`./loc $xxx $xxx $pth`;;
1903 echo $file is in $xxx.
1906 echo $file is in $xxx.
1909 echo "I don't know where '$file' is, and my life depends on it." >&4
1910 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1916 echo "Don't worry if any of the following aren't found..."
1918 for file in $trylist; do
1922 if test -f "$xxx"; then
1925 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1926 xxx=`./loc $file $file $pth`
1929 '') xxx=`./loc $file $file $pth`;;
1930 *) xxx=`./loc $xxx $xxx $pth`;;
1936 echo $file is in $xxx.
1939 echo $file is in $xxx.
1942 echo "I don't see $file out there, $say."
1949 echo "Substituting grep for egrep."
1955 echo "Substituting cp for ln."
1961 echo "Hopefully test is built into your sh."
1964 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1965 echo "Using the test built into your sh."
1973 echo "Hopefully echo is built into your sh."
1978 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1979 $echo $n "hi there$c" >foo1
1980 echo $n "hi there$c" >foo2
1981 if cmp foo1 foo2 >/dev/null 2>&1; then
1982 echo "They are compatible. In fact, they may be identical."
1989 They are not compatible! You are probably running ksh on a non-USG system.
1990 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1991 have echo built in and we may have to run some Bourne shell scripts. That
1992 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1995 $echo $n "The star should be here-->$c"
2002 : determine whether symbolic links are supported
2005 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2006 echo "Symbolic links are supported." >&4
2009 echo "Symbolic links are NOT supported." >&4
2014 : see whether [:lower:] and [:upper:] are supported character classes
2016 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2018 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2022 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2023 # (0xc9 and 0xd1), therefore that is a nice testing point.
2024 if test "X$up" = X -o "X$low" = X; then
2025 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2031 if test "X$up" = X -o "X$low" = X; then
2032 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2038 if test "X$up" = X -o "X$low" = X; then
2039 case "`echo IJ | od -x 2>/dev/null`" in
2041 echo "Hey, this might be EBCDIC." >&4
2042 if test "X$up" = X -o "X$low" = X; then
2043 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2044 ij) up='[A-IJ-RS-Z]'
2049 if test "X$up" = X -o "X$low" = X; then
2050 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2060 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2062 echo "Using $up and $low to convert case." >&4
2065 echo "I don't know how to translate letters from upper to lower case." >&4
2066 echo "Your tr is not acting any way I know of." >&4
2070 : set up the translation script tr, must be called with ./tr of course
2074 '[A-Z][a-z]') exec $tr '$up' '$low';;
2075 '[a-z][A-Z]') exec $tr '$low' '$up';;
2082 : Try to determine whether config.sh was made on this system
2083 case "$config_sh" in
2085 myuname=`$uname -a 2>/dev/null`
2086 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2087 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2088 # because the A-Z/a-z are not consecutive.
2089 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2090 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2091 newmyuname="$myuname"
2093 case "$knowitall" in
2095 if test -f ../config.sh; then
2096 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2097 eval "`grep myuname= ../config.sh`"
2099 if test "X$myuname" = "X$newmyuname"; then
2107 : Get old answers from old config file if Configure was run on the
2108 : same system, otherwise use the hints.
2111 if test -f config.sh; then
2113 rp="I see a config.sh file. Shall I use it to set the defaults?"
2116 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2117 *) echo "Fetching default answers from your old config.sh file..." >&4
2125 : Older versions did not always set $sh. Catch re-use of such
2134 if test ! -f config.sh; then
2137 First time through, eh? I have some defaults handy for some systems
2138 that need some extra help getting the Configure answers right:
2141 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2143 : Half the following guesses are probably wrong... If you have better
2144 : tests or hints, please send them to perlbug@perl.com
2145 : The metaconfig authors would also appreciate a copy...
2146 $test -f /irix && osname=irix
2147 $test -f /xenix && osname=sco_xenix
2148 $test -f /dynix && osname=dynix
2149 $test -f /dnix && osname=dnix
2150 $test -f /lynx.os && osname=lynxos
2151 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2152 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2153 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2154 $test -f /bin/mips && /bin/mips && osname=mips
2155 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2156 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2157 $test -d /usr/apollo/bin && osname=apollo
2158 $test -f /etc/saf/_sactab && osname=svr4
2159 $test -d /usr/include/minix && osname=minix
2160 if $test -d /MachTen -o -d /MachTen_Folder; then
2162 if $test -x /sbin/version; then
2163 osvers=`/sbin/version | $awk '{print $2}' |
2164 $sed -e 's/[A-Za-z]$//'`
2165 elif $test -x /usr/etc/version; then
2166 osvers=`/usr/etc/version | $awk '{print $2}' |
2167 $sed -e 's/[A-Za-z]$//'`
2173 $test -f /sys/posix.dll &&
2174 $test -f /usr/bin/what &&
2175 set X `/usr/bin/what /sys/posix.dll` &&
2176 $test "$3" = UWIN &&
2180 if $test -f $uname; then
2188 umips) osname=umips ;;
2191 [23]100) osname=mips ;;
2192 next*) osname=next ;;
2194 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2195 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2198 elif $test -f /etc/kconfig; then
2200 if test "$lns" = "$ln -s"; then
2202 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2204 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2211 if test -n "$DJGPP"; then
2220 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2222 'not found') osvers="$4"."$3" ;;
2223 '<3240'|'<>3240') osvers=3.2.0 ;;
2224 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2225 '=3250'|'>3250') osvers=3.2.5 ;;
2229 bsd386) osname=bsd386
2232 cygwin*) osname=cygwin
2235 *dc.osx) osname=dcosx
2241 domainos) osname=apollo
2247 dynixptx*) osname=dynixptx
2248 osvers=`echo "$4"|sed 's/^v//'`
2250 freebsd) osname=freebsd
2252 genix) osname=genix ;;
2254 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2270 netbsd*) osname=netbsd
2273 news-os) osvers="$3"
2275 4*) osname=newsos4 ;;
2279 next*) osname=next ;;
2280 POSIX-BC | posix-bc ) osname=posix-bc
2283 powerux | power_ux | powermax_os | powermaxos | \
2284 powerunix | power_unix) osname=powerux
2290 solaris) osname=solaris
2292 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2299 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2303 titanos) osname=titanos
2312 ultrix) osname=ultrix
2315 osf1|mls+) case "$5" in
2318 osvers=`echo "$3" | sed 's/^[xvt]//'`
2320 hp*) osname=hp_osf1 ;;
2321 mips) osname=mips_osf1 ;;
2324 unixware) osname=svr5
2330 $2) case "$osname" in
2334 : svr4.x or possibly later
2344 if test -f /stand/boot ; then
2345 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2346 if test -n "$INITPROG" -a -f "$INITPROG"; then
2347 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2348 if test -n "$isesix"; then
2356 *) if test -f /etc/systemid; then
2358 set `echo $3 | $sed 's/\./ /g'` $4
2359 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2361 elif $test -f $src/hints/sco_$1_$2.sh; then
2363 elif $test -f $src/hints/sco_$1.sh; then
2368 '') : Still unknown. Probably a generic Sys V.
2377 *) case "$osname" in
2378 '') : Still unknown. Probably a generic BSD.
2386 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2387 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2388 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2391 $rm -f UU/kernel.what
2392 elif test -d c:/.; then
2399 : Now look for a hint file osname_osvers, unless one has been
2400 : specified already.
2403 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2404 : Also try without trailing minor version numbers.
2405 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2406 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2407 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2408 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2411 *) case "$osvers" in
2414 *) if $test -f $src/hints/$file.sh ; then
2416 elif $test -f $src/hints/$xfile.sh ; then
2418 elif $test -f $src/hints/$xxfile.sh ; then
2420 elif $test -f $src/hints/$xxxfile.sh ; then
2422 elif $test -f $src/hints/$xxxxfile.sh ; then
2424 elif $test -f "$src/hints/${osname}.sh" ; then
2433 if $test -f Policy.sh ; then
2436 none) dflt="Policy" ;;
2437 *) dflt="Policy $dflt" ;;
2442 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2446 if $test -f Policy.sh ; then
2449 There's also a Policy hint file available, which should make the
2450 site-specific (policy) questions easier to answer.
2457 You may give one or more space-separated answers, or "none" if appropriate.
2458 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2459 is a good thing. DO NOT give a wrong version or a wrong OS.
2463 rp="Which of these apply, if any?"
2466 for file in $tans; do
2467 if $test X$file = XPolicy -a -f Policy.sh; then
2469 $cat Policy.sh >> UU/config.sh
2470 elif $test -f $src/hints/$file.sh; then
2471 . $src/hints/$file.sh
2472 $cat $src/hints/$file.sh >> UU/config.sh
2473 elif $test X$tans = X -o X$tans = Xnone ; then
2476 : Give one chance to correct a possible typo.
2477 echo "$file.sh does not exist"
2479 rp="hint to use instead?"
2481 for file in $ans; do
2482 if $test -f "$src/hints/$file.sh"; then
2483 . $src/hints/$file.sh
2484 $cat $src/hints/$file.sh >> UU/config.sh
2485 elif $test X$ans = X -o X$ans = Xnone ; then
2488 echo "$file.sh does not exist -- ignored."
2495 : Remember our hint file for later.
2496 if $test -f "$src/hints/$file.sh" ; then
2506 echo "Fetching default answers from $config_sh..." >&4
2510 cp $config_sh config.sh 2>/dev/null
2520 test "$override" && . ./optdef.sh
2521 myuname="$newmyuname"
2523 : Restore computed paths
2524 for file in $loclist $trylist; do
2525 eval $file="\$_$file"
2530 Configure uses the operating system name and version to set some defaults.
2531 The default value is probably right if the name rings a bell. Otherwise,
2532 since spelling matters for me, either accept the default or answer "none"
2539 ''|' '|none) dflt=none ;;
2540 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2543 *) dflt="$osname" ;;
2545 rp="Operating system name?"
2549 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2555 ''|' '|none) dflt=none ;;
2556 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2557 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2559 ''|' ') dflt=none ;;
2564 *) dflt="$osvers" ;;
2566 rp="Operating system version?"
2576 : who configured the system
2577 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2578 cf_by=`(logname) 2>/dev/null`
2581 cf_by=`(whoami) 2>/dev/null`
2583 "") cf_by=unknown ;;
2587 : set up the script used to warn in case of inconsistency
2594 echo "*** WHOA THERE!!! ***" >&4
2595 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2596 rp=" Keep the $hint value?"
2599 y) td=$was; tu=$was;;
2603 : function used to set $1 to $val
2604 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2606 $define$undef) . ./whoa; eval "$var=\$td";;
2607 $undef$define) . ./whoa; eval "$var=\$tu";;
2608 *) eval "$var=$val";;
2613 Perl can be built to take advantage of threads on some systems.
2614 To do so, Configure must be run with -Dusethreads.
2616 Note that threading is a highly experimental feature, and
2617 some known race conditions still remain. If you choose to try
2618 it, be very sure to not actually deploy it for production
2619 purposes. README.threads has more details, and is required
2620 reading if you enable threads.
2622 case "$usethreads" in
2623 $define|true|[yY]*) dflt='y';;
2626 rp='Build a threading Perl?'
2629 y|Y) val="$define" ;;
2635 case "$usethreads" in
2639 As of 5.5.640, Perl has two different internal threading implementations,
2640 the 5.005 version (5005threads) and an interpreter-based version
2641 (ithreads) that has one interpreter per thread. Both are very
2642 experimental. This arrangement exists to help developers work out
2643 which one is better.
2645 If you're a casual user, you probably don't want interpreter-threads
2646 at this time. There doesn't yet exist a way to create threads from
2647 within Perl in this model, i.e., "use Thread;" will NOT work.
2649 : Default to ithreads unless overridden on command line or with
2652 case "$use5005threads" in
2653 $define|true|[yY]*) dflt='n';;
2655 case "$useithreads" in
2656 $undef|false|[nN]*) dflt='n';;
2658 rp='Use interpreter-based ithreads?'
2661 y|Y) val="$define" ;;
2666 : Now set use5005threads to the opposite value.
2667 case "$useithreads" in
2668 $define) val="$undef" ;;
2675 useithreads="$undef"
2676 use5005threads="$undef"
2680 case "$d_oldpthreads" in
2681 '') : Configure tests would be welcome here. For now, assume undef.
2683 *) val="$d_oldpthreads" ;;
2689 case "$usethreads" in
2690 "$define"|true|[yY]*)
2691 : Look for a hint-file generated 'call-back-unit'. If the
2692 : user has specified that a threading perl is to be built,
2693 : we may need to set or change some other defaults.
2694 if $test -f usethreads.cbu; then
2695 echo "Your platform has some specific hints for threaded builds, using them..."
2699 (Your platform doesn't have any specific hints for threaded builds.
2700 Assuming POSIX threads, then.)
2708 Perl can be built so that multiple Perl interpreters can coexist
2709 within the same Perl executable.
2712 case "$useithreads" in
2715 This multiple interpreter support is required for interpreter-based threads.
2720 echo 'Normally you do not need this and you should answer no.'
2721 case "$usemultiplicity" in
2722 $define|true|[yY]*) dflt='y';;
2725 rp='Build Perl for multiplicity?'
2728 y|Y) val="$define" ;;
2736 : determine where manual pages are on this system
2740 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2741 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2742 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2743 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2744 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2745 sysman=`./loc . /usr/man/man1 $syspath`
2748 if $test -d "$sysman"; then
2749 echo "System manual is in $sysman." >&4
2751 echo "Could not find manual pages in source form." >&4
2754 : see what memory models we can support
2757 $cat >pdp11.c <<'EOP'
2766 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2767 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2768 dflt='unsplit split'
2770 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2773 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2778 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2781 if $test -d /lib/large || $test -d /usr/lib/large; then
2784 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2793 Some systems have different model sizes. On most systems they are called
2794 small, medium, large, and huge. On the PDP11 they are called unsplit and
2795 split. If your system doesn't support different memory models, say "none".
2796 If you wish to force everything to one memory model, say "none" here and
2797 put the appropriate flags later when it asks you for other cc and ld flags.
2798 Venix systems may wish to put "none" and let the compiler figure things out.
2799 (In the following question multiple model names should be space separated.)
2801 The default for most systems is "none".
2804 rp="Which memory models are supported?"
2819 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2820 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2827 rp="What flag indicates separate I and D space?"
2835 *large*|*small*|*medium*|*huge*)
2842 rp="What flag indicates large model?"
2852 *huge*) case "$huge" in
2856 rp="What flag indicates huge model?"
2866 *medium*) case "$medium" in
2870 rp="What flag indicates medium model?"
2877 *) medium="$large";;
2880 *small*) case "$small" in
2884 rp="What flag indicates small model?"
2895 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2898 $rm -f pdp11.* pdp11
2900 : make some quick guesses about what we are up against
2902 $echo $n "Hmm... $c"
2912 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2913 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2915 echo "Looks kind of like an OSF/1 system, but we'll see..."
2917 elif test `echo abc | tr a-z A-Z` = Abc ; then
2918 xxx=`./loc addbib blurfl $pth`
2919 if $test -f $xxx; then
2920 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2924 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2925 echo "Looks kind of like an extended USG system, but we'll see..."
2927 echo "Looks kind of like a USG system, but we'll see..."
2931 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2932 echo "Looks kind of like a BSD system, but we'll see..."
2936 echo "Looks kind of like a Version 7 system, but we'll see..."
2939 case "$eunicefix" in
2942 There is, however, a strange, musty smell in the air that reminds me of
2943 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2947 : it so happens the Eunice I know will not run shell scripts in Unix format
2951 echo "Congratulations. You aren't running Eunice."
2955 : Detect OS2. The p_ variable is set above in the Head.U unit.
2960 I have the feeling something is not exactly right, however...don't tell me...
2961 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2966 if test -f /xenix; then
2967 echo "Actually, this looks more like a XENIX system..."
2972 echo "It's not Xenix..."
2977 if test -f /venix; then
2978 echo "Actually, this looks more like a VENIX system..."
2985 echo "Nor is it Venix..."
2988 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2989 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2992 : see if we need a special compiler
3000 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3001 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3015 On some older systems the default C compiler will not resolve multiple global
3016 references that happen to have the same name. On some such systems the "Mcc"
3017 command may be used to force these to be resolved. On other systems a "cc -M"
3018 command is required. (Note that the -M flag on other systems indicates a
3019 memory model to use!) If you have the Gnu C compiler, you might wish to use
3025 rp="Use which C compiler?"
3033 rp="Use which C compiler?"
3037 : Look for a hint-file generated 'call-back-unit'. Now that the
3038 : user has specified the compiler, we may need to set or change some
3040 if $test -f cc.cbu; then
3044 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3045 $cat >gccvers.c <<EOM
3050 printf("%s\n", __VERSION__);
3052 printf("%s\n", "1");
3058 if $cc -o gccvers gccvers.c; then
3059 gccversion=`./gccvers`
3060 case "$gccversion" in
3061 '') echo "You are not using GNU cc." ;;
3062 *) echo "You are using GNU cc $gccversion."
3067 echo "*** WHOA THERE!!! ***" >&4
3068 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3069 case "$knowitall" in
3071 echo " You'd better start hunting for one and let me know about it." >&4
3077 case "$gccversion" in
3078 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3081 : decide how portable to be. Allow command line overrides.
3082 case "$d_portable" in
3084 *) d_portable="$define" ;;
3087 : set up shell script to do ~ expansion
3093 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3096 if $test -f /bin/csh; then
3097 /bin/csh -f -c "glob \$1"
3102 name=\`$expr x\$1 : '..\([^/]*\)'\`
3103 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3104 if $test ! -d "\$dir"; then
3106 echo "\$me: can't locate home directory for: \$name" >&2
3111 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3127 : now set up to get a file name
3131 cat <<'EOSC' >>getfile
3147 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3148 fn=`echo $fn | sed 's/(.*)//'`
3154 loc_file=`expr $fn : '.*:\(.*\)'`
3155 fn=`expr $fn : '\(.*\):.*'`
3163 */*) fullpath=true;;
3172 *e*) exp_file=true;;
3175 *p*) nopath_ok=true;;
3180 *d*) type='Directory';;
3181 *l*) type='Locate';;
3186 Locate) what='File';;
3191 case "$d_portable" in
3199 while test "$type"; do
3204 true) rp="$rp (~name ok)";;
3207 if test -f UU/getfile.ok && \
3208 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3227 value=`UU/filexp $ans`
3230 if test "$ans" != "$value"; then
3231 echo "(That expands to $value on this system.)"
3245 /*) value="$ansexp" ;;
3250 echo "I shall only accept a full path name, as in /bin/ls." >&4
3251 echo "Use a ! shell escape if you wish to check pathnames." >&4
3254 echo "Please give a full path name, starting with slash." >&4
3257 echo "Note that using ~name is ok provided it expands well." >&4
3270 for fp in $gfpth; do
3271 if test "X$fp" = X.; then
3276 if test -f "$pf"; then
3278 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3280 echo "($value is not a plain file, but that's ok.)"
3283 if test X"$type" = X; then
3290 for fp in $gfpth; do
3291 if test "X$fp" = X.; then
3296 if test -d "$pf"; then
3304 if test -d "$ansexp"; then
3305 echo "(Looking for $loc_file in directory $value.)"
3306 value="$value/$loc_file"
3307 ansexp="$ansexp/$loc_file"
3309 if test -f "$ansexp"; then
3312 case "$nopath_ok" in
3313 true) case "$value" in
3315 *) echo "Assuming $value will be in people's path."
3331 if test "$fastread" = yes; then
3336 rp="$what $value doesn't exist. Use that name anyway?"
3355 test "X$gfpthkeep" != Xy && gfpth=""
3358 : What should the include directory be ?
3360 $echo $n "Hmm... $c"
3364 if $test -f /bin/mips && /bin/mips; then
3365 echo "Looks like a MIPS system..."
3366 $cat >usr.c <<'EOCP'
3367 #ifdef SYSTYPE_BSD43
3371 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3372 dflt='/bsd43/usr/include'
3376 mips_type='System V'
3378 $rm -f usr.c usr.out
3379 echo "and you're compiling with the $mips_type compiler and libraries."
3383 echo "Doesn't look like a MIPS system."
3393 case "$xxx_prompt" in
3396 rp='Where are the include files you want to use?'
3404 : see how we invoke the C preprocessor
3406 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3407 cat <<'EOT' >testcpp.c
3413 if test ! -f cppstdin; then
3414 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3415 # AIX cc -E doesn't show the absolute headerfile
3416 # locations but we'll cheat by using the -M flag.
3417 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
3419 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3422 echo "Keeping your $hint cppstdin wrapper."
3425 wrapper=`pwd`/cppstdin
3429 if $test "X$cppstdin" != "X" && \
3430 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3431 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3433 echo "You used to use $cppstdin $cppminus so we'll use that again."
3435 '') echo "But let's see if we can live without a wrapper..." ;;
3437 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3438 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3440 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3443 echo "(However, $cpprun $cpplast does not work, let's see...)"
3451 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3458 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3459 $cc -E <testcpp.c >testcpp.out 2>&1; \
3460 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3461 echo "Yup, it does."
3464 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3465 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3466 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3467 echo "Yup, it does."
3470 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3471 $cc -P <testcpp.c >testcpp.out 2>&1; \
3472 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3473 echo "Yipee, that works!"
3476 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3477 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3478 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3479 echo "At long last!"
3482 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3483 $cpp <testcpp.c >testcpp.out 2>&1; \
3484 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3488 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3489 $cpp - <testcpp.c >testcpp.out 2>&1; \
3490 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3491 echo "Hooray, it works! I was beginning to wonder."
3494 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3495 $wrapper <testcpp.c >testcpp.out 2>&1; \
3496 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3502 rp="No dice. I can't find a C preprocessor. Name one:"
3506 $x_cpp <testcpp.c >testcpp.out 2>&1
3507 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3508 echo "OK, that will do." >&4
3510 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3525 echo "Perhaps can we force $cc -E using a wrapper..."
3526 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3527 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3533 echo "Nope, we'll have to live without it..."
3547 "$wrapper"|'cppstdin') ;;
3548 *) $rm -f $wrapper;;
3550 $rm -f testcpp.c testcpp.out
3552 : Set private lib path
3555 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3560 '') dlist="$loclibpth $plibpth $glibpth";;
3561 *) dlist="$libpth";;
3564 : Now check and see which directories actually exist, avoiding duplicates
3568 if $test -d $xxx; then
3571 *) libpth="$libpth $xxx";;
3577 Some systems have incompatible or broken versions of libraries. Among
3578 the directories listed in the question below, please remove any you
3579 know not to be holding relevant libraries, and add any that are needed.
3580 Say "none" for none.
3591 rp="Directories to use for library searches?"
3598 : compute shared library extension
3601 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3611 On some systems, shared libraries may be available. Answer 'none' if
3612 you want to suppress searching of shared libraries for the remainder
3613 of this configuration.
3616 rp='What is the file extension used for shared libraries?'
3620 : Define several unixisms.
3621 : Hints files or command line option can be used to override them.
3622 : The convoluted testing is in case hints files set either the old
3625 '') case "$exe_ext" in
3627 *) _exe="$exe_ext" ;;
3632 '') case "$lib_ext" in
3639 '') case "$obj_ext" in
3646 '') case "$path_sep" in
3657 : Which makefile gets called first. This is used by make depend.
3658 case "$firstmakefile" in
3659 '') firstmakefile='makefile';;
3664 Perl can be built to use the SOCKS proxy protocol library. To do so,
3665 Configure must be run with -Dusesocks.
3667 Normally you do not need this and you should answer no.
3671 $define|true|[yY]*) dflt='y';;
3674 rp='Build Perl for SOCKS?'
3677 y|Y) val="$define" ;;
3683 : Looking for optional libraries
3685 echo "Checking for optional libraries..." >&4
3690 case "$libswanted" in
3691 '') libswanted='c_s';;
3695 libswanted="$libswanted socks5 socks5_sh"
3698 for thislib in $libswanted; do
3701 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`
3702 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X" ; then
3704 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3706 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3708 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3710 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3712 libname=${thislib}_s
3713 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3716 if $test -f "$xxx"; then
3718 shared) echo "Found -l$libname (shared)." ;;
3719 static) echo "Found -l$libname." ;;
3720 *) echo "Found -l$libname ($libstyle)." ;;
3724 *) dflt="$dflt -l$libname"
3725 libsfound="$libsfound $xxx"
3727 libsfiles="$libsfiles $yyy"
3728 yyy=`echo $xxx|sed "s@/$yyy\\$@@"`
3729 case " $libsdirs " in
3731 *) libsdirs="$libsdirs $yyy" ;;
3736 echo "No -l$thislib."
3747 ' '|'') dflt='none';;
3752 In order to compile $package on your machine, a number of libraries
3753 are usually needed. Include any other special libraries here as well.
3754 Say "none" for none. The default list is almost always right.
3758 rp="What libraries to use?"
3765 : determine optimization, if desired, or use for debug flag also
3767 ' '|$undef) dflt='none';;
3769 *) dflt="$optimize";;
3773 By default, $package compiles with the -O flag to use the optimizer.
3774 Alternately, you might want to use the symbolic debugger, which uses
3775 the -g flag (on traditional Unix systems). Either flag can be
3776 specified here. To use neither flag, specify the word "none".
3779 rp="What optimizer/debugger flag should be used?"
3783 'none') optimize=" ";;
3787 : We will not override a previous value, but we might want to
3788 : augment a hint file
3790 default|recommended)
3791 case "$gccversion" in
3792 1*) dflt='-fpcc-struct-return' ;;
3795 *-g*) dflt="$dflt -DDEBUGGING";;
3797 case "$gccversion" in
3798 2*) if test -d /etc/conf/kconfig.d &&
3799 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3805 case "$gccversion" in
3809 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3810 echo 'int main(void) { return 0; }' > gcctest.c
3811 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3812 echo "Yes, it does." 2>&1
3815 echo "Leaving current flags $ccflags alone." 2>&1
3817 *) dflt="$dflt -fno-strict-aliasing" ;;
3820 echo "Nope, it doesn't, but that's ok." 2>&1
3827 case "$mips_type" in
3828 *BSD*|'') inclwanted="$locincpth $usrinc";;
3829 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3831 for thisincl in $inclwanted; do
3832 if $test -d $thisincl; then
3833 if $test x$thisincl != x$usrinc; then
3836 *) dflt="$dflt -I$thisincl";;
3842 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3844 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3852 *) dflt="$dflt -D$2";;
3856 set signal.h LANGUAGE_C; eval $inctest
3860 ccflags="$ccflags -DSOCKS"
3865 default|recommended) dflt="$ccflags $dflt" ;;
3866 *) dflt="$ccflags";;
3874 Your C compiler may want other flags. For this question you should include
3875 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3876 but you should NOT include libraries or ld flags like -lwhatever. If you
3877 want $package to honor its debug switch, you should include -DDEBUGGING here.
3878 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3880 To use no flags, specify the word "none".
3886 rp="Any additional cc flags?"
3893 : the following weeds options from ccflags that are of no interest to cpp
3895 case "$gccversion" in
3896 1*) cppflags="$cppflags -D__GNUC__"
3898 case "$mips_type" in
3900 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3906 echo "Let me guess what the preprocessor flags are..." >&4
3920 *) ftry="$previous $flag";;
3922 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3923 >cpp1.out 2>/dev/null && \
3924 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3925 >cpp2.out 2>/dev/null && \
3926 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3927 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3929 cppflags="$cppflags $ftry"
3939 *-*) echo "They appear to be: $cppflags";;
3941 $rm -f cpp.c cpp?.out
3945 : flags used in final linking phase
3947 '') if ./venix; then
3953 *-posix*) dflt="$dflt -posix" ;;
3956 *) dflt="$ldflags";;
3959 : Try to guess additional flags to pick up local libraries.
3960 for thislibdir in $libpth; do
3961 case " $loclibpth " in
3964 *"-L$thislibdir "*) ;;
3965 *) dflt="$dflt -L$thislibdir" ;;
3977 Your C linker may need flags. For this question you should
3978 include -L/whatever and any other flags used by the C linker, but you
3979 should NOT include libraries like -lwhatever.
3981 Make sure you include the appropriate -L/path flags if your C linker
3982 does not normally search all of the directories you specified above,
3985 To use no flags, specify the word "none".
3989 rp="Any additional ld flags (NOT including libraries)?"
3995 rmlist="$rmlist pdp11"
3999 echo "Checking your choice of C compiler and flags for coherency..." >&4
4000 $cat > try.c <<'EOF'
4002 int main() { printf("Ok\n"); exit(0); }
4004 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4006 $cat >try.msg <<'EOM'
4007 I've tried to compile and run the following simple program:
4010 $cat try.c >> try.msg
4012 $cat >> try.msg <<EOM
4019 and I got the following output:
4023 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4024 if sh -c './try' >>try.msg 2>&1; then
4028 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4031 cat >> try.msg <<'EOQS'
4032 If $libs contains -lsfio, and sfio is mis-configured, then it
4033 sometimes (apparently) runs and exits with a 0 status, but with no
4034 output! It may have to do with sfio's use of _exit vs. exit.
4037 rp="You have a big problem. Shall I abort Configure"
4044 echo "The program compiled OK, but exited with status $?." >>try.msg
4045 rp="You have a problem. Shall I abort Configure"
4049 echo "I can't compile the test program." >>try.msg
4050 rp="You have a BIG problem. Shall I abort Configure"
4056 case "$knowitall" in
4058 echo "(The supplied flags or libraries might be incorrect.)"
4066 *) echo "Ok. Stopping Configure." >&4
4071 n) echo "OK, that should do.";;
4073 $rm -f try try.* core
4075 : define an is-a-typedef? function
4076 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4078 "") inclist="sys/types.h";;
4080 eval "varval=\$$var";
4084 for inc in $inclist; do
4085 echo "#include <$inc>" >>temp.c;
4087 echo "#ifdef $type" >> temp.c;
4088 echo "printf(\"We have $type\");" >> temp.c;
4089 echo "#endif" >> temp.c;
4090 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4091 if $contains $type temp.E >/dev/null 2>&1; then
4097 *) eval "$var=\$varval";;
4100 : define an is-a-typedef? function that prompts if the type is not available.
4101 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4103 "") inclist="sys/types.h";;
4105 eval "varval=\$$var";
4109 for inc in $inclist; do
4110 echo "#include <$inc>" >>temp.c;
4112 echo "#ifdef $type" >> temp.c;
4113 echo "printf(\"We have $type\");" >> temp.c;
4114 echo "#endif" >> temp.c;
4115 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4117 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4118 if $contains $type temp.E >/dev/null 2>&1; then
4119 echo "$type found." >&4;
4122 echo "$type NOT found." >&4;
4128 *) eval "$var=\$varval";;
4131 : define a shorthand compile call
4135 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4136 : define a shorthand compile call for compilations that should be ok.
4140 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4142 : check for lengths of integral types
4146 echo "Checking to see how big your integers are..." >&4
4147 $cat >intsize.c <<'EOCP'
4151 printf("intsize=%d;\n", (int)sizeof(int));
4152 printf("longsize=%d;\n", (int)sizeof(long));
4153 printf("shortsize=%d;\n", (int)sizeof(short));
4158 if eval $compile_ok && ./intsize > /dev/null; then
4160 echo "Your integers are $intsize bytes long."
4161 echo "Your long integers are $longsize bytes long."
4162 echo "Your short integers are $shortsize bytes long."
4166 Help! I can't compile and run the intsize test program: please enlighten me!
4167 (This is probably a misconfiguration in your system or libraries, and
4168 you really ought to fix it. Still, I'll try anyway.)
4172 rp="What is the size of an integer (in bytes)?"
4176 rp="What is the size of a long integer (in bytes)?"
4180 rp="What is the size of a short integer (in bytes)?"
4186 $rm -f intsize intsize.*
4188 : see what type lseek is declared as in the kernel
4189 rp="What is the type used for lseek's offset on this system?"
4190 set off_t lseektype long stdio.h sys/types.h
4194 $echo $n "Checking to see how big your file offsets are...$c" >&4
4196 #include <sys/types.h>
4200 printf("%d\n", (int)sizeof($lseektype));
4205 if eval $compile_ok; then
4207 $echo " $lseeksize bytes." >&4
4211 echo "(I can't seem to compile the test program. Guessing...)"
4212 rp="What is the size of your file offsets (in bytes)?"
4218 : see what type file positions are declared as in the library
4219 rp="What is the type for file position used by fsetpos()?"
4220 set fpos_t fpostype long stdio.h sys/types.h
4225 *_t) zzz="$fpostype" ;;
4228 $echo $n "Checking the size of $zzz...$c" >&4
4230 #include <sys/types.h>
4233 printf("%d\n", (int)sizeof($fpostype));
4238 if eval $compile_ok; then
4243 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4246 echo " $fpossize bytes."
4252 echo "(I can't compile the test program. Guessing...)" >&4
4253 rp="What is the size of your file positions (in bytes)?"
4260 case "$lseeksize:$fpossize" in
4263 You can have files larger than 2 gigabytes.
4268 Perl can be built to understand large files (files larger than 2 gigabytes)
4269 on some systems. To do so, Configure must be run with -Duselargefiles.
4271 If this doesn't make any sense to you, just accept the default 'y'.
4273 case "$uselargefiles" in
4274 "$undef"|false|[nN]*) dflt='n' ;;
4277 rp='Try to understand large files, if available?'
4280 y|Y) val="$define" ;;
4287 case "$uselargefiles" in
4289 : Look for a hint-file generated 'call-back-unit'. If the
4290 : user has specified that a large files perl is to be built,
4291 : we may need to set or change some other defaults.
4292 if $test -f uselfs.cbu; then
4293 echo "Your platform has some specific hints for large file builds, using them..."
4296 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4298 #include <sys/types.h>
4302 printf("%d\n", (int)sizeof($lseektype));
4307 if eval $compile_ok; then
4309 $echo " $lseeksize bytes." >&4
4313 echo "(I can't seem to compile the test program. Guessing...)"
4314 rp="What is the size of your file offsets (in bytes)?"
4319 *_t) zzz="$fpostype" ;;
4322 $echo $n "Rechecking the size of $zzz...$c" >&4
4324 #include <sys/types.h>
4327 printf("%d\n", (int)sizeof($fpostype));
4332 if eval $compile_ok; then
4337 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4340 echo " $fpossize bytes."
4346 echo "(I can't compile the test program. Guessing...)" >&4
4347 rp="What is the size of your file positions (in bytes)?"
4357 case "$usemorebits" in
4358 "$define"|true|[yY]*)
4360 uselongdouble="$define"
4361 usemorebits="$define"
4363 *) usemorebits="$undef"
4368 case "$intsize:$longsize" in
4371 You have natively 64-bit integers.
4375 *) case "$ccflags" in
4376 *-DUSE_64_BITS*|*-DUSE_LONG_LONG*) use64bits="$define";;
4377 *) case "$uselonglong" in
4378 $define|true|[yY]*) use64bits="$define";;
4382 case "$use64bits" in
4383 $define|true|[yY]*) dflt='y';;
4388 Perl can be built to take advantage of 64-bit integer types
4389 on some systems. To do so, Configure must be run with -Duse64bits.
4391 If this doesn't make any sense to you, just accept the default '$dflt'.
4393 rp='Try to use 64-bit integers, if available?'
4396 [yY]*) val="$define" ;;
4404 case "$archname64" in
4405 '') archname64='' ;; # not a typo
4408 case "$use64bits" in
4409 "$define"|true|[yY]*)
4410 : Look for a hint-file generated 'call-back-unit'. If the
4411 : user has specified that a 64-bit perl is to be built,
4412 : we may need to set or change some other defaults.
4413 if $test -f use64bits.cbu; then
4414 echo "Your platform has some specific hints for 64-bit builds, using them..."
4418 (Your platform doesn't have any specific hints for 64-bit builds.)
4420 case "$intsize:$longsize" in
4422 (This is probably okay, as your system is a natively 64-bit system.)
4426 case "$gccversion" in
4428 *) case "$ccflags" in
4431 But since you seem to be using gcc, I will now add -DUSE_64_BITS
4432 to the compilation flags to get long longs.
4434 ccflags="$ccflags -DUSE_64_BITS"
4443 : determine the architecture name
4445 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4446 tarch=`arch`"-$osname"
4447 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4448 if uname -m > tmparch 2>&1 ; then
4449 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4450 -e 's/$/'"-$osname/" tmparch`
4458 case "$myarchname" in
4461 echo "(Your architecture name used to be $myarchname.)"
4468 *) dflt="$archname";;
4470 rp='What is your architecture name'
4473 case "$usethreads" in
4475 echo "Threads selected." >&4
4477 *-thread*) echo "...and architecture name already has -thread." >&4
4479 *) archname="$archname-thread"
4480 echo "...setting architecture name to $archname." >&4
4485 case "$usemultiplicity" in
4487 echo "Multiplicity selected." >&4
4489 *-multi*) echo "...and architecture name already has -multi." >&4
4491 *) archname="$archname-multi"
4492 echo "...setting architecture name to $archname." >&4
4497 case "$use64bits" in
4499 case "$archname64" in
4504 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4506 *) archname="$archname-$archname64"
4507 echo "...setting architecture name to $archname." >&4
4514 : determine root of directory hierarchy where package will be installed.
4517 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4525 By default, $package will be installed in $dflt/bin, manual pages
4526 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4527 installation directories. Typically this is something like /usr/local.
4528 If you wish to have binaries under /usr/bin but other parts of the
4529 installation under /usr/local, that's ok: you will be prompted
4530 separately for each of the installation directories, the prefix being
4531 only used to set the defaults.
4535 rp='Installation prefix to use?'
4543 *) oldprefix="$prefix";;
4553 $define|true) afs=true ;;
4554 $undef|false) afs=false ;;
4555 *) if test -d /afs; then
4563 echo "AFS may be running... I'll be extra cautious then..." >&4
4565 echo "AFS does not seem to be running..." >&4
4568 : determine installation prefix for where package is to be installed.
4572 Since you are running AFS, I need to distinguish the directory in which
4573 files will reside from the directory in which they are installed (and from
4574 which they are presumably copied to the former directory by occult means).
4577 case "$installprefix" in
4578 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4579 *) dflt="$installprefix";;
4584 In some special cases, particularly when building $package for distribution,
4585 it is convenient to distinguish between the directory in which files should
4586 be installed from the directory ($prefix) in which they
4587 will eventually reside. For most users, these two directories are the same.
4590 case "$installprefix" in
4592 *) dflt=$installprefix;;
4596 rp='What installation prefix should I use for installing files?'
4598 installprefix="$ans"
4599 installprefixexp="$ansexp"
4601 : set the prefixit variable, to compute a suitable default value
4602 prefixit='case "$3" in
4604 case "$oldprefix" in
4605 "") eval "$1=\"\$$2\"";;
4612 ""|" ") eval "$1=\"\$$2\"";;
4618 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4620 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4621 /*-$oldprefix/*|\~*-$oldprefix/*)
4622 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4623 *) eval "$1=\"\$$2\"";;
4627 : set the base revision
4631 : get the patchlevel
4633 echo "Getting the current patchlevel..." >&4
4634 if $test -r $rsrc/patchlevel.h;then
4635 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4636 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4637 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4638 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4639 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4647 $echo $n "(You have $package" $c
4650 *) $echo $n " $baserev" $c ;;
4652 $echo $n " patchlevel $patchlevel" $c
4653 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4657 : XXX Should be a Configure test for double-dots in filenames.
4658 version=`echo $baserev $patchlevel $subversion | \
4659 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4660 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4661 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4664 version=`echo $baserev $patchlevel $subversion | \
4665 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4666 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4667 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4670 : Special case the 5.005_xx maintenance series, which used 5.005
4671 : without any subversion label as a subdirectory in $sitelib
4672 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4673 api_versionstring='5.005'
4676 : determine installation style
4677 : For now, try to deduce it from prefix unless it is already set.
4678 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4679 case "$installstyle" in
4680 '') case "$prefix" in
4681 *perl*) dflt='lib';;
4682 *) dflt='lib/perl5' ;;
4685 *) dflt='lib/perl5' ;;
4687 : Probably not worth prompting for this since we prompt for all
4688 : the directories individually, and the prompt would be too long and
4692 : determine where private library files go
4693 : Usual default is /usr/local/lib/perl5/$version.
4694 : Also allow things like /opt/perl/lib/$version, since
4695 : /opt/perl/lib/perl5... would be redundant.
4696 : The default "style" setting is made in installstyle.U
4697 case "$installstyle" in
4698 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4699 *) set dflt privlib lib/$version ;;
4704 There are some auxiliary files for $package that need to be put into a
4705 private library directory that is accessible by everyone.
4709 rp='Pathname where the private library files will reside?'
4712 privlibexp="$ansexp"
4713 : Change installation prefix, if necessary.
4714 if $test X"$prefix" != X"$installprefix"; then
4715 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4717 installprivlib="$privlibexp"
4720 : set the prefixup variable, to restore leading tilda escape
4721 prefixup='case "$prefixexp" in
4723 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4726 : determine where public architecture dependent libraries go
4729 : privlib default is /usr/local/lib/$package/$version
4730 : archlib default is /usr/local/lib/$package/$version/$archname
4731 : privlib may have an optional trailing /share.
4732 tdflt=`echo $privlib | $sed 's,/share$,,'`
4733 tdflt=$tdflt/$archname
4742 $spackage contains architecture-dependent library files. If you are
4743 sharing libraries in a heterogeneous environment, you might store
4744 these files in a separate location. Otherwise, you can just include
4745 them with the rest of the public library files.
4749 rp='Where do you want to put the public architecture-dependent libraries?'
4752 archlibexp="$ansexp"
4753 if $test X"$archlib" = X"$privlib"; then
4758 : Change installation prefix, if necessary.
4759 if $test X"$prefix" != X"$installprefix"; then
4760 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4762 installarchlib="$archlibexp"
4766 : Binary compatibility with 5.005 is not possible for builds
4767 : with advanced features
4768 case "$usethreads$usemultiplicity" in
4770 bincompat5005="$undef"
4771 d_bincompat5005="$undef"
4775 Perl 5.006 can be compiled for binary compatibility with 5.005.
4776 If you decide to do so, you will be able to continue using most
4777 of the extensions that were compiled for Perl 5.005.
4780 case "$bincompat5005$d_bincompat5005" in
4781 *"$undef"*) dflt=n ;;
4784 rp='Binary compatibility with Perl 5.005?'
4787 y*) val="$define" ;;
4792 case "$d_bincompat5005" in
4794 bincompat5005="$define"
4796 *) bincompat5005="$undef"
4797 d_bincompat5005="$undef"
4804 : see if setuid scripts can be secure
4807 Some kernels have a bug that prevents setuid #! scripts from being
4808 secure. Some sites have disabled setuid #! scripts because of this.
4810 First let's decide if your kernel supports secure setuid #! scripts.
4811 (If setuid #! scripts would be secure but have been disabled anyway,
4812 don't say that they are secure if asked.)
4817 if $test -d /dev/fd; then
4818 echo "#!$ls" >reflect
4819 chmod +x,u+s reflect
4820 ./reflect >flect 2>&1
4821 if $contains "/dev/fd" flect >/dev/null; then
4822 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4826 If you are not sure if they are secure, I can check but I'll need a
4827 username and password different from the one you are using right now.
4828 If you don't have such a username or don't want me to test, simply
4832 rp='Other username to test security of setuid scripts with?'
4837 case "$d_suidsafe" in
4838 '') echo "I'll assume setuid scripts are *not* secure." >&4
4841 echo "Well, the $hint value is *not* secure." >&4
4843 *) echo "Well, the $hint value *is* secure." >&4
4848 $rm -f reflect flect
4849 echo "#!$ls" >reflect
4850 chmod +x,u+s reflect
4853 echo '"su" will (probably) prompt you for '"$ans's password."
4854 su $ans -c './reflect >flect'
4855 if $contains "/dev/fd" flect >/dev/null; then
4856 echo "Okay, it looks like setuid scripts are secure." >&4
4859 echo "I don't think setuid scripts are secure." >&4
4864 rp='Does your kernel have *secure* setuid scripts?'
4867 [yY]*) val="$define";;
4872 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4873 echo "(That's for file descriptors, not floppy disks.)"
4879 $rm -f reflect flect
4881 : now see if they want to do setuid emulation
4884 case "$d_suidsafe" in
4887 echo "No need to emulate SUID scripts since they are secure here." >& 4
4891 Some systems have disabled setuid scripts, especially systems where
4892 setuid scripts cannot be secure. On systems where setuid scripts have
4893 been disabled, the setuid/setgid bits on scripts are currently
4894 useless. It is possible for $package to detect those bits and emulate
4895 setuid/setgid in a secure fashion. This emulation will only work if
4896 setuid scripts have been disabled in your kernel.
4900 "$define") dflt=y ;;
4903 rp="Do you want to do setuid/setgid emulation?"
4906 [yY]*) val="$define";;
4914 : determine filename position in cpp output
4916 echo "Computing filename position in cpp output for #include directives..." >&4
4917 echo '#include <stdio.h>' > foo.c
4920 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4921 $grep '^[ ]*#.*stdio\.h' | \
4922 while read cline; do
4925 while $test \$# -gt 0; do
4926 if $test -r \`echo \$1 | $tr -d '"'\`; then
4931 pos=\`expr \$pos + 1\`
4943 *) pos="${fieldn}th";;
4945 echo "Your cpp writes the filename in the $pos field of the line."
4947 : locate header file
4952 for usrincdir in $usrinc
4954 if test -f \$usrincdir/\$wanted; then
4955 echo "\$usrincdir/\$wanted"
4959 awkprg='{ print \$$fieldn }'
4960 echo "#include <\$wanted>" > foo\$\$.c
4961 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4962 $grep "^[ ]*#.*\$wanted" | \
4963 while read cline; do
4964 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4966 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4967 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4972 # status = 0: grep returned 0 lines, case statement not executed
4973 # status = 1: headerfile found
4974 # status = 2: while loop executed, no headerfile found
4978 if test \$status -eq 1; then
4985 : define an alternate in-header-list? function
4986 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4987 cont=true; xxf="echo \"<\$1> found.\" >&4";
4988 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4989 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4991 case $# in 4) instead=instead;; *) instead="at last";; esac;
4992 while $test "$cont"; do
4994 var=$2; eval "was=\$$2";
4995 if $test "$xxx" && $test -r "$xxx";
4997 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5000 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5001 set $yyy; shift; shift; yyy=$@;
5002 case $# in 0) cont="";;
5003 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5004 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5005 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5006 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5010 do set $yyy; var=$2; eval "was=\$$2";
5011 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5012 set $yyy; shift; shift; yyy=$@;
5015 : see if this is a malloc.h system
5016 set malloc.h i_malloc
5019 : see if stdlib is available
5020 set stdlib.h i_stdlib
5023 : determine which malloc to compile in
5025 case "$usemymalloc" in
5026 ''|[yY]*|true|$define) dflt='y' ;;
5029 rp="Do you wish to attempt to use the malloc that comes with $package?"
5035 mallocsrc='malloc.c'
5036 mallocobj="malloc$_o"
5037 d_mymalloc="$define"
5040 : Remove malloc from list of libraries to use
5041 echo "Removing unneeded -lmalloc from library list" >&4
5042 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5045 echo "libs = $libs" >&4
5057 : compute the return types of malloc and free
5059 $cat >malloc.c <<END
5063 #include <sys/types.h>
5077 case "$malloctype" in
5079 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5086 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5090 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5097 echo "Your system uses $freetype free(), it would seem." >&4
5101 The installation process will also create a directory for
5102 vendor-supplied add-ons. Vendors who supply perl with their system
5103 may find it convenient to place all vendor-supplied files in this
5104 directory rather than in the main distribution directory. This will
5105 ease upgrades between binary-compatible maintenance versions of perl.
5107 Of course you may also use these directories in whatever way you see
5108 fit. For example, you might use them to access modules shared over a
5109 company-wide network.
5111 The default answer should be fine for most people.
5112 This causes further questions about vendor add-ons to be skipped
5113 and no vendor-specific directories will be configured for perl.
5116 rp='Do you want to configure vendor-specific add-on directories?'
5117 case "$usevendorprefix" in
5118 define|true|[yY]*) dflt=y ;;
5124 rp='Installation prefix to use for vendor-supplied add-ons?'
5125 case "$vendorprefix" in
5127 *) dflt=$vendorprefix ;;
5131 case "$vendorprefix" in
5135 *) oldvendorprefix="$prefix";;
5139 usevendorprefix="$define"
5141 vendorprefixexp="$ansexp"
5143 *) usevendorprefix="$undef"
5149 case "$vendorprefix" in
5150 '') d_vendorlib="$undef"
5154 *) d_vendorlib="$define"
5155 : determine where vendor-supplied modules go.
5156 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5157 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5158 case "$installstyle" in
5159 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5160 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5163 rp='Pathname for the vendor-supplied library files?'
5166 vendorlibexp="$ansexp"
5167 : Change installation prefix, if necessary.
5168 if $test X"$prefix" != X"$installprefix"; then
5169 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5171 installvendorlib="$vendorlibexp"
5176 : Cruising for prototypes
5178 echo "Checking out function prototypes..." >&4
5179 $cat >prototype.c <<'EOCP'
5180 int main(int argc, char *argv[]) {
5183 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5184 echo "Your C compiler appears to support function prototypes."
5187 echo "Your C compiler doesn't seem to understand function prototypes."
5194 case "$prototype" in
5196 *) ansi2knr='ansi2knr'
5201 This version of $package can only be compiled by a compiler that
5202 understands function prototypes. Unfortunately, your C compiler
5204 doesn't seem to understand them. Sorry about that.
5206 If GNU cc is available for your system, perhaps you could try that instead.
5208 Eventually, we hope to support building Perl with pre-ANSI compilers.
5209 If you would like to help in that effort, please contact <perlbug@perl.org>.
5211 Aborting Configure now.
5217 : determine where public executables go
5222 rp='Pathname where the public executables will reside?'
5224 if $test "X$ansexp" != "X$binexp"; then
5229 : Change installation prefix, if necessary.
5230 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5231 if $test X"$prefix" != X"$installprefix"; then
5232 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5234 installbin="$binexp"
5239 After $package is installed, you may wish to install various
5240 add-on modules and utilities. Typically, these add-ons will
5241 be installed under $prefix with the rest
5242 of this package. However, you may wish to install such add-ons
5243 elsewhere under a different prefix.
5245 If you do not wish to put everything under a single prefix, that's
5246 ok. You will be prompted for the individual locations; this siteprefix
5247 is only used to suggest the defaults.
5249 The default should be fine for most people.
5253 rp='Installation prefix to use for add-on modules and utilities?'
5254 : XXX Here might be another good place for an installstyle setting.
5255 case "$siteprefix" in
5257 *) dflt=$siteprefix ;;
5261 case "$siteprefix" in
5266 *) oldsiteprefix="$prefix";;
5271 siteprefixexp="$ansexp"
5273 : determine where site specific libraries go.
5274 : Usual default is /usr/local/lib/perl5/site_perl/$version
5275 : The default "style" setting is made in installstyle.U
5276 : XXX No longer works with Prefixit stuff.
5277 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5278 case "$installstyle" in
5279 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5280 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5284 The installation process will create a directory for
5285 site-specific extensions and modules. Most users find it convenient
5286 to place all site-specific files in this directory rather than in the
5287 main distribution directory.
5291 rp='Pathname for the site-specific library files?'
5294 sitelibexp="$ansexp"
5295 : Change installation prefix, if necessary.
5296 if $test X"$prefix" != X"$installprefix"; then
5297 installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5299 installsitelib="$sitelibexp"
5302 : Determine list of previous versions to include in @INC
5303 $cat > getverlist <<EOPL
5306 \$api_versionstring = "$api_versionstring";
5307 \$version = "$version";
5308 \$sitelib = "$sitelib";
5309 \$archname = "$archname";
5311 $cat >> getverlist <<'EOPL'
5312 # Can't have leading @ because metaconfig interprets it as a command!
5313 ;@inc_version_list=();
5314 $stem=dirname($sitelib);
5315 # Redo to do opendir/readdir?
5318 ;@candidates = glob("5.*");
5324 # XXX ToDo: These comparisons must be reworked when two-digit
5325 # subversions come along, so that 5.7.10 compares as greater than
5326 # 5.7.3! By that time, hope that 5.6.x is sufficiently
5327 # widespread that we can use the built-in version vectors rather
5328 # than reinventing them here. For 5.6.0, however, we must
5329 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
5330 foreach $d (@candidates) {
5331 if ($d lt $version) {
5332 if ($d ge $api_versionstring) {
5333 unshift(@inc_version_list, "$d/$archname", $d);
5335 elsif ($d ge "5.005") {
5336 unshift(@inc_version_list, $d);
5340 # Skip newer version. I.e. don't look in
5341 # 5.7.0 if we're installing 5.6.1.
5345 if (@inc_version_list) {
5346 print join(' ', @inc_version_list);
5349 # Blank space to preserve value for next Configure run.
5354 case "$inc_version_list" in
5355 '') if test -x $perl; then
5356 dflt=`$perl getverlist`
5361 $undef) dflt='none' ;;
5362 *) dflt="$inc_version_list" ;;
5366 In order to ease the process of upgrading, this version of perl
5367 can be configured to use modules built and installed with earlier
5368 versions of perl that were installed under $prefix. Specify here
5369 the list of earlier versions that this version of perl should check.
5370 If Configure detected no earlier versions of perl installed under
5371 $prefix, then the list will be empty. Answer 'none' to tell perl
5372 to not search earlier versions.
5374 The default should almost always be sensible, so if you're not sure,
5375 just accept the default.
5378 rp='List of earlier versions to include in @INC?'
5381 [Nn]one) inc_version_list=' ' ;;
5382 *) inc_version_list="$ans" ;;
5384 case "$inc_version_list" in
5386 inc_version_list_init='0';;
5387 *) inc_version_list_init=`echo $inc_version_list |
5388 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5393 : determine whether to install perl also as /usr/bin/perl
5396 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5398 Many scripts expect to perl to be installed as /usr/bin/perl.
5399 I can install the perl you are about to compile also as /usr/bin/perl
5400 (in addition to $installbin/perl).
5402 case "$installusrbinperl" in
5403 "$undef"|[nN]*) dflt='n';;
5406 rp="Do you want to install perl as /usr/bin/perl?"
5409 [yY]*) val="$define";;
5415 set installusrbinperl
5419 echo "Checking for GNU C Library..." >&4
5420 cat >gnulibc.c <<EOM
5432 if eval $compile_ok && ./gnulibc; then
5434 echo "You are using the GNU C Library"
5437 echo "You are not using the GNU C Library"
5443 : see if nm is to be used to determine whether a symbol is defined or not
5447 case "$d_gnulibc" in
5450 echo "nm probably won't work on the GNU C Library." >&4
5456 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5458 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5459 echo "'nm' won't be sufficient on this sytem." >&4
5465 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5466 if $test $dflt -gt 20; then
5476 true|$define) dflt=y;;
5483 I can use $nm to extract the symbols from your C libraries. This
5484 is a time consuming task which may generate huge output on the disk (up
5485 to 3 megabytes) but that should make the symbols extraction faster. The
5486 alternative is to skip the 'nm' extraction part and to compile a small
5487 test program instead to determine whether each symbol is present. If
5488 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5489 this may be the best solution.
5491 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5494 rp="Shall I use $nm to extract C symbols from the libraries?"
5497 [Nn]*) usenm=false;;
5506 : nm options which may be necessary
5508 '') if $test -f /mach_boot; then
5510 elif $test -d /usr/ccs/lib; then
5511 nm_opt='-p' # Solaris (and SunOS?)
5512 elif $test -f /dgux; then
5514 elif $test -f /lib64/rld; then
5515 nm_opt='-p' # 64-bit Irix
5521 : nm options which may be necessary for shared libraries but illegal
5522 : for archive libraries. Thank you, Linux.
5523 case "$nm_so_opt" in
5524 '') case "$myuname" in
5526 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5527 nm_so_opt='--dynamic'
5536 : get list of predefined functions in a handy place
5541 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5548 *) for thislib in $libs; do
5551 : Handle C library specially below.
5554 thislib=`echo $thislib | $sed -e 's/^-l//'`
5555 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5557 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5559 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5561 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5563 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5565 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5567 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5572 libnames="$libnames $try"
5574 *) libnames="$libnames $thislib" ;;
5583 for xxx in $libpth; do
5584 $test -r $1 || set $xxx/libc.$so
5585 : The messy sed command sorts on library version numbers.
5587 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5588 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5590 s/[0-9][0-9]*/0000&/g
5591 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5594 sort | $sed -e 's/^.* //'`
5597 $test -r $1 || set /usr/ccs/lib/libc.$so
5598 $test -r $1 || set /lib/libsys_s$_a
5604 if $test -r "$1"; then
5605 echo "Your (shared) C library seems to be in $1."
5607 elif $test -r /lib/libc && $test -r /lib/clib; then
5608 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5610 libc='/lib/clib /lib/libc'
5611 if $test -r /lib/syslib; then
5612 echo "(Your math library is in /lib/syslib.)"
5613 libc="$libc /lib/syslib"
5615 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5616 echo "Your C library seems to be in $libc, as you said before."
5617 elif $test -r $incpath/usr/lib/libc$_a; then
5618 libc=$incpath/usr/lib/libc$_a;
5619 echo "Your C library seems to be in $libc. That's fine."
5620 elif $test -r /lib/libc$_a; then
5622 echo "Your C library seems to be in $libc. You're normal."
5624 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5626 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5627 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5628 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5630 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5632 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5635 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5637 if $test -r "$tans"; then
5638 echo "Your C library seems to be in $tans, of all places."
5644 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5648 If the guess above is wrong (which it might be if you're using a strange
5649 compiler, or your machine supports multiple models), you can override it here.
5654 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5656 I can't seem to find your C library. I've looked in the following places:
5659 $sed 's/^/ /' libpath
5662 None of these seems to contain your C library. I need to get its name...
5667 rp='Where is your C library?'
5672 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5673 set X `cat libnames`
5676 case $# in 1) xxx=file; esac
5677 echo "Extracting names from the following $xxx for later perusal:" >&4
5679 $sed 's/^/ /' libnames >&4
5681 $echo $n "This may take a while...$c" >&4
5685 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5686 *) $nm $nm_opt $file 2>/dev/null;;
5691 $grep fprintf libc.tmp > libc.ptf
5692 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5693 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5695 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5697 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5699 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5701 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5703 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5705 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5707 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5709 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5711 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5713 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5715 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5717 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5719 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5720 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5722 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5724 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5726 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5728 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5730 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5732 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5734 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5736 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5738 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5740 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5742 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5744 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5746 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5748 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5750 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5753 $nm -p $* 2>/dev/null >libc.tmp
5754 $grep fprintf libc.tmp > libc.ptf
5755 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5756 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5762 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5764 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5765 for thisname in $libnames $libc; do
5766 $ar t $thisname >>libc.tmp
5768 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5770 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5771 # Repeat libc to extract forwarders to DLL entries too
5772 for thisname in $libnames $libc; do
5773 $ar tv $thisname >>libc.tmp
5774 # Revision 50 of EMX has bug in $ar.
5775 # it will not extract forwarders to DLL entries
5776 # Use emximp which will extract exactly them.
5777 emximp -o tmp.imp $thisname \
5779 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5780 < tmp.imp >>libc.tmp
5783 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5786 echo "$ar didn't seem to work right." >&4
5787 echo "Maybe this is a Cray...trying bld instead..." >&4
5788 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5790 for thisname in $libnames; do
5792 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5793 $ar t $thisname >>libc.tmp
5797 echo "That didn't work either. Giving up." >&4
5804 if $test -f /lib/syscalls.exp; then
5806 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5807 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5811 $rm -f libnames libpath
5813 : see if dld is available
5817 : is a C symbol defined?
5820 -v) tf=libc.tmp; tc=""; tdc="";;
5821 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5822 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5825 case "$reuseval-$4" in
5827 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5833 if $contains $tlook $tf >/dev/null 2>&1;
5838 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5839 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5847 $define) tval=true;;
5853 : define an is-in-libc? function
5854 inlibc='echo " "; td=$define; tu=$undef;
5855 sym=$1; var=$2; eval "was=\$$2";
5857 case "$reuseval$was" in
5867 echo "$sym() found." >&4;
5868 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5870 echo "$sym() NOT found." >&4;
5871 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5875 $define) echo "$sym() found." >&4;;
5876 *) echo "$sym() NOT found." >&4;;
5880 : see if dlopen exists
5887 : determine which dynamic loading, if any, to compile in
5889 dldir="ext/DynaLoader"
5902 $define) dflt='y' ;;
5905 $define) dflt='y' ;;
5907 : Does a dl_xxx.xs file exist for this operating system
5908 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5911 rp="Do you wish to use dynamic loading?"
5918 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5919 dflt="$dldir/dl_${osname}.xs"
5920 elif $test "$d_dlopen" = "$define" ; then
5921 dflt="$dldir/dl_dlopen.xs"
5922 elif $test "$i_dld" = "$define" ; then
5923 dflt="$dldir/dl_dld.xs"
5928 *) dflt="$dldir/$dlsrc"
5931 echo "The following dynamic loading files are available:"
5932 : Can not go over to $dldir because getfile has path hard-coded in.
5933 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5934 rp="Source file to use for dynamic loading"
5940 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5944 Some systems may require passing special flags to $cc -c to
5945 compile modules that will be used to create a shared library.
5946 To use no flags, say "none".
5949 case "$cccdlflags" in
5950 '') case "$gccversion" in
5951 '') case "$osname" in
5953 next) dflt='none' ;;
5954 irix*) dflt='-KPIC' ;;
5955 svr4*|esix*|solaris) dflt='-KPIC' ;;
5956 sunos) dflt='-pic' ;;
5960 *) case "$osname" in
5961 svr4*|esix*|solaris) dflt='-fPIC' ;;
5966 *) dflt="$cccdlflags" ;;
5968 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5971 none) cccdlflags=' ' ;;
5972 *) cccdlflags="$ans" ;;
5977 Some systems use ld to create libraries that can be dynamically loaded,
5978 while other systems (such as those using ELF) use $cc.
5982 '') $cat >try.c <<'EOM'
5983 /* Test for whether ELF binaries are produced */
5988 int i = open("a.out",O_RDONLY);
5991 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5992 exit(0); /* succeed (yes, it's ELF) */
5997 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5999 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6003 echo "I'll use ld to build dynamic libraries."
6012 rp="What command should be used to create dynamic libraries?"
6018 Some systems may require passing special flags to $ld to create a
6019 library that can be dynamically loaded. If your ld flags include
6020 -L/other/path options to locate libraries outside your loader's normal
6021 search path, you may need to specify those -L options here as well. To
6022 use no flags, say "none".
6025 case "$lddlflags" in
6026 '') case "$osname" in
6027 beos) dflt='-nostart' ;;
6029 linux|irix*) dflt='-shared' ;;
6030 next) dflt='none' ;;
6031 solaris) dflt='-G' ;;
6032 sunos) dflt='-assert nodefinitions' ;;
6033 svr4*|esix*) dflt="-G $ldflags" ;;
6037 *) dflt="$lddlflags" ;;
6040 : Try to guess additional flags to pick up local libraries.
6041 : Be careful not to append to a plain 'none'
6045 for thisflag in $ldflags; do
6050 *) dflt="$dflt $thisflag" ;;
6057 ''|' ') dflt='none' ;;
6060 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6063 none) lddlflags=' ' ;;
6064 *) lddlflags="$ans" ;;
6069 Some systems may require passing special flags to $cc to indicate that
6070 the resulting executable will use dynamic linking. To use no flags,
6074 case "$ccdlflags" in
6075 '') case "$osname" in
6076 hpux) dflt='-Wl,-E' ;;
6077 linux) dflt='-rdynamic' ;;
6078 next) dflt='none' ;;
6079 sunos) dflt='none' ;;
6083 *) dflt="$ccdlflags" ;;
6085 rp="Any special flags to pass to $cc to use dynamic linking?"
6088 none) ccdlflags=' ' ;;
6089 *) ccdlflags="$ans" ;;
6103 # No dynamic loading being used, so don't bother even to prompt.
6106 *) case "$useshrplib" in
6107 '') case "$osname" in
6108 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6110 also='Building a shared libperl is required for dynamic loading to work on your system.'
6115 also='Building a shared libperl is needed for MAB support.'
6133 The perl executable is normally obtained by linking perlmain.c with
6134 libperl${_a}, any static extensions (usually just DynaLoader), and
6135 any other libraries needed on this system (such as -lm, etc.). Since
6136 your system supports dynamic loading, it is probably possible to build
6137 a shared libperl.$so. If you will have more than one executable linked
6138 to libperl.$so, this will significantly reduce the size of each
6139 executable, but it may have a noticeable affect on performance. The
6140 default is probably sensible for your system.
6144 rp="Build a shared libperl.$so (y/n)"
6148 useshrplib='true' ;;
6149 *) useshrplib='false' ;;
6154 case "$useshrplib" in
6158 # Figure out a good name for libperl.so. Since it gets stored in
6159 # a version-specific architecture-dependent library, the version
6160 # number isn't really that important, except for making cc/ld happy.
6162 # A name such as libperl.so.3.1
6163 majmin="libperl.$so.$patchlevel.$subversion"
6164 # A name such as libperl.so.301
6165 majonly=`echo $patchlevel $subversion |
6166 $awk '{printf "%d%02d", $1, $2}'`
6167 majonly=libperl.$so.$majonly
6168 # I'd prefer to keep the os-specific stuff here to a minimum, and
6169 # rely on figuring it out from the naming of libc.
6170 case "${osname}${osvers}" in
6173 # XXX How handle the --version stuff for MAB?
6175 linux*) # ld won't link with a bare -lperl otherwise.
6178 cygwin*) # include version
6179 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6181 *) # Try to guess based on whether libc has major.minor.
6183 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6184 *libc.$so.[0-9]*) dflt=$majonly ;;
6185 *) dflt=libperl.$so ;;
6195 I need to select a good name for the shared libperl. If your system uses
6196 library names with major and minor numbers, then you might want something
6197 like $majmin. Alternatively, if your system uses a single version
6198 number for shared libraries, then you might want to use $majonly.
6199 Or, your system might be quite happy with a simple libperl.$so.
6201 Since the shared libperl will get installed into a version-specific
6202 architecture-dependent directory, the version number of the shared perl
6203 library probably isn't important, so the default should be o.k.
6206 rp='What name do you want to give to the shared libperl?'
6209 echo "Ok, I'll use $libperl"
6212 libperl="libperl${_a}"
6216 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6220 WARNING: Use of the shrpdir variable for the installation location of
6221 the shared $libperl is not supported. It was never documented and
6222 will not work in this version. Let me (perlbug@perl.com)
6223 know of any problems this may cause.
6229 But your current setting of $shrpdir is
6230 the default anyway, so it's harmless.
6235 Further, your current attempted setting of $shrpdir
6236 conflicts with the value of $archlibexp/CORE
6237 that installperl will use.
6244 # How will the perl executable find the installed shared $libperl?
6245 # Add $xxx to ccdlflags.
6246 # If we can't figure out a command-line option, use $shrpenv to
6247 # set env LD_RUN_PATH. The main perl makefile uses this.
6248 shrpdir=$archlibexp/CORE
6251 if "$useshrplib"; then
6254 # We'll set it in Makefile.SH...
6260 xxx="-Wl,-R$shrpdir"
6262 linux|irix*|dec_osf)
6263 xxx="-Wl,-rpath,$shrpdir"
6266 # next doesn't like the default...
6269 # beos doesn't like the default, either.
6272 # hpux doesn't like the default, either.
6273 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6276 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6282 # Only add $xxx if it isn't already in ccdlflags.
6283 case " $ccdlflags " in
6285 *) ccdlflags="$ccdlflags $xxx"
6288 Adding $xxx to the flags
6289 passed to $ld so that the perl executable will find the
6290 installed shared $libperl.
6298 # Fix ccdlflags in AIX for building external extensions.
6299 # (For building Perl itself bare -bE:perl.exp is needed,
6300 # Makefile.SH takes care of this.)
6302 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6304 # Respect a hint or command-line value.
6306 '') shrpenv="$tmp_shrpenv" ;;
6308 case "$ldlibpthname" in
6309 '') ldlibpthname=LD_LIBRARY_PATH ;;
6310 none) ldlibpthname='' ;;
6313 : determine where manual pages go
6314 set man1dir man1dir none
6318 $spackage has manual pages available in source form.
6322 echo "However, you don't have nroff, so they're probably useless to you."
6324 '') man1dir="none";;
6327 echo "If you don't want the manual sources installed, answer 'none'."
6332 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6333 lookpath="$lookpath $prefixexp/man/p_man/man1"
6334 lookpath="$lookpath $prefixexp/man/u_man/man1"
6335 lookpath="$lookpath $prefixexp/man/man.1"
6337 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6338 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6348 rp="Where do the main $spackage manual pages (source) go?"
6350 if $test "X$man1direxp" != "X$ansexp"; then
6354 man1direxp="$ansexp"
6360 : Change installation prefix, if necessary.
6361 if $test X"$prefix" != X"$installprefix"; then
6362 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6364 installman1dir="$man1direxp"
6367 : What suffix to use on installed man pages
6374 rp="What suffix should be used for the main $spackage man pages?"
6376 '') case "$man1dir" in
6390 *) dflt="$man1ext";;
6397 : see if we can have long filenames
6399 rmlist="$rmlist /tmp/cf$$"
6400 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6401 first=123456789abcdef
6402 second=/tmp/cf$$/$first
6403 $rm -f $first $second
6404 if (echo hi >$first) 2>/dev/null; then
6405 if $test -f 123456789abcde; then
6406 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6409 if (echo hi >$second) 2>/dev/null; then
6410 if $test -f /tmp/cf$$/123456789abcde; then
6412 That's peculiar... You can have filenames longer than 14 characters, but only
6413 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
6414 I shall consider your system cannot support long filenames at all.
6418 echo 'You can have filenames longer than 14 characters.' >&4
6423 How confusing! Some of your filesystems are sane enough to allow filenames
6424 longer than 14 characters but some others like /tmp can't even think about them.
6425 So, for now on, I shall assume your kernel does not allow them at all.
6432 You can't have filenames longer than 14 chars. You can't even think about them!
6438 $rm -rf /tmp/cf$$ 123456789abcde*
6440 : determine where library module manual pages go
6441 set man3dir man3dir none
6445 $spackage has manual pages for many of the library modules.
6451 However, you don't have nroff, so they're probably useless to you.
6454 '') man3dir="none";;
6458 case "$d_flexfnam" in
6461 However, your system can't handle the long file names like File::Basename.3.
6464 '') man3dir="none";;
6468 echo "If you don't want the manual sources installed, answer 'none'."
6469 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6471 '') dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6472 if $test -d "$privlib/man/man3"; then
6475 WARNING: Previous versions of perl installed man3 pages into
6476 $privlib/man/man3. This version will suggest a
6477 new default of $dflt.
6481 rp='Do you wish to preserve the old behavior?(y/n)'
6484 y*) dflt="$privlib/man/man3" ;;
6490 *) dflt="$man3dir" ;;
6494 rp="Where do the $package library man pages (source) go?"
6497 man3direxp="$ansexp"
6503 : Change installation prefix, if necessary.
6504 if $test X"$prefix" != X"$installprefix"; then
6505 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6507 installman3dir="$man3direxp"
6510 : What suffix to use on installed man pages
6516 rp="What suffix should be used for the $package library man pages?"
6518 '') case "$man3dir" in
6532 *) dflt="$man3ext";;
6539 : see if we have to deal with yellow pages, now NIS.
6540 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6541 if $test -f /usr/etc/nibindd; then
6543 echo "I'm fairly confident you're on a NeXT."
6545 rp='Do you get the hosts file via NetInfo?'
6554 y*) hostcat='nidump hosts .';;
6555 *) case "$hostcat" in
6556 nidump*) hostcat='';;
6566 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6574 rp='Are you getting the hosts file via yellow pages?'
6577 y*) hostcat='ypcat hosts';;
6578 *) hostcat='cat /etc/hosts';;
6584 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6587 '') test -f /etc/group && groupcat='cat /etc/group';;
6590 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6593 : now get the host name
6595 echo "Figuring out host name..." >&4
6596 case "$myhostname" in
6598 echo 'Maybe "hostname" will work...'
6599 if tans=`sh -c hostname 2>&1` ; then
6607 if $test "$cont"; then
6609 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6610 if tans=`cat /etc/systemid 2>&1` ; then
6612 phostname='cat /etc/systemid'
6613 echo "Whadyaknow. Xenix always was a bit strange..."
6616 elif $test -r /etc/systemid; then
6617 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6620 if $test "$cont"; then
6621 echo 'No, maybe "uuname -l" will work...'
6622 if tans=`sh -c 'uuname -l' 2>&1` ; then
6624 phostname='uuname -l'
6626 echo 'Strange. Maybe "uname -n" will work...'
6627 if tans=`sh -c 'uname -n' 2>&1` ; then
6629 phostname='uname -n'
6631 echo 'Oh well, maybe I can mine it out of whoami.h...'
6632 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6633 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6634 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6636 case "$myhostname" in
6637 '') echo "Does this machine have an identity crisis or something?"
6640 echo "Well, you said $myhostname before..."
6641 phostname='echo $myhostname';;
6647 : you do not want to know about this
6652 if $test "$myhostname" ; then
6654 rp='Your host name appears to be "'$myhostname'".'" Right?"
6662 : bad guess or no guess
6663 while $test "X$myhostname" = X ; do
6665 rp="Please type the (one word) name of your host:"
6670 : translate upper to lower if necessary
6671 case "$myhostname" in
6673 echo "(Normalizing case in your host name)"
6674 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6678 case "$myhostname" in
6680 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6681 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6682 echo "(Trimming domain name from host name--host name is now $myhostname)"
6684 *) case "$mydomain" in
6687 test "X$hostcat" = "Xypcat hosts" &&
6688 ypmatch "$myhostname" hosts 2>/dev/null |\
6689 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
6692 test "X$hostcat" != "X" &&
6693 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
6694 /[ ]$myhostname[ . ]/p" > hosts
6697 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
6698 END { print sum }" hosts` = x1 || tmp_re="[ ]"
6699 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6700 hosts | $sort | $uniq | \
6701 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6702 case `$echo X$dflt` in
6703 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
6706 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6711 tans=`./loc resolv.conf X /etc /usr/etc`
6712 if $test -f "$tans"; then
6713 echo "(Attempting domain name extraction from $tans)"
6714 dflt=.`$sed -n -e 's/ / /g' \
6715 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
6716 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6718 .) dflt=.`$sed -n -e 's/ / /g' \
6719 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
6720 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6727 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6728 dflt=.`sh -c domainname 2>/dev/null`
6731 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6736 .) echo "(Lost all hope -- silly guess then)"
6742 *) dflt="$mydomain";;
6746 rp="What is your domain name?"
6756 : translate upper to lower if necessary
6759 echo "(Normalizing case in your domain name)"
6760 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6764 : a little sanity check here
6765 case "$phostname" in
6768 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6769 $myhostname$mydomain|$myhostname) ;;
6771 case "$phostname" in
6773 echo "(That doesn't agree with your whoami.h file, by the way.)"
6776 echo "(That doesn't agree with your $phostname command, by the way.)"
6786 I need to get your e-mail address in Internet format if possible, i.e.
6787 something like user@host.domain. Please answer accurately since I have
6788 no easy means to double check it. The default value provided below
6789 is most probably close to reality but may not be valid from outside
6790 your organization...
6794 while test "$cont"; do
6796 '') dflt="$cf_by@$myhostname$mydomain";;
6797 *) dflt="$cf_email";;
6799 rp='What is your e-mail address?'
6805 rp='Address does not look like an Internet one. Use it anyway?'
6821 If you or somebody else will be maintaining perl at your site, please
6822 fill in the correct e-mail address here so that they may be contacted
6823 if necessary. Currently, the "perlbug" program included with perl
6824 will send mail to this address in addition to perlbug@perl.com. You may
6825 enter "none" for no administrator.
6828 case "$perladmin" in
6829 '') dflt="$cf_email";;
6830 *) dflt="$perladmin";;
6832 rp='Perl administrator e-mail address'
6836 : figure out how to guarantee perl startup
6837 case "$startperl" in
6839 case "$sharpbang" in
6843 I can use the #! construct to start perl on your system. This will
6844 make startup of perl scripts faster, but may cause problems if you
6845 want to share those scripts and perl is not in a standard place
6846 ($binexp/perl) on all your platforms. The alternative is to force
6847 a shell by starting the script with a single ':' character.
6851 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6854 none) startperl=": # use perl";;
6855 *) startperl="#!$ans"
6856 if $test 30 -lt `echo "$ans" | wc -c`; then
6859 WARNING: Some systems limit the #! command to 32 characters.
6860 If you experience difficulty running Perl scripts with #!, try
6861 installing Perl in a directory with a shorter pathname.
6867 *) startperl=": # use perl"
6872 echo "I'll use $startperl to start perl scripts."
6874 : figure best path for perl in scripts
6877 perlpath="$binexp/perl"
6878 case "$startperl" in
6883 I will use the "eval 'exec'" idiom to start Perl on your system.
6884 I can use the full path of your Perl binary for this purpose, but
6885 doing so may cause problems if you want to share those scripts and
6886 Perl is not always in a standard place ($binexp/perl).
6890 rp="What path shall I use in \"eval 'exec'\"?"
6897 case "$startperl" in
6899 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6902 : determine where public executable scripts go
6903 set scriptdir scriptdir
6905 case "$scriptdir" in
6908 : guess some guesses
6909 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6910 $test -d /usr/share/bin && dflt=/usr/share/bin
6911 $test -d /usr/local/script && dflt=/usr/local/script
6912 $test -d /usr/local/scripts && dflt=/usr/local/scripts
6913 $test -d $prefixexp/script && dflt=$prefixexp/script
6917 *) dflt="$scriptdir"
6922 Some installations have a separate directory just for executable scripts so
6923 that they can mount it across multiple architectures but keep the scripts in
6924 one spot. You might, for example, have a subdirectory of /usr/share for this.
6925 Or you might just lump your scripts in with all your other executables.
6929 rp='Where do you keep publicly executable scripts?'
6931 if $test "X$ansexp" != "X$scriptdirexp"; then
6935 scriptdirexp="$ansexp"
6936 : Change installation prefix, if necessary.
6937 if $test X"$prefix" != X"$installprefix"; then
6938 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6940 installscript="$scriptdirexp"
6943 : determine where site specific architecture-dependent libraries go.
6944 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6945 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6946 : sitelib may have an optional trailing /share.
6947 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6948 tdflt="$tdflt/$archname"
6949 set sitearch sitearch none
6952 '') dflt="$tdflt" ;;
6953 *) dflt="$sitearch" ;;
6957 The installation process will also create a directory for
6958 architecture-dependent site-specific extensions and modules.
6962 rp='Pathname for the site-specific architecture-dependent library files?'
6965 sitearchexp="$ansexp"
6966 : Change installation prefix, if necessary.
6967 if $test X"$prefix" != X"$installprefix"; then
6968 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6970 installsitearch="$sitearchexp"
6973 : determine where add-on public executables go
6975 '') dflt=$siteprefix/bin ;;
6979 rp='Pathname where the add-on public executables should be installed?'
6982 sitebinexp="$ansexp"
6983 : Change installation prefix, if necessary.
6984 if $test X"$prefix" != X"$installprefix"; then
6985 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
6987 installsitebin="$sitebinexp"
6990 : see if sqrtl exists
6996 Perl can be built to take advantage of long doubles which
6997 (if available) may give more accuracy and range for floating point numbers.
6999 If this doesn't make any sense to you, just accept the default 'n'.
7003 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7006 case "$uselongdouble" in
7007 $define|true|[yY]*) dflt='y';;
7010 rp='Try to use long doubles if available?'
7013 y|Y) val="$define" ;;
7019 case "$uselongdouble" in
7020 true|[yY]*) uselongdouble="$define" ;;
7023 case "$uselongdouble" in
7025 : Look for a hint-file generated 'call-back-unit'. If the
7026 : user has specified that long doubles should be used,
7027 : we may need to set or change some other defaults.
7028 if $test -f uselongdouble.cbu; then
7029 echo "Your platform has some specific hints for long doubles, using them..."
7030 . ./uselongdouble.cbu
7033 (Your platform doesn't have any specific hints for long doubles.)
7039 case "$uselongdouble:$d_sqrtl" in
7043 You requested the use of long doubles but you do not seem to have
7044 the mathematic functions for long doubles. I'm disabling the use
7047 uselongdouble=$undef
7053 Previous version of $package used the standard IO mechanisms as defined
7054 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7055 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7056 the default. This abstraction layer can use AT&T's sfio (if you already
7057 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7058 problems with some extension modules. Using PerlIO with stdio is safe,
7059 but it is slower than plain stdio and therefore is not the default.
7061 If this doesn't make any sense to you, just accept the default 'n'.
7063 case "$useperlio" in
7064 $define|true|[yY]*) dflt='y';;
7067 rp='Use the experimental PerlIO abstraction layer?'
7074 echo "Ok, doing things the stdio way"
7081 case "$vendorprefix" in
7082 '') d_vendorbin="$undef"
7086 *) d_vendorbin="$define"
7087 : determine where vendor-supplied executables go.
7088 dflt=$vendorprefix/bin
7090 rp='Pathname for the vendor-supplied executables directory?'
7093 vendorbinexp="$ansexp"
7094 : Change installation prefix, if necessary.
7095 if $test X"$prefix" != X"$installprefix"; then
7096 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7098 installvendorbin="$vendorbinexp"
7103 : check for length of double
7105 case "$doublesize" in
7107 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7108 $cat >try.c <<'EOCP'
7112 printf("%d\n", (int)sizeof(double));
7117 if eval $compile_ok; then
7119 $echo " $doublesize bytes." >&4
7122 echo "(I can't seem to compile the test program. Guessing...)"
7123 rp="What is the size of a double precision number (in bytes)?"
7131 : check for long doubles
7133 $echo $n "Checking to see if your system supports long double..." $c >&4
7134 echo 'int main() { long double x = 7.0; }' > try.c
7136 if eval $compile; then
7138 echo " Yes, it does." >&4
7141 echo " No, it doesn't." >&4
7147 : check for length of long double
7148 case "${d_longdbl}${longdblsize}" in
7151 $echo $n "Checking to see how big your long doubles are..." $c >&4
7152 $cat >try.c <<'EOCP'
7156 printf("%d\n", sizeof(long double));
7161 if eval $compile; then
7162 longdblsize=`./try$exe_ext`
7163 $echo " $longdblsize bytes." >&4
7167 echo "(I can't seem to compile the test program. Guessing...)" >&4
7168 rp="What is the size of a long double (in bytes)?"
7172 if $test "X$doublesize" = "X$longdblsize"; then
7173 echo "(That isn't any different from an ordinary double.)"
7179 : Check how to convert floats to strings.
7180 if test "X$d_Gconvert" = X; then
7182 echo "Checking for an efficient way to convert floats to strings."
7185 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7186 char *myname = "gconvert";
7189 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7190 char *myname = "gcvt";
7193 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7194 char *myname = "qgcvt";
7195 #define DOUBLETYPE long double
7198 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7199 char *myname = "sprintf";
7203 #define DOUBLETYPE double
7208 #define I_STDLIB $i_stdlib
7214 checkit(expect, got)
7218 if (strcmp(expect, got)) {
7219 printf("%s oddity: Expected %s, got %s\n",
7220 myname, expect, got);
7230 /* This must be 1st test on (which?) platform */
7231 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7232 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7233 checkit("0.1", buf);
7235 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7238 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7241 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7244 /* Some Linux gcvt's give 1.e+5 here. */
7245 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7246 checkit("100000", buf);
7248 /* Some Linux gcvt's give -1.e+5 here. */
7249 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7250 checkit("-100000", buf);
7255 case "$d_Gconvert" in
7256 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7257 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7258 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7259 *) xxx_list='gconvert gcvt sprintf' ;;
7262 case "$d_longdbl$uselongdouble" in
7263 definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7266 for xxx_convert in $xxx_list; do
7267 echo "Trying $xxx_convert..."
7269 set try -DTRY_$xxx_convert
7270 if eval $compile; then
7271 echo "$xxx_convert() found." >&4
7273 echo "I'll use $xxx_convert to convert floats into a string." >&4
7276 echo "...But $xxx_convert didn't work as I expected."
7279 echo "$xxx_convert NOT found." >&4
7283 case "$xxx_convert" in
7284 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7285 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7286 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7287 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7293 if $test X"$d_longdbl" = X"$define"; then
7295 echo "Checking how to print long doubles..." >&4
7297 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7298 $cat >try.c <<'EOCP'
7299 #include <sys/types.h>
7303 printf("%.3f\n", d);
7307 if eval $compile; then
7311 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7312 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7313 echo "We will use %f."
7319 if $test X"$sPRIfldbl" = X; then
7320 $cat >try.c <<'EOCP'
7321 #include <sys/types.h>
7324 long double d = 123.456;
7325 printf("%.3llf\n", d);
7329 if eval $compile; then
7333 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7334 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7335 echo "We will use %llf."
7341 if $test X"$sPRIfldbl" = X; then
7342 $cat >try.c <<'EOCP'
7343 #include <sys/types.h>
7346 long double d = 123.456;
7347 printf("%.3Lf\n", d);
7351 if eval $compile; then
7355 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7356 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7357 echo "We will use %Lf."
7363 if $test X"$sPRIfldbl" = X; then
7364 $cat >try.c <<'EOCP'
7365 #include <sys/types.h>
7368 long double d = 123.456;
7369 printf("%.3lf\n", d);
7373 if eval $compile; then
7377 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7378 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7379 echo "We will use %lf."
7385 if $test X"$sPRIfldbl" = X; then
7386 echo "Cannot figure out how to print long doubles." >&4
7393 case "$sPRIfldbl" in
7394 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7395 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7397 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7398 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7402 : Initialize h_fcntl
7405 : Initialize h_sysfile
7408 : access call always available on UNIX
7412 : locate the flags for 'access()'
7416 $cat >access.c <<'EOCP'
7417 #include <sys/types.h>
7422 #include <sys/file.h>
7431 : check sys/file.h first, no particular reason here
7432 if $test `./findhdr sys/file.h` && \
7433 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7435 echo "<sys/file.h> defines the *_OK access constants." >&4
7436 elif $test `./findhdr fcntl.h` && \
7437 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7439 echo "<fcntl.h> defines the *_OK access constants." >&4
7440 elif $test `./findhdr unistd.h` && \
7441 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7442 echo "<unistd.h> defines the *_OK access constants." >&4
7444 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7450 : see if accessx exists
7451 set accessx d_accessx
7454 : see if alarm exists
7458 : see if atolf exists
7462 : see if atoll exists
7466 : Look for GNU-cc style attribute checking
7468 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7469 $cat >attrib.c <<'EOCP'
7471 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7473 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7474 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7475 echo "Your C compiler doesn't fully support __attribute__."
7478 echo "Your C compiler supports __attribute__."
7482 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7489 : see if bcmp exists
7493 : see if bcopy exists
7497 : see if this is a unistd.h system
7498 set unistd.h i_unistd
7501 : see if getpgrp exists
7502 set getpgrp d_getpgrp
7505 case "$d_getpgrp" in
7508 echo "Checking to see which flavor of getpgrp is in use..."
7511 #include <sys/types.h>
7513 # include <unistd.h>
7517 if (getuid() == 0) {
7518 printf("(I see you are running Configure as super-user...)\n");
7522 if (getpgrp(1) == 0)
7531 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7532 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7534 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7535 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7538 echo "I can't seem to compile and run the test program."
7540 xxx="a USG one, i.e. you use getpgrp()."
7542 # SVR4 systems can appear rather BSD-ish.
7545 xxx="a BSD one, i.e. you use getpgrp(pid)."
7549 xxx="probably a USG one, i.e. you use getpgrp()."
7554 echo "Assuming your getpgrp is $xxx" >&4
7563 : see if setpgrp exists
7564 set setpgrp d_setpgrp
7567 case "$d_setpgrp" in
7570 echo "Checking to see which flavor of setpgrp is in use..."
7573 #include <sys/types.h>
7575 # include <unistd.h>
7579 if (getuid() == 0) {
7580 printf("(I see you are running Configure as super-user...)\n");
7584 if (-1 == setpgrp(1, 1))
7587 if (setpgrp() != -1)
7593 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7594 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7596 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7597 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7600 echo "(I can't seem to compile and run the test program.)"
7602 xxx="a USG one, i.e. you use setpgrp()."
7604 # SVR4 systems can appear rather BSD-ish.
7607 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7611 xxx="probably a USG one, i.e. you use setpgrp()."
7616 echo "Assuming your setpgrp is $xxx" >&4
7624 : see if bzero exists
7628 : see if signal is declared as pointer to function returning int or void
7630 xxx=`./findhdr signal.h`
7631 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7632 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7633 echo "You have int (*signal())() instead of void." >&4
7635 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7636 echo "You have void (*signal())()." >&4
7638 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7639 echo "You have int (*signal())() instead of void." >&4
7641 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7642 echo "You have void (*signal())()." >&4
7645 case "$d_voidsig" in
7647 echo "I can't determine whether signal handler returns void or int..." >&4
7649 rp="What type does your signal handler return?"
7656 echo "As you already told me, signal handler returns void." >&4
7659 *) echo "As you already told me, signal handler returns int." >&4
7666 case "$d_voidsig" in
7667 "$define") signal_t="void";;
7672 : check for ability to cast large floats to 32-bit ints.
7674 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7675 if $test "$intsize" -ge 4; then
7682 #include <sys/types.h>
7684 $signal_t blech(s) int s; { exit(3); }
7691 signal(SIGFPE, blech);
7693 /* Don't let compiler optimize the test away. Store the number
7694 in a writable string for gcc to pass to sscanf under HP/UX.
7696 sprintf(str, "2147483647");
7697 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7701 /* x86 processors will probably give 0x8000 0000, which is a
7702 sign change. We don't want that. We want to mimic SPARC
7703 behavior here, which is to preserve the sign and give
7706 if (i32 != ($xxx) f)
7712 if eval $compile_ok; then
7716 echo "(I can't seem to compile the test program--assuming it can't)"
7724 echo "Nope, it can't."
7731 : check for ability to cast negative floats to unsigned
7733 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7736 #include <sys/types.h>
7738 $signal_t blech(s) int s; { exit(7); }
7739 $signal_t blech_in_list(s) int s; { exit(4); }
7740 unsigned long dummy_long(p) unsigned long p; { return p; }
7741 unsigned int dummy_int(p) unsigned int p; { return p; }
7742 unsigned short dummy_short(p) unsigned short p; { return p; }
7746 unsigned long along;
7748 unsigned short ashort;
7752 /* Frustrate gcc-2.7.2's optimizer which failed this test with
7753 a direct f = -123. assignment. gcc-2.8.0 reportedly
7754 optimized the whole file away
7756 /* Store the number in a writable string for gcc to pass to
7759 sprintf(str, "-123");
7760 sscanf(str, "%lf", &f); /* f = -123.; */
7762 signal(SIGFPE, blech);
7763 along = (unsigned long)f;
7764 aint = (unsigned int)f;
7765 ashort = (unsigned short)f;
7766 if (along != (unsigned long)-123)
7768 if (aint != (unsigned int)-123)
7770 if (ashort != (unsigned short)-123)
7772 sprintf(str, "1073741824.");
7773 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7776 along = (unsigned long)f;
7777 if (along != 0x80000000)
7781 along = (unsigned long)f;
7782 if (along != 0x7fffffff)
7786 along = (unsigned long)f;
7787 if (along != 0x80000001)
7791 signal(SIGFPE, blech_in_list);
7792 sprintf(str, "123.");
7793 sscanf(str, "%lf", &f); /* f = 123.; */
7794 along = dummy_long((unsigned long)f);
7795 aint = dummy_int((unsigned int)f);
7796 ashort = dummy_short((unsigned short)f);
7797 if (along != (unsigned long)123)
7799 if (aint != (unsigned int)123)
7801 if (ashort != (unsigned short)123)
7808 if eval $compile_ok; then
7812 echo "(I can't seem to compile the test program--assuming it can't)"
7815 case "$castflags" in
7820 echo "Nope, it can't."
7827 : see if vprintf exists
7829 if set vprintf val -f d_vprintf; eval $csym; $val; then
7830 echo 'vprintf() found.' >&4
7832 $cat >vprintf.c <<'EOF'
7833 #include <varargs.h>
7835 int main() { xxx("foo"); }
7844 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7848 if eval $compile && ./vprintf; then
7849 echo "Your vsprintf() returns (int)." >&4
7852 echo "Your vsprintf() returns (char*)." >&4
7856 echo 'vprintf() NOT found.' >&4
7866 : see if chown exists
7870 : see if chroot exists
7874 : see if chsize exists
7878 : check for const keyword
7880 echo 'Checking to see if your C compiler knows about "const"...' >&4
7881 $cat >const.c <<'EOCP'
7882 typedef struct spug { int drokk; } spug;
7889 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7891 echo "Yup, it does."
7894 echo "Nope, it doesn't."
7899 : see if crypt exists
7901 if set crypt val -f d_crypt; eval $csym; $val; then
7902 echo 'crypt() found.' >&4
7906 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7907 if $test -z "$cryptlib"; then
7908 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7912 if $test -z "$cryptlib"; then
7913 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7917 if $test -z "$cryptlib"; then
7918 cryptlib=`./loc libcrypt$_a "" $libpth`
7922 if $test -z "$cryptlib"; then
7923 echo 'crypt() NOT found.' >&4
7932 : get csh whereabouts
7934 'csh') val="$undef" ;;
7939 : Respect a hint or command line value for full_csh.
7941 '') full_csh=$csh ;;
7944 : see if cuserid exists
7945 set cuserid d_cuserid
7948 : see if this is a limits.h system
7949 set limits.h i_limits
7952 : see if this is a float.h system
7956 : See if number of significant digits in a double precision number is known
7958 $cat >dbl_dig.c <<EOM
7968 printf("Contains DBL_DIG");
7971 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7972 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7973 echo "DBL_DIG found." >&4
7976 echo "DBL_DIG NOT found." >&4
7983 : see if difftime exists
7984 set difftime d_difftime
7987 : see if this is a dirent system
7989 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
7991 echo "<dirent.h> found." >&4
7994 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
7995 echo "<sys/dir.h> found." >&4
7998 xinc=`./findhdr sys/ndir.h`
8000 echo "<dirent.h> NOT found." >&4
8005 : Look for type of directory structure.
8007 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8009 case "$direntrytype" in
8012 $define) guess1='struct dirent' ;;
8013 *) guess1='struct direct' ;;
8016 *) guess1="$direntrytype"
8021 'struct dirent') guess2='struct direct' ;;
8022 *) guess2='struct dirent' ;;
8025 if $contains "$guess1" try.c >/dev/null 2>&1; then
8026 direntrytype="$guess1"
8027 echo "Your directory entries are $direntrytype." >&4
8028 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8029 direntrytype="$guess2"
8030 echo "Your directory entries seem to be $direntrytype." >&4
8032 echo "I don't recognize your system's directory entries." >&4
8033 rp="What type is used for directory entries on this system?"
8041 : see if the directory entry stores field length
8043 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8044 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8045 echo "Good, your directory entry keeps length information in d_namlen." >&4
8048 echo "Your directory entry does not know about the d_namlen field." >&4
8055 : see if dlerror exists
8058 set dlerror d_dlerror
8062 : see if dlfcn is available
8070 On a few systems, the dynamically loaded modules that perl generates and uses
8071 will need a different extension than shared libs. The default will probably
8079 rp='What is the extension of dynamically loaded modules'
8088 : Check if dlsym need a leading underscore
8094 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8095 $cat >dyna.c <<'EOM'
8104 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8106 #include <sys/types.h>
8120 int mode = RTLD_LAZY ;
8122 handle = dlopen("./dyna.$dlext", mode) ;
8123 if (handle == NULL) {
8128 symbol = dlsym(handle, "fred") ;
8129 if (symbol == NULL) {
8130 /* try putting a leading underscore */
8131 symbol = dlsym(handle, "_fred") ;
8132 if (symbol == NULL) {
8145 : Call the object file tmp-dyna.o in case dlext=o.
8146 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8147 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8148 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
8149 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8152 1) echo "Test program failed using dlopen." >&4
8153 echo "Perhaps you should not use dynamic loading." >&4;;
8154 2) echo "Test program failed using dlsym." >&4
8155 echo "Perhaps you should not use dynamic loading." >&4;;
8156 3) echo "dlsym needs a leading underscore" >&4
8158 4) echo "dlsym doesn't need a leading underscore." >&4;;
8161 echo "I can't compile and run the test program." >&4
8162 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8167 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8172 hasproto='varname=$1; func=$2; shift; shift;
8173 while $test $# -ge 2; do
8175 $define) echo "#include <$2>";;
8179 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8180 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8181 echo "$func() prototype found.";
8184 echo "$func() prototype NOT found.";
8189 $rm -f try.c tryout.c'
8191 : see if prototype for drand48 is available
8193 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8196 : see if dup2 exists
8200 : see if eaccess exists
8201 set eaccess d_eaccess
8204 : see if endgrent exists
8205 set endgrent d_endgrent
8208 : see if endhostent exists
8209 set endhostent d_endhent
8212 : see if endnetent exists
8213 set endnetent d_endnent
8216 : see if endprotoent exists
8217 set endprotoent d_endpent
8220 : see if endpwent exists
8221 set endpwent d_endpwent
8224 : see if endservent exists
8225 set endservent d_endsent
8228 : see if endspent exists
8229 set endspent d_endspent
8232 : Locate the flags for 'open()'
8234 $cat >open3.c <<'EOCP'
8235 #include <sys/types.h>
8240 #include <sys/file.h>
8251 : check sys/file.h first to get FREAD on Sun
8252 if $test `./findhdr sys/file.h` && \
8253 set open3 -DI_SYS_FILE && eval $compile; then
8255 echo "<sys/file.h> defines the O_* constants..." >&4
8257 echo "and you have the 3 argument form of open()." >&4
8260 echo "but not the 3 argument form of open(). Oh, well." >&4
8263 elif $test `./findhdr fcntl.h` && \
8264 set open3 -DI_FCNTL && eval $compile; then
8266 echo "<fcntl.h> defines the O_* constants..." >&4
8268 echo "and you have the 3 argument form of open()." >&4
8271 echo "but not the 3 argument form of open(). Oh, well." >&4
8276 echo "I can't find the O_* constant definitions! You got problems." >&4
8282 : see which of string.h or strings.h is needed
8284 strings=`./findhdr string.h`
8285 if $test "$strings" && $test -r "$strings"; then
8286 echo "Using <string.h> instead of <strings.h>." >&4
8290 strings=`./findhdr strings.h`
8291 if $test "$strings" && $test -r "$strings"; then
8292 echo "Using <strings.h> instead of <string.h>." >&4
8294 echo "No string header found -- You'll surely have problems." >&4
8300 "$undef") strings=`./findhdr strings.h`;;
8301 *) strings=`./findhdr string.h`;;
8304 : check for non-blocking I/O stuff
8305 case "$h_sysfile" in
8306 true) echo "#include <sys/file.h>" > head.c;;
8309 true) echo "#include <fcntl.h>" > head.c;;
8310 *) echo "#include <sys/fcntl.h>" > head.c;;
8315 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8316 case "$o_nonblock" in
8319 $cat >>try.c <<'EOCP'
8323 printf("O_NONBLOCK\n");
8327 printf("O_NDELAY\n");
8331 printf("FNDELAY\n");
8338 if eval $compile_ok; then
8340 case "$o_nonblock" in
8341 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8342 *) echo "Seems like we can use $o_nonblock.";;
8345 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8348 *) echo "Using $hint value $o_nonblock.";;
8350 $rm -f try try.* .out core
8353 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8359 #include <sys/types.h>
8362 #define MY_O_NONBLOCK $o_nonblock
8363 #ifndef errno /* XXX need better Configure test */
8373 #include <strings.h>
8375 $signal_t blech(x) int x; { exit(3); }
8377 $cat >> try.c <<'EOCP'
8385 pipe(pd); /* Down: child -> parent */
8386 pipe(pu); /* Up: parent -> child */
8389 close(pd[1]); /* Parent reads from pd[0] */
8390 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8391 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8393 signal(SIGALRM, blech);
8395 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8397 sprintf(string, "%d\n", ret);
8398 write(2, string, strlen(string));
8401 if (errno == EAGAIN) {
8407 if (errno == EWOULDBLOCK)
8408 printf("EWOULDBLOCK\n");
8411 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8412 sleep(2); /* Give it time to close our pipe */
8414 ret = read(pd[0], buf, 1); /* Should read EOF */
8416 sprintf(string, "%d\n", ret);
8417 write(3, string, strlen(string));
8421 close(pd[0]); /* We write to pd[1] */
8422 close(pu[1]); /* We read from pu[0] */
8423 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8424 close(pd[1]); /* Pipe pd is now fully closed! */
8425 exit(0); /* Bye bye, thank you for playing! */
8429 if eval $compile_ok; then
8430 echo "$startsh" >mtry
8431 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8433 ./mtry >/dev/null 2>&1
8435 0) eagain=`$cat try.out`;;
8436 1) echo "Could not perform non-blocking setting!";;
8437 2) echo "I did a successful read() for something that was not there!";;
8438 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8439 *) echo "Something terribly wrong happened during testing.";;
8441 rd_nodata=`$cat try.ret`
8442 echo "A read() system call with no data present returns $rd_nodata."
8443 case "$rd_nodata" in
8446 echo "(That's peculiar, fixing that to be -1.)"
8452 echo "Forcing errno EAGAIN on read() with no data available."
8456 echo "Your read() sets errno to $eagain when no data is available."
8459 status=`$cat try.err`
8461 0) echo "And it correctly returns 0 to signal EOF.";;
8462 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8463 *) echo "However, your read() returns '$status' on EOF??";;
8466 if test "$status" = "$rd_nodata"; then
8467 echo "WARNING: you can't distinguish between EOF and no data!"
8471 echo "I can't compile the test program--assuming errno EAGAIN will do."
8478 echo "Using $hint value $eagain."
8479 echo "Your read() returns $rd_nodata when no data is present."
8480 case "$d_eofnblk" in
8481 "$define") echo "And you can see EOF because read() returns 0.";;
8482 "$undef") echo "But you can't see EOF status from read() returned value.";;
8484 echo "(Assuming you can't see EOF status from read anyway.)"
8490 $rm -f try try.* .out core head.c mtry
8492 : see if fchmod exists
8496 : see if fchown exists
8500 : see if this is an fcntl system
8504 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8505 while $test $# -ge 2; do
8507 $define) echo "#include <$2>";;
8511 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8513 if eval $compile; then
8524 : see whether socket exists
8526 $echo $n "Hmm... $c" >&4
8527 if set socket val -f d_socket; eval $csym; $val; then
8528 echo "Looks like you have Berkeley networking support." >&4
8530 if set setsockopt val -f; eval $csym; $val; then
8533 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8537 if $contains socklib libc.list >/dev/null 2>&1; then
8538 echo "Looks like you have Berkeley networking support." >&4
8540 : we will have to assume that it supports the 4.2 BSD interface
8543 echo "You don't have Berkeley networking in libc$_a..." >&4
8544 if test "X$d_socket" = "X$define"; then
8545 echo "...but you seem to believe that you have sockets." >&4
8547 for net in net socket
8549 if test -f /usr/lib/lib$net$_a; then
8550 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8551 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8552 if $contains socket libc.list >/dev/null 2>&1; then
8557 echo "...but the Wollongong group seems to have hacked it in." >&4
8558 sockethdr="-I/usr/netinclude"
8561 echo "Found Berkeley sockets interface in lib$net." >& 4
8562 if $contains setsockopt libc.list >/dev/null 2>&1; then
8565 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8572 if test "X$d_socket" != "X$define"; then
8573 echo "or anywhere else I see." >&4
8581 : see if socketpair exists
8582 set socketpair d_sockpair
8587 echo "Checking the availability of certain socket constants..." >& 4
8588 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8589 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8591 #include <sys/types.h>
8592 #include <sys/socket.h>
8598 set try; if eval $compile; then
8601 set d_${enum}; eval $setvar
8605 : see if sys/select.h has to be included
8606 set sys/select.h i_sysselct
8609 : see if we should include time.h, sys/time.h, or both
8611 if test "X$timeincl" = X; then
8612 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8613 $echo $n "I'm now running the test program...$c"
8614 $cat >try.c <<'EOCP'
8615 #include <sys/types.h>
8620 #ifdef SYSTIMEKERNEL
8623 #include <sys/time.h>
8626 #include <sys/select.h>
8635 struct timezone tzp;
8637 if (foo.tm_sec == foo.tm_sec)
8640 if (bar.tv_sec == bar.tv_sec)
8647 for s_timezone in '-DS_TIMEZONE' ''; do
8649 for s_timeval in '-DS_TIMEVAL' ''; do
8650 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8651 for i_time in '' '-DI_TIME'; do
8652 for i_systime in '-DI_SYSTIME' ''; do
8655 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8656 if eval $compile; then
8657 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8661 $echo $n "Succeeded with $flags$c"
8673 *SYSTIMEKERNEL*) i_systimek="$define"
8674 timeincl=`./findhdr sys/time.h`
8675 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8676 *) i_systimek="$undef";;
8679 *I_TIME*) i_time="$define"
8680 timeincl=`./findhdr time.h`" $timeincl"
8681 echo "We'll include <time.h>." >&4;;
8682 *) i_time="$undef";;
8685 *I_SYSTIME*) i_systime="$define"
8686 timeincl=`./findhdr sys/time.h`" $timeincl"
8687 echo "We'll include <sys/time.h>." >&4;;
8688 *) i_systime="$undef";;
8693 : check for fd_set items
8696 Checking to see how well your C compiler handles fd_set and friends ...
8698 $cat >fd_set.c <<EOCP
8699 #$i_systime I_SYS_TIME
8700 #$i_sysselct I_SYS_SELECT
8701 #$d_socket HAS_SOCKET
8702 #include <sys/types.h>
8704 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8707 #include <sys/time.h>
8710 #include <sys/select.h>
8719 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8726 set fd_set -DTRYBITS
8727 if eval $compile; then
8728 d_fds_bits="$define"
8730 echo "Well, your system knows about the normal fd_set typedef..." >&4
8732 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8733 d_fd_macros="$define"
8736 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8738 d_fd_macros="$undef"
8742 Hmm, your compiler has some difficulty with fd_set. Checking further...
8745 if eval $compile; then
8748 echo "Well, your system has some sort of fd_set available..." >&4
8750 echo "and you have the normal fd_set macros." >&4
8751 d_fd_macros="$define"
8754 but not the normal fd_set macros! Gross! More work for me...
8756 d_fd_macros="$undef"
8759 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8762 d_fd_macros="$undef"
8767 : see if fgetpos exists
8768 set fgetpos d_fgetpos
8771 : see if flock exists
8775 : see if fork exists
8779 : see if pathconf exists
8780 set pathconf d_pathconf
8783 : see if fpathconf exists
8784 set fpathconf d_fpathconf
8790 echo "Checking to see if your system supports off64_t..." >&4
8792 #include <sys/types.h>
8794 int main() { off64_t x = 7; }'
8797 if eval $compile; then
8799 echo "Yes, it does."
8802 echo "No, it doesn't."
8803 case "$lseeksize" in
8804 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8811 : check for fpos64_t
8813 echo "Checking to see if your system supports fpos64_t..." >&4
8815 #include <sys/stdio.h>
8816 int main() { fpos64_t x x = 7; }'
8819 if eval $compile; then
8821 echo "Yes, it does."
8824 echo "No, it doesn't."
8826 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8833 hasstruct='varname=$1; struct=$2; shift; shift;
8834 while $test $# -ge 2; do
8836 $define) echo "#include <$2>";;
8840 echo "int main () { struct $struct foo; }" >> try.c;
8842 if eval $compile; then
8851 : see if this is a sys/param system
8852 set sys/param.h i_sysparam
8855 : see if this is a sys/mount.h system
8856 set sys/mount.h i_sysmount
8859 : see if sys/types.h has to be included
8860 set sys/types.h i_systypes
8865 echo "Checking to see if your system supports struct fs_data..." >&4
8866 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8868 case "$d_fs_data_s" in
8869 "$define") echo "Yes, it does." ;;
8870 *) echo "No, it doesn't." ;;
8873 : see if fseeko exists
8877 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
8880 : see if fsetpos exists
8881 set fsetpos d_fsetpos
8885 : see if fstatfs exists
8886 set fstatfs d_fstatfs
8890 : see if statvfs exists
8891 set statvfs d_statvfs
8894 : see if fstatvfs exists
8895 set fstatvfs d_fstatvfs
8899 : see if ftello exists
8903 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
8906 : see if getcwd exists
8910 : see if getgrent exists
8911 set getgrent d_getgrent
8914 : see if gethostbyaddr exists
8915 set gethostbyaddr d_gethbyaddr
8918 : see if gethostbyname exists
8919 set gethostbyname d_gethbyname
8922 : see if gethostent exists
8923 set gethostent d_gethent
8926 : see how we will look up host name
8929 if set gethostname val -f d_gethname; eval $csym; $val; then
8930 echo 'gethostname() found.' >&4
8931 d_gethname="$define"
8934 if set uname val -f d_uname; eval $csym; $val; then
8937 uname() was found, but you're running xenix, and older versions of xenix
8938 have a broken uname(). If you don't really know whether your xenix is old
8939 enough to have a broken system call, use the default answer.
8946 rp='Is your uname() broken?'
8949 n*) d_uname="$define"; call=uname;;
8952 echo 'uname() found.' >&4
8959 case "$d_gethname" in
8960 '') d_gethname="$undef";;
8963 '') d_uname="$undef";;
8965 case "$d_uname$d_gethname" in
8970 Every now and then someone has a $call() that lies about the hostname
8971 but can't be fixed for political or economic reasons. If you wish, I can
8972 pretend $call() isn't there and maybe compute hostname at run-time
8973 thanks to the '$phostname' command.
8976 rp="Shall I ignore $call() from now on?"
8979 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
8982 case "$phostname" in
8984 *) case "$aphostname" in
8990 file=`./loc $file $file $pth`
8991 aphostname=`echo $file $*`
8996 case "$d_uname$d_gethname" in
8999 case "$phostname" in
9001 echo "There will be no way for $package to get your hostname." >&4;;
9003 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9007 case "$d_phostname" in
9008 '') d_phostname="$undef";;
9011 : see if this is a netdb.h system
9015 : see if prototypes for various gethostxxx netdb.h functions are available
9017 set d_gethostprotos gethostent $i_netdb netdb.h
9020 : see if getlogin exists
9021 set getlogin d_getlogin
9024 : see if getmnt exists
9028 : see if getmntent exists
9029 set getmntent d_getmntent
9032 : see if getnetbyaddr exists
9033 set getnetbyaddr d_getnbyaddr
9036 : see if getnetbyname exists
9037 set getnetbyname d_getnbyname
9040 : see if getnetent exists
9041 set getnetent d_getnent
9044 : see if prototypes for various getnetxxx netdb.h functions are available
9046 set d_getnetprotos getnetent $i_netdb netdb.h
9050 : see if getprotobyname exists
9051 set getprotobyname d_getpbyname
9054 : see if getprotobynumber exists
9055 set getprotobynumber d_getpbynumber
9058 : see if getprotoent exists
9059 set getprotoent d_getpent
9062 : see if getpgid exists
9063 set getpgid d_getpgid
9066 : see if getpgrp2 exists
9067 set getpgrp2 d_getpgrp2
9070 : see if getppid exists
9071 set getppid d_getppid
9074 : see if getpriority exists
9075 set getpriority d_getprior
9078 : see if prototypes for various getprotoxxx netdb.h functions are available
9080 set d_getprotoprotos getprotoent $i_netdb netdb.h
9083 : see if getpwent exists
9084 set getpwent d_getpwent
9088 : see if getservbyname exists
9089 set getservbyname d_getsbyname
9092 : see if getservbyport exists
9093 set getservbyport d_getsbyport
9096 : see if getservent exists
9097 set getservent d_getsent
9100 : see if prototypes for various getservxxx netdb.h functions are available
9102 set d_getservprotos getservent $i_netdb netdb.h
9105 : see if getspent exists
9106 set getspent d_getspent
9109 : see if getspnam exists
9110 set getspnam d_getspnam
9113 : see if gettimeofday or ftime exists
9114 set gettimeofday d_gettimeod
9116 case "$d_gettimeod" in
9122 val="$undef"; set d_ftime; eval $setvar
9125 case "$d_gettimeod$d_ftime" in
9128 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9132 : see if this is an grp system
9138 xxx=`./findhdr grp.h`
9139 $cppstdin $cppflags $cppminus < $xxx >$$.h
9141 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9153 set d_grpasswd; eval $setvar
9157 : see if hasmntopt exists
9158 set hasmntopt d_hasmntopt
9161 : see if this is a netinet/in.h or sys/in.h system
9162 set netinet/in.h i_niin sys/in.h i_sysin
9165 : see if arpa/inet.h has to be included
9166 set arpa/inet.h i_arpainet
9169 : see if htonl --and friends-- exists
9174 : Maybe they are macros.
9179 #include <sys/types.h>
9180 #$i_niin I_NETINET_IN
9182 #$i_arpainet I_ARPA_INET
9184 #include <netinet/in.h>
9190 #include <arpa/inet.h>
9193 printf("Defined as a macro.");
9196 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9197 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9199 echo "But it seems to be defined as a macro." >&4
9207 : see if iconv exists
9213 if set index val -f; eval $csym; $val; then
9214 if set strchr val -f d_strchr; eval $csym; $val; then
9215 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9218 echo "strchr() found." >&4
9222 echo "index() found." >&4
9227 echo "index() found." >&4
9230 if set strchr val -f d_strchr; eval $csym; $val; then
9233 echo "strchr() found." >&4
9235 echo "No index() or strchr() found!" >&4
9240 set d_strchr; eval $setvar
9242 set d_index; eval $setvar
9244 : check whether inet_aton exists
9245 set inet_aton d_inetaton
9248 : see if inttypes.h is available
9249 : we want a real compile instead of Inhdr because some systems
9250 : have an inttypes.h which includes non-existent headers
9253 #include <inttypes.h>
9255 static int32_t foo32 = 0x12345678;
9259 if eval $compile; then
9260 echo "<inttypes.h> found." >&4
9263 echo "<inttypes.h> NOT found." >&4
9272 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9274 #include <sys/types.h>
9275 #$i_inttypes I_INTTYPES
9277 #include <inttypes.h>
9279 int main() { int64_t x = 7; }
9282 if eval $compile; then
9284 echo " Yes, it does." >&4
9287 echo " No, it doesn't." >&4
9295 $cat >isascii.c <<'EOCP'
9307 if eval $compile; then
9308 echo "isascii() found." >&4
9311 echo "isascii() NOT found." >&4
9318 : see if killpg exists
9322 : see if lchown exists
9324 $cat > try.c <<'EOCP'
9325 /* System header to define __stub macros and hopefully few prototypes,
9326 which can conflict with char lchown(); below. */
9328 /* Override any gcc2 internal prototype to avoid an error. */
9329 /* We use char because int might match the return type of a gcc2
9330 builtin and then its argument prototype would still apply. */
9333 /* The GNU C library defines this for functions which it implements
9334 to always fail with ENOSYS. Some functions are actually named
9335 something starting with __ and the normal name is an alias. */
9336 #if defined (__stub_lchown) || defined (__stub___lchown)
9344 if eval $compile; then
9345 $echo "lchown() found." >&4
9348 $echo "lchown() NOT found." >&4
9354 : See if number of significant digits in a double precision number is known
9356 $cat >ldbl_dig.c <<EOM
9366 printf("Contains LDBL_DIG");
9369 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9370 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9371 echo "LDBL_DIG found." >&4
9374 echo "LDBL_DIG NOT found." >&4
9381 : see if link exists
9385 : see if localeconv exists
9386 set localeconv d_locconv
9389 : see if lockf exists
9393 : check for long long
9395 $echo $n "Checking to see if your system supports long long..." $c >&4
9396 echo 'int main() { long long x = 7; return 0; }' > try.c
9398 if eval $compile; then
9400 echo " Yes, it does." >&4
9403 echo " No, it doesn't." >&4
9409 : check for length of long long
9410 case "${d_longlong}${longlongsize}" in
9413 $echo $n "Checking to see how big your long longs are..." $c >&4
9414 $cat >try.c <<'EOCP'
9418 printf("%d\n", (int)sizeof(long long));
9423 if eval $compile_ok; then
9424 longlongsize=`./try$exe_ext`
9425 $echo " $longlongsize bytes." >&4
9429 echo "(I can't seem to compile the test program. Guessing...)"
9430 rp="What is the size of a long long (in bytes)?"
9434 if $test "X$longsize" = "X$longlongsize"; then
9435 echo "(That isn't any different from an ordinary long.)"
9441 : see if lstat exists
9445 : see if mblen exists
9449 : see if mbstowcs exists
9450 set mbstowcs d_mbstowcs
9453 : see if mbtowc exists
9457 : see if memchr exists
9461 : see if memcmp exists
9465 : see if memcpy exists
9469 : see if memmove exists
9470 set memmove d_memmove
9473 : see if memset exists
9477 : see if mkdir exists
9481 : see if mkdtemp exists
9482 set mkdtemp d_mkdtemp
9485 : see if mkfifo exists
9489 : see if mkstemp exists
9490 set mkstemp d_mkstemp
9493 : see if mkstemps exists
9494 set mkstemps d_mkstemps
9497 : see if mktime exists
9501 : see if mprotect exists
9502 set mprotect d_mprotect
9505 : see if msgctl exists
9509 : see if msgget exists
9513 : see if msgsnd exists
9517 : see if msgrcv exists
9521 : see how much of the 'msg*(2)' library is present.
9524 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9525 *"$undef"*) h_msg=false;;
9529 case "`ipcs 2>&1`" in
9530 "SVID messages"*"not configured"*)
9531 echo "Your $osname does not have the msg*(2) configured." >&4
9546 : we could also check for sys/ipc.h ...
9547 if $h_msg && $test `./findhdr sys/msg.h`; then
9548 echo "You have the full msg*(2) library." >&4
9551 echo "You don't have the full msg*(2) library." >&4
9557 : see if msync exists
9561 : see if munmap exists
9565 : see if nice exists
9571 echo "Checking which 64-bit integer type we could use..." >&4
9577 val='"unsigned int"'
9582 *) case "$longsize" in
9586 val='"unsigned long"'
9591 *) case "$d_longlong:$longlongsize" in
9596 val='"unsigned long long"'
9601 *) case "$d_int64t" in
9620 '') echo "Alas, no 64-bit integer types in sight." >&4
9623 *) if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9628 echo "We $verb use '$quadtype' for 64-bit integers." >&4
9633 : check for length of character
9637 echo "Checking to see how big your characters are (hey, you never know)..." >&4
9638 $cat >try.c <<'EOCP'
9642 printf("%d\n", (int)sizeof(char));
9647 if eval $compile_ok; then
9651 echo "(I can't seem to compile the test program. Guessing...)"
9658 rp="What is the size of a character (in bytes)?"
9665 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9667 case "$use64bits:$d_quad:$quadtype" in
9675 uvtype="unsigned long"
9681 case "$uselongdouble:$d_longdbl" in
9683 nvtype="long double"
9691 $echo "(IV will be "$ivtype", $ivsize bytes)"
9692 $echo "(UV will be "$uvtype", $uvsize bytes)"
9693 $echo "(NV will be "$nvtype", $nvsize bytes)"
9696 #$i_inttypes I_INTTYPES
9698 #include <inttypes.h>
9703 int8_t i = INT8_MAX;
9704 uint8_t u = UINT8_MAX;
9708 int16_t i = INT16_MAX;
9709 uint16_t i = UINT16_MAX;
9710 printf("int16_t\n");
9713 int32_t i = INT32_MAX;
9714 uint32_t u = UINT32_MAX;
9715 printf("int32_t\n");
9721 '') case "$charsize" in
9723 u8type="unsigned char"
9732 if eval $compile; then
9733 case "`./try$exe_ext`" in
9734 int8_t) i8type=int8_t
9744 '') if $test $charsize -ge 1; then
9746 u8type="unsigned char"
9754 '') case "$shortsize" in
9756 u16type="unsigned short"
9765 if eval $compile; then
9766 case "`./try$exe_ext`" in
9778 '') if $test $shortsize -ge 2; then
9780 u16type="unsigned short"
9788 '') case "$longsize" in
9790 u32type="unsigned long"
9794 *) case "$intsize" in
9796 u32type="unsigned int"
9807 if eval $compile; then
9808 case "`./try$exe_ext`" in
9820 '') if $test $intsize -ge 4; then
9822 u32type="unsigned int"
9830 '') case "$d_quad:$quadtype" in
9833 u64type="$uquadtype"
9841 $echo "Checking whether your NVs can preserve your UVs..." >&4
9845 $uvtype k = ($uvtype)~0, l;
9851 printf("preserve\n");
9856 if eval $compile; then
9857 case "`./try$exe_ext`" in
9858 preserve) d_nv_preserves_uv="$define" ;;
9861 case "$d_nv_preserves_uv" in
9862 $define) $echo "Yes, they can." 2>&1 ;;
9863 *) $echo "No, they can't." 2>&1
9864 d_nv_preserves_uv="$undef"
9870 : see if POSIX threads are available
9871 set pthread.h i_pthread
9877 : how to create joinable pthreads
9878 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9880 echo "Checking what constant to use for creating joinable pthreads..." >&4
9881 $cat >try.c <<'EOCP'
9882 #include <pthread.h>
9884 int detachstate = JOINABLE;
9887 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9888 if eval $compile; then
9889 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9890 val="$undef" # Yes, undef.
9891 set d_old_pthread_create_joinable
9894 set old_pthread_create_joinable
9897 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9898 if eval $compile; then
9899 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9901 set d_old_pthread_create_joinable
9903 val=PTHREAD_CREATE_UNDETACHED
9904 set old_pthread_create_joinable
9907 set try -DJOINABLE=__UNDETACHED
9908 if eval $compile; then
9909 echo "You seem to use __UNDETACHED." >&4
9911 set d_old_pthread_create_joinable
9914 set old_pthread_create_joinable
9917 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
9919 set d_old_pthread_create_joinable
9922 set old_pthread_create_joinable
9929 d_old_pthread_create_joinable="$undef"
9930 old_pthread_create_joinable=""
9933 : see if pause exists
9937 : see if pipe exists
9941 : see if poll exists
9946 : see whether the various POSIXish _yields exist
9948 #include <pthread.h>
9954 #ifdef PTHREAD_YIELD
9957 #ifdef PTHREAD_YIELD_NULL
9958 pthread_yield(NULL);
9964 : see if sched_yield exists
9965 set try -DSCHED_YIELD
9966 if eval $compile; then
9968 sched_yield='sched_yield()'
9972 case "$usethreads" in
9975 $define) echo 'sched_yield() found.' >&4 ;;
9976 *) echo 'sched_yield() NOT found.' >&4 ;;
9982 : see if pthread_yield exists
9983 set try -DPTHREAD_YIELD
9984 if eval $compile; then
9986 case "$sched_yield" in
9987 '') sched_yield='pthread_yield()' ;;
9990 set try -DPTHREAD_YIELD_NULL
9991 if eval $compile; then
9993 case "$sched_yield" in
9994 '') sched_yield='pthread_yield(NULL)' ;;
10000 case "$usethreads" in
10003 $define) echo 'pthread_yield() found.' >&4 ;;
10004 *) echo 'pthread_yield() NOT found.' >&4 ;;
10008 set d_pthread_yield
10011 case "$sched_yield" in
10012 '') sched_yield=undef ;;
10017 : see if this is a pwd.h system
10023 xxx=`./findhdr pwd.h`
10024 $cppstdin $cppflags $cppminus < $xxx >$$.h
10026 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10034 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10042 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10050 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10058 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10066 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10074 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10082 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10094 set d_pwquota; eval $setvar
10095 set d_pwage; eval $setvar
10096 set d_pwchange; eval $setvar
10097 set d_pwclass; eval $setvar
10098 set d_pwexpire; eval $setvar
10099 set d_pwcomment; eval $setvar
10100 set d_pwgecos; eval $setvar
10101 set d_pwpasswd; eval $setvar
10105 : see if readdir and friends exist
10106 set readdir d_readdir
10108 set seekdir d_seekdir
10110 set telldir d_telldir
10112 set rewinddir d_rewinddir
10115 : see if readlink exists
10116 set readlink d_readlink
10119 : see if rename exists
10120 set rename d_rename
10123 : see if rmdir exists
10127 : see if memory.h is available.
10132 : See if it conflicts with string.h
10138 $cppstdin $cppflags $cppminus < $strings > mem.h
10139 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10141 echo "We won't be including <memory.h>."
10151 : can bcopy handle overlapping blocks?
10156 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10158 #$i_memory I_MEMORY
10159 #$i_stdlib I_STDLIB
10160 #$i_string I_STRING
10161 #$i_unistd I_UNISTD
10163 $cat >>try.c <<'EOCP'
10166 # include <memory.h>
10169 # include <stdlib.h>
10172 # include <string.h>
10174 # include <strings.h>
10177 # include <unistd.h> /* Needed for NetBSD */
10181 char buf[128], abc[128];
10187 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10189 for (align = 7; align >= 0; align--) {
10190 for (len = 36; len; len--) {
10192 bcopy(abc, b, len);
10193 for (off = 1; off <= len; off++) {
10194 bcopy(b, b+off, len);
10195 bcopy(b+off, b, len);
10196 if (bcmp(b, abc, len))
10205 if eval $compile_ok; then
10206 if ./try 2>/dev/null; then
10207 echo "Yes, it can."
10210 echo "It can't, sorry."
10211 case "$d_memmove" in
10212 "$define") echo "But that's Ok since you have memmove()." ;;
10216 echo "(I can't compile the test program, so we'll assume not...)"
10217 case "$d_memmove" in
10218 "$define") echo "But that's Ok since you have memmove()." ;;
10223 $rm -f try.* try core
10227 : can memcpy handle overlapping blocks?
10229 case "$d_memcpy" in
10232 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10234 #$i_memory I_MEMORY
10235 #$i_stdlib I_STDLIB
10236 #$i_string I_STRING
10237 #$i_unistd I_UNISTD
10239 $cat >>try.c <<'EOCP'
10242 # include <memory.h>
10245 # include <stdlib.h>
10248 # include <string.h>
10250 # include <strings.h>
10253 # include <unistd.h> /* Needed for NetBSD */
10257 char buf[128], abc[128];
10263 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10264 try to store the string in read-only memory. */
10265 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10267 for (align = 7; align >= 0; align--) {
10268 for (len = 36; len; len--) {
10270 memcpy(b, abc, len);
10271 for (off = 1; off <= len; off++) {
10272 memcpy(b+off, b, len);
10273 memcpy(b, b+off, len);
10274 if (memcmp(b, abc, len))
10283 if eval $compile_ok; then
10284 if ./try 2>/dev/null; then
10285 echo "Yes, it can."
10288 echo "It can't, sorry."
10289 case "$d_memmove" in
10290 "$define") echo "But that's Ok since you have memmove()." ;;
10294 echo "(I can't compile the test program, so we'll assume not...)"
10295 case "$d_memmove" in
10296 "$define") echo "But that's Ok since you have memmove()." ;;
10301 $rm -f try.* try core
10305 : can memcmp be trusted to compare relative magnitude?
10307 case "$d_memcmp" in
10310 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10312 #$i_memory I_MEMORY
10313 #$i_stdlib I_STDLIB
10314 #$i_string I_STRING
10315 #$i_unistd I_UNISTD
10317 $cat >>try.c <<'EOCP'
10320 # include <memory.h>
10323 # include <stdlib.h>
10326 # include <string.h>
10328 # include <strings.h>
10331 # include <unistd.h> /* Needed for NetBSD */
10337 if ((a < b) && memcmp(&a, &b, 1) < 0)
10343 if eval $compile_ok; then
10344 if ./try 2>/dev/null; then
10345 echo "Yes, it can."
10348 echo "No, it can't (it uses signed chars)."
10351 echo "(I can't compile the test program, so we'll assume not...)"
10355 $rm -f try.* try core
10359 : see if select exists
10360 set select d_select
10363 : see if semctl exists
10364 set semctl d_semctl
10367 : see if semget exists
10368 set semget d_semget
10371 : see if semop exists
10375 : see how much of the 'sem*(2)' library is present.
10378 case "$d_semctl$d_semget$d_semop" in
10379 *"$undef"*) h_sem=false;;
10383 case "`ipcs 2>&1`" in
10384 "SVID messages"*"not configured"*)
10385 echo "Your $osname does not have the sem*(2) configured." >&4
10388 set semctl d_semctl
10390 set semget d_semget
10398 : we could also check for sys/ipc.h ...
10399 if $h_sem && $test `./findhdr sys/sem.h`; then
10400 echo "You have the full sem*(2) library." >&4
10403 echo "You don't have the full sem*(2) library." >&4
10409 : see whether sys/sem.h defines union semun
10411 $cat > try.c <<'END'
10412 #include <sys/types.h>
10413 #include <sys/ipc.h>
10414 #include <sys/sem.h>
10415 int main () { union semun semun; semun.buf = 0; }
10418 if eval $compile; then
10419 echo "You have union semun in <sys/sem.h>." >&4
10422 echo "You do not have union semun in <sys/sem.h>." >&4
10425 $rm -f try try.c try.h
10429 : see how to do semctl IPC_STAT
10432 : see whether semctl IPC_STAT can use union semun
10437 # define S_IRUSR S_IREAD
10438 # define S_IWUSR S_IWRITE
10439 # define S_IXUSR S_IEXEC
10441 # define S_IRUSR 0400
10442 # define S_IWUSR 0200
10443 # define S_IXUSR 0100
10445 # define S_IRGRP (S_IRUSR>>3)
10446 # define S_IWGRP (S_IWUSR>>3)
10447 # define S_IXGRP (S_IXUSR>>3)
10448 # define S_IROTH (S_IRUSR>>6)
10449 # define S_IWOTH (S_IWUSR>>6)
10450 # define S_IXOTH (S_IXUSR>>6)
10453 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10454 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10455 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10460 #include <sys/types.h>
10461 #include <sys/ipc.h>
10462 #include <sys/sem.h>
10463 #include <sys/stat.h>
10470 #$d_union_semun HAS_UNION_SEMUN
10473 #ifndef HAS_UNION_SEMUN
10476 struct semid_ds *buf;
10477 unsigned short *array;
10483 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10484 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10486 struct semid_ds argbuf;
10489 st = semctl(sem, 0, IPC_STAT, arg);
10493 # endif /* IPC_STAT */
10494 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10496 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10497 # endif /* IPC_RMID */
10498 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10500 #endif /* IPC_PRIVATE && ... */
10501 printf("semget failed: errno = %d\n", errno);
10507 if eval $compile; then
10510 semun) val="$define" ;;
10516 case "$d_semctl_semun" in
10518 echo "You can use union semun for semctl IPC_STAT." >&4
10521 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10526 : see whether semctl IPC_STAT can use struct semid_ds pointer
10527 $cat > try.c <<'END'
10528 #include <sys/types.h>
10529 #include <sys/ipc.h>
10530 #include <sys/sem.h>
10531 #include <sys/stat.h>
10539 struct semid_ds arg;
10542 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10543 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10546 st = semctl(sem, 0, IPC_STAT, &arg);
10548 printf("semid_ds\n");
10550 # endif /* IPC_STAT */
10551 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10553 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10554 # endif /* IPC_RMID */
10555 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10557 #endif /* IPC_PRIVATE && ... */
10558 printf("semget failed: errno = %d\n", errno);
10565 if eval $compile; then
10568 semid_ds) val="$define" ;;
10572 set d_semctl_semid_ds
10574 case "$d_semctl_semid_ds" in
10576 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10578 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10585 # We do not have the full sem*(2) library, so assume we can not
10591 set d_semctl_semid_ds
10596 : see if setegid exists
10597 set setegid d_setegid
10600 : see if seteuid exists
10601 set seteuid d_seteuid
10604 : see if setgrent exists
10605 set setgrent d_setgrent
10608 : see if sethostent exists
10609 set sethostent d_sethent
10612 : see if setlinebuf exists
10613 set setlinebuf d_setlinebuf
10616 : see if setlocale exists
10617 set setlocale d_setlocale
10620 : see if setnetent exists
10621 set setnetent d_setnent
10624 : see if setprotoent exists
10625 set setprotoent d_setpent
10628 : see if setpgid exists
10629 set setpgid d_setpgid
10632 : see if setpgrp2 exists
10633 set setpgrp2 d_setpgrp2
10636 : see if setpriority exists
10637 set setpriority d_setprior
10640 : see if setpwent exists
10641 set setpwent d_setpwent
10644 : see if setregid exists
10645 set setregid d_setregid
10647 set setresgid d_setresgid
10650 : see if setreuid exists
10651 set setreuid d_setreuid
10653 set setresuid d_setresuid
10656 : see if setrgid exists
10657 set setrgid d_setrgid
10660 : see if setruid exists
10661 set setruid d_setruid
10664 : see if setservent exists
10665 set setservent d_setsent
10668 : see if setsid exists
10669 set setsid d_setsid
10672 : see if setspent exists
10673 set setspent d_setspent
10676 : see if setvbuf exists
10677 set setvbuf d_setvbuf
10680 : see if sfio.h is available
10685 : see if sfio library is available
10696 : Ok, but do we want to use it.
10700 true|$define|[yY]*) dflt='y';;
10703 echo "$package can use the sfio library, but it is experimental."
10704 rp="You seem to have sfio available, do you want to try using it?"
10708 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
10710 : Remove sfio from list of libraries to use
10711 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10714 echo "libs = $libs" >&4
10718 *) case "$usesfio" in
10719 true|$define|[yY]*)
10720 echo "Sorry, cannot find sfio on this machine" >&4
10721 echo "Ignoring your setting of usesfio=$usesfio" >&4
10729 $define) usesfio='true';;
10730 *) usesfio='false';;
10733 : see if shmctl exists
10734 set shmctl d_shmctl
10737 : see if shmget exists
10738 set shmget d_shmget
10741 : see if shmat exists
10744 : see what shmat returns
10747 $cat >shmat.c <<'END'
10748 #include <sys/shm.h>
10751 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10756 echo "and it returns ($shmattype)." >&4
10757 : see if a prototype for shmat is available
10758 xxx=`./findhdr sys/shm.h`
10759 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10760 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10771 set d_shmatprototype
10774 : see if shmdt exists
10778 : see how much of the 'shm*(2)' library is present.
10781 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10782 *"$undef"*) h_shm=false;;
10786 case "`ipcs 2>&1`" in
10787 "SVID shared memory"*"not configured"*)
10788 echo "Your $osname does not have the shm*(2) configured." >&4
10791 set shmctl d_shmctl
10793 set shmget d_shmget
10803 : we could also check for sys/ipc.h ...
10804 if $h_shm && $test `./findhdr sys/shm.h`; then
10805 echo "You have the full shm*(2) library." >&4
10808 echo "You don't have the full shm*(2) library." >&4
10815 : see if we have sigaction
10816 if set sigaction val -f d_sigaction; eval $csym; $val; then
10817 echo 'sigaction() found.' >&4
10818 $cat > try.c <<'EOP'
10820 #include <sys/types.h>
10821 #include <signal.h>
10824 struct sigaction act, oact;
10826 oact.sa_handler = 0;
10827 /* so that act and oact are used */
10828 exit(act.sa_flags == 0 && oact.sa_handler == 0);
10832 if eval $compile_ok; then
10835 echo "But you don't seem to have a useable struct sigaction." >&4
10839 echo 'sigaction NOT found.' >&4
10842 set d_sigaction; eval $setvar
10843 $rm -f try try$_o try.c
10845 : see if sigsetjmp exists
10847 case "$d_sigsetjmp" in
10849 $cat >try.c <<'EOP'
10850 #include <setjmp.h>
10855 if (sigsetjmp(env,1))
10858 siglongjmp(env, 1);
10863 if eval $compile; then
10864 if ./try >/dev/null 2>&1; then
10865 echo "POSIX sigsetjmp found." >&4
10869 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10875 echo "sigsetjmp not found." >&4
10879 *) val="$d_sigsetjmp"
10880 case "$d_sigsetjmp" in
10881 $define) echo "POSIX sigsetjmp found." >&4;;
10882 $undef) echo "sigsetjmp not found." >&4;;
10890 : see if sys/stat.h is available
10891 set sys/stat.h i_sysstat
10895 : see if stat knows about block sizes
10897 echo "Checking to see if your struct stat has st_blocks field..." >&4
10898 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10902 : see if this is a sys/vfs.h system
10903 set sys/vfs.h i_sysvfs
10907 : see if this is a sys/statfs.h system
10908 set sys/statfs.h i_sysstatfs
10913 echo "Checking to see if your system supports struct statfs..." >&4
10914 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
10916 case "$d_statfs_s" in
10917 "$define") echo "Yes, it does." ;;
10918 *) echo "No, it doesn't." ;;
10923 : see if struct statfs knows about f_flags
10924 case "$d_statfs_s" in
10927 echo "Checking to see if your struct statfs has f_flags field..." >&4
10928 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
10932 set d_statfs_f_flags
10936 case "$d_statfs_f_flags" in
10937 "$define") echo "Yes, it does." ;;
10938 *) echo "No, it doesn't." ;;
10941 : see if _ptr and _cnt from stdio act std
10943 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10944 echo "(Looks like you have stdio.h from Linux.)"
10945 case "$stdio_ptr" in
10946 '') stdio_ptr='((fp)->_IO_read_ptr)'
10949 *) ptr_lval=$d_stdio_ptr_lval;;
10951 case "$stdio_cnt" in
10952 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10955 *) cnt_lval=$d_stdio_cnt_lval;;
10957 case "$stdio_base" in
10958 '') stdio_base='((fp)->_IO_read_base)';;
10960 case "$stdio_bufsiz" in
10961 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
10964 case "$stdio_ptr" in
10965 '') stdio_ptr='((fp)->_ptr)'
10968 *) ptr_lval=$d_stdio_ptr_lval;;
10970 case "$stdio_cnt" in
10971 '') stdio_cnt='((fp)->_cnt)'
10974 *) cnt_lval=$d_stdio_cnt_lval;;
10976 case "$stdio_base" in
10977 '') stdio_base='((fp)->_base)';;
10979 case "$stdio_bufsiz" in
10980 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
10983 : test whether _ptr and _cnt really work
10984 echo "Checking how std your stdio is..." >&4
10987 #define FILE_ptr(fp) $stdio_ptr
10988 #define FILE_cnt(fp) $stdio_cnt
10990 FILE *fp = fopen("try.c", "r");
10993 18 <= FILE_cnt(fp) &&
10994 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11002 if eval $compile; then
11004 echo "Your stdio acts pretty std."
11007 echo "Your stdio isn't very std."
11010 echo "Your stdio doesn't appear very std."
11016 : Can _ptr be used as an lvalue?
11017 case "$d_stdstdio$ptr_lval" in
11018 $define$define) val=$define ;;
11021 set d_stdio_ptr_lval
11024 : Can _cnt be used as an lvalue?
11025 case "$d_stdstdio$cnt_lval" in
11026 $define$define) val=$define ;;
11029 set d_stdio_cnt_lval
11032 : see if _base is also standard
11034 case "$d_stdstdio" in
11038 #define FILE_base(fp) $stdio_base
11039 #define FILE_bufsiz(fp) $stdio_bufsiz
11041 FILE *fp = fopen("try.c", "r");
11044 19 <= FILE_bufsiz(fp) &&
11045 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11052 if eval $compile; then
11054 echo "And its _base field acts std."
11057 echo "But its _base field isn't std."
11060 echo "However, it seems to be lacking the _base field."
11069 Checking how to access stdio streams by file descriptor number...
11071 case "$stdio_stream_array" in
11072 '') $cat >try.c <<EOCP
11075 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11079 for s in _iob __iob __sF
11081 set try -DSTDIO_STREAM_ARRAY=$s
11082 if eval $compile; then
11083 case "`./try$exe_ext`" in
11084 yes) stdio_stream_array=$s; break ;;
11088 $rm -f try.* try$exe_ext
11090 case "$stdio_stream_array" in
11092 I can't figure out how to access stdio streams by file descriptor number.
11094 d_stdio_stream_array="$undef"
11097 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11099 d_stdio_stream_array="$define"
11103 : see if strcoll exists
11104 set strcoll d_strcoll
11107 : check for structure copying
11109 echo "Checking to see if your C compiler can copy structs..." >&4
11110 $cat >try.c <<'EOCP'
11120 if $cc -c try.c >/dev/null 2>&1 ; then
11122 echo "Yup, it can."
11125 echo "Nope, it can't."
11131 : see if strerror and/or sys_errlist[] exist
11133 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11134 if set strerror val -f d_strerror; eval $csym; $val; then
11135 echo 'strerror() found.' >&4
11136 d_strerror="$define"
11137 d_strerrm='strerror(e)'
11138 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11139 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11140 d_syserrlst="$define"
11142 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11143 d_syserrlst="$undef"
11145 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11146 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11147 echo 'strerror() found in string header.' >&4
11148 d_strerror="$define"
11149 d_strerrm='strerror(e)'
11150 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11151 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11152 d_syserrlst="$define"
11154 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11155 d_syserrlst="$undef"
11157 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11158 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11159 d_strerror="$undef"
11160 d_syserrlst="$define"
11161 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11163 echo 'strerror() and sys_errlist[] NOT found.' >&4
11164 d_strerror="$undef"
11165 d_syserrlst="$undef"
11166 d_strerrm='"unknown"'
11170 : see if strtod exists
11171 set strtod d_strtod
11174 : see if strtol exists
11175 set strtol d_strtol
11178 : see if strtold exists
11179 set strtold d_strtold
11182 : see if strtoll exists
11183 set strtoll d_strtoll
11186 : see if strtoul exists
11187 set strtoul d_strtoul
11190 : see if strtoull exists
11191 set strtoull d_strtoull
11194 : see if strtouq exists
11195 set strtouq d_strtouq
11198 : see if strxfrm exists
11199 set strxfrm d_strxfrm
11202 : see if symlink exists
11203 set symlink d_symlink
11206 : see if syscall exists
11207 set syscall d_syscall
11210 : see if sysconf exists
11211 set sysconf d_sysconf
11214 : see if system exists
11215 set system d_system
11218 : see if tcgetpgrp exists
11219 set tcgetpgrp d_tcgetpgrp
11222 : see if tcsetpgrp exists
11223 set tcsetpgrp d_tcsetpgrp
11226 : see if prototype for telldir is available
11228 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11231 : see if this is a sys/times.h system
11232 set sys/times.h i_systimes
11235 : see if times exists
11237 if set times val -f d_times; eval $csym; $val; then
11238 echo 'times() found.' >&4
11241 case "$i_systimes" in
11242 "$define") inc='sys/times.h';;
11244 rp="What is the type returned by times() on this system?"
11245 set clock_t clocktype long stdio.h sys/types.h $inc
11248 echo 'times() NOT found, hope that will do.' >&4
11253 : see if truncate exists
11254 set truncate d_truncate
11257 : see if tzname[] exists
11259 if set tzname val -a d_tzname; eval $csym; $val; then
11261 echo 'tzname[] found.' >&4
11264 echo 'tzname[] NOT found.' >&4
11269 : see if umask exists
11273 : see if ustat exists
11277 : backward compatibility for d_hvfork
11278 if test X$d_hvfork != X; then
11279 d_vfork="$d_hvfork"
11282 : see if there is a vfork
11287 : Ok, but do we want to use it. vfork is reportedly unreliable in
11288 : perl on Solaris 2.x, and probably elsewhere.
11292 case "$usevfork" in
11298 Perl can only use a vfork() that doesn't suffer from strict
11299 restrictions on calling functions or modifying global data in
11300 the child. For example, glibc-2.1 contains such a vfork()
11301 that is unsuitable. If your system provides a proper fork()
11302 call, chances are that you do NOT want perl to use vfork().
11305 rp="Do you still want to use vfork()?"
11310 echo "Ok, we won't use vfork()."
11319 $define) usevfork='true';;
11320 *) usevfork='false';;
11323 : see if this is an sysdir system
11324 set sys/dir.h i_sysdir
11327 : see if this is an sysndir system
11328 set sys/ndir.h i_sysndir
11331 : see if closedir exists
11332 set closedir d_closedir
11335 case "$d_closedir" in
11338 echo "Checking whether closedir() returns a status..." >&4
11339 cat > closedir.c <<EOM
11340 #$i_dirent I_DIRENT /**/
11341 #$i_sysdir I_SYS_DIR /**/
11342 #$i_sysndir I_SYS_NDIR /**/
11343 #$i_systypes I_SYS_TYPES /**/
11345 #if defined(I_SYS_TYPES)
11346 #include <sys/types.h>
11348 #if defined(I_DIRENT)
11349 #include <dirent.h>
11350 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11351 #include <sys/dir.h>
11355 #include <sys/ndir.h>
11359 #include <ndir.h> /* may be wrong in the future */
11361 #include <sys/dir.h>
11366 int main() { return closedir(opendir(".")); }
11369 if eval $compile_ok; then
11370 if ./closedir > /dev/null 2>&1 ; then
11371 echo "Yes, it does."
11374 echo "No, it doesn't."
11378 echo "(I can't seem to compile the test program--assuming it doesn't)"
11386 set d_void_closedir
11389 : check for volatile keyword
11391 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11392 $cat >try.c <<'EOCP'
11395 typedef struct _goo_struct goo_struct;
11396 goo_struct * volatile goo = ((goo_struct *)0);
11397 struct _goo_struct {
11402 typedef unsigned short foo_t;
11403 char *volatile foo;
11405 volatile foo_t blech;
11409 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11411 echo "Yup, it does."
11414 echo "Nope, it doesn't."
11420 : see if there is a wait4
11424 : see if waitpid exists
11425 set waitpid d_waitpid
11428 : see if wcstombs exists
11429 set wcstombs d_wcstombs
11432 : see if wctomb exists
11433 set wctomb d_wctomb
11436 : preserve RCS keywords in files with variable substitution, grrr
11441 Revision='$Revision'
11443 case "$crosscompile" in
11444 ''|[nN]*) crosscompile="$undef" ;;
11448 next|rhapsody) multiarch="$define" ;;
11450 case "$multiarch" in
11451 ''|[nN]*) multiarch="$undef" ;;
11454 : check for alignment requirements
11456 case "$crosscompile$multiarch" in
11459 You seem to be either cross-compiling or doing a multiarchitecture build,
11460 skipping the memory alignment check.
11463 case "$alignbytes" in
11464 '') alignbytes=8 ;;
11468 case "$alignbytes" in
11469 '') echo "Checking alignment constraints..." >&4
11470 $cat >try.c <<'EOCP'
11478 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11483 if eval $compile_ok; then
11487 echo "(I can't seem to compile the test program...)"
11490 *) dflt="$alignbytes"
11493 rp="Doubles must be aligned on a how-many-byte boundary?"
11501 : check for ordering of bytes in a long
11503 case "$crosscompile$multiarch" in
11506 You seem to be either cross-compiling or doing a multiarchitecture build,
11507 skipping the byteorder check.
11513 case "$byteorder" in
11516 In the following, larger digits indicate more significance. A big-endian
11517 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11518 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11519 machines may have weird orders like 3412. A Cray will report 87654321,
11520 an Alpha will report 12345678. If the test program works the default is
11522 I'm now running the test program...
11524 $cat >try.c <<'EOCP'
11531 char c[sizeof(long)];
11534 if (sizeof(long) > 4)
11535 u.l = (0x08070605L << 32) | 0x04030201L;
11538 for (i = 0; i < sizeof(long); i++)
11539 printf("%c", u.c[i]+'0');
11546 if eval $compile && ./try > /dev/null; then
11549 [1-4][1-4][1-4][1-4]|12345678|87654321)
11550 echo "(The test program ran ok.)"
11551 echo "byteorder=$dflt"
11554 ????|????????) echo "(The test program ran ok.)" ;;
11555 *) echo "(The test program didn't run right for some reason.)" ;;
11560 (I can't seem to compile the test program. Guessing big-endian...)
11563 case "$xxx_prompt" in
11565 rp="What is the order of bytes in a long?"
11579 : how do we catenate cpp tokens here?
11581 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11582 $cat >cpp_stuff.c <<'EOCP'
11583 #define RCAT(a,b)a/**/b
11584 #define ACAT(a,b)a ## b
11588 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11589 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11590 echo "Oh! Smells like ANSI's been here." >&4
11591 echo "We can catify or stringify, separately or together!"
11593 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11594 echo "Ah, yes! The good old days!" >&4
11595 echo "However, in the good old days we don't know how to stringify and"
11596 echo "catify at the same time."
11600 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
11601 to have to edit the values of CAT[2-5] in config.h...
11603 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11607 : see if this is a db.h system
11613 : Check db version.
11615 echo "Checking Berkeley DB version ..." >&4
11621 #include <sys/types.h>
11626 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11627 int Major, Minor, Patch ;
11628 unsigned long Version ;
11629 (void)db_version(&Major, &Minor, &Patch) ;
11630 printf("You have Berkeley DB Version 2 or greater\n");
11632 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11633 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11634 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11635 Major, Minor, Patch) ;
11637 /* check that db.h & libdb are compatible */
11638 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11639 printf("db.h and libdb are incompatible\n") ;
11643 printf("db.h and libdb are compatible\n") ;
11645 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11646 + DB_VERSION_PATCH ;
11648 /* needs to be >= 2.3.4 */
11649 if (Version < 2003004) {
11650 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11651 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11657 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11658 printf("You have Berkeley DB Version 1\n");
11659 exit(0); /* DB version < 2: the coast is clear. */
11661 exit(1); /* <db.h> not Berkeley DB? */
11667 if eval $compile_ok && ./try; then
11668 echo 'Looks OK.' >&4
11670 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
11674 : Remove db from list of libraries to use
11675 echo "Removing unusable -ldb from library list" >&4
11676 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11679 echo "libs = $libs" >&4
11689 : Check the return type needed for hash
11691 echo "Checking return type needed for hash for Berkeley DB ..." >&4
11697 #include <sys/types.h>
11700 #ifndef DB_VERSION_MAJOR
11701 u_int32_t hash_cb (ptr, size)
11709 info.hash = hash_cb;
11713 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11714 if $contains warning try.out >>/dev/null 2>&1 ; then
11717 db_hashtype='u_int32_t'
11720 : XXX Maybe we should just give up here.
11721 db_hashtype=u_int32_t
11723 echo "Help: I can't seem to compile the db test program." >&4
11724 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11727 echo "Your version of Berkeley DB uses $db_hashtype for hash."
11729 *) db_hashtype=u_int32_t
11734 : Check the return type needed for prefix
11736 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11742 #include <sys/types.h>
11745 #ifndef DB_VERSION_MAJOR
11746 size_t prefix_cb (key1, key2)
11754 info.prefix = prefix_cb;
11758 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11759 if $contains warning try.out >>/dev/null 2>&1 ; then
11760 db_prefixtype='int'
11762 db_prefixtype='size_t'
11765 db_prefixtype='size_t'
11766 : XXX Maybe we should just give up here.
11768 echo "Help: I can't seem to compile the db test program." >&4
11769 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11772 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11774 *) db_prefixtype='size_t'
11778 : check for void type
11780 echo "Checking to see how well your C compiler groks the void type..." >&4
11781 case "$voidflags" in
11783 $cat >try.c <<'EOCP'
11789 extern void moo(); /* function returning void */
11790 void (*goo)(); /* ptr to func returning void */
11792 void *hue; /* generic ptr */
11805 int main() { sub(); }
11807 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11808 voidflags=$defvoidused
11809 echo "Good. It appears to support void to the level $package wants.">&4
11810 if $contains warning .out >/dev/null 2>&1; then
11811 echo "However, you might get some warnings that look like this:"
11815 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11816 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11817 echo "It supports 1..."
11818 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11819 echo "It also supports 2..."
11820 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11822 echo "And it supports 4 but not 8 definitely."
11824 echo "It doesn't support 4..."
11825 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11827 echo "But it supports 8."
11830 echo "Neither does it support 8."
11834 echo "It does not support 2..."
11835 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11837 echo "But it supports 4 and 8."
11839 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11841 echo "And it supports 4 but has not heard about 8."
11843 echo "However it supports 8 but not 4."
11848 echo "There is no support at all for void."
11853 case "$voidflags" in
11855 *) $cat >&4 <<'EOM'
11856 Support flag bits are:
11857 1: basic void declarations.
11858 2: arrays of pointers to functions returning void.
11859 4: operations between pointers to and addresses of void functions.
11860 8: generic void pointers.
11863 rp="Your void support flags add up to what?"
11871 : How can we generate normalized random numbers ?
11873 echo "Looking for a random number function..." >&4
11874 case "$randfunc" in
11876 if set drand48 val -f; eval $csym; $val; then
11878 echo "Good, found drand48()." >&4
11879 elif set random val -f; eval $csym; $val; then
11881 echo "OK, found random()." >&4
11884 echo "Yick, looks like I have to use rand()." >&4
11895 *-Dmy_rand=*|*-Dmy_srand=*)
11896 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11897 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11898 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11899 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11903 while $test "$cont"; do
11904 rp="Use which function to generate random numbers?"
11906 if $test "$ans" = "$dflt"; then
11912 if set $ans val -f; eval $csym; $val; then
11916 rp="I cannot find function $ans. Use that name anyway?"
11925 case "$randfunc" in
11927 drand01="drand48()"
11933 case "$randbits" in
11935 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11937 #$i_unistd I_UNISTD
11938 #$i_stdlib I_STDLIB
11941 # include <unistd.h>
11944 # include <stdlib.h>
11949 register unsigned long tmp;
11950 register unsigned long max = 0L;
11952 for (i = 1000; i; i--) {
11953 tmp = (unsigned long) $randfunc();
11954 if (tmp > max) max = tmp;
11956 for (i = 0; max; i++)
11962 if eval $compile_ok; then
11966 echo "(I can't seem to compile the test program...)"
11973 rp="How many bits does your $randfunc() function produce?"
11977 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11978 seedfunc="s$randfunc"
11979 randseedtype=unsigned
11983 rp="How many bits does your $randfunc() function produce?"
11986 seedfunc="s$randfunc"
11987 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11988 if set $seedfunc val -f; eval $csym; $val; then
11989 echo "(Using $seedfunc() to seed random generator)"
11991 echo "(Warning: no $seedfunc() to seed random generator)"
11994 randseedtype=unsigned
12002 echo "Determining whether or not we are on an EBCDIC system..." >&4
12003 $cat >tebcdic.c <<'EOM'
12006 if ('M'==0xd4) return 0;
12013 if eval $compile_ok; then
12015 echo "You have EBCDIC." >&4
12018 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12021 echo "I'm unable to compile the test program." >&4
12022 echo "I'll assume ASCII or some ISO Latin." >&4
12024 $rm -f tebcdic.c tebcdic
12030 Checking how to flush all pending stdio output...
12032 # I only know how to find the first 32 possibly open files on SunOS.
12033 # See also hints/sunos_4_1.sh and util.c --AD
12035 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12037 $cat >>try.c <<EOCP
12039 #$i_unistd I_UNISTD
12041 # include <unistd.h>
12043 #$d_sysconf HAS_SYSCONF
12044 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12045 #ifdef HAS_STDIO_STREAM_ARRAY
12046 # define STDIO_STREAM_ARRAY $stdio_stream_array
12049 FILE* p = fopen("try.out", "w");
12053 # ifdef TRY_FPRINTF
12057 #ifdef TRY_FFLUSH_NULL
12060 #ifdef TRY_FFLUSH_ALL
12062 long open_max = -1;
12063 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12064 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12066 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12067 open_max = sysconf(_SC_OPEN_MAX);
12070 open_max = FOPEN_MAX;
12073 open_max = OPEN_MAX;
12082 # ifdef HAS_STDIO_STREAM_ARRAY
12083 if (open_max > 0) {
12085 for (i = 0; i < open_max; i++)
12086 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12087 STDIO_STREAM_ARRAY[i]._file < open_max &&
12088 STDIO_STREAM_ARRAY[i]._flag)
12089 fflush(&STDIO_STREAM_ARRAY[i]);
12097 : first we have to find out how _not_ to flush
12098 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12100 set try -DTRY_FPUTC
12101 if eval $compile; then
12103 ./try$exe_ext 2>/dev/null
12104 if $test ! -s try.out -a "X$?" = X42; then
12110 set try -DTRY_FPRINTF
12112 if eval $compile; then
12114 ./try$exe_ext 2>/dev/null
12115 if $test ! -s try.out -a "X$?" = X42; then
12116 output=-DTRY_FPRINTF
12122 : check for fflush NULL behaviour
12123 case "$fflushNULL" in
12124 '') set try -DTRY_FFLUSH_NULL $output
12125 if eval $compile; then
12127 ./try$exe_ext 2>/dev/null
12129 if $test -s try.out -a "X$code" = X42; then
12130 fflushNULL="`$cat try.out`"
12132 if $test "X$code" != X42; then
12134 (If this test failed, don't worry, we'll try another method shortly.)
12139 $rm -f core try.core core.try.*
12140 case "$fflushNULL" in
12142 Your fflush(NULL) works okay.
12144 fflushNULL="$define"
12147 Your fflush(NULL) isn't working (contrary to ANSI C).
12149 fflushNULL="$undef"
12152 Cannot figure out whether your fflush(NULL) works or not.
12153 I'm assuming it doesn't (contrary to ANSI C).
12155 fflushNULL="$undef"
12159 $define|true|[yY]*)
12160 fflushNULL="$define"
12163 fflushNULL="$undef"
12166 : check explicit looping only if NULL did not work
12167 case "$fflushNULL" in
12169 : check for fflush all behaviour
12170 case "$fflushall" in
12171 '') set try -DTRY_FFLUSH_ALL $output
12172 if eval $compile; then
12174 (Now testing the other method--but note that also this may fail.)
12177 ./try$exe_ext 2>/dev/null
12178 if $test -s try.out -a "X$?" = X42; then
12179 fflushall="`$cat try.out`"
12182 $rm -f core try.core core.try.*
12183 case "$fflushall" in
12185 Whew. Flushing explicitly all the stdio streams works.
12187 fflushall="$define"
12190 Sigh. Flushing explicitly all the stdio streams doesn't work.
12195 Cannot figure out whether flushing stdio streams explicitly works or not.
12196 I'm assuming it doesn't.
12202 "$define"|true|[yY]*)
12203 fflushall="$define"
12210 *) fflushall="$undef"
12213 case "$fflushNULL$fflushall" in
12216 I cannot figure out how to flush pending stdio output.
12220 $rm -f try.* try$exe_ext
12222 : Store the full pathname to the ar program for use in the C program
12223 : Respect a hint or command line value for full_ar.
12228 : Store the full pathname to the sed program for use in the C program
12231 : see what type gids are declared as in the kernel
12233 echo "Looking for the type for group ids returned by getgid()."
12234 set gid_t gidtype xxx stdio.h sys/types.h
12238 xxx=`./findhdr sys/user.h`
12239 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12241 unsigned) dflt="$1 $2" ;;
12245 *) dflt="$gidtype";;
12248 gid_t) echo "gid_t found." ;;
12249 *) rp="What is the type for group ids returned by getgid()?"
12257 *_t) zzz="$gidtype" ;;
12260 echo "Checking the size of $zzz..." >&4
12262 #include <sys/types.h>
12265 printf("%d\n", (int)sizeof($gidtype));
12270 if eval $compile_ok; then
12274 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12277 echo "Your $zzz size is $gidsize bytes."
12282 echo "(I can't compile the test program--guessing $gidsize.)" >&4
12288 *_t) zzz="$gidtype" ;;
12291 echo "Checking the sign of $zzz..." >&4
12293 #include <sys/types.h>
12304 if eval $compile; then
12308 echo "(I can't execute the test program--guessing unsigned.)" >&4
12312 1) echo "Your $zzz is unsigned." ;;
12313 -1) echo "Your $zzz is signed." ;;
12319 echo "(I can't compile the test program--guessing unsigned.)" >&4
12325 if $test X"$quadtype" != X; then
12327 echo "Checking how to print 64-bit integers..." >&4
12329 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12330 $cat >try.c <<'EOCP'
12331 #include <sys/types.h>
12334 int q = 12345678901;
12335 printf("%ld\n", q);
12339 if eval $compile; then
12340 yyy=`./try$exe_ext`
12343 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12344 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12345 echo "We will use %d."
12351 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12352 $cat >try.c <<'EOCP'
12353 #include <sys/types.h>
12356 long q = 12345678901;
12357 printf("%ld\n", q);
12361 if eval $compile; then
12362 yyy=`./try$exe_ext`
12365 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12366 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12367 echo "We will use %ld."
12373 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12374 $cat >try.c <<'EOCP'
12375 #include <sys/types.h>
12376 #include <inttypes.h>
12379 int64_t q = 12345678901;
12380 printf("%" PRId64 "\n", q);
12384 if eval $compile; then
12385 yyy=`./try$exe_ext`
12388 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12389 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12390 echo "We will use the C9X style."
12396 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12397 $cat >try.c <<'EOCP'
12398 #include <sys/types.h>
12401 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12402 printf("%lld\n", q);
12406 if eval $compile; then
12407 yyy=`./try$exe_ext`
12410 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12411 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12412 echo "We will use the %lld style."
12418 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12420 #include <sys/types.h>
12423 $quadtype q = 12345678901;
12424 printf("%Ld\n", q);
12428 if eval $compile; then
12429 yyy=`./try$exe_ext`
12432 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12433 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12434 echo "We will use %Ld."
12440 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12442 #include <sys/types.h>
12445 $quadtype q = 12345678901;
12446 printf("%qd\n", q);
12450 if eval $compile; then
12451 yyy=`./try$exe_ext`
12454 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12455 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12456 echo "We will use %qd."
12462 if $test X"$sPRId64" = X; then
12463 echo "Cannot figure out how to print 64-bit integers." >&4
12471 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
12472 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
12474 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
12475 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
12481 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12483 if $test X"$ivsize" = X8; then
12484 ivdformat="$sPRId64"
12485 uvuformat="$sPRIu64"
12486 uvoformat="$sPRIo64"
12487 uvxformat="$sPRIx64"
12489 if $test X"$ivsize" = X"$longsize"; then
12495 if $test X"$ivsize" = X"$intsize"; then
12502 if $test X"$ivsize" = X"$shortsize"; then
12512 case "$ivdformat" in
12513 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12520 $echo "Checking the format string to be used for gids..." >&4
12523 -1) if $test X"$gidsize" = X"$ivsize"; then
12524 gidformat="$ivdformat"
12526 if $test X"$gidsize" = X"$longsize"; then
12529 if $test X"$gidsize" = X"$intsize"; then
12532 if $test X"$gidsize" = X"$shortsize"; then
12539 *) if $test X"$gidsize" = X"$uvsize"; then
12540 gidformat="$uvuformat"
12542 if $test X"$gidsize" = X"$longsize"; then
12545 if $test X"$gidsize" = X"$intsize"; then
12548 if $test X"$gidsize" = X"$shortsize"; then
12557 : see if getgroups exists
12558 set getgroups d_getgrps
12561 : see if setgroups exists
12562 set setgroups d_setgrps
12566 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12568 case "$d_getgrps$d_setgrps" in
12570 case "$groupstype" in
12571 '') dflt="$gidtype" ;;
12572 *) dflt="$groupstype" ;;
12575 What type of pointer is the second argument to getgroups() and setgroups()?
12576 Usually this is the same as group ids, $gidtype, but not always.
12579 rp='What type pointer is the second argument to getgroups() and setgroups()?'
12583 *) groupstype="$gidtype";;
12587 echo "Checking if your $make program sets \$(MAKE)..." >&4
12588 case "$make_set_make" in
12590 $sed 's/^X //' > testmake.mak << 'EOF'
12592 X @echo 'maketemp="$(MAKE)"'
12594 case "`$make -f testmake.mak 2>/dev/null`" in
12595 *maketemp=*) make_set_make='#' ;;
12596 *) make_set_make="MAKE=$make" ;;
12598 $rm -f testmake.mak
12601 case "$make_set_make" in
12602 '#') echo "Yup, it does.";;
12603 *) echo "Nope, it doesn't.";;
12606 : see if this is a sys/mman.h system
12607 set sys/mman.h i_sysmman
12610 : see if mmap exists
12613 : see what shmat returns
12614 : default to something harmless
12616 case "$i_sysmman$d_mmap" in
12618 $cat >mmap.c <<'END'
12619 #include <sys/mman.h>
12622 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
12627 echo "and it returns ($mmaptype)." >&4
12633 : see what type is used for mode_t
12634 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12635 set mode_t modetype int stdio.h sys/types.h
12638 : define a fucntion to check prototypes
12639 $cat > protochk <<EOSH
12642 optimize="$optimize"
12644 prototype="$prototype"
12649 $cat >> protochk <<'EOSH'
12654 while test $# -ge 2; do
12656 $define) echo "#include <$2>" >> try.c ;;
12657 literal) echo "$2" >> try.c ;;
12661 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
12662 cat >> try.c <<'EOCP'
12663 #ifdef CAN_PROTOTYPE
12664 #define _(args) args
12669 echo "$foo" >> try.c
12670 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12671 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12677 $eunicefix protochk
12679 : see what type is used for size_t
12680 rp="What is the type used for the length parameter for string functions?"
12681 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12684 : check for type of arguments to gethostbyaddr.
12685 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12686 case "$d_gethbyaddr" in
12690 Checking to see what type of arguments are accepted by gethostbyaddr().
12692 hdrs="$define sys/types.h
12693 $d_socket sys/socket.h
12694 $i_niin netinet/in.h
12696 $i_unistd unistd.h"
12697 : The first arg can 'char *' or 'void *'
12698 : The second arg is some of integral type
12699 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12700 for yyy in size_t long int; do
12701 case "$netdb_host_type" in
12702 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12703 if ./protochk "$try" $hdrs; then
12704 echo "Your system accepts $xxx for the first arg."
12705 echo "...and $yyy for the second arg."
12706 netdb_host_type="$xxx"
12707 netdb_hlen_type="$yyy"
12713 : In case none of those worked, prompt the user.
12714 case "$netdb_host_type" in
12715 '') rp='What is the type for the 1st argument to gethostbyaddr?'
12718 netdb_host_type=$ans
12719 rp='What is the type for the 2nd argument to gethostbyaddr?'
12722 netdb_hlen_type=$ans
12726 *) : no gethostbyaddr, so pick harmless defaults
12727 netdb_host_type='char *'
12728 netdb_hlen_type="$sizetype"
12731 # Remove the "const" if needed. -- but then we'll have a
12733 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12736 : check for type of argument to gethostbyname.
12737 if test "X$netdb_name_type" = X ; then
12738 case "$d_gethbyname" in
12742 Checking to see what type of argument is accepted by gethostbyname().
12744 hdrs="$define sys/types.h
12745 $d_socket sys/socket.h
12746 $i_niin netinet/in.h
12748 $i_unistd unistd.h"
12749 for xxx in "const char *" "char *"; do
12750 case "$netdb_name_type" in
12751 '') try="extern struct hostent *gethostbyname($xxx);"
12752 if ./protochk "$try" $hdrs; then
12753 echo "Your system accepts $xxx."
12754 netdb_name_type="$xxx"
12759 : In case none of those worked, prompt the user.
12760 case "$netdb_name_type" in
12761 '') rp='What is the type for the 1st argument to gethostbyname?'
12764 netdb_name_type=$ans
12768 *) : no gethostbyname, so pick harmless default
12769 netdb_name_type='char *'
12774 : check for type of 1st argument to getnetbyaddr.
12775 if test "X$netdb_net_type" = X ; then
12776 case "$d_getnbyaddr" in
12780 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12782 hdrs="$define sys/types.h
12783 $d_socket sys/socket.h
12784 $i_niin netinet/in.h
12786 $i_unistd unistd.h"
12787 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12788 case "$netdb_net_type" in
12789 '') try="extern struct netent *getnetbyaddr($xxx, int);"
12790 if ./protochk "$try" $hdrs; then
12791 echo "Your system accepts $xxx."
12792 netdb_net_type="$xxx"
12797 : In case none of those worked, prompt the user.
12798 case "$netdb_net_type" in
12799 '') rp='What is the type for the 1st argument to getnetbyaddr?'
12802 netdb_net_type=$ans
12806 *) : no getnetbyaddr, so pick harmless default
12807 netdb_net_type='long'
12811 : locate the preferred pager for this system
12825 '') dflt=/usr/ucb/more;;
12832 rp='What pager is used on your system?'
12836 : see what type pids are declared as in the kernel
12837 rp="What is the type of process ids on this system?"
12838 set pid_t pidtype int stdio.h sys/types.h
12841 : Find earliest binary compatible site_perl subdirectory perl can use.
12842 case "$bincompat5005" in
12843 "$define") xs_apiversion='5.005' ;;
12844 *) xs_apiversion=$version ;; # The current site_perl version.
12846 : Find earliest pure perl site_perl subdirectory perl can use.
12847 : The versioned directories started at 5.005.
12848 pm_apiversion='5.005'
12850 : check for length of pointer
12854 $echo $n "Checking to see how big your pointers are...$c" >&4
12855 if test "$voidflags" -gt 7; then
12856 echo '#define VOID_PTR char *' > try.c
12858 echo '#define VOID_PTR void *' > try.c
12860 $cat >>try.c <<'EOCP'
12864 printf("%d\n", (int)sizeof(VOID_PTR));
12869 if eval $compile_ok; then
12871 $echo " $ptrsize bytes." >&4
12874 echo "(I can't seem to compile the test program. Guessing...)" >&4
12875 rp="What is the size of a pointer (in bytes)?"
12883 : see if ar generates random libraries by itself
12885 echo "Checking how to generate random libraries on your machine..." >&4
12886 echo 'int bar1() { return bar2(); }' > bar1.c
12887 echo 'int bar2() { return 2; }' > bar2.c
12888 $cat > foo.c <<'EOP'
12889 int main() { printf("%d\n", bar1()); exit(0); }
12891 $cc $ccflags -c bar1.c >/dev/null 2>&1
12892 $cc $ccflags -c bar2.c >/dev/null 2>&1
12893 $cc $ccflags -c foo.c >/dev/null 2>&1
12894 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12895 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12896 ./foobar >/dev/null 2>&1; then
12897 echo "$ar appears to generate random libraries itself."
12900 elif $ar ts bar$_a >/dev/null 2>&1 &&
12901 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12902 ./foobar >/dev/null 2>&1; then
12903 echo "a table of contents needs to be added with '$ar ts'."
12910 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12911 $test -f $ranlib || ranlib=''
12914 if $test -n "$ranlib"; then
12915 echo "your system has '$ranlib'; we'll use that."
12918 echo "your system doesn't seem to support random libraries"
12919 echo "so we'll use lorder and tsort to order the libraries."
12926 : check for type of arguments to select.
12927 case "$selecttype" in
12928 '') case "$d_select" in
12932 Checking to see what type of arguments are accepted by select().
12934 hdrs="$define sys/types.h
12935 $i_systime sys/time.h
12936 $i_sysselct sys/select.h
12937 $d_socket sys/socket.h"
12938 : The first arg can be int, unsigned, or size_t
12939 : The last arg may or may not be 'const'
12941 : void pointer has been seen but using that
12942 : breaks the selectminbits test
12943 for xxx in 'fd_set *' 'int *'; do
12944 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12945 for tmo in 'struct timeval *' 'const struct timeval *'; do
12947 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12948 if ./protochk "$try" $hdrs; then
12949 echo "Your system accepts $xxx."
12958 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12959 case "$d_fd_set" in
12960 $define) dflt="fd_set *" ;;
12969 *) : no select, so pick a harmless default
12976 : check for the select 'width'
12977 case "$selectminbits" in
12978 '') case "$d_select" in
12982 Checking to see on how many bits at a time your select() operates...
12985 #include <sys/types.h>
12987 #$i_systime I_SYS_TIME
12988 #$i_systimek I_SYS_TIME_KERNEL
12993 # ifdef I_SYS_TIME_KERNEL
12996 # include <sys/time.h>
12997 # ifdef I_SYS_TIME_KERNEL
13001 #$i_sysselct I_SYS_SELECT
13002 #ifdef I_SYS_SELECT
13003 #include <sys/select.h>
13005 #$d_socket HAS_SOCKET
13007 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13011 #define S sizeof(*(b))
13013 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13014 #define NBITS (NBYTES * 8)
13023 fp = fopen("try.c", "r");
13029 b = ($selecttype)s;
13030 for (i = 0; i < NBITS; i++)
13034 select(fd + 1, b, 0, 0, &t);
13035 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13036 printf("%d\n", i + 1);
13041 if eval $compile_ok; then
13042 selectminbits=`./try`
13043 case "$selectminbits" in
13045 Cannot figure out on how many bits at a time your select() operates.
13046 I'll play safe and guess it is 32 bits.
13052 *) bits="$selectminbits bits" ;;
13054 echo "Your select() operates on $bits at a time." >&4
13056 rp='What is the minimum number of bits your select() operates on?'
13057 case "$byteorder" in
13058 1234|12345678) dflt=32 ;;
13063 selectminbits="$val"
13067 *) : no select, so pick a harmless default
13074 : Trace out the files included by signal.h, then look for SIGxxx names.
13075 : Remove SIGARRAYSIZE used by HPUX.
13076 : Remove SIGSTKSIZE used by Linux.
13077 : Remove SIGSTKSZ used by Posix.
13078 : Remove SIGTYP void lines used by OS2.
13079 : Some cpps, like os390, dont give the file name anywhere
13080 if [ "X$fieldn" = X ]; then
13081 : Just make some guesses. We check them later.
13082 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13084 xxx=`echo '#include <signal.h>' |
13085 $cppstdin $cppminus $cppflags 2>/dev/null |
13086 $grep '^[ ]*#.*include' |
13087 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13089 : Check this list of files to be sure we have parsed the cpp output ok.
13090 : This will also avoid potentially non-existent files, such
13093 for xx in $xxx /dev/null ; do
13094 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13096 : If we have found no files, at least try signal.h
13097 case "$xxxfiles" in
13098 '') xxxfiles=`./findhdr signal.h` ;;
13101 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13102 print substr($2, 4, 20)
13104 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13105 print substr($3, 4, 20)
13107 : Append some common names just in case the awk scan failed.
13108 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13109 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13110 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13111 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13112 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13114 : generate a few handy files for later
13115 $cat > signal.c <<'EOCP'
13116 #include <sys/types.h>
13117 #include <signal.h>
13121 /* Strange style to avoid deeply-nested #if/#else/#endif */
13124 # define NSIG (_NSIG)
13130 # define NSIG (SIGMAX+1)
13136 # define NSIG (SIG_MAX+1)
13142 # define NSIG (MAXSIG+1)
13148 # define NSIG (MAX_SIG+1)
13153 # ifdef SIGARRAYSIZE
13154 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13160 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13164 /* Default to some arbitrary number that's big enough to get most
13165 of the common signals.
13171 printf("NSIG %d\n", NSIG);
13177 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13179 printf "#ifdef SIG"; printf $1; printf "\n"
13180 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13181 printf $1; printf ");\n"
13185 printf "#endif /* JUST_NSIG */\n";
13186 printf "exit(0);\n}\n";
13189 $cat >signal.awk <<'EOP'
13190 BEGIN { ndups = 0 }
13191 $1 ~ /^NSIG$/ { nsig = $2 }
13192 ($1 !~ /^NSIG$/) && (NF == 2) {
13193 if ($2 > maxsig) { maxsig = $2 }
13194 if (sig_name[$2]) {
13195 dup_name[ndups] = $1
13196 dup_num[ndups] = $2
13208 printf("NSIG %d\n", nsig);
13209 for (n = 1; n < nsig; n++) {
13211 printf("%s %d\n", sig_name[n], sig_num[n])
13214 printf("NUM%d %d\n", n, n)
13217 for (n = 0; n < ndups; n++) {
13218 printf("%s %d\n", dup_name[n], dup_num[n])
13222 $cat >signal_cmd <<EOS
13224 if $test -s signal.lst; then
13225 echo "Using your existing signal.lst file"
13230 $cat >>signal_cmd <<'EOS'
13233 if eval $compile_ok; then
13234 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13236 echo "(I can't seem be able to compile the whole test program)" >&4
13237 echo "(I'll try it in little pieces.)" >&4
13238 set signal -DJUST_NSIG
13239 if eval $compile_ok; then
13240 ./signal$_exe > signal.nsg
13243 echo "I can't seem to figure out how many signals you have." >&4
13244 echo "Guessing 50." >&4
13245 echo 'NSIG 50' > signal.nsg
13247 : Now look at all the signal names, one at a time.
13248 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13249 $cat > signal.c <<EOCP
13250 #include <sys/types.h>
13251 #include <signal.h>
13254 printf("$xx %d\n", SIG${xx});
13259 if eval $compile; then
13260 echo "SIG${xx} found."
13261 ./signal$_exe >> signal.ls1
13263 echo "SIG${xx} NOT found."
13266 if $test -s signal.ls1; then
13267 $cat signal.nsg signal.ls1 |
13268 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13272 if $test -s signal.lst; then
13275 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13276 echo 'kill -l' >signal
13277 set X `csh -f <signal`
13281 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13283 echo $@ | $tr ' ' $trnl | \
13284 $awk '{ printf "%s %d\n", $1, ++s; }
13285 END { printf "NSIG %d\n", ++s }' >signal.lst
13287 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13289 chmod a+x signal_cmd
13290 $eunicefix signal_cmd
13292 : generate list of signal names
13294 case "$sig_name_init" in
13296 *) case "$sig_num_init" in
13297 ''|*,*) doinit=yes ;;
13302 echo "Generating a list of signal names and numbers..." >&4
13304 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13305 sig_name=`$awk 'BEGIN { printf "ZERO " }
13306 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13307 sig_num=`$awk 'BEGIN { printf "0 " }
13308 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13309 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
13310 !/^NSIG/ { printf "\"%s\", ", $1 }
13311 END { printf "0\n" }' signal.lst`
13312 sig_num_init=`$awk 'BEGIN { printf "0, " }
13313 !/^NSIG/ { printf "%d, ", $2}
13314 END { printf "0\n"}' signal.lst`
13317 echo "The following $sig_count signals are available:"
13319 echo $sig_name | $awk \
13320 'BEGIN { linelen = 0 }
13322 for (i = 1; i <= NF; i++) {
13323 name = "SIG" $i " "
13324 linelen = linelen + length(name)
13325 if (linelen > 70) {
13327 linelen = length(name)
13333 $rm -f signal signal.c signal.awk signal.lst signal_cmd
13335 : see what type is used for signed size_t
13336 set ssize_t ssizetype int stdio.h sys/types.h
13339 $cat > ssize.c <<EOM
13341 #include <sys/types.h>
13342 #define Size_t $sizetype
13343 #define SSize_t $dflt
13346 if (sizeof(Size_t) == sizeof(SSize_t))
13348 else if (sizeof(Size_t) == sizeof(int))
13357 if eval $compile_ok && ./ssize > /dev/null; then
13358 ssizetype=`./ssize`
13359 echo "I'll be using $ssizetype for functions returning a byte count." >&4
13362 Help! I can't compile and run the ssize_t test program: please enlighten me!
13363 (This is probably a misconfiguration in your system or libraries, and
13364 you really ought to fix it. Still, I'll try anyway.)
13366 I need a type that is the same size as $sizetype, but is guaranteed to
13367 be signed. Common values are ssize_t, int and long.
13370 rp="What signed type is the same size as $sizetype?"
13374 $rm -f ssize ssize.*
13376 : see what type of char stdio uses.
13378 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13379 echo "Your stdio uses unsigned chars." >&4
13380 stdchar="unsigned char"
13382 echo "Your stdio uses signed chars." >&4
13386 : see if time exists
13388 if test "X$d_time" = X -o X"$timetype" = X; then
13389 if set time val -f d_time; eval $csym; $val; then
13390 echo 'time() found.' >&4
13392 rp="What is the type returned by time() on this system?"
13393 set time_t timetype long stdio.h sys/types.h
13396 echo 'time() not found, hope that will do.' >&4
13404 : see what type uids are declared as in the kernel
13406 echo "Looking for the type for user ids returned by getuid()."
13407 set uid_t uidtype xxx stdio.h sys/types.h
13411 xxx=`./findhdr sys/user.h`
13412 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13414 unsigned) dflt="$1 $2" ;;
13418 *) dflt="$uidtype";;
13421 uid_t) echo "uid_t found." ;;
13422 *) rp="What is the type for user ids returned by getuid()?"
13430 *_t) zzz="$uidtype" ;;
13433 echo "Checking the size of $zzz..." >&4
13435 #include <sys/types.h>
13438 printf("%d\n", (int)sizeof($uidtype));
13443 if eval $compile_ok; then
13447 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13450 echo "Your $zzz size is $uidsize bytes."
13455 echo "(I can't compile the test program--guessing $uidsize.)" >&4
13460 *_t) zzz="$uidtype" ;;
13463 echo "Checking the sign of $zzz..." >&4
13465 #include <sys/types.h>
13476 if eval $compile; then
13480 echo "(I can't execute the test program--guessing unsigned.)" >&4
13484 1) echo "Your $zzz is unsigned." ;;
13485 -1) echo "Your $zzz is signed." ;;
13491 echo "(I can't compile the test program--guessing unsigned.)" >&4
13497 $echo "Checking the format string to be used for uids..." >&4
13500 -1) if $test X"$uidsize" = X"$ivsize"; then
13501 uidformat="$ivdformat"
13503 if $test X"$uidsize" = X"$longsize"; then
13506 if $test X"$uidsize" = X"$intsize"; then
13509 if $test X"$uidsize" = X"$shortsize"; then
13516 *) if $test X"$uidsize" = X"$uvsize"; then
13517 uidformat="$uvuformat"
13519 if $test X"$uidsize" = X"$longsize"; then
13522 if $test X"$uidsize" = X"$intsize"; then
13525 if $test X"$uidsize" = X"$shortsize"; then
13534 : see if dbm.h is available
13535 : see if dbmclose exists
13536 set dbmclose d_dbmclose
13539 case "$d_dbmclose" in
13549 *) set rpcsvc/dbm.h i_rpcsvcdbm
13554 *) echo "We won't be including <dbm.h>"
13564 : see if this is a sys/file.h system
13569 : do we need to include sys/file.h ?
13573 if $h_sysfile; then
13575 echo "We'll be including <sys/file.h>." >&4
13578 echo "We won't be including <sys/file.h>." >&4
13588 : see if fcntl.h is there
13593 : see if we can include fcntl.h
13599 echo "We'll be including <fcntl.h>." >&4
13602 if $h_sysfile; then
13603 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13605 echo "We won't be including <fcntl.h>." >&4
13617 : see if this is a iconv.h system
13618 set iconv.h i_iconv
13621 : see if locale.h is available
13622 set locale.h i_locale
13625 : see if mach cthreads are available
13626 if test "X$usethreads" = "X$define"; then
13627 set mach/cthreads.h i_machcthr
13630 i_machcthr="$undef"
13635 : see if this is a math.h system
13639 : see if this is a mntent.h system
13640 set mntent.h i_mntent
13643 : see if ndbm.h is available
13648 : see if dbm_open exists
13649 set dbm_open d_dbm_open
13651 case "$d_dbm_open" in
13654 echo "We won't be including <ndbm.h>"
13663 : see if net/errno.h is available
13665 set net/errno.h val
13668 : Unfortunately, it causes problems on some systems. Arrgh.
13671 cat > try.c <<'EOM'
13674 #include <net/errno.h>
13680 if $cc $ccflags -c try.c >/dev/null 2>&1; then
13681 echo "We'll be including <net/errno.h>." >&4
13683 echo "We won't be including <net/errno.h>." >&4
13692 : see if netinet/tcp.h is available
13693 set netinet/tcp.h i_netinettcp
13696 : see if this is a poll.h system
13701 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
13702 $cat <<'EOSH' > Cppsym.know
13703 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13704 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13705 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13706 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13707 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13708 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13709 bull c cadmus clipper CMU COFF COMPILER_VERSION
13710 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13711 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13712 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13713 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13714 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13715 H3050R H3050RX hbullx20 hcx host_mips
13716 hp200 hp300 hp700 HP700 hp800 hp9000
13717 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13718 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13719 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13720 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13721 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13722 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13723 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13724 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13725 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13726 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13727 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13728 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13729 MATH_HAS_NO_SIDE_EFFECTS
13730 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13731 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13732 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13733 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13734 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13735 NetBSD news1500 news1700 news1800 news1900 news3700
13736 news700 news800 news900 NeXT NLS ns16000 ns32000
13737 ns32016 ns32332 ns32k nsc32000
13738 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13739 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13740 pc532 pdp11 PGC PIC plexus PORTAR posix
13741 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
13742 POSIX_C_SOURCE POSIX_SOURCE POWER
13743 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
13744 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
13745 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
13746 sony sony_news sonyrisc sparc sparclite spectrum
13747 stardent stdc STDC_EXT stratos sun sun3 sun386
13748 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
13749 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
13750 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
13751 sysV68 sysV88 Tek4132 Tek4300 titan
13752 tower tower32 tower32_200 tower32_600 tower32_700
13753 tower32_800 tower32_850 tss
13754 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
13755 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
13756 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
13757 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
13758 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
13759 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
13762 # Maybe put other stuff here too.
13763 cat <<EOSH >>Cppsym.know
13766 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13767 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13768 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
13769 $rm -f Cppsym.a Cppsym.b
13770 cat <<EOSH > Cppsym
13772 if $test \$# -gt 0; then
13773 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13774 if $test -s Cppsym.got; then
13781 $tr " " "$trnl" | ./Cppsym.try
13787 cat <<EOSH > Cppsym.try
13789 cat <<'EOCP' > try.c
13795 cat <<'EOSH' >> Cppsym.try
13797 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
13798 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
13799 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
13800 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
13804 cat <<EOSH >> Cppsym.try
13806 optimize="$optimize"
13811 $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try$exe_ext
13813 chmod +x Cppsym.try
13814 $eunicefix Cppsym.try
13815 ./Cppsym < Cppsym.know > Cppsym.true
13816 : now check the C compiler for additional symbols
13817 postprocess_cc_v=''
13819 aix) postprocess_cc_v="|$tr , ' '" ;;
13826 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13829 -D*) echo "\$i" | $sed 's/^-D//';;
13830 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13835 postprocess_cc_v=''
13838 ./ccsym > ccsym1.raw
13839 if $test -s ccsym1.raw; then
13840 $sort ccsym1.raw | $uniq >ccsym.raw
13842 mv ccsym1.raw ccsym.raw
13845 $awk '/\=/ { print $0; next }
13846 { print $0"=1" }' ccsym.raw >ccsym.list
13847 $awk '/\=/ { print $0; next }
13848 { print $0"=1" }' Cppsym.true >ccsym.true
13849 $comm -13 ccsym.true ccsym.list >ccsym.own
13850 $comm -12 ccsym.true ccsym.list >ccsym.com
13851 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13853 if $test -z ccsym.raw; then
13854 echo "Your C compiler doesn't seem to define any symbols!" >&4
13856 echo "However, your C preprocessor defines the following symbols:"
13859 cppsymbols=`$cat Cppsym.true`
13860 cppsymbols=`echo $cppsymbols`
13861 cppccsymbols="$cppsymbols"
13863 if $test -s ccsym.com; then
13864 echo "Your C compiler and pre-processor define these symbols:"
13865 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13868 cppccsymbols=`$cat ccsym.com`
13869 cppccsymbols=`echo $cppccsymbols`
13870 $test "$silent" || sleep 1
13872 if $test -s ccsym.cpp; then
13873 $test "$also" && echo " "
13874 echo "Your C pre-processor ${also}defines the following symbols:"
13875 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13877 cppsymbols=`$cat ccsym.cpp`
13878 cppsymbols=`echo $cppsymbols`
13879 $test "$silent" || sleep 1
13881 if $test -s ccsym.own; then
13882 $test "$also" && echo " "
13883 echo "Your C compiler ${also}defines the following cpp symbols:"
13884 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13885 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13886 ccsymbols=`$cat ccsym.own`
13887 ccsymbols=`echo $ccsymbols`
13888 $test "$silent" || sleep 1
13893 : see if this is a termio system
13897 if $test `./findhdr termios.h`; then
13898 set tcsetattr i_termios
13904 "$define") echo "You have POSIX termios.h... good!" >&4;;
13905 *) if ./Cppsym pyr; then
13906 case "`/bin/universe`" in
13907 ucb) if $test `./findhdr sgtty.h`; then
13909 echo "<sgtty.h> found." >&4
13911 echo "System is pyramid with BSD universe."
13912 echo "<sgtty.h> not found--you could have problems." >&4
13914 *) if $test `./findhdr termio.h`; then
13916 echo "<termio.h> found." >&4
13918 echo "System is pyramid with USG universe."
13919 echo "<termio.h> not found--you could have problems." >&4
13923 if $test `./findhdr termio.h`; then
13924 echo "<termio.h> found." >&4
13926 elif $test `./findhdr sgtty.h`; then
13927 echo "<sgtty.h> found." >&4
13930 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13933 if $test `./findhdr sgtty.h`; then
13934 echo "<sgtty.h> found." >&4
13936 elif $test `./findhdr termio.h`; then
13937 echo "<termio.h> found." >&4
13940 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13944 set i_termio; eval $setvar
13945 val=$val2; set i_sgtty; eval $setvar
13946 val=$val3; set i_termios; eval $setvar
13948 : see if this is a shadow.h system
13949 set shadow.h i_shadow
13952 : see if this is a socks.h system
13953 set socks.h i_socks
13956 : see if stdarg is available
13958 if $test `./findhdr stdarg.h`; then
13959 echo "<stdarg.h> found." >&4
13962 echo "<stdarg.h> NOT found." >&4
13966 : see if varags is available
13968 if $test `./findhdr varargs.h`; then
13969 echo "<varargs.h> found." >&4
13971 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13974 : set up the varargs testing programs
13975 $cat > varargs.c <<EOP
13977 #include <stdarg.h>
13980 #include <varargs.h>
13984 int f(char *p, ...)
13998 p = va_arg(ap, char *);
14003 $cat > varargs <<EOP
14005 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14014 : now check which varargs header should be included
14019 if `./varargs I_STDARG`; then
14021 elif `./varargs I_VARARGS`; then
14026 if `./varargs I_VARARGS`; then
14033 echo "I could not find the definition for va_dcl... You have problems..." >&4
14034 val="$undef"; set i_stdarg; eval $setvar
14035 val="$undef"; set i_varargs; eval $setvar
14040 case "$i_varhdr" in
14042 val="$define"; set i_stdarg; eval $setvar
14043 val="$undef"; set i_varargs; eval $setvar
14046 val="$undef"; set i_stdarg; eval $setvar
14047 val="$define"; set i_varargs; eval $setvar
14050 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14054 : see if stddef is available
14055 set stddef.h i_stddef
14058 : see if sys/access.h is available
14059 set sys/access.h i_sysaccess
14062 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14063 set sys/filio.h i_sysfilio
14066 if $test `./findhdr sys/ioctl.h`; then
14068 echo '<sys/ioctl.h> found.' >&4
14071 if $test $i_sysfilio = "$define"; then
14072 echo '<sys/ioctl.h> NOT found.' >&4
14074 $test $i_sgtty = "$define" && xxx="sgtty.h"
14075 $test $i_termio = "$define" && xxx="termio.h"
14076 $test $i_termios = "$define" && xxx="termios.h"
14077 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14084 : see if this is a syslog.h system
14085 set syslog.h i_syslog
14088 : see if sys/resource.h has to be included
14089 set sys/resource.h i_sysresrc
14092 : see if sys/security.h is available
14093 set sys/security.h i_syssecrt
14096 : see if this is a sys/statvfs.h system
14097 set sys/statvfs.h i_sysstatvfs
14100 : see if this is a sys/uio.h system
14101 set sys/uio.h i_sysuio
14104 : see if this is a sys/un.h system
14105 set sys/un.h i_sysun
14108 : see if this is a syswait system
14109 set sys/wait.h i_syswait
14112 : see if this is a ustat.h system
14113 set ustat.h i_ustat
14116 : see if this is an utime system
14117 set utime.h i_utime
14120 : see if this is a values.h system
14121 set values.h i_values
14124 : see if this is a vfork system
14127 set vfork.h i_vfork
14135 : see if gdbm.h is available
14140 : see if gdbm_open exists
14141 set gdbm_open d_gdbm_open
14143 case "$d_gdbm_open" in
14146 echo "We won't be including <gdbm.h>"
14156 echo "Looking for extensions..." >&4
14157 : If we are using the old config.sh, known_extensions may contain
14158 : old or inaccurate or duplicate values.
14159 known_extensions=''
14160 nonxs_extensions=''
14161 : We do not use find because it might not be available.
14162 : We do not just use MANIFEST because the user may have dropped
14163 : some additional extensions into the source tree and expect them
14166 : Function to recursively find available extensions, ignoring DynaLoader
14167 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14171 DynaLoader|dynaload) ;;
14173 if $test -f $xxx/$xxx.xs; then
14174 known_extensions="$known_extensions $1$xxx";
14175 elif $test -f $xxx/Makefile.PL; then
14176 nonxs_extensions="$nonxs_extensions $1$xxx";
14178 if $test -d $xxx -a $# -lt 10; then
14181 eval $find_extensions;
14193 eval $find_extensions
14194 set X $nonxs_extensions
14196 nonxs_extensions="$*"
14197 set X $known_extensions
14199 known_extensions="$*"
14202 : Now see which are supported on this system.
14204 for xxx in $known_extensions ; do
14208 $define) avail_ext="$avail_ext $xxx" ;;
14211 GDBM_File|gdbm_fil)
14213 $define) avail_ext="$avail_ext $xxx" ;;
14216 NDBM_File|ndbm_fil)
14218 $define) avail_ext="$avail_ext $xxx" ;;
14221 ODBM_File|odbm_fil)
14222 case "${i_dbm}${i_rpcsvcdbm}" in
14223 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14227 case "$useposix" in
14228 true|define|y) avail_ext="$avail_ext $xxx" ;;
14232 case "$useopcode" in
14233 true|define|y) avail_ext="$avail_ext $xxx" ;;
14237 case "$d_socket" in
14238 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14242 case "$usethreads" in
14243 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14247 : XXX Do we need a useipcsysv variable here
14248 case "${d_msg}${d_sem}${d_shm}" in
14249 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14252 *) avail_ext="$avail_ext $xxx"
14261 : Now see which nonxs extensions are supported on this system.
14262 : For now assume all are.
14264 for xxx in $nonxs_extensions ; do
14266 *) nonxs_ext="$nonxs_ext $xxx"
14278 A number of extensions are supplied with $package. You may choose to
14279 compile these extensions for dynamic loading (the default), compile
14280 them into the $package executable (static loading), or not include
14281 them at all. Answer "none" to include no extensions.
14282 Note that DynaLoader is always built and need not be mentioned here.
14285 case "$dynamic_ext" in
14286 '') dflt="$avail_ext" ;;
14287 *) dflt="$dynamic_ext"
14288 # Perhaps we are reusing an old out-of-date config.sh.
14291 if test X"$dynamic_ext" != X"$avail_ext"; then
14293 NOTICE: Your previous config.sh list may be incorrect.
14294 The extensions now available to you are
14296 but the default list from your previous config.sh is
14308 rp="What extensions do you wish to load dynamically?"
14311 none) dynamic_ext=' ' ;;
14312 *) dynamic_ext="$ans" ;;
14315 case "$static_ext" in
14317 : Exclude those already listed in dynamic linking
14319 for xxx in $avail_ext; do
14320 case " $dynamic_ext " in
14322 *) dflt="$dflt $xxx" ;;
14329 *) dflt="$static_ext"
14336 rp="What extensions do you wish to load statically?"
14339 none) static_ext=' ' ;;
14340 *) static_ext="$ans" ;;
14345 A number of extensions are supplied with $package. Answer "none"
14346 to include no extensions.
14347 Note that DynaLoader is always built and need not be mentioned here.
14350 case "$static_ext" in
14351 '') dflt="$avail_ext" ;;
14352 *) dflt="$static_ext"
14353 # Perhaps we are reusing an old out-of-date config.sh.
14356 if test X"$static_ext" != X"$avail_ext"; then
14358 NOTICE: Your previous config.sh list may be incorrect.
14359 The extensions now available to you are
14361 but the default list from your previous config.sh is
14370 : Exclude those that are not xs extensions
14374 rp="What extensions do you wish to include?"
14377 none) static_ext=' ' ;;
14378 *) static_ext="$ans" ;;
14383 set X $dynamic_ext $static_ext $nonxs_ext
14387 : Remove build directory name from cppstdin so it can be used from
14388 : either the present location or the final installed location.
14390 : Get out of the UU directory to get correct path name.
14392 case "$cppstdin" in
14394 echo "Stripping down cppstdin path name"
14400 : end of configuration questions
14402 echo "End of configuration questions."
14405 : back to where it started
14406 if test -d ../UU; then
14410 : configuration may be patched via a 'config.over' file
14411 if $test -f config.over; then
14414 rp='I see a config.over file. Do you wish to load it?'
14417 n*) echo "OK, I'll ignore it.";;
14419 echo "Configuration override changes have been loaded."
14424 : in case they want portability, strip down executable paths
14425 case "$d_portable" in
14428 echo "Stripping down executable paths..." >&4
14429 for file in $loclist $trylist; do
14431 eval $file=`basename $temp`
14436 : create config.sh file
14438 echo "Creating config.sh..." >&4
14439 $spitshell <<EOT >config.sh
14442 # This file was produced by running the Configure script. It holds all the
14443 # definitions figured out by Configure. Should you modify one of these values,
14444 # do not forget to propagate your changes by running "Configure -der". You may
14445 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14448 # Package name : $package
14449 # Source directory : $src
14450 # Configuration time: $cf_time
14451 # Configured by : $cf_by
14452 # Target system : $myuname
14462 Revision='$Revision'
14469 alignbytes='$alignbytes'
14470 ansi2knr='$ansi2knr'
14471 aphostname='$aphostname'
14472 api_revision='$api_revision'
14473 api_subversion='$api_subversion'
14474 api_version='$api_version'
14475 api_versionstring='$api_versionstring'
14478 archlibexp='$archlibexp'
14479 archname64='$archname64'
14480 archname='$archname'
14481 archobjs='$archobjs'
14486 bincompat5005='$bincompat5005'
14490 byteorder='$byteorder'
14492 castflags='$castflags'
14495 cccdlflags='$cccdlflags'
14496 ccdlflags='$ccdlflags'
14498 ccsymbols='$ccsymbols'
14500 cf_email='$cf_email'
14502 charsize='$charsize'
14506 clocktype='$clocktype'
14508 compress='$compress'
14509 contains='$contains'
14513 cpp_stuff='$cpp_stuff'
14514 cppccsymbols='$cppccsymbols'
14515 cppflags='$cppflags'
14517 cppminus='$cppminus'
14519 cppstdin='$cppstdin'
14520 cppsymbols='$cppsymbols'
14521 crosscompile='$crosscompile'
14522 cryptlib='$cryptlib'
14524 d_Gconvert='$d_Gconvert'
14525 d_PRIEldbl='$d_PRIEldbl'
14526 d_PRIFldbl='$d_PRIFldbl'
14527 d_PRIGldbl='$d_PRIGldbl'
14528 d_PRIX64='$d_PRIX64'
14529 d_PRId64='$d_PRId64'
14530 d_PRIeldbl='$d_PRIeldbl'
14531 d_PRIfldbl='$d_PRIfldbl'
14532 d_PRIgldbl='$d_PRIgldbl'
14533 d_PRIi64='$d_PRIi64'
14534 d_PRIo64='$d_PRIo64'
14535 d_PRIu64='$d_PRIu64'
14536 d_PRIx64='$d_PRIx64'
14537 d_access='$d_access'
14538 d_accessx='$d_accessx'
14540 d_archlib='$d_archlib'
14543 d_attribut='$d_attribut'
14546 d_bincompat5005='$d_bincompat5005'
14548 d_bsdgetpgrp='$d_bsdgetpgrp'
14549 d_bsdsetpgrp='$d_bsdsetpgrp'
14551 d_casti32='$d_casti32'
14552 d_castneg='$d_castneg'
14553 d_charvspr='$d_charvspr'
14555 d_chroot='$d_chroot'
14556 d_chsize='$d_chsize'
14557 d_closedir='$d_closedir'
14561 d_cuserid='$d_cuserid'
14562 d_dbl_dig='$d_dbl_dig'
14563 d_difftime='$d_difftime'
14564 d_dirnamlen='$d_dirnamlen'
14565 d_dlerror='$d_dlerror'
14566 d_dlopen='$d_dlopen'
14567 d_dlsymun='$d_dlsymun'
14568 d_dosuid='$d_dosuid'
14569 d_drand48proto='$d_drand48proto'
14571 d_eaccess='$d_eaccess'
14572 d_endgrent='$d_endgrent'
14573 d_endhent='$d_endhent'
14574 d_endnent='$d_endnent'
14575 d_endpent='$d_endpent'
14576 d_endpwent='$d_endpwent'
14577 d_endsent='$d_endsent'
14578 d_endspent='$d_endspent'
14579 d_eofnblk='$d_eofnblk'
14580 d_eunice='$d_eunice'
14581 d_fchmod='$d_fchmod'
14582 d_fchown='$d_fchown'
14584 d_fd_macros='$d_fd_macros'
14585 d_fd_set='$d_fd_set'
14586 d_fds_bits='$d_fds_bits'
14587 d_fgetpos='$d_fgetpos'
14588 d_flexfnam='$d_flexfnam'
14591 d_fpathconf='$d_fpathconf'
14592 d_fpos64_t='$d_fpos64_t'
14593 d_fs_data_s='$d_fs_data_s'
14594 d_fseeko='$d_fseeko'
14595 d_fsetpos='$d_fsetpos'
14596 d_fstatfs='$d_fstatfs'
14597 d_fstatvfs='$d_fstatvfs'
14598 d_ftello='$d_ftello'
14600 d_getcwd='$d_getcwd'
14601 d_getgrent='$d_getgrent'
14602 d_getgrps='$d_getgrps'
14603 d_gethbyaddr='$d_gethbyaddr'
14604 d_gethbyname='$d_gethbyname'
14605 d_gethent='$d_gethent'
14606 d_gethname='$d_gethname'
14607 d_gethostprotos='$d_gethostprotos'
14608 d_getlogin='$d_getlogin'
14609 d_getmnt='$d_getmnt'
14610 d_getmntent='$d_getmntent'
14611 d_getnbyaddr='$d_getnbyaddr'
14612 d_getnbyname='$d_getnbyname'
14613 d_getnent='$d_getnent'
14614 d_getnetprotos='$d_getnetprotos'
14615 d_getpbyname='$d_getpbyname'
14616 d_getpbynumber='$d_getpbynumber'
14617 d_getpent='$d_getpent'
14618 d_getpgid='$d_getpgid'
14619 d_getpgrp2='$d_getpgrp2'
14620 d_getpgrp='$d_getpgrp'
14621 d_getppid='$d_getppid'
14622 d_getprior='$d_getprior'
14623 d_getprotoprotos='$d_getprotoprotos'
14624 d_getpwent='$d_getpwent'
14625 d_getsbyname='$d_getsbyname'
14626 d_getsbyport='$d_getsbyport'
14627 d_getsent='$d_getsent'
14628 d_getservprotos='$d_getservprotos'
14629 d_getspent='$d_getspent'
14630 d_getspnam='$d_getspnam'
14631 d_gettimeod='$d_gettimeod'
14632 d_gnulibc='$d_gnulibc'
14633 d_grpasswd='$d_grpasswd'
14634 d_hasmntopt='$d_hasmntopt'
14638 d_inetaton='$d_inetaton'
14639 d_int64t='$d_int64t'
14640 d_isascii='$d_isascii'
14641 d_killpg='$d_killpg'
14642 d_lchown='$d_lchown'
14643 d_ldbl_dig='$d_ldbl_dig'
14645 d_locconv='$d_locconv'
14647 d_longdbl='$d_longdbl'
14648 d_longlong='$d_longlong'
14651 d_mbstowcs='$d_mbstowcs'
14652 d_mbtowc='$d_mbtowc'
14653 d_memchr='$d_memchr'
14654 d_memcmp='$d_memcmp'
14655 d_memcpy='$d_memcpy'
14656 d_memmove='$d_memmove'
14657 d_memset='$d_memset'
14659 d_mkdtemp='$d_mkdtemp'
14660 d_mkfifo='$d_mkfifo'
14661 d_mkstemp='$d_mkstemp'
14662 d_mkstemps='$d_mkstemps'
14663 d_mktime='$d_mktime'
14665 d_mprotect='$d_mprotect'
14667 d_msg_ctrunc='$d_msg_ctrunc'
14668 d_msg_dontroute='$d_msg_dontroute'
14669 d_msg_oob='$d_msg_oob'
14670 d_msg_peek='$d_msg_peek'
14671 d_msg_proxy='$d_msg_proxy'
14672 d_msgctl='$d_msgctl'
14673 d_msgget='$d_msgget'
14674 d_msgrcv='$d_msgrcv'
14675 d_msgsnd='$d_msgsnd'
14677 d_munmap='$d_munmap'
14678 d_mymalloc='$d_mymalloc'
14680 d_nv_preserves_uv='$d_nv_preserves_uv'
14681 d_off64_t='$d_off64_t'
14682 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14683 d_oldpthreads='$d_oldpthreads'
14684 d_oldsock='$d_oldsock'
14686 d_pathconf='$d_pathconf'
14688 d_phostname='$d_phostname'
14691 d_portable='$d_portable'
14692 d_pthread_yield='$d_pthread_yield'
14694 d_pwchange='$d_pwchange'
14695 d_pwclass='$d_pwclass'
14696 d_pwcomment='$d_pwcomment'
14697 d_pwexpire='$d_pwexpire'
14698 d_pwgecos='$d_pwgecos'
14699 d_pwpasswd='$d_pwpasswd'
14700 d_pwquota='$d_pwquota'
14702 d_readdir='$d_readdir'
14703 d_readlink='$d_readlink'
14704 d_rename='$d_rename'
14705 d_rewinddir='$d_rewinddir'
14707 d_safebcpy='$d_safebcpy'
14708 d_safemcpy='$d_safemcpy'
14709 d_sanemcmp='$d_sanemcmp'
14710 d_sched_yield='$d_sched_yield'
14711 d_scm_rights='$d_scm_rights'
14712 d_seekdir='$d_seekdir'
14713 d_select='$d_select'
14715 d_semctl='$d_semctl'
14716 d_semctl_semid_ds='$d_semctl_semid_ds'
14717 d_semctl_semun='$d_semctl_semun'
14718 d_semget='$d_semget'
14720 d_setegid='$d_setegid'
14721 d_seteuid='$d_seteuid'
14722 d_setgrent='$d_setgrent'
14723 d_setgrps='$d_setgrps'
14724 d_sethent='$d_sethent'
14725 d_setlinebuf='$d_setlinebuf'
14726 d_setlocale='$d_setlocale'
14727 d_setnent='$d_setnent'
14728 d_setpent='$d_setpent'
14729 d_setpgid='$d_setpgid'
14730 d_setpgrp2='$d_setpgrp2'
14731 d_setpgrp='$d_setpgrp'
14732 d_setprior='$d_setprior'
14733 d_setpwent='$d_setpwent'
14734 d_setregid='$d_setregid'
14735 d_setresgid='$d_setresgid'
14736 d_setresuid='$d_setresuid'
14737 d_setreuid='$d_setreuid'
14738 d_setrgid='$d_setrgid'
14739 d_setruid='$d_setruid'
14740 d_setsent='$d_setsent'
14741 d_setsid='$d_setsid'
14742 d_setspent='$d_setspent'
14743 d_setvbuf='$d_setvbuf'
14747 d_shmatprototype='$d_shmatprototype'
14748 d_shmctl='$d_shmctl'
14750 d_shmget='$d_shmget'
14751 d_sigaction='$d_sigaction'
14752 d_sigsetjmp='$d_sigsetjmp'
14753 d_socket='$d_socket'
14754 d_sockpair='$d_sockpair'
14756 d_statblks='$d_statblks'
14757 d_statfs_f_flags='$d_statfs_f_flags'
14758 d_statfs_s='$d_statfs_s'
14759 d_statvfs='$d_statvfs'
14760 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14761 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14762 d_stdio_stream_array='$d_stdio_stream_array'
14763 d_stdiobase='$d_stdiobase'
14764 d_stdstdio='$d_stdstdio'
14765 d_strchr='$d_strchr'
14766 d_strcoll='$d_strcoll'
14767 d_strctcpy='$d_strctcpy'
14768 d_strerrm='$d_strerrm'
14769 d_strerror='$d_strerror'
14770 d_strtod='$d_strtod'
14771 d_strtol='$d_strtol'
14772 d_strtold='$d_strtold'
14773 d_strtoll='$d_strtoll'
14774 d_strtoul='$d_strtoul'
14775 d_strtoull='$d_strtoull'
14776 d_strtouq='$d_strtouq'
14777 d_strxfrm='$d_strxfrm'
14778 d_suidsafe='$d_suidsafe'
14779 d_symlink='$d_symlink'
14780 d_syscall='$d_syscall'
14781 d_sysconf='$d_sysconf'
14782 d_sysernlst='$d_sysernlst'
14783 d_syserrlst='$d_syserrlst'
14784 d_system='$d_system'
14785 d_tcgetpgrp='$d_tcgetpgrp'
14786 d_tcsetpgrp='$d_tcsetpgrp'
14787 d_telldir='$d_telldir'
14788 d_telldirproto='$d_telldirproto'
14791 d_truncate='$d_truncate'
14792 d_tzname='$d_tzname'
14795 d_union_semun='$d_union_semun'
14797 d_vendorbin='$d_vendorbin'
14798 d_vendorlib='$d_vendorlib'
14800 d_void_closedir='$d_void_closedir'
14801 d_voidsig='$d_voidsig'
14802 d_voidtty='$d_voidtty'
14803 d_volatile='$d_volatile'
14804 d_vprintf='$d_vprintf'
14806 d_waitpid='$d_waitpid'
14807 d_wcstombs='$d_wcstombs'
14808 d_wctomb='$d_wctomb'
14811 db_hashtype='$db_hashtype'
14812 db_prefixtype='$db_prefixtype'
14813 defvoidused='$defvoidused'
14814 direntrytype='$direntrytype'
14817 doublesize='$doublesize'
14819 dynamic_ext='$dynamic_ext'
14825 eunicefix='$eunicefix'
14828 extensions='$extensions'
14829 fflushNULL='$fflushNULL'
14830 fflushall='$fflushall'
14832 firstmakefile='$firstmakefile'
14834 fpossize='$fpossize'
14835 fpostype='$fpostype'
14836 freetype='$freetype'
14838 full_csh='$full_csh'
14839 full_sed='$full_sed'
14840 gccversion='$gccversion'
14841 gidformat='$gidformat'
14847 groupcat='$groupcat'
14848 groupstype='$groupstype'
14851 h_sysfile='$h_sysfile'
14863 i_arpainet='$i_arpainet'
14864 i_bsdioctl='$i_bsdioctl'
14867 i_dirent='$i_dirent'
14875 i_inttypes='$i_inttypes'
14876 i_limits='$i_limits'
14877 i_locale='$i_locale'
14878 i_machcthr='$i_machcthr'
14879 i_malloc='$i_malloc'
14881 i_memory='$i_memory'
14882 i_mntent='$i_mntent'
14885 i_neterrno='$i_neterrno'
14886 i_netinettcp='$i_netinettcp'
14889 i_pthread='$i_pthread'
14891 i_rpcsvcdbm='$i_rpcsvcdbm'
14894 i_shadow='$i_shadow'
14896 i_stdarg='$i_stdarg'
14897 i_stddef='$i_stddef'
14898 i_stdlib='$i_stdlib'
14899 i_string='$i_string'
14900 i_sysaccess='$i_sysaccess'
14901 i_sysdir='$i_sysdir'
14902 i_sysfile='$i_sysfile'
14903 i_sysfilio='$i_sysfilio'
14905 i_sysioctl='$i_sysioctl'
14906 i_syslog='$i_syslog'
14907 i_sysmman='$i_sysmman'
14908 i_sysmount='$i_sysmount'
14909 i_sysndir='$i_sysndir'
14910 i_sysparam='$i_sysparam'
14911 i_sysresrc='$i_sysresrc'
14912 i_syssecrt='$i_syssecrt'
14913 i_sysselct='$i_sysselct'
14914 i_syssockio='$i_syssockio'
14915 i_sysstat='$i_sysstat'
14916 i_sysstatfs='$i_sysstatfs'
14917 i_sysstatvfs='$i_sysstatvfs'
14918 i_systime='$i_systime'
14919 i_systimek='$i_systimek'
14920 i_systimes='$i_systimes'
14921 i_systypes='$i_systypes'
14922 i_sysuio='$i_sysuio'
14924 i_sysvfs='$i_sysvfs'
14925 i_syswait='$i_syswait'
14926 i_termio='$i_termio'
14927 i_termios='$i_termios'
14929 i_unistd='$i_unistd'
14932 i_values='$i_values'
14933 i_varargs='$i_varargs'
14934 i_varhdr='$i_varhdr'
14936 ignore_versioned_solibs='$ignore_versioned_solibs'
14937 inc_version_list='$inc_version_list'
14938 inc_version_list_init='$inc_version_list_init'
14941 installarchlib='$installarchlib'
14942 installbin='$installbin'
14943 installman1dir='$installman1dir'
14944 installman3dir='$installman3dir'
14945 installprefix='$installprefix'
14946 installprefixexp='$installprefixexp'
14947 installprivlib='$installprivlib'
14948 installscript='$installscript'
14949 installsitearch='$installsitearch'
14950 installsitebin='$installsitebin'
14951 installsitelib='$installsitelib'
14952 installstyle='$installstyle'
14953 installusrbinperl='$installusrbinperl'
14954 installvendorbin='$installvendorbin'
14955 installvendorlib='$installvendorlib'
14957 ivdformat='$ivdformat'
14960 known_extensions='$known_extensions'
14964 lddlflags='$lddlflags'
14966 ldlibpthname='$ldlibpthname'
14973 libsdirs='$libsdirs'
14974 libsfiles='$libsfiles'
14975 libsfound='$libsfound'
14976 libswanted='$libswanted'
14982 locincpth='$locincpth'
14983 loclibpth='$loclibpth'
14984 longdblsize='$longdblsize'
14985 longlongsize='$longlongsize'
14986 longsize='$longsize'
14990 lseeksize='$lseeksize'
14991 lseektype='$lseektype'
14995 make_set_make='$make_set_make'
14996 mallocobj='$mallocobj'
14997 mallocsrc='$mallocsrc'
14998 malloctype='$malloctype'
15000 man1direxp='$man1direxp'
15003 man3direxp='$man3direxp'
15006 mips_type='$mips_type'
15008 mmaptype='$mmaptype'
15010 modetype='$modetype'
15012 multiarch='$multiarch'
15014 myarchname='$myarchname'
15015 mydomain='$mydomain'
15016 myhostname='$myhostname'
15019 netdb_hlen_type='$netdb_hlen_type'
15020 netdb_host_type='$netdb_host_type'
15021 netdb_name_type='$netdb_name_type'
15022 netdb_net_type='$netdb_net_type'
15025 nm_so_opt='$nm_so_opt'
15026 nonxs_ext='$nonxs_ext'
15030 o_nonblock='$o_nonblock'
15032 old_pthread_create_joinable='$old_pthread_create_joinable'
15033 optimize='$optimize'
15034 orderlib='$orderlib'
15040 patchlevel='$patchlevel'
15041 path_sep='$path_sep'
15043 perladmin='$perladmin'
15044 perlpath='$perlpath'
15046 phostname='$phostname'
15049 pm_apiversion='$pm_apiversion'
15053 prefixexp='$prefixexp'
15055 privlibexp='$privlibexp'
15056 prototype='$prototype'
15058 quadkind='$quadkind'
15059 quadtype='$quadtype'
15060 randbits='$randbits'
15061 randfunc='$randfunc'
15062 randseedtype='$randseedtype'
15064 rd_nodata='$rd_nodata'
15068 sPRIEldbl='$sPRIEldbl'
15069 sPRIFldbl='$sPRIFldbl'
15070 sPRIGldbl='$sPRIGldbl'
15073 sPRIeldbl='$sPRIeldbl'
15074 sPRIfldbl='$sPRIfldbl'
15075 sPRIgldbl='$sPRIgldbl'
15080 sched_yield='$sched_yield'
15081 scriptdir='$scriptdir'
15082 scriptdirexp='$scriptdirexp'
15084 seedfunc='$seedfunc'
15085 selectminbits='$selectminbits'
15086 selecttype='$selecttype'
15087 sendmail='$sendmail'
15090 sharpbang='$sharpbang'
15091 shmattype='$shmattype'
15092 shortsize='$shortsize'
15095 sig_count='$sig_count'
15096 sig_name='$sig_name'
15097 sig_name_init='$sig_name_init'
15099 sig_num_init='$sig_num_init'
15100 signal_t='$signal_t'
15101 sitearch='$sitearch'
15102 sitearchexp='$sitearchexp'
15104 sitebinexp='$sitebinexp'
15106 sitelibexp='$sitelibexp'
15107 siteprefix='$siteprefix'
15108 siteprefixexp='$siteprefixexp'
15109 sizetype='$sizetype'
15114 sockethdr='$sockethdr'
15115 socketlib='$socketlib'
15117 spackage='$spackage'
15118 spitshell='$spitshell'
15121 ssizetype='$ssizetype'
15122 startperl='$startperl'
15124 static_ext='$static_ext'
15126 stdio_base='$stdio_base'
15127 stdio_bufsiz='$stdio_bufsiz'
15128 stdio_cnt='$stdio_cnt'
15129 stdio_filbuf='$stdio_filbuf'
15130 stdio_ptr='$stdio_ptr'
15131 stdio_stream_array='$stdio_stream_array'
15134 subversion='$subversion'
15141 timeincl='$timeincl'
15142 timetype='$timetype'
15155 uidformat='$uidformat'
15161 uquadtype='$uquadtype'
15162 use5005threads='$use5005threads'
15163 use64bits='$use64bits'
15165 useithreads='$useithreads'
15166 uselargefiles='$uselargefiles'
15167 uselongdouble='$uselongdouble'
15168 usemorebits='$usemorebits'
15169 usemultiplicity='$usemultiplicity'
15170 usemymalloc='$usemymalloc'
15172 useopcode='$useopcode'
15173 useperlio='$useperlio'
15174 useposix='$useposix'
15176 useshrplib='$useshrplib'
15177 usesocks='$usesocks'
15178 usethreads='$usethreads'
15179 usevendorprefix='$usevendorprefix'
15180 usevfork='$usevfork'
15183 uvoformat='$uvoformat'
15186 uvuformat='$uvuformat'
15187 uvxformat='$uvxformat'
15188 vendorbin='$vendorbin'
15189 vendorbinexp='$vendorbinexp'
15190 vendorlib='$vendorlib'
15191 vendorlibexp='$vendorlibexp'
15192 vendorprefix='$vendorprefix'
15193 vendorprefixexp='$vendorprefixexp'
15196 voidflags='$voidflags'
15198 xs_apiversion='$xs_apiversion'
15203 : Add in command line options if available
15204 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15206 : add special variables
15207 $test -f $src/patchlevel.h && \
15208 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15209 echo "CONFIGDOTSH=true" >>config.sh
15211 : propagate old symbols
15212 if $test -f UU/config.sh; then
15213 <UU/config.sh sort | uniq >UU/oldconfig.sh
15214 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15215 sort | uniq -u >UU/oldsyms
15216 set X `cat UU/oldsyms`
15222 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15224 echo "# Variables propagated from previous config.sh file." >>config.sh
15225 for sym in `cat UU/oldsyms`; do
15226 echo " Propagating $hint variable "'$'"$sym..."
15227 eval 'tmp="$'"${sym}"'"'
15229 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15235 : Finish up by extracting the .SH files
15249 If you'd like to make any changes to the config.sh file before I begin
15250 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15253 rp="Press return or use a shell escape to edit config.sh:"
15258 *) : in case they cannot read
15259 sh 1>&4 -c "$ans";;
15264 : if this fails, just run all the .SH files by hand
15271 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15278 Now you need to generate make dependencies by running "$make depend".
15279 You might prefer to run it in background: "$make depend > makedepend.out &"
15280 It can take a while, so you might not want to run it right now.
15285 rp="Run $make depend now?"
15289 $make depend && echo "Now you must run a $make."
15292 echo "You must run '$make depend' then '$make'."
15295 elif test -f [Mm]akefile; then
15297 echo "Now you must run a $make."
15302 if $test -f Policy.sh; then
15305 If you compile $package on a different machine or from a different object
15306 directory, copy the Policy.sh file from this object directory to the
15307 new one before you run Configure -- this will help you with most of
15308 the policy defaults.
15312 if $test -f config.msg; then
15313 echo "Hmm. I also noted the following information while running:"
15315 $cat config.msg >&4
15318 $rm -f kit*isdone ark*isdone