3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Wed Feb 16 01:07:15 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=''
688 inc_version_list_init=''
708 ignore_versioned_solibs=''
869 d_stdio_stream_array=''
870 stdio_stream_array=''
915 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
918 : We must find out about Eunice early
920 if test -f /etc/unixtovms; then
921 eunicefix=/etc/unixtovms
923 if test -f /etc/unixtovms.exe; then
924 eunicefix=/etc/unixtovms.exe
928 : set useposix=false in your hint file to disable the POSIX extension.
930 : set useopcode=false in your hint file to disable the Opcode extension.
932 : Trailing extension. Override this in a hint file, if needed.
934 : Extra object files, if any, needed on this platform.
936 : Possible local include directories to search.
937 : Set locincpth to "" in a hint file to defeat local include searches.
938 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
939 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
941 : no include file wanted by default
945 : change the next line if compiling for Xenix/286 on Xenix/386
946 xlibpth='/usr/lib/386 /lib/386'
948 : Possible local library directories to search.
949 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
950 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
952 : general looking path for locating libraries
953 glibpth="/usr/lib/large /lib/pa1.1 /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"
956 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
957 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
959 : Private path used by Configure to find libraries. Its value
960 : is prepended to libpth. This variable takes care of special
961 : machines, like the mips. Usually, it should be empty.
964 : default library list
966 : some systems want to use only the non-versioned libso:s
967 ignore_versioned_solibs=''
968 : set usemultiplicity on the Configure command line to enable multiplicity.
969 : set usesocks on the Configure command line to enable socks.
970 : set usethreads on the Configure command line to enable threads.
971 : full support for void wanted by default
974 : List of libraries we want.
975 : If anyone needs -lnet, put it in a hint file.
976 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
977 libswanted="$libswanted dld ld sun m c cposix posix"
978 libswanted="$libswanted ndir dir crypt sec"
979 libswanted="$libswanted ucb bsd BSD PW x"
980 : We probably want to search /usr/shlib before most other libraries.
981 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
982 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
983 glibpth="/usr/shlib $glibpth"
984 : Do not use vfork unless overridden by a hint file.
987 : Find the basic shell for Bourne shell scripts
991 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
994 if test -f "$xxx"; then
997 : Build up a list and do a single loop so we can 'break' out.
998 pth=`echo $PATH | sed -e "s/$p_/ /g"`
999 for xxx in sh bash ksh pdksh ash; do
1001 try="$try ${p}/${xxx}"
1005 if test -f "$xxx"; then
1008 elif test -f "$xxx.exe"; then
1019 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1021 Usually it's in /bin/sh. How did you even get this far?
1022 Please contact me (Perl Maintainers) at perlbug@perl.com and
1023 we'll try to straighten this all out.
1029 : see if sh knows # comments
1030 if `$sh -c '#' >/dev/null 2>&1`; then
1034 test -f $xcat || xcat=/usr/bin/cat
1039 if test -s today; then
1042 echo "#! $xcat" > try
1046 if test -s today; then
1054 echo "Your $sh doesn't grok # comments--I will strip them later on."
1057 echo "exec grep -v '^[ ]*#'" >spitshell
1059 $eunicefix spitshell
1060 spitshell=`pwd`/spitshell
1062 echo "I presume that if # doesn't work, #! won't work either!"
1067 : figure out how to guarantee sh startup
1069 '') startsh=${sharpbang}${sh} ;;
1081 : echo "Yup, it does."
1083 echo "Hmm... '$startsh' does not guarantee sh startup..."
1084 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1089 : Save command line options in file UU/cmdline.opt for later use in
1090 : generating config.sh.
1091 cat > cmdline.opt <<EOSH
1092 # Configure command line arguments.
1099 cat >>cmdline.opt <<EOSH
1100 config_arg$argn='$arg'
1102 argn=`expr $argn + 1`
1105 : produce awk script to parse command line options
1106 cat >options.awk <<'EOF'
1108 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1110 len = length(optstr);
1111 for (i = 1; i <= len; i++) {
1112 c = substr(optstr, i, 1);
1113 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1124 if (substr(str, 1, 1) != "-") {
1125 printf("'%s'\n", str);
1129 for (i = 2; i <= len; i++) {
1130 c = substr(str, i, 1);
1132 printf("-%s\n", substr(str, i));
1138 printf("'%s'\n", substr(str, i + 1));
1151 : process the command line options
1152 set X `for arg in "$@"; do echo "X$arg"; done |
1153 sed -e s/X// | awk -f options.awk`
1158 : set up default values
1168 rm -f optdef.sh posthint.sh
1169 cat >optdef.sh <<EOS
1175 while test $# -gt 0; do
1177 -d) shift; fastread=yes;;
1178 -e) shift; alldone=cont;;
1182 if test -r "$1"; then
1185 echo "$me: cannot read config file $1." >&2
1190 -h) shift; error=true;;
1191 -r) shift; reuseval=true;;
1192 -s) shift; silent=true; realsilent=true;;
1193 -E) shift; alldone=exit;;
1194 -K) shift; knowitall=true;;
1195 -O) shift; override=true;;
1196 -S) shift; silent=true; extractsh=true;;
1201 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1202 echo "$me: ignoring -D $1" >&2
1205 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1206 *) echo "$1='define'" >> optdef.sh;;
1213 *=) echo "$1" >> optdef.sh;;
1215 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1216 echo "$me: ignoring -U $1" >&2
1218 *) echo "$1='undef'" >> optdef.sh;;
1229 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1233 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1234 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1240 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1241 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1242 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1243 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1244 *) xxx=`echo $yyy|sed 's!:.*!!'`
1245 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1251 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1253 echo "$yyy=''" >> posthint.sh ;;
1258 echo "$yyy='$zzz'" >> posthint.sh ;;
1260 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1262 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1267 echo "$yyy=$zzz" >> posthint.sh ;;
1268 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1272 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1275 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1283 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1284 [-U symbol] [-U symbol=] [-A command:symbol...]
1285 -d : use defaults for all answers.
1286 -e : go on without questioning past the production of config.sh.
1287 -f : specify an alternate default configuration file.
1288 -h : print this help message and exit (with an error status).
1289 -r : reuse C symbols value if possible (skips costly nm extraction).
1290 -s : silent mode, only echoes questions and essential information.
1291 -D : define symbol to have some value:
1292 -D symbol symbol gets the value 'define'
1293 -D symbol=value symbol gets the value 'value'
1294 -E : stop at the end of questions, after having produced config.sh.
1295 -K : do not use unless you know what you are doing.
1296 -O : let -D and -U override definitions from loaded configuration file.
1297 -S : perform variable substitutions on all .SH files (can mix with -f)
1298 -U : undefine symbol:
1299 -U symbol symbol gets the value 'undef'
1300 -U symbol= symbol gets completely empty
1301 -A : manipulate symbol after the platform specific hints have been applied:
1302 -A symbol=value append " "value to symbol
1303 -A append:symbol=value append value to symbol
1304 -A define:symbol=value define symbol to have value
1305 -A clear:symbol define symbol to be ''
1306 -A define:symbol define symbol to be 'define'
1307 -A eval:symbol=value define symbol to be eval of value
1308 -A prepend:symbol=value prepend value to symbol
1309 -A undef:symbol define symbol to be 'undef'
1310 -A undef:symbol= define symbol to be ''
1311 -V : print version number and exit (with a zero status).
1318 case "$fastread$alldone" in
1321 if test ! -t 0; then
1322 echo "Say 'sh Configure', not 'sh <Configure'"
1330 true) exec 1>/dev/null;;
1333 : run the defines and the undefines, if any, but leave the file out there...
1336 : create the posthint manipulation script and leave the file out there...
1341 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1342 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1343 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1344 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1345 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1348 : Some greps do not return status, grrr.
1349 echo "grimblepritz" >grimble
1350 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1352 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1358 : the following should work in any shell
1362 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1363 cat >contains <<'EOSS'
1364 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1369 : Find the path to the source tree
1372 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1375 *) src=`cd ../$src && pwd` ;;
1388 if test -f $rsrc/Configure && \
1389 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1391 : found it, so we are ok.
1394 for src in . .. ../.. ../../.. ../../../..; do
1395 if test -f ../$src/Configure && \
1396 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1407 Sorry, I can't seem to locate the source dir for $package. Please start
1408 Configure with an explicit path -- i.e. /some/path/Configure.
1416 echo "Sources for $package found in \"$src\"." >&4
1420 : script used to extract .SH files with variable substitutions
1421 cat >extract <<'EOS'
1423 echo "Doing variable substitutions on .SH files..."
1424 if test -f $src/MANIFEST; then
1425 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1427 echo "(Looking for .SH files under the source directory.)"
1428 set x `(cd $src; find . -name "*.SH" -print)`
1432 0) set x `(cd $src; echo *.SH)`; shift;;
1434 if test ! -f $src/$1; then
1440 while test $name; do
1441 if test ! -d "$name"; then
1442 create="$name $create";
1443 name=`echo $name | sed -e "s|^[^/]*$||"`;
1444 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1449 for file in $create; do
1458 dir=`expr X$file : 'X\(.*\)/'`
1459 file=`expr X$file : 'X.*/\(.*\)'`
1460 (cd $dir && . ./$file)
1470 dir=`expr X$file : 'X\(.*\)/'`
1471 file=`expr X$file : 'X.*/\(.*\)'`
1472 (set x $dir; shift; eval $mkdir_p)
1482 if test -f $src/config_h.SH; then
1483 if test ! -f config.h; then
1484 : oops, they left it out of MANIFEST, probably, so do it anyway.
1490 : extract files and exit if asked to do so
1491 case "$extractsh" in
1493 case "$realsilent" in
1497 case "$config_sh" in
1498 '') config_sh='config.sh';;
1501 echo "Fetching answers from $config_sh..."
1504 test "$override" && . ./optdef.sh
1513 : Eunice requires " " instead of "", can you believe it
1516 echo "Beginning of configuration questions for $package."
1518 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1520 : first determine how to suppress newline on echo command
1522 echo "Checking echo to see how to suppress newlines..."
1523 (echo "hi there\c" ; echo " ") >.echotmp
1524 if $contains c .echotmp >/dev/null 2>&1 ; then
1535 echo $n "The star should be here-->$c"
1539 : Now test for existence of everything in MANIFEST
1541 if test -f $rsrc/MANIFEST; then
1542 echo "First let's make sure your kit is complete. Checking..." >&4
1543 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1546 for filelist in x??; do
1547 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1549 if test -s missing; then
1553 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1555 You have the option of continuing the configuration process, despite the
1556 distinct possibility that your kit is damaged, by typing 'y'es. If you
1557 do, don't blame me if something goes wrong. I advise you to type 'n'o
1558 and contact the author (perlbug@perl.com).
1561 echo $n "Continue? [n] $c" >&4
1565 echo "Continuing..." >&4
1569 echo "ABORTING..." >&4
1574 echo "Looks good..."
1577 echo "There is no MANIFEST file. I hope your kit is complete !"
1582 : Find the appropriate value for a newline for tr
1583 if test -n "$DJGPP"; then
1586 if test X"$trnl" = X; then
1587 case "`echo foo|tr '\n' x 2>/dev/null`" in
1591 if test X"$trnl" = X; then
1592 case "`echo foo|tr '\012' x 2>/dev/null`" in
1593 foox) trnl='\012' ;;
1596 if test X"$trnl" = X; then
1599 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1605 : compute the number of columns on the terminal for proper question formatting
1610 : set up the echo used in my read
1611 myecho="case \"\$xxxm\" in
1612 '') echo $n \"\$rp $c\" >&4;;
1614 '') echo $n \"[\$xxxm] $c\";;
1616 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1618 echo $n \"[\$xxxm] $c\" >&4
1620 echo $n \"\$rp [\$xxxm] $c\" >&4
1626 : now set up to do reads with possible shell escape and default assignment
1632 case "\$fastread" in
1633 yes) case "\$dflt" in
1636 case "\$silent-\$rp" in
1641 *) case "\$silent" in
1642 true) case "\$rp" in
1647 while expr "X\$ans" : "X!" >/dev/null; do
1651 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1659 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1668 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1673 echo "(OK, I'll run with -d after this question.)" >&4
1676 echo "*** Sorry, \$1 not supported yet." >&4
1686 echo "*** Substitution done -- please confirm."
1688 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1693 echo "*** Error -- try again."
1700 case "\$ans\$xxxm\$nostick" in
1712 : create .config dir to save info across Configure sessions
1713 test -d ../.config || mkdir ../.config
1714 cat >../.config/README <<EOF
1715 This directory created by Configure to save information that should
1716 persist across sessions for $package.
1718 You may safely delete it if you wish.
1721 : general instructions
1724 user=`(logname) 2>/dev/null`
1726 '') user=`whoami 2>&1`;;
1728 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1731 rp='Would you like to see the instructions?'
1742 This installation shell script will examine your system and ask you questions
1743 to determine how the perl5 package should be installed. If you get
1744 stuck on a question, you may use a ! shell escape to start a subshell or
1745 execute a command. Many of the questions will have default answers in square
1746 brackets; typing carriage return will give you the default.
1748 On some of the questions which ask for file or directory names you are allowed
1749 to use the ~name construct to specify the login directory belonging to "name",
1750 even if you don't have a shell which knows about that. Questions where this is
1751 allowed will be marked "(~name ok)".
1755 dflt='Type carriage return to continue'
1759 The prompter used in this script allows you to use shell variables and
1760 backticks in your answers. You may use $1, $2, etc... to refer to the words
1761 in the default answer, as if the default line was a set of arguments given to a
1762 script shell. This means you may also use $* to repeat the whole default line,
1763 so you do not have to re-type everything to add something to the default.
1765 Everytime there is a substitution, you will have to confirm. If there is an
1766 error (e.g. an unmatched backtick), the default answer will remain unchanged
1767 and you will be prompted again.
1769 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1770 the questions and use the computed defaults (or the previous answers if there
1771 was already a config.sh file). Type 'Configure -h' for a list of options.
1772 You may also start interactively and then answer '& -d' at any prompt to turn
1773 on the non-interactive behaviour for the remainder of the execution.
1779 Much effort has been expended to ensure that this shell script will run on any
1780 Unix system. If despite that it blows up on yours, your best bet is to edit
1781 Configure and run it again. If you can't run Configure for some reason,
1782 you'll have to generate a config.sh file by hand. Whatever problems you
1783 have, let me (perlbug@perl.com) know how I blew it.
1785 This installation script affects things in two ways:
1787 1) it may do direct variable substitutions on some of the files included
1789 2) it builds a config.h file for inclusion in C programs. You may edit
1790 any of these files as the need arises after running this script.
1792 If you make a mistake on a question, there is no easy way to back up to it
1793 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1794 files. Configure will offer to let you do this before it runs the SH files.
1797 dflt='Type carriage return to continue'
1799 case "$firsttime" in
1800 true) echo $user >>../.config/instruct;;
1804 : find out where common programs are
1806 echo "Locating common programs..." >&4
1819 if test -d \$dir/\$thing; then
1825 for thisthing in \$dir/\$thing; do
1826 : just loop through to pick last item
1828 if test -f \$thisthing; then
1831 elif test -f \$dir/\$thing.exe; then
1832 if test -n "$DJGPP"; then
1833 echo \$dir/\$thing.exe
1835 : on Eunice apparently
1886 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1887 pth="$pth /lib /usr/lib"
1888 for file in $loclist; do
1892 if test -f "$xxx"; then
1895 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1896 xxx=`./loc $file $file $pth`
1899 '') xxx=`./loc $file $file $pth`;;
1900 *) xxx=`./loc $xxx $xxx $pth`;;
1906 echo $file is in $xxx.
1909 echo $file is in $xxx.
1912 echo "I don't know where '$file' is, and my life depends on it." >&4
1913 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1919 echo "Don't worry if any of the following aren't found..."
1921 for file in $trylist; do
1925 if test -f "$xxx"; then
1928 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1929 xxx=`./loc $file $file $pth`
1932 '') xxx=`./loc $file $file $pth`;;
1933 *) xxx=`./loc $xxx $xxx $pth`;;
1939 echo $file is in $xxx.
1942 echo $file is in $xxx.
1945 echo "I don't see $file out there, $say."
1952 echo "Substituting grep for egrep."
1958 echo "Substituting cp for ln."
1964 echo "Hopefully test is built into your sh."
1967 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1968 echo "Using the test built into your sh."
1976 echo "Hopefully echo is built into your sh."
1981 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1982 $echo $n "hi there$c" >foo1
1983 echo $n "hi there$c" >foo2
1984 if cmp foo1 foo2 >/dev/null 2>&1; then
1985 echo "They are compatible. In fact, they may be identical."
1992 They are not compatible! You are probably running ksh on a non-USG system.
1993 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1994 have echo built in and we may have to run some Bourne shell scripts. That
1995 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1998 $echo $n "The star should be here-->$c"
2005 : determine whether symbolic links are supported
2008 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2009 echo "Symbolic links are supported." >&4
2012 echo "Symbolic links are NOT supported." >&4
2017 : see whether [:lower:] and [:upper:] are supported character classes
2019 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2021 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2025 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2026 # (0xc9 and 0xd1), therefore that is a nice testing point.
2027 if test "X$up" = X -o "X$low" = X; then
2028 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2034 if test "X$up" = X -o "X$low" = X; then
2035 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2041 if test "X$up" = X -o "X$low" = X; then
2042 case "`echo IJ | od -x 2>/dev/null`" in
2044 echo "Hey, this might be EBCDIC." >&4
2045 if test "X$up" = X -o "X$low" = X; then
2046 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2047 ij) up='[A-IJ-RS-Z]'
2052 if test "X$up" = X -o "X$low" = X; then
2053 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2063 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2065 echo "Using $up and $low to convert case." >&4
2068 echo "I don't know how to translate letters from upper to lower case." >&4
2069 echo "Your tr is not acting any way I know of." >&4
2073 : set up the translation script tr, must be called with ./tr of course
2077 '[A-Z][a-z]') exec $tr '$up' '$low';;
2078 '[a-z][A-Z]') exec $tr '$low' '$up';;
2085 : Try to determine whether config.sh was made on this system
2086 case "$config_sh" in
2088 myuname=`$uname -a 2>/dev/null`
2089 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2090 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2091 # because the A-Z/a-z are not consecutive.
2092 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2093 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2094 newmyuname="$myuname"
2096 case "$knowitall" in
2098 if test -f ../config.sh; then
2099 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2100 eval "`grep myuname= ../config.sh`"
2102 if test "X$myuname" = "X$newmyuname"; then
2110 : Get old answers from old config file if Configure was run on the
2111 : same system, otherwise use the hints.
2114 if test -f config.sh; then
2116 rp="I see a config.sh file. Shall I use it to set the defaults?"
2119 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2120 *) echo "Fetching default answers from your old config.sh file..." >&4
2128 : Older versions did not always set $sh. Catch re-use of such
2137 if test ! -f config.sh; then
2140 First time through, eh? I have some defaults handy for some systems
2141 that need some extra help getting the Configure answers right:
2144 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2146 : Half the following guesses are probably wrong... If you have better
2147 : tests or hints, please send them to perlbug@perl.com
2148 : The metaconfig authors would also appreciate a copy...
2149 $test -f /irix && osname=irix
2150 $test -f /xenix && osname=sco_xenix
2151 $test -f /dynix && osname=dynix
2152 $test -f /dnix && osname=dnix
2153 $test -f /lynx.os && osname=lynxos
2154 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2155 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2156 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2157 $test -f /bin/mips && /bin/mips && osname=mips
2158 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2159 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2160 $test -d /usr/apollo/bin && osname=apollo
2161 $test -f /etc/saf/_sactab && osname=svr4
2162 $test -d /usr/include/minix && osname=minix
2163 if $test -d /MachTen -o -d /MachTen_Folder; then
2165 if $test -x /sbin/version; then
2166 osvers=`/sbin/version | $awk '{print $2}' |
2167 $sed -e 's/[A-Za-z]$//'`
2168 elif $test -x /usr/etc/version; then
2169 osvers=`/usr/etc/version | $awk '{print $2}' |
2170 $sed -e 's/[A-Za-z]$//'`
2176 $test -f /sys/posix.dll &&
2177 $test -f /usr/bin/what &&
2178 set X `/usr/bin/what /sys/posix.dll` &&
2179 $test "$3" = UWIN &&
2183 if $test -f $uname; then
2191 umips) osname=umips ;;
2194 [23]100) osname=mips ;;
2195 next*) osname=next ;;
2197 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2198 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2201 elif $test -f /etc/kconfig; then
2203 if test "$lns" = "$ln -s"; then
2205 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2207 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2214 if test -n "$DJGPP"; then
2223 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2225 'not found') osvers="$4"."$3" ;;
2226 '<3240'|'<>3240') osvers=3.2.0 ;;
2227 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2228 '=3250'|'>3250') osvers=3.2.5 ;;
2232 bsd386) osname=bsd386
2235 cygwin*) osname=cygwin
2238 *dc.osx) osname=dcosx
2244 domainos) osname=apollo
2250 dynixptx*) osname=dynixptx
2251 osvers=`echo "$4"|sed 's/^v//'`
2253 freebsd) osname=freebsd
2255 genix) osname=genix ;;
2257 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2273 netbsd*) osname=netbsd
2276 news-os) osvers="$3"
2278 4*) osname=newsos4 ;;
2282 next*) osname=next ;;
2283 POSIX-BC | posix-bc ) osname=posix-bc
2286 powerux | power_ux | powermax_os | powermaxos | \
2287 powerunix | power_unix) osname=powerux
2293 solaris) osname=solaris
2295 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2302 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2306 titanos) osname=titanos
2315 ultrix) osname=ultrix
2318 osf1|mls+) case "$5" in
2321 osvers=`echo "$3" | sed 's/^[xvt]//'`
2323 hp*) osname=hp_osf1 ;;
2324 mips) osname=mips_osf1 ;;
2327 unixware) osname=svr5
2333 $2) case "$osname" in
2337 : svr4.x or possibly later
2347 if test -f /stand/boot ; then
2348 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2349 if test -n "$INITPROG" -a -f "$INITPROG"; then
2350 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2351 if test -n "$isesix"; then
2359 *) if test -f /etc/systemid; then
2361 set `echo $3 | $sed 's/\./ /g'` $4
2362 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2364 elif $test -f $src/hints/sco_$1_$2.sh; then
2366 elif $test -f $src/hints/sco_$1.sh; then
2371 '') : Still unknown. Probably a generic Sys V.
2380 *) case "$osname" in
2381 '') : Still unknown. Probably a generic BSD.
2389 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2390 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2391 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2394 $rm -f UU/kernel.what
2395 elif test -d c:/.; then
2402 : Now look for a hint file osname_osvers, unless one has been
2403 : specified already.
2406 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2407 : Also try without trailing minor version numbers.
2408 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2409 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2410 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2411 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2414 *) case "$osvers" in
2417 *) if $test -f $src/hints/$file.sh ; then
2419 elif $test -f $src/hints/$xfile.sh ; then
2421 elif $test -f $src/hints/$xxfile.sh ; then
2423 elif $test -f $src/hints/$xxxfile.sh ; then
2425 elif $test -f $src/hints/$xxxxfile.sh ; then
2427 elif $test -f "$src/hints/${osname}.sh" ; then
2436 if $test -f Policy.sh ; then
2439 none) dflt="Policy" ;;
2440 *) dflt="Policy $dflt" ;;
2445 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2449 if $test -f Policy.sh ; then
2452 There's also a Policy hint file available, which should make the
2453 site-specific (policy) questions easier to answer.
2460 You may give one or more space-separated answers, or "none" if appropriate.
2461 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2462 is a good thing. DO NOT give a wrong version or a wrong OS.
2466 rp="Which of these apply, if any?"
2469 for file in $tans; do
2470 if $test X$file = XPolicy -a -f Policy.sh; then
2472 $cat Policy.sh >> UU/config.sh
2473 elif $test -f $src/hints/$file.sh; then
2474 . $src/hints/$file.sh
2475 $cat $src/hints/$file.sh >> UU/config.sh
2476 elif $test X$tans = X -o X$tans = Xnone ; then
2479 : Give one chance to correct a possible typo.
2480 echo "$file.sh does not exist"
2482 rp="hint to use instead?"
2484 for file in $ans; do
2485 if $test -f "$src/hints/$file.sh"; then
2486 . $src/hints/$file.sh
2487 $cat $src/hints/$file.sh >> UU/config.sh
2488 elif $test X$ans = X -o X$ans = Xnone ; then
2491 echo "$file.sh does not exist -- ignored."
2498 : Remember our hint file for later.
2499 if $test -f "$src/hints/$file.sh" ; then
2509 echo "Fetching default answers from $config_sh..." >&4
2513 cp $config_sh config.sh 2>/dev/null
2523 test "$override" && . ./optdef.sh
2524 myuname="$newmyuname"
2526 : Restore computed paths
2527 for file in $loclist $trylist; do
2528 eval $file="\$_$file"
2533 Configure uses the operating system name and version to set some defaults.
2534 The default value is probably right if the name rings a bell. Otherwise,
2535 since spelling matters for me, either accept the default or answer "none"
2542 ''|' '|none) dflt=none ;;
2543 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2546 *) dflt="$osname" ;;
2548 rp="Operating system name?"
2552 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2558 ''|' '|none) dflt=none ;;
2559 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2560 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2562 ''|' ') dflt=none ;;
2567 *) dflt="$osvers" ;;
2569 rp="Operating system version?"
2579 : who configured the system
2580 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2581 cf_by=`(logname) 2>/dev/null`
2584 cf_by=`(whoami) 2>/dev/null`
2586 "") cf_by=unknown ;;
2590 : set up the script used to warn in case of inconsistency
2597 echo "*** WHOA THERE!!! ***" >&4
2598 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2599 rp=" Keep the $hint value?"
2602 y) td=$was; tu=$was;;
2606 : function used to set $1 to $val
2607 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2609 $define$undef) . ./whoa; eval "$var=\$td";;
2610 $undef$define) . ./whoa; eval "$var=\$tu";;
2611 *) eval "$var=$val";;
2616 Perl can be built to take advantage of threads on some systems.
2617 To do so, Configure must be run with -Dusethreads.
2619 Note that threading is a highly experimental feature, and
2620 some known race conditions still remain. If you choose to try
2621 it, be very sure to not actually deploy it for production
2622 purposes. README.threads has more details, and is required
2623 reading if you enable threads.
2625 case "$usethreads" in
2626 $define|true|[yY]*) dflt='y';;
2629 rp='Build a threading Perl?'
2632 y|Y) val="$define" ;;
2638 case "$usethreads" in
2642 As of 5.5.640, Perl has two different internal threading implementations,
2643 the 5.005 version (5005threads) and an interpreter-based version
2644 (ithreads) that has one interpreter per thread. Both are very
2645 experimental. This arrangement exists to help developers work out
2646 which one is better.
2648 If you're a casual user, you probably don't want interpreter-threads
2649 at this time. There doesn't yet exist a way to create threads from
2650 within Perl in this model, i.e., "use Thread;" will NOT work.
2652 : Default to ithreads unless overridden on command line or with
2655 case "$use5005threads" in
2656 $define|true|[yY]*) dflt='n';;
2658 case "$useithreads" in
2659 $undef|false|[nN]*) dflt='n';;
2661 rp='Use interpreter-based ithreads?'
2664 y|Y) val="$define" ;;
2669 : Now set use5005threads to the opposite value.
2670 case "$useithreads" in
2671 $define) val="$undef" ;;
2678 useithreads="$undef"
2679 use5005threads="$undef"
2683 case "$d_oldpthreads" in
2684 '') : Configure tests would be welcome here. For now, assume undef.
2686 *) val="$d_oldpthreads" ;;
2692 case "$usethreads" in
2693 "$define"|true|[yY]*)
2694 : Look for a hint-file generated 'call-back-unit'. If the
2695 : user has specified that a threading perl is to be built,
2696 : we may need to set or change some other defaults.
2697 if $test -f usethreads.cbu; then
2698 echo "Your platform has some specific hints for threaded builds, using them..."
2702 (Your platform doesn't have any specific hints for threaded builds.
2703 Assuming POSIX threads, then.)
2711 Perl can be built so that multiple Perl interpreters can coexist
2712 within the same Perl executable.
2715 case "$useithreads" in
2718 This multiple interpreter support is required for interpreter-based threads.
2723 echo 'Normally you do not need this and you should answer no.'
2724 case "$usemultiplicity" in
2725 $define|true|[yY]*) dflt='y';;
2728 rp='Build Perl for multiplicity?'
2731 y|Y) val="$define" ;;
2739 : determine where manual pages are on this system
2743 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2744 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2745 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2746 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2747 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2748 sysman=`./loc . /usr/man/man1 $syspath`
2751 if $test -d "$sysman"; then
2752 echo "System manual is in $sysman." >&4
2754 echo "Could not find manual pages in source form." >&4
2757 : see what memory models we can support
2760 $cat >pdp11.c <<'EOP'
2769 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2770 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2771 dflt='unsplit split'
2773 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2776 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2781 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2784 if $test -d /lib/large || $test -d /usr/lib/large; then
2787 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2796 Some systems have different model sizes. On most systems they are called
2797 small, medium, large, and huge. On the PDP11 they are called unsplit and
2798 split. If your system doesn't support different memory models, say "none".
2799 If you wish to force everything to one memory model, say "none" here and
2800 put the appropriate flags later when it asks you for other cc and ld flags.
2801 Venix systems may wish to put "none" and let the compiler figure things out.
2802 (In the following question multiple model names should be space separated.)
2804 The default for most systems is "none".
2807 rp="Which memory models are supported?"
2822 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2823 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2830 rp="What flag indicates separate I and D space?"
2838 *large*|*small*|*medium*|*huge*)
2845 rp="What flag indicates large model?"
2855 *huge*) case "$huge" in
2859 rp="What flag indicates huge model?"
2869 *medium*) case "$medium" in
2873 rp="What flag indicates medium model?"
2880 *) medium="$large";;
2883 *small*) case "$small" in
2887 rp="What flag indicates small model?"
2898 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2901 $rm -f pdp11.* pdp11
2903 : make some quick guesses about what we are up against
2905 $echo $n "Hmm... $c"
2915 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2916 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2918 echo "Looks kind of like an OSF/1 system, but we'll see..."
2920 elif test `echo abc | tr a-z A-Z` = Abc ; then
2921 xxx=`./loc addbib blurfl $pth`
2922 if $test -f $xxx; then
2923 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2927 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2928 echo "Looks kind of like an extended USG system, but we'll see..."
2930 echo "Looks kind of like a USG system, but we'll see..."
2934 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2935 echo "Looks kind of like a BSD system, but we'll see..."
2939 echo "Looks kind of like a Version 7 system, but we'll see..."
2942 case "$eunicefix" in
2945 There is, however, a strange, musty smell in the air that reminds me of
2946 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2950 : it so happens the Eunice I know will not run shell scripts in Unix format
2954 echo "Congratulations. You aren't running Eunice."
2958 : Detect OS2. The p_ variable is set above in the Head.U unit.
2963 I have the feeling something is not exactly right, however...don't tell me...
2964 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2969 if test -f /xenix; then
2970 echo "Actually, this looks more like a XENIX system..."
2975 echo "It's not Xenix..."
2980 if test -f /venix; then
2981 echo "Actually, this looks more like a VENIX system..."
2988 echo "Nor is it Venix..."
2991 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2992 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2995 : see if we need a special compiler
3003 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3004 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3018 On some older systems the default C compiler will not resolve multiple global
3019 references that happen to have the same name. On some such systems the "Mcc"
3020 command may be used to force these to be resolved. On other systems a "cc -M"
3021 command is required. (Note that the -M flag on other systems indicates a
3022 memory model to use!) If you have the Gnu C compiler, you might wish to use
3028 rp="Use which C compiler?"
3036 rp="Use which C compiler?"
3040 : Look for a hint-file generated 'call-back-unit'. Now that the
3041 : user has specified the compiler, we may need to set or change some
3043 if $test -f cc.cbu; then
3047 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3048 $cat >gccvers.c <<EOM
3053 printf("%s\n", __VERSION__);
3055 printf("%s\n", "1");
3061 if $cc -o gccvers gccvers.c; then
3062 gccversion=`./gccvers`
3063 case "$gccversion" in
3064 '') echo "You are not using GNU cc." ;;
3065 *) echo "You are using GNU cc $gccversion."
3070 echo "*** WHOA THERE!!! ***" >&4
3071 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3072 case "$knowitall" in
3074 echo " You'd better start hunting for one and let me know about it." >&4
3080 case "$gccversion" in
3081 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3084 : decide how portable to be. Allow command line overrides.
3085 case "$d_portable" in
3087 *) d_portable="$define" ;;
3090 : set up shell script to do ~ expansion
3096 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3099 if $test -f /bin/csh; then
3100 /bin/csh -f -c "glob \$1"
3105 name=\`$expr x\$1 : '..\([^/]*\)'\`
3106 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3107 if $test ! -d "\$dir"; then
3109 echo "\$me: can't locate home directory for: \$name" >&2
3114 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3130 : now set up to get a file name
3134 cat <<'EOSC' >>getfile
3150 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3151 fn=`echo $fn | sed 's/(.*)//'`
3157 loc_file=`expr $fn : '.*:\(.*\)'`
3158 fn=`expr $fn : '\(.*\):.*'`
3166 */*) fullpath=true;;
3175 *e*) exp_file=true;;
3178 *p*) nopath_ok=true;;
3183 *d*) type='Directory';;
3184 *l*) type='Locate';;
3189 Locate) what='File';;
3194 case "$d_portable" in
3202 while test "$type"; do
3207 true) rp="$rp (~name ok)";;
3210 if test -f UU/getfile.ok && \
3211 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3230 value=`UU/filexp $ans`
3233 if test "$ans" != "$value"; then
3234 echo "(That expands to $value on this system.)"
3248 /*) value="$ansexp" ;;
3253 echo "I shall only accept a full path name, as in /bin/ls." >&4
3254 echo "Use a ! shell escape if you wish to check pathnames." >&4
3257 echo "Please give a full path name, starting with slash." >&4
3260 echo "Note that using ~name is ok provided it expands well." >&4
3273 for fp in $gfpth; do
3274 if test "X$fp" = X.; then
3279 if test -f "$pf"; then
3281 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3283 echo "($value is not a plain file, but that's ok.)"
3286 if test X"$type" = X; then
3293 for fp in $gfpth; do
3294 if test "X$fp" = X.; then
3299 if test -d "$pf"; then
3307 if test -d "$ansexp"; then
3308 echo "(Looking for $loc_file in directory $value.)"
3309 value="$value/$loc_file"
3310 ansexp="$ansexp/$loc_file"
3312 if test -f "$ansexp"; then
3315 case "$nopath_ok" in
3316 true) case "$value" in
3318 *) echo "Assuming $value will be in people's path."
3334 if test "$fastread" = yes; then
3339 rp="$what $value doesn't exist. Use that name anyway?"
3358 test "X$gfpthkeep" != Xy && gfpth=""
3361 : What should the include directory be ?
3363 $echo $n "Hmm... $c"
3367 if $test -f /bin/mips && /bin/mips; then
3368 echo "Looks like a MIPS system..."
3369 $cat >usr.c <<'EOCP'
3370 #ifdef SYSTYPE_BSD43
3374 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3375 dflt='/bsd43/usr/include'
3379 mips_type='System V'
3381 $rm -f usr.c usr.out
3382 echo "and you're compiling with the $mips_type compiler and libraries."
3386 echo "Doesn't look like a MIPS system."
3396 case "$xxx_prompt" in
3399 rp='Where are the include files you want to use?'
3407 : see how we invoke the C preprocessor
3409 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3410 cat <<'EOT' >testcpp.c
3416 if test ! -f cppstdin; then
3417 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3418 # AIX cc -E doesn't show the absolute headerfile
3419 # locations but we'll cheat by using the -M flag.
3420 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
3422 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3425 echo "Keeping your $hint cppstdin wrapper."
3428 wrapper=`pwd`/cppstdin
3432 if $test "X$cppstdin" != "X" && \
3433 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3434 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3436 echo "You used to use $cppstdin $cppminus so we'll use that again."
3438 '') echo "But let's see if we can live without a wrapper..." ;;
3440 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3441 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3443 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3446 echo "(However, $cpprun $cpplast does not work, let's see...)"
3454 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3461 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3462 $cc -E <testcpp.c >testcpp.out 2>&1; \
3463 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3464 echo "Yup, it does."
3467 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3468 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3469 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3470 echo "Yup, it does."
3473 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3474 $cc -P <testcpp.c >testcpp.out 2>&1; \
3475 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3476 echo "Yipee, that works!"
3479 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3480 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3481 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3482 echo "At long last!"
3485 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3486 $cpp <testcpp.c >testcpp.out 2>&1; \
3487 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3491 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3492 $cpp - <testcpp.c >testcpp.out 2>&1; \
3493 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3494 echo "Hooray, it works! I was beginning to wonder."
3497 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3498 $wrapper <testcpp.c >testcpp.out 2>&1; \
3499 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3505 rp="No dice. I can't find a C preprocessor. Name one:"
3509 $x_cpp <testcpp.c >testcpp.out 2>&1
3510 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3511 echo "OK, that will do." >&4
3513 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3528 echo "Perhaps can we force $cc -E using a wrapper..."
3529 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3530 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3536 echo "Nope, we'll have to live without it..."
3550 "$wrapper"|'cppstdin') ;;
3551 *) $rm -f $wrapper;;
3553 $rm -f testcpp.c testcpp.out
3555 : Set private lib path
3558 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3563 '') dlist="$loclibpth $plibpth $glibpth";;
3564 *) dlist="$libpth";;
3567 : Now check and see which directories actually exist, avoiding duplicates
3571 if $test -d $xxx; then
3574 *) libpth="$libpth $xxx";;
3580 Some systems have incompatible or broken versions of libraries. Among
3581 the directories listed in the question below, please remove any you
3582 know not to be holding relevant libraries, and add any that are needed.
3583 Say "none" for none.
3594 rp="Directories to use for library searches?"
3601 : compute shared library extension
3604 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3614 On some systems, shared libraries may be available. Answer 'none' if
3615 you want to suppress searching of shared libraries for the remainder
3616 of this configuration.
3619 rp='What is the file extension used for shared libraries?'
3623 : Define several unixisms.
3624 : Hints files or command line option can be used to override them.
3625 : The convoluted testing is in case hints files set either the old
3628 '') case "$exe_ext" in
3630 *) _exe="$exe_ext" ;;
3635 '') case "$lib_ext" in
3642 '') case "$obj_ext" in
3649 '') case "$path_sep" in
3660 : Which makefile gets called first. This is used by make depend.
3661 case "$firstmakefile" in
3662 '') firstmakefile='makefile';;
3667 Perl can be built to use the SOCKS proxy protocol library. To do so,
3668 Configure must be run with -Dusesocks.
3670 Normally you do not need this and you should answer no.
3674 $define|true|[yY]*) dflt='y';;
3677 rp='Build Perl for SOCKS?'
3680 y|Y) val="$define" ;;
3686 : Looking for optional libraries
3688 echo "Checking for optional libraries..." >&4
3693 case "$libswanted" in
3694 '') libswanted='c_s';;
3698 libswanted="$libswanted socks5 socks5_sh"
3701 for thislib in $libswanted; do
3702 for thisdir in $libpth; do
3704 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3705 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3706 $test -f "$xxx" && eval $libscheck
3707 $test -f "$xxx" && libstyle=shared
3709 if test ! -f "$xxx"; then
3710 xxx=$thisdir/lib$thislib.$so
3711 $test -f "$xxx" && eval $libscheck
3712 $test -f "$xxx" && libstyle=shared
3714 if test ! -f "$xxx"; then
3715 xxx=$thisdir/lib$thislib$_a
3716 $test -f "$xxx" && eval $libscheck
3717 $test -f "$xxx" && libstyle=static
3719 if test ! -f "$xxx"; then
3720 xxx=$thisdir/$thislib$_a
3721 $test -f "$xxx" && eval $libscheck
3722 $test -f "$xxx" && libstyle=static
3724 if test ! -f "$xxx"; then
3725 xxx=$thisdir/lib${thislib}_s$_a
3726 $test -f "$xxx" && eval $libscheck
3727 $test -f "$xxx" && libstyle=static
3729 if test ! -f "$xxx"; then
3730 xxx=$thisdir/Slib$thislib$_a
3731 $test -f "$xxx" && eval $libscheck
3732 $test -f "$xxx" && libstyle=static
3734 if $test -f "$xxx"; then
3736 shared) echo "Found -l$thislib (shared)." ;;
3737 static) echo "Found -l$thislib." ;;
3738 *) echo "Found -l$thislib ($libstyle)." ;;
3742 *) dflt="$dflt -l$thislib"
3743 libsfound="$libsfound $xxx"
3745 libsfiles="$libsfiles $yyy"
3746 yyy=`echo $xxx|sed "s@/$yyy\\$@@"`
3747 case " $libsdirs " in
3749 *) libsdirs="$libsdirs $yyy" ;;
3756 if $test ! -f "$xxx"; then
3757 echo "No -l$thislib."
3768 ' '|'') dflt='none';;
3773 In order to compile $package on your machine, a number of libraries
3774 are usually needed. Include any other special libraries here as well.
3775 Say "none" for none. The default list is almost always right.
3779 rp="What libraries to use?"
3786 : determine optimization, if desired, or use for debug flag also
3788 ' '|$undef) dflt='none';;
3790 *) dflt="$optimize";;
3794 By default, $package compiles with the -O flag to use the optimizer.
3795 Alternately, you might want to use the symbolic debugger, which uses
3796 the -g flag (on traditional Unix systems). Either flag can be
3797 specified here. To use neither flag, specify the word "none".
3800 rp="What optimizer/debugger flag should be used?"
3804 'none') optimize=" ";;
3808 : We will not override a previous value, but we might want to
3809 : augment a hint file
3811 default|recommended)
3812 case "$gccversion" in
3813 1*) dflt='-fpcc-struct-return' ;;
3816 *-g*) dflt="$dflt -DDEBUGGING";;
3818 case "$gccversion" in
3819 2*) if test -d /etc/conf/kconfig.d &&
3820 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3826 case "$gccversion" in
3830 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3831 echo 'int main(void) { return 0; }' > gcctest.c
3832 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3833 echo "Yes, it does." 2>&1
3836 echo "Leaving current flags $ccflags alone." 2>&1
3838 *) dflt="$dflt -fno-strict-aliasing" ;;
3841 echo "Nope, it doesn't, but that's ok." 2>&1
3848 case "$mips_type" in
3849 *BSD*|'') inclwanted="$locincpth $usrinc";;
3850 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3852 for thisincl in $inclwanted; do
3853 if $test -d $thisincl; then
3854 if $test x$thisincl != x$usrinc; then
3857 *) dflt="$dflt -I$thisincl";;
3863 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3865 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3873 *) dflt="$dflt -D$2";;
3877 set signal.h LANGUAGE_C; eval $inctest
3881 ccflags="$ccflags -DSOCKS"
3886 default|recommended) dflt="$ccflags $dflt" ;;
3887 *) dflt="$ccflags";;
3895 Your C compiler may want other flags. For this question you should include
3896 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3897 but you should NOT include libraries or ld flags like -lwhatever. If you
3898 want $package to honor its debug switch, you should include -DDEBUGGING here.
3899 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3901 To use no flags, specify the word "none".
3907 rp="Any additional cc flags?"
3914 : the following weeds options from ccflags that are of no interest to cpp
3916 case "$gccversion" in
3917 1*) cppflags="$cppflags -D__GNUC__"
3919 case "$mips_type" in
3921 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3927 echo "Let me guess what the preprocessor flags are..." >&4
3941 *) ftry="$previous $flag";;
3943 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3944 >cpp1.out 2>/dev/null && \
3945 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3946 >cpp2.out 2>/dev/null && \
3947 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3948 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3950 cppflags="$cppflags $ftry"
3960 *-*) echo "They appear to be: $cppflags";;
3962 $rm -f cpp.c cpp?.out
3966 : flags used in final linking phase
3968 '') if ./venix; then
3974 *-posix*) dflt="$dflt -posix" ;;
3977 *) dflt="$ldflags";;
3980 : Try to guess additional flags to pick up local libraries.
3981 for thislibdir in $libpth; do
3982 case " $loclibpth " in
3985 *"-L$thislibdir "*) ;;
3986 *) dflt="$dflt -L$thislibdir" ;;
3998 Your C linker may need flags. For this question you should
3999 include -L/whatever and any other flags used by the C linker, but you
4000 should NOT include libraries like -lwhatever.
4002 Make sure you include the appropriate -L/path flags if your C linker
4003 does not normally search all of the directories you specified above,
4006 To use no flags, specify the word "none".
4010 rp="Any additional ld flags (NOT including libraries)?"
4016 rmlist="$rmlist pdp11"
4020 echo "Checking your choice of C compiler and flags for coherency..." >&4
4021 $cat > try.c <<'EOF'
4023 int main() { printf("Ok\n"); exit(0); }
4025 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4027 $cat >try.msg <<'EOM'
4028 I've tried to compile and run the following simple program:
4031 $cat try.c >> try.msg
4033 $cat >> try.msg <<EOM
4040 and I got the following output:
4044 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4045 if sh -c './try' >>try.msg 2>&1; then
4049 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4052 cat >> try.msg <<'EOQS'
4053 If $libs contains -lsfio, and sfio is mis-configured, then it
4054 sometimes (apparently) runs and exits with a 0 status, but with no
4055 output! It may have to do with sfio's use of _exit vs. exit.
4058 rp="You have a big problem. Shall I abort Configure"
4065 echo "The program compiled OK, but exited with status $?." >>try.msg
4066 rp="You have a problem. Shall I abort Configure"
4070 echo "I can't compile the test program." >>try.msg
4071 rp="You have a BIG problem. Shall I abort Configure"
4077 case "$knowitall" in
4079 echo "(The supplied flags or libraries might be incorrect.)"
4087 *) echo "Ok. Stopping Configure." >&4
4092 n) echo "OK, that should do.";;
4094 $rm -f try try.* core
4096 : define an is-a-typedef? function
4097 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4099 "") inclist="sys/types.h";;
4101 eval "varval=\$$var";
4105 for inc in $inclist; do
4106 echo "#include <$inc>" >>temp.c;
4108 echo "#ifdef $type" >> temp.c;
4109 echo "printf(\"We have $type\");" >> temp.c;
4110 echo "#endif" >> temp.c;
4111 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4112 if $contains $type temp.E >/dev/null 2>&1; then
4118 *) eval "$var=\$varval";;
4121 : define an is-a-typedef? function that prompts if the type is not available.
4122 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4124 "") inclist="sys/types.h";;
4126 eval "varval=\$$var";
4130 for inc in $inclist; do
4131 echo "#include <$inc>" >>temp.c;
4133 echo "#ifdef $type" >> temp.c;
4134 echo "printf(\"We have $type\");" >> temp.c;
4135 echo "#endif" >> temp.c;
4136 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4138 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4139 if $contains $type temp.E >/dev/null 2>&1; then
4140 echo "$type found." >&4;
4143 echo "$type NOT found." >&4;
4149 *) eval "$var=\$varval";;
4152 : define a shorthand compile call
4156 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4157 : define a shorthand compile call for compilations that should be ok.
4161 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4163 : check for lengths of integral types
4167 echo "Checking to see how big your integers are..." >&4
4168 $cat >intsize.c <<'EOCP'
4172 printf("intsize=%d;\n", (int)sizeof(int));
4173 printf("longsize=%d;\n", (int)sizeof(long));
4174 printf("shortsize=%d;\n", (int)sizeof(short));
4179 if eval $compile_ok && ./intsize > /dev/null; then
4181 echo "Your integers are $intsize bytes long."
4182 echo "Your long integers are $longsize bytes long."
4183 echo "Your short integers are $shortsize bytes long."
4187 Help! I can't compile and run the intsize test program: please enlighten me!
4188 (This is probably a misconfiguration in your system or libraries, and
4189 you really ought to fix it. Still, I'll try anyway.)
4193 rp="What is the size of an integer (in bytes)?"
4197 rp="What is the size of a long integer (in bytes)?"
4201 rp="What is the size of a short integer (in bytes)?"
4207 $rm -f intsize intsize.*
4209 : see what type lseek is declared as in the kernel
4210 rp="What is the type used for lseek's offset on this system?"
4211 set off_t lseektype long stdio.h sys/types.h
4215 $echo $n "Checking to see how big your file offsets are...$c" >&4
4217 #include <sys/types.h>
4221 printf("%d\n", (int)sizeof($lseektype));
4226 if eval $compile_ok; then
4228 $echo " $lseeksize bytes." >&4
4232 echo "(I can't seem to compile the test program. Guessing...)"
4233 rp="What is the size of your file offsets (in bytes)?"
4239 : see what type file positions are declared as in the library
4240 rp="What is the type for file position used by fsetpos()?"
4241 set fpos_t fpostype long stdio.h sys/types.h
4246 *_t) zzz="$fpostype" ;;
4249 $echo $n "Checking the size of $zzz...$c" >&4
4251 #include <sys/types.h>
4254 printf("%d\n", (int)sizeof($fpostype));
4259 if eval $compile_ok; then
4264 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4267 echo " $fpossize bytes."
4273 echo "(I can't compile the test program. Guessing...)" >&4
4274 rp="What is the size of your file positions (in bytes)?"
4281 case "$lseeksize:$fpossize" in
4284 You can have files larger than 2 gigabytes.
4289 Perl can be built to understand large files (files larger than 2 gigabytes)
4290 on some systems. To do so, Configure must be run with -Duselargefiles.
4292 If this doesn't make any sense to you, just accept the default 'y'.
4294 case "$uselargefiles" in
4295 "$undef"|false|[nN]*) dflt='n' ;;
4298 rp='Try to understand large files, if available?'
4301 y|Y) val="$define" ;;
4308 case "$uselargefiles" in
4310 : Look for a hint-file generated 'call-back-unit'. If the
4311 : user has specified that a large files perl is to be built,
4312 : we may need to set or change some other defaults.
4313 if $test -f uselfs.cbu; then
4314 echo "Your platform has some specific hints for large file builds, using them..."
4317 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4319 #include <sys/types.h>
4323 printf("%d\n", (int)sizeof($lseektype));
4328 if eval $compile_ok; then
4330 $echo " $lseeksize bytes." >&4
4334 echo "(I can't seem to compile the test program. Guessing...)"
4335 rp="What is the size of your file offsets (in bytes)?"
4340 *_t) zzz="$fpostype" ;;
4343 $echo $n "Rechecking the size of $zzz...$c" >&4
4345 #include <sys/types.h>
4348 printf("%d\n", (int)sizeof($fpostype));
4353 if eval $compile_ok; then
4358 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4361 echo " $fpossize bytes."
4367 echo "(I can't compile the test program. Guessing...)" >&4
4368 rp="What is the size of your file positions (in bytes)?"
4378 case "$usemorebits" in
4379 "$define"|true|[yY]*)
4381 uselongdouble="$define"
4382 usemorebits="$define"
4384 *) usemorebits="$undef"
4389 case "$intsize:$longsize" in
4392 You have natively 64-bit integers.
4396 *) case "$ccflags" in
4397 *-DUSE_64_BITS*|*-DUSE_LONG_LONG*) use64bits="$define";;
4398 *) case "$uselonglong" in
4399 $define|true|[yY]*) use64bits="$define";;
4403 case "$use64bits" in
4404 $define|true|[yY]*) dflt='y';;
4409 Perl can be built to take advantage of 64-bit integer types
4410 on some systems. To do so, Configure must be run with -Duse64bits.
4412 If this doesn't make any sense to you, just accept the default '$dflt'.
4414 rp='Try to use 64-bit integers, if available?'
4417 [yY]*) val="$define" ;;
4425 case "$archname64" in
4426 '') archname64='' ;; # not a typo
4429 case "$use64bits" in
4430 "$define"|true|[yY]*)
4431 : Look for a hint-file generated 'call-back-unit'. If the
4432 : user has specified that a 64-bit perl is to be built,
4433 : we may need to set or change some other defaults.
4434 if $test -f use64bits.cbu; then
4435 echo "Your platform has some specific hints for 64-bit builds, using them..."
4439 (Your platform doesn't have any specific hints for 64-bit builds.)
4441 case "$intsize:$longsize" in
4443 (This is probably okay, as your system is a natively 64-bit system.)
4447 case "$gccversion" in
4449 *) case "$ccflags" in
4452 But since you seem to be using gcc, I will now add -DUSE_64_BITS
4453 to the compilation flags to get long longs.
4455 ccflags="$ccflags -DUSE_64_BITS"
4464 : determine the architecture name
4466 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4467 tarch=`arch`"-$osname"
4468 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4469 if uname -m > tmparch 2>&1 ; then
4470 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4471 -e 's/$/'"-$osname/" tmparch`
4479 case "$myarchname" in
4482 echo "(Your architecture name used to be $myarchname.)"
4489 *) dflt="$archname";;
4491 rp='What is your architecture name'
4494 case "$usethreads" in
4496 echo "Threads selected." >&4
4498 *-thread*) echo "...and architecture name already has -thread." >&4
4500 *) archname="$archname-thread"
4501 echo "...setting architecture name to $archname." >&4
4506 case "$usemultiplicity" in
4508 echo "Multiplicity selected." >&4
4510 *-multi*) echo "...and architecture name already has -multi." >&4
4512 *) archname="$archname-multi"
4513 echo "...setting architecture name to $archname." >&4
4518 case "$use64bits" in
4520 case "$archname64" in
4525 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4527 *) archname="$archname-$archname64"
4528 echo "...setting architecture name to $archname." >&4
4535 : determine root of directory hierarchy where package will be installed.
4538 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4546 By default, $package will be installed in $dflt/bin, manual pages
4547 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4548 installation directories. Typically this is something like /usr/local.
4549 If you wish to have binaries under /usr/bin but other parts of the
4550 installation under /usr/local, that's ok: you will be prompted
4551 separately for each of the installation directories, the prefix being
4552 only used to set the defaults.
4556 rp='Installation prefix to use?'
4564 *) oldprefix="$prefix";;
4574 $define|true) afs=true ;;
4575 $undef|false) afs=false ;;
4576 *) if test -d /afs; then
4584 echo "AFS may be running... I'll be extra cautious then..." >&4
4586 echo "AFS does not seem to be running..." >&4
4589 : determine installation prefix for where package is to be installed.
4593 Since you are running AFS, I need to distinguish the directory in which
4594 files will reside from the directory in which they are installed (and from
4595 which they are presumably copied to the former directory by occult means).
4598 case "$installprefix" in
4599 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4600 *) dflt="$installprefix";;
4605 In some special cases, particularly when building $package for distribution,
4606 it is convenient to distinguish between the directory in which files should
4607 be installed from the directory ($prefix) in which they
4608 will eventually reside. For most users, these two directories are the same.
4611 case "$installprefix" in
4613 *) dflt=$installprefix;;
4617 rp='What installation prefix should I use for installing files?'
4619 installprefix="$ans"
4620 installprefixexp="$ansexp"
4622 : set the prefixit variable, to compute a suitable default value
4623 prefixit='case "$3" in
4625 case "$oldprefix" in
4626 "") eval "$1=\"\$$2\"";;
4633 ""|" ") eval "$1=\"\$$2\"";;
4639 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4641 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4642 /*-$oldprefix/*|\~*-$oldprefix/*)
4643 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4644 *) eval "$1=\"\$$2\"";;
4648 : set the base revision
4652 : get the patchlevel
4654 echo "Getting the current patchlevel..." >&4
4655 if $test -r $rsrc/patchlevel.h;then
4656 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4657 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4658 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4659 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4660 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4668 $echo $n "(You have $package" $c
4671 *) $echo $n " $baserev" $c ;;
4673 $echo $n " patchlevel $patchlevel" $c
4674 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4678 : XXX Should be a Configure test for double-dots in filenames.
4679 version=`echo $baserev $patchlevel $subversion | \
4680 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4681 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4682 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4685 version=`echo $baserev $patchlevel $subversion | \
4686 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4687 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4688 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4691 : Special case the 5.005_xx maintenance series, which used 5.005
4692 : without any subversion label as a subdirectory in $sitelib
4693 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4694 api_versionstring='5.005'
4697 : determine installation style
4698 : For now, try to deduce it from prefix unless it is already set.
4699 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4700 case "$installstyle" in
4701 '') case "$prefix" in
4702 *perl*) dflt='lib';;
4703 *) dflt='lib/perl5' ;;
4706 *) dflt='lib/perl5' ;;
4708 : Probably not worth prompting for this since we prompt for all
4709 : the directories individually, and the prompt would be too long and
4713 : determine where private library files go
4714 : Usual default is /usr/local/lib/perl5/$version.
4715 : Also allow things like /opt/perl/lib/$version, since
4716 : /opt/perl/lib/perl5... would be redundant.
4717 : The default "style" setting is made in installstyle.U
4718 case "$installstyle" in
4719 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4720 *) set dflt privlib lib/$version ;;
4725 There are some auxiliary files for $package that need to be put into a
4726 private library directory that is accessible by everyone.
4730 rp='Pathname where the private library files will reside?'
4733 privlibexp="$ansexp"
4734 : Change installation prefix, if necessary.
4735 if $test X"$prefix" != X"$installprefix"; then
4736 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4738 installprivlib="$privlibexp"
4741 : set the prefixup variable, to restore leading tilda escape
4742 prefixup='case "$prefixexp" in
4744 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4747 : determine where public architecture dependent libraries go
4750 : privlib default is /usr/local/lib/$package/$version
4751 : archlib default is /usr/local/lib/$package/$version/$archname
4752 : privlib may have an optional trailing /share.
4753 tdflt=`echo $privlib | $sed 's,/share$,,'`
4754 tdflt=$tdflt/$archname
4763 $spackage contains architecture-dependent library files. If you are
4764 sharing libraries in a heterogeneous environment, you might store
4765 these files in a separate location. Otherwise, you can just include
4766 them with the rest of the public library files.
4770 rp='Where do you want to put the public architecture-dependent libraries?'
4773 archlibexp="$ansexp"
4774 if $test X"$archlib" = X"$privlib"; then
4779 : Change installation prefix, if necessary.
4780 if $test X"$prefix" != X"$installprefix"; then
4781 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4783 installarchlib="$archlibexp"
4787 : Binary compatibility with 5.005 is not possible for builds
4788 : with advanced features
4789 case "$usethreads$usemultiplicity" in
4791 bincompat5005="$undef"
4792 d_bincompat5005="$undef"
4796 Perl 5.006 can be compiled for binary compatibility with 5.005.
4797 If you decide to do so, you will be able to continue using most
4798 of the extensions that were compiled for Perl 5.005.
4801 case "$bincompat5005$d_bincompat5005" in
4802 *"$undef"*) dflt=n ;;
4805 rp='Binary compatibility with Perl 5.005?'
4808 y*) val="$define" ;;
4813 case "$d_bincompat5005" in
4815 bincompat5005="$define"
4817 *) bincompat5005="$undef"
4818 d_bincompat5005="$undef"
4825 : see if setuid scripts can be secure
4828 Some kernels have a bug that prevents setuid #! scripts from being
4829 secure. Some sites have disabled setuid #! scripts because of this.
4831 First let's decide if your kernel supports secure setuid #! scripts.
4832 (If setuid #! scripts would be secure but have been disabled anyway,
4833 don't say that they are secure if asked.)
4838 if $test -d /dev/fd; then
4839 echo "#!$ls" >reflect
4840 chmod +x,u+s reflect
4841 ./reflect >flect 2>&1
4842 if $contains "/dev/fd" flect >/dev/null; then
4843 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4847 If you are not sure if they are secure, I can check but I'll need a
4848 username and password different from the one you are using right now.
4849 If you don't have such a username or don't want me to test, simply
4853 rp='Other username to test security of setuid scripts with?'
4858 case "$d_suidsafe" in
4859 '') echo "I'll assume setuid scripts are *not* secure." >&4
4862 echo "Well, the $hint value is *not* secure." >&4
4864 *) echo "Well, the $hint value *is* secure." >&4
4869 $rm -f reflect flect
4870 echo "#!$ls" >reflect
4871 chmod +x,u+s reflect
4874 echo '"su" will (probably) prompt you for '"$ans's password."
4875 su $ans -c './reflect >flect'
4876 if $contains "/dev/fd" flect >/dev/null; then
4877 echo "Okay, it looks like setuid scripts are secure." >&4
4880 echo "I don't think setuid scripts are secure." >&4
4885 rp='Does your kernel have *secure* setuid scripts?'
4888 [yY]*) val="$define";;
4893 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4894 echo "(That's for file descriptors, not floppy disks.)"
4900 $rm -f reflect flect
4902 : now see if they want to do setuid emulation
4905 case "$d_suidsafe" in
4908 echo "No need to emulate SUID scripts since they are secure here." >& 4
4912 Some systems have disabled setuid scripts, especially systems where
4913 setuid scripts cannot be secure. On systems where setuid scripts have
4914 been disabled, the setuid/setgid bits on scripts are currently
4915 useless. It is possible for $package to detect those bits and emulate
4916 setuid/setgid in a secure fashion. This emulation will only work if
4917 setuid scripts have been disabled in your kernel.
4921 "$define") dflt=y ;;
4924 rp="Do you want to do setuid/setgid emulation?"
4927 [yY]*) val="$define";;
4935 : determine filename position in cpp output
4937 echo "Computing filename position in cpp output for #include directives..." >&4
4938 echo '#include <stdio.h>' > foo.c
4941 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4942 $grep '^[ ]*#.*stdio\.h' | \
4943 while read cline; do
4946 while $test \$# -gt 0; do
4947 if $test -r \`echo \$1 | $tr -d '"'\`; then
4952 pos=\`expr \$pos + 1\`
4964 *) pos="${fieldn}th";;
4966 echo "Your cpp writes the filename in the $pos field of the line."
4968 : locate header file
4973 for usrincdir in $usrinc
4975 if test -f \$usrincdir/\$wanted; then
4976 echo "\$usrincdir/\$wanted"
4980 awkprg='{ print \$$fieldn }'
4981 echo "#include <\$wanted>" > foo\$\$.c
4982 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4983 $grep "^[ ]*#.*\$wanted" | \
4984 while read cline; do
4985 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4987 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4988 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4993 # status = 0: grep returned 0 lines, case statement not executed
4994 # status = 1: headerfile found
4995 # status = 2: while loop executed, no headerfile found
4999 if test \$status -eq 1; then
5006 : define an alternate in-header-list? function
5007 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5008 cont=true; xxf="echo \"<\$1> found.\" >&4";
5009 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5010 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5012 case $# in 4) instead=instead;; *) instead="at last";; esac;
5013 while $test "$cont"; do
5015 var=$2; eval "was=\$$2";
5016 if $test "$xxx" && $test -r "$xxx";
5018 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5021 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5022 set $yyy; shift; shift; yyy=$@;
5023 case $# in 0) cont="";;
5024 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5025 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5026 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5027 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5031 do set $yyy; var=$2; eval "was=\$$2";
5032 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5033 set $yyy; shift; shift; yyy=$@;
5036 : see if this is a malloc.h system
5037 set malloc.h i_malloc
5040 : see if stdlib is available
5041 set stdlib.h i_stdlib
5044 : determine which malloc to compile in
5046 case "$usemymalloc" in
5047 ''|[yY]*|true|$define) dflt='y' ;;
5050 rp="Do you wish to attempt to use the malloc that comes with $package?"
5056 mallocsrc='malloc.c'
5057 mallocobj="malloc$_o"
5058 d_mymalloc="$define"
5061 : Remove malloc from list of libraries to use
5062 echo "Removing unneeded -lmalloc from library list" >&4
5063 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5066 echo "libs = $libs" >&4
5078 : compute the return types of malloc and free
5080 $cat >malloc.c <<END
5084 #include <sys/types.h>
5098 case "$malloctype" in
5100 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5107 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5111 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5118 echo "Your system uses $freetype free(), it would seem." >&4
5122 The installation process will also create a directory for
5123 vendor-supplied add-ons. Vendors who supply perl with their system
5124 may find it convenient to place all vendor-supplied files in this
5125 directory rather than in the main distribution directory. This will
5126 ease upgrades between binary-compatible maintenance versions of perl.
5128 Of course you may also use these directories in whatever way you see
5129 fit. For example, you might use them to access modules shared over a
5130 company-wide network.
5132 The default answer should be fine for most people.
5133 This causes further questions about vendor add-ons to be skipped
5134 and no vendor-specific directories will be configured for perl.
5137 rp='Do you want to configure vendor-specific add-on directories?'
5138 case "$usevendorprefix" in
5139 define|true|[yY]*) dflt=y ;;
5145 rp='Installation prefix to use for vendor-supplied add-ons?'
5146 case "$vendorprefix" in
5148 *) dflt=$vendorprefix ;;
5152 case "$vendorprefix" in
5156 *) oldvendorprefix="$prefix";;
5160 usevendorprefix="$define"
5162 vendorprefixexp="$ansexp"
5164 *) usevendorprefix="$undef"
5170 case "$vendorprefix" in
5171 '') d_vendorlib="$undef"
5175 *) d_vendorlib="$define"
5176 : determine where vendor-supplied modules go.
5177 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5178 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5179 case "$installstyle" in
5180 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5181 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5184 rp='Pathname for the vendor-supplied library files?'
5187 vendorlibexp="$ansexp"
5188 : Change installation prefix, if necessary.
5189 if $test X"$prefix" != X"$installprefix"; then
5190 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5192 installvendorlib="$vendorlibexp"
5197 : Cruising for prototypes
5199 echo "Checking out function prototypes..." >&4
5200 $cat >prototype.c <<'EOCP'
5201 int main(int argc, char *argv[]) {
5204 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5205 echo "Your C compiler appears to support function prototypes."
5208 echo "Your C compiler doesn't seem to understand function prototypes."
5215 case "$prototype" in
5217 *) ansi2knr='ansi2knr'
5222 This version of $package can only be compiled by a compiler that
5223 understands function prototypes. Unfortunately, your C compiler
5225 doesn't seem to understand them. Sorry about that.
5227 If GNU cc is available for your system, perhaps you could try that instead.
5229 Eventually, we hope to support building Perl with pre-ANSI compilers.
5230 If you would like to help in that effort, please contact <perlbug@perl.org>.
5232 Aborting Configure now.
5238 : determine where public executables go
5243 rp='Pathname where the public executables will reside?'
5245 if $test "X$ansexp" != "X$binexp"; then
5250 : Change installation prefix, if necessary.
5251 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5252 if $test X"$prefix" != X"$installprefix"; then
5253 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5255 installbin="$binexp"
5260 After $package is installed, you may wish to install various
5261 add-on modules and utilities. Typically, these add-ons will
5262 be installed under $prefix with the rest
5263 of this package. However, you may wish to install such add-ons
5264 elsewhere under a different prefix.
5266 If you do not wish to put everything under a single prefix, that's
5267 ok. You will be prompted for the individual locations; this siteprefix
5268 is only used to suggest the defaults.
5270 The default should be fine for most people.
5274 rp='Installation prefix to use for add-on modules and utilities?'
5275 : XXX Here might be another good place for an installstyle setting.
5276 case "$siteprefix" in
5278 *) dflt=$siteprefix ;;
5282 case "$siteprefix" in
5287 *) oldsiteprefix="$prefix";;
5292 siteprefixexp="$ansexp"
5294 : determine where site specific libraries go.
5295 : Usual default is /usr/local/lib/perl5/site_perl/$version
5296 : The default "style" setting is made in installstyle.U
5297 : XXX No longer works with Prefixit stuff.
5298 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5299 case "$installstyle" in
5300 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5301 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5305 The installation process will create a directory for
5306 site-specific extensions and modules. Most users find it convenient
5307 to place all site-specific files in this directory rather than in the
5308 main distribution directory.
5312 rp='Pathname for the site-specific library files?'
5315 sitelibexp="$ansexp"
5316 : Change installation prefix, if necessary.
5317 if $test X"$prefix" != X"$installprefix"; then
5318 installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5320 installsitelib="$sitelibexp"
5323 : Determine list of previous versions to include in @INC
5324 $cat > getverlist <<EOPL
5327 \$api_versionstring = "$api_versionstring";
5328 \$version = "$version";
5329 \$sitelib = "$sitelib";
5330 \$archname = "$archname";
5332 $cat >> getverlist <<'EOPL'
5333 # Can't have leading @ because metaconfig interprets it as a command!
5334 ;@inc_version_list=();
5335 $stem=dirname($sitelib);
5336 # Redo to do opendir/readdir?
5339 ;@candidates = glob("5.*");
5345 # XXX ToDo: These comparisons must be reworked when two-digit
5346 # subversions come along, so that 5.7.10 compares as greater than
5347 # 5.7.3! By that time, hope that 5.6.x is sufficiently
5348 # widespread that we can use the built-in version vectors rather
5349 # than reinventing them here. For 5.6.0, however, we must
5350 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
5351 foreach $d (@candidates) {
5352 if ($d lt $version) {
5353 if ($d ge $api_versionstring) {
5354 unshift(@inc_version_list, "$d/$archname", $d);
5356 elsif ($d ge "5.005") {
5357 unshift(@inc_version_list, $d);
5361 # Skip newer version. I.e. don't look in
5362 # 5.7.0 if we're installing 5.6.1.
5366 if (@inc_version_list) {
5367 print join(' ', @inc_version_list);
5370 # Blank space to preserve value for next Configure run.
5375 case "$inc_version_list" in
5376 '') if test -x $perl; then
5377 dflt=`$perl getverlist`
5382 $undef) dflt='none' ;;
5383 *) dflt="$inc_version_list" ;;
5387 In order to ease the process of upgrading, this version of perl
5388 can be configured to use modules built and installed with earlier
5389 versions of perl that were installed under $prefix. Specify here
5390 the list of earlier versions that this version of perl should check.
5391 If Configure detected no earlier versions of perl installed under
5392 $prefix, then the list will be empty. Answer 'none' to tell perl
5393 to not search earlier versions.
5395 The default should almost always be sensible, so if you're not sure,
5396 just accept the default.
5399 rp='List of earlier versions to include in @INC?'
5402 [Nn]one) inc_version_list=' ' ;;
5403 *) inc_version_list="$ans" ;;
5405 case "$inc_version_list" in
5407 inc_version_list_init='0';;
5408 *) inc_version_list_init=`echo $inc_version_list |
5409 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5414 : determine whether to install perl also as /usr/bin/perl
5417 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5419 Many scripts expect to perl to be installed as /usr/bin/perl.
5420 I can install the perl you are about to compile also as /usr/bin/perl
5421 (in addition to $installbin/perl).
5423 case "$installusrbinperl" in
5424 "$undef"|[nN]*) dflt='n';;
5427 rp="Do you want to install perl as /usr/bin/perl?"
5430 [yY]*) val="$define";;
5436 set installusrbinperl
5440 echo "Checking for GNU C Library..." >&4
5441 cat >gnulibc.c <<EOM
5453 if eval $compile_ok && ./gnulibc; then
5455 echo "You are using the GNU C Library"
5458 echo "You are not using the GNU C Library"
5464 : see if nm is to be used to determine whether a symbol is defined or not
5468 case "$d_gnulibc" in
5471 echo "nm probably won't work on the GNU C Library." >&4
5477 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5479 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5480 echo "'nm' won't be sufficient on this sytem." >&4
5486 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5487 if $test $dflt -gt 20; then
5497 true|$define) dflt=y;;
5504 I can use $nm to extract the symbols from your C libraries. This
5505 is a time consuming task which may generate huge output on the disk (up
5506 to 3 megabytes) but that should make the symbols extraction faster. The
5507 alternative is to skip the 'nm' extraction part and to compile a small
5508 test program instead to determine whether each symbol is present. If
5509 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5510 this may be the best solution.
5512 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5515 rp="Shall I use $nm to extract C symbols from the libraries?"
5518 [Nn]*) usenm=false;;
5527 : nm options which may be necessary
5529 '') if $test -f /mach_boot; then
5531 elif $test -d /usr/ccs/lib; then
5532 nm_opt='-p' # Solaris (and SunOS?)
5533 elif $test -f /dgux; then
5535 elif $test -f /lib64/rld; then
5536 nm_opt='-p' # 64-bit Irix
5542 : nm options which may be necessary for shared libraries but illegal
5543 : for archive libraries. Thank you, Linux.
5544 case "$nm_so_opt" in
5545 '') case "$myuname" in
5547 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5548 nm_so_opt='--dynamic'
5557 : get list of predefined functions in a handy place
5562 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5569 *) for thislib in $libs; do
5572 : Handle C library specially below.
5575 thislib=`echo $thislib | $sed -e 's/^-l//'`
5576 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5578 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5580 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5582 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5584 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5586 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5588 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5593 libnames="$libnames $try"
5595 *) libnames="$libnames $thislib" ;;
5604 for xxx in $libpth; do
5605 $test -r $1 || set $xxx/libc.$so
5606 : The messy sed command sorts on library version numbers.
5608 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5609 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5611 s/[0-9][0-9]*/0000&/g
5612 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5615 sort | $sed -e 's/^.* //'`
5618 $test -r $1 || set /usr/ccs/lib/libc.$so
5619 $test -r $1 || set /lib/libsys_s$_a
5625 if $test -r "$1"; then
5626 echo "Your (shared) C library seems to be in $1."
5628 elif $test -r /lib/libc && $test -r /lib/clib; then
5629 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5631 libc='/lib/clib /lib/libc'
5632 if $test -r /lib/syslib; then
5633 echo "(Your math library is in /lib/syslib.)"
5634 libc="$libc /lib/syslib"
5636 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5637 echo "Your C library seems to be in $libc, as you said before."
5638 elif $test -r $incpath/usr/lib/libc$_a; then
5639 libc=$incpath/usr/lib/libc$_a;
5640 echo "Your C library seems to be in $libc. That's fine."
5641 elif $test -r /lib/libc$_a; then
5643 echo "Your C library seems to be in $libc. You're normal."
5645 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5647 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5648 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5649 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5651 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5653 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5656 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5658 if $test -r "$tans"; then
5659 echo "Your C library seems to be in $tans, of all places."
5665 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5669 If the guess above is wrong (which it might be if you're using a strange
5670 compiler, or your machine supports multiple models), you can override it here.
5675 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5677 I can't seem to find your C library. I've looked in the following places:
5680 $sed 's/^/ /' libpath
5683 None of these seems to contain your C library. I need to get its name...
5688 rp='Where is your C library?'
5693 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5694 set X `cat libnames`
5697 case $# in 1) xxx=file; esac
5698 echo "Extracting names from the following $xxx for later perusal:" >&4
5700 $sed 's/^/ /' libnames >&4
5702 $echo $n "This may take a while...$c" >&4
5706 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5707 *) $nm $nm_opt $file 2>/dev/null;;
5712 $grep fprintf libc.tmp > libc.ptf
5713 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5714 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5716 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5718 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5720 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5722 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5724 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5726 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5728 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5730 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5732 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5734 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5736 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5738 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5740 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5741 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5743 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5745 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5747 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5749 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5751 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5753 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5755 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5757 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5759 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5761 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5763 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5765 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5767 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5769 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5771 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5774 $nm -p $* 2>/dev/null >libc.tmp
5775 $grep fprintf libc.tmp > libc.ptf
5776 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5777 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5783 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5785 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5786 for thisname in $libnames $libc; do
5787 $ar t $thisname >>libc.tmp
5789 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5791 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5792 # Repeat libc to extract forwarders to DLL entries too
5793 for thisname in $libnames $libc; do
5794 $ar tv $thisname >>libc.tmp
5795 # Revision 50 of EMX has bug in $ar.
5796 # it will not extract forwarders to DLL entries
5797 # Use emximp which will extract exactly them.
5798 emximp -o tmp.imp $thisname \
5800 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5801 < tmp.imp >>libc.tmp
5804 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5807 echo "$ar didn't seem to work right." >&4
5808 echo "Maybe this is a Cray...trying bld instead..." >&4
5809 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5811 for thisname in $libnames; do
5813 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5814 $ar t $thisname >>libc.tmp
5818 echo "That didn't work either. Giving up." >&4
5825 if $test -f /lib/syscalls.exp; then
5827 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5828 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5832 $rm -f libnames libpath
5834 : see if dld is available
5838 : is a C symbol defined?
5841 -v) tf=libc.tmp; tc=""; tdc="";;
5842 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5843 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5846 case "$reuseval-$4" in
5848 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5854 if $contains $tlook $tf >/dev/null 2>&1;
5859 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5860 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5868 $define) tval=true;;
5874 : define an is-in-libc? function
5875 inlibc='echo " "; td=$define; tu=$undef;
5876 sym=$1; var=$2; eval "was=\$$2";
5878 case "$reuseval$was" in
5888 echo "$sym() found." >&4;
5889 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5891 echo "$sym() NOT found." >&4;
5892 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5896 $define) echo "$sym() found." >&4;;
5897 *) echo "$sym() NOT found." >&4;;
5901 : see if dlopen exists
5908 : determine which dynamic loading, if any, to compile in
5910 dldir="ext/DynaLoader"
5923 $define) dflt='y' ;;
5926 $define) dflt='y' ;;
5928 : Does a dl_xxx.xs file exist for this operating system
5929 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5932 rp="Do you wish to use dynamic loading?"
5939 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5940 dflt="$dldir/dl_${osname}.xs"
5941 elif $test "$d_dlopen" = "$define" ; then
5942 dflt="$dldir/dl_dlopen.xs"
5943 elif $test "$i_dld" = "$define" ; then
5944 dflt="$dldir/dl_dld.xs"
5949 *) dflt="$dldir/$dlsrc"
5952 echo "The following dynamic loading files are available:"
5953 : Can not go over to $dldir because getfile has path hard-coded in.
5954 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5955 rp="Source file to use for dynamic loading"
5961 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5965 Some systems may require passing special flags to $cc -c to
5966 compile modules that will be used to create a shared library.
5967 To use no flags, say "none".
5970 case "$cccdlflags" in
5971 '') case "$gccversion" in
5972 '') case "$osname" in
5974 next) dflt='none' ;;
5975 irix*) dflt='-KPIC' ;;
5976 svr4*|esix*|solaris) dflt='-KPIC' ;;
5977 sunos) dflt='-pic' ;;
5981 *) case "$osname" in
5982 svr4*|esix*|solaris) dflt='-fPIC' ;;
5987 *) dflt="$cccdlflags" ;;
5989 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5992 none) cccdlflags=' ' ;;
5993 *) cccdlflags="$ans" ;;
5998 Some systems use ld to create libraries that can be dynamically loaded,
5999 while other systems (such as those using ELF) use $cc.
6003 '') $cat >try.c <<'EOM'
6004 /* Test for whether ELF binaries are produced */
6009 int i = open("a.out",O_RDONLY);
6012 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6013 exit(0); /* succeed (yes, it's ELF) */
6018 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6020 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6024 echo "I'll use ld to build dynamic libraries."
6033 rp="What command should be used to create dynamic libraries?"
6039 Some systems may require passing special flags to $ld to create a
6040 library that can be dynamically loaded. If your ld flags include
6041 -L/other/path options to locate libraries outside your loader's normal
6042 search path, you may need to specify those -L options here as well. To
6043 use no flags, say "none".
6046 case "$lddlflags" in
6047 '') case "$osname" in
6048 beos) dflt='-nostart' ;;
6049 hpux) dflt='-b +vnocompatwarnings' ;;
6050 linux|irix*) dflt='-shared' ;;
6051 next) dflt='none' ;;
6052 solaris) dflt='-G' ;;
6053 sunos) dflt='-assert nodefinitions' ;;
6054 svr4*|esix*) dflt="-G $ldflags" ;;
6058 *) dflt="$lddlflags" ;;
6061 : Try to guess additional flags to pick up local libraries.
6062 : Be careful not to append to a plain 'none'
6066 for thisflag in $ldflags; do
6071 *) dflt="$dflt $thisflag" ;;
6078 ''|' ') dflt='none' ;;
6081 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6084 none) lddlflags=' ' ;;
6085 *) lddlflags="$ans" ;;
6090 Some systems may require passing special flags to $cc to indicate that
6091 the resulting executable will use dynamic linking. To use no flags,
6095 case "$ccdlflags" in
6096 '') case "$osname" in
6097 hpux) dflt='-Wl,-E' ;;
6098 linux) dflt='-rdynamic' ;;
6099 next) dflt='none' ;;
6100 sunos) dflt='none' ;;
6104 *) dflt="$ccdlflags" ;;
6106 rp="Any special flags to pass to $cc to use dynamic linking?"
6109 none) ccdlflags=' ' ;;
6110 *) ccdlflags="$ans" ;;
6124 # No dynamic loading being used, so don't bother even to prompt.
6127 *) case "$useshrplib" in
6128 '') case "$osname" in
6129 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6131 also='Building a shared libperl is required for dynamic loading to work on your system.'
6136 also='Building a shared libperl is needed for MAB support.'
6154 The perl executable is normally obtained by linking perlmain.c with
6155 libperl${_a}, any static extensions (usually just DynaLoader), and
6156 any other libraries needed on this system (such as -lm, etc.). Since
6157 your system supports dynamic loading, it is probably possible to build
6158 a shared libperl.$so. If you will have more than one executable linked
6159 to libperl.$so, this will significantly reduce the size of each
6160 executable, but it may have a noticeable affect on performance. The
6161 default is probably sensible for your system.
6165 rp="Build a shared libperl.$so (y/n)"
6169 useshrplib='true' ;;
6170 *) useshrplib='false' ;;
6175 case "$useshrplib" in
6179 # Figure out a good name for libperl.so. Since it gets stored in
6180 # a version-specific architecture-dependent library, the version
6181 # number isn't really that important, except for making cc/ld happy.
6183 # A name such as libperl.so.3.1
6184 majmin="libperl.$so.$patchlevel.$subversion"
6185 # A name such as libperl.so.301
6186 majonly=`echo $patchlevel $subversion |
6187 $awk '{printf "%d%02d", $1, $2}'`
6188 majonly=libperl.$so.$majonly
6189 # I'd prefer to keep the os-specific stuff here to a minimum, and
6190 # rely on figuring it out from the naming of libc.
6191 case "${osname}${osvers}" in
6194 # XXX How handle the --version stuff for MAB?
6196 linux*) # ld won't link with a bare -lperl otherwise.
6199 cygwin*) # include version
6200 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6202 *) # Try to guess based on whether libc has major.minor.
6204 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6205 *libc.$so.[0-9]*) dflt=$majonly ;;
6206 *) dflt=libperl.$so ;;
6216 I need to select a good name for the shared libperl. If your system uses
6217 library names with major and minor numbers, then you might want something
6218 like $majmin. Alternatively, if your system uses a single version
6219 number for shared libraries, then you might want to use $majonly.
6220 Or, your system might be quite happy with a simple libperl.$so.
6222 Since the shared libperl will get installed into a version-specific
6223 architecture-dependent directory, the version number of the shared perl
6224 library probably isn't important, so the default should be o.k.
6227 rp='What name do you want to give to the shared libperl?'
6230 echo "Ok, I'll use $libperl"
6233 libperl="libperl${_a}"
6237 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6241 WARNING: Use of the shrpdir variable for the installation location of
6242 the shared $libperl is not supported. It was never documented and
6243 will not work in this version. Let me (perlbug@perl.com)
6244 know of any problems this may cause.
6250 But your current setting of $shrpdir is
6251 the default anyway, so it's harmless.
6256 Further, your current attempted setting of $shrpdir
6257 conflicts with the value of $archlibexp/CORE
6258 that installperl will use.
6265 # How will the perl executable find the installed shared $libperl?
6266 # Add $xxx to ccdlflags.
6267 # If we can't figure out a command-line option, use $shrpenv to
6268 # set env LD_RUN_PATH. The main perl makefile uses this.
6269 shrpdir=$archlibexp/CORE
6272 if "$useshrplib"; then
6275 # We'll set it in Makefile.SH...
6281 xxx="-Wl,-R$shrpdir"
6283 linux|irix*|dec_osf)
6284 xxx="-Wl,-rpath,$shrpdir"
6287 # next doesn't like the default...
6290 # beos doesn't like the default, either.
6293 # hpux doesn't like the default, either.
6294 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6297 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6303 # Only add $xxx if it isn't already in ccdlflags.
6304 case " $ccdlflags " in
6306 *) ccdlflags="$ccdlflags $xxx"
6309 Adding $xxx to the flags
6310 passed to $ld so that the perl executable will find the
6311 installed shared $libperl.
6319 # Fix ccdlflags in AIX for building external extensions.
6320 # (For building Perl itself bare -bE:perl.exp is needed,
6321 # Makefile.SH takes care of this.)
6323 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6325 # Respect a hint or command-line value.
6327 '') shrpenv="$tmp_shrpenv" ;;
6329 case "$ldlibpthname" in
6330 '') ldlibpthname=LD_LIBRARY_PATH ;;
6331 none) ldlibpthname='' ;;
6334 : determine where manual pages go
6335 set man1dir man1dir none
6339 $spackage has manual pages available in source form.
6343 echo "However, you don't have nroff, so they're probably useless to you."
6345 '') man1dir="none";;
6348 echo "If you don't want the manual sources installed, answer 'none'."
6353 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6354 lookpath="$lookpath $prefixexp/man/p_man/man1"
6355 lookpath="$lookpath $prefixexp/man/u_man/man1"
6356 lookpath="$lookpath $prefixexp/man/man.1"
6358 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6359 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6369 rp="Where do the main $spackage manual pages (source) go?"
6371 if $test "X$man1direxp" != "X$ansexp"; then
6375 man1direxp="$ansexp"
6381 : Change installation prefix, if necessary.
6382 if $test X"$prefix" != X"$installprefix"; then
6383 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6385 installman1dir="$man1direxp"
6388 : What suffix to use on installed man pages
6395 rp="What suffix should be used for the main $spackage man pages?"
6397 '') case "$man1dir" in
6411 *) dflt="$man1ext";;
6418 : see if we can have long filenames
6420 rmlist="$rmlist /tmp/cf$$"
6421 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6422 first=123456789abcdef
6423 second=/tmp/cf$$/$first
6424 $rm -f $first $second
6425 if (echo hi >$first) 2>/dev/null; then
6426 if $test -f 123456789abcde; then
6427 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6430 if (echo hi >$second) 2>/dev/null; then
6431 if $test -f /tmp/cf$$/123456789abcde; then
6433 That's peculiar... You can have filenames longer than 14 characters, but only
6434 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
6435 I shall consider your system cannot support long filenames at all.
6439 echo 'You can have filenames longer than 14 characters.' >&4
6444 How confusing! Some of your filesystems are sane enough to allow filenames
6445 longer than 14 characters but some others like /tmp can't even think about them.
6446 So, for now on, I shall assume your kernel does not allow them at all.
6453 You can't have filenames longer than 14 chars. You can't even think about them!
6459 $rm -rf /tmp/cf$$ 123456789abcde*
6461 : determine where library module manual pages go
6462 set man3dir man3dir none
6466 $spackage has manual pages for many of the library modules.
6472 However, you don't have nroff, so they're probably useless to you.
6475 '') man3dir="none";;
6479 case "$d_flexfnam" in
6482 However, your system can't handle the long file names like File::Basename.3.
6485 '') man3dir="none";;
6489 echo "If you don't want the manual sources installed, answer 'none'."
6490 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6492 '') dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6493 if $test -d "$privlib/man/man3"; then
6496 WARNING: Previous versions of perl installed man3 pages into
6497 $privlib/man/man3. This version will suggest a
6498 new default of $dflt.
6502 rp='Do you wish to preserve the old behavior?(y/n)'
6505 y*) dflt="$privlib/man/man3" ;;
6511 *) dflt="$man3dir" ;;
6515 rp="Where do the $package library man pages (source) go?"
6518 man3direxp="$ansexp"
6524 : Change installation prefix, if necessary.
6525 if $test X"$prefix" != X"$installprefix"; then
6526 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6528 installman3dir="$man3direxp"
6531 : What suffix to use on installed man pages
6537 rp="What suffix should be used for the $package library man pages?"
6539 '') case "$man3dir" in
6553 *) dflt="$man3ext";;
6560 : see if we have to deal with yellow pages, now NIS.
6561 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6562 if $test -f /usr/etc/nibindd; then
6564 echo "I'm fairly confident you're on a NeXT."
6566 rp='Do you get the hosts file via NetInfo?'
6575 y*) hostcat='nidump hosts .';;
6576 *) case "$hostcat" in
6577 nidump*) hostcat='';;
6587 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6595 rp='Are you getting the hosts file via yellow pages?'
6598 y*) hostcat='ypcat hosts';;
6599 *) hostcat='cat /etc/hosts';;
6605 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6608 '') test -f /etc/group && groupcat='cat /etc/group';;
6611 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6614 : now get the host name
6616 echo "Figuring out host name..." >&4
6617 case "$myhostname" in
6619 echo 'Maybe "hostname" will work...'
6620 if tans=`sh -c hostname 2>&1` ; then
6628 if $test "$cont"; then
6630 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6631 if tans=`cat /etc/systemid 2>&1` ; then
6633 phostname='cat /etc/systemid'
6634 echo "Whadyaknow. Xenix always was a bit strange..."
6637 elif $test -r /etc/systemid; then
6638 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6641 if $test "$cont"; then
6642 echo 'No, maybe "uuname -l" will work...'
6643 if tans=`sh -c 'uuname -l' 2>&1` ; then
6645 phostname='uuname -l'
6647 echo 'Strange. Maybe "uname -n" will work...'
6648 if tans=`sh -c 'uname -n' 2>&1` ; then
6650 phostname='uname -n'
6652 echo 'Oh well, maybe I can mine it out of whoami.h...'
6653 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6654 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6655 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6657 case "$myhostname" in
6658 '') echo "Does this machine have an identity crisis or something?"
6661 echo "Well, you said $myhostname before..."
6662 phostname='echo $myhostname';;
6668 : you do not want to know about this
6673 if $test "$myhostname" ; then
6675 rp='Your host name appears to be "'$myhostname'".'" Right?"
6683 : bad guess or no guess
6684 while $test "X$myhostname" = X ; do
6686 rp="Please type the (one word) name of your host:"
6691 : translate upper to lower if necessary
6692 case "$myhostname" in
6694 echo "(Normalizing case in your host name)"
6695 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6699 case "$myhostname" in
6701 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6702 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6703 echo "(Trimming domain name from host name--host name is now $myhostname)"
6705 *) case "$mydomain" in
6708 test "X$hostcat" = "Xypcat hosts" &&
6709 ypmatch "$myhostname" hosts 2>/dev/null |\
6710 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
6713 test "X$hostcat" != "X" &&
6714 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
6715 /[ ]$myhostname[ . ]/p" > hosts
6718 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
6719 END { print sum }" hosts` = x1 || tmp_re="[ ]"
6720 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6721 hosts | $sort | $uniq | \
6722 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6723 case `$echo X$dflt` in
6724 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
6727 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6732 tans=`./loc resolv.conf X /etc /usr/etc`
6733 if $test -f "$tans"; then
6734 echo "(Attempting domain name extraction from $tans)"
6735 dflt=.`$sed -n -e 's/ / /g' \
6736 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
6737 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6739 .) dflt=.`$sed -n -e 's/ / /g' \
6740 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
6741 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6748 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6749 dflt=.`sh -c domainname 2>/dev/null`
6752 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6757 .) echo "(Lost all hope -- silly guess then)"
6763 *) dflt="$mydomain";;
6767 rp="What is your domain name?"
6777 : translate upper to lower if necessary
6780 echo "(Normalizing case in your domain name)"
6781 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6785 : a little sanity check here
6786 case "$phostname" in
6789 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6790 $myhostname$mydomain|$myhostname) ;;
6792 case "$phostname" in
6794 echo "(That doesn't agree with your whoami.h file, by the way.)"
6797 echo "(That doesn't agree with your $phostname command, by the way.)"
6807 I need to get your e-mail address in Internet format if possible, i.e.
6808 something like user@host.domain. Please answer accurately since I have
6809 no easy means to double check it. The default value provided below
6810 is most probably close to reality but may not be valid from outside
6811 your organization...
6815 while test "$cont"; do
6817 '') dflt="$cf_by@$myhostname$mydomain";;
6818 *) dflt="$cf_email";;
6820 rp='What is your e-mail address?'
6826 rp='Address does not look like an Internet one. Use it anyway?'
6842 If you or somebody else will be maintaining perl at your site, please
6843 fill in the correct e-mail address here so that they may be contacted
6844 if necessary. Currently, the "perlbug" program included with perl
6845 will send mail to this address in addition to perlbug@perl.com. You may
6846 enter "none" for no administrator.
6849 case "$perladmin" in
6850 '') dflt="$cf_email";;
6851 *) dflt="$perladmin";;
6853 rp='Perl administrator e-mail address'
6857 : figure out how to guarantee perl startup
6858 case "$startperl" in
6860 case "$sharpbang" in
6864 I can use the #! construct to start perl on your system. This will
6865 make startup of perl scripts faster, but may cause problems if you
6866 want to share those scripts and perl is not in a standard place
6867 ($binexp/perl) on all your platforms. The alternative is to force
6868 a shell by starting the script with a single ':' character.
6872 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6875 none) startperl=": # use perl";;
6876 *) startperl="#!$ans"
6877 if $test 30 -lt `echo "$ans" | wc -c`; then
6880 WARNING: Some systems limit the #! command to 32 characters.
6881 If you experience difficulty running Perl scripts with #!, try
6882 installing Perl in a directory with a shorter pathname.
6888 *) startperl=": # use perl"
6893 echo "I'll use $startperl to start perl scripts."
6895 : figure best path for perl in scripts
6898 perlpath="$binexp/perl"
6899 case "$startperl" in
6904 I will use the "eval 'exec'" idiom to start Perl on your system.
6905 I can use the full path of your Perl binary for this purpose, but
6906 doing so may cause problems if you want to share those scripts and
6907 Perl is not always in a standard place ($binexp/perl).
6911 rp="What path shall I use in \"eval 'exec'\"?"
6918 case "$startperl" in
6920 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6923 : determine where public executable scripts go
6924 set scriptdir scriptdir
6926 case "$scriptdir" in
6929 : guess some guesses
6930 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6931 $test -d /usr/share/bin && dflt=/usr/share/bin
6932 $test -d /usr/local/script && dflt=/usr/local/script
6933 $test -d /usr/local/scripts && dflt=/usr/local/scripts
6934 $test -d $prefixexp/script && dflt=$prefixexp/script
6938 *) dflt="$scriptdir"
6943 Some installations have a separate directory just for executable scripts so
6944 that they can mount it across multiple architectures but keep the scripts in
6945 one spot. You might, for example, have a subdirectory of /usr/share for this.
6946 Or you might just lump your scripts in with all your other executables.
6950 rp='Where do you keep publicly executable scripts?'
6952 if $test "X$ansexp" != "X$scriptdirexp"; then
6956 scriptdirexp="$ansexp"
6957 : Change installation prefix, if necessary.
6958 if $test X"$prefix" != X"$installprefix"; then
6959 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6961 installscript="$scriptdirexp"
6964 : determine where site specific architecture-dependent libraries go.
6965 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6966 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6967 : sitelib may have an optional trailing /share.
6968 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6969 tdflt="$tdflt/$archname"
6970 set sitearch sitearch none
6973 '') dflt="$tdflt" ;;
6974 *) dflt="$sitearch" ;;
6978 The installation process will also create a directory for
6979 architecture-dependent site-specific extensions and modules.
6983 rp='Pathname for the site-specific architecture-dependent library files?'
6986 sitearchexp="$ansexp"
6987 : Change installation prefix, if necessary.
6988 if $test X"$prefix" != X"$installprefix"; then
6989 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6991 installsitearch="$sitearchexp"
6994 : determine where add-on public executables go
6996 '') dflt=$siteprefix/bin ;;
7000 rp='Pathname where the add-on public executables should be installed?'
7003 sitebinexp="$ansexp"
7004 : Change installation prefix, if necessary.
7005 if $test X"$prefix" != X"$installprefix"; then
7006 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7008 installsitebin="$sitebinexp"
7011 : see if sqrtl exists
7017 Perl can be built to take advantage of long doubles which
7018 (if available) may give more accuracy and range for floating point numbers.
7020 If this doesn't make any sense to you, just accept the default 'n'.
7024 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7027 case "$uselongdouble" in
7028 $define|true|[yY]*) dflt='y';;
7031 rp='Try to use long doubles if available?'
7034 y|Y) val="$define" ;;
7040 case "$uselongdouble" in
7041 true|[yY]*) uselongdouble="$define" ;;
7044 case "$uselongdouble" in
7046 : Look for a hint-file generated 'call-back-unit'. If the
7047 : user has specified that long doubles should be used,
7048 : we may need to set or change some other defaults.
7049 if $test -f uselongdouble.cbu; then
7050 echo "Your platform has some specific hints for long doubles, using them..."
7051 . ./uselongdouble.cbu
7054 (Your platform doesn't have any specific hints for long doubles.)
7060 case "$uselongdouble:$d_sqrtl" in
7064 You requested the use of long doubles but you do not seem to have
7065 the mathematic functions for long doubles. I'm disabling the use
7068 uselongdouble=$undef
7074 Previous version of $package used the standard IO mechanisms as defined
7075 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7076 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7077 the default. This abstraction layer can use AT&T's sfio (if you already
7078 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7079 problems with some extension modules. Using PerlIO with stdio is safe,
7080 but it is slower than plain stdio and therefore is not the default.
7082 If this doesn't make any sense to you, just accept the default 'n'.
7084 case "$useperlio" in
7085 $define|true|[yY]*) dflt='y';;
7088 rp='Use the experimental PerlIO abstraction layer?'
7095 echo "Ok, doing things the stdio way"
7102 case "$vendorprefix" in
7103 '') d_vendorbin="$undef"
7107 *) d_vendorbin="$define"
7108 : determine where vendor-supplied executables go.
7109 dflt=$vendorprefix/bin
7111 rp='Pathname for the vendor-supplied executables directory?'
7114 vendorbinexp="$ansexp"
7115 : Change installation prefix, if necessary.
7116 if $test X"$prefix" != X"$installprefix"; then
7117 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7119 installvendorbin="$vendorbinexp"
7124 : check for length of double
7126 case "$doublesize" in
7128 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7129 $cat >try.c <<'EOCP'
7133 printf("%d\n", (int)sizeof(double));
7138 if eval $compile_ok; then
7140 $echo " $doublesize bytes." >&4
7143 echo "(I can't seem to compile the test program. Guessing...)"
7144 rp="What is the size of a double precision number (in bytes)?"
7152 : check for long doubles
7154 $echo $n "Checking to see if your system supports long double..." $c >&4
7155 echo 'int main() { long double x = 7.0; }' > try.c
7157 if eval $compile; then
7159 echo " Yes, it does." >&4
7162 echo " No, it doesn't." >&4
7168 : check for length of long double
7169 case "${d_longdbl}${longdblsize}" in
7172 $echo $n "Checking to see how big your long doubles are..." $c >&4
7173 $cat >try.c <<'EOCP'
7177 printf("%d\n", sizeof(long double));
7182 if eval $compile; then
7183 longdblsize=`./try$exe_ext`
7184 $echo " $longdblsize bytes." >&4
7188 echo "(I can't seem to compile the test program. Guessing...)" >&4
7189 rp="What is the size of a long double (in bytes)?"
7193 if $test "X$doublesize" = "X$longdblsize"; then
7194 echo "(That isn't any different from an ordinary double.)"
7200 : Check how to convert floats to strings.
7201 if test "X$d_Gconvert" = X; then
7203 echo "Checking for an efficient way to convert floats to strings."
7206 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7207 char *myname = "gconvert";
7210 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7211 char *myname = "gcvt";
7214 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7215 char *myname = "qgcvt";
7216 #define DOUBLETYPE long double
7219 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7220 char *myname = "sprintf";
7224 #define DOUBLETYPE double
7229 #define I_STDLIB $i_stdlib
7235 checkit(expect, got)
7239 if (strcmp(expect, got)) {
7240 printf("%s oddity: Expected %s, got %s\n",
7241 myname, expect, got);
7251 /* This must be 1st test on (which?) platform */
7252 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7253 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7254 checkit("0.1", buf);
7256 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7259 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7262 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7265 /* Some Linux gcvt's give 1.e+5 here. */
7266 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7267 checkit("100000", buf);
7269 /* Some Linux gcvt's give -1.e+5 here. */
7270 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7271 checkit("-100000", buf);
7276 case "$d_Gconvert" in
7277 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7278 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7279 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7280 *) xxx_list='gconvert gcvt sprintf' ;;
7283 case "$d_longdbl$uselongdouble" in
7284 definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7287 for xxx_convert in $xxx_list; do
7288 echo "Trying $xxx_convert..."
7290 set try -DTRY_$xxx_convert
7291 if eval $compile; then
7292 echo "$xxx_convert() found." >&4
7294 echo "I'll use $xxx_convert to convert floats into a string." >&4
7297 echo "...But $xxx_convert didn't work as I expected."
7300 echo "$xxx_convert NOT found." >&4
7304 case "$xxx_convert" in
7305 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7306 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7307 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7308 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7314 if $test X"$d_longdbl" = X"$define"; then
7316 echo "Checking how to print long doubles..." >&4
7318 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7319 $cat >try.c <<'EOCP'
7320 #include <sys/types.h>
7324 printf("%.3f\n", d);
7328 if eval $compile; then
7332 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7333 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7334 echo "We will use %f."
7340 if $test X"$sPRIfldbl" = X; then
7341 $cat >try.c <<'EOCP'
7342 #include <sys/types.h>
7345 long double d = 123.456;
7346 printf("%.3llf\n", d);
7350 if eval $compile; then
7354 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7355 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7356 echo "We will use %llf."
7362 if $test X"$sPRIfldbl" = X; then
7363 $cat >try.c <<'EOCP'
7364 #include <sys/types.h>
7367 long double d = 123.456;
7368 printf("%.3Lf\n", d);
7372 if eval $compile; then
7376 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7377 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7378 echo "We will use %Lf."
7384 if $test X"$sPRIfldbl" = X; then
7385 $cat >try.c <<'EOCP'
7386 #include <sys/types.h>
7389 long double d = 123.456;
7390 printf("%.3lf\n", d);
7394 if eval $compile; then
7398 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7399 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7400 echo "We will use %lf."
7406 if $test X"$sPRIfldbl" = X; then
7407 echo "Cannot figure out how to print long doubles." >&4
7414 case "$sPRIfldbl" in
7415 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7416 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7418 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7419 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7423 : Initialize h_fcntl
7426 : Initialize h_sysfile
7429 : access call always available on UNIX
7433 : locate the flags for 'access()'
7437 $cat >access.c <<'EOCP'
7438 #include <sys/types.h>
7443 #include <sys/file.h>
7452 : check sys/file.h first, no particular reason here
7453 if $test `./findhdr sys/file.h` && \
7454 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7456 echo "<sys/file.h> defines the *_OK access constants." >&4
7457 elif $test `./findhdr fcntl.h` && \
7458 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7460 echo "<fcntl.h> defines the *_OK access constants." >&4
7461 elif $test `./findhdr unistd.h` && \
7462 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7463 echo "<unistd.h> defines the *_OK access constants." >&4
7465 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7471 : see if accessx exists
7472 set accessx d_accessx
7475 : see if alarm exists
7479 : see if atolf exists
7483 : see if atoll exists
7487 : Look for GNU-cc style attribute checking
7489 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7490 $cat >attrib.c <<'EOCP'
7492 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7494 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7495 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7496 echo "Your C compiler doesn't fully support __attribute__."
7499 echo "Your C compiler supports __attribute__."
7503 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7510 : see if bcmp exists
7514 : see if bcopy exists
7518 : see if this is a unistd.h system
7519 set unistd.h i_unistd
7522 : see if getpgrp exists
7523 set getpgrp d_getpgrp
7526 case "$d_getpgrp" in
7529 echo "Checking to see which flavor of getpgrp is in use..."
7532 #include <sys/types.h>
7534 # include <unistd.h>
7538 if (getuid() == 0) {
7539 printf("(I see you are running Configure as super-user...)\n");
7543 if (getpgrp(1) == 0)
7552 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7553 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7555 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7556 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7559 echo "I can't seem to compile and run the test program."
7561 xxx="a USG one, i.e. you use getpgrp()."
7563 # SVR4 systems can appear rather BSD-ish.
7566 xxx="a BSD one, i.e. you use getpgrp(pid)."
7570 xxx="probably a USG one, i.e. you use getpgrp()."
7575 echo "Assuming your getpgrp is $xxx" >&4
7584 : see if setpgrp exists
7585 set setpgrp d_setpgrp
7588 case "$d_setpgrp" in
7591 echo "Checking to see which flavor of setpgrp is in use..."
7594 #include <sys/types.h>
7596 # include <unistd.h>
7600 if (getuid() == 0) {
7601 printf("(I see you are running Configure as super-user...)\n");
7605 if (-1 == setpgrp(1, 1))
7608 if (setpgrp() != -1)
7614 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7615 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7617 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7618 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7621 echo "(I can't seem to compile and run the test program.)"
7623 xxx="a USG one, i.e. you use setpgrp()."
7625 # SVR4 systems can appear rather BSD-ish.
7628 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7632 xxx="probably a USG one, i.e. you use setpgrp()."
7637 echo "Assuming your setpgrp is $xxx" >&4
7645 : see if bzero exists
7649 : see if signal is declared as pointer to function returning int or void
7651 xxx=`./findhdr signal.h`
7652 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7653 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7654 echo "You have int (*signal())() instead of void." >&4
7656 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7657 echo "You have void (*signal())()." >&4
7659 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7660 echo "You have int (*signal())() instead of void." >&4
7662 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7663 echo "You have void (*signal())()." >&4
7666 case "$d_voidsig" in
7668 echo "I can't determine whether signal handler returns void or int..." >&4
7670 rp="What type does your signal handler return?"
7677 echo "As you already told me, signal handler returns void." >&4
7680 *) echo "As you already told me, signal handler returns int." >&4
7687 case "$d_voidsig" in
7688 "$define") signal_t="void";;
7693 : check for ability to cast large floats to 32-bit ints.
7695 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7696 if $test "$intsize" -ge 4; then
7703 #include <sys/types.h>
7705 $signal_t blech(s) int s; { exit(3); }
7712 signal(SIGFPE, blech);
7714 /* Don't let compiler optimize the test away. Store the number
7715 in a writable string for gcc to pass to sscanf under HP/UX.
7717 sprintf(str, "2147483647");
7718 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7722 /* x86 processors will probably give 0x8000 0000, which is a
7723 sign change. We don't want that. We want to mimic SPARC
7724 behavior here, which is to preserve the sign and give
7727 if (i32 != ($xxx) f)
7733 if eval $compile_ok; then
7737 echo "(I can't seem to compile the test program--assuming it can't)"
7745 echo "Nope, it can't."
7752 : check for ability to cast negative floats to unsigned
7754 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7757 #include <sys/types.h>
7759 $signal_t blech(s) int s; { exit(7); }
7760 $signal_t blech_in_list(s) int s; { exit(4); }
7761 unsigned long dummy_long(p) unsigned long p; { return p; }
7762 unsigned int dummy_int(p) unsigned int p; { return p; }
7763 unsigned short dummy_short(p) unsigned short p; { return p; }
7767 unsigned long along;
7769 unsigned short ashort;
7773 /* Frustrate gcc-2.7.2's optimizer which failed this test with
7774 a direct f = -123. assignment. gcc-2.8.0 reportedly
7775 optimized the whole file away
7777 /* Store the number in a writable string for gcc to pass to
7780 sprintf(str, "-123");
7781 sscanf(str, "%lf", &f); /* f = -123.; */
7783 signal(SIGFPE, blech);
7784 along = (unsigned long)f;
7785 aint = (unsigned int)f;
7786 ashort = (unsigned short)f;
7787 if (along != (unsigned long)-123)
7789 if (aint != (unsigned int)-123)
7791 if (ashort != (unsigned short)-123)
7793 sprintf(str, "1073741824.");
7794 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7797 along = (unsigned long)f;
7798 if (along != 0x80000000)
7802 along = (unsigned long)f;
7803 if (along != 0x7fffffff)
7807 along = (unsigned long)f;
7808 if (along != 0x80000001)
7812 signal(SIGFPE, blech_in_list);
7813 sprintf(str, "123.");
7814 sscanf(str, "%lf", &f); /* f = 123.; */
7815 along = dummy_long((unsigned long)f);
7816 aint = dummy_int((unsigned int)f);
7817 ashort = dummy_short((unsigned short)f);
7818 if (along != (unsigned long)123)
7820 if (aint != (unsigned int)123)
7822 if (ashort != (unsigned short)123)
7829 if eval $compile_ok; then
7833 echo "(I can't seem to compile the test program--assuming it can't)"
7836 case "$castflags" in
7841 echo "Nope, it can't."
7848 : see if vprintf exists
7850 if set vprintf val -f d_vprintf; eval $csym; $val; then
7851 echo 'vprintf() found.' >&4
7853 $cat >vprintf.c <<'EOF'
7854 #include <varargs.h>
7856 int main() { xxx("foo"); }
7865 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7869 if eval $compile && ./vprintf; then
7870 echo "Your vsprintf() returns (int)." >&4
7873 echo "Your vsprintf() returns (char*)." >&4
7877 echo 'vprintf() NOT found.' >&4
7887 : see if chown exists
7891 : see if chroot exists
7895 : see if chsize exists
7899 : check for const keyword
7901 echo 'Checking to see if your C compiler knows about "const"...' >&4
7902 $cat >const.c <<'EOCP'
7903 typedef struct spug { int drokk; } spug;
7910 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7912 echo "Yup, it does."
7915 echo "Nope, it doesn't."
7920 : see if crypt exists
7922 if set crypt val -f d_crypt; eval $csym; $val; then
7923 echo 'crypt() found.' >&4
7927 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7928 if $test -z "$cryptlib"; then
7929 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7933 if $test -z "$cryptlib"; then
7934 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7938 if $test -z "$cryptlib"; then
7939 cryptlib=`./loc libcrypt$_a "" $libpth`
7943 if $test -z "$cryptlib"; then
7944 echo 'crypt() NOT found.' >&4
7953 : get csh whereabouts
7955 'csh') val="$undef" ;;
7960 : Respect a hint or command line value for full_csh.
7962 '') full_csh=$csh ;;
7965 : see if cuserid exists
7966 set cuserid d_cuserid
7969 : see if this is a limits.h system
7970 set limits.h i_limits
7973 : see if this is a float.h system
7977 : See if number of significant digits in a double precision number is known
7979 $cat >dbl_dig.c <<EOM
7989 printf("Contains DBL_DIG");
7992 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7993 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7994 echo "DBL_DIG found." >&4
7997 echo "DBL_DIG NOT found." >&4
8004 : see if difftime exists
8005 set difftime d_difftime
8008 : see if this is a dirent system
8010 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8012 echo "<dirent.h> found." >&4
8015 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8016 echo "<sys/dir.h> found." >&4
8019 xinc=`./findhdr sys/ndir.h`
8021 echo "<dirent.h> NOT found." >&4
8026 : Look for type of directory structure.
8028 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8030 case "$direntrytype" in
8033 $define) guess1='struct dirent' ;;
8034 *) guess1='struct direct' ;;
8037 *) guess1="$direntrytype"
8042 'struct dirent') guess2='struct direct' ;;
8043 *) guess2='struct dirent' ;;
8046 if $contains "$guess1" try.c >/dev/null 2>&1; then
8047 direntrytype="$guess1"
8048 echo "Your directory entries are $direntrytype." >&4
8049 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8050 direntrytype="$guess2"
8051 echo "Your directory entries seem to be $direntrytype." >&4
8053 echo "I don't recognize your system's directory entries." >&4
8054 rp="What type is used for directory entries on this system?"
8062 : see if the directory entry stores field length
8064 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8065 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8066 echo "Good, your directory entry keeps length information in d_namlen." >&4
8069 echo "Your directory entry does not know about the d_namlen field." >&4
8076 : see if dlerror exists
8079 set dlerror d_dlerror
8083 : see if dlfcn is available
8091 On a few systems, the dynamically loaded modules that perl generates and uses
8092 will need a different extension than shared libs. The default will probably
8100 rp='What is the extension of dynamically loaded modules'
8109 : Check if dlsym need a leading underscore
8115 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8116 $cat >dyna.c <<'EOM'
8125 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8127 #include <sys/types.h>
8141 int mode = RTLD_LAZY ;
8143 handle = dlopen("./dyna.$dlext", mode) ;
8144 if (handle == NULL) {
8149 symbol = dlsym(handle, "fred") ;
8150 if (symbol == NULL) {
8151 /* try putting a leading underscore */
8152 symbol = dlsym(handle, "_fred") ;
8153 if (symbol == NULL) {
8166 : Call the object file tmp-dyna.o in case dlext=o.
8167 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8168 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8169 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
8170 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8173 1) echo "Test program failed using dlopen." >&4
8174 echo "Perhaps you should not use dynamic loading." >&4;;
8175 2) echo "Test program failed using dlsym." >&4
8176 echo "Perhaps you should not use dynamic loading." >&4;;
8177 3) echo "dlsym needs a leading underscore" >&4
8179 4) echo "dlsym doesn't need a leading underscore." >&4;;
8182 echo "I can't compile and run the test program." >&4
8183 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8188 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8193 hasproto='varname=$1; func=$2; shift; shift;
8194 while $test $# -ge 2; do
8196 $define) echo "#include <$2>";;
8200 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8201 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8202 echo "$func() prototype found.";
8205 echo "$func() prototype NOT found.";
8210 $rm -f try.c tryout.c'
8212 : see if prototype for drand48 is available
8214 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8217 : see if dup2 exists
8221 : see if eaccess exists
8222 set eaccess d_eaccess
8225 : see if endgrent exists
8226 set endgrent d_endgrent
8229 : see if endhostent exists
8230 set endhostent d_endhent
8233 : see if endnetent exists
8234 set endnetent d_endnent
8237 : see if endprotoent exists
8238 set endprotoent d_endpent
8241 : see if endpwent exists
8242 set endpwent d_endpwent
8245 : see if endservent exists
8246 set endservent d_endsent
8249 : see if endspent exists
8250 set endspent d_endspent
8253 : Locate the flags for 'open()'
8255 $cat >open3.c <<'EOCP'
8256 #include <sys/types.h>
8261 #include <sys/file.h>
8272 : check sys/file.h first to get FREAD on Sun
8273 if $test `./findhdr sys/file.h` && \
8274 set open3 -DI_SYS_FILE && eval $compile; then
8276 echo "<sys/file.h> defines the O_* constants..." >&4
8278 echo "and you have the 3 argument form of open()." >&4
8281 echo "but not the 3 argument form of open(). Oh, well." >&4
8284 elif $test `./findhdr fcntl.h` && \
8285 set open3 -DI_FCNTL && eval $compile; then
8287 echo "<fcntl.h> defines the O_* constants..." >&4
8289 echo "and you have the 3 argument form of open()." >&4
8292 echo "but not the 3 argument form of open(). Oh, well." >&4
8297 echo "I can't find the O_* constant definitions! You got problems." >&4
8303 : see which of string.h or strings.h is needed
8305 strings=`./findhdr string.h`
8306 if $test "$strings" && $test -r "$strings"; then
8307 echo "Using <string.h> instead of <strings.h>." >&4
8311 strings=`./findhdr strings.h`
8312 if $test "$strings" && $test -r "$strings"; then
8313 echo "Using <strings.h> instead of <string.h>." >&4
8315 echo "No string header found -- You'll surely have problems." >&4
8321 "$undef") strings=`./findhdr strings.h`;;
8322 *) strings=`./findhdr string.h`;;
8325 : check for non-blocking I/O stuff
8326 case "$h_sysfile" in
8327 true) echo "#include <sys/file.h>" > head.c;;
8330 true) echo "#include <fcntl.h>" > head.c;;
8331 *) echo "#include <sys/fcntl.h>" > head.c;;
8336 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8337 case "$o_nonblock" in
8340 $cat >>try.c <<'EOCP'
8344 printf("O_NONBLOCK\n");
8348 printf("O_NDELAY\n");
8352 printf("FNDELAY\n");
8359 if eval $compile_ok; then
8361 case "$o_nonblock" in
8362 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8363 *) echo "Seems like we can use $o_nonblock.";;
8366 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8369 *) echo "Using $hint value $o_nonblock.";;
8371 $rm -f try try.* .out core
8374 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8380 #include <sys/types.h>
8383 #define MY_O_NONBLOCK $o_nonblock
8384 #ifndef errno /* XXX need better Configure test */
8394 #include <strings.h>
8396 $signal_t blech(x) int x; { exit(3); }
8398 $cat >> try.c <<'EOCP'
8406 pipe(pd); /* Down: child -> parent */
8407 pipe(pu); /* Up: parent -> child */
8410 close(pd[1]); /* Parent reads from pd[0] */
8411 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8412 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8414 signal(SIGALRM, blech);
8416 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8418 sprintf(string, "%d\n", ret);
8419 write(2, string, strlen(string));
8422 if (errno == EAGAIN) {
8428 if (errno == EWOULDBLOCK)
8429 printf("EWOULDBLOCK\n");
8432 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8433 sleep(2); /* Give it time to close our pipe */
8435 ret = read(pd[0], buf, 1); /* Should read EOF */
8437 sprintf(string, "%d\n", ret);
8438 write(3, string, strlen(string));
8442 close(pd[0]); /* We write to pd[1] */
8443 close(pu[1]); /* We read from pu[0] */
8444 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8445 close(pd[1]); /* Pipe pd is now fully closed! */
8446 exit(0); /* Bye bye, thank you for playing! */
8450 if eval $compile_ok; then
8451 echo "$startsh" >mtry
8452 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8454 ./mtry >/dev/null 2>&1
8456 0) eagain=`$cat try.out`;;
8457 1) echo "Could not perform non-blocking setting!";;
8458 2) echo "I did a successful read() for something that was not there!";;
8459 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8460 *) echo "Something terribly wrong happened during testing.";;
8462 rd_nodata=`$cat try.ret`
8463 echo "A read() system call with no data present returns $rd_nodata."
8464 case "$rd_nodata" in
8467 echo "(That's peculiar, fixing that to be -1.)"
8473 echo "Forcing errno EAGAIN on read() with no data available."
8477 echo "Your read() sets errno to $eagain when no data is available."
8480 status=`$cat try.err`
8482 0) echo "And it correctly returns 0 to signal EOF.";;
8483 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8484 *) echo "However, your read() returns '$status' on EOF??";;
8487 if test "$status" = "$rd_nodata"; then
8488 echo "WARNING: you can't distinguish between EOF and no data!"
8492 echo "I can't compile the test program--assuming errno EAGAIN will do."
8499 echo "Using $hint value $eagain."
8500 echo "Your read() returns $rd_nodata when no data is present."
8501 case "$d_eofnblk" in
8502 "$define") echo "And you can see EOF because read() returns 0.";;
8503 "$undef") echo "But you can't see EOF status from read() returned value.";;
8505 echo "(Assuming you can't see EOF status from read anyway.)"
8511 $rm -f try try.* .out core head.c mtry
8513 : see if fchmod exists
8517 : see if fchown exists
8521 : see if this is an fcntl system
8525 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8526 while $test $# -ge 2; do
8528 $define) echo "#include <$2>";;
8532 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8534 if eval $compile; then
8545 : see whether socket exists
8547 $echo $n "Hmm... $c" >&4
8548 if set socket val -f d_socket; eval $csym; $val; then
8549 echo "Looks like you have Berkeley networking support." >&4
8551 if set setsockopt val -f; eval $csym; $val; then
8554 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8558 if $contains socklib libc.list >/dev/null 2>&1; then
8559 echo "Looks like you have Berkeley networking support." >&4
8561 : we will have to assume that it supports the 4.2 BSD interface
8564 echo "You don't have Berkeley networking in libc$_a..." >&4
8565 if test "X$d_socket" = "X$define"; then
8566 echo "...but you seem to believe that you have sockets." >&4
8568 for net in net socket
8570 if test -f /usr/lib/lib$net$_a; then
8571 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8572 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8573 if $contains socket libc.list >/dev/null 2>&1; then
8578 echo "...but the Wollongong group seems to have hacked it in." >&4
8579 sockethdr="-I/usr/netinclude"
8582 echo "Found Berkeley sockets interface in lib$net." >& 4
8583 if $contains setsockopt libc.list >/dev/null 2>&1; then
8586 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8593 if test "X$d_socket" != "X$define"; then
8594 echo "or anywhere else I see." >&4
8602 : see if socketpair exists
8603 set socketpair d_sockpair
8608 echo "Checking the availability of certain socket constants..." >& 4
8609 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8610 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8612 #include <sys/types.h>
8613 #include <sys/socket.h>
8619 set try; if eval $compile; then
8622 set d_${enum}; eval $setvar
8626 : see if sys/select.h has to be included
8627 set sys/select.h i_sysselct
8630 : see if we should include time.h, sys/time.h, or both
8632 if test "X$timeincl" = X; then
8633 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8634 $echo $n "I'm now running the test program...$c"
8635 $cat >try.c <<'EOCP'
8636 #include <sys/types.h>
8641 #ifdef SYSTIMEKERNEL
8644 #include <sys/time.h>
8647 #include <sys/select.h>
8656 struct timezone tzp;
8658 if (foo.tm_sec == foo.tm_sec)
8661 if (bar.tv_sec == bar.tv_sec)
8668 for s_timezone in '-DS_TIMEZONE' ''; do
8670 for s_timeval in '-DS_TIMEVAL' ''; do
8671 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8672 for i_time in '' '-DI_TIME'; do
8673 for i_systime in '-DI_SYSTIME' ''; do
8676 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8677 if eval $compile; then
8678 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8682 $echo $n "Succeeded with $flags$c"
8694 *SYSTIMEKERNEL*) i_systimek="$define"
8695 timeincl=`./findhdr sys/time.h`
8696 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8697 *) i_systimek="$undef";;
8700 *I_TIME*) i_time="$define"
8701 timeincl=`./findhdr time.h`" $timeincl"
8702 echo "We'll include <time.h>." >&4;;
8703 *) i_time="$undef";;
8706 *I_SYSTIME*) i_systime="$define"
8707 timeincl=`./findhdr sys/time.h`" $timeincl"
8708 echo "We'll include <sys/time.h>." >&4;;
8709 *) i_systime="$undef";;
8714 : check for fd_set items
8717 Checking to see how well your C compiler handles fd_set and friends ...
8719 $cat >fd_set.c <<EOCP
8720 #$i_systime I_SYS_TIME
8721 #$i_sysselct I_SYS_SELECT
8722 #$d_socket HAS_SOCKET
8723 #include <sys/types.h>
8725 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8728 #include <sys/time.h>
8731 #include <sys/select.h>
8740 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8747 set fd_set -DTRYBITS
8748 if eval $compile; then
8749 d_fds_bits="$define"
8751 echo "Well, your system knows about the normal fd_set typedef..." >&4
8753 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8754 d_fd_macros="$define"
8757 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8759 d_fd_macros="$undef"
8763 Hmm, your compiler has some difficulty with fd_set. Checking further...
8766 if eval $compile; then
8769 echo "Well, your system has some sort of fd_set available..." >&4
8771 echo "and you have the normal fd_set macros." >&4
8772 d_fd_macros="$define"
8775 but not the normal fd_set macros! Gross! More work for me...
8777 d_fd_macros="$undef"
8780 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8783 d_fd_macros="$undef"
8788 : see if fgetpos exists
8789 set fgetpos d_fgetpos
8792 : see if flock exists
8796 : see if fork exists
8800 : see if pathconf exists
8801 set pathconf d_pathconf
8804 : see if fpathconf exists
8805 set fpathconf d_fpathconf
8811 echo "Checking to see if your system supports off64_t..." >&4
8813 #include <sys/types.h>
8815 int main() { off64_t x = 7; }'
8818 if eval $compile; then
8820 echo "Yes, it does."
8823 echo "No, it doesn't."
8824 case "$lseeksize" in
8825 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8832 : check for fpos64_t
8834 echo "Checking to see if your system supports fpos64_t..." >&4
8836 #include <sys/stdio.h>
8837 int main() { fpos64_t x x = 7; }'
8840 if eval $compile; then
8842 echo "Yes, it does."
8845 echo "No, it doesn't."
8847 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8854 hasstruct='varname=$1; struct=$2; shift; shift;
8855 while $test $# -ge 2; do
8857 $define) echo "#include <$2>";;
8861 echo "int main () { struct $struct foo; }" >> try.c;
8863 if eval $compile; then
8872 : see if this is a sys/param system
8873 set sys/param.h i_sysparam
8876 : see if this is a sys/mount.h system
8877 set sys/mount.h i_sysmount
8880 : see if sys/types.h has to be included
8881 set sys/types.h i_systypes
8886 echo "Checking to see if your system supports struct fs_data..." >&4
8887 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8889 case "$d_fs_data_s" in
8890 "$define") echo "Yes, it does." ;;
8891 *) echo "No, it doesn't." ;;
8894 : see if fseeko exists
8898 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
8901 : see if fsetpos exists
8902 set fsetpos d_fsetpos
8906 : see if fstatfs exists
8907 set fstatfs d_fstatfs
8911 : see if statvfs exists
8912 set statvfs d_statvfs
8915 : see if fstatvfs exists
8916 set fstatvfs d_fstatvfs
8920 : see if ftello exists
8924 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
8927 : see if getcwd exists
8931 : see if getgrent exists
8932 set getgrent d_getgrent
8935 : see if gethostbyaddr exists
8936 set gethostbyaddr d_gethbyaddr
8939 : see if gethostbyname exists
8940 set gethostbyname d_gethbyname
8943 : see if gethostent exists
8944 set gethostent d_gethent
8947 : see how we will look up host name
8950 if set gethostname val -f d_gethname; eval $csym; $val; then
8951 echo 'gethostname() found.' >&4
8952 d_gethname="$define"
8955 if set uname val -f d_uname; eval $csym; $val; then
8958 uname() was found, but you're running xenix, and older versions of xenix
8959 have a broken uname(). If you don't really know whether your xenix is old
8960 enough to have a broken system call, use the default answer.
8967 rp='Is your uname() broken?'
8970 n*) d_uname="$define"; call=uname;;
8973 echo 'uname() found.' >&4
8980 case "$d_gethname" in
8981 '') d_gethname="$undef";;
8984 '') d_uname="$undef";;
8986 case "$d_uname$d_gethname" in
8991 Every now and then someone has a $call() that lies about the hostname
8992 but can't be fixed for political or economic reasons. If you wish, I can
8993 pretend $call() isn't there and maybe compute hostname at run-time
8994 thanks to the '$phostname' command.
8997 rp="Shall I ignore $call() from now on?"
9000 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9003 case "$phostname" in
9005 *) case "$aphostname" in
9011 file=`./loc $file $file $pth`
9012 aphostname=`echo $file $*`
9017 case "$d_uname$d_gethname" in
9020 case "$phostname" in
9022 echo "There will be no way for $package to get your hostname." >&4;;
9024 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9028 case "$d_phostname" in
9029 '') d_phostname="$undef";;
9032 : see if this is a netdb.h system
9036 : see if prototypes for various gethostxxx netdb.h functions are available
9038 set d_gethostprotos gethostent $i_netdb netdb.h
9041 : see if getlogin exists
9042 set getlogin d_getlogin
9045 : see if getmnt exists
9049 : see if getmntent exists
9050 set getmntent d_getmntent
9053 : see if getnetbyaddr exists
9054 set getnetbyaddr d_getnbyaddr
9057 : see if getnetbyname exists
9058 set getnetbyname d_getnbyname
9061 : see if getnetent exists
9062 set getnetent d_getnent
9065 : see if prototypes for various getnetxxx netdb.h functions are available
9067 set d_getnetprotos getnetent $i_netdb netdb.h
9071 : see if getprotobyname exists
9072 set getprotobyname d_getpbyname
9075 : see if getprotobynumber exists
9076 set getprotobynumber d_getpbynumber
9079 : see if getprotoent exists
9080 set getprotoent d_getpent
9083 : see if getpgid exists
9084 set getpgid d_getpgid
9087 : see if getpgrp2 exists
9088 set getpgrp2 d_getpgrp2
9091 : see if getppid exists
9092 set getppid d_getppid
9095 : see if getpriority exists
9096 set getpriority d_getprior
9099 : see if prototypes for various getprotoxxx netdb.h functions are available
9101 set d_getprotoprotos getprotoent $i_netdb netdb.h
9104 : see if getpwent exists
9105 set getpwent d_getpwent
9109 : see if getservbyname exists
9110 set getservbyname d_getsbyname
9113 : see if getservbyport exists
9114 set getservbyport d_getsbyport
9117 : see if getservent exists
9118 set getservent d_getsent
9121 : see if prototypes for various getservxxx netdb.h functions are available
9123 set d_getservprotos getservent $i_netdb netdb.h
9126 : see if getspent exists
9127 set getspent d_getspent
9130 : see if getspnam exists
9131 set getspnam d_getspnam
9134 : see if gettimeofday or ftime exists
9135 set gettimeofday d_gettimeod
9137 case "$d_gettimeod" in
9143 val="$undef"; set d_ftime; eval $setvar
9146 case "$d_gettimeod$d_ftime" in
9149 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9153 : see if this is an grp system
9159 xxx=`./findhdr grp.h`
9160 $cppstdin $cppflags $cppminus < $xxx >$$.h
9162 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9174 set d_grpasswd; eval $setvar
9178 : see if hasmntopt exists
9179 set hasmntopt d_hasmntopt
9182 : see if this is a netinet/in.h or sys/in.h system
9183 set netinet/in.h i_niin sys/in.h i_sysin
9186 : see if arpa/inet.h has to be included
9187 set arpa/inet.h i_arpainet
9190 : see if htonl --and friends-- exists
9195 : Maybe they are macros.
9200 #include <sys/types.h>
9201 #$i_niin I_NETINET_IN
9203 #$i_arpainet I_ARPA_INET
9205 #include <netinet/in.h>
9211 #include <arpa/inet.h>
9214 printf("Defined as a macro.");
9217 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9218 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9220 echo "But it seems to be defined as a macro." >&4
9228 : see if iconv exists
9234 if set index val -f; eval $csym; $val; then
9235 if set strchr val -f d_strchr; eval $csym; $val; then
9236 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9239 echo "strchr() found." >&4
9243 echo "index() found." >&4
9248 echo "index() found." >&4
9251 if set strchr val -f d_strchr; eval $csym; $val; then
9254 echo "strchr() found." >&4
9256 echo "No index() or strchr() found!" >&4
9261 set d_strchr; eval $setvar
9263 set d_index; eval $setvar
9265 : check whether inet_aton exists
9266 set inet_aton d_inetaton
9269 : see if inttypes.h is available
9270 : we want a real compile instead of Inhdr because some systems
9271 : have an inttypes.h which includes non-existent headers
9274 #include <inttypes.h>
9276 static int32_t foo32 = 0x12345678;
9280 if eval $compile; then
9281 echo "<inttypes.h> found." >&4
9284 echo "<inttypes.h> NOT found." >&4
9293 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9295 #include <sys/types.h>
9296 #$i_inttypes I_INTTYPES
9298 #include <inttypes.h>
9300 int main() { int64_t x = 7; }
9303 if eval $compile; then
9305 echo " Yes, it does." >&4
9308 echo " No, it doesn't." >&4
9316 $cat >isascii.c <<'EOCP'
9328 if eval $compile; then
9329 echo "isascii() found." >&4
9332 echo "isascii() NOT found." >&4
9339 : see if killpg exists
9343 : see if lchown exists
9345 $cat > try.c <<'EOCP'
9346 /* System header to define __stub macros and hopefully few prototypes,
9347 which can conflict with char lchown(); below. */
9349 /* Override any gcc2 internal prototype to avoid an error. */
9350 /* We use char because int might match the return type of a gcc2
9351 builtin and then its argument prototype would still apply. */
9354 /* The GNU C library defines this for functions which it implements
9355 to always fail with ENOSYS. Some functions are actually named
9356 something starting with __ and the normal name is an alias. */
9357 #if defined (__stub_lchown) || defined (__stub___lchown)
9365 if eval $compile; then
9366 $echo "lchown() found." >&4
9369 $echo "lchown() NOT found." >&4
9375 : See if number of significant digits in a double precision number is known
9377 $cat >ldbl_dig.c <<EOM
9387 printf("Contains LDBL_DIG");
9390 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9391 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9392 echo "LDBL_DIG found." >&4
9395 echo "LDBL_DIG NOT found." >&4
9402 : see if link exists
9406 : see if localeconv exists
9407 set localeconv d_locconv
9410 : see if lockf exists
9414 : check for long long
9416 $echo $n "Checking to see if your system supports long long..." $c >&4
9417 echo 'int main() { long long x = 7; return 0; }' > try.c
9419 if eval $compile; then
9421 echo " Yes, it does." >&4
9424 echo " No, it doesn't." >&4
9430 : check for length of long long
9431 case "${d_longlong}${longlongsize}" in
9434 $echo $n "Checking to see how big your long longs are..." $c >&4
9435 $cat >try.c <<'EOCP'
9439 printf("%d\n", (int)sizeof(long long));
9444 if eval $compile_ok; then
9445 longlongsize=`./try$exe_ext`
9446 $echo " $longlongsize bytes." >&4
9450 echo "(I can't seem to compile the test program. Guessing...)"
9451 rp="What is the size of a long long (in bytes)?"
9455 if $test "X$longsize" = "X$longlongsize"; then
9456 echo "(That isn't any different from an ordinary long.)"
9462 : see if lstat exists
9466 : see if mblen exists
9470 : see if mbstowcs exists
9471 set mbstowcs d_mbstowcs
9474 : see if mbtowc exists
9478 : see if memchr exists
9482 : see if memcmp exists
9486 : see if memcpy exists
9490 : see if memmove exists
9491 set memmove d_memmove
9494 : see if memset exists
9498 : see if mkdir exists
9502 : see if mkdtemp exists
9503 set mkdtemp d_mkdtemp
9506 : see if mkfifo exists
9510 : see if mkstemp exists
9511 set mkstemp d_mkstemp
9514 : see if mkstemps exists
9515 set mkstemps d_mkstemps
9518 : see if mktime exists
9522 : see if mprotect exists
9523 set mprotect d_mprotect
9526 : see if msgctl exists
9530 : see if msgget exists
9534 : see if msgsnd exists
9538 : see if msgrcv exists
9542 : see how much of the 'msg*(2)' library is present.
9545 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9546 *"$undef"*) h_msg=false;;
9550 case "`ipcs 2>&1`" in
9551 "SVID messages"*"not configured"*)
9552 echo "Your $osname does not have the msg*(2) configured." >&4
9567 : we could also check for sys/ipc.h ...
9568 if $h_msg && $test `./findhdr sys/msg.h`; then
9569 echo "You have the full msg*(2) library." >&4
9572 echo "You don't have the full msg*(2) library." >&4
9578 : see if msync exists
9582 : see if munmap exists
9586 : see if nice exists
9592 echo "Checking which 64-bit integer type we could use..." >&4
9598 val='"unsigned int"'
9603 *) case "$longsize" in
9607 val='"unsigned long"'
9612 *) case "$d_longlong:$longlongsize" in
9617 val='"unsigned long long"'
9622 *) case "$d_int64t" in
9641 '') echo "Alas, no 64-bit integer types in sight." >&4
9644 *) if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9649 echo "We $verb use '$quadtype' for 64-bit integers." >&4
9654 : check for length of character
9658 echo "Checking to see how big your characters are (hey, you never know)..." >&4
9659 $cat >try.c <<'EOCP'
9663 printf("%d\n", (int)sizeof(char));
9668 if eval $compile_ok; then
9672 echo "(I can't seem to compile the test program. Guessing...)"
9679 rp="What is the size of a character (in bytes)?"
9686 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9688 case "$use64bits:$d_quad:$quadtype" in
9696 uvtype="unsigned long"
9702 case "$uselongdouble:$d_longdbl" in
9704 nvtype="long double"
9712 $echo "(IV will be "$ivtype", $ivsize bytes)"
9713 $echo "(UV will be "$uvtype", $uvsize bytes)"
9714 $echo "(NV will be "$nvtype", $nvsize bytes)"
9717 #$i_inttypes I_INTTYPES
9719 #include <inttypes.h>
9724 int8_t i = INT8_MAX;
9725 uint8_t u = UINT8_MAX;
9729 int16_t i = INT16_MAX;
9730 uint16_t i = UINT16_MAX;
9731 printf("int16_t\n");
9734 int32_t i = INT32_MAX;
9735 uint32_t u = UINT32_MAX;
9736 printf("int32_t\n");
9742 '') case "$charsize" in
9744 u8type="unsigned char"
9753 if eval $compile; then
9754 case "`./try$exe_ext`" in
9755 int8_t) i8type=int8_t
9765 '') if $test $charsize -ge 1; then
9767 u8type="unsigned char"
9775 '') case "$shortsize" in
9777 u16type="unsigned short"
9786 if eval $compile; then
9787 case "`./try$exe_ext`" in
9799 '') if $test $shortsize -ge 2; then
9801 u16type="unsigned short"
9809 '') case "$longsize" in
9811 u32type="unsigned long"
9815 *) case "$intsize" in
9817 u32type="unsigned int"
9828 if eval $compile; then
9829 case "`./try$exe_ext`" in
9841 '') if $test $intsize -ge 4; then
9843 u32type="unsigned int"
9851 '') case "$d_quad:$quadtype" in
9854 u64type="$uquadtype"
9862 $echo "Checking whether your NVs can preserve your UVs..." >&4
9866 $uvtype k = ($uvtype)~0, l;
9872 printf("preserve\n");
9877 if eval $compile; then
9878 case "`./try$exe_ext`" in
9879 preserve) d_nv_preserves_uv="$define" ;;
9882 case "$d_nv_preserves_uv" in
9883 $define) $echo "Yes, they can." 2>&1 ;;
9884 *) $echo "No, they can't." 2>&1
9885 d_nv_preserves_uv="$undef"
9891 : see if POSIX threads are available
9892 set pthread.h i_pthread
9898 : how to create joinable pthreads
9899 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9901 echo "Checking what constant to use for creating joinable pthreads..." >&4
9902 $cat >try.c <<'EOCP'
9903 #include <pthread.h>
9905 int detachstate = JOINABLE;
9908 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9909 if eval $compile; then
9910 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9911 val="$undef" # Yes, undef.
9912 set d_old_pthread_create_joinable
9915 set old_pthread_create_joinable
9918 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9919 if eval $compile; then
9920 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9922 set d_old_pthread_create_joinable
9924 val=PTHREAD_CREATE_UNDETACHED
9925 set old_pthread_create_joinable
9928 set try -DJOINABLE=__UNDETACHED
9929 if eval $compile; then
9930 echo "You seem to use __UNDETACHED." >&4
9932 set d_old_pthread_create_joinable
9935 set old_pthread_create_joinable
9938 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
9940 set d_old_pthread_create_joinable
9943 set old_pthread_create_joinable
9950 d_old_pthread_create_joinable="$undef"
9951 old_pthread_create_joinable=""
9954 : see if pause exists
9958 : see if pipe exists
9962 : see if poll exists
9967 : see whether the various POSIXish _yields exist
9969 #include <pthread.h>
9975 #ifdef PTHREAD_YIELD
9978 #ifdef PTHREAD_YIELD_NULL
9979 pthread_yield(NULL);
9985 : see if sched_yield exists
9986 set try -DSCHED_YIELD
9987 if eval $compile; then
9989 sched_yield='sched_yield()'
9993 case "$usethreads" in
9996 $define) echo 'sched_yield() found.' >&4 ;;
9997 *) echo 'sched_yield() NOT found.' >&4 ;;
10003 : see if pthread_yield exists
10004 set try -DPTHREAD_YIELD
10005 if eval $compile; then
10007 case "$sched_yield" in
10008 '') sched_yield='pthread_yield()' ;;
10011 set try -DPTHREAD_YIELD_NULL
10012 if eval $compile; then
10014 case "$sched_yield" in
10015 '') sched_yield='pthread_yield(NULL)' ;;
10021 case "$usethreads" in
10024 $define) echo 'pthread_yield() found.' >&4 ;;
10025 *) echo 'pthread_yield() NOT found.' >&4 ;;
10029 set d_pthread_yield
10032 case "$sched_yield" in
10033 '') sched_yield=undef ;;
10038 : see if this is a pwd.h system
10044 xxx=`./findhdr pwd.h`
10045 $cppstdin $cppflags $cppminus < $xxx >$$.h
10047 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10055 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10063 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10071 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10079 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10087 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10095 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10103 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10115 set d_pwquota; eval $setvar
10116 set d_pwage; eval $setvar
10117 set d_pwchange; eval $setvar
10118 set d_pwclass; eval $setvar
10119 set d_pwexpire; eval $setvar
10120 set d_pwcomment; eval $setvar
10121 set d_pwgecos; eval $setvar
10122 set d_pwpasswd; eval $setvar
10126 : see if readdir and friends exist
10127 set readdir d_readdir
10129 set seekdir d_seekdir
10131 set telldir d_telldir
10133 set rewinddir d_rewinddir
10136 : see if readlink exists
10137 set readlink d_readlink
10140 : see if rename exists
10141 set rename d_rename
10144 : see if rmdir exists
10148 : see if memory.h is available.
10153 : See if it conflicts with string.h
10159 $cppstdin $cppflags $cppminus < $strings > mem.h
10160 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10162 echo "We won't be including <memory.h>."
10172 : can bcopy handle overlapping blocks?
10177 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10179 #$i_memory I_MEMORY
10180 #$i_stdlib I_STDLIB
10181 #$i_string I_STRING
10182 #$i_unistd I_UNISTD
10184 $cat >>try.c <<'EOCP'
10187 # include <memory.h>
10190 # include <stdlib.h>
10193 # include <string.h>
10195 # include <strings.h>
10198 # include <unistd.h> /* Needed for NetBSD */
10202 char buf[128], abc[128];
10208 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10210 for (align = 7; align >= 0; align--) {
10211 for (len = 36; len; len--) {
10213 bcopy(abc, b, len);
10214 for (off = 1; off <= len; off++) {
10215 bcopy(b, b+off, len);
10216 bcopy(b+off, b, len);
10217 if (bcmp(b, abc, len))
10226 if eval $compile_ok; then
10227 if ./try 2>/dev/null; then
10228 echo "Yes, it can."
10231 echo "It can't, sorry."
10232 case "$d_memmove" in
10233 "$define") echo "But that's Ok since you have memmove()." ;;
10237 echo "(I can't compile the test program, so we'll assume not...)"
10238 case "$d_memmove" in
10239 "$define") echo "But that's Ok since you have memmove()." ;;
10244 $rm -f try.* try core
10248 : can memcpy handle overlapping blocks?
10250 case "$d_memcpy" in
10253 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10255 #$i_memory I_MEMORY
10256 #$i_stdlib I_STDLIB
10257 #$i_string I_STRING
10258 #$i_unistd I_UNISTD
10260 $cat >>try.c <<'EOCP'
10263 # include <memory.h>
10266 # include <stdlib.h>
10269 # include <string.h>
10271 # include <strings.h>
10274 # include <unistd.h> /* Needed for NetBSD */
10278 char buf[128], abc[128];
10284 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10285 try to store the string in read-only memory. */
10286 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10288 for (align = 7; align >= 0; align--) {
10289 for (len = 36; len; len--) {
10291 memcpy(b, abc, len);
10292 for (off = 1; off <= len; off++) {
10293 memcpy(b+off, b, len);
10294 memcpy(b, b+off, len);
10295 if (memcmp(b, abc, len))
10304 if eval $compile_ok; then
10305 if ./try 2>/dev/null; then
10306 echo "Yes, it can."
10309 echo "It can't, sorry."
10310 case "$d_memmove" in
10311 "$define") echo "But that's Ok since you have memmove()." ;;
10315 echo "(I can't compile the test program, so we'll assume not...)"
10316 case "$d_memmove" in
10317 "$define") echo "But that's Ok since you have memmove()." ;;
10322 $rm -f try.* try core
10326 : can memcmp be trusted to compare relative magnitude?
10328 case "$d_memcmp" in
10331 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10333 #$i_memory I_MEMORY
10334 #$i_stdlib I_STDLIB
10335 #$i_string I_STRING
10336 #$i_unistd I_UNISTD
10338 $cat >>try.c <<'EOCP'
10341 # include <memory.h>
10344 # include <stdlib.h>
10347 # include <string.h>
10349 # include <strings.h>
10352 # include <unistd.h> /* Needed for NetBSD */
10358 if ((a < b) && memcmp(&a, &b, 1) < 0)
10364 if eval $compile_ok; then
10365 if ./try 2>/dev/null; then
10366 echo "Yes, it can."
10369 echo "No, it can't (it uses signed chars)."
10372 echo "(I can't compile the test program, so we'll assume not...)"
10376 $rm -f try.* try core
10380 : see if select exists
10381 set select d_select
10384 : see if semctl exists
10385 set semctl d_semctl
10388 : see if semget exists
10389 set semget d_semget
10392 : see if semop exists
10396 : see how much of the 'sem*(2)' library is present.
10399 case "$d_semctl$d_semget$d_semop" in
10400 *"$undef"*) h_sem=false;;
10404 case "`ipcs 2>&1`" in
10405 "SVID messages"*"not configured"*)
10406 echo "Your $osname does not have the sem*(2) configured." >&4
10409 set semctl d_semctl
10411 set semget d_semget
10419 : we could also check for sys/ipc.h ...
10420 if $h_sem && $test `./findhdr sys/sem.h`; then
10421 echo "You have the full sem*(2) library." >&4
10424 echo "You don't have the full sem*(2) library." >&4
10430 : see whether sys/sem.h defines union semun
10432 $cat > try.c <<'END'
10433 #include <sys/types.h>
10434 #include <sys/ipc.h>
10435 #include <sys/sem.h>
10436 int main () { union semun semun; semun.buf = 0; }
10439 if eval $compile; then
10440 echo "You have union semun in <sys/sem.h>." >&4
10443 echo "You do not have union semun in <sys/sem.h>." >&4
10446 $rm -f try try.c try.h
10450 : see how to do semctl IPC_STAT
10453 : see whether semctl IPC_STAT can use union semun
10458 # define S_IRUSR S_IREAD
10459 # define S_IWUSR S_IWRITE
10460 # define S_IXUSR S_IEXEC
10462 # define S_IRUSR 0400
10463 # define S_IWUSR 0200
10464 # define S_IXUSR 0100
10466 # define S_IRGRP (S_IRUSR>>3)
10467 # define S_IWGRP (S_IWUSR>>3)
10468 # define S_IXGRP (S_IXUSR>>3)
10469 # define S_IROTH (S_IRUSR>>6)
10470 # define S_IWOTH (S_IWUSR>>6)
10471 # define S_IXOTH (S_IXUSR>>6)
10474 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10475 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10476 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10481 #include <sys/types.h>
10482 #include <sys/ipc.h>
10483 #include <sys/sem.h>
10484 #include <sys/stat.h>
10491 #$d_union_semun HAS_UNION_SEMUN
10494 #ifndef HAS_UNION_SEMUN
10497 struct semid_ds *buf;
10498 unsigned short *array;
10504 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10505 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10507 struct semid_ds argbuf;
10510 st = semctl(sem, 0, IPC_STAT, arg);
10514 # endif /* IPC_STAT */
10515 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10517 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10518 # endif /* IPC_RMID */
10519 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10521 #endif /* IPC_PRIVATE && ... */
10522 printf("semget failed: errno = %d\n", errno);
10528 if eval $compile; then
10531 semun) val="$define" ;;
10537 case "$d_semctl_semun" in
10539 echo "You can use union semun for semctl IPC_STAT." >&4
10542 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10547 : see whether semctl IPC_STAT can use struct semid_ds pointer
10548 $cat > try.c <<'END'
10549 #include <sys/types.h>
10550 #include <sys/ipc.h>
10551 #include <sys/sem.h>
10552 #include <sys/stat.h>
10560 struct semid_ds arg;
10563 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10564 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10567 st = semctl(sem, 0, IPC_STAT, &arg);
10569 printf("semid_ds\n");
10571 # endif /* IPC_STAT */
10572 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10574 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10575 # endif /* IPC_RMID */
10576 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10578 #endif /* IPC_PRIVATE && ... */
10579 printf("semget failed: errno = %d\n", errno);
10586 if eval $compile; then
10589 semid_ds) val="$define" ;;
10593 set d_semctl_semid_ds
10595 case "$d_semctl_semid_ds" in
10597 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10599 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10606 # We do not have the full sem*(2) library, so assume we can not
10612 set d_semctl_semid_ds
10617 : see if setegid exists
10618 set setegid d_setegid
10621 : see if seteuid exists
10622 set seteuid d_seteuid
10625 : see if setgrent exists
10626 set setgrent d_setgrent
10629 : see if sethostent exists
10630 set sethostent d_sethent
10633 : see if setlinebuf exists
10634 set setlinebuf d_setlinebuf
10637 : see if setlocale exists
10638 set setlocale d_setlocale
10641 : see if setnetent exists
10642 set setnetent d_setnent
10645 : see if setprotoent exists
10646 set setprotoent d_setpent
10649 : see if setpgid exists
10650 set setpgid d_setpgid
10653 : see if setpgrp2 exists
10654 set setpgrp2 d_setpgrp2
10657 : see if setpriority exists
10658 set setpriority d_setprior
10661 : see if setpwent exists
10662 set setpwent d_setpwent
10665 : see if setregid exists
10666 set setregid d_setregid
10668 set setresgid d_setresgid
10671 : see if setreuid exists
10672 set setreuid d_setreuid
10674 set setresuid d_setresuid
10677 : see if setrgid exists
10678 set setrgid d_setrgid
10681 : see if setruid exists
10682 set setruid d_setruid
10685 : see if setservent exists
10686 set setservent d_setsent
10689 : see if setsid exists
10690 set setsid d_setsid
10693 : see if setspent exists
10694 set setspent d_setspent
10697 : see if setvbuf exists
10698 set setvbuf d_setvbuf
10701 : see if sfio.h is available
10706 : see if sfio library is available
10717 : Ok, but do we want to use it.
10721 true|$define|[yY]*) dflt='y';;
10724 echo "$package can use the sfio library, but it is experimental."
10725 rp="You seem to have sfio available, do you want to try using it?"
10729 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
10731 : Remove sfio from list of libraries to use
10732 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10735 echo "libs = $libs" >&4
10739 *) case "$usesfio" in
10740 true|$define|[yY]*)
10741 echo "Sorry, cannot find sfio on this machine" >&4
10742 echo "Ignoring your setting of usesfio=$usesfio" >&4
10750 $define) usesfio='true';;
10751 *) usesfio='false';;
10754 : see if shmctl exists
10755 set shmctl d_shmctl
10758 : see if shmget exists
10759 set shmget d_shmget
10762 : see if shmat exists
10765 : see what shmat returns
10768 $cat >shmat.c <<'END'
10769 #include <sys/shm.h>
10772 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10777 echo "and it returns ($shmattype)." >&4
10778 : see if a prototype for shmat is available
10779 xxx=`./findhdr sys/shm.h`
10780 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10781 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10792 set d_shmatprototype
10795 : see if shmdt exists
10799 : see how much of the 'shm*(2)' library is present.
10802 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10803 *"$undef"*) h_shm=false;;
10807 case "`ipcs 2>&1`" in
10808 "SVID shared memory"*"not configured"*)
10809 echo "Your $osname does not have the shm*(2) configured." >&4
10812 set shmctl d_shmctl
10814 set shmget d_shmget
10824 : we could also check for sys/ipc.h ...
10825 if $h_shm && $test `./findhdr sys/shm.h`; then
10826 echo "You have the full shm*(2) library." >&4
10829 echo "You don't have the full shm*(2) library." >&4
10836 : see if we have sigaction
10837 if set sigaction val -f d_sigaction; eval $csym; $val; then
10838 echo 'sigaction() found.' >&4
10839 $cat > try.c <<'EOP'
10841 #include <sys/types.h>
10842 #include <signal.h>
10845 struct sigaction act, oact;
10847 oact.sa_handler = 0;
10848 /* so that act and oact are used */
10849 exit(act.sa_flags == 0 && oact.sa_handler == 0);
10853 if eval $compile_ok; then
10856 echo "But you don't seem to have a useable struct sigaction." >&4
10860 echo 'sigaction NOT found.' >&4
10863 set d_sigaction; eval $setvar
10864 $rm -f try try$_o try.c
10866 : see if sigsetjmp exists
10868 case "$d_sigsetjmp" in
10870 $cat >try.c <<'EOP'
10871 #include <setjmp.h>
10876 if (sigsetjmp(env,1))
10879 siglongjmp(env, 1);
10884 if eval $compile; then
10885 if ./try >/dev/null 2>&1; then
10886 echo "POSIX sigsetjmp found." >&4
10890 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10896 echo "sigsetjmp not found." >&4
10900 *) val="$d_sigsetjmp"
10901 case "$d_sigsetjmp" in
10902 $define) echo "POSIX sigsetjmp found." >&4;;
10903 $undef) echo "sigsetjmp not found." >&4;;
10911 : see if sys/stat.h is available
10912 set sys/stat.h i_sysstat
10916 : see if stat knows about block sizes
10918 echo "Checking to see if your struct stat has st_blocks field..." >&4
10919 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10923 : see if this is a sys/vfs.h system
10924 set sys/vfs.h i_sysvfs
10928 : see if this is a sys/statfs.h system
10929 set sys/statfs.h i_sysstatfs
10934 echo "Checking to see if your system supports struct statfs..." >&4
10935 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
10937 case "$d_statfs_s" in
10938 "$define") echo "Yes, it does." ;;
10939 *) echo "No, it doesn't." ;;
10944 : see if struct statfs knows about f_flags
10945 case "$d_statfs_s" in
10948 echo "Checking to see if your struct statfs has f_flags field..." >&4
10949 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
10953 set d_statfs_f_flags
10957 case "$d_statfs_f_flags" in
10958 "$define") echo "Yes, it does." ;;
10959 *) echo "No, it doesn't." ;;
10962 : see if _ptr and _cnt from stdio act std
10964 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10965 echo "(Looks like you have stdio.h from Linux.)"
10966 case "$stdio_ptr" in
10967 '') stdio_ptr='((fp)->_IO_read_ptr)'
10970 *) ptr_lval=$d_stdio_ptr_lval;;
10972 case "$stdio_cnt" in
10973 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10976 *) cnt_lval=$d_stdio_cnt_lval;;
10978 case "$stdio_base" in
10979 '') stdio_base='((fp)->_IO_read_base)';;
10981 case "$stdio_bufsiz" in
10982 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
10985 case "$stdio_ptr" in
10986 '') stdio_ptr='((fp)->_ptr)'
10989 *) ptr_lval=$d_stdio_ptr_lval;;
10991 case "$stdio_cnt" in
10992 '') stdio_cnt='((fp)->_cnt)'
10995 *) cnt_lval=$d_stdio_cnt_lval;;
10997 case "$stdio_base" in
10998 '') stdio_base='((fp)->_base)';;
11000 case "$stdio_bufsiz" in
11001 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11004 : test whether _ptr and _cnt really work
11005 echo "Checking how std your stdio is..." >&4
11008 #define FILE_ptr(fp) $stdio_ptr
11009 #define FILE_cnt(fp) $stdio_cnt
11011 FILE *fp = fopen("try.c", "r");
11014 18 <= FILE_cnt(fp) &&
11015 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11023 if eval $compile; then
11025 echo "Your stdio acts pretty std."
11028 echo "Your stdio isn't very std."
11031 echo "Your stdio doesn't appear very std."
11037 : Can _ptr be used as an lvalue?
11038 case "$d_stdstdio$ptr_lval" in
11039 $define$define) val=$define ;;
11042 set d_stdio_ptr_lval
11045 : Can _cnt be used as an lvalue?
11046 case "$d_stdstdio$cnt_lval" in
11047 $define$define) val=$define ;;
11050 set d_stdio_cnt_lval
11053 : see if _base is also standard
11055 case "$d_stdstdio" in
11059 #define FILE_base(fp) $stdio_base
11060 #define FILE_bufsiz(fp) $stdio_bufsiz
11062 FILE *fp = fopen("try.c", "r");
11065 19 <= FILE_bufsiz(fp) &&
11066 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11073 if eval $compile; then
11075 echo "And its _base field acts std."
11078 echo "But its _base field isn't std."
11081 echo "However, it seems to be lacking the _base field."
11090 Checking how to access stdio streams by file descriptor number...
11092 case "$stdio_stream_array" in
11093 '') $cat >try.c <<EOCP
11096 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11100 for s in _iob __iob __sF
11102 set try -DSTDIO_STREAM_ARRAY=$s
11103 if eval $compile; then
11104 case "`./try$exe_ext`" in
11105 yes) stdio_stream_array=$s; break ;;
11109 $rm -f try.* try$exe_ext
11111 case "$stdio_stream_array" in
11113 I can't figure out how to access stdio streams by file descriptor number.
11115 d_stdio_stream_array="$undef"
11118 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11120 d_stdio_stream_array="$define"
11124 : see if strcoll exists
11125 set strcoll d_strcoll
11128 : check for structure copying
11130 echo "Checking to see if your C compiler can copy structs..." >&4
11131 $cat >try.c <<'EOCP'
11141 if $cc -c try.c >/dev/null 2>&1 ; then
11143 echo "Yup, it can."
11146 echo "Nope, it can't."
11152 : see if strerror and/or sys_errlist[] exist
11154 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11155 if set strerror val -f d_strerror; eval $csym; $val; then
11156 echo 'strerror() found.' >&4
11157 d_strerror="$define"
11158 d_strerrm='strerror(e)'
11159 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11160 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11161 d_syserrlst="$define"
11163 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11164 d_syserrlst="$undef"
11166 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11167 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11168 echo 'strerror() found in string header.' >&4
11169 d_strerror="$define"
11170 d_strerrm='strerror(e)'
11171 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11172 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11173 d_syserrlst="$define"
11175 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11176 d_syserrlst="$undef"
11178 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11179 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11180 d_strerror="$undef"
11181 d_syserrlst="$define"
11182 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11184 echo 'strerror() and sys_errlist[] NOT found.' >&4
11185 d_strerror="$undef"
11186 d_syserrlst="$undef"
11187 d_strerrm='"unknown"'
11191 : see if strtod exists
11192 set strtod d_strtod
11195 : see if strtol exists
11196 set strtol d_strtol
11199 : see if strtold exists
11200 set strtold d_strtold
11203 : see if strtoll exists
11204 set strtoll d_strtoll
11207 : see if strtoul exists
11208 set strtoul d_strtoul
11211 : see if strtoull exists
11212 set strtoull d_strtoull
11215 : see if strtouq exists
11216 set strtouq d_strtouq
11219 : see if strxfrm exists
11220 set strxfrm d_strxfrm
11223 : see if symlink exists
11224 set symlink d_symlink
11227 : see if syscall exists
11228 set syscall d_syscall
11231 : see if sysconf exists
11232 set sysconf d_sysconf
11235 : see if system exists
11236 set system d_system
11239 : see if tcgetpgrp exists
11240 set tcgetpgrp d_tcgetpgrp
11243 : see if tcsetpgrp exists
11244 set tcsetpgrp d_tcsetpgrp
11247 : see if prototype for telldir is available
11249 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11252 : see if this is a sys/times.h system
11253 set sys/times.h i_systimes
11256 : see if times exists
11258 if set times val -f d_times; eval $csym; $val; then
11259 echo 'times() found.' >&4
11262 case "$i_systimes" in
11263 "$define") inc='sys/times.h';;
11265 rp="What is the type returned by times() on this system?"
11266 set clock_t clocktype long stdio.h sys/types.h $inc
11269 echo 'times() NOT found, hope that will do.' >&4
11274 : see if truncate exists
11275 set truncate d_truncate
11278 : see if tzname[] exists
11280 if set tzname val -a d_tzname; eval $csym; $val; then
11282 echo 'tzname[] found.' >&4
11285 echo 'tzname[] NOT found.' >&4
11290 : see if umask exists
11294 : see if ustat exists
11298 : backward compatibility for d_hvfork
11299 if test X$d_hvfork != X; then
11300 d_vfork="$d_hvfork"
11303 : see if there is a vfork
11308 : Ok, but do we want to use it. vfork is reportedly unreliable in
11309 : perl on Solaris 2.x, and probably elsewhere.
11313 case "$usevfork" in
11319 Perl can only use a vfork() that doesn't suffer from strict
11320 restrictions on calling functions or modifying global data in
11321 the child. For example, glibc-2.1 contains such a vfork()
11322 that is unsuitable. If your system provides a proper fork()
11323 call, chances are that you do NOT want perl to use vfork().
11326 rp="Do you still want to use vfork()?"
11331 echo "Ok, we won't use vfork()."
11340 $define) usevfork='true';;
11341 *) usevfork='false';;
11344 : see if this is an sysdir system
11345 set sys/dir.h i_sysdir
11348 : see if this is an sysndir system
11349 set sys/ndir.h i_sysndir
11352 : see if closedir exists
11353 set closedir d_closedir
11356 case "$d_closedir" in
11359 echo "Checking whether closedir() returns a status..." >&4
11360 cat > closedir.c <<EOM
11361 #$i_dirent I_DIRENT /**/
11362 #$i_sysdir I_SYS_DIR /**/
11363 #$i_sysndir I_SYS_NDIR /**/
11364 #$i_systypes I_SYS_TYPES /**/
11366 #if defined(I_SYS_TYPES)
11367 #include <sys/types.h>
11369 #if defined(I_DIRENT)
11370 #include <dirent.h>
11371 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11372 #include <sys/dir.h>
11376 #include <sys/ndir.h>
11380 #include <ndir.h> /* may be wrong in the future */
11382 #include <sys/dir.h>
11387 int main() { return closedir(opendir(".")); }
11390 if eval $compile_ok; then
11391 if ./closedir > /dev/null 2>&1 ; then
11392 echo "Yes, it does."
11395 echo "No, it doesn't."
11399 echo "(I can't seem to compile the test program--assuming it doesn't)"
11407 set d_void_closedir
11410 : check for volatile keyword
11412 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11413 $cat >try.c <<'EOCP'
11416 typedef struct _goo_struct goo_struct;
11417 goo_struct * volatile goo = ((goo_struct *)0);
11418 struct _goo_struct {
11423 typedef unsigned short foo_t;
11424 char *volatile foo;
11426 volatile foo_t blech;
11430 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11432 echo "Yup, it does."
11435 echo "Nope, it doesn't."
11441 : see if there is a wait4
11445 : see if waitpid exists
11446 set waitpid d_waitpid
11449 : see if wcstombs exists
11450 set wcstombs d_wcstombs
11453 : see if wctomb exists
11454 set wctomb d_wctomb
11457 : preserve RCS keywords in files with variable substitution, grrr
11462 Revision='$Revision'
11464 case "$crosscompile" in
11465 ''|[nN]*) crosscompile="$undef" ;;
11469 next|rhapsody) multiarch="$define" ;;
11471 case "$multiarch" in
11472 ''|[nN]*) multiarch="$undef" ;;
11475 : check for alignment requirements
11477 case "$crosscompile$multiarch" in
11480 You seem to be either cross-compiling or doing a multiarchitecture build,
11481 skipping the memory alignment check.
11484 case "$alignbytes" in
11485 '') alignbytes=8 ;;
11489 case "$alignbytes" in
11490 '') echo "Checking alignment constraints..." >&4
11491 $cat >try.c <<'EOCP'
11499 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11504 if eval $compile_ok; then
11508 echo "(I can't seem to compile the test program...)"
11511 *) dflt="$alignbytes"
11514 rp="Doubles must be aligned on a how-many-byte boundary?"
11522 : check for ordering of bytes in a long
11524 case "$crosscompile$multiarch" in
11527 You seem to be either cross-compiling or doing a multiarchitecture build,
11528 skipping the byteorder check.
11534 case "$byteorder" in
11537 In the following, larger digits indicate more significance. A big-endian
11538 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11539 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11540 machines may have weird orders like 3412. A Cray will report 87654321,
11541 an Alpha will report 12345678. If the test program works the default is
11543 I'm now running the test program...
11545 $cat >try.c <<'EOCP'
11552 char c[sizeof(long)];
11555 if (sizeof(long) > 4)
11556 u.l = (0x08070605L << 32) | 0x04030201L;
11559 for (i = 0; i < sizeof(long); i++)
11560 printf("%c", u.c[i]+'0');
11567 if eval $compile && ./try > /dev/null; then
11570 [1-4][1-4][1-4][1-4]|12345678|87654321)
11571 echo "(The test program ran ok.)"
11572 echo "byteorder=$dflt"
11575 ????|????????) echo "(The test program ran ok.)" ;;
11576 *) echo "(The test program didn't run right for some reason.)" ;;
11581 (I can't seem to compile the test program. Guessing big-endian...)
11584 case "$xxx_prompt" in
11586 rp="What is the order of bytes in a long?"
11600 : how do we catenate cpp tokens here?
11602 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11603 $cat >cpp_stuff.c <<'EOCP'
11604 #define RCAT(a,b)a/**/b
11605 #define ACAT(a,b)a ## b
11609 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11610 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11611 echo "Oh! Smells like ANSI's been here." >&4
11612 echo "We can catify or stringify, separately or together!"
11614 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11615 echo "Ah, yes! The good old days!" >&4
11616 echo "However, in the good old days we don't know how to stringify and"
11617 echo "catify at the same time."
11621 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
11622 to have to edit the values of CAT[2-5] in config.h...
11624 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11628 : see if this is a db.h system
11634 : Check db version.
11636 echo "Checking Berkeley DB version ..." >&4
11642 #include <sys/types.h>
11647 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11648 int Major, Minor, Patch ;
11649 unsigned long Version ;
11650 (void)db_version(&Major, &Minor, &Patch) ;
11651 printf("You have Berkeley DB Version 2 or greater\n");
11653 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11654 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11655 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11656 Major, Minor, Patch) ;
11658 /* check that db.h & libdb are compatible */
11659 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11660 printf("db.h and libdb are incompatible\n") ;
11664 printf("db.h and libdb are compatible\n") ;
11666 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11667 + DB_VERSION_PATCH ;
11669 /* needs to be >= 2.3.4 */
11670 if (Version < 2003004) {
11671 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11672 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11678 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11679 printf("You have Berkeley DB Version 1\n");
11680 exit(0); /* DB version < 2: the coast is clear. */
11682 exit(1); /* <db.h> not Berkeley DB? */
11688 if eval $compile_ok && ./try; then
11689 echo 'Looks OK.' >&4
11691 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
11695 : Remove db from list of libraries to use
11696 echo "Removing unusable -ldb from library list" >&4
11697 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11700 echo "libs = $libs" >&4
11710 : Check the return type needed for hash
11712 echo "Checking return type needed for hash for Berkeley DB ..." >&4
11718 #include <sys/types.h>
11721 #ifndef DB_VERSION_MAJOR
11722 u_int32_t hash_cb (ptr, size)
11730 info.hash = hash_cb;
11734 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11735 if $contains warning try.out >>/dev/null 2>&1 ; then
11738 db_hashtype='u_int32_t'
11741 : XXX Maybe we should just give up here.
11742 db_hashtype=u_int32_t
11744 echo "Help: I can't seem to compile the db test program." >&4
11745 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11748 echo "Your version of Berkeley DB uses $db_hashtype for hash."
11750 *) db_hashtype=u_int32_t
11755 : Check the return type needed for prefix
11757 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11763 #include <sys/types.h>
11766 #ifndef DB_VERSION_MAJOR
11767 size_t prefix_cb (key1, key2)
11775 info.prefix = prefix_cb;
11779 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11780 if $contains warning try.out >>/dev/null 2>&1 ; then
11781 db_prefixtype='int'
11783 db_prefixtype='size_t'
11786 db_prefixtype='size_t'
11787 : XXX Maybe we should just give up here.
11789 echo "Help: I can't seem to compile the db test program." >&4
11790 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11793 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11795 *) db_prefixtype='size_t'
11799 : check for void type
11801 echo "Checking to see how well your C compiler groks the void type..." >&4
11802 case "$voidflags" in
11804 $cat >try.c <<'EOCP'
11810 extern void moo(); /* function returning void */
11811 void (*goo)(); /* ptr to func returning void */
11813 void *hue; /* generic ptr */
11826 int main() { sub(); }
11828 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11829 voidflags=$defvoidused
11830 echo "Good. It appears to support void to the level $package wants.">&4
11831 if $contains warning .out >/dev/null 2>&1; then
11832 echo "However, you might get some warnings that look like this:"
11836 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11837 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11838 echo "It supports 1..."
11839 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11840 echo "It also supports 2..."
11841 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11843 echo "And it supports 4 but not 8 definitely."
11845 echo "It doesn't support 4..."
11846 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11848 echo "But it supports 8."
11851 echo "Neither does it support 8."
11855 echo "It does not support 2..."
11856 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11858 echo "But it supports 4 and 8."
11860 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11862 echo "And it supports 4 but has not heard about 8."
11864 echo "However it supports 8 but not 4."
11869 echo "There is no support at all for void."
11874 case "$voidflags" in
11876 *) $cat >&4 <<'EOM'
11877 Support flag bits are:
11878 1: basic void declarations.
11879 2: arrays of pointers to functions returning void.
11880 4: operations between pointers to and addresses of void functions.
11881 8: generic void pointers.
11884 rp="Your void support flags add up to what?"
11892 : How can we generate normalized random numbers ?
11894 echo "Looking for a random number function..." >&4
11895 case "$randfunc" in
11897 if set drand48 val -f; eval $csym; $val; then
11899 echo "Good, found drand48()." >&4
11900 elif set random val -f; eval $csym; $val; then
11902 echo "OK, found random()." >&4
11905 echo "Yick, looks like I have to use rand()." >&4
11916 *-Dmy_rand=*|*-Dmy_srand=*)
11917 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11918 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11919 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11920 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11924 while $test "$cont"; do
11925 rp="Use which function to generate random numbers?"
11927 if $test "$ans" = "$dflt"; then
11933 if set $ans val -f; eval $csym; $val; then
11937 rp="I cannot find function $ans. Use that name anyway?"
11946 case "$randfunc" in
11948 drand01="drand48()"
11954 case "$randbits" in
11956 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11958 #$i_unistd I_UNISTD
11959 #$i_stdlib I_STDLIB
11962 # include <unistd.h>
11965 # include <stdlib.h>
11970 register unsigned long tmp;
11971 register unsigned long max = 0L;
11973 for (i = 1000; i; i--) {
11974 tmp = (unsigned long) $randfunc();
11975 if (tmp > max) max = tmp;
11977 for (i = 0; max; i++)
11983 if eval $compile_ok; then
11987 echo "(I can't seem to compile the test program...)"
11994 rp="How many bits does your $randfunc() function produce?"
11998 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11999 seedfunc="s$randfunc"
12000 randseedtype=unsigned
12004 rp="How many bits does your $randfunc() function produce?"
12007 seedfunc="s$randfunc"
12008 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12009 if set $seedfunc val -f; eval $csym; $val; then
12010 echo "(Using $seedfunc() to seed random generator)"
12012 echo "(Warning: no $seedfunc() to seed random generator)"
12015 randseedtype=unsigned
12023 echo "Determining whether or not we are on an EBCDIC system..." >&4
12024 $cat >tebcdic.c <<'EOM'
12027 if ('M'==0xd4) return 0;
12034 if eval $compile_ok; then
12036 echo "You have EBCDIC." >&4
12039 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12042 echo "I'm unable to compile the test program." >&4
12043 echo "I'll assume ASCII or some ISO Latin." >&4
12045 $rm -f tebcdic.c tebcdic
12051 Checking how to flush all pending stdio output...
12053 # I only know how to find the first 32 possibly open files on SunOS.
12054 # See also hints/sunos_4_1.sh and util.c --AD
12056 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12058 $cat >>try.c <<EOCP
12060 #$i_unistd I_UNISTD
12062 # include <unistd.h>
12064 #$d_sysconf HAS_SYSCONF
12065 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12066 #ifdef HAS_STDIO_STREAM_ARRAY
12067 # define STDIO_STREAM_ARRAY $stdio_stream_array
12070 FILE* p = fopen("try.out", "w");
12074 # ifdef TRY_FPRINTF
12078 #ifdef TRY_FFLUSH_NULL
12081 #ifdef TRY_FFLUSH_ALL
12083 long open_max = -1;
12084 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12085 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12087 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12088 open_max = sysconf(_SC_OPEN_MAX);
12091 open_max = FOPEN_MAX;
12094 open_max = OPEN_MAX;
12103 # ifdef HAS_STDIO_STREAM_ARRAY
12104 if (open_max > 0) {
12106 for (i = 0; i < open_max; i++)
12107 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12108 STDIO_STREAM_ARRAY[i]._file < open_max &&
12109 STDIO_STREAM_ARRAY[i]._flag)
12110 fflush(&STDIO_STREAM_ARRAY[i]);
12118 : first we have to find out how _not_ to flush
12119 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12121 set try -DTRY_FPUTC
12122 if eval $compile; then
12124 ./try$exe_ext 2>/dev/null
12125 if $test ! -s try.out -a "X$?" = X42; then
12131 set try -DTRY_FPRINTF
12133 if eval $compile; then
12135 ./try$exe_ext 2>/dev/null
12136 if $test ! -s try.out -a "X$?" = X42; then
12137 output=-DTRY_FPRINTF
12143 : check for fflush NULL behaviour
12144 case "$fflushNULL" in
12145 '') set try -DTRY_FFLUSH_NULL $output
12146 if eval $compile; then
12148 ./try$exe_ext 2>/dev/null
12150 if $test -s try.out -a "X$code" = X42; then
12151 fflushNULL="`$cat try.out`"
12153 if $test "X$code" != X42; then
12155 (If this test failed, don't worry, we'll try another method shortly.)
12160 $rm -f core try.core core.try.*
12161 case "$fflushNULL" in
12163 Your fflush(NULL) works okay.
12165 fflushNULL="$define"
12168 Your fflush(NULL) isn't working (contrary to ANSI C).
12170 fflushNULL="$undef"
12173 Cannot figure out whether your fflush(NULL) works or not.
12174 I'm assuming it doesn't (contrary to ANSI C).
12176 fflushNULL="$undef"
12180 $define|true|[yY]*)
12181 fflushNULL="$define"
12184 fflushNULL="$undef"
12187 : check explicit looping only if NULL did not work
12188 case "$fflushNULL" in
12190 : check for fflush all behaviour
12191 case "$fflushall" in
12192 '') set try -DTRY_FFLUSH_ALL $output
12193 if eval $compile; then
12195 (Now testing the other method--but note that also this may fail.)
12198 ./try$exe_ext 2>/dev/null
12199 if $test -s try.out -a "X$?" = X42; then
12200 fflushall="`$cat try.out`"
12203 $rm -f core try.core core.try.*
12204 case "$fflushall" in
12206 Whew. Flushing explicitly all the stdio streams works.
12208 fflushall="$define"
12211 Sigh. Flushing explicitly all the stdio streams doesn't work.
12216 Cannot figure out whether flushing stdio streams explicitly works or not.
12217 I'm assuming it doesn't.
12223 "$define"|true|[yY]*)
12224 fflushall="$define"
12231 *) fflushall="$undef"
12234 case "$fflushNULL$fflushall" in
12237 I cannot figure out how to flush pending stdio output.
12241 $rm -f try.* try$exe_ext
12243 : Store the full pathname to the ar program for use in the C program
12244 : Respect a hint or command line value for full_ar.
12249 : Store the full pathname to the sed program for use in the C program
12252 : see what type gids are declared as in the kernel
12254 echo "Looking for the type for group ids returned by getgid()."
12255 set gid_t gidtype xxx stdio.h sys/types.h
12259 xxx=`./findhdr sys/user.h`
12260 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12262 unsigned) dflt="$1 $2" ;;
12266 *) dflt="$gidtype";;
12269 gid_t) echo "gid_t found." ;;
12270 *) rp="What is the type for group ids returned by getgid()?"
12278 *_t) zzz="$gidtype" ;;
12281 echo "Checking the size of $zzz..." >&4
12283 #include <sys/types.h>
12286 printf("%d\n", (int)sizeof($gidtype));
12291 if eval $compile_ok; then
12295 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12298 echo "Your $zzz size is $gidsize bytes."
12303 echo "(I can't compile the test program--guessing $gidsize.)" >&4
12309 *_t) zzz="$gidtype" ;;
12312 echo "Checking the sign of $zzz..." >&4
12314 #include <sys/types.h>
12325 if eval $compile; then
12329 echo "(I can't execute the test program--guessing unsigned.)" >&4
12333 1) echo "Your $zzz is unsigned." ;;
12334 -1) echo "Your $zzz is signed." ;;
12340 echo "(I can't compile the test program--guessing unsigned.)" >&4
12346 if $test X"$quadtype" != X; then
12348 echo "Checking how to print 64-bit integers..." >&4
12350 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12351 $cat >try.c <<'EOCP'
12352 #include <sys/types.h>
12355 int q = 12345678901;
12356 printf("%ld\n", q);
12360 if eval $compile; then
12361 yyy=`./try$exe_ext`
12364 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12365 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12366 echo "We will use %d."
12372 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12373 $cat >try.c <<'EOCP'
12374 #include <sys/types.h>
12377 long q = 12345678901;
12378 printf("%ld\n", q);
12382 if eval $compile; then
12383 yyy=`./try$exe_ext`
12386 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12387 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12388 echo "We will use %ld."
12394 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12395 $cat >try.c <<'EOCP'
12396 #include <sys/types.h>
12397 #include <inttypes.h>
12400 int64_t q = 12345678901;
12401 printf("%" PRId64 "\n", q);
12405 if eval $compile; then
12406 yyy=`./try$exe_ext`
12409 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12410 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12411 echo "We will use the C9X style."
12417 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12418 $cat >try.c <<'EOCP'
12419 #include <sys/types.h>
12422 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12423 printf("%lld\n", q);
12427 if eval $compile; then
12428 yyy=`./try$exe_ext`
12431 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12432 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12433 echo "We will use the %lld style."
12439 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12441 #include <sys/types.h>
12444 $quadtype q = 12345678901;
12445 printf("%Ld\n", q);
12449 if eval $compile; then
12450 yyy=`./try$exe_ext`
12453 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12454 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12455 echo "We will use %Ld."
12461 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12463 #include <sys/types.h>
12466 $quadtype q = 12345678901;
12467 printf("%qd\n", q);
12471 if eval $compile; then
12472 yyy=`./try$exe_ext`
12475 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12476 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12477 echo "We will use %qd."
12483 if $test X"$sPRId64" = X; then
12484 echo "Cannot figure out how to print 64-bit integers." >&4
12492 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
12493 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
12495 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
12496 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
12502 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12504 if $test X"$ivsize" = X8; then
12505 ivdformat="$sPRId64"
12506 uvuformat="$sPRIu64"
12507 uvoformat="$sPRIo64"
12508 uvxformat="$sPRIx64"
12510 if $test X"$ivsize" = X"$longsize"; then
12516 if $test X"$ivsize" = X"$intsize"; then
12523 if $test X"$ivsize" = X"$shortsize"; then
12533 case "$ivdformat" in
12534 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12541 $echo "Checking the format string to be used for gids..." >&4
12544 -1) if $test X"$gidsize" = X"$ivsize"; then
12545 gidformat="$ivdformat"
12547 if $test X"$gidsize" = X"$longsize"; then
12550 if $test X"$gidsize" = X"$intsize"; then
12553 if $test X"$gidsize" = X"$shortsize"; then
12560 *) if $test X"$gidsize" = X"$uvsize"; then
12561 gidformat="$uvuformat"
12563 if $test X"$gidsize" = X"$longsize"; then
12566 if $test X"$gidsize" = X"$intsize"; then
12569 if $test X"$gidsize" = X"$shortsize"; then
12578 : see if getgroups exists
12579 set getgroups d_getgrps
12582 : see if setgroups exists
12583 set setgroups d_setgrps
12587 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12589 case "$d_getgrps$d_setgrps" in
12591 case "$groupstype" in
12592 '') dflt="$gidtype" ;;
12593 *) dflt="$groupstype" ;;
12596 What type of pointer is the second argument to getgroups() and setgroups()?
12597 Usually this is the same as group ids, $gidtype, but not always.
12600 rp='What type pointer is the second argument to getgroups() and setgroups()?'
12604 *) groupstype="$gidtype";;
12608 echo "Checking if your $make program sets \$(MAKE)..." >&4
12609 case "$make_set_make" in
12611 $sed 's/^X //' > testmake.mak << 'EOF'
12613 X @echo 'maketemp="$(MAKE)"'
12615 case "`$make -f testmake.mak 2>/dev/null`" in
12616 *maketemp=*) make_set_make='#' ;;
12617 *) make_set_make="MAKE=$make" ;;
12619 $rm -f testmake.mak
12622 case "$make_set_make" in
12623 '#') echo "Yup, it does.";;
12624 *) echo "Nope, it doesn't.";;
12627 : see if this is a sys/mman.h system
12628 set sys/mman.h i_sysmman
12631 : see if mmap exists
12634 : see what shmat returns
12635 : default to something harmless
12637 case "$i_sysmman$d_mmap" in
12639 $cat >mmap.c <<'END'
12640 #include <sys/mman.h>
12643 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
12648 echo "and it returns ($mmaptype)." >&4
12654 : see what type is used for mode_t
12655 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12656 set mode_t modetype int stdio.h sys/types.h
12659 : define a fucntion to check prototypes
12660 $cat > protochk <<EOSH
12663 optimize="$optimize"
12665 prototype="$prototype"
12670 $cat >> protochk <<'EOSH'
12675 while test $# -ge 2; do
12677 $define) echo "#include <$2>" >> try.c ;;
12678 literal) echo "$2" >> try.c ;;
12682 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
12683 cat >> try.c <<'EOCP'
12684 #ifdef CAN_PROTOTYPE
12685 #define _(args) args
12690 echo "$foo" >> try.c
12691 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12692 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12698 $eunicefix protochk
12700 : see what type is used for size_t
12701 rp="What is the type used for the length parameter for string functions?"
12702 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12705 : check for type of arguments to gethostbyaddr.
12706 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12707 case "$d_gethbyaddr" in
12711 Checking to see what type of arguments are accepted by gethostbyaddr().
12713 hdrs="$define sys/types.h
12714 $d_socket sys/socket.h
12715 $i_niin netinet/in.h
12717 $i_unistd unistd.h"
12718 : The first arg can 'char *' or 'void *'
12719 : The second arg is some of integral type
12720 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12721 for yyy in size_t long int; do
12722 case "$netdb_host_type" in
12723 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12724 if ./protochk "$try" $hdrs; then
12725 echo "Your system accepts $xxx for the first arg."
12726 echo "...and $yyy for the second arg."
12727 netdb_host_type="$xxx"
12728 netdb_hlen_type="$yyy"
12734 : In case none of those worked, prompt the user.
12735 case "$netdb_host_type" in
12736 '') rp='What is the type for the 1st argument to gethostbyaddr?'
12739 netdb_host_type=$ans
12740 rp='What is the type for the 2nd argument to gethostbyaddr?'
12743 netdb_hlen_type=$ans
12747 *) : no gethostbyaddr, so pick harmless defaults
12748 netdb_host_type='char *'
12749 netdb_hlen_type="$sizetype"
12752 # Remove the "const" if needed. -- but then we'll have a
12754 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12757 : check for type of argument to gethostbyname.
12758 if test "X$netdb_name_type" = X ; then
12759 case "$d_gethbyname" in
12763 Checking to see what type of argument is accepted by gethostbyname().
12765 hdrs="$define sys/types.h
12766 $d_socket sys/socket.h
12767 $i_niin netinet/in.h
12769 $i_unistd unistd.h"
12770 for xxx in "const char *" "char *"; do
12771 case "$netdb_name_type" in
12772 '') try="extern struct hostent *gethostbyname($xxx);"
12773 if ./protochk "$try" $hdrs; then
12774 echo "Your system accepts $xxx."
12775 netdb_name_type="$xxx"
12780 : In case none of those worked, prompt the user.
12781 case "$netdb_name_type" in
12782 '') rp='What is the type for the 1st argument to gethostbyname?'
12785 netdb_name_type=$ans
12789 *) : no gethostbyname, so pick harmless default
12790 netdb_name_type='char *'
12795 : check for type of 1st argument to getnetbyaddr.
12796 if test "X$netdb_net_type" = X ; then
12797 case "$d_getnbyaddr" in
12801 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12803 hdrs="$define sys/types.h
12804 $d_socket sys/socket.h
12805 $i_niin netinet/in.h
12807 $i_unistd unistd.h"
12808 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12809 case "$netdb_net_type" in
12810 '') try="extern struct netent *getnetbyaddr($xxx, int);"
12811 if ./protochk "$try" $hdrs; then
12812 echo "Your system accepts $xxx."
12813 netdb_net_type="$xxx"
12818 : In case none of those worked, prompt the user.
12819 case "$netdb_net_type" in
12820 '') rp='What is the type for the 1st argument to getnetbyaddr?'
12823 netdb_net_type=$ans
12827 *) : no getnetbyaddr, so pick harmless default
12828 netdb_net_type='long'
12832 : locate the preferred pager for this system
12846 '') dflt=/usr/ucb/more;;
12853 rp='What pager is used on your system?'
12857 : see what type pids are declared as in the kernel
12858 rp="What is the type of process ids on this system?"
12859 set pid_t pidtype int stdio.h sys/types.h
12862 : Find earliest binary compatible site_perl subdirectory perl can use.
12863 case "$bincompat5005" in
12864 "$define") xs_apiversion='5.005' ;;
12865 *) xs_apiversion=$version ;; # The current site_perl version.
12867 : Find earliest pure perl site_perl subdirectory perl can use.
12868 : The versioned directories started at 5.005.
12869 pm_apiversion='5.005'
12871 : check for length of pointer
12875 $echo $n "Checking to see how big your pointers are...$c" >&4
12876 if test "$voidflags" -gt 7; then
12877 echo '#define VOID_PTR char *' > try.c
12879 echo '#define VOID_PTR void *' > try.c
12881 $cat >>try.c <<'EOCP'
12885 printf("%d\n", (int)sizeof(VOID_PTR));
12890 if eval $compile_ok; then
12892 $echo " $ptrsize bytes." >&4
12895 echo "(I can't seem to compile the test program. Guessing...)" >&4
12896 rp="What is the size of a pointer (in bytes)?"
12904 : see if ar generates random libraries by itself
12906 echo "Checking how to generate random libraries on your machine..." >&4
12907 echo 'int bar1() { return bar2(); }' > bar1.c
12908 echo 'int bar2() { return 2; }' > bar2.c
12909 $cat > foo.c <<'EOP'
12910 int main() { printf("%d\n", bar1()); exit(0); }
12912 $cc $ccflags -c bar1.c >/dev/null 2>&1
12913 $cc $ccflags -c bar2.c >/dev/null 2>&1
12914 $cc $ccflags -c foo.c >/dev/null 2>&1
12915 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12916 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12917 ./foobar >/dev/null 2>&1; then
12918 echo "$ar appears to generate random libraries itself."
12921 elif $ar ts bar$_a >/dev/null 2>&1 &&
12922 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12923 ./foobar >/dev/null 2>&1; then
12924 echo "a table of contents needs to be added with '$ar ts'."
12931 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12932 $test -f $ranlib || ranlib=''
12935 if $test -n "$ranlib"; then
12936 echo "your system has '$ranlib'; we'll use that."
12939 echo "your system doesn't seem to support random libraries"
12940 echo "so we'll use lorder and tsort to order the libraries."
12947 : check for type of arguments to select.
12948 case "$selecttype" in
12949 '') case "$d_select" in
12953 Checking to see what type of arguments are accepted by select().
12955 hdrs="$define sys/types.h
12956 $i_systime sys/time.h
12957 $i_sysselct sys/select.h
12958 $d_socket sys/socket.h"
12959 : The first arg can be int, unsigned, or size_t
12960 : The last arg may or may not be 'const'
12962 : void pointer has been seen but using that
12963 : breaks the selectminbits test
12964 for xxx in 'fd_set *' 'int *'; do
12965 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12966 for tmo in 'struct timeval *' 'const struct timeval *'; do
12968 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12969 if ./protochk "$try" $hdrs; then
12970 echo "Your system accepts $xxx."
12979 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12980 case "$d_fd_set" in
12981 $define) dflt="fd_set *" ;;
12990 *) : no select, so pick a harmless default
12997 : check for the select 'width'
12998 case "$selectminbits" in
12999 '') case "$d_select" in
13003 Checking to see on how many bits at a time your select() operates...
13006 #include <sys/types.h>
13008 #$i_systime I_SYS_TIME
13009 #$i_systimek I_SYS_TIME_KERNEL
13014 # ifdef I_SYS_TIME_KERNEL
13017 # include <sys/time.h>
13018 # ifdef I_SYS_TIME_KERNEL
13022 #$i_sysselct I_SYS_SELECT
13023 #ifdef I_SYS_SELECT
13024 #include <sys/select.h>
13026 #$d_socket HAS_SOCKET
13028 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13032 #define S sizeof(*(b))
13034 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13035 #define NBITS (NBYTES * 8)
13044 fp = fopen("try.c", "r");
13050 b = ($selecttype)s;
13051 for (i = 0; i < NBITS; i++)
13055 select(fd + 1, b, 0, 0, &t);
13056 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13057 printf("%d\n", i + 1);
13062 if eval $compile_ok; then
13063 selectminbits=`./try`
13064 case "$selectminbits" in
13066 Cannot figure out on how many bits at a time your select() operates.
13067 I'll play safe and guess it is 32 bits.
13073 *) bits="$selectminbits bits" ;;
13075 echo "Your select() operates on $bits at a time." >&4
13077 rp='What is the minimum number of bits your select() operates on?'
13078 case "$byteorder" in
13079 1234|12345678) dflt=32 ;;
13084 selectminbits="$val"
13088 *) : no select, so pick a harmless default
13095 : Trace out the files included by signal.h, then look for SIGxxx names.
13096 : Remove SIGARRAYSIZE used by HPUX.
13097 : Remove SIGSTKSIZE used by Linux.
13098 : Remove SIGSTKSZ used by Posix.
13099 : Remove SIGTYP void lines used by OS2.
13100 : Some cpps, like os390, dont give the file name anywhere
13101 if [ "X$fieldn" = X ]; then
13102 : Just make some guesses. We check them later.
13103 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13105 xxx=`echo '#include <signal.h>' |
13106 $cppstdin $cppminus $cppflags 2>/dev/null |
13107 $grep '^[ ]*#.*include' |
13108 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13110 : Check this list of files to be sure we have parsed the cpp output ok.
13111 : This will also avoid potentially non-existent files, such
13114 for xx in $xxx /dev/null ; do
13115 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13117 : If we have found no files, at least try signal.h
13118 case "$xxxfiles" in
13119 '') xxxfiles=`./findhdr signal.h` ;;
13122 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13123 print substr($2, 4, 20)
13125 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13126 print substr($3, 4, 20)
13128 : Append some common names just in case the awk scan failed.
13129 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13130 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13131 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13132 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13133 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13135 : generate a few handy files for later
13136 $cat > signal.c <<'EOCP'
13137 #include <sys/types.h>
13138 #include <signal.h>
13142 /* Strange style to avoid deeply-nested #if/#else/#endif */
13145 # define NSIG (_NSIG)
13151 # define NSIG (SIGMAX+1)
13157 # define NSIG (SIG_MAX+1)
13163 # define NSIG (MAXSIG+1)
13169 # define NSIG (MAX_SIG+1)
13174 # ifdef SIGARRAYSIZE
13175 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13181 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13185 /* Default to some arbitrary number that's big enough to get most
13186 of the common signals.
13192 printf("NSIG %d\n", NSIG);
13198 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13200 printf "#ifdef SIG"; printf $1; printf "\n"
13201 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13202 printf $1; printf ");\n"
13206 printf "#endif /* JUST_NSIG */\n";
13207 printf "exit(0);\n}\n";
13210 $cat >signal.awk <<'EOP'
13211 BEGIN { ndups = 0 }
13212 $1 ~ /^NSIG$/ { nsig = $2 }
13213 ($1 !~ /^NSIG$/) && (NF == 2) {
13214 if ($2 > maxsig) { maxsig = $2 }
13215 if (sig_name[$2]) {
13216 dup_name[ndups] = $1
13217 dup_num[ndups] = $2
13229 printf("NSIG %d\n", nsig);
13230 for (n = 1; n < nsig; n++) {
13232 printf("%s %d\n", sig_name[n], sig_num[n])
13235 printf("NUM%d %d\n", n, n)
13238 for (n = 0; n < ndups; n++) {
13239 printf("%s %d\n", dup_name[n], dup_num[n])
13243 $cat >signal_cmd <<EOS
13245 if $test -s signal.lst; then
13246 echo "Using your existing signal.lst file"
13251 $cat >>signal_cmd <<'EOS'
13254 if eval $compile_ok; then
13255 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13257 echo "(I can't seem be able to compile the whole test program)" >&4
13258 echo "(I'll try it in little pieces.)" >&4
13259 set signal -DJUST_NSIG
13260 if eval $compile_ok; then
13261 ./signal$_exe > signal.nsg
13264 echo "I can't seem to figure out how many signals you have." >&4
13265 echo "Guessing 50." >&4
13266 echo 'NSIG 50' > signal.nsg
13268 : Now look at all the signal names, one at a time.
13269 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13270 $cat > signal.c <<EOCP
13271 #include <sys/types.h>
13272 #include <signal.h>
13275 printf("$xx %d\n", SIG${xx});
13280 if eval $compile; then
13281 echo "SIG${xx} found."
13282 ./signal$_exe >> signal.ls1
13284 echo "SIG${xx} NOT found."
13287 if $test -s signal.ls1; then
13288 $cat signal.nsg signal.ls1 |
13289 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13293 if $test -s signal.lst; then
13296 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13297 echo 'kill -l' >signal
13298 set X `csh -f <signal`
13302 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13304 echo $@ | $tr ' ' $trnl | \
13305 $awk '{ printf "%s %d\n", $1, ++s; }
13306 END { printf "NSIG %d\n", ++s }' >signal.lst
13308 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13310 chmod a+x signal_cmd
13311 $eunicefix signal_cmd
13313 : generate list of signal names
13315 case "$sig_name_init" in
13317 *) case "$sig_num_init" in
13318 ''|*,*) doinit=yes ;;
13323 echo "Generating a list of signal names and numbers..." >&4
13325 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13326 sig_name=`$awk 'BEGIN { printf "ZERO " }
13327 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13328 sig_num=`$awk 'BEGIN { printf "0 " }
13329 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13330 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
13331 !/^NSIG/ { printf "\"%s\", ", $1 }
13332 END { printf "0\n" }' signal.lst`
13333 sig_num_init=`$awk 'BEGIN { printf "0, " }
13334 !/^NSIG/ { printf "%d, ", $2}
13335 END { printf "0\n"}' signal.lst`
13338 echo "The following $sig_count signals are available:"
13340 echo $sig_name | $awk \
13341 'BEGIN { linelen = 0 }
13343 for (i = 1; i <= NF; i++) {
13344 name = "SIG" $i " "
13345 linelen = linelen + length(name)
13346 if (linelen > 70) {
13348 linelen = length(name)
13354 $rm -f signal signal.c signal.awk signal.lst signal_cmd
13356 : see what type is used for signed size_t
13357 set ssize_t ssizetype int stdio.h sys/types.h
13360 $cat > ssize.c <<EOM
13362 #include <sys/types.h>
13363 #define Size_t $sizetype
13364 #define SSize_t $dflt
13367 if (sizeof(Size_t) == sizeof(SSize_t))
13369 else if (sizeof(Size_t) == sizeof(int))
13378 if eval $compile_ok && ./ssize > /dev/null; then
13379 ssizetype=`./ssize`
13380 echo "I'll be using $ssizetype for functions returning a byte count." >&4
13383 Help! I can't compile and run the ssize_t test program: please enlighten me!
13384 (This is probably a misconfiguration in your system or libraries, and
13385 you really ought to fix it. Still, I'll try anyway.)
13387 I need a type that is the same size as $sizetype, but is guaranteed to
13388 be signed. Common values are ssize_t, int and long.
13391 rp="What signed type is the same size as $sizetype?"
13395 $rm -f ssize ssize.*
13397 : see what type of char stdio uses.
13399 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13400 echo "Your stdio uses unsigned chars." >&4
13401 stdchar="unsigned char"
13403 echo "Your stdio uses signed chars." >&4
13407 : see if time exists
13409 if test "X$d_time" = X -o X"$timetype" = X; then
13410 if set time val -f d_time; eval $csym; $val; then
13411 echo 'time() found.' >&4
13413 rp="What is the type returned by time() on this system?"
13414 set time_t timetype long stdio.h sys/types.h
13417 echo 'time() not found, hope that will do.' >&4
13425 : see what type uids are declared as in the kernel
13427 echo "Looking for the type for user ids returned by getuid()."
13428 set uid_t uidtype xxx stdio.h sys/types.h
13432 xxx=`./findhdr sys/user.h`
13433 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13435 unsigned) dflt="$1 $2" ;;
13439 *) dflt="$uidtype";;
13442 uid_t) echo "uid_t found." ;;
13443 *) rp="What is the type for user ids returned by getuid()?"
13451 *_t) zzz="$uidtype" ;;
13454 echo "Checking the size of $zzz..." >&4
13456 #include <sys/types.h>
13459 printf("%d\n", (int)sizeof($uidtype));
13464 if eval $compile_ok; then
13468 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13471 echo "Your $zzz size is $uidsize bytes."
13476 echo "(I can't compile the test program--guessing $uidsize.)" >&4
13481 *_t) zzz="$uidtype" ;;
13484 echo "Checking the sign of $zzz..." >&4
13486 #include <sys/types.h>
13497 if eval $compile; then
13501 echo "(I can't execute the test program--guessing unsigned.)" >&4
13505 1) echo "Your $zzz is unsigned." ;;
13506 -1) echo "Your $zzz is signed." ;;
13512 echo "(I can't compile the test program--guessing unsigned.)" >&4
13518 $echo "Checking the format string to be used for uids..." >&4
13521 -1) if $test X"$uidsize" = X"$ivsize"; then
13522 uidformat="$ivdformat"
13524 if $test X"$uidsize" = X"$longsize"; then
13527 if $test X"$uidsize" = X"$intsize"; then
13530 if $test X"$uidsize" = X"$shortsize"; then
13537 *) if $test X"$uidsize" = X"$uvsize"; then
13538 uidformat="$uvuformat"
13540 if $test X"$uidsize" = X"$longsize"; then
13543 if $test X"$uidsize" = X"$intsize"; then
13546 if $test X"$uidsize" = X"$shortsize"; then
13555 : see if dbm.h is available
13556 : see if dbmclose exists
13557 set dbmclose d_dbmclose
13560 case "$d_dbmclose" in
13570 *) set rpcsvc/dbm.h i_rpcsvcdbm
13575 *) echo "We won't be including <dbm.h>"
13585 : see if this is a sys/file.h system
13590 : do we need to include sys/file.h ?
13594 if $h_sysfile; then
13596 echo "We'll be including <sys/file.h>." >&4
13599 echo "We won't be including <sys/file.h>." >&4
13609 : see if fcntl.h is there
13614 : see if we can include fcntl.h
13620 echo "We'll be including <fcntl.h>." >&4
13623 if $h_sysfile; then
13624 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13626 echo "We won't be including <fcntl.h>." >&4
13638 : see if this is a iconv.h system
13639 set iconv.h i_iconv
13642 : see if locale.h is available
13643 set locale.h i_locale
13646 : see if mach cthreads are available
13647 if test "X$usethreads" = "X$define"; then
13648 set mach/cthreads.h i_machcthr
13651 i_machcthr="$undef"
13656 : see if this is a math.h system
13660 : see if this is a mntent.h system
13661 set mntent.h i_mntent
13664 : see if ndbm.h is available
13669 : see if dbm_open exists
13670 set dbm_open d_dbm_open
13672 case "$d_dbm_open" in
13675 echo "We won't be including <ndbm.h>"
13684 : see if net/errno.h is available
13686 set net/errno.h val
13689 : Unfortunately, it causes problems on some systems. Arrgh.
13692 cat > try.c <<'EOM'
13695 #include <net/errno.h>
13701 if $cc $ccflags -c try.c >/dev/null 2>&1; then
13702 echo "We'll be including <net/errno.h>." >&4
13704 echo "We won't be including <net/errno.h>." >&4
13713 : see if netinet/tcp.h is available
13714 set netinet/tcp.h i_netinettcp
13717 : see if this is a poll.h system
13722 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
13723 $cat <<'EOSH' > Cppsym.know
13724 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13725 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13726 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13727 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13728 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13729 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13730 bull c cadmus clipper CMU COFF COMPILER_VERSION
13731 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13732 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13733 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13734 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13735 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13736 H3050R H3050RX hbullx20 hcx host_mips
13737 hp200 hp300 hp700 HP700 hp800 hp9000
13738 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13739 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13740 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13741 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13742 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13743 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13744 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13745 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13746 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13747 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13748 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13749 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13750 MATH_HAS_NO_SIDE_EFFECTS
13751 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13752 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13753 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13754 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13755 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13756 NetBSD news1500 news1700 news1800 news1900 news3700
13757 news700 news800 news900 NeXT NLS ns16000 ns32000
13758 ns32016 ns32332 ns32k nsc32000
13759 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13760 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13761 pc532 pdp11 PGC PIC plexus PORTAR posix
13762 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
13763 POSIX_C_SOURCE POSIX_SOURCE POWER
13764 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
13765 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
13766 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
13767 sony sony_news sonyrisc sparc sparclite spectrum
13768 stardent stdc STDC_EXT stratos sun sun3 sun386
13769 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
13770 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
13771 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
13772 sysV68 sysV88 Tek4132 Tek4300 titan
13773 tower tower32 tower32_200 tower32_600 tower32_700
13774 tower32_800 tower32_850 tss
13775 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
13776 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
13777 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
13778 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
13779 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
13780 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
13783 # Maybe put other stuff here too.
13784 cat <<EOSH >>Cppsym.know
13787 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13788 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13789 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
13790 $rm -f Cppsym.a Cppsym.b
13791 cat <<EOSH > Cppsym
13793 if $test \$# -gt 0; then
13794 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13795 if $test -s Cppsym.got; then
13802 $tr " " "$trnl" | ./Cppsym.try
13808 cat <<EOSH > Cppsym.try
13810 cat <<'EOCP' > try.c
13816 cat <<'EOSH' >> Cppsym.try
13818 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
13819 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
13820 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
13821 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
13825 cat <<EOSH >> Cppsym.try
13827 optimize="$optimize"
13832 $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try$exe_ext
13834 chmod +x Cppsym.try
13835 $eunicefix Cppsym.try
13836 ./Cppsym < Cppsym.know > Cppsym.true
13837 : now check the C compiler for additional symbols
13838 postprocess_cc_v=''
13840 aix) postprocess_cc_v="|$tr , ' '" ;;
13847 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13850 -D*) echo "\$i" | $sed 's/^-D//';;
13851 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13856 postprocess_cc_v=''
13859 ./ccsym > ccsym1.raw
13860 if $test -s ccsym1.raw; then
13861 $sort ccsym1.raw | $uniq >ccsym.raw
13863 mv ccsym1.raw ccsym.raw
13866 $awk '/\=/ { print $0; next }
13867 { print $0"=1" }' ccsym.raw >ccsym.list
13868 $awk '/\=/ { print $0; next }
13869 { print $0"=1" }' Cppsym.true >ccsym.true
13870 $comm -13 ccsym.true ccsym.list >ccsym.own
13871 $comm -12 ccsym.true ccsym.list >ccsym.com
13872 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13874 if $test -z ccsym.raw; then
13875 echo "Your C compiler doesn't seem to define any symbols!" >&4
13877 echo "However, your C preprocessor defines the following symbols:"
13880 cppsymbols=`$cat Cppsym.true`
13881 cppsymbols=`echo $cppsymbols`
13882 cppccsymbols="$cppsymbols"
13884 if $test -s ccsym.com; then
13885 echo "Your C compiler and pre-processor define these symbols:"
13886 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13889 cppccsymbols=`$cat ccsym.com`
13890 cppccsymbols=`echo $cppccsymbols`
13891 $test "$silent" || sleep 1
13893 if $test -s ccsym.cpp; then
13894 $test "$also" && echo " "
13895 echo "Your C pre-processor ${also}defines the following symbols:"
13896 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13898 cppsymbols=`$cat ccsym.cpp`
13899 cppsymbols=`echo $cppsymbols`
13900 $test "$silent" || sleep 1
13902 if $test -s ccsym.own; then
13903 $test "$also" && echo " "
13904 echo "Your C compiler ${also}defines the following cpp symbols:"
13905 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13906 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13907 ccsymbols=`$cat ccsym.own`
13908 ccsymbols=`echo $ccsymbols`
13909 $test "$silent" || sleep 1
13914 : see if this is a termio system
13918 if $test `./findhdr termios.h`; then
13919 set tcsetattr i_termios
13925 "$define") echo "You have POSIX termios.h... good!" >&4;;
13926 *) if ./Cppsym pyr; then
13927 case "`/bin/universe`" in
13928 ucb) if $test `./findhdr sgtty.h`; then
13930 echo "<sgtty.h> found." >&4
13932 echo "System is pyramid with BSD universe."
13933 echo "<sgtty.h> not found--you could have problems." >&4
13935 *) if $test `./findhdr termio.h`; then
13937 echo "<termio.h> found." >&4
13939 echo "System is pyramid with USG universe."
13940 echo "<termio.h> not found--you could have problems." >&4
13944 if $test `./findhdr termio.h`; then
13945 echo "<termio.h> found." >&4
13947 elif $test `./findhdr sgtty.h`; then
13948 echo "<sgtty.h> found." >&4
13951 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13954 if $test `./findhdr sgtty.h`; then
13955 echo "<sgtty.h> found." >&4
13957 elif $test `./findhdr termio.h`; then
13958 echo "<termio.h> found." >&4
13961 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13965 set i_termio; eval $setvar
13966 val=$val2; set i_sgtty; eval $setvar
13967 val=$val3; set i_termios; eval $setvar
13969 : see if this is a shadow.h system
13970 set shadow.h i_shadow
13973 : see if this is a socks.h system
13974 set socks.h i_socks
13977 : see if stdarg is available
13979 if $test `./findhdr stdarg.h`; then
13980 echo "<stdarg.h> found." >&4
13983 echo "<stdarg.h> NOT found." >&4
13987 : see if varags is available
13989 if $test `./findhdr varargs.h`; then
13990 echo "<varargs.h> found." >&4
13992 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13995 : set up the varargs testing programs
13996 $cat > varargs.c <<EOP
13998 #include <stdarg.h>
14001 #include <varargs.h>
14005 int f(char *p, ...)
14019 p = va_arg(ap, char *);
14024 $cat > varargs <<EOP
14026 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14035 : now check which varargs header should be included
14040 if `./varargs I_STDARG`; then
14042 elif `./varargs I_VARARGS`; then
14047 if `./varargs I_VARARGS`; then
14054 echo "I could not find the definition for va_dcl... You have problems..." >&4
14055 val="$undef"; set i_stdarg; eval $setvar
14056 val="$undef"; set i_varargs; eval $setvar
14061 case "$i_varhdr" in
14063 val="$define"; set i_stdarg; eval $setvar
14064 val="$undef"; set i_varargs; eval $setvar
14067 val="$undef"; set i_stdarg; eval $setvar
14068 val="$define"; set i_varargs; eval $setvar
14071 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14075 : see if stddef is available
14076 set stddef.h i_stddef
14079 : see if sys/access.h is available
14080 set sys/access.h i_sysaccess
14083 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14084 set sys/filio.h i_sysfilio
14087 if $test `./findhdr sys/ioctl.h`; then
14089 echo '<sys/ioctl.h> found.' >&4
14092 if $test $i_sysfilio = "$define"; then
14093 echo '<sys/ioctl.h> NOT found.' >&4
14095 $test $i_sgtty = "$define" && xxx="sgtty.h"
14096 $test $i_termio = "$define" && xxx="termio.h"
14097 $test $i_termios = "$define" && xxx="termios.h"
14098 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14105 : see if this is a syslog.h system
14106 set syslog.h i_syslog
14109 : see if sys/resource.h has to be included
14110 set sys/resource.h i_sysresrc
14113 : see if sys/security.h is available
14114 set sys/security.h i_syssecrt
14117 : see if this is a sys/statvfs.h system
14118 set sys/statvfs.h i_sysstatvfs
14121 : see if this is a sys/uio.h system
14122 set sys/uio.h i_sysuio
14125 : see if this is a sys/un.h system
14126 set sys/un.h i_sysun
14130 : see if this is a sys/utsname.h system
14131 set sys/utsname.h i_sysutsname
14134 : see if this is a syswait system
14135 set sys/wait.h i_syswait
14138 : see if this is a ustat.h system
14139 set ustat.h i_ustat
14142 : see if this is an utime system
14143 set utime.h i_utime
14146 : see if this is a values.h system
14147 set values.h i_values
14150 : see if this is a vfork system
14153 set vfork.h i_vfork
14161 : see if gdbm.h is available
14166 : see if gdbm_open exists
14167 set gdbm_open d_gdbm_open
14169 case "$d_gdbm_open" in
14172 echo "We won't be including <gdbm.h>"
14182 echo "Looking for extensions..." >&4
14183 : If we are using the old config.sh, known_extensions may contain
14184 : old or inaccurate or duplicate values.
14185 known_extensions=''
14186 nonxs_extensions=''
14187 : We do not use find because it might not be available.
14188 : We do not just use MANIFEST because the user may have dropped
14189 : some additional extensions into the source tree and expect them
14192 : Function to recursively find available extensions, ignoring DynaLoader
14193 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14197 DynaLoader|dynaload) ;;
14199 if $test -f $xxx/$xxx.xs; then
14200 known_extensions="$known_extensions $1$xxx";
14201 elif $test -f $xxx/Makefile.PL; then
14202 nonxs_extensions="$nonxs_extensions $1$xxx";
14204 if $test -d $xxx -a $# -lt 10; then
14207 eval $find_extensions;
14219 eval $find_extensions
14220 set X $nonxs_extensions
14222 nonxs_extensions="$*"
14223 set X $known_extensions
14225 known_extensions="$*"
14228 : Now see which are supported on this system.
14230 for xxx in $known_extensions ; do
14234 $define) avail_ext="$avail_ext $xxx" ;;
14237 GDBM_File|gdbm_fil)
14239 $define) avail_ext="$avail_ext $xxx" ;;
14242 NDBM_File|ndbm_fil)
14245 case "$osname-$use64bits" in
14248 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14251 *) avail_ext="$avail_ext $xxx" ;;
14256 ODBM_File|odbm_fil)
14257 case "${i_dbm}${i_rpcsvcdbm}" in
14259 case "$osname-$use64bits" in
14262 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14265 *) avail_ext="$avail_ext $xxx" ;;
14271 case "$useposix" in
14272 true|define|y) avail_ext="$avail_ext $xxx" ;;
14276 case "$useopcode" in
14277 true|define|y) avail_ext="$avail_ext $xxx" ;;
14281 case "$d_socket" in
14282 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14286 case "$usethreads" in
14287 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14291 : XXX Do we need a useipcsysv variable here
14292 case "${d_msg}${d_sem}${d_shm}" in
14293 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14296 *) avail_ext="$avail_ext $xxx"
14305 : Now see which nonxs extensions are supported on this system.
14306 : For now assume all are.
14308 for xxx in $nonxs_extensions ; do
14310 *) nonxs_ext="$nonxs_ext $xxx"
14322 A number of extensions are supplied with $package. You may choose to
14323 compile these extensions for dynamic loading (the default), compile
14324 them into the $package executable (static loading), or not include
14325 them at all. Answer "none" to include no extensions.
14326 Note that DynaLoader is always built and need not be mentioned here.
14329 case "$dynamic_ext" in
14330 '') dflt="$avail_ext" ;;
14331 *) dflt="$dynamic_ext"
14332 # Perhaps we are reusing an old out-of-date config.sh.
14335 if test X"$dynamic_ext" != X"$avail_ext"; then
14337 NOTICE: Your previous config.sh list may be incorrect.
14338 The extensions now available to you are
14340 but the default list from your previous config.sh is
14352 rp="What extensions do you wish to load dynamically?"
14355 none) dynamic_ext=' ' ;;
14356 *) dynamic_ext="$ans" ;;
14359 case "$static_ext" in
14361 : Exclude those already listed in dynamic linking
14363 for xxx in $avail_ext; do
14364 case " $dynamic_ext " in
14366 *) dflt="$dflt $xxx" ;;
14373 *) dflt="$static_ext"
14380 rp="What extensions do you wish to load statically?"
14383 none) static_ext=' ' ;;
14384 *) static_ext="$ans" ;;
14389 A number of extensions are supplied with $package. Answer "none"
14390 to include no extensions.
14391 Note that DynaLoader is always built and need not be mentioned here.
14394 case "$static_ext" in
14395 '') dflt="$avail_ext" ;;
14396 *) dflt="$static_ext"
14397 # Perhaps we are reusing an old out-of-date config.sh.
14400 if test X"$static_ext" != X"$avail_ext"; then
14402 NOTICE: Your previous config.sh list may be incorrect.
14403 The extensions now available to you are
14405 but the default list from your previous config.sh is
14414 : Exclude those that are not xs extensions
14418 rp="What extensions do you wish to include?"
14421 none) static_ext=' ' ;;
14422 *) static_ext="$ans" ;;
14427 set X $dynamic_ext $static_ext $nonxs_ext
14431 : Remove build directory name from cppstdin so it can be used from
14432 : either the present location or the final installed location.
14434 : Get out of the UU directory to get correct path name.
14436 case "$cppstdin" in
14438 echo "Stripping down cppstdin path name"
14444 : end of configuration questions
14446 echo "End of configuration questions."
14449 : back to where it started
14450 if test -d ../UU; then
14454 : configuration may be patched via a 'config.over' file
14455 if $test -f config.over; then
14458 rp='I see a config.over file. Do you wish to load it?'
14461 n*) echo "OK, I'll ignore it.";;
14463 echo "Configuration override changes have been loaded."
14468 : in case they want portability, strip down executable paths
14469 case "$d_portable" in
14472 echo "Stripping down executable paths..." >&4
14473 for file in $loclist $trylist; do
14475 eval $file=`basename $temp`
14480 : create config.sh file
14482 echo "Creating config.sh..." >&4
14483 $spitshell <<EOT >config.sh
14486 # This file was produced by running the Configure script. It holds all the
14487 # definitions figured out by Configure. Should you modify one of these values,
14488 # do not forget to propagate your changes by running "Configure -der". You may
14489 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14492 # Package name : $package
14493 # Source directory : $src
14494 # Configuration time: $cf_time
14495 # Configured by : $cf_by
14496 # Target system : $myuname
14506 Revision='$Revision'
14513 alignbytes='$alignbytes'
14514 ansi2knr='$ansi2knr'
14515 aphostname='$aphostname'
14516 api_revision='$api_revision'
14517 api_subversion='$api_subversion'
14518 api_version='$api_version'
14519 api_versionstring='$api_versionstring'
14522 archlibexp='$archlibexp'
14523 archname64='$archname64'
14524 archname='$archname'
14525 archobjs='$archobjs'
14530 bincompat5005='$bincompat5005'
14534 byteorder='$byteorder'
14536 castflags='$castflags'
14539 cccdlflags='$cccdlflags'
14540 ccdlflags='$ccdlflags'
14542 ccsymbols='$ccsymbols'
14544 cf_email='$cf_email'
14546 charsize='$charsize'
14550 clocktype='$clocktype'
14552 compress='$compress'
14553 contains='$contains'
14557 cpp_stuff='$cpp_stuff'
14558 cppccsymbols='$cppccsymbols'
14559 cppflags='$cppflags'
14561 cppminus='$cppminus'
14563 cppstdin='$cppstdin'
14564 cppsymbols='$cppsymbols'
14565 crosscompile='$crosscompile'
14566 cryptlib='$cryptlib'
14568 d_Gconvert='$d_Gconvert'
14569 d_PRIEldbl='$d_PRIEldbl'
14570 d_PRIFldbl='$d_PRIFldbl'
14571 d_PRIGldbl='$d_PRIGldbl'
14572 d_PRIX64='$d_PRIX64'
14573 d_PRId64='$d_PRId64'
14574 d_PRIeldbl='$d_PRIeldbl'
14575 d_PRIfldbl='$d_PRIfldbl'
14576 d_PRIgldbl='$d_PRIgldbl'
14577 d_PRIi64='$d_PRIi64'
14578 d_PRIo64='$d_PRIo64'
14579 d_PRIu64='$d_PRIu64'
14580 d_PRIx64='$d_PRIx64'
14581 d_access='$d_access'
14582 d_accessx='$d_accessx'
14584 d_archlib='$d_archlib'
14587 d_attribut='$d_attribut'
14590 d_bincompat5005='$d_bincompat5005'
14592 d_bsdgetpgrp='$d_bsdgetpgrp'
14593 d_bsdsetpgrp='$d_bsdsetpgrp'
14595 d_casti32='$d_casti32'
14596 d_castneg='$d_castneg'
14597 d_charvspr='$d_charvspr'
14599 d_chroot='$d_chroot'
14600 d_chsize='$d_chsize'
14601 d_closedir='$d_closedir'
14605 d_cuserid='$d_cuserid'
14606 d_dbl_dig='$d_dbl_dig'
14607 d_difftime='$d_difftime'
14608 d_dirnamlen='$d_dirnamlen'
14609 d_dlerror='$d_dlerror'
14610 d_dlopen='$d_dlopen'
14611 d_dlsymun='$d_dlsymun'
14612 d_dosuid='$d_dosuid'
14613 d_drand48proto='$d_drand48proto'
14615 d_eaccess='$d_eaccess'
14616 d_endgrent='$d_endgrent'
14617 d_endhent='$d_endhent'
14618 d_endnent='$d_endnent'
14619 d_endpent='$d_endpent'
14620 d_endpwent='$d_endpwent'
14621 d_endsent='$d_endsent'
14622 d_endspent='$d_endspent'
14623 d_eofnblk='$d_eofnblk'
14624 d_eunice='$d_eunice'
14625 d_fchmod='$d_fchmod'
14626 d_fchown='$d_fchown'
14628 d_fd_macros='$d_fd_macros'
14629 d_fd_set='$d_fd_set'
14630 d_fds_bits='$d_fds_bits'
14631 d_fgetpos='$d_fgetpos'
14632 d_flexfnam='$d_flexfnam'
14635 d_fpathconf='$d_fpathconf'
14636 d_fpos64_t='$d_fpos64_t'
14637 d_fs_data_s='$d_fs_data_s'
14638 d_fseeko='$d_fseeko'
14639 d_fsetpos='$d_fsetpos'
14640 d_fstatfs='$d_fstatfs'
14641 d_fstatvfs='$d_fstatvfs'
14642 d_ftello='$d_ftello'
14644 d_getcwd='$d_getcwd'
14645 d_getgrent='$d_getgrent'
14646 d_getgrps='$d_getgrps'
14647 d_gethbyaddr='$d_gethbyaddr'
14648 d_gethbyname='$d_gethbyname'
14649 d_gethent='$d_gethent'
14650 d_gethname='$d_gethname'
14651 d_gethostprotos='$d_gethostprotos'
14652 d_getlogin='$d_getlogin'
14653 d_getmnt='$d_getmnt'
14654 d_getmntent='$d_getmntent'
14655 d_getnbyaddr='$d_getnbyaddr'
14656 d_getnbyname='$d_getnbyname'
14657 d_getnent='$d_getnent'
14658 d_getnetprotos='$d_getnetprotos'
14659 d_getpbyname='$d_getpbyname'
14660 d_getpbynumber='$d_getpbynumber'
14661 d_getpent='$d_getpent'
14662 d_getpgid='$d_getpgid'
14663 d_getpgrp2='$d_getpgrp2'
14664 d_getpgrp='$d_getpgrp'
14665 d_getppid='$d_getppid'
14666 d_getprior='$d_getprior'
14667 d_getprotoprotos='$d_getprotoprotos'
14668 d_getpwent='$d_getpwent'
14669 d_getsbyname='$d_getsbyname'
14670 d_getsbyport='$d_getsbyport'
14671 d_getsent='$d_getsent'
14672 d_getservprotos='$d_getservprotos'
14673 d_getspent='$d_getspent'
14674 d_getspnam='$d_getspnam'
14675 d_gettimeod='$d_gettimeod'
14676 d_gnulibc='$d_gnulibc'
14677 d_grpasswd='$d_grpasswd'
14678 d_hasmntopt='$d_hasmntopt'
14682 d_inetaton='$d_inetaton'
14683 d_int64t='$d_int64t'
14684 d_isascii='$d_isascii'
14685 d_killpg='$d_killpg'
14686 d_lchown='$d_lchown'
14687 d_ldbl_dig='$d_ldbl_dig'
14689 d_locconv='$d_locconv'
14691 d_longdbl='$d_longdbl'
14692 d_longlong='$d_longlong'
14695 d_mbstowcs='$d_mbstowcs'
14696 d_mbtowc='$d_mbtowc'
14697 d_memchr='$d_memchr'
14698 d_memcmp='$d_memcmp'
14699 d_memcpy='$d_memcpy'
14700 d_memmove='$d_memmove'
14701 d_memset='$d_memset'
14703 d_mkdtemp='$d_mkdtemp'
14704 d_mkfifo='$d_mkfifo'
14705 d_mkstemp='$d_mkstemp'
14706 d_mkstemps='$d_mkstemps'
14707 d_mktime='$d_mktime'
14709 d_mprotect='$d_mprotect'
14711 d_msg_ctrunc='$d_msg_ctrunc'
14712 d_msg_dontroute='$d_msg_dontroute'
14713 d_msg_oob='$d_msg_oob'
14714 d_msg_peek='$d_msg_peek'
14715 d_msg_proxy='$d_msg_proxy'
14716 d_msgctl='$d_msgctl'
14717 d_msgget='$d_msgget'
14718 d_msgrcv='$d_msgrcv'
14719 d_msgsnd='$d_msgsnd'
14721 d_munmap='$d_munmap'
14722 d_mymalloc='$d_mymalloc'
14724 d_nv_preserves_uv='$d_nv_preserves_uv'
14725 d_off64_t='$d_off64_t'
14726 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14727 d_oldpthreads='$d_oldpthreads'
14728 d_oldsock='$d_oldsock'
14730 d_pathconf='$d_pathconf'
14732 d_phostname='$d_phostname'
14735 d_portable='$d_portable'
14736 d_pthread_yield='$d_pthread_yield'
14738 d_pwchange='$d_pwchange'
14739 d_pwclass='$d_pwclass'
14740 d_pwcomment='$d_pwcomment'
14741 d_pwexpire='$d_pwexpire'
14742 d_pwgecos='$d_pwgecos'
14743 d_pwpasswd='$d_pwpasswd'
14744 d_pwquota='$d_pwquota'
14746 d_readdir='$d_readdir'
14747 d_readlink='$d_readlink'
14748 d_rename='$d_rename'
14749 d_rewinddir='$d_rewinddir'
14751 d_safebcpy='$d_safebcpy'
14752 d_safemcpy='$d_safemcpy'
14753 d_sanemcmp='$d_sanemcmp'
14754 d_sched_yield='$d_sched_yield'
14755 d_scm_rights='$d_scm_rights'
14756 d_seekdir='$d_seekdir'
14757 d_select='$d_select'
14759 d_semctl='$d_semctl'
14760 d_semctl_semid_ds='$d_semctl_semid_ds'
14761 d_semctl_semun='$d_semctl_semun'
14762 d_semget='$d_semget'
14764 d_setegid='$d_setegid'
14765 d_seteuid='$d_seteuid'
14766 d_setgrent='$d_setgrent'
14767 d_setgrps='$d_setgrps'
14768 d_sethent='$d_sethent'
14769 d_setlinebuf='$d_setlinebuf'
14770 d_setlocale='$d_setlocale'
14771 d_setnent='$d_setnent'
14772 d_setpent='$d_setpent'
14773 d_setpgid='$d_setpgid'
14774 d_setpgrp2='$d_setpgrp2'
14775 d_setpgrp='$d_setpgrp'
14776 d_setprior='$d_setprior'
14777 d_setpwent='$d_setpwent'
14778 d_setregid='$d_setregid'
14779 d_setresgid='$d_setresgid'
14780 d_setresuid='$d_setresuid'
14781 d_setreuid='$d_setreuid'
14782 d_setrgid='$d_setrgid'
14783 d_setruid='$d_setruid'
14784 d_setsent='$d_setsent'
14785 d_setsid='$d_setsid'
14786 d_setspent='$d_setspent'
14787 d_setvbuf='$d_setvbuf'
14791 d_shmatprototype='$d_shmatprototype'
14792 d_shmctl='$d_shmctl'
14794 d_shmget='$d_shmget'
14795 d_sigaction='$d_sigaction'
14796 d_sigsetjmp='$d_sigsetjmp'
14797 d_socket='$d_socket'
14798 d_sockpair='$d_sockpair'
14800 d_statblks='$d_statblks'
14801 d_statfs_f_flags='$d_statfs_f_flags'
14802 d_statfs_s='$d_statfs_s'
14803 d_statvfs='$d_statvfs'
14804 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14805 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14806 d_stdio_stream_array='$d_stdio_stream_array'
14807 d_stdiobase='$d_stdiobase'
14808 d_stdstdio='$d_stdstdio'
14809 d_strchr='$d_strchr'
14810 d_strcoll='$d_strcoll'
14811 d_strctcpy='$d_strctcpy'
14812 d_strerrm='$d_strerrm'
14813 d_strerror='$d_strerror'
14814 d_strtod='$d_strtod'
14815 d_strtol='$d_strtol'
14816 d_strtold='$d_strtold'
14817 d_strtoll='$d_strtoll'
14818 d_strtoul='$d_strtoul'
14819 d_strtoull='$d_strtoull'
14820 d_strtouq='$d_strtouq'
14821 d_strxfrm='$d_strxfrm'
14822 d_suidsafe='$d_suidsafe'
14823 d_symlink='$d_symlink'
14824 d_syscall='$d_syscall'
14825 d_sysconf='$d_sysconf'
14826 d_sysernlst='$d_sysernlst'
14827 d_syserrlst='$d_syserrlst'
14828 d_system='$d_system'
14829 d_tcgetpgrp='$d_tcgetpgrp'
14830 d_tcsetpgrp='$d_tcsetpgrp'
14831 d_telldir='$d_telldir'
14832 d_telldirproto='$d_telldirproto'
14835 d_truncate='$d_truncate'
14836 d_tzname='$d_tzname'
14839 d_union_semun='$d_union_semun'
14841 d_vendorbin='$d_vendorbin'
14842 d_vendorlib='$d_vendorlib'
14844 d_void_closedir='$d_void_closedir'
14845 d_voidsig='$d_voidsig'
14846 d_voidtty='$d_voidtty'
14847 d_volatile='$d_volatile'
14848 d_vprintf='$d_vprintf'
14850 d_waitpid='$d_waitpid'
14851 d_wcstombs='$d_wcstombs'
14852 d_wctomb='$d_wctomb'
14855 db_hashtype='$db_hashtype'
14856 db_prefixtype='$db_prefixtype'
14857 defvoidused='$defvoidused'
14858 direntrytype='$direntrytype'
14861 doublesize='$doublesize'
14863 dynamic_ext='$dynamic_ext'
14869 eunicefix='$eunicefix'
14872 extensions='$extensions'
14873 fflushNULL='$fflushNULL'
14874 fflushall='$fflushall'
14876 firstmakefile='$firstmakefile'
14878 fpossize='$fpossize'
14879 fpostype='$fpostype'
14880 freetype='$freetype'
14882 full_csh='$full_csh'
14883 full_sed='$full_sed'
14884 gccversion='$gccversion'
14885 gidformat='$gidformat'
14891 groupcat='$groupcat'
14892 groupstype='$groupstype'
14895 h_sysfile='$h_sysfile'
14907 i_arpainet='$i_arpainet'
14908 i_bsdioctl='$i_bsdioctl'
14911 i_dirent='$i_dirent'
14919 i_inttypes='$i_inttypes'
14920 i_limits='$i_limits'
14921 i_locale='$i_locale'
14922 i_machcthr='$i_machcthr'
14923 i_malloc='$i_malloc'
14925 i_memory='$i_memory'
14926 i_mntent='$i_mntent'
14929 i_neterrno='$i_neterrno'
14930 i_netinettcp='$i_netinettcp'
14933 i_pthread='$i_pthread'
14935 i_rpcsvcdbm='$i_rpcsvcdbm'
14938 i_shadow='$i_shadow'
14940 i_stdarg='$i_stdarg'
14941 i_stddef='$i_stddef'
14942 i_stdlib='$i_stdlib'
14943 i_string='$i_string'
14944 i_sysaccess='$i_sysaccess'
14945 i_sysdir='$i_sysdir'
14946 i_sysfile='$i_sysfile'
14947 i_sysfilio='$i_sysfilio'
14949 i_sysioctl='$i_sysioctl'
14950 i_syslog='$i_syslog'
14951 i_sysmman='$i_sysmman'
14952 i_sysmount='$i_sysmount'
14953 i_sysndir='$i_sysndir'
14954 i_sysparam='$i_sysparam'
14955 i_sysresrc='$i_sysresrc'
14956 i_syssecrt='$i_syssecrt'
14957 i_sysselct='$i_sysselct'
14958 i_syssockio='$i_syssockio'
14959 i_sysstat='$i_sysstat'
14960 i_sysstatfs='$i_sysstatfs'
14961 i_sysstatvfs='$i_sysstatvfs'
14962 i_systime='$i_systime'
14963 i_systimek='$i_systimek'
14964 i_systimes='$i_systimes'
14965 i_systypes='$i_systypes'
14966 i_sysuio='$i_sysuio'
14968 i_sysutsname='$i_sysutsname'
14969 i_sysvfs='$i_sysvfs'
14970 i_syswait='$i_syswait'
14971 i_termio='$i_termio'
14972 i_termios='$i_termios'
14974 i_unistd='$i_unistd'
14977 i_values='$i_values'
14978 i_varargs='$i_varargs'
14979 i_varhdr='$i_varhdr'
14981 ignore_versioned_solibs='$ignore_versioned_solibs'
14982 inc_version_list='$inc_version_list'
14983 inc_version_list_init='$inc_version_list_init'
14986 installarchlib='$installarchlib'
14987 installbin='$installbin'
14988 installman1dir='$installman1dir'
14989 installman3dir='$installman3dir'
14990 installprefix='$installprefix'
14991 installprefixexp='$installprefixexp'
14992 installprivlib='$installprivlib'
14993 installscript='$installscript'
14994 installsitearch='$installsitearch'
14995 installsitebin='$installsitebin'
14996 installsitelib='$installsitelib'
14997 installstyle='$installstyle'
14998 installusrbinperl='$installusrbinperl'
14999 installvendorbin='$installvendorbin'
15000 installvendorlib='$installvendorlib'
15002 ivdformat='$ivdformat'
15005 known_extensions='$known_extensions'
15009 lddlflags='$lddlflags'
15011 ldlibpthname='$ldlibpthname'
15018 libsdirs='$libsdirs'
15019 libsfiles='$libsfiles'
15020 libsfound='$libsfound'
15021 libswanted='$libswanted'
15027 locincpth='$locincpth'
15028 loclibpth='$loclibpth'
15029 longdblsize='$longdblsize'
15030 longlongsize='$longlongsize'
15031 longsize='$longsize'
15035 lseeksize='$lseeksize'
15036 lseektype='$lseektype'
15040 make_set_make='$make_set_make'
15041 mallocobj='$mallocobj'
15042 mallocsrc='$mallocsrc'
15043 malloctype='$malloctype'
15045 man1direxp='$man1direxp'
15048 man3direxp='$man3direxp'
15051 mips_type='$mips_type'
15053 mmaptype='$mmaptype'
15055 modetype='$modetype'
15057 multiarch='$multiarch'
15059 myarchname='$myarchname'
15060 mydomain='$mydomain'
15061 myhostname='$myhostname'
15064 netdb_hlen_type='$netdb_hlen_type'
15065 netdb_host_type='$netdb_host_type'
15066 netdb_name_type='$netdb_name_type'
15067 netdb_net_type='$netdb_net_type'
15070 nm_so_opt='$nm_so_opt'
15071 nonxs_ext='$nonxs_ext'
15075 o_nonblock='$o_nonblock'
15077 old_pthread_create_joinable='$old_pthread_create_joinable'
15078 optimize='$optimize'
15079 orderlib='$orderlib'
15085 patchlevel='$patchlevel'
15086 path_sep='$path_sep'
15088 perladmin='$perladmin'
15089 perlpath='$perlpath'
15091 phostname='$phostname'
15094 pm_apiversion='$pm_apiversion'
15098 prefixexp='$prefixexp'
15100 privlibexp='$privlibexp'
15101 prototype='$prototype'
15103 quadkind='$quadkind'
15104 quadtype='$quadtype'
15105 randbits='$randbits'
15106 randfunc='$randfunc'
15107 randseedtype='$randseedtype'
15109 rd_nodata='$rd_nodata'
15113 sPRIEldbl='$sPRIEldbl'
15114 sPRIFldbl='$sPRIFldbl'
15115 sPRIGldbl='$sPRIGldbl'
15118 sPRIeldbl='$sPRIeldbl'
15119 sPRIfldbl='$sPRIfldbl'
15120 sPRIgldbl='$sPRIgldbl'
15125 sched_yield='$sched_yield'
15126 scriptdir='$scriptdir'
15127 scriptdirexp='$scriptdirexp'
15129 seedfunc='$seedfunc'
15130 selectminbits='$selectminbits'
15131 selecttype='$selecttype'
15132 sendmail='$sendmail'
15135 sharpbang='$sharpbang'
15136 shmattype='$shmattype'
15137 shortsize='$shortsize'
15140 sig_count='$sig_count'
15141 sig_name='$sig_name'
15142 sig_name_init='$sig_name_init'
15144 sig_num_init='$sig_num_init'
15145 signal_t='$signal_t'
15146 sitearch='$sitearch'
15147 sitearchexp='$sitearchexp'
15149 sitebinexp='$sitebinexp'
15151 sitelibexp='$sitelibexp'
15152 siteprefix='$siteprefix'
15153 siteprefixexp='$siteprefixexp'
15154 sizetype='$sizetype'
15159 sockethdr='$sockethdr'
15160 socketlib='$socketlib'
15162 spackage='$spackage'
15163 spitshell='$spitshell'
15166 ssizetype='$ssizetype'
15167 startperl='$startperl'
15169 static_ext='$static_ext'
15171 stdio_base='$stdio_base'
15172 stdio_bufsiz='$stdio_bufsiz'
15173 stdio_cnt='$stdio_cnt'
15174 stdio_filbuf='$stdio_filbuf'
15175 stdio_ptr='$stdio_ptr'
15176 stdio_stream_array='$stdio_stream_array'
15179 subversion='$subversion'
15186 timeincl='$timeincl'
15187 timetype='$timetype'
15200 uidformat='$uidformat'
15206 uquadtype='$uquadtype'
15207 use5005threads='$use5005threads'
15208 use64bits='$use64bits'
15210 useithreads='$useithreads'
15211 uselargefiles='$uselargefiles'
15212 uselongdouble='$uselongdouble'
15213 usemorebits='$usemorebits'
15214 usemultiplicity='$usemultiplicity'
15215 usemymalloc='$usemymalloc'
15217 useopcode='$useopcode'
15218 useperlio='$useperlio'
15219 useposix='$useposix'
15221 useshrplib='$useshrplib'
15222 usesocks='$usesocks'
15223 usethreads='$usethreads'
15224 usevendorprefix='$usevendorprefix'
15225 usevfork='$usevfork'
15228 uvoformat='$uvoformat'
15231 uvuformat='$uvuformat'
15232 uvxformat='$uvxformat'
15233 vendorbin='$vendorbin'
15234 vendorbinexp='$vendorbinexp'
15235 vendorlib='$vendorlib'
15236 vendorlibexp='$vendorlibexp'
15237 vendorprefix='$vendorprefix'
15238 vendorprefixexp='$vendorprefixexp'
15241 voidflags='$voidflags'
15243 xs_apiversion='$xs_apiversion'
15248 : Add in command line options if available
15249 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15251 : add special variables
15252 $test -f $src/patchlevel.h && \
15253 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15254 echo "CONFIGDOTSH=true" >>config.sh
15256 : propagate old symbols
15257 if $test -f UU/config.sh; then
15258 <UU/config.sh sort | uniq >UU/oldconfig.sh
15259 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15260 sort | uniq -u >UU/oldsyms
15261 set X `cat UU/oldsyms`
15267 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15269 echo "# Variables propagated from previous config.sh file." >>config.sh
15270 for sym in `cat UU/oldsyms`; do
15271 echo " Propagating $hint variable "'$'"$sym..."
15272 eval 'tmp="$'"${sym}"'"'
15274 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15280 : Finish up by extracting the .SH files
15294 If you'd like to make any changes to the config.sh file before I begin
15295 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15298 rp="Press return or use a shell escape to edit config.sh:"
15303 *) : in case they cannot read
15304 sh 1>&4 -c "$ans";;
15309 : if this fails, just run all the .SH files by hand
15316 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15323 Now you need to generate make dependencies by running "$make depend".
15324 You might prefer to run it in background: "$make depend > makedepend.out &"
15325 It can take a while, so you might not want to run it right now.
15330 rp="Run $make depend now?"
15334 $make depend && echo "Now you must run a $make."
15337 echo "You must run '$make depend' then '$make'."
15340 elif test -f [Mm]akefile; then
15342 echo "Now you must run a $make."
15347 if $test -f Policy.sh; then
15350 If you compile $package on a different machine or from a different object
15351 directory, copy the Policy.sh file from this object directory to the
15352 new one before you run Configure -- this will help you with most of
15353 the policy defaults.
15357 if $test -f config.msg; then
15358 echo "Hmm. I also noted the following information while running:"
15360 $cat config.msg >&4
15363 $rm -f kit*isdone ark*isdone