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 Tue Feb 29 03:12:47 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
455 d_old_pthread_create_joinable=''
456 old_pthread_create_joinable=''
695 inc_version_list_init=''
713 ignore_versioned_solibs=''
878 d_stdio_stream_array=''
879 stdio_stream_array=''
925 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
928 : We must find out about Eunice early
930 if test -f /etc/unixtovms; then
931 eunicefix=/etc/unixtovms
933 if test -f /etc/unixtovms.exe; then
934 eunicefix=/etc/unixtovms.exe
938 : set useposix=false in your hint file to disable the POSIX extension.
940 : set useopcode=false in your hint file to disable the Opcode extension.
942 : Trailing extension. Override this in a hint file, if needed.
944 : Extra object files, if any, needed on this platform.
946 : Possible local include directories to search.
947 : Set locincpth to "" in a hint file to defeat local include searches.
948 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
949 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
951 : no include file wanted by default
955 : change the next line if compiling for Xenix/286 on Xenix/386
956 xlibpth='/usr/lib/386 /lib/386'
957 : Possible local library directories to search.
958 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
959 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
961 : general looking path for locating libraries
962 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
963 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
964 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
965 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
966 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
968 : Private path used by Configure to find libraries. Its value
969 : is prepended to libpth. This variable takes care of special
970 : machines, like the mips. Usually, it should be empty.
973 : default library list
975 : some systems want to use only the non-versioned libso:s
976 ignore_versioned_solibs=''
977 : set usemultiplicity on the Configure command line to enable multiplicity.
978 : set usesocks on the Configure command line to enable socks.
979 : set usethreads on the Configure command line to enable threads.
980 : full support for void wanted by default
983 : List of libraries we want.
984 : If anyone needs -lnet, put it in a hint file.
985 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
986 libswanted="$libswanted dld ld sun m c cposix posix"
987 libswanted="$libswanted ndir dir crypt sec"
988 libswanted="$libswanted ucb bsd BSD PW x"
989 : We probably want to search /usr/shlib before most other libraries.
990 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
991 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
992 glibpth="/usr/shlib $glibpth"
993 : Do not use vfork unless overridden by a hint file.
996 : Find the basic shell for Bourne shell scripts
1000 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1003 if test -f "$xxx"; then
1006 : Build up a list and do a single loop so we can 'break' out.
1007 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1008 for xxx in sh bash ksh pdksh ash; do
1010 try="$try ${p}/${xxx}"
1014 if test -f "$xxx"; then
1017 elif test -f "$xxx.exe"; then
1028 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1030 Usually it's in /bin/sh. How did you even get this far?
1031 Please contact me (Perl Maintainers) at perlbug@perl.com and
1032 we'll try to straighten this all out.
1038 : see if sh knows # comments
1039 if `$sh -c '#' >/dev/null 2>&1`; then
1043 test -f $xcat || xcat=/usr/bin/cat
1048 if test -s today; then
1051 echo "#! $xcat" > try
1055 if test -s today; then
1063 echo "Your $sh doesn't grok # comments--I will strip them later on."
1066 echo "exec grep -v '^[ ]*#'" >spitshell
1068 $eunicefix spitshell
1069 spitshell=`pwd`/spitshell
1071 echo "I presume that if # doesn't work, #! won't work either!"
1076 : figure out how to guarantee sh startup
1078 '') startsh=${sharpbang}${sh} ;;
1090 : echo "Yup, it does."
1092 echo "Hmm... '$startsh' does not guarantee sh startup..."
1093 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1098 : Save command line options in file UU/cmdline.opt for later use in
1099 : generating config.sh.
1100 cat > cmdline.opt <<EOSH
1101 # Configure command line arguments.
1108 cat >>cmdline.opt <<EOSH
1109 config_arg$argn='$arg'
1111 argn=`expr $argn + 1`
1114 : produce awk script to parse command line options
1115 cat >options.awk <<'EOF'
1117 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1119 len = length(optstr);
1120 for (i = 1; i <= len; i++) {
1121 c = substr(optstr, i, 1);
1122 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1133 if (substr(str, 1, 1) != "-") {
1134 printf("'%s'\n", str);
1138 for (i = 2; i <= len; i++) {
1139 c = substr(str, i, 1);
1141 printf("-%s\n", substr(str, i));
1147 printf("'%s'\n", substr(str, i + 1));
1160 : process the command line options
1161 set X `for arg in "$@"; do echo "X$arg"; done |
1162 sed -e s/X// | awk -f options.awk`
1167 : set up default values
1177 rm -f optdef.sh posthint.sh
1178 cat >optdef.sh <<EOS
1184 while test $# -gt 0; do
1186 -d) shift; fastread=yes;;
1187 -e) shift; alldone=cont;;
1191 if test -r "$1"; then
1194 echo "$me: cannot read config file $1." >&2
1199 -h) shift; error=true;;
1200 -r) shift; reuseval=true;;
1201 -s) shift; silent=true; realsilent=true;;
1202 -E) shift; alldone=exit;;
1203 -K) shift; knowitall=true;;
1204 -O) shift; override=true;;
1205 -S) shift; silent=true; extractsh=true;;
1210 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1211 echo "$me: ignoring -D $1" >&2
1214 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1215 *) echo "$1='define'" >> optdef.sh;;
1222 *=) echo "$1" >> optdef.sh;;
1224 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1225 echo "$me: ignoring -U $1" >&2
1227 *) echo "$1='undef'" >> optdef.sh;;
1238 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1242 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1243 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1249 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1250 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1251 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1252 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1253 *) xxx=`echo $yyy|sed 's!:.*!!'`
1254 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1260 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1262 echo "$yyy=''" >> posthint.sh ;;
1267 echo "$yyy='$zzz'" >> posthint.sh ;;
1269 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1271 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1276 echo "$yyy=$zzz" >> posthint.sh ;;
1277 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1281 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1284 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1292 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1293 [-U symbol] [-U symbol=] [-A command:symbol...]
1294 -d : use defaults for all answers.
1295 -e : go on without questioning past the production of config.sh.
1296 -f : specify an alternate default configuration file.
1297 -h : print this help message and exit (with an error status).
1298 -r : reuse C symbols value if possible (skips costly nm extraction).
1299 -s : silent mode, only echoes questions and essential information.
1300 -D : define symbol to have some value:
1301 -D symbol symbol gets the value 'define'
1302 -D symbol=value symbol gets the value 'value'
1303 -E : stop at the end of questions, after having produced config.sh.
1304 -K : do not use unless you know what you are doing.
1305 -O : let -D and -U override definitions from loaded configuration file.
1306 -S : perform variable substitutions on all .SH files (can mix with -f)
1307 -U : undefine symbol:
1308 -U symbol symbol gets the value 'undef'
1309 -U symbol= symbol gets completely empty
1310 -A : manipulate symbol after the platform specific hints have been applied:
1311 -A symbol=value append " "value to symbol
1312 -A append:symbol=value append value to symbol
1313 -A define:symbol=value define symbol to have value
1314 -A clear:symbol define symbol to be ''
1315 -A define:symbol define symbol to be 'define'
1316 -A eval:symbol=value define symbol to be eval of value
1317 -A prepend:symbol=value prepend value to symbol
1318 -A undef:symbol define symbol to be 'undef'
1319 -A undef:symbol= define symbol to be ''
1320 -V : print version number and exit (with a zero status).
1327 case "$fastread$alldone" in
1330 if test ! -t 0; then
1331 echo "Say 'sh Configure', not 'sh <Configure'"
1339 true) exec 1>/dev/null;;
1342 : run the defines and the undefines, if any, but leave the file out there...
1345 : create the posthint manipulation script and leave the file out there...
1350 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1351 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1352 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1353 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1354 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1357 : Some greps do not return status, grrr.
1358 echo "grimblepritz" >grimble
1359 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1361 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1367 : the following should work in any shell
1371 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1372 cat >contains <<'EOSS'
1373 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1378 : Find the path to the source tree
1381 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1384 *) src=`cd ../$src && pwd` ;;
1397 if test -f $rsrc/Configure && \
1398 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1400 : found it, so we are ok.
1403 for src in . .. ../.. ../../.. ../../../..; do
1404 if test -f ../$src/Configure && \
1405 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1416 Sorry, I can't seem to locate the source dir for $package. Please start
1417 Configure with an explicit path -- i.e. /some/path/Configure.
1425 echo "Sources for $package found in \"$src\"." >&4
1429 : script used to extract .SH files with variable substitutions
1430 cat >extract <<'EOS'
1432 echo "Doing variable substitutions on .SH files..."
1433 if test -f $src/MANIFEST; then
1434 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1436 echo "(Looking for .SH files under the source directory.)"
1437 set x `(cd $src; find . -name "*.SH" -print)`
1441 0) set x `(cd $src; echo *.SH)`; shift;;
1443 if test ! -f $src/$1; then
1449 while test $name; do
1450 if test ! -d "$name"; then
1451 create="$name $create";
1452 name=`echo $name | sed -e "s|^[^/]*$||"`;
1453 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1458 for file in $create; do
1467 dir=`expr X$file : 'X\(.*\)/'`
1468 file=`expr X$file : 'X.*/\(.*\)'`
1469 (cd $dir && . ./$file)
1479 dir=`expr X$file : 'X\(.*\)/'`
1480 file=`expr X$file : 'X.*/\(.*\)'`
1481 (set x $dir; shift; eval $mkdir_p)
1491 if test -f $src/config_h.SH; then
1492 if test ! -f config.h; then
1493 : oops, they left it out of MANIFEST, probably, so do it anyway.
1499 : extract files and exit if asked to do so
1500 case "$extractsh" in
1502 case "$realsilent" in
1506 case "$config_sh" in
1507 '') config_sh='config.sh';;
1510 echo "Fetching answers from $config_sh..."
1513 test "$override" && . ./optdef.sh
1522 : Eunice requires " " instead of "", can you believe it
1525 echo "Beginning of configuration questions for $package."
1527 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1529 : first determine how to suppress newline on echo command
1531 echo "Checking echo to see how to suppress newlines..."
1532 (echo "hi there\c" ; echo " ") >.echotmp
1533 if $contains c .echotmp >/dev/null 2>&1 ; then
1544 echo $n "The star should be here-->$c"
1548 : Now test for existence of everything in MANIFEST
1550 if test -f $rsrc/MANIFEST; then
1551 echo "First let's make sure your kit is complete. Checking..." >&4
1552 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1555 for filelist in x??; do
1556 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1558 if test -s missing; then
1562 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1564 You have the option of continuing the configuration process, despite the
1565 distinct possibility that your kit is damaged, by typing 'y'es. If you
1566 do, don't blame me if something goes wrong. I advise you to type 'n'o
1567 and contact the author (perlbug@perl.com).
1570 echo $n "Continue? [n] $c" >&4
1574 echo "Continuing..." >&4
1578 echo "ABORTING..." >&4
1583 echo "Looks good..."
1586 echo "There is no MANIFEST file. I hope your kit is complete !"
1591 : Find the appropriate value for a newline for tr
1592 if test -n "$DJGPP"; then
1595 if test X"$trnl" = X; then
1596 case "`echo foo|tr '\n' x 2>/dev/null`" in
1600 if test X"$trnl" = X; then
1601 case "`echo foo|tr '\012' x 2>/dev/null`" in
1602 foox) trnl='\012' ;;
1605 if test X"$trnl" = X; then
1608 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1614 : compute the number of columns on the terminal for proper question formatting
1619 : set up the echo used in my read
1620 myecho="case \"\$xxxm\" in
1621 '') echo $n \"\$rp $c\" >&4;;
1623 '') echo $n \"[\$xxxm] $c\";;
1625 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1627 echo $n \"[\$xxxm] $c\" >&4
1629 echo $n \"\$rp [\$xxxm] $c\" >&4
1635 : now set up to do reads with possible shell escape and default assignment
1641 case "\$fastread" in
1642 yes) case "\$dflt" in
1645 case "\$silent-\$rp" in
1650 *) case "\$silent" in
1651 true) case "\$rp" in
1656 while expr "X\$ans" : "X!" >/dev/null; do
1660 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1668 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1677 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1682 echo "(OK, I'll run with -d after this question.)" >&4
1685 echo "*** Sorry, \$1 not supported yet." >&4
1695 echo "*** Substitution done -- please confirm."
1697 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1702 echo "*** Error -- try again."
1709 case "\$ans\$xxxm\$nostick" in
1721 : create .config dir to save info across Configure sessions
1722 test -d ../.config || mkdir ../.config
1723 cat >../.config/README <<EOF
1724 This directory created by Configure to save information that should
1725 persist across sessions for $package.
1727 You may safely delete it if you wish.
1730 : general instructions
1733 user=`(logname) 2>/dev/null`
1735 '') user=`whoami 2>&1`;;
1737 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1740 rp='Would you like to see the instructions?'
1751 This installation shell script will examine your system and ask you questions
1752 to determine how the perl5 package should be installed. If you get
1753 stuck on a question, you may use a ! shell escape to start a subshell or
1754 execute a command. Many of the questions will have default answers in square
1755 brackets; typing carriage return will give you the default.
1757 On some of the questions which ask for file or directory names you are allowed
1758 to use the ~name construct to specify the login directory belonging to "name",
1759 even if you don't have a shell which knows about that. Questions where this is
1760 allowed will be marked "(~name ok)".
1764 dflt='Type carriage return to continue'
1768 The prompter used in this script allows you to use shell variables and
1769 backticks in your answers. You may use $1, $2, etc... to refer to the words
1770 in the default answer, as if the default line was a set of arguments given to a
1771 script shell. This means you may also use $* to repeat the whole default line,
1772 so you do not have to re-type everything to add something to the default.
1774 Everytime there is a substitution, you will have to confirm. If there is an
1775 error (e.g. an unmatched backtick), the default answer will remain unchanged
1776 and you will be prompted again.
1778 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1779 the questions and use the computed defaults (or the previous answers if there
1780 was already a config.sh file). Type 'Configure -h' for a list of options.
1781 You may also start interactively and then answer '& -d' at any prompt to turn
1782 on the non-interactive behaviour for the remainder of the execution.
1788 Much effort has been expended to ensure that this shell script will run on any
1789 Unix system. If despite that it blows up on yours, your best bet is to edit
1790 Configure and run it again. If you can't run Configure for some reason,
1791 you'll have to generate a config.sh file by hand. Whatever problems you
1792 have, let me (perlbug@perl.com) know how I blew it.
1794 This installation script affects things in two ways:
1796 1) it may do direct variable substitutions on some of the files included
1798 2) it builds a config.h file for inclusion in C programs. You may edit
1799 any of these files as the need arises after running this script.
1801 If you make a mistake on a question, there is no easy way to back up to it
1802 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1803 files. Configure will offer to let you do this before it runs the SH files.
1806 dflt='Type carriage return to continue'
1808 case "$firsttime" in
1809 true) echo $user >>../.config/instruct;;
1813 : find out where common programs are
1815 echo "Locating common programs..." >&4
1828 if test -d \$dir/\$thing; then
1834 for thisthing in \$dir/\$thing; do
1835 : just loop through to pick last item
1837 if test -f \$thisthing; then
1840 elif test -f \$dir/\$thing.exe; then
1841 if test -n "$DJGPP"; then
1842 echo \$dir/\$thing.exe
1844 : on Eunice apparently
1894 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1895 pth="$pth /lib /usr/lib"
1896 for file in $loclist; do
1900 if test -f "$xxx"; then
1903 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1904 xxx=`./loc $file $file $pth`
1907 '') xxx=`./loc $file $file $pth`;;
1908 *) xxx=`./loc $xxx $xxx $pth`;;
1914 echo $file is in $xxx.
1917 echo $file is in $xxx.
1920 echo "I don't know where '$file' is, and my life depends on it." >&4
1921 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1927 echo "Don't worry if any of the following aren't found..."
1929 for file in $trylist; do
1933 if test -f "$xxx"; then
1936 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1937 xxx=`./loc $file $file $pth`
1940 '') xxx=`./loc $file $file $pth`;;
1941 *) xxx=`./loc $xxx $xxx $pth`;;
1947 echo $file is in $xxx.
1950 echo $file is in $xxx.
1953 echo "I don't see $file out there, $say."
1960 echo "Substituting grep for egrep."
1966 echo "Substituting cp for ln."
1972 echo "Hopefully test is built into your sh."
1975 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1976 echo "Using the test built into your sh."
1984 echo "Hopefully echo is built into your sh."
1989 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1990 $echo $n "hi there$c" >foo1
1991 echo $n "hi there$c" >foo2
1992 if cmp foo1 foo2 >/dev/null 2>&1; then
1993 echo "They are compatible. In fact, they may be identical."
2000 They are not compatible! You are probably running ksh on a non-USG system.
2001 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2002 have echo built in and we may have to run some Bourne shell scripts. That
2003 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2006 $echo $n "The star should be here-->$c"
2013 : determine whether symbolic links are supported
2016 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2017 echo "Symbolic links are supported." >&4
2020 echo "Symbolic links are NOT supported." >&4
2025 : see whether [:lower:] and [:upper:] are supported character classes
2027 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2029 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2033 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2034 # (0xc9 and 0xd1), therefore that is a nice testing point.
2035 if test "X$up" = X -o "X$low" = X; then
2036 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2042 if test "X$up" = X -o "X$low" = X; then
2043 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2049 if test "X$up" = X -o "X$low" = X; then
2050 case "`echo IJ | od -x 2>/dev/null`" in
2052 echo "Hey, this might be EBCDIC." >&4
2053 if test "X$up" = X -o "X$low" = X; then
2054 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2055 ij) up='[A-IJ-RS-Z]'
2060 if test "X$up" = X -o "X$low" = X; then
2061 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2071 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2073 echo "Using $up and $low to convert case." >&4
2076 echo "I don't know how to translate letters from upper to lower case." >&4
2077 echo "Your tr is not acting any way I know of." >&4
2081 : set up the translation script tr, must be called with ./tr of course
2085 '[A-Z][a-z]') exec $tr '$up' '$low';;
2086 '[a-z][A-Z]') exec $tr '$low' '$up';;
2093 : Try to determine whether config.sh was made on this system
2094 case "$config_sh" in
2096 myuname=`$uname -a 2>/dev/null`
2097 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2098 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2099 # because the A-Z/a-z are not consecutive.
2100 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2101 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2102 newmyuname="$myuname"
2104 case "$knowitall" in
2106 if test -f ../config.sh; then
2107 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2108 eval "`grep myuname= ../config.sh`"
2110 if test "X$myuname" = "X$newmyuname"; then
2118 : Get old answers from old config file if Configure was run on the
2119 : same system, otherwise use the hints.
2122 if test -f config.sh; then
2124 rp="I see a config.sh file. Shall I use it to set the defaults?"
2127 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2128 *) echo "Fetching default answers from your old config.sh file..." >&4
2136 : Older versions did not always set $sh. Catch re-use of such
2145 if test ! -f config.sh; then
2148 First time through, eh? I have some defaults handy for some systems
2149 that need some extra help getting the Configure answers right:
2152 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2154 : Half the following guesses are probably wrong... If you have better
2155 : tests or hints, please send them to perlbug@perl.com
2156 : The metaconfig authors would also appreciate a copy...
2157 $test -f /irix && osname=irix
2158 $test -f /xenix && osname=sco_xenix
2159 $test -f /dynix && osname=dynix
2160 $test -f /dnix && osname=dnix
2161 $test -f /lynx.os && osname=lynxos
2162 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2163 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2164 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2165 $test -f /bin/mips && /bin/mips && osname=mips
2166 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2167 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2168 $test -d /usr/apollo/bin && osname=apollo
2169 $test -f /etc/saf/_sactab && osname=svr4
2170 $test -d /usr/include/minix && osname=minix
2171 if $test -d /MachTen -o -d /MachTen_Folder; then
2173 if $test -x /sbin/version; then
2174 osvers=`/sbin/version | $awk '{print $2}' |
2175 $sed -e 's/[A-Za-z]$//'`
2176 elif $test -x /usr/etc/version; then
2177 osvers=`/usr/etc/version | $awk '{print $2}' |
2178 $sed -e 's/[A-Za-z]$//'`
2184 $test -f /sys/posix.dll &&
2185 $test -f /usr/bin/what &&
2186 set X `/usr/bin/what /sys/posix.dll` &&
2187 $test "$3" = UWIN &&
2191 if $test -f $uname; then
2199 umips) osname=umips ;;
2202 [23]100) osname=mips ;;
2203 next*) osname=next ;;
2205 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2206 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2209 elif $test -f /etc/kconfig; then
2211 if test "$lns" = "$ln -s"; then
2213 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2215 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2222 if test -n "$DJGPP"; then
2231 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2233 'not found') osvers="$4"."$3" ;;
2234 '<3240'|'<>3240') osvers=3.2.0 ;;
2235 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2236 '=3250'|'>3250') osvers=3.2.5 ;;
2240 bsd386) osname=bsd386
2243 cygwin*) osname=cygwin
2246 *dc.osx) osname=dcosx
2252 domainos) osname=apollo
2258 dynixptx*) osname=dynixptx
2259 osvers=`echo "$4"|sed 's/^v//'`
2261 freebsd) osname=freebsd
2263 genix) osname=genix ;;
2265 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2281 netbsd*) osname=netbsd
2284 news-os) osvers="$3"
2286 4*) osname=newsos4 ;;
2290 next*) osname=next ;;
2291 POSIX-BC | posix-bc ) osname=posix-bc
2294 powerux | power_ux | powermax_os | powermaxos | \
2295 powerunix | power_unix) osname=powerux
2301 solaris) osname=solaris
2303 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2310 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2314 titanos) osname=titanos
2323 ultrix) osname=ultrix
2326 osf1|mls+) case "$5" in
2329 osvers=`echo "$3" | sed 's/^[xvt]//'`
2331 hp*) osname=hp_osf1 ;;
2332 mips) osname=mips_osf1 ;;
2335 unixware) osname=svr5
2341 $2) case "$osname" in
2345 : svr4.x or possibly later
2355 if test -f /stand/boot ; then
2356 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2357 if test -n "$INITPROG" -a -f "$INITPROG"; then
2358 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2359 if test -n "$isesix"; then
2367 *) if test -f /etc/systemid; then
2369 set `echo $3 | $sed 's/\./ /g'` $4
2370 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2372 elif $test -f $src/hints/sco_$1_$2.sh; then
2374 elif $test -f $src/hints/sco_$1.sh; then
2379 '') : Still unknown. Probably a generic Sys V.
2388 *) case "$osname" in
2389 '') : Still unknown. Probably a generic BSD.
2397 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2398 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2399 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2402 $rm -f UU/kernel.what
2403 elif test -d c:/.; then
2410 : Now look for a hint file osname_osvers, unless one has been
2411 : specified already.
2414 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2415 : Also try without trailing minor version numbers.
2416 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2417 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2418 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2419 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2422 *) case "$osvers" in
2425 *) if $test -f $src/hints/$file.sh ; then
2427 elif $test -f $src/hints/$xfile.sh ; then
2429 elif $test -f $src/hints/$xxfile.sh ; then
2431 elif $test -f $src/hints/$xxxfile.sh ; then
2433 elif $test -f $src/hints/$xxxxfile.sh ; then
2435 elif $test -f "$src/hints/${osname}.sh" ; then
2444 if $test -f Policy.sh ; then
2447 none) dflt="Policy" ;;
2448 *) dflt="Policy $dflt" ;;
2453 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2457 if $test -f Policy.sh ; then
2460 There's also a Policy hint file available, which should make the
2461 site-specific (policy) questions easier to answer.
2468 You may give one or more space-separated answers, or "none" if appropriate.
2469 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2470 is a good thing. DO NOT give a wrong version or a wrong OS.
2474 rp="Which of these apply, if any?"
2477 for file in $tans; do
2478 if $test X$file = XPolicy -a -f Policy.sh; then
2480 $cat Policy.sh >> UU/config.sh
2481 elif $test -f $src/hints/$file.sh; then
2482 . $src/hints/$file.sh
2483 $cat $src/hints/$file.sh >> UU/config.sh
2484 elif $test X$tans = X -o X$tans = Xnone ; then
2487 : Give one chance to correct a possible typo.
2488 echo "$file.sh does not exist"
2490 rp="hint to use instead?"
2492 for file in $ans; do
2493 if $test -f "$src/hints/$file.sh"; then
2494 . $src/hints/$file.sh
2495 $cat $src/hints/$file.sh >> UU/config.sh
2496 elif $test X$ans = X -o X$ans = Xnone ; then
2499 echo "$file.sh does not exist -- ignored."
2506 : Remember our hint file for later.
2507 if $test -f "$src/hints/$file.sh" ; then
2517 echo "Fetching default answers from $config_sh..." >&4
2521 cp $config_sh config.sh 2>/dev/null
2531 test "$override" && . ./optdef.sh
2532 myuname="$newmyuname"
2534 : Restore computed paths
2535 for file in $loclist $trylist; do
2536 eval $file="\$_$file"
2541 Configure uses the operating system name and version to set some defaults.
2542 The default value is probably right if the name rings a bell. Otherwise,
2543 since spelling matters for me, either accept the default or answer "none"
2550 ''|' '|none) dflt=none ;;
2551 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2554 *) dflt="$osname" ;;
2556 rp="Operating system name?"
2560 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2566 ''|' '|none) dflt=none ;;
2567 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2568 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2570 ''|' ') dflt=none ;;
2575 *) dflt="$osvers" ;;
2577 rp="Operating system version?"
2587 : who configured the system
2588 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2589 cf_by=`(logname) 2>/dev/null`
2592 cf_by=`(whoami) 2>/dev/null`
2594 "") cf_by=unknown ;;
2598 : set up the script used to warn in case of inconsistency
2605 echo "*** WHOA THERE!!! ***" >&4
2606 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2607 rp=" Keep the $hint value?"
2610 y) td=$was; tu=$was;;
2614 : function used to set $1 to $val
2615 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2617 $define$undef) . ./whoa; eval "$var=\$td";;
2618 $undef$define) . ./whoa; eval "$var=\$tu";;
2619 *) eval "$var=$val";;
2622 case "$usethreads" in
2623 $define|true|[yY]*) dflt='y';;
2628 Perl can be built to take advantage of threads on some systems.
2629 To do so, Configure can be run with -Dusethreads.
2631 Note that threading is a highly experimental feature, and
2632 some known race conditions still remain. If you choose to try
2633 it, be very sure to not actually deploy it for production
2634 purposes. README.threads has more details, and is required
2635 reading if you enable threads.
2637 If this doesn't make any sense to you, just accept the default '$dflt'.
2639 rp='Build a threading Perl?'
2642 y|Y) val="$define" ;;
2648 case "$usethreads" in
2652 As of 5.5.640, Perl has two different internal threading implementations,
2653 the 5.005 version (5005threads) and an interpreter-based version
2654 (ithreads) that has one interpreter per thread. Both are very
2655 experimental. This arrangement exists to help developers work out
2656 which one is better.
2658 If you're a casual user, you probably don't want interpreter-threads
2659 at this time. There doesn't yet exist a way to create threads from
2660 within Perl in this model, i.e., "use Thread;" will NOT work.
2662 : Default to ithreads unless overridden on command line or with
2665 case "$use5005threads" in
2666 $define|true|[yY]*) dflt='n';;
2668 case "$useithreads" in
2669 $undef|false|[nN]*) dflt='n';;
2671 rp='Use interpreter-based ithreads?'
2674 y|Y) val="$define" ;;
2679 : Now set use5005threads to the opposite value.
2680 case "$useithreads" in
2681 $define) val="$undef" ;;
2688 useithreads="$undef"
2689 use5005threads="$undef"
2693 case "$d_oldpthreads" in
2694 '') : Configure tests would be welcome here. For now, assume undef.
2696 *) val="$d_oldpthreads" ;;
2702 case "$usethreads" in
2703 "$define"|true|[yY]*)
2704 : Look for a hint-file generated 'call-back-unit'. If the
2705 : user has specified that a threading perl is to be built,
2706 : we may need to set or change some other defaults.
2707 if $test -f usethreads.cbu; then
2708 echo "Your platform has some specific hints for threaded builds, using them..."
2712 (Your platform doesn't have any specific hints for threaded builds.
2713 Assuming POSIX threads, then.)
2721 Perl can be built so that multiple Perl interpreters can coexist
2722 within the same Perl executable.
2725 case "$useithreads" in
2728 This multiple interpreter support is required for interpreter-based threads.
2732 *) case "$usemultiplicity" in
2733 $define|true|[yY]*) dflt='y';;
2737 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2738 rp='Build Perl for multiplicity?'
2741 y|Y) val="$define" ;;
2749 : determine where manual pages are on this system
2753 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2754 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2755 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2756 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2757 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2758 sysman=`./loc . /usr/man/man1 $syspath`
2761 if $test -d "$sysman"; then
2762 echo "System manual is in $sysman." >&4
2764 echo "Could not find manual pages in source form." >&4
2767 : see what memory models we can support
2770 $cat >pdp11.c <<'EOP'
2779 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2780 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2781 dflt='unsplit split'
2783 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2786 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2791 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2794 if $test -d /lib/large || $test -d /usr/lib/large; then
2797 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2806 Some systems have different model sizes. On most systems they are called
2807 small, medium, large, and huge. On the PDP11 they are called unsplit and
2808 split. If your system doesn't support different memory models, say "none".
2809 If you wish to force everything to one memory model, say "none" here and
2810 put the appropriate flags later when it asks you for other cc and ld flags.
2811 Venix systems may wish to put "none" and let the compiler figure things out.
2812 (In the following question multiple model names should be space separated.)
2814 The default for most systems is "none".
2817 rp="Which memory models are supported?"
2832 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2833 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2840 rp="What flag indicates separate I and D space?"
2848 *large*|*small*|*medium*|*huge*)
2855 rp="What flag indicates large model?"
2865 *huge*) case "$huge" in
2869 rp="What flag indicates huge model?"
2879 *medium*) case "$medium" in
2883 rp="What flag indicates medium model?"
2890 *) medium="$large";;
2893 *small*) case "$small" in
2897 rp="What flag indicates small model?"
2908 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2911 $rm -f pdp11.* pdp11
2913 : make some quick guesses about what we are up against
2915 $echo $n "Hmm... $c"
2925 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2926 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2928 echo "Looks kind of like an OSF/1 system, but we'll see..."
2930 elif test `echo abc | tr a-z A-Z` = Abc ; then
2931 xxx=`./loc addbib blurfl $pth`
2932 if $test -f $xxx; then
2933 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2937 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2938 echo "Looks kind of like an extended USG system, but we'll see..."
2940 echo "Looks kind of like a USG system, but we'll see..."
2944 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2945 echo "Looks kind of like a BSD system, but we'll see..."
2949 echo "Looks kind of like a Version 7 system, but we'll see..."
2952 case "$eunicefix" in
2955 There is, however, a strange, musty smell in the air that reminds me of
2956 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2960 : it so happens the Eunice I know will not run shell scripts in Unix format
2964 echo "Congratulations. You aren't running Eunice."
2968 : Detect OS2. The p_ variable is set above in the Head.U unit.
2973 I have the feeling something is not exactly right, however...don't tell me...
2974 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2979 if test -f /xenix; then
2980 echo "Actually, this looks more like a XENIX system..."
2985 echo "It's not Xenix..."
2990 if test -f /venix; then
2991 echo "Actually, this looks more like a VENIX system..."
2998 echo "Nor is it Venix..."
3001 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3002 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3005 : see if we need a special compiler
3013 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3014 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3028 On some older systems the default C compiler will not resolve multiple global
3029 references that happen to have the same name. On some such systems the "Mcc"
3030 command may be used to force these to be resolved. On other systems a "cc -M"
3031 command is required. (Note that the -M flag on other systems indicates a
3032 memory model to use!) If you have the Gnu C compiler, you might wish to use
3038 rp="Use which C compiler?"
3046 rp="Use which C compiler?"
3050 : Look for a hint-file generated 'call-back-unit'. Now that the
3051 : user has specified the compiler, we may need to set or change some
3053 if $test -f cc.cbu; then
3057 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3058 $cat >gccvers.c <<EOM
3063 printf("%s\n", __VERSION__);
3065 printf("%s\n", "1");
3071 if $cc $ldflags -o gccvers gccvers.c; then
3072 gccversion=`./gccvers`
3073 case "$gccversion" in
3074 '') echo "You are not using GNU cc." ;;
3075 *) echo "You are using GNU cc $gccversion."
3080 echo "*** WHOA THERE!!! ***" >&4
3081 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3082 case "$knowitall" in
3084 echo " You'd better start hunting for one and let me know about it." >&4
3090 case "$gccversion" in
3091 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3094 : decide how portable to be. Allow command line overrides.
3095 case "$d_portable" in
3097 *) d_portable="$define" ;;
3100 : set up shell script to do ~ expansion
3106 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3109 if $test -f /bin/csh; then
3110 /bin/csh -f -c "glob \$1"
3115 name=\`$expr x\$1 : '..\([^/]*\)'\`
3116 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3117 if $test ! -d "\$dir"; then
3119 echo "\$me: can't locate home directory for: \$name" >&2
3124 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3140 : now set up to get a file name
3144 cat <<'EOSC' >>getfile
3160 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3161 fn=`echo $fn | sed 's/(.*)//'`
3167 loc_file=`expr $fn : '.*:\(.*\)'`
3168 fn=`expr $fn : '\(.*\):.*'`
3176 */*) fullpath=true;;
3185 *e*) exp_file=true;;
3188 *p*) nopath_ok=true;;
3193 *d*) type='Directory';;
3194 *l*) type='Locate';;
3199 Locate) what='File';;
3204 case "$d_portable" in
3212 while test "$type"; do
3217 true) rp="$rp (~name ok)";;
3220 if test -f UU/getfile.ok && \
3221 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3240 value=`UU/filexp $ans`
3243 if test "$ans" != "$value"; then
3244 echo "(That expands to $value on this system.)"
3258 /*) value="$ansexp" ;;
3263 echo "I shall only accept a full path name, as in /bin/ls." >&4
3264 echo "Use a ! shell escape if you wish to check pathnames." >&4
3267 echo "Please give a full path name, starting with slash." >&4
3270 echo "Note that using ~name is ok provided it expands well." >&4
3283 for fp in $gfpth; do
3284 if test "X$fp" = X.; then
3289 if test -f "$pf"; then
3291 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3293 echo "($value is not a plain file, but that's ok.)"
3296 if test X"$type" = X; then
3303 for fp in $gfpth; do
3304 if test "X$fp" = X.; then
3309 if test -d "$pf"; then
3317 if test -d "$ansexp"; then
3318 echo "(Looking for $loc_file in directory $value.)"
3319 value="$value/$loc_file"
3320 ansexp="$ansexp/$loc_file"
3322 if test -f "$ansexp"; then
3325 case "$nopath_ok" in
3326 true) case "$value" in
3328 *) echo "Assuming $value will be in people's path."
3344 if test "$fastread" = yes; then
3349 rp="$what $value doesn't exist. Use that name anyway?"
3368 test "X$gfpthkeep" != Xy && gfpth=""
3371 : What should the include directory be ?
3373 $echo $n "Hmm... $c"
3377 if $test -f /bin/mips && /bin/mips; then
3378 echo "Looks like a MIPS system..."
3379 $cat >usr.c <<'EOCP'
3380 #ifdef SYSTYPE_BSD43
3384 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3385 dflt='/bsd43/usr/include'
3389 mips_type='System V'
3391 $rm -f usr.c usr.out
3392 echo "and you're compiling with the $mips_type compiler and libraries."
3396 echo "Doesn't look like a MIPS system."
3406 case "$xxx_prompt" in
3409 rp='Where are the include files you want to use?'
3417 : see how we invoke the C preprocessor
3419 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3420 cat <<'EOT' >testcpp.c
3426 if test ! -f cppstdin; then
3427 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3428 # AIX cc -E doesn't show the absolute headerfile
3429 # locations but we'll cheat by using the -M flag.
3430 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
3432 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3435 echo "Keeping your $hint cppstdin wrapper."
3438 wrapper=`pwd`/cppstdin
3442 if $test "X$cppstdin" != "X" && \
3443 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3444 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3446 echo "You used to use $cppstdin $cppminus so we'll use that again."
3448 '') echo "But let's see if we can live without a wrapper..." ;;
3450 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3451 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3453 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3456 echo "(However, $cpprun $cpplast does not work, let's see...)"
3464 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3471 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3472 $cc -E <testcpp.c >testcpp.out 2>&1; \
3473 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3474 echo "Yup, it does."
3477 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3478 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3479 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3480 echo "Yup, it does."
3483 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3484 $cc -P <testcpp.c >testcpp.out 2>&1; \
3485 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3486 echo "Yipee, that works!"
3489 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3490 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3491 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3492 echo "At long last!"
3495 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3496 $cpp <testcpp.c >testcpp.out 2>&1; \
3497 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3501 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3502 $cpp - <testcpp.c >testcpp.out 2>&1; \
3503 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3504 echo "Hooray, it works! I was beginning to wonder."
3507 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3508 $wrapper <testcpp.c >testcpp.out 2>&1; \
3509 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3515 rp="No dice. I can't find a C preprocessor. Name one:"
3519 $x_cpp <testcpp.c >testcpp.out 2>&1
3520 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3521 echo "OK, that will do." >&4
3523 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3538 echo "Perhaps can we force $cc -E using a wrapper..."
3539 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3540 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3546 echo "Nope, we'll have to live without it..."
3560 "$wrapper"|'cppstdin') ;;
3561 *) $rm -f $wrapper;;
3563 $rm -f testcpp.c testcpp.out
3565 : Set private lib path
3568 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3573 '') dlist="$loclibpth $plibpth $glibpth";;
3574 *) dlist="$libpth";;
3577 : Now check and see which directories actually exist, avoiding duplicates
3581 if $test -d $xxx; then
3584 *) libpth="$libpth $xxx";;
3590 Some systems have incompatible or broken versions of libraries. Among
3591 the directories listed in the question below, please remove any you
3592 know not to be holding relevant libraries, and add any that are needed.
3593 Say "none" for none.
3604 rp="Directories to use for library searches?"
3611 : compute shared library extension
3614 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3624 On some systems, shared libraries may be available. Answer 'none' if
3625 you want to suppress searching of shared libraries for the remainder
3626 of this configuration.
3629 rp='What is the file extension used for shared libraries?'
3633 : Define several unixisms.
3634 : Hints files or command line option can be used to override them.
3635 : The convoluted testing is in case hints files set either the old
3638 '') case "$exe_ext" in
3640 *) _exe="$exe_ext" ;;
3645 '') case "$lib_ext" in
3652 '') case "$obj_ext" in
3659 '') case "$path_sep" in
3670 : Which makefile gets called first. This is used by make depend.
3671 case "$firstmakefile" in
3672 '') firstmakefile='makefile';;
3676 $define|true|[yY]*) dflt='y';;
3681 Perl can be built to use the SOCKS proxy protocol library. To do so,
3682 Configure must be run with -Dusesocks.
3684 If this doesn't make any sense to you, just accept the default '$dflt'.
3686 rp='Build Perl for SOCKS?'
3689 y|Y) val="$define" ;;
3695 : Looking for optional libraries
3697 echo "Checking for optional libraries..." >&4
3702 case "$libswanted" in
3703 '') libswanted='c_s';;
3707 libswanted="$libswanted socks5 socks5_sh"
3714 for thisdir in $libpth $xlibpth; do
3715 test -d $thisdir && libspath="$libspath $thisdir"
3717 for thislib in $libswanted; do
3718 for thisdir in $libspath; do
3720 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3721 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3722 $test -f "$xxx" && eval $libscheck
3723 $test -f "$xxx" && libstyle=shared
3725 if test ! -f "$xxx"; then
3726 xxx=$thisdir/lib$thislib.$so
3727 $test -f "$xxx" && eval $libscheck
3728 $test -f "$xxx" && libstyle=shared
3730 if test ! -f "$xxx"; then
3731 xxx=$thisdir/lib$thislib$_a
3732 $test -f "$xxx" && eval $libscheck
3733 $test -f "$xxx" && libstyle=static
3735 if test ! -f "$xxx"; then
3736 xxx=$thisdir/$thislib$_a
3737 $test -f "$xxx" && eval $libscheck
3738 $test -f "$xxx" && libstyle=static
3740 if test ! -f "$xxx"; then
3741 xxx=$thisdir/lib${thislib}_s$_a
3742 $test -f "$xxx" && eval $libscheck
3743 $test -f "$xxx" && libstyle=static
3744 $test -f "$xxx" && thislib=${thislib}_s
3746 if test ! -f "$xxx"; then
3747 xxx=$thisdir/Slib$thislib$_a
3748 $test -f "$xxx" && eval $libscheck
3749 $test -f "$xxx" && libstyle=static
3751 if $test -f "$xxx"; then
3753 shared) echo "Found -l$thislib (shared)." ;;
3754 static) echo "Found -l$thislib." ;;
3755 *) echo "Found -l$thislib ($libstyle)." ;;
3759 *) dflt="$dflt -l$thislib"
3760 libsfound="$libsfound $xxx"
3762 libsfiles="$libsfiles $yyy"
3763 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3764 case " $libsdirs " in
3766 *) libsdirs="$libsdirs $yyy" ;;
3773 if $test ! -f "$xxx"; then
3774 echo "No -l$thislib."
3785 ' '|'') dflt='none';;
3790 In order to compile $package on your machine, a number of libraries
3791 are usually needed. Include any other special libraries here as well.
3792 Say "none" for none. The default list is almost always right.
3796 rp="What libraries to use?"
3803 : determine optimization, if desired, or use for debug flag also
3805 ' '|$undef) dflt='none';;
3807 *) dflt="$optimize";;
3811 By default, $package compiles with the -O flag to use the optimizer.
3812 Alternately, you might want to use the symbolic debugger, which uses
3813 the -g flag (on traditional Unix systems). Either flag can be
3814 specified here. To use neither flag, specify the word "none".
3817 rp="What optimizer/debugger flag should be used?"
3821 'none') optimize=" ";;
3825 : We will not override a previous value, but we might want to
3826 : augment a hint file
3828 default|recommended)
3829 case "$gccversion" in
3830 1*) dflt='-fpcc-struct-return' ;;
3833 *-g*) dflt="$dflt -DDEBUGGING";;
3835 case "$gccversion" in
3836 2*) if test -d /etc/conf/kconfig.d &&
3837 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3843 case "$gccversion" in
3847 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3848 echo 'int main(void) { return 0; }' > gcctest.c
3849 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3850 echo "Yes, it does." 2>&1
3853 echo "Leaving current flags $ccflags alone." 2>&1
3855 *) dflt="$dflt -fno-strict-aliasing" ;;
3858 echo "Nope, it doesn't, but that's ok." 2>&1
3865 case "$mips_type" in
3866 *BSD*|'') inclwanted="$locincpth $usrinc";;
3867 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3869 for thisincl in $inclwanted; do
3870 if $test -d $thisincl; then
3871 if $test x$thisincl != x$usrinc; then
3874 *) dflt="$dflt -I$thisincl";;
3880 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3882 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3890 *) dflt="$dflt -D$2";;
3894 set signal.h LANGUAGE_C; eval $inctest
3898 ccflags="$ccflags -DSOCKS"
3903 default|recommended) dflt="$ccflags $dflt" ;;
3904 *) dflt="$ccflags";;
3912 Your C compiler may want other flags. For this question you should include
3913 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3914 but you should NOT include libraries or ld flags like -lwhatever. If you
3915 want $package to honor its debug switch, you should include -DDEBUGGING here.
3916 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3918 To use no flags, specify the word "none".
3924 rp="Any additional cc flags?"
3931 : the following weeds options from ccflags that are of no interest to cpp
3933 case "$gccversion" in
3934 1*) cppflags="$cppflags -D__GNUC__"
3936 case "$mips_type" in
3938 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3944 echo "Let me guess what the preprocessor flags are..." >&4
3958 *) ftry="$previous $flag";;
3960 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3961 >cpp1.out 2>/dev/null && \
3962 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3963 >cpp2.out 2>/dev/null && \
3964 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3965 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3967 cppflags="$cppflags $ftry"
3977 *-*) echo "They appear to be: $cppflags";;
3979 $rm -f cpp.c cpp?.out
3983 : flags used in final linking phase
3985 '') if ./venix; then
3991 *-posix*) dflt="$dflt -posix" ;;
3994 *) dflt="$ldflags";;
3997 : Try to guess additional flags to pick up local libraries.
3998 for thislibdir in $libpth; do
3999 case " $loclibpth " in
4002 *"-L$thislibdir "*) ;;
4003 *) dflt="$dflt -L$thislibdir" ;;
4015 Your C linker may need flags. For this question you should
4016 include -L/whatever and any other flags used by the C linker, but you
4017 should NOT include libraries like -lwhatever.
4019 Make sure you include the appropriate -L/path flags if your C linker
4020 does not normally search all of the directories you specified above,
4023 To use no flags, specify the word "none".
4027 rp="Any additional ld flags (NOT including libraries)?"
4033 rmlist="$rmlist pdp11"
4037 echo "Checking your choice of C compiler and flags for coherency..." >&4
4038 $cat > try.c <<'EOF'
4040 int main() { printf("Ok\n"); exit(0); }
4042 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4044 $cat >try.msg <<'EOM'
4045 I've tried to compile and run the following simple program:
4048 $cat try.c >> try.msg
4050 $cat >> try.msg <<EOM
4057 and I got the following output:
4061 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4062 if sh -c './try' >>try.msg 2>&1; then
4066 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4069 cat >> try.msg <<'EOQS'
4070 If $libs contains -lsfio, and sfio is mis-configured, then it
4071 sometimes (apparently) runs and exits with a 0 status, but with no
4072 output! It may have to do with sfio's use of _exit vs. exit.
4075 rp="You have a big problem. Shall I abort Configure"
4082 echo "The program compiled OK, but exited with status $?." >>try.msg
4083 rp="You have a problem. Shall I abort Configure"
4087 echo "I can't compile the test program." >>try.msg
4088 rp="You have a BIG problem. Shall I abort Configure"
4094 case "$knowitall" in
4096 echo "(The supplied flags or libraries might be incorrect.)"
4104 *) echo "Ok. Stopping Configure." >&4
4109 n) echo "OK, that should do.";;
4111 $rm -f try try.* core
4113 : define an is-a-typedef? function
4114 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4116 "") inclist="sys/types.h";;
4118 eval "varval=\$$var";
4122 for inc in $inclist; do
4123 echo "#include <$inc>" >>temp.c;
4125 echo "#ifdef $type" >> temp.c;
4126 echo "printf(\"We have $type\");" >> temp.c;
4127 echo "#endif" >> temp.c;
4128 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4129 if $contains $type temp.E >/dev/null 2>&1; then
4135 *) eval "$var=\$varval";;
4138 : define an is-a-typedef? function that prompts if the type is not available.
4139 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4141 "") inclist="sys/types.h";;
4143 eval "varval=\$$var";
4147 for inc in $inclist; do
4148 echo "#include <$inc>" >>temp.c;
4150 echo "#ifdef $type" >> temp.c;
4151 echo "printf(\"We have $type\");" >> temp.c;
4152 echo "#endif" >> temp.c;
4153 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4155 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4156 if $contains $type temp.E >/dev/null 2>&1; then
4157 echo "$type found." >&4;
4160 echo "$type NOT found." >&4;
4166 *) eval "$var=\$varval";;
4169 : define a shorthand compile call
4173 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4174 : define a shorthand compile call for compilations that should be ok.
4178 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4180 : check for lengths of integral types
4184 echo "Checking to see how big your integers are..." >&4
4185 $cat >intsize.c <<'EOCP'
4189 printf("intsize=%d;\n", (int)sizeof(int));
4190 printf("longsize=%d;\n", (int)sizeof(long));
4191 printf("shortsize=%d;\n", (int)sizeof(short));
4196 if eval $compile_ok && ./intsize > /dev/null; then
4198 echo "Your integers are $intsize bytes long."
4199 echo "Your long integers are $longsize bytes long."
4200 echo "Your short integers are $shortsize bytes long."
4204 Help! I can't compile and run the intsize test program: please enlighten me!
4205 (This is probably a misconfiguration in your system or libraries, and
4206 you really ought to fix it. Still, I'll try anyway.)
4210 rp="What is the size of an integer (in bytes)?"
4214 rp="What is the size of a long integer (in bytes)?"
4218 rp="What is the size of a short integer (in bytes)?"
4224 $rm -f intsize intsize.*
4226 : see what type lseek is declared as in the kernel
4227 rp="What is the type used for lseek's offset on this system?"
4228 set off_t lseektype long stdio.h sys/types.h
4232 echo "Checking to see how big your file offsets are..." >&4
4234 #include <sys/types.h>
4238 printf("%d\n", (int)sizeof($lseektype));
4243 if eval $compile_ok; then
4245 echo "Your file offsets are $lseeksize bytes long."
4249 echo "(I can't seem to compile the test program. Guessing...)"
4250 rp="What is the size of your file offsets (in bytes)?"
4256 : see what type file positions are declared as in the library
4257 rp="What is the type for file position used by fsetpos()?"
4258 set fpos_t fpostype long stdio.h sys/types.h
4263 *_t) zzz="$fpostype" ;;
4266 echo "Checking the size of $zzz..." >&4
4268 #include <sys/types.h>
4271 printf("%d\n", (int)sizeof($fpostype));
4276 if eval $compile_ok; then
4280 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4283 echo "Your $zzz is $fpossize bytes long."
4289 echo "(I can't compile the test program. Guessing...)" >&4
4290 rp="What is the size of your file positions (in bytes)?"
4297 # Backward compatibility (uselfs is deprecated).
4299 "$define"|true|[yY]*)
4302 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4304 uselargefiles="$define"
4308 case "$lseeksize:$fpossize" in
4311 You can have files larger than 2 gigabytes.
4314 *) case "$uselargefiles" in
4315 "$undef"|false|[nN]*) dflt='n' ;;
4320 Perl can be built to understand large files (files larger than 2 gigabytes)
4321 on some systems. To do so, Configure can be run with -Duselargefiles.
4323 If this doesn't make any sense to you, just accept the default '$dflt'.
4325 rp='Try to understand large files, if available?'
4328 y|Y) val="$define" ;;
4335 case "$uselargefiles" in
4337 : Look for a hint-file generated 'call-back-unit'. If the
4338 : user has specified that a large files perl is to be built,
4339 : we may need to set or change some other defaults.
4340 if $test -f uselfs.cbu; then
4341 echo "Your platform has some specific hints for large file builds, using them..."
4344 echo "Rechecking to see how big your file offsets are..." >&4
4346 #include <sys/types.h>
4350 printf("%d\n", (int)sizeof($lseektype));
4355 if eval $compile_ok; then
4357 $echo "Your file offsets are now $lseeksize bytes long."
4361 echo "(I can't seem to compile the test program. Guessing...)"
4362 rp="What is the size of your file offsets (in bytes)?"
4367 *_t) zzz="$fpostype" ;;
4370 $echo $n "Rechecking the size of $zzz...$c" >&4
4372 #include <sys/types.h>
4375 printf("%d\n", (int)sizeof($fpostype));
4380 if eval $compile_ok; then
4385 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4388 echo " $fpossize bytes." >&4
4394 echo "(I can't compile the test program. Guessing...)" >&4
4395 rp="What is the size of your file positions (in bytes)?"
4405 case "$usemorebits" in
4406 "$define"|true|[yY]*)
4407 use64bitint="$define"
4408 uselongdouble="$define"
4409 usemorebits="$define"
4411 *) usemorebits="$undef"
4416 # Backward compatibility (uselonglong is deprecated).
4417 case "$uselonglong" in
4418 "$define"|true|[yY]*)
4421 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4423 use64bitint="$define"
4426 # Backward compatibility (use64bits is deprecated).
4427 case "$use64bits" in
4428 "$define"|true|[yY]*)
4431 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4433 use64bitint="$define"
4436 # Thinko compatibilities.
4437 case "$use64bitints" in
4438 "$define"|true|[yY]*)
4441 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4443 use64bitint="$define"
4446 case "$use64bitsall" in
4447 "$define"|true|[yY]*)
4450 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4452 use64bitall="$define"
4457 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4459 case "$use64bitall" in
4460 "$define"|true|[yY]*) use64bitint="$define" ;;
4466 You have natively 64-bit long integers.
4470 *) case "$use64bitint" in
4471 "$define"|true|[yY]*) dflt='y';;
4476 Perl can be built to take advantage of 64-bit integer types
4477 on some systems. To do so, Configure can be run with -Duse64bitint.
4478 Choosing this option will most probably introduce binary incompatibilities.
4480 If this doesn't make any sense to you, just accept the default '$dflt'.
4482 rp='Try to use 64-bit integers, if available?'
4485 [yY]*) val="$define" ;;
4493 case "$use64bitint" in
4494 "$define") case "$longsize" in
4499 *) case "$use64bitall" in
4500 "$define"|true|[yY]*) dflt='y' ;;
4507 You may also choose to try maximal 64-bitness. It means using as much
4508 64-bitness as possible on the platform. This in turn means even more
4509 binary incompatibilities. On the other hand, your platform may not
4510 have any more 64-bitness available than what you already have chosen.
4512 If this doesn't make any sense to you, just accept the default '$dflt'.
4514 rp='Try to use maximal 64-bit support, if available?'
4517 [yY]*) val="$define" ;;
4522 case "$use64bitall" in
4524 case "$use64bitint" in
4528 Since you have chosen a maximally 64-bit build, I'm also turning on
4529 the use of 64-bit integers.
4531 use64bitint="$define" ;;
4536 case "$use64bitint" in
4537 "$define"|true|[yY]*)
4538 : Look for a hint-file generated 'call-back-unit'. If the
4539 : user has specified that a 64-bit perl is to be built,
4540 : we may need to set or change some other defaults.
4541 if $test -f use64bitint.cbu; then
4542 echo "Your platform has some specific hints for 64-bit integers, using them..."
4546 4) case "$ccflags" in
4547 *-DUSE_64_BIT_INT*) ;;
4548 *) ccflags="$ccflags -DUSE_64_BIT_INT";;
4550 case "$archname64" in
4551 '') archname64=64int ;;
4558 case "$use64bitall" in
4559 "$define"|true|[yY]*)
4560 : Look for a hint-file generated 'call-back-unit'. If the
4561 : user has specified that a maximally 64-bit perl is to be built,
4562 : we may need to set or change some other defaults.
4563 if $test -f use64bitall.cbu; then
4564 echo "Your platform has some specific hints for 64-bit builds, using them..."
4568 4) case "$ccflags" in
4569 *-DUSE_64_BIT_ALL*) ;;
4570 *) ccflags="$ccflags -DUSE_64_BIT_ALL";;
4572 case "$archname64" in
4573 ''|64int) archname64=64all ;;
4580 : determine the architecture name
4582 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4583 tarch=`arch`"-$osname"
4584 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4585 if uname -m > tmparch 2>&1 ; then
4586 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4587 -e 's/$/'"-$osname/" tmparch`
4595 case "$myarchname" in
4598 echo "(Your architecture name used to be $myarchname.)"
4605 *) dflt="$archname";;
4607 rp='What is your architecture name'
4610 case "$usethreads" in
4612 echo "Threads selected." >&4
4614 *-thread*) echo "...and architecture name already has -thread." >&4
4616 *) archname="$archname-thread"
4617 echo "...setting architecture name to $archname." >&4
4622 case "$usemultiplicity" in
4624 echo "Multiplicity selected." >&4
4626 *-multi*) echo "...and architecture name already has -multi." >&4
4628 *) archname="$archname-multi"
4629 echo "...setting architecture name to $archname." >&4
4634 case "$use64bitint" in
4636 case "$archname64" in
4641 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4643 *) archname="$archname-$archname64"
4644 echo "...setting architecture name to $archname." >&4
4651 : determine root of directory hierarchy where package will be installed.
4654 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4662 By default, $package will be installed in $dflt/bin, manual pages
4663 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4664 installation directories. Typically this is something like /usr/local.
4665 If you wish to have binaries under /usr/bin but other parts of the
4666 installation under /usr/local, that's ok: you will be prompted
4667 separately for each of the installation directories, the prefix being
4668 only used to set the defaults.
4672 rp='Installation prefix to use?'
4680 *) oldprefix="$prefix";;
4690 $define|true) afs=true ;;
4691 $undef|false) afs=false ;;
4692 *) if test -d /afs; then
4700 echo "AFS may be running... I'll be extra cautious then..." >&4
4702 echo "AFS does not seem to be running..." >&4
4705 : determine installation prefix for where package is to be installed.
4709 Since you are running AFS, I need to distinguish the directory in which
4710 files will reside from the directory in which they are installed (and from
4711 which they are presumably copied to the former directory by occult means).
4714 case "$installprefix" in
4715 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4716 *) dflt="$installprefix";;
4721 In some special cases, particularly when building $package for distribution,
4722 it is convenient to distinguish between the directory in which files should
4723 be installed from the directory ($prefix) in which they
4724 will eventually reside. For most users, these two directories are the same.
4727 case "$installprefix" in
4729 *) dflt=$installprefix;;
4733 rp='What installation prefix should I use for installing files?'
4735 installprefix="$ans"
4736 installprefixexp="$ansexp"
4738 : set the prefixit variable, to compute a suitable default value
4739 prefixit='case "$3" in
4741 case "$oldprefix" in
4742 "") eval "$1=\"\$$2\"";;
4749 ""|" ") eval "$1=\"\$$2\"";;
4755 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4757 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4758 /*-$oldprefix/*|\~*-$oldprefix/*)
4759 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4760 *) eval "$1=\"\$$2\"";;
4765 : get the patchlevel
4767 echo "Getting the current patchlevel..." >&4
4768 if $test -r $rsrc/patchlevel.h;then
4769 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4770 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4771 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4772 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4773 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4774 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4783 $echo $n "(You have $package revision $revision" $c
4784 $echo $n " patchlevel $patchlevel" $c
4785 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4789 : XXX Should be a Configure test for double-dots in filenames.
4790 version=`echo $revision $patchlevel $subversion | \
4791 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4792 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4793 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4796 version=`echo $revision $patchlevel $subversion | \
4797 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4798 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4799 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4802 : Special case the 5.005_xx maintenance series, which used 5.005
4803 : without any subversion label as a subdirectory in $sitelib
4804 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4805 api_versionstring='5.005'
4808 : determine installation style
4809 : For now, try to deduce it from prefix unless it is already set.
4810 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4811 case "$installstyle" in
4812 '') case "$prefix" in
4813 *perl*) dflt='lib';;
4814 *) dflt='lib/perl5' ;;
4817 *) dflt='lib/perl5' ;;
4819 : Probably not worth prompting for this since we prompt for all
4820 : the directories individually, and the prompt would be too long and
4824 : determine where private library files go
4825 : Usual default is /usr/local/lib/perl5/$version.
4826 : Also allow things like /opt/perl/lib/$version, since
4827 : /opt/perl/lib/perl5... would be redundant.
4828 : The default "style" setting is made in installstyle.U
4829 case "$installstyle" in
4830 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4831 *) set dflt privlib lib/$version ;;
4836 There are some auxiliary files for $package that need to be put into a
4837 private library directory that is accessible by everyone.
4841 rp='Pathname where the private library files will reside?'
4844 privlibexp="$ansexp"
4845 : Change installation prefix, if necessary.
4846 if $test X"$prefix" != X"$installprefix"; then
4847 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4849 installprivlib="$privlibexp"
4852 : set the prefixup variable, to restore leading tilda escape
4853 prefixup='case "$prefixexp" in
4855 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4858 : determine where public architecture dependent libraries go
4861 : privlib default is /usr/local/lib/$package/$version
4862 : archlib default is /usr/local/lib/$package/$version/$archname
4863 : privlib may have an optional trailing /share.
4864 tdflt=`echo $privlib | $sed 's,/share$,,'`
4865 tdflt=$tdflt/$archname
4874 $spackage contains architecture-dependent library files. If you are
4875 sharing libraries in a heterogeneous environment, you might store
4876 these files in a separate location. Otherwise, you can just include
4877 them with the rest of the public library files.
4881 rp='Where do you want to put the public architecture-dependent libraries?'
4884 archlibexp="$ansexp"
4885 if $test X"$archlib" = X"$privlib"; then
4890 : Change installation prefix, if necessary.
4891 if $test X"$prefix" != X"$installprefix"; then
4892 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4894 installarchlib="$archlibexp"
4898 : Binary compatibility with 5.005 is not possible for builds
4899 : with advanced features
4900 case "$usethreads$usemultiplicity" in
4902 bincompat5005="$undef"
4903 d_bincompat5005="$undef"
4907 Perl 5.006 can be compiled for binary compatibility with 5.005.
4908 If you decide to do so, you will be able to continue using most
4909 of the extensions that were compiled for Perl 5.005.
4912 case "$bincompat5005$d_bincompat5005" in
4913 *"$undef"*) dflt=n ;;
4916 rp='Binary compatibility with Perl 5.005?'
4919 y*) val="$define" ;;
4924 case "$d_bincompat5005" in
4926 bincompat5005="$define"
4928 *) bincompat5005="$undef"
4929 d_bincompat5005="$undef"
4936 : see if setuid scripts can be secure
4939 Some kernels have a bug that prevents setuid #! scripts from being
4940 secure. Some sites have disabled setuid #! scripts because of this.
4942 First let's decide if your kernel supports secure setuid #! scripts.
4943 (If setuid #! scripts would be secure but have been disabled anyway,
4944 don't say that they are secure if asked.)
4949 if $test -d /dev/fd; then
4950 echo "#!$ls" >reflect
4951 chmod +x,u+s reflect
4952 ./reflect >flect 2>&1
4953 if $contains "/dev/fd" flect >/dev/null; then
4954 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4958 If you are not sure if they are secure, I can check but I'll need a
4959 username and password different from the one you are using right now.
4960 If you don't have such a username or don't want me to test, simply
4964 rp='Other username to test security of setuid scripts with?'
4969 case "$d_suidsafe" in
4970 '') echo "I'll assume setuid scripts are *not* secure." >&4
4973 echo "Well, the $hint value is *not* secure." >&4
4975 *) echo "Well, the $hint value *is* secure." >&4
4980 $rm -f reflect flect
4981 echo "#!$ls" >reflect
4982 chmod +x,u+s reflect
4985 echo '"su" will (probably) prompt you for '"$ans's password."
4986 su $ans -c './reflect >flect'
4987 if $contains "/dev/fd" flect >/dev/null; then
4988 echo "Okay, it looks like setuid scripts are secure." >&4
4991 echo "I don't think setuid scripts are secure." >&4
4996 rp='Does your kernel have *secure* setuid scripts?'
4999 [yY]*) val="$define";;
5004 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5005 echo "(That's for file descriptors, not floppy disks.)"
5011 $rm -f reflect flect
5013 : now see if they want to do setuid emulation
5016 case "$d_suidsafe" in
5019 echo "No need to emulate SUID scripts since they are secure here." >& 4
5023 Some systems have disabled setuid scripts, especially systems where
5024 setuid scripts cannot be secure. On systems where setuid scripts have
5025 been disabled, the setuid/setgid bits on scripts are currently
5026 useless. It is possible for $package to detect those bits and emulate
5027 setuid/setgid in a secure fashion. This emulation will only work if
5028 setuid scripts have been disabled in your kernel.
5032 "$define") dflt=y ;;
5035 rp="Do you want to do setuid/setgid emulation?"
5038 [yY]*) val="$define";;
5046 : determine filename position in cpp output
5048 echo "Computing filename position in cpp output for #include directives..." >&4
5049 echo '#include <stdio.h>' > foo.c
5052 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5053 $grep '^[ ]*#.*stdio\.h' | \
5054 while read cline; do
5057 while $test \$# -gt 0; do
5058 if $test -r \`echo \$1 | $tr -d '"'\`; then
5063 pos=\`expr \$pos + 1\`
5075 *) pos="${fieldn}th";;
5077 echo "Your cpp writes the filename in the $pos field of the line."
5079 : locate header file
5084 for usrincdir in $usrinc
5086 if test -f \$usrincdir/\$wanted; then
5087 echo "\$usrincdir/\$wanted"
5091 awkprg='{ print \$$fieldn }'
5092 echo "#include <\$wanted>" > foo\$\$.c
5093 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5094 $grep "^[ ]*#.*\$wanted" | \
5095 while read cline; do
5096 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5098 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5099 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5104 # status = 0: grep returned 0 lines, case statement not executed
5105 # status = 1: headerfile found
5106 # status = 2: while loop executed, no headerfile found
5110 if test \$status -eq 1; then
5117 : define an alternate in-header-list? function
5118 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5119 cont=true; xxf="echo \"<\$1> found.\" >&4";
5120 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5121 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5123 case $# in 4) instead=instead;; *) instead="at last";; esac;
5124 while $test "$cont"; do
5126 var=$2; eval "was=\$$2";
5127 if $test "$xxx" && $test -r "$xxx";
5129 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5132 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5133 set $yyy; shift; shift; yyy=$@;
5134 case $# in 0) cont="";;
5135 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5136 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5137 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5138 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5142 do set $yyy; var=$2; eval "was=\$$2";
5143 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5144 set $yyy; shift; shift; yyy=$@;
5147 : see if this is a malloc.h system
5148 set malloc.h i_malloc
5151 : see if stdlib is available
5152 set stdlib.h i_stdlib
5155 : determine which malloc to compile in
5157 case "$usemymalloc" in
5158 ''|[yY]*|true|$define) dflt='y' ;;
5161 rp="Do you wish to attempt to use the malloc that comes with $package?"
5167 mallocsrc='malloc.c'
5168 mallocobj="malloc$_o"
5169 d_mymalloc="$define"
5172 : Remove malloc from list of libraries to use
5173 echo "Removing unneeded -lmalloc from library list" >&4
5174 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5177 echo "libs = $libs" >&4
5189 : compute the return types of malloc and free
5191 $cat >malloc.c <<END
5195 #include <sys/types.h>
5209 case "$malloctype" in
5211 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5218 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5222 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5229 echo "Your system uses $freetype free(), it would seem." >&4
5233 The installation process will also create a directory for
5234 vendor-supplied add-ons. Vendors who supply perl with their system
5235 may find it convenient to place all vendor-supplied files in this
5236 directory rather than in the main distribution directory. This will
5237 ease upgrades between binary-compatible maintenance versions of perl.
5239 Of course you may also use these directories in whatever way you see
5240 fit. For example, you might use them to access modules shared over a
5241 company-wide network.
5243 The default answer should be fine for most people.
5244 This causes further questions about vendor add-ons to be skipped
5245 and no vendor-specific directories will be configured for perl.
5248 rp='Do you want to configure vendor-specific add-on directories?'
5249 case "$usevendorprefix" in
5250 define|true|[yY]*) dflt=y ;;
5251 *) : User may have set vendorprefix directly on Configure command line.
5252 case "$vendorprefix" in
5261 rp='Installation prefix to use for vendor-supplied add-ons?'
5262 case "$vendorprefix" in
5264 *) dflt=$vendorprefix ;;
5267 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5269 case "$vendorprefix" in
5273 *) oldvendorprefix="$prefix";;
5277 usevendorprefix="$define"
5279 vendorprefixexp="$ansexp"
5281 *) usevendorprefix="$undef"
5287 case "$vendorprefix" in
5288 '') d_vendorlib="$undef"
5292 *) d_vendorlib="$define"
5293 : determine where vendor-supplied modules go.
5294 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5295 case "$vendorlib" in
5297 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5298 case "$installstyle" in
5299 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5300 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5303 *) dflt="$vendorlib"
5307 rp='Pathname for the vendor-supplied library files?'
5310 vendorlibexp="$ansexp"
5313 : Change installation prefix, if necessary.
5314 if $test X"$prefix" != X"$installprefix"; then
5315 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5317 installvendorlib="$vendorlibexp"
5320 : Cruising for prototypes
5322 echo "Checking out function prototypes..." >&4
5323 $cat >prototype.c <<'EOCP'
5324 int main(int argc, char *argv[]) {
5327 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5328 echo "Your C compiler appears to support function prototypes."
5331 echo "Your C compiler doesn't seem to understand function prototypes."
5338 case "$prototype" in
5340 *) ansi2knr='ansi2knr'
5345 This version of $package can only be compiled by a compiler that
5346 understands function prototypes. Unfortunately, your C compiler
5348 doesn't seem to understand them. Sorry about that.
5350 If GNU cc is available for your system, perhaps you could try that instead.
5352 Eventually, we hope to support building Perl with pre-ANSI compilers.
5353 If you would like to help in that effort, please contact <perlbug@perl.org>.
5355 Aborting Configure now.
5361 : determine where public executables go
5366 rp='Pathname where the public executables will reside?'
5368 if $test "X$ansexp" != "X$binexp"; then
5373 : Change installation prefix, if necessary.
5374 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5375 if $test X"$prefix" != X"$installprefix"; then
5376 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5378 installbin="$binexp"
5381 : Find perl5.005 or later.
5382 echo "Looking for a previously installed perl5.005 or later... "
5384 '') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5385 : Check if this perl is recent and can load a simple module
5386 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5389 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5399 '') echo "None found. That's ok.";;
5400 *) echo "Using $perl5." ;;
5405 After $package is installed, you may wish to install various
5406 add-on modules and utilities. Typically, these add-ons will
5407 be installed under $prefix with the rest
5408 of this package. However, you may wish to install such add-ons
5409 elsewhere under a different prefix.
5411 If you do not wish to put everything under a single prefix, that's
5412 ok. You will be prompted for the individual locations; this siteprefix
5413 is only used to suggest the defaults.
5415 The default should be fine for most people.
5419 rp='Installation prefix to use for add-on modules and utilities?'
5420 : XXX Here might be another good place for an installstyle setting.
5421 case "$siteprefix" in
5423 *) dflt=$siteprefix ;;
5426 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5428 case "$siteprefix" in
5432 *) oldsiteprefix="$prefix";;
5437 siteprefixexp="$ansexp"
5439 : determine where site specific libraries go.
5440 : Usual default is /usr/local/lib/perl5/site_perl/$version
5441 : The default "style" setting is made in installstyle.U
5442 : XXX No longer works with Prefixit stuff.
5443 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5445 '') case "$installstyle" in
5446 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5447 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5455 The installation process will create a directory for
5456 site-specific extensions and modules. Most users find it convenient
5457 to place all site-specific files in this directory rather than in the
5458 main distribution directory.
5462 rp='Pathname for the site-specific library files?'
5465 sitelibexp="$ansexp"
5466 : Change installation prefix, if necessary.
5467 if $test X"$prefix" != X"$installprefix"; then
5468 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5470 installsitelib="$sitelibexp"
5473 : Determine list of previous versions to include in @INC
5474 $cat > getverlist <<EOPL
5477 \$api_versionstring = "$api_versionstring";
5478 \$version = "$version";
5479 \$sitelib = "$sitelib";
5480 \$archname = "$archname";
5482 $cat >> getverlist <<'EOPL'
5483 # Can't have leading @ because metaconfig interprets it as a command!
5484 ;@inc_version_list=();
5485 $stem=dirname($sitelib);
5486 # XXX Redo to do opendir/readdir?
5489 ;@candidates = glob("5.*");
5495 # XXX ToDo: These comparisons must be reworked when two-digit
5496 # subversions come along, so that 5.7.10 compares as greater than
5497 # 5.7.3! By that time, hope that 5.6.x is sufficiently
5498 # widespread that we can use the built-in version vectors rather
5499 # than reinventing them here. For 5.6.0, however, we must
5500 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
5501 foreach $d (@candidates) {
5502 if ($d lt $version) {
5503 if ($d ge $api_versionstring) {
5504 unshift(@inc_version_list, "$d/$archname", $d);
5506 elsif ($d ge "5.005") {
5507 unshift(@inc_version_list, $d);
5511 # Skip newer version. I.e. don't look in
5512 # 5.7.0 if we're installing 5.6.1.
5516 if (@inc_version_list) {
5517 print join(' ', @inc_version_list);
5520 # Blank space to preserve value for next Configure run.
5525 case "$inc_version_list" in
5526 '') if test -x "$perl5"; then
5527 dflt=`$perl5 getverlist`
5532 $undef) dflt='none' ;;
5533 *) dflt="$inc_version_list" ;;
5536 ''|' ') dflt=none ;;
5540 In order to ease the process of upgrading, this version of perl
5541 can be configured to use modules built and installed with earlier
5542 versions of perl that were installed under $prefix. Specify here
5543 the list of earlier versions that this version of perl should check.
5544 If Configure detected no earlier versions of perl installed under
5545 $prefix, then the list will be empty. Answer 'none' to tell perl
5546 to not search earlier versions.
5548 The default should almost always be sensible, so if you're not sure,
5549 just accept the default.
5552 rp='List of earlier versions to include in @INC?'
5555 [Nn]one|''|' ') inc_version_list=' ' ;;
5556 *) inc_version_list="$ans" ;;
5558 case "$inc_version_list" in
5560 inc_version_list_init='0';;
5561 *) inc_version_list_init=`echo $inc_version_list |
5562 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5567 : determine whether to install perl also as /usr/bin/perl
5570 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5572 Many scripts expect to perl to be installed as /usr/bin/perl.
5573 I can install the perl you are about to compile also as /usr/bin/perl
5574 (in addition to $installbin/perl).
5576 case "$installusrbinperl" in
5577 "$undef"|[nN]*) dflt='n';;
5580 rp="Do you want to install perl as /usr/bin/perl?"
5583 [yY]*) val="$define";;
5589 set installusrbinperl
5593 echo "Checking for GNU C Library..." >&4
5594 cat >gnulibc.c <<EOM
5606 if eval $compile_ok && ./gnulibc; then
5608 echo "You are using the GNU C Library"
5611 echo "You are not using the GNU C Library"
5617 : see if nm is to be used to determine whether a symbol is defined or not
5621 case "$d_gnulibc" in
5624 echo "nm probably won't work on the GNU C Library." >&4
5630 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5632 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5633 echo "'nm' won't be sufficient on this sytem." >&4
5639 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5640 if $test $dflt -gt 20; then
5650 true|$define) dflt=y;;
5657 I can use $nm to extract the symbols from your C libraries. This
5658 is a time consuming task which may generate huge output on the disk (up
5659 to 3 megabytes) but that should make the symbols extraction faster. The
5660 alternative is to skip the 'nm' extraction part and to compile a small
5661 test program instead to determine whether each symbol is present. If
5662 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5663 this may be the best solution.
5665 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5668 rp="Shall I use $nm to extract C symbols from the libraries?"
5671 [Nn]*) usenm=false;;
5680 : nm options which may be necessary
5682 '') if $test -f /mach_boot; then
5684 elif $test -d /usr/ccs/lib; then
5685 nm_opt='-p' # Solaris (and SunOS?)
5686 elif $test -f /dgux; then
5688 elif $test -f /lib64/rld; then
5689 nm_opt='-p' # 64-bit Irix
5695 : nm options which may be necessary for shared libraries but illegal
5696 : for archive libraries. Thank you, Linux.
5697 case "$nm_so_opt" in
5698 '') case "$myuname" in
5700 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5701 nm_so_opt='--dynamic'
5710 : get list of predefined functions in a handy place
5715 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5722 *) for thislib in $libs; do
5725 : Handle C library specially below.
5728 thislib=`echo $thislib | $sed -e 's/^-l//'`
5729 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5731 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5733 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5735 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5737 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5739 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5741 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5746 libnames="$libnames $try"
5748 *) libnames="$libnames $thislib" ;;
5757 for xxx in $libpth; do
5758 $test -r $1 || set $xxx/libc.$so
5759 : The messy sed command sorts on library version numbers.
5761 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5762 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5764 s/[0-9][0-9]*/0000&/g
5765 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5768 sort | $sed -e 's/^.* //'`
5771 $test -r $1 || set /usr/ccs/lib/libc.$so
5772 $test -r $1 || set /lib/libsys_s$_a
5778 if $test -r "$1"; then
5779 echo "Your (shared) C library seems to be in $1."
5781 elif $test -r /lib/libc && $test -r /lib/clib; then
5782 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5784 libc='/lib/clib /lib/libc'
5785 if $test -r /lib/syslib; then
5786 echo "(Your math library is in /lib/syslib.)"
5787 libc="$libc /lib/syslib"
5789 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5790 echo "Your C library seems to be in $libc, as you said before."
5791 elif $test -r $incpath/usr/lib/libc$_a; then
5792 libc=$incpath/usr/lib/libc$_a;
5793 echo "Your C library seems to be in $libc. That's fine."
5794 elif $test -r /lib/libc$_a; then
5796 echo "Your C library seems to be in $libc. You're normal."
5798 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5800 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5801 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5802 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5804 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5806 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5809 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5811 if $test -r "$tans"; then
5812 echo "Your C library seems to be in $tans, of all places."
5818 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5822 If the guess above is wrong (which it might be if you're using a strange
5823 compiler, or your machine supports multiple models), you can override it here.
5828 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5830 I can't seem to find your C library. I've looked in the following places:
5833 $sed 's/^/ /' libpath
5836 None of these seems to contain your C library. I need to get its name...
5841 rp='Where is your C library?'
5846 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5847 set X `cat libnames`
5850 case $# in 1) xxx=file; esac
5851 echo "Extracting names from the following $xxx for later perusal:" >&4
5853 $sed 's/^/ /' libnames >&4
5855 $echo $n "This may take a while...$c" >&4
5859 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5860 *) $nm $nm_opt $file 2>/dev/null;;
5865 $grep fprintf libc.tmp > libc.ptf
5866 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5867 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5869 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5871 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5873 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5875 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5877 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5879 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5881 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5883 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5885 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5887 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5889 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5891 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5893 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5894 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5896 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5898 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5900 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5902 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5904 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5906 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5908 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5910 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5912 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5914 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5916 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5918 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5920 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5922 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5924 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5927 $nm -p $* 2>/dev/null >libc.tmp
5928 $grep fprintf libc.tmp > libc.ptf
5929 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5930 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5936 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5938 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5939 for thisname in $libnames $libc; do
5940 $ar t $thisname >>libc.tmp
5942 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5944 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5945 # Repeat libc to extract forwarders to DLL entries too
5946 for thisname in $libnames $libc; do
5947 $ar tv $thisname >>libc.tmp
5948 # Revision 50 of EMX has bug in $ar.
5949 # it will not extract forwarders to DLL entries
5950 # Use emximp which will extract exactly them.
5951 emximp -o tmp.imp $thisname \
5953 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5954 < tmp.imp >>libc.tmp
5957 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5960 echo "$ar didn't seem to work right." >&4
5961 echo "Maybe this is a Cray...trying bld instead..." >&4
5962 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5964 for thisname in $libnames; do
5966 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5967 $ar t $thisname >>libc.tmp
5971 echo "That didn't work either. Giving up." >&4
5978 if $test -f /lib/syscalls.exp; then
5980 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5981 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5985 $rm -f libnames libpath
5987 : see if dld is available
5991 : is a C symbol defined?
5994 -v) tf=libc.tmp; tc=""; tdc="";;
5995 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5996 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5999 case "$reuseval-$4" in
6001 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6007 if $contains $tlook $tf >/dev/null 2>&1;
6012 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6013 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6021 $define) tval=true;;
6027 : define an is-in-libc? function
6028 inlibc='echo " "; td=$define; tu=$undef;
6029 sym=$1; var=$2; eval "was=\$$2";
6031 case "$reuseval$was" in
6041 echo "$sym() found." >&4;
6042 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6044 echo "$sym() NOT found." >&4;
6045 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6049 $define) echo "$sym() found." >&4;;
6050 *) echo "$sym() NOT found." >&4;;
6054 : see if dlopen exists
6061 : determine which dynamic loading, if any, to compile in
6063 dldir="ext/DynaLoader"
6076 $define) dflt='y' ;;
6079 $define) dflt='y' ;;
6081 : Does a dl_xxx.xs file exist for this operating system
6082 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6085 rp="Do you wish to use dynamic loading?"
6092 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6093 dflt="$dldir/dl_${osname}.xs"
6094 elif $test "$d_dlopen" = "$define" ; then
6095 dflt="$dldir/dl_dlopen.xs"
6096 elif $test "$i_dld" = "$define" ; then
6097 dflt="$dldir/dl_dld.xs"
6102 *) dflt="$dldir/$dlsrc"
6105 echo "The following dynamic loading files are available:"
6106 : Can not go over to $dldir because getfile has path hard-coded in.
6107 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6108 rp="Source file to use for dynamic loading"
6114 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6118 Some systems may require passing special flags to $cc -c to
6119 compile modules that will be used to create a shared library.
6120 To use no flags, say "none".
6123 case "$cccdlflags" in
6124 '') case "$gccversion" in
6125 '') case "$osname" in
6127 next) dflt='none' ;;
6128 irix*) dflt='-KPIC' ;;
6129 svr4*|esix*|solaris) dflt='-KPIC' ;;
6130 sunos) dflt='-pic' ;;
6134 *) case "$osname" in
6135 svr4*|esix*|solaris) dflt='-fPIC' ;;
6140 *) dflt="$cccdlflags" ;;
6142 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6145 none) cccdlflags=' ' ;;
6146 *) cccdlflags="$ans" ;;
6151 Some systems use ld to create libraries that can be dynamically loaded,
6152 while other systems (such as those using ELF) use $cc.
6156 '') $cat >try.c <<'EOM'
6157 /* Test for whether ELF binaries are produced */
6162 int i = open("a.out",O_RDONLY);
6165 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6166 exit(0); /* succeed (yes, it's ELF) */
6171 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6173 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6177 echo "I'll use ld to build dynamic libraries."
6186 rp="What command should be used to create dynamic libraries?"
6192 Some systems may require passing special flags to $ld to create a
6193 library that can be dynamically loaded. If your ld flags include
6194 -L/other/path options to locate libraries outside your loader's normal
6195 search path, you may need to specify those -L options here as well. To
6196 use no flags, say "none".
6199 case "$lddlflags" in
6200 '') case "$osname" in
6201 beos) dflt='-nostart' ;;
6202 hpux) case "$gccversion" in
6203 '') dflt='-b +vnocompatwarnings' ;;
6206 linux|irix*) dflt='-shared' ;;
6207 next) dflt='none' ;;
6208 solaris) dflt='-G' ;;
6209 sunos) dflt='-assert nodefinitions' ;;
6210 svr4*|esix*) dflt="-G $ldflags" ;;
6214 *) dflt="$lddlflags" ;;
6217 : Try to guess additional flags to pick up local libraries.
6218 : Be careful not to append to a plain 'none'
6222 for thisflag in $ldflags; do
6227 *) dflt="$dflt $thisflag" ;;
6234 ''|' ') dflt='none' ;;
6237 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6240 none) lddlflags=' ' ;;
6241 *) lddlflags="$ans" ;;
6246 Some systems may require passing special flags to $cc to indicate that
6247 the resulting executable will use dynamic linking. To use no flags,
6251 case "$ccdlflags" in
6252 '') case "$osname" in
6253 hpux) dflt='-Wl,-E' ;;
6254 linux) dflt='-rdynamic' ;;
6255 next) dflt='none' ;;
6256 sunos) dflt='none' ;;
6260 *) dflt="$ccdlflags" ;;
6262 rp="Any special flags to pass to $cc to use dynamic linking?"
6265 none) ccdlflags=' ' ;;
6266 *) ccdlflags="$ans" ;;
6280 # No dynamic loading being used, so don't bother even to prompt.
6283 *) case "$useshrplib" in
6284 '') case "$osname" in
6285 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6287 also='Building a shared libperl is required for dynamic loading to work on your system.'
6292 also='Building a shared libperl is needed for MAB support.'
6310 The perl executable is normally obtained by linking perlmain.c with
6311 libperl${_a}, any static extensions (usually just DynaLoader), and
6312 any other libraries needed on this system (such as -lm, etc.). Since
6313 your system supports dynamic loading, it is probably possible to build
6314 a shared libperl.$so. If you will have more than one executable linked
6315 to libperl.$so, this will significantly reduce the size of each
6316 executable, but it may have a noticeable affect on performance. The
6317 default is probably sensible for your system.
6321 rp="Build a shared libperl.$so (y/n)"
6325 useshrplib='true' ;;
6326 *) useshrplib='false' ;;
6331 case "$useshrplib" in
6335 # Figure out a good name for libperl.so. Since it gets stored in
6336 # a version-specific architecture-dependent library, the version
6337 # number isn't really that important, except for making cc/ld happy.
6339 # A name such as libperl.so.3.1
6340 majmin="libperl.$so.$patchlevel.$subversion"
6341 # A name such as libperl.so.301
6342 majonly=`echo $patchlevel $subversion |
6343 $awk '{printf "%d%02d", $1, $2}'`
6344 majonly=libperl.$so.$majonly
6345 # I'd prefer to keep the os-specific stuff here to a minimum, and
6346 # rely on figuring it out from the naming of libc.
6347 case "${osname}${osvers}" in
6350 # XXX How handle the --version stuff for MAB?
6352 linux*) # ld won't link with a bare -lperl otherwise.
6355 cygwin*) # include version
6356 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6358 *) # Try to guess based on whether libc has major.minor.
6360 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6361 *libc.$so.[0-9]*) dflt=$majonly ;;
6362 *) dflt=libperl.$so ;;
6372 I need to select a good name for the shared libperl. If your system uses
6373 library names with major and minor numbers, then you might want something
6374 like $majmin. Alternatively, if your system uses a single version
6375 number for shared libraries, then you might want to use $majonly.
6376 Or, your system might be quite happy with a simple libperl.$so.
6378 Since the shared libperl will get installed into a version-specific
6379 architecture-dependent directory, the version number of the shared perl
6380 library probably isn't important, so the default should be o.k.
6383 rp='What name do you want to give to the shared libperl?'
6386 echo "Ok, I'll use $libperl"
6389 libperl="libperl${_a}"
6393 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6397 WARNING: Use of the shrpdir variable for the installation location of
6398 the shared $libperl is not supported. It was never documented and
6399 will not work in this version. Let me (perlbug@perl.com)
6400 know of any problems this may cause.
6406 But your current setting of $shrpdir is
6407 the default anyway, so it's harmless.
6412 Further, your current attempted setting of $shrpdir
6413 conflicts with the value of $archlibexp/CORE
6414 that installperl will use.
6421 # How will the perl executable find the installed shared $libperl?
6422 # Add $xxx to ccdlflags.
6423 # If we can't figure out a command-line option, use $shrpenv to
6424 # set env LD_RUN_PATH. The main perl makefile uses this.
6425 shrpdir=$archlibexp/CORE
6428 if "$useshrplib"; then
6431 # We'll set it in Makefile.SH...
6437 xxx="-Wl,-R$shrpdir"
6439 linux|irix*|dec_osf)
6440 xxx="-Wl,-rpath,$shrpdir"
6443 # next doesn't like the default...
6446 # beos doesn't like the default, either.
6449 # hpux doesn't like the default, either.
6450 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6453 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6459 # Only add $xxx if it isn't already in ccdlflags.
6460 case " $ccdlflags " in
6462 *) ccdlflags="$ccdlflags $xxx"
6465 Adding $xxx to the flags
6466 passed to $ld so that the perl executable will find the
6467 installed shared $libperl.
6475 # Fix ccdlflags in AIX for building external extensions.
6476 # (For building Perl itself bare -bE:perl.exp is needed,
6477 # Makefile.SH takes care of this.)
6479 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6481 # Respect a hint or command-line value.
6483 '') shrpenv="$tmp_shrpenv" ;;
6485 case "$ldlibpthname" in
6486 '') ldlibpthname=LD_LIBRARY_PATH ;;
6487 none) ldlibpthname='' ;;
6490 : determine where manual pages go
6491 set man1dir man1dir none
6495 $spackage has manual pages available in source form.
6499 echo "However, you don't have nroff, so they're probably useless to you."
6501 '') man1dir="none";;
6504 echo "If you don't want the manual sources installed, answer 'none'."
6509 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6510 lookpath="$lookpath $prefixexp/man/p_man/man1"
6511 lookpath="$lookpath $prefixexp/man/u_man/man1"
6512 lookpath="$lookpath $prefixexp/man/man.1"
6514 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6515 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6525 rp="Where do the main $spackage manual pages (source) go?"
6527 if $test "X$man1direxp" != "X$ansexp"; then
6531 man1direxp="$ansexp"
6537 : Change installation prefix, if necessary.
6538 if $test X"$prefix" != X"$installprefix"; then
6539 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6541 installman1dir="$man1direxp"
6544 : What suffix to use on installed man pages
6551 rp="What suffix should be used for the main $spackage man pages?"
6553 '') case "$man1dir" in
6567 *) dflt="$man1ext";;
6574 : see if we can have long filenames
6576 rmlist="$rmlist /tmp/cf$$"
6577 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6578 first=123456789abcdef
6579 second=/tmp/cf$$/$first
6580 $rm -f $first $second
6581 if (echo hi >$first) 2>/dev/null; then
6582 if $test -f 123456789abcde; then
6583 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6586 if (echo hi >$second) 2>/dev/null; then
6587 if $test -f /tmp/cf$$/123456789abcde; then
6589 That's peculiar... You can have filenames longer than 14 characters, but only
6590 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
6591 I shall consider your system cannot support long filenames at all.
6595 echo 'You can have filenames longer than 14 characters.' >&4
6600 How confusing! Some of your filesystems are sane enough to allow filenames
6601 longer than 14 characters but some others like /tmp can't even think about them.
6602 So, for now on, I shall assume your kernel does not allow them at all.
6609 You can't have filenames longer than 14 chars. You can't even think about them!
6615 $rm -rf /tmp/cf$$ 123456789abcde*
6617 : determine where library module manual pages go
6618 set man3dir man3dir none
6622 $spackage has manual pages for many of the library modules.
6628 However, you don't have nroff, so they're probably useless to you.
6631 '') man3dir="none";;
6635 case "$d_flexfnam" in
6638 However, your system can't handle the long file names like File::Basename.3.
6641 '') man3dir="none";;
6645 echo "If you don't want the manual sources installed, answer 'none'."
6646 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6648 '') dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6649 if $test -d "$privlib/man/man3"; then
6652 WARNING: Previous versions of perl installed man3 pages into
6653 $privlib/man/man3. This version will suggest a
6654 new default of $dflt.
6658 rp='Do you wish to preserve the old behavior?(y/n)'
6661 y*) dflt="$privlib/man/man3" ;;
6667 *) dflt="$man3dir" ;;
6671 rp="Where do the $package library man pages (source) go?"
6674 man3direxp="$ansexp"
6680 : Change installation prefix, if necessary.
6681 if $test X"$prefix" != X"$installprefix"; then
6682 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6684 installman3dir="$man3direxp"
6687 : What suffix to use on installed man pages
6693 rp="What suffix should be used for the $package library man pages?"
6695 '') case "$man3dir" in
6709 *) dflt="$man3ext";;
6716 : see if we have to deal with yellow pages, now NIS.
6717 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6718 if $test -f /usr/etc/nibindd; then
6720 echo "I'm fairly confident you're on a NeXT."
6722 rp='Do you get the hosts file via NetInfo?'
6731 y*) hostcat='nidump hosts .';;
6732 *) case "$hostcat" in
6733 nidump*) hostcat='';;
6743 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6751 rp='Are you getting the hosts file via yellow pages?'
6754 y*) hostcat='ypcat hosts';;
6755 *) hostcat='cat /etc/hosts';;
6761 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6764 '') test -f /etc/group && groupcat='cat /etc/group';;
6767 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6770 : now get the host name
6772 echo "Figuring out host name..." >&4
6773 case "$myhostname" in
6775 echo 'Maybe "hostname" will work...'
6776 if tans=`sh -c hostname 2>&1` ; then
6784 if $test "$cont"; then
6786 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6787 if tans=`cat /etc/systemid 2>&1` ; then
6789 phostname='cat /etc/systemid'
6790 echo "Whadyaknow. Xenix always was a bit strange..."
6793 elif $test -r /etc/systemid; then
6794 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6797 if $test "$cont"; then
6798 echo 'No, maybe "uuname -l" will work...'
6799 if tans=`sh -c 'uuname -l' 2>&1` ; then
6801 phostname='uuname -l'
6803 echo 'Strange. Maybe "uname -n" will work...'
6804 if tans=`sh -c 'uname -n' 2>&1` ; then
6806 phostname='uname -n'
6808 echo 'Oh well, maybe I can mine it out of whoami.h...'
6809 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6810 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6811 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6813 case "$myhostname" in
6814 '') echo "Does this machine have an identity crisis or something?"
6817 echo "Well, you said $myhostname before..."
6818 phostname='echo $myhostname';;
6824 : you do not want to know about this
6829 if $test "$myhostname" ; then
6831 rp='Your host name appears to be "'$myhostname'".'" Right?"
6839 : bad guess or no guess
6840 while $test "X$myhostname" = X ; do
6842 rp="Please type the (one word) name of your host:"
6847 : translate upper to lower if necessary
6848 case "$myhostname" in
6850 echo "(Normalizing case in your host name)"
6851 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6855 case "$myhostname" in
6857 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6858 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6859 echo "(Trimming domain name from host name--host name is now $myhostname)"
6861 *) case "$mydomain" in
6864 test "X$hostcat" = "Xypcat hosts" &&
6865 ypmatch "$myhostname" hosts 2>/dev/null |\
6866 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
6869 test "X$hostcat" != "X" &&
6870 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
6871 /[ ]$myhostname[ . ]/p" > hosts
6874 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
6875 END { print sum }" hosts` = x1 || tmp_re="[ ]"
6876 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6877 hosts | $sort | $uniq | \
6878 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6879 case `$echo X$dflt` in
6880 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
6883 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6888 tans=`./loc resolv.conf X /etc /usr/etc`
6889 if $test -f "$tans"; then
6890 echo "(Attempting domain name extraction from $tans)"
6891 dflt=.`$sed -n -e 's/ / /g' \
6892 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
6893 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6895 .) dflt=.`$sed -n -e 's/ / /g' \
6896 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
6897 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6904 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6905 dflt=.`sh -c domainname 2>/dev/null`
6908 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6913 .) echo "(Lost all hope -- silly guess then)"
6919 *) dflt="$mydomain";;
6923 rp="What is your domain name?"
6933 : translate upper to lower if necessary
6936 echo "(Normalizing case in your domain name)"
6937 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6941 : a little sanity check here
6942 case "$phostname" in
6945 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6946 $myhostname$mydomain|$myhostname) ;;
6948 case "$phostname" in
6950 echo "(That doesn't agree with your whoami.h file, by the way.)"
6953 echo "(That doesn't agree with your $phostname command, by the way.)"
6963 I need to get your e-mail address in Internet format if possible, i.e.
6964 something like user@host.domain. Please answer accurately since I have
6965 no easy means to double check it. The default value provided below
6966 is most probably close to reality but may not be valid from outside
6967 your organization...
6971 while test "$cont"; do
6973 '') dflt="$cf_by@$myhostname$mydomain";;
6974 *) dflt="$cf_email";;
6976 rp='What is your e-mail address?'
6982 rp='Address does not look like an Internet one. Use it anyway?'
6998 If you or somebody else will be maintaining perl at your site, please
6999 fill in the correct e-mail address here so that they may be contacted
7000 if necessary. Currently, the "perlbug" program included with perl
7001 will send mail to this address in addition to perlbug@perl.com. You may
7002 enter "none" for no administrator.
7005 case "$perladmin" in
7006 '') dflt="$cf_email";;
7007 *) dflt="$perladmin";;
7009 rp='Perl administrator e-mail address'
7013 : figure out how to guarantee perl startup
7014 case "$startperl" in
7016 case "$sharpbang" in
7020 I can use the #! construct to start perl on your system. This will
7021 make startup of perl scripts faster, but may cause problems if you
7022 want to share those scripts and perl is not in a standard place
7023 ($binexp/perl) on all your platforms. The alternative is to force
7024 a shell by starting the script with a single ':' character.
7028 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7031 none) startperl=": # use perl";;
7032 *) startperl="#!$ans"
7033 if $test 30 -lt `echo "$ans" | wc -c`; then
7036 WARNING: Some systems limit the #! command to 32 characters.
7037 If you experience difficulty running Perl scripts with #!, try
7038 installing Perl in a directory with a shorter pathname.
7044 *) startperl=": # use perl"
7049 echo "I'll use $startperl to start perl scripts."
7051 : figure best path for perl in scripts
7054 perlpath="$binexp/perl"
7055 case "$startperl" in
7060 I will use the "eval 'exec'" idiom to start Perl on your system.
7061 I can use the full path of your Perl binary for this purpose, but
7062 doing so may cause problems if you want to share those scripts and
7063 Perl is not always in a standard place ($binexp/perl).
7067 rp="What path shall I use in \"eval 'exec'\"?"
7074 case "$startperl" in
7076 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7079 : determine where public executable scripts go
7080 set scriptdir scriptdir
7082 case "$scriptdir" in
7085 : guess some guesses
7086 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7087 $test -d /usr/share/bin && dflt=/usr/share/bin
7088 $test -d /usr/local/script && dflt=/usr/local/script
7089 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7090 $test -d $prefixexp/script && dflt=$prefixexp/script
7094 *) dflt="$scriptdir"
7099 Some installations have a separate directory just for executable scripts so
7100 that they can mount it across multiple architectures but keep the scripts in
7101 one spot. You might, for example, have a subdirectory of /usr/share for this.
7102 Or you might just lump your scripts in with all your other executables.
7106 rp='Where do you keep publicly executable scripts?'
7108 if $test "X$ansexp" != "X$scriptdirexp"; then
7112 scriptdirexp="$ansexp"
7113 : Change installation prefix, if necessary.
7114 if $test X"$prefix" != X"$installprefix"; then
7115 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7117 installscript="$scriptdirexp"
7120 : determine where site specific architecture-dependent libraries go.
7121 : sitelib default is /usr/local/lib/perl5/site_perl/$version
7122 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
7123 : sitelib may have an optional trailing /share.
7125 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
7126 dflt="$dflt/$archname"
7131 set sitearch sitearch none
7135 The installation process will also create a directory for
7136 architecture-dependent site-specific extensions and modules.
7140 rp='Pathname for the site-specific architecture-dependent library files?'
7143 sitearchexp="$ansexp"
7144 : Change installation prefix, if necessary.
7145 if $test X"$prefix" != X"$installprefix"; then
7146 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
7148 installsitearch="$sitearchexp"
7151 : determine where add-on public executables go
7153 '') dflt=$siteprefix/bin ;;
7157 rp='Pathname where the add-on public executables should be installed?'
7160 sitebinexp="$ansexp"
7161 : Change installation prefix, if necessary.
7162 if $test X"$prefix" != X"$installprefix"; then
7163 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7165 installsitebin="$sitebinexp"
7168 : see if sqrtl exists
7173 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7176 case "$uselongdouble" in
7177 $define|true|[yY]*) dflt='y';;
7182 Perl can be built to take advantage of long doubles which
7183 (if available) may give more accuracy and range for floating point numbers.
7185 If this doesn't make any sense to you, just accept the default '$dflt'.
7187 rp='Try to use long doubles if available?'
7190 y|Y) val="$define" ;;
7196 case "$uselongdouble" in
7197 true|[yY]*) uselongdouble="$define" ;;
7200 case "$uselongdouble" in
7202 : Look for a hint-file generated 'call-back-unit'. If the
7203 : user has specified that long doubles should be used,
7204 : we may need to set or change some other defaults.
7205 if $test -f uselongdouble.cbu; then
7206 echo "Your platform has some specific hints for long doubles, using them..."
7207 . ./uselongdouble.cbu
7210 (Your platform doesn't have any specific hints for long doubles.)
7216 case "$uselongdouble:$d_sqrtl" in
7220 You requested the use of long doubles but you do not seem to have
7221 the mathematic functions for long doubles. I'm disabling the use
7224 uselongdouble=$undef
7228 case "$useperlio" in
7229 $define|true|[yY]*) dflt='y';;
7234 Previous version of $package used the standard IO mechanisms as defined
7235 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7236 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7237 the default. This abstraction layer can use AT&T's sfio (if you already
7238 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7239 problems with some extension modules. Using PerlIO with stdio is safe,
7240 but it is slower than plain stdio and therefore is not the default.
7242 If this doesn't make any sense to you, just accept the default '$dflt'.
7244 rp='Use the experimental PerlIO abstraction layer?'
7251 echo "Ok, doing things the stdio way"
7258 case "$vendorprefix" in
7259 '') d_vendorbin="$undef"
7263 *) d_vendorbin="$define"
7264 : determine where vendor-supplied executables go.
7265 case "$vendorbin" in
7266 '') dflt=$vendorprefix/bin ;;
7267 *) dflt="$vendorbin" ;;
7270 rp='Pathname for the vendor-supplied executables directory?'
7273 vendorbinexp="$ansexp"
7276 : Change installation prefix, if necessary.
7277 if $test X"$prefix" != X"$installprefix"; then
7278 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7280 installvendorbin="$vendorbinexp"
7283 : check for length of double
7285 case "$doublesize" in
7287 echo "Checking to see how big your double precision numbers are..." >&4
7288 $cat >try.c <<'EOCP'
7292 printf("%d\n", (int)sizeof(double));
7297 if eval $compile_ok; then
7299 echo "Your double is $doublesize bytes long."
7302 echo "(I can't seem to compile the test program. Guessing...)"
7303 rp="What is the size of a double precision number (in bytes)?"
7311 : check for long doubles
7313 echo "Checking to see if you have long double..." >&4
7314 echo 'int main() { long double x = 7.0; }' > try.c
7316 if eval $compile; then
7318 echo "You have long double."
7321 echo "You do not have long double."
7327 : check for length of long double
7328 case "${d_longdbl}${longdblsize}" in
7331 echo "Checking to see how big your long doubles are..." >&4
7332 $cat >try.c <<'EOCP'
7336 printf("%d\n", sizeof(long double));
7341 if eval $compile; then
7342 longdblsize=`./try$exe_ext`
7343 echo "Your long doubles are $longdblsize bytes long."
7347 echo "(I can't seem to compile the test program. Guessing...)" >&4
7348 rp="What is the size of a long double (in bytes)?"
7352 if $test "X$doublesize" = "X$longdblsize"; then
7353 echo "(That isn't any different from an ordinary double.)"
7359 : Check how to convert floats to strings.
7360 if test "X$d_Gconvert" = X; then
7362 echo "Checking for an efficient way to convert floats to strings."
7365 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7366 char *myname = "gconvert";
7369 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7370 char *myname = "gcvt";
7373 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7374 char *myname = "qgcvt";
7375 #define DOUBLETYPE long double
7378 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7379 char *myname = "sprintf";
7383 #define DOUBLETYPE double
7388 #define I_STDLIB $i_stdlib
7394 checkit(expect, got)
7398 if (strcmp(expect, got)) {
7399 printf("%s oddity: Expected %s, got %s\n",
7400 myname, expect, got);
7410 /* This must be 1st test on (which?) platform */
7411 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7412 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7413 checkit("0.1", buf);
7415 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7418 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7421 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7424 /* Some Linux gcvt's give 1.e+5 here. */
7425 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7426 checkit("100000", buf);
7428 /* Some Linux gcvt's give -1.e+5 here. */
7429 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7430 checkit("-100000", buf);
7435 case "$d_Gconvert" in
7436 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7437 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7438 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7439 *) xxx_list='gconvert gcvt sprintf' ;;
7442 case "$d_longdbl$uselongdouble" in
7443 definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7446 for xxx_convert in $xxx_list; do
7447 echo "Trying $xxx_convert..."
7449 set try -DTRY_$xxx_convert
7450 if eval $compile; then
7451 echo "$xxx_convert() found." >&4
7453 echo "I'll use $xxx_convert to convert floats into a string." >&4
7456 echo "...But $xxx_convert didn't work as I expected."
7459 echo "$xxx_convert NOT found." >&4
7463 case "$xxx_convert" in
7464 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7465 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7466 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7467 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7473 if $test X"$d_longdbl" = X"$define"; then
7475 echo "Checking how to print long doubles..." >&4
7477 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7478 $cat >try.c <<'EOCP'
7479 #include <sys/types.h>
7483 printf("%.3f\n", d);
7487 if eval $compile; then
7491 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7492 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7493 echo "We will use %f."
7499 if $test X"$sPRIfldbl" = X; then
7500 $cat >try.c <<'EOCP'
7501 #include <sys/types.h>
7504 long double d = 123.456;
7505 printf("%.3llf\n", d);
7509 if eval $compile; then
7513 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7514 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7515 echo "We will use %llf."
7521 if $test X"$sPRIfldbl" = X; then
7522 $cat >try.c <<'EOCP'
7523 #include <sys/types.h>
7526 long double d = 123.456;
7527 printf("%.3Lf\n", d);
7531 if eval $compile; then
7535 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7536 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7537 echo "We will use %Lf."
7543 if $test X"$sPRIfldbl" = X; then
7544 $cat >try.c <<'EOCP'
7545 #include <sys/types.h>
7548 long double d = 123.456;
7549 printf("%.3lf\n", d);
7553 if eval $compile; then
7557 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7558 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7559 echo "We will use %lf."
7565 if $test X"$sPRIfldbl" = X; then
7566 echo "Cannot figure out how to print long doubles." >&4
7573 case "$sPRIfldbl" in
7574 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7575 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7577 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7578 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7582 : Initialize h_fcntl
7585 : Initialize h_sysfile
7588 : access call always available on UNIX
7592 : locate the flags for 'access()'
7596 $cat >access.c <<'EOCP'
7597 #include <sys/types.h>
7602 #include <sys/file.h>
7611 : check sys/file.h first, no particular reason here
7612 if $test `./findhdr sys/file.h` && \
7613 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7615 echo "<sys/file.h> defines the *_OK access constants." >&4
7616 elif $test `./findhdr fcntl.h` && \
7617 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7619 echo "<fcntl.h> defines the *_OK access constants." >&4
7620 elif $test `./findhdr unistd.h` && \
7621 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7622 echo "<unistd.h> defines the *_OK access constants." >&4
7624 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7630 : see if accessx exists
7631 set accessx d_accessx
7634 : see if alarm exists
7638 : see if atolf exists
7642 : see if atoll exists
7646 : Look for GNU-cc style attribute checking
7648 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7649 $cat >attrib.c <<'EOCP'
7651 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7653 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7654 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7655 echo "Your C compiler doesn't fully support __attribute__."
7658 echo "Your C compiler supports __attribute__."
7662 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7669 : see if bcmp exists
7673 : see if bcopy exists
7677 : see if this is a unistd.h system
7678 set unistd.h i_unistd
7681 : see if getpgrp exists
7682 set getpgrp d_getpgrp
7685 case "$d_getpgrp" in
7688 echo "Checking to see which flavor of getpgrp is in use..."
7691 #include <sys/types.h>
7693 # include <unistd.h>
7697 if (getuid() == 0) {
7698 printf("(I see you are running Configure as super-user...)\n");
7702 if (getpgrp(1) == 0)
7711 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7712 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7714 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7715 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7718 echo "I can't seem to compile and run the test program."
7720 xxx="a USG one, i.e. you use getpgrp()."
7722 # SVR4 systems can appear rather BSD-ish.
7725 xxx="a BSD one, i.e. you use getpgrp(pid)."
7729 xxx="probably a USG one, i.e. you use getpgrp()."
7734 echo "Assuming your getpgrp is $xxx" >&4
7743 : see if setpgrp exists
7744 set setpgrp d_setpgrp
7747 case "$d_setpgrp" in
7750 echo "Checking to see which flavor of setpgrp is in use..."
7753 #include <sys/types.h>
7755 # include <unistd.h>
7759 if (getuid() == 0) {
7760 printf("(I see you are running Configure as super-user...)\n");
7764 if (-1 == setpgrp(1, 1))
7767 if (setpgrp() != -1)
7773 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7774 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7776 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7777 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7780 echo "(I can't seem to compile and run the test program.)"
7782 xxx="a USG one, i.e. you use setpgrp()."
7784 # SVR4 systems can appear rather BSD-ish.
7787 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7791 xxx="probably a USG one, i.e. you use setpgrp()."
7796 echo "Assuming your setpgrp is $xxx" >&4
7804 : see if bzero exists
7808 : see if signal is declared as pointer to function returning int or void
7810 xxx=`./findhdr signal.h`
7811 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7812 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7813 echo "You have int (*signal())() instead of void." >&4
7815 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7816 echo "You have void (*signal())()." >&4
7818 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7819 echo "You have int (*signal())() instead of void." >&4
7821 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7822 echo "You have void (*signal())()." >&4
7825 case "$d_voidsig" in
7827 echo "I can't determine whether signal handler returns void or int..." >&4
7829 rp="What type does your signal handler return?"
7836 echo "As you already told me, signal handler returns void." >&4
7839 *) echo "As you already told me, signal handler returns int." >&4
7846 case "$d_voidsig" in
7847 "$define") signal_t="void";;
7852 : check for ability to cast large floats to 32-bit ints.
7854 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7855 if $test "$intsize" -ge 4; then
7862 #include <sys/types.h>
7864 $signal_t blech(s) int s; { exit(3); }
7871 signal(SIGFPE, blech);
7873 /* Don't let compiler optimize the test away. Store the number
7874 in a writable string for gcc to pass to sscanf under HP/UX.
7876 sprintf(str, "2147483647");
7877 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7881 /* x86 processors will probably give 0x8000 0000, which is a
7882 sign change. We don't want that. We want to mimic SPARC
7883 behavior here, which is to preserve the sign and give
7886 if (i32 != ($xxx) f)
7892 if eval $compile_ok; then
7896 echo "(I can't seem to compile the test program--assuming it can't)"
7904 echo "Nope, it can't."
7911 : check for ability to cast negative floats to unsigned
7913 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7916 #include <sys/types.h>
7918 $signal_t blech(s) int s; { exit(7); }
7919 $signal_t blech_in_list(s) int s; { exit(4); }
7920 unsigned long dummy_long(p) unsigned long p; { return p; }
7921 unsigned int dummy_int(p) unsigned int p; { return p; }
7922 unsigned short dummy_short(p) unsigned short p; { return p; }
7926 unsigned long along;
7928 unsigned short ashort;
7932 /* Frustrate gcc-2.7.2's optimizer which failed this test with
7933 a direct f = -123. assignment. gcc-2.8.0 reportedly
7934 optimized the whole file away
7936 /* Store the number in a writable string for gcc to pass to
7939 sprintf(str, "-123");
7940 sscanf(str, "%lf", &f); /* f = -123.; */
7942 signal(SIGFPE, blech);
7943 along = (unsigned long)f;
7944 aint = (unsigned int)f;
7945 ashort = (unsigned short)f;
7946 if (along != (unsigned long)-123)
7948 if (aint != (unsigned int)-123)
7950 if (ashort != (unsigned short)-123)
7952 sprintf(str, "1073741824.");
7953 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7956 along = (unsigned long)f;
7957 if (along != 0x80000000)
7961 along = (unsigned long)f;
7962 if (along != 0x7fffffff)
7966 along = (unsigned long)f;
7967 if (along != 0x80000001)
7971 signal(SIGFPE, blech_in_list);
7972 sprintf(str, "123.");
7973 sscanf(str, "%lf", &f); /* f = 123.; */
7974 along = dummy_long((unsigned long)f);
7975 aint = dummy_int((unsigned int)f);
7976 ashort = dummy_short((unsigned short)f);
7977 if (along != (unsigned long)123)
7979 if (aint != (unsigned int)123)
7981 if (ashort != (unsigned short)123)
7988 if eval $compile_ok; then
7992 echo "(I can't seem to compile the test program--assuming it can't)"
7995 case "$castflags" in
8000 echo "Nope, it can't."
8007 : see if vprintf exists
8009 if set vprintf val -f d_vprintf; eval $csym; $val; then
8010 echo 'vprintf() found.' >&4
8012 $cat >vprintf.c <<'EOF'
8013 #include <varargs.h>
8015 int main() { xxx("foo"); }
8024 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8028 if eval $compile && ./vprintf; then
8029 echo "Your vsprintf() returns (int)." >&4
8032 echo "Your vsprintf() returns (char*)." >&4
8036 echo 'vprintf() NOT found.' >&4
8046 : see if chown exists
8050 : see if chroot exists
8054 : see if chsize exists
8058 : check for const keyword
8060 echo 'Checking to see if your C compiler knows about "const"...' >&4
8061 $cat >const.c <<'EOCP'
8062 typedef struct spug { int drokk; } spug;
8069 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8071 echo "Yup, it does."
8074 echo "Nope, it doesn't."
8079 : see if crypt exists
8081 if set crypt val -f d_crypt; eval $csym; $val; then
8082 echo 'crypt() found.' >&4
8086 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8087 if $test -z "$cryptlib"; then
8088 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8092 if $test -z "$cryptlib"; then
8093 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8097 if $test -z "$cryptlib"; then
8098 cryptlib=`./loc libcrypt$_a "" $libpth`
8102 if $test -z "$cryptlib"; then
8103 echo 'crypt() NOT found.' >&4
8112 : get csh whereabouts
8114 'csh') val="$undef" ;;
8119 : Respect a hint or command line value for full_csh.
8121 '') full_csh=$csh ;;
8124 : see if cuserid exists
8125 set cuserid d_cuserid
8128 : see if this is a limits.h system
8129 set limits.h i_limits
8132 : see if this is a float.h system
8136 : See if number of significant digits in a double precision number is known
8138 $cat >dbl_dig.c <<EOM
8148 printf("Contains DBL_DIG");
8151 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8152 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8153 echo "DBL_DIG found." >&4
8156 echo "DBL_DIG NOT found." >&4
8163 : see if difftime exists
8164 set difftime d_difftime
8167 : see if this is a dirent system
8169 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8171 echo "<dirent.h> found." >&4
8174 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8175 echo "<sys/dir.h> found." >&4
8178 xinc=`./findhdr sys/ndir.h`
8180 echo "<dirent.h> NOT found." >&4
8185 : Look for type of directory structure.
8187 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8189 case "$direntrytype" in
8192 $define) guess1='struct dirent' ;;
8193 *) guess1='struct direct' ;;
8196 *) guess1="$direntrytype"
8201 'struct dirent') guess2='struct direct' ;;
8202 *) guess2='struct dirent' ;;
8205 if $contains "$guess1" try.c >/dev/null 2>&1; then
8206 direntrytype="$guess1"
8207 echo "Your directory entries are $direntrytype." >&4
8208 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8209 direntrytype="$guess2"
8210 echo "Your directory entries seem to be $direntrytype." >&4
8212 echo "I don't recognize your system's directory entries." >&4
8213 rp="What type is used for directory entries on this system?"
8221 : see if the directory entry stores field length
8223 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8224 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8225 echo "Good, your directory entry keeps length information in d_namlen." >&4
8228 echo "Your directory entry does not know about the d_namlen field." >&4
8235 : see if dlerror exists
8238 set dlerror d_dlerror
8242 : see if dlfcn is available
8250 On a few systems, the dynamically loaded modules that perl generates and uses
8251 will need a different extension than shared libs. The default will probably
8259 rp='What is the extension of dynamically loaded modules'
8268 : Check if dlsym need a leading underscore
8274 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8275 $cat >dyna.c <<'EOM'
8284 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8286 #include <sys/types.h>
8300 int mode = RTLD_LAZY ;
8302 handle = dlopen("./dyna.$dlext", mode) ;
8303 if (handle == NULL) {
8308 symbol = dlsym(handle, "fred") ;
8309 if (symbol == NULL) {
8310 /* try putting a leading underscore */
8311 symbol = dlsym(handle, "_fred") ;
8312 if (symbol == NULL) {
8325 : Call the object file tmp-dyna.o in case dlext=o.
8326 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8327 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8328 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
8329 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8332 1) echo "Test program failed using dlopen." >&4
8333 echo "Perhaps you should not use dynamic loading." >&4;;
8334 2) echo "Test program failed using dlsym." >&4
8335 echo "Perhaps you should not use dynamic loading." >&4;;
8336 3) echo "dlsym needs a leading underscore" >&4
8338 4) echo "dlsym doesn't need a leading underscore." >&4;;
8341 echo "I can't compile and run the test program." >&4
8342 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8347 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8352 hasproto='varname=$1; func=$2; shift; shift;
8353 while $test $# -ge 2; do
8355 $define) echo "#include <$2>";;
8359 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8360 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8361 echo "$func() prototype found.";
8364 echo "$func() prototype NOT found.";
8369 $rm -f try.c tryout.c'
8371 : see if prototype for drand48 is available
8373 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8376 : see if dup2 exists
8380 : see if eaccess exists
8381 set eaccess d_eaccess
8384 : see if endgrent exists
8385 set endgrent d_endgrent
8388 : see if endhostent exists
8389 set endhostent d_endhent
8392 : see if endnetent exists
8393 set endnetent d_endnent
8396 : see if endprotoent exists
8397 set endprotoent d_endpent
8400 : see if endpwent exists
8401 set endpwent d_endpwent
8404 : see if endservent exists
8405 set endservent d_endsent
8408 : see if endspent exists
8409 set endspent d_endspent
8412 : Locate the flags for 'open()'
8414 $cat >open3.c <<'EOCP'
8415 #include <sys/types.h>
8420 #include <sys/file.h>
8431 : check sys/file.h first to get FREAD on Sun
8432 if $test `./findhdr sys/file.h` && \
8433 set open3 -DI_SYS_FILE && eval $compile; then
8435 echo "<sys/file.h> defines the O_* constants..." >&4
8437 echo "and you have the 3 argument form of open()." >&4
8440 echo "but not the 3 argument form of open(). Oh, well." >&4
8443 elif $test `./findhdr fcntl.h` && \
8444 set open3 -DI_FCNTL && eval $compile; then
8446 echo "<fcntl.h> defines the O_* constants..." >&4
8448 echo "and you have the 3 argument form of open()." >&4
8451 echo "but not the 3 argument form of open(). Oh, well." >&4
8456 echo "I can't find the O_* constant definitions! You got problems." >&4
8462 : see which of string.h or strings.h is needed
8464 strings=`./findhdr string.h`
8465 if $test "$strings" && $test -r "$strings"; then
8466 echo "Using <string.h> instead of <strings.h>." >&4
8470 strings=`./findhdr strings.h`
8471 if $test "$strings" && $test -r "$strings"; then
8472 echo "Using <strings.h> instead of <string.h>." >&4
8474 echo "No string header found -- You'll surely have problems." >&4
8480 "$undef") strings=`./findhdr strings.h`;;
8481 *) strings=`./findhdr string.h`;;
8484 : check for non-blocking I/O stuff
8485 case "$h_sysfile" in
8486 true) echo "#include <sys/file.h>" > head.c;;
8489 true) echo "#include <fcntl.h>" > head.c;;
8490 *) echo "#include <sys/fcntl.h>" > head.c;;
8495 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8496 case "$o_nonblock" in
8499 $cat >>try.c <<'EOCP'
8503 printf("O_NONBLOCK\n");
8507 printf("O_NDELAY\n");
8511 printf("FNDELAY\n");
8518 if eval $compile_ok; then
8520 case "$o_nonblock" in
8521 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8522 *) echo "Seems like we can use $o_nonblock.";;
8525 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8528 *) echo "Using $hint value $o_nonblock.";;
8530 $rm -f try try.* .out core
8533 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8539 #include <sys/types.h>
8542 #define MY_O_NONBLOCK $o_nonblock
8543 #ifndef errno /* XXX need better Configure test */
8553 #include <strings.h>
8555 $signal_t blech(x) int x; { exit(3); }
8557 $cat >> try.c <<'EOCP'
8565 pipe(pd); /* Down: child -> parent */
8566 pipe(pu); /* Up: parent -> child */
8569 close(pd[1]); /* Parent reads from pd[0] */
8570 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8571 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8573 signal(SIGALRM, blech);
8575 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8577 sprintf(string, "%d\n", ret);
8578 write(2, string, strlen(string));
8581 if (errno == EAGAIN) {
8587 if (errno == EWOULDBLOCK)
8588 printf("EWOULDBLOCK\n");
8591 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8592 sleep(2); /* Give it time to close our pipe */
8594 ret = read(pd[0], buf, 1); /* Should read EOF */
8596 sprintf(string, "%d\n", ret);
8597 write(3, string, strlen(string));
8601 close(pd[0]); /* We write to pd[1] */
8602 close(pu[1]); /* We read from pu[0] */
8603 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8604 close(pd[1]); /* Pipe pd is now fully closed! */
8605 exit(0); /* Bye bye, thank you for playing! */
8609 if eval $compile_ok; then
8610 echo "$startsh" >mtry
8611 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8613 ./mtry >/dev/null 2>&1
8615 0) eagain=`$cat try.out`;;
8616 1) echo "Could not perform non-blocking setting!";;
8617 2) echo "I did a successful read() for something that was not there!";;
8618 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8619 *) echo "Something terribly wrong happened during testing.";;
8621 rd_nodata=`$cat try.ret`
8622 echo "A read() system call with no data present returns $rd_nodata."
8623 case "$rd_nodata" in
8626 echo "(That's peculiar, fixing that to be -1.)"
8632 echo "Forcing errno EAGAIN on read() with no data available."
8636 echo "Your read() sets errno to $eagain when no data is available."
8639 status=`$cat try.err`
8641 0) echo "And it correctly returns 0 to signal EOF.";;
8642 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8643 *) echo "However, your read() returns '$status' on EOF??";;
8646 if test "$status" = "$rd_nodata"; then
8647 echo "WARNING: you can't distinguish between EOF and no data!"
8651 echo "I can't compile the test program--assuming errno EAGAIN will do."
8658 echo "Using $hint value $eagain."
8659 echo "Your read() returns $rd_nodata when no data is present."
8660 case "$d_eofnblk" in
8661 "$define") echo "And you can see EOF because read() returns 0.";;
8662 "$undef") echo "But you can't see EOF status from read() returned value.";;
8664 echo "(Assuming you can't see EOF status from read anyway.)"
8670 $rm -f try try.* .out core head.c mtry
8672 : see if fchmod exists
8676 : see if fchown exists
8680 : see if this is an fcntl system
8684 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8685 while $test $# -ge 2; do
8687 $define) echo "#include <$2>";;
8691 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8693 if eval $compile; then
8704 : see whether socket exists
8706 $echo $n "Hmm... $c" >&4
8707 if set socket val -f d_socket; eval $csym; $val; then
8708 echo "Looks like you have Berkeley networking support." >&4
8710 if set setsockopt val -f; eval $csym; $val; then
8713 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8717 if $contains socklib libc.list >/dev/null 2>&1; then
8718 echo "Looks like you have Berkeley networking support." >&4
8720 : we will have to assume that it supports the 4.2 BSD interface
8723 echo "You don't have Berkeley networking in libc$_a..." >&4
8724 if test "X$d_socket" = "X$define"; then
8725 echo "...but you seem to believe that you have sockets." >&4
8727 for net in net socket
8729 if test -f /usr/lib/lib$net$_a; then
8730 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8731 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8732 if $contains socket libc.list >/dev/null 2>&1; then
8737 echo "...but the Wollongong group seems to have hacked it in." >&4
8738 sockethdr="-I/usr/netinclude"
8741 echo "Found Berkeley sockets interface in lib$net." >& 4
8742 if $contains setsockopt libc.list >/dev/null 2>&1; then
8745 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8752 if test "X$d_socket" != "X$define"; then
8753 echo "or anywhere else I see." >&4
8761 : see if socketpair exists
8762 set socketpair d_sockpair
8767 echo "Checking the availability of certain socket constants..." >& 4
8768 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8769 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8771 #include <sys/types.h>
8772 #include <sys/socket.h>
8778 set try; if eval $compile; then
8781 set d_${enum}; eval $setvar
8785 : see if sys/select.h has to be included
8786 set sys/select.h i_sysselct
8789 : see if we should include time.h, sys/time.h, or both
8791 if test "X$timeincl" = X; then
8792 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8793 $echo $n "I'm now running the test program...$c"
8794 $cat >try.c <<'EOCP'
8795 #include <sys/types.h>
8800 #ifdef SYSTIMEKERNEL
8803 #include <sys/time.h>
8806 #include <sys/select.h>
8815 struct timezone tzp;
8817 if (foo.tm_sec == foo.tm_sec)
8820 if (bar.tv_sec == bar.tv_sec)
8827 for s_timezone in '-DS_TIMEZONE' ''; do
8829 for s_timeval in '-DS_TIMEVAL' ''; do
8830 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8831 for i_time in '' '-DI_TIME'; do
8832 for i_systime in '-DI_SYSTIME' ''; do
8835 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8836 if eval $compile; then
8837 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8841 $echo $n "Succeeded with $flags$c"
8853 *SYSTIMEKERNEL*) i_systimek="$define"
8854 timeincl=`./findhdr sys/time.h`
8855 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8856 *) i_systimek="$undef";;
8859 *I_TIME*) i_time="$define"
8860 timeincl=`./findhdr time.h`" $timeincl"
8861 echo "We'll include <time.h>." >&4;;
8862 *) i_time="$undef";;
8865 *I_SYSTIME*) i_systime="$define"
8866 timeincl=`./findhdr sys/time.h`" $timeincl"
8867 echo "We'll include <sys/time.h>." >&4;;
8868 *) i_systime="$undef";;
8873 : check for fd_set items
8876 Checking to see how well your C compiler handles fd_set and friends ...
8878 $cat >fd_set.c <<EOCP
8879 #$i_systime I_SYS_TIME
8880 #$i_sysselct I_SYS_SELECT
8881 #$d_socket HAS_SOCKET
8882 #include <sys/types.h>
8884 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8887 #include <sys/time.h>
8890 #include <sys/select.h>
8899 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8906 set fd_set -DTRYBITS
8907 if eval $compile; then
8908 d_fds_bits="$define"
8910 echo "Well, your system knows about the normal fd_set typedef..." >&4
8912 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8913 d_fd_macros="$define"
8916 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8918 d_fd_macros="$undef"
8922 Hmm, your compiler has some difficulty with fd_set. Checking further...
8925 if eval $compile; then
8928 echo "Well, your system has some sort of fd_set available..." >&4
8930 echo "and you have the normal fd_set macros." >&4
8931 d_fd_macros="$define"
8934 but not the normal fd_set macros! Gross! More work for me...
8936 d_fd_macros="$undef"
8939 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8942 d_fd_macros="$undef"
8947 : see if fgetpos exists
8948 set fgetpos d_fgetpos
8951 : see if flock exists
8955 : see if fork exists
8959 : see if pathconf exists
8960 set pathconf d_pathconf
8963 : see if fpathconf exists
8964 set fpathconf d_fpathconf
8968 : check for fpos64_t
8970 echo "Checking to see if you have fpos64_t..." >&4
8973 int main() { fpos64_t x = 7; }
8976 if eval $compile; then
8978 echo "You have fpos64_t."
8981 echo "You do not have fpos64_t."
8983 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8990 hasstruct='varname=$1; struct=$2; shift; shift;
8991 while $test $# -ge 2; do
8993 $define) echo "#include <$2>";;
8997 echo "int main () { struct $struct foo; }" >> try.c;
8999 if eval $compile; then
9008 : see if this is a sys/param system
9009 set sys/param.h i_sysparam
9012 : see if this is a sys/mount.h system
9013 set sys/mount.h i_sysmount
9016 : see if sys/types.h has to be included
9017 set sys/types.h i_systypes
9022 echo "Checking to see if your system supports struct fs_data..." >&4
9023 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9025 case "$d_fs_data_s" in
9026 "$define") echo "Yes, it does." ;;
9027 *) echo "No, it doesn't." ;;
9030 : see if fseeko exists
9034 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9037 : see if fsetpos exists
9038 set fsetpos d_fsetpos
9042 : see if fstatfs exists
9043 set fstatfs d_fstatfs
9047 : see if statvfs exists
9048 set statvfs d_statvfs
9051 : see if fstatvfs exists
9052 set fstatvfs d_fstatvfs
9056 : see if ftello exists
9060 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9063 : see if getcwd exists
9068 : see if getfsstat exists
9069 set getfsstat d_getfsstat
9072 : see if getgrent exists
9073 set getgrent d_getgrent
9076 : see if gethostbyaddr exists
9077 set gethostbyaddr d_gethbyaddr
9080 : see if gethostbyname exists
9081 set gethostbyname d_gethbyname
9084 : see if gethostent exists
9085 set gethostent d_gethent
9088 : see how we will look up host name
9091 if set gethostname val -f d_gethname; eval $csym; $val; then
9092 echo 'gethostname() found.' >&4
9093 d_gethname="$define"
9096 if set uname val -f d_uname; eval $csym; $val; then
9099 uname() was found, but you're running xenix, and older versions of xenix
9100 have a broken uname(). If you don't really know whether your xenix is old
9101 enough to have a broken system call, use the default answer.
9108 rp='Is your uname() broken?'
9111 n*) d_uname="$define"; call=uname;;
9114 echo 'uname() found.' >&4
9121 case "$d_gethname" in
9122 '') d_gethname="$undef";;
9125 '') d_uname="$undef";;
9127 case "$d_uname$d_gethname" in
9132 Every now and then someone has a $call() that lies about the hostname
9133 but can't be fixed for political or economic reasons. If you wish, I can
9134 pretend $call() isn't there and maybe compute hostname at run-time
9135 thanks to the '$phostname' command.
9138 rp="Shall I ignore $call() from now on?"
9141 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9144 case "$phostname" in
9146 *) case "$aphostname" in
9152 file=`./loc $file $file $pth`
9153 aphostname=`echo $file $*`
9158 case "$d_uname$d_gethname" in
9161 case "$phostname" in
9163 echo "There will be no way for $package to get your hostname." >&4;;
9165 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9169 case "$d_phostname" in
9170 '') d_phostname="$undef";;
9173 : see if this is a netdb.h system
9177 : see if prototypes for various gethostxxx netdb.h functions are available
9179 set d_gethostprotos gethostent $i_netdb netdb.h
9182 : see if getlogin exists
9183 set getlogin d_getlogin
9186 : see if getmnt exists
9190 : see if getmntent exists
9191 set getmntent d_getmntent
9194 : see if getnetbyaddr exists
9195 set getnetbyaddr d_getnbyaddr
9198 : see if getnetbyname exists
9199 set getnetbyname d_getnbyname
9202 : see if getnetent exists
9203 set getnetent d_getnent
9206 : see if prototypes for various getnetxxx netdb.h functions are available
9208 set d_getnetprotos getnetent $i_netdb netdb.h
9212 : see if getprotobyname exists
9213 set getprotobyname d_getpbyname
9216 : see if getprotobynumber exists
9217 set getprotobynumber d_getpbynumber
9220 : see if getprotoent exists
9221 set getprotoent d_getpent
9224 : see if getpgid exists
9225 set getpgid d_getpgid
9228 : see if getpgrp2 exists
9229 set getpgrp2 d_getpgrp2
9232 : see if getppid exists
9233 set getppid d_getppid
9236 : see if getpriority exists
9237 set getpriority d_getprior
9240 : see if prototypes for various getprotoxxx netdb.h functions are available
9242 set d_getprotoprotos getprotoent $i_netdb netdb.h
9245 : see if getpwent exists
9246 set getpwent d_getpwent
9250 : see if getservbyname exists
9251 set getservbyname d_getsbyname
9254 : see if getservbyport exists
9255 set getservbyport d_getsbyport
9258 : see if getservent exists
9259 set getservent d_getsent
9262 : see if prototypes for various getservxxx netdb.h functions are available
9264 set d_getservprotos getservent $i_netdb netdb.h
9267 : see if getspent exists
9268 set getspent d_getspent
9271 : see if getspnam exists
9272 set getspnam d_getspnam
9275 : see if gettimeofday or ftime exists
9276 set gettimeofday d_gettimeod
9278 case "$d_gettimeod" in
9284 val="$undef"; set d_ftime; eval $setvar
9287 case "$d_gettimeod$d_ftime" in
9290 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9294 : see if this is an grp system
9300 xxx=`./findhdr grp.h`
9301 $cppstdin $cppflags $cppminus < $xxx >$$.h
9303 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9315 set d_grpasswd; eval $setvar
9319 : see if hasmntopt exists
9320 set hasmntopt d_hasmntopt
9323 : see if this is a netinet/in.h or sys/in.h system
9324 set netinet/in.h i_niin sys/in.h i_sysin
9327 : see if arpa/inet.h has to be included
9328 set arpa/inet.h i_arpainet
9331 : see if htonl --and friends-- exists
9336 : Maybe they are macros.
9341 #include <sys/types.h>
9342 #$i_niin I_NETINET_IN
9344 #$i_arpainet I_ARPA_INET
9346 #include <netinet/in.h>
9352 #include <arpa/inet.h>
9355 printf("Defined as a macro.");
9358 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9359 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9361 echo "But it seems to be defined as a macro." >&4
9369 : see if iconv exists
9375 if set index val -f; eval $csym; $val; then
9376 if set strchr val -f d_strchr; eval $csym; $val; then
9377 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9380 echo "strchr() found." >&4
9384 echo "index() found." >&4
9389 echo "index() found." >&4
9392 if set strchr val -f d_strchr; eval $csym; $val; then
9395 echo "strchr() found." >&4
9397 echo "No index() or strchr() found!" >&4
9402 set d_strchr; eval $setvar
9404 set d_index; eval $setvar
9406 : check whether inet_aton exists
9407 set inet_aton d_inetaton
9410 : see if inttypes.h is available
9411 : we want a real compile instead of Inhdr because some systems
9412 : have an inttypes.h which includes non-existent headers
9415 #include <inttypes.h>
9417 static int32_t foo32 = 0x12345678;
9421 if eval $compile; then
9422 echo "<inttypes.h> found." >&4
9425 echo "<inttypes.h> NOT found." >&4
9434 echo "Checking to see if you have int64_t..." >&4
9436 #include <sys/types.h>
9437 #$i_inttypes I_INTTYPES
9439 #include <inttypes.h>
9441 int main() { int64_t x = 7; }
9444 if eval $compile; then
9446 echo "You have int64_t."
9449 echo "You do not have int64_t."
9457 $cat >isascii.c <<'EOCP'
9469 if eval $compile; then
9470 echo "isascii() found." >&4
9473 echo "isascii() NOT found." >&4
9480 : see if killpg exists
9484 : see if lchown exists
9486 $cat > try.c <<'EOCP'
9487 /* System header to define __stub macros and hopefully few prototypes,
9488 which can conflict with char lchown(); below. */
9490 /* Override any gcc2 internal prototype to avoid an error. */
9491 /* We use char because int might match the return type of a gcc2
9492 builtin and then its argument prototype would still apply. */
9495 /* The GNU C library defines this for functions which it implements
9496 to always fail with ENOSYS. Some functions are actually named
9497 something starting with __ and the normal name is an alias. */
9498 #if defined (__stub_lchown) || defined (__stub___lchown)
9506 if eval $compile; then
9507 $echo "lchown() found." >&4
9510 $echo "lchown() NOT found." >&4
9516 : See if number of significant digits in a double precision number is known
9518 $cat >ldbl_dig.c <<EOM
9528 printf("Contains LDBL_DIG");
9531 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9532 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9533 echo "LDBL_DIG found." >&4
9536 echo "LDBL_DIG NOT found." >&4
9543 : see if link exists
9547 : see if localeconv exists
9548 set localeconv d_locconv
9551 : see if lockf exists
9555 : check for long long
9557 echo "Checking to see if you have long long..." >&4
9558 echo 'int main() { long long x = 7; return 0; }' > try.c
9560 if eval $compile; then
9562 echo "You have have long long."
9565 echo "You do not have long long."
9571 : check for length of long long
9572 case "${d_longlong}${longlongsize}" in
9575 echo "Checking to see how big your long longs are..." >&4
9576 $cat >try.c <<'EOCP'
9580 printf("%d\n", (int)sizeof(long long));
9585 if eval $compile_ok; then
9586 longlongsize=`./try$exe_ext`
9587 echo "Your long longs are $longlongsize bytes long."
9591 echo "(I can't seem to compile the test program. Guessing...)"
9592 rp="What is the size of a long long (in bytes)?"
9596 if $test "X$longsize" = "X$longlongsize"; then
9597 echo "(That isn't any different from an ordinary long.)"
9603 : see if prototype for lseek is available
9605 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9608 : see if lstat exists
9612 : see if madvise exists
9613 set madvise d_madvise
9616 : see if mblen exists
9620 : see if mbstowcs exists
9621 set mbstowcs d_mbstowcs
9624 : see if mbtowc exists
9628 : see if memchr exists
9632 : see if memcmp exists
9636 : see if memcpy exists
9640 : see if memmove exists
9641 set memmove d_memmove
9644 : see if memset exists
9648 : see if mkdir exists
9652 : see if mkdtemp exists
9653 set mkdtemp d_mkdtemp
9656 : see if mkfifo exists
9660 : see if mkstemp exists
9661 set mkstemp d_mkstemp
9664 : see if mkstemps exists
9665 set mkstemps d_mkstemps
9668 : see if mktime exists
9672 : see if this is a sys/mman.h system
9673 set sys/mman.h i_sysmman
9676 : see if mmap exists
9679 : see what shmat returns
9680 : default to something harmless
9682 case "$i_sysmman$d_mmap" in
9684 $cat >mmap.c <<'END'
9685 #include <sys/mman.h>
9688 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9693 echo "and it returns ($mmaptype)." >&4
9699 : see if mprotect exists
9700 set mprotect d_mprotect
9703 : see if msgctl exists
9707 : see if msgget exists
9711 : see if msgsnd exists
9715 : see if msgrcv exists
9719 : see how much of the 'msg*(2)' library is present.
9722 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9723 *"$undef"*) h_msg=false;;
9727 case "`ipcs 2>&1`" in
9728 "SVID messages"*"not configured"*)
9729 echo "Your $osname does not have the msg*(2) configured." >&4
9744 : we could also check for sys/ipc.h ...
9745 if $h_msg && $test `./findhdr sys/msg.h`; then
9746 echo "You have the full msg*(2) library." >&4
9749 echo "You don't have the full msg*(2) library." >&4
9755 : see if msync exists
9759 : see if munmap exists
9763 : see if nice exists
9769 echo "Checking which 64-bit integer type we could use..." >&4
9775 val='"unsigned int"'
9780 *) case "$longsize" in
9784 val='"unsigned long"'
9789 *) case "$d_longlong:$longlongsize" in
9794 val='"unsigned long long"'
9799 *) case "$d_int64_t" in
9818 '') echo "Alas, no 64-bit integer types in sight." >&4
9821 *) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9826 echo "We $verb use '$quadtype' for 64-bit integers." >&4
9831 : check for length of character
9835 echo "Checking to see how big your characters are (hey, you never know)..." >&4
9836 $cat >try.c <<'EOCP'
9840 printf("%d\n", (int)sizeof(char));
9845 if eval $compile_ok; then
9849 echo "(I can't seem to compile the test program. Guessing...)"
9856 rp="What is the size of a character (in bytes)?"
9863 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9865 case "$use64bitint:$d_quad:$quadtype" in
9873 uvtype="unsigned long"
9879 case "$uselongdouble:$d_longdbl" in
9881 nvtype="long double"
9889 $echo "(IV will be "$ivtype", $ivsize bytes)"
9890 $echo "(UV will be "$uvtype", $uvsize bytes)"
9891 $echo "(NV will be "$nvtype", $nvsize bytes)"
9894 #$i_inttypes I_INTTYPES
9896 #include <inttypes.h>
9901 int8_t i = INT8_MAX;
9902 uint8_t u = UINT8_MAX;
9906 int16_t i = INT16_MAX;
9907 uint16_t i = UINT16_MAX;
9908 printf("int16_t\n");
9911 int32_t i = INT32_MAX;
9912 uint32_t u = UINT32_MAX;
9913 printf("int32_t\n");
9919 '') case "$charsize" in
9921 u8type="unsigned char"
9930 if eval $compile; then
9931 case "`./try$exe_ext`" in
9932 int8_t) i8type=int8_t
9942 '') if $test $charsize -ge 1; then
9944 u8type="unsigned char"
9952 '') case "$shortsize" in
9954 u16type="unsigned short"
9963 if eval $compile; then
9964 case "`./try$exe_ext`" in
9976 '') if $test $shortsize -ge 2; then
9978 u16type="unsigned short"
9986 '') case "$longsize" in
9988 u32type="unsigned long"
9992 *) case "$intsize" in
9994 u32type="unsigned int"
10004 '') set try -DINT32
10005 if eval $compile; then
10006 case "`./try$exe_ext`" in
10018 '') if $test $intsize -ge 4; then
10020 u32type="unsigned int"
10028 '') case "$d_quad:$quadtype" in
10030 i64type="$quadtype"
10031 u64type="$uquadtype"
10039 $echo "Checking whether your NVs can preserve your UVs..." >&4
10043 $uvtype k = ($uvtype)~0, l;
10049 printf("preserve\n");
10054 if eval $compile; then
10055 case "`./try$exe_ext`" in
10056 preserve) d_nv_preserves_uv="$define" ;;
10059 case "$d_nv_preserves_uv" in
10060 $define) $echo "Yes, they can." 2>&1 ;;
10061 *) $echo "No, they can't." 2>&1
10062 d_nv_preserves_uv="$undef"
10069 : check for off64_t
10071 echo "Checking to see if you have off64_t..." >&4
10073 #include <sys/types.h>
10074 #include <unistd.h>
10075 int main() { off64_t x = 7; }
10078 if eval $compile; then
10080 echo "You have off64_t."
10083 echo "You do not have off64_t."
10084 case "$lseeksize" in
10085 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10092 : see if POSIX threads are available
10093 set pthread.h i_pthread
10099 : how to create joinable pthreads
10100 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10102 echo "Checking what constant to use for creating joinable pthreads..." >&4
10103 $cat >try.c <<'EOCP'
10104 #include <pthread.h>
10106 int detachstate = JOINABLE;
10109 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10110 if eval $compile; then
10111 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10112 val="$undef" # Yes, undef.
10113 set d_old_pthread_create_joinable
10116 set old_pthread_create_joinable
10119 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10120 if eval $compile; then
10121 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10123 set d_old_pthread_create_joinable
10125 val=PTHREAD_CREATE_UNDETACHED
10126 set old_pthread_create_joinable
10129 set try -DJOINABLE=__UNDETACHED
10130 if eval $compile; then
10131 echo "You seem to use __UNDETACHED." >&4
10133 set d_old_pthread_create_joinable
10136 set old_pthread_create_joinable
10139 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10141 set d_old_pthread_create_joinable
10144 set old_pthread_create_joinable
10151 d_old_pthread_create_joinable="$undef"
10152 old_pthread_create_joinable=""
10155 : see if pause exists
10159 : see if pipe exists
10163 : see if poll exists
10168 : see whether the various POSIXish _yields exist
10170 #include <pthread.h>
10176 #ifdef PTHREAD_YIELD
10179 #ifdef PTHREAD_YIELD_NULL
10180 pthread_yield(NULL);
10186 : see if sched_yield exists
10187 set try -DSCHED_YIELD
10188 if eval $compile; then
10190 sched_yield='sched_yield()'
10194 case "$usethreads" in
10197 $define) echo 'sched_yield() found.' >&4 ;;
10198 *) echo 'sched_yield() NOT found.' >&4 ;;
10204 : see if pthread_yield exists
10205 set try -DPTHREAD_YIELD
10206 if eval $compile; then
10208 case "$sched_yield" in
10209 '') sched_yield='pthread_yield()' ;;
10212 set try -DPTHREAD_YIELD_NULL
10213 if eval $compile; then
10215 case "$sched_yield" in
10216 '') sched_yield='pthread_yield(NULL)' ;;
10222 case "$usethreads" in
10225 $define) echo 'pthread_yield() found.' >&4 ;;
10226 *) echo 'pthread_yield() NOT found.' >&4 ;;
10230 set d_pthread_yield
10233 case "$sched_yield" in
10234 '') sched_yield=undef ;;
10239 : see if this is a pwd.h system
10245 xxx=`./findhdr pwd.h`
10246 $cppstdin $cppflags $cppminus < $xxx >$$.h
10248 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10256 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10264 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10272 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10280 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10288 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10296 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10304 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10316 set d_pwquota; eval $setvar
10317 set d_pwage; eval $setvar
10318 set d_pwchange; eval $setvar
10319 set d_pwclass; eval $setvar
10320 set d_pwexpire; eval $setvar
10321 set d_pwcomment; eval $setvar
10322 set d_pwgecos; eval $setvar
10323 set d_pwpasswd; eval $setvar
10327 : see if readdir and friends exist
10328 set readdir d_readdir
10330 set seekdir d_seekdir
10332 set telldir d_telldir
10334 set rewinddir d_rewinddir
10337 : see if readlink exists
10338 set readlink d_readlink
10341 : see if rename exists
10342 set rename d_rename
10345 : see if rmdir exists
10349 : see if memory.h is available.
10354 : See if it conflicts with string.h
10360 $cppstdin $cppflags $cppminus < $strings > mem.h
10361 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10363 echo "We won't be including <memory.h>."
10373 : can bcopy handle overlapping blocks?
10378 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10380 #$i_memory I_MEMORY
10381 #$i_stdlib I_STDLIB
10382 #$i_string I_STRING
10383 #$i_unistd I_UNISTD
10385 $cat >>try.c <<'EOCP'
10388 # include <memory.h>
10391 # include <stdlib.h>
10394 # include <string.h>
10396 # include <strings.h>
10399 # include <unistd.h> /* Needed for NetBSD */
10403 char buf[128], abc[128];
10409 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10411 for (align = 7; align >= 0; align--) {
10412 for (len = 36; len; len--) {
10414 bcopy(abc, b, len);
10415 for (off = 1; off <= len; off++) {
10416 bcopy(b, b+off, len);
10417 bcopy(b+off, b, len);
10418 if (bcmp(b, abc, len))
10427 if eval $compile_ok; then
10428 if ./try 2>/dev/null; then
10429 echo "Yes, it can."
10432 echo "It can't, sorry."
10433 case "$d_memmove" in
10434 "$define") echo "But that's Ok since you have memmove()." ;;
10438 echo "(I can't compile the test program, so we'll assume not...)"
10439 case "$d_memmove" in
10440 "$define") echo "But that's Ok since you have memmove()." ;;
10445 $rm -f try.* try core
10449 : can memcpy handle overlapping blocks?
10451 case "$d_memcpy" in
10454 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10456 #$i_memory I_MEMORY
10457 #$i_stdlib I_STDLIB
10458 #$i_string I_STRING
10459 #$i_unistd I_UNISTD
10461 $cat >>try.c <<'EOCP'
10464 # include <memory.h>
10467 # include <stdlib.h>
10470 # include <string.h>
10472 # include <strings.h>
10475 # include <unistd.h> /* Needed for NetBSD */
10479 char buf[128], abc[128];
10485 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10486 try to store the string in read-only memory. */
10487 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10489 for (align = 7; align >= 0; align--) {
10490 for (len = 36; len; len--) {
10492 memcpy(b, abc, len);
10493 for (off = 1; off <= len; off++) {
10494 memcpy(b+off, b, len);
10495 memcpy(b, b+off, len);
10496 if (memcmp(b, abc, len))
10505 if eval $compile_ok; then
10506 if ./try 2>/dev/null; then
10507 echo "Yes, it can."
10510 echo "It can't, sorry."
10511 case "$d_memmove" in
10512 "$define") echo "But that's Ok since you have memmove()." ;;
10516 echo "(I can't compile the test program, so we'll assume not...)"
10517 case "$d_memmove" in
10518 "$define") echo "But that's Ok since you have memmove()." ;;
10523 $rm -f try.* try core
10527 : can memcmp be trusted to compare relative magnitude?
10529 case "$d_memcmp" in
10532 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10534 #$i_memory I_MEMORY
10535 #$i_stdlib I_STDLIB
10536 #$i_string I_STRING
10537 #$i_unistd I_UNISTD
10539 $cat >>try.c <<'EOCP'
10542 # include <memory.h>
10545 # include <stdlib.h>
10548 # include <string.h>
10550 # include <strings.h>
10553 # include <unistd.h> /* Needed for NetBSD */
10559 if ((a < b) && memcmp(&a, &b, 1) < 0)
10565 if eval $compile_ok; then
10566 if ./try 2>/dev/null; then
10567 echo "Yes, it can."
10570 echo "No, it can't (it uses signed chars)."
10573 echo "(I can't compile the test program, so we'll assume not...)"
10577 $rm -f try.* try core
10581 : see if select exists
10582 set select d_select
10585 : see if semctl exists
10586 set semctl d_semctl
10589 : see if semget exists
10590 set semget d_semget
10593 : see if semop exists
10597 : see how much of the 'sem*(2)' library is present.
10600 case "$d_semctl$d_semget$d_semop" in
10601 *"$undef"*) h_sem=false;;
10605 case "`ipcs 2>&1`" in
10606 "SVID messages"*"not configured"*)
10607 echo "Your $osname does not have the sem*(2) configured." >&4
10610 set semctl d_semctl
10612 set semget d_semget
10620 : we could also check for sys/ipc.h ...
10621 if $h_sem && $test `./findhdr sys/sem.h`; then
10622 echo "You have the full sem*(2) library." >&4
10625 echo "You don't have the full sem*(2) library." >&4
10631 : see whether sys/sem.h defines union semun
10633 $cat > try.c <<'END'
10634 #include <sys/types.h>
10635 #include <sys/ipc.h>
10636 #include <sys/sem.h>
10637 int main () { union semun semun; semun.buf = 0; }
10640 if eval $compile; then
10641 echo "You have union semun in <sys/sem.h>." >&4
10644 echo "You do not have union semun in <sys/sem.h>." >&4
10647 $rm -f try try.c try.h
10651 : see how to do semctl IPC_STAT
10654 : see whether semctl IPC_STAT can use union semun
10659 # define S_IRUSR S_IREAD
10660 # define S_IWUSR S_IWRITE
10661 # define S_IXUSR S_IEXEC
10663 # define S_IRUSR 0400
10664 # define S_IWUSR 0200
10665 # define S_IXUSR 0100
10667 # define S_IRGRP (S_IRUSR>>3)
10668 # define S_IWGRP (S_IWUSR>>3)
10669 # define S_IXGRP (S_IXUSR>>3)
10670 # define S_IROTH (S_IRUSR>>6)
10671 # define S_IWOTH (S_IWUSR>>6)
10672 # define S_IXOTH (S_IXUSR>>6)
10675 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10676 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10677 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10682 #include <sys/types.h>
10683 #include <sys/ipc.h>
10684 #include <sys/sem.h>
10685 #include <sys/stat.h>
10692 #$d_union_semun HAS_UNION_SEMUN
10695 #ifndef HAS_UNION_SEMUN
10698 struct semid_ds *buf;
10699 unsigned short *array;
10705 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10706 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10708 struct semid_ds argbuf;
10711 st = semctl(sem, 0, IPC_STAT, arg);
10715 # endif /* IPC_STAT */
10716 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10718 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10719 # endif /* IPC_RMID */
10720 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10722 #endif /* IPC_PRIVATE && ... */
10723 printf("semget failed: errno = %d\n", errno);
10729 if eval $compile; then
10732 semun) val="$define" ;;
10738 case "$d_semctl_semun" in
10740 echo "You can use union semun for semctl IPC_STAT." >&4
10743 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10748 : see whether semctl IPC_STAT can use struct semid_ds pointer
10749 $cat > try.c <<'END'
10750 #include <sys/types.h>
10751 #include <sys/ipc.h>
10752 #include <sys/sem.h>
10753 #include <sys/stat.h>
10761 struct semid_ds arg;
10764 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10765 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10768 st = semctl(sem, 0, IPC_STAT, &arg);
10770 printf("semid_ds\n");
10772 # endif /* IPC_STAT */
10773 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10775 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10776 # endif /* IPC_RMID */
10777 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10779 #endif /* IPC_PRIVATE && ... */
10780 printf("semget failed: errno = %d\n", errno);
10787 if eval $compile; then
10790 semid_ds) val="$define" ;;
10794 set d_semctl_semid_ds
10796 case "$d_semctl_semid_ds" in
10798 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10800 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10807 # We do not have the full sem*(2) library, so assume we can not
10813 set d_semctl_semid_ds
10818 : see if setegid exists
10819 set setegid d_setegid
10822 : see if seteuid exists
10823 set seteuid d_seteuid
10826 : see if setgrent exists
10827 set setgrent d_setgrent
10830 : see if sethostent exists
10831 set sethostent d_sethent
10834 : see if setlinebuf exists
10835 set setlinebuf d_setlinebuf
10838 : see if setlocale exists
10839 set setlocale d_setlocale
10842 : see if setnetent exists
10843 set setnetent d_setnent
10846 : see if setprotoent exists
10847 set setprotoent d_setpent
10850 : see if setpgid exists
10851 set setpgid d_setpgid
10854 : see if setpgrp2 exists
10855 set setpgrp2 d_setpgrp2
10858 : see if setpriority exists
10859 set setpriority d_setprior
10862 : see if setpwent exists
10863 set setpwent d_setpwent
10866 : see if setregid exists
10867 set setregid d_setregid
10869 set setresgid d_setresgid
10872 : see if setreuid exists
10873 set setreuid d_setreuid
10875 set setresuid d_setresuid
10878 : see if setrgid exists
10879 set setrgid d_setrgid
10882 : see if setruid exists
10883 set setruid d_setruid
10886 : see if setservent exists
10887 set setservent d_setsent
10890 : see if setsid exists
10891 set setsid d_setsid
10894 : see if setspent exists
10895 set setspent d_setspent
10898 : see if setvbuf exists
10899 set setvbuf d_setvbuf
10902 : see if sfio.h is available
10907 : see if sfio library is available
10918 : Ok, but do we want to use it.
10922 true|$define|[yY]*) dflt='y';;
10925 echo "$package can use the sfio library, but it is experimental."
10926 rp="You seem to have sfio available, do you want to try using it?"
10930 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
10932 : Remove sfio from list of libraries to use
10933 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10936 echo "libs = $libs" >&4
10940 *) case "$usesfio" in
10941 true|$define|[yY]*)
10942 echo "Sorry, cannot find sfio on this machine" >&4
10943 echo "Ignoring your setting of usesfio=$usesfio" >&4
10951 $define) usesfio='true';;
10952 *) usesfio='false';;
10955 : see if shmctl exists
10956 set shmctl d_shmctl
10959 : see if shmget exists
10960 set shmget d_shmget
10963 : see if shmat exists
10966 : see what shmat returns
10969 $cat >shmat.c <<'END'
10970 #include <sys/shm.h>
10973 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10978 echo "and it returns ($shmattype)." >&4
10979 : see if a prototype for shmat is available
10980 xxx=`./findhdr sys/shm.h`
10981 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10982 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10993 set d_shmatprototype
10996 : see if shmdt exists
11000 : see how much of the 'shm*(2)' library is present.
11003 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11004 *"$undef"*) h_shm=false;;
11008 case "`ipcs 2>&1`" in
11009 "SVID shared memory"*"not configured"*)
11010 echo "Your $osname does not have the shm*(2) configured." >&4
11013 set shmctl d_shmctl
11015 set shmget d_shmget
11025 : we could also check for sys/ipc.h ...
11026 if $h_shm && $test `./findhdr sys/shm.h`; then
11027 echo "You have the full shm*(2) library." >&4
11030 echo "You don't have the full shm*(2) library." >&4
11037 : see if we have sigaction
11038 if set sigaction val -f d_sigaction; eval $csym; $val; then
11039 echo 'sigaction() found.' >&4
11040 $cat > try.c <<'EOP'
11042 #include <sys/types.h>
11043 #include <signal.h>
11046 struct sigaction act, oact;
11048 oact.sa_handler = 0;
11049 /* so that act and oact are used */
11050 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11054 if eval $compile_ok; then
11057 echo "But you don't seem to have a useable struct sigaction." >&4
11061 echo 'sigaction NOT found.' >&4
11064 set d_sigaction; eval $setvar
11065 $rm -f try try$_o try.c
11067 : see if sigsetjmp exists
11069 case "$d_sigsetjmp" in
11071 $cat >try.c <<'EOP'
11072 #include <setjmp.h>
11077 if (sigsetjmp(env,1))
11080 siglongjmp(env, 1);
11085 if eval $compile; then
11086 if ./try >/dev/null 2>&1; then
11087 echo "POSIX sigsetjmp found." >&4
11091 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11097 echo "sigsetjmp not found." >&4
11101 *) val="$d_sigsetjmp"
11102 case "$d_sigsetjmp" in
11103 $define) echo "POSIX sigsetjmp found." >&4;;
11104 $undef) echo "sigsetjmp not found." >&4;;
11112 : see if sys/stat.h is available
11113 set sys/stat.h i_sysstat
11117 : see if stat knows about block sizes
11119 echo "Checking to see if your struct stat has st_blocks field..." >&4
11120 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11124 : see if this is a sys/vfs.h system
11125 set sys/vfs.h i_sysvfs
11129 : see if this is a sys/statfs.h system
11130 set sys/statfs.h i_sysstatfs
11135 echo "Checking to see if your system supports struct statfs..." >&4
11136 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
11138 case "$d_statfs_s" in
11139 "$define") echo "Yes, it does." ;;
11140 *) echo "No, it doesn't." ;;
11145 : see if struct statfs knows about f_flags
11146 case "$d_statfs_s" in
11149 echo "Checking to see if your struct statfs has f_flags field..." >&4
11150 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
11154 set d_statfs_f_flags
11158 case "$d_statfs_f_flags" in
11159 "$define") echo "Yes, it does." ;;
11160 *) echo "No, it doesn't." ;;
11163 : see if _ptr and _cnt from stdio act std
11165 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11166 echo "(Looks like you have stdio.h from Linux.)"
11167 case "$stdio_ptr" in
11168 '') stdio_ptr='((fp)->_IO_read_ptr)'
11171 *) ptr_lval=$d_stdio_ptr_lval;;
11173 case "$stdio_cnt" in
11174 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11177 *) cnt_lval=$d_stdio_cnt_lval;;
11179 case "$stdio_base" in
11180 '') stdio_base='((fp)->_IO_read_base)';;
11182 case "$stdio_bufsiz" in
11183 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11186 case "$stdio_ptr" in
11187 '') stdio_ptr='((fp)->_ptr)'
11190 *) ptr_lval=$d_stdio_ptr_lval;;
11192 case "$stdio_cnt" in
11193 '') stdio_cnt='((fp)->_cnt)'
11196 *) cnt_lval=$d_stdio_cnt_lval;;
11198 case "$stdio_base" in
11199 '') stdio_base='((fp)->_base)';;
11201 case "$stdio_bufsiz" in
11202 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11205 : test whether _ptr and _cnt really work
11206 echo "Checking how std your stdio is..." >&4
11209 #define FILE_ptr(fp) $stdio_ptr
11210 #define FILE_cnt(fp) $stdio_cnt
11212 FILE *fp = fopen("try.c", "r");
11215 18 <= FILE_cnt(fp) &&
11216 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11224 if eval $compile; then
11226 echo "Your stdio acts pretty std."
11229 echo "Your stdio isn't very std."
11232 echo "Your stdio doesn't appear very std."
11238 : Can _ptr be used as an lvalue?
11239 case "$d_stdstdio$ptr_lval" in
11240 $define$define) val=$define ;;
11243 set d_stdio_ptr_lval
11246 : Can _cnt be used as an lvalue?
11247 case "$d_stdstdio$cnt_lval" in
11248 $define$define) val=$define ;;
11251 set d_stdio_cnt_lval
11254 : see if _base is also standard
11256 case "$d_stdstdio" in
11260 #define FILE_base(fp) $stdio_base
11261 #define FILE_bufsiz(fp) $stdio_bufsiz
11263 FILE *fp = fopen("try.c", "r");
11266 19 <= FILE_bufsiz(fp) &&
11267 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11274 if eval $compile; then
11276 echo "And its _base field acts std."
11279 echo "But its _base field isn't std."
11282 echo "However, it seems to be lacking the _base field."
11291 Checking how to access stdio streams by file descriptor number...
11293 case "$stdio_stream_array" in
11294 '') $cat >try.c <<EOCP
11297 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11301 for s in _iob __iob __sF
11303 set try -DSTDIO_STREAM_ARRAY=$s
11304 if eval $compile; then
11305 case "`./try$exe_ext`" in
11306 yes) stdio_stream_array=$s; break ;;
11310 $rm -f try.* try$exe_ext
11312 case "$stdio_stream_array" in
11314 I can't figure out how to access stdio streams by file descriptor number.
11316 d_stdio_stream_array="$undef"
11319 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11321 d_stdio_stream_array="$define"
11325 : see if strcoll exists
11326 set strcoll d_strcoll
11329 : check for structure copying
11331 echo "Checking to see if your C compiler can copy structs..." >&4
11332 $cat >try.c <<'EOCP'
11342 if $cc -c try.c >/dev/null 2>&1 ; then
11344 echo "Yup, it can."
11347 echo "Nope, it can't."
11353 : see if strerror and/or sys_errlist[] exist
11355 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11356 if set strerror val -f d_strerror; eval $csym; $val; then
11357 echo 'strerror() found.' >&4
11358 d_strerror="$define"
11359 d_strerrm='strerror(e)'
11360 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11361 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11362 d_syserrlst="$define"
11364 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11365 d_syserrlst="$undef"
11367 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11368 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11369 echo 'strerror() found in string header.' >&4
11370 d_strerror="$define"
11371 d_strerrm='strerror(e)'
11372 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11373 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11374 d_syserrlst="$define"
11376 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11377 d_syserrlst="$undef"
11379 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11380 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11381 d_strerror="$undef"
11382 d_syserrlst="$define"
11383 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11385 echo 'strerror() and sys_errlist[] NOT found.' >&4
11386 d_strerror="$undef"
11387 d_syserrlst="$undef"
11388 d_strerrm='"unknown"'
11392 : see if strtod exists
11393 set strtod d_strtod
11396 : see if strtol exists
11397 set strtol d_strtol
11400 : see if strtold exists
11401 set strtold d_strtold
11404 : see if strtoll exists
11405 set strtoll d_strtoll
11408 : see if strtoul exists
11409 set strtoul d_strtoul
11412 : see if strtoull exists
11413 set strtoull d_strtoull
11416 : see if strtouq exists
11417 set strtouq d_strtouq
11420 : see if strxfrm exists
11421 set strxfrm d_strxfrm
11424 : see if symlink exists
11425 set symlink d_symlink
11428 : see if syscall exists
11429 set syscall d_syscall
11432 : see if sysconf exists
11433 set sysconf d_sysconf
11436 : see if system exists
11437 set system d_system
11440 : see if tcgetpgrp exists
11441 set tcgetpgrp d_tcgetpgrp
11444 : see if tcsetpgrp exists
11445 set tcsetpgrp d_tcsetpgrp
11448 : see if prototype for telldir is available
11450 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11453 : see if this is a sys/times.h system
11454 set sys/times.h i_systimes
11457 : see if times exists
11459 if set times val -f d_times; eval $csym; $val; then
11460 echo 'times() found.' >&4
11463 case "$i_systimes" in
11464 "$define") inc='sys/times.h';;
11466 rp="What is the type returned by times() on this system?"
11467 set clock_t clocktype long stdio.h sys/types.h $inc
11470 echo 'times() NOT found, hope that will do.' >&4
11475 : see if truncate exists
11476 set truncate d_truncate
11479 : see if tzname[] exists
11481 if set tzname val -a d_tzname; eval $csym; $val; then
11483 echo 'tzname[] found.' >&4
11486 echo 'tzname[] NOT found.' >&4
11491 : see if umask exists
11495 : see if ustat exists
11499 : backward compatibility for d_hvfork
11500 if test X$d_hvfork != X; then
11501 d_vfork="$d_hvfork"
11504 : see if there is a vfork
11509 : Ok, but do we want to use it. vfork is reportedly unreliable in
11510 : perl on Solaris 2.x, and probably elsewhere.
11514 case "$usevfork" in
11520 Perl can only use a vfork() that doesn't suffer from strict
11521 restrictions on calling functions or modifying global data in
11522 the child. For example, glibc-2.1 contains such a vfork()
11523 that is unsuitable. If your system provides a proper fork()
11524 call, chances are that you do NOT want perl to use vfork().
11527 rp="Do you still want to use vfork()?"
11532 echo "Ok, we won't use vfork()."
11541 $define) usevfork='true';;
11542 *) usevfork='false';;
11545 : see if this is an sysdir system
11546 set sys/dir.h i_sysdir
11549 : see if this is an sysndir system
11550 set sys/ndir.h i_sysndir
11553 : see if closedir exists
11554 set closedir d_closedir
11557 case "$d_closedir" in
11560 echo "Checking whether closedir() returns a status..." >&4
11561 cat > closedir.c <<EOM
11562 #$i_dirent I_DIRENT /**/
11563 #$i_sysdir I_SYS_DIR /**/
11564 #$i_sysndir I_SYS_NDIR /**/
11565 #$i_systypes I_SYS_TYPES /**/
11567 #if defined(I_SYS_TYPES)
11568 #include <sys/types.h>
11570 #if defined(I_DIRENT)
11571 #include <dirent.h>
11572 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11573 #include <sys/dir.h>
11577 #include <sys/ndir.h>
11581 #include <ndir.h> /* may be wrong in the future */
11583 #include <sys/dir.h>
11588 int main() { return closedir(opendir(".")); }
11591 if eval $compile_ok; then
11592 if ./closedir > /dev/null 2>&1 ; then
11593 echo "Yes, it does."
11596 echo "No, it doesn't."
11600 echo "(I can't seem to compile the test program--assuming it doesn't)"
11608 set d_void_closedir
11611 : check for volatile keyword
11613 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11614 $cat >try.c <<'EOCP'
11617 typedef struct _goo_struct goo_struct;
11618 goo_struct * volatile goo = ((goo_struct *)0);
11619 struct _goo_struct {
11624 typedef unsigned short foo_t;
11625 char *volatile foo;
11627 volatile foo_t blech;
11631 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11633 echo "Yup, it does."
11636 echo "Nope, it doesn't."
11642 : see if there is a wait4
11646 : see if waitpid exists
11647 set waitpid d_waitpid
11650 : see if wcstombs exists
11651 set wcstombs d_wcstombs
11654 : see if wctomb exists
11655 set wctomb d_wctomb
11658 : preserve RCS keywords in files with variable substitution, grrr
11663 Revision='$Revision'
11665 case "$crosscompile" in
11666 ''|[nN]*) crosscompile="$undef" ;;
11670 next|rhapsody|darwin) multiarch="$define" ;;
11672 case "$multiarch" in
11673 ''|[nN]*) multiarch="$undef" ;;
11676 : check for alignment requirements
11678 case "$crosscompile$multiarch" in
11681 You seem to be either cross-compiling or doing a multiarchitecture build,
11682 skipping the memory alignment check.
11685 case "$alignbytes" in
11686 '') alignbytes=8 ;;
11690 case "$alignbytes" in
11691 '') echo "Checking alignment constraints..." >&4
11692 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11693 $cat >try.c <<'EOCP'
11694 typedef long double NV;
11697 $cat >try.c <<'EOCP'
11701 $cat >>try.c <<'EOCP'
11709 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11714 if eval $compile_ok; then
11718 echo "(I can't seem to compile the test program...)"
11721 *) dflt="$alignbytes"
11724 rp="Doubles must be aligned on a how-many-byte boundary?"
11732 : set the base revision
11735 : check for ordering of bytes in a long
11737 case "$crosscompile$multiarch" in
11740 You seem to be either cross-compiling or doing a multiarchitecture build,
11741 skipping the byteorder check.
11747 case "$byteorder" in
11750 In the following, larger digits indicate more significance. A big-endian
11751 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11752 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11753 machines may have weird orders like 3412. A Cray will report 87654321,
11754 an Alpha will report 12345678. If the test program works the default is
11756 I'm now running the test program...
11758 $cat >try.c <<'EOCP'
11765 char c[sizeof(long)];
11768 if (sizeof(long) > 4)
11769 u.l = (0x08070605L << 32) | 0x04030201L;
11772 for (i = 0; i < sizeof(long); i++)
11773 printf("%c", u.c[i]+'0');
11780 if eval $compile && ./try > /dev/null; then
11783 [1-4][1-4][1-4][1-4]|12345678|87654321)
11784 echo "(The test program ran ok.)"
11785 echo "byteorder=$dflt"
11788 ????|????????) echo "(The test program ran ok.)" ;;
11789 *) echo "(The test program didn't run right for some reason.)" ;;
11794 (I can't seem to compile the test program. Guessing big-endian...)
11797 case "$xxx_prompt" in
11799 rp="What is the order of bytes in a long?"
11813 : how do we catenate cpp tokens here?
11815 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11816 $cat >cpp_stuff.c <<'EOCP'
11817 #define RCAT(a,b)a/**/b
11818 #define ACAT(a,b)a ## b
11822 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11823 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11824 echo "Oh! Smells like ANSI's been here." >&4
11825 echo "We can catify or stringify, separately or together!"
11827 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11828 echo "Ah, yes! The good old days!" >&4
11829 echo "However, in the good old days we don't know how to stringify and"
11830 echo "catify at the same time."
11834 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
11835 to have to edit the values of CAT[2-5] in config.h...
11837 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11841 : see if this is a db.h system
11847 : Check db version.
11849 echo "Checking Berkeley DB version ..." >&4
11855 #include <sys/types.h>
11860 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11861 int Major, Minor, Patch ;
11862 unsigned long Version ;
11863 (void)db_version(&Major, &Minor, &Patch) ;
11864 printf("You have Berkeley DB Version 2 or greater\n");
11866 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11867 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11868 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11869 Major, Minor, Patch) ;
11871 /* check that db.h & libdb are compatible */
11872 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11873 printf("db.h and libdb are incompatible\n") ;
11877 printf("db.h and libdb are compatible\n") ;
11879 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11880 + DB_VERSION_PATCH ;
11882 /* needs to be >= 2.3.4 */
11883 if (Version < 2003004) {
11884 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11885 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11891 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11892 printf("You have Berkeley DB Version 1\n");
11893 exit(0); /* DB version < 2: the coast is clear. */
11895 exit(1); /* <db.h> not Berkeley DB? */
11901 if eval $compile_ok && ./try; then
11902 echo 'Looks OK.' >&4
11904 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
11908 : Remove db from list of libraries to use
11909 echo "Removing unusable -ldb from library list" >&4
11910 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11913 echo "libs = $libs" >&4
11923 : Check the return type needed for hash
11925 echo "Checking return type needed for hash for Berkeley DB ..." >&4
11931 #include <sys/types.h>
11934 #ifndef DB_VERSION_MAJOR
11935 u_int32_t hash_cb (ptr, size)
11943 info.hash = hash_cb;
11947 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11948 if $contains warning try.out >>/dev/null 2>&1 ; then
11951 db_hashtype='u_int32_t'
11954 : XXX Maybe we should just give up here.
11955 db_hashtype=u_int32_t
11957 echo "Help: I can't seem to compile the db test program." >&4
11958 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11961 echo "Your version of Berkeley DB uses $db_hashtype for hash."
11963 *) db_hashtype=u_int32_t
11968 : Check the return type needed for prefix
11970 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11976 #include <sys/types.h>
11979 #ifndef DB_VERSION_MAJOR
11980 size_t prefix_cb (key1, key2)
11988 info.prefix = prefix_cb;
11992 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11993 if $contains warning try.out >>/dev/null 2>&1 ; then
11994 db_prefixtype='int'
11996 db_prefixtype='size_t'
11999 db_prefixtype='size_t'
12000 : XXX Maybe we should just give up here.
12002 echo "Help: I can't seem to compile the db test program." >&4
12003 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12006 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12008 *) db_prefixtype='size_t'
12012 : check for void type
12014 echo "Checking to see how well your C compiler groks the void type..." >&4
12015 case "$voidflags" in
12017 $cat >try.c <<'EOCP'
12023 extern void moo(); /* function returning void */
12024 void (*goo)(); /* ptr to func returning void */
12026 void *hue; /* generic ptr */
12039 int main() { sub(); }
12041 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12042 voidflags=$defvoidused
12043 echo "Good. It appears to support void to the level $package wants.">&4
12044 if $contains warning .out >/dev/null 2>&1; then
12045 echo "However, you might get some warnings that look like this:"
12049 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12050 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12051 echo "It supports 1..."
12052 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12053 echo "It also supports 2..."
12054 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12056 echo "And it supports 4 but not 8 definitely."
12058 echo "It doesn't support 4..."
12059 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12061 echo "But it supports 8."
12064 echo "Neither does it support 8."
12068 echo "It does not support 2..."
12069 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12071 echo "But it supports 4 and 8."
12073 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12075 echo "And it supports 4 but has not heard about 8."
12077 echo "However it supports 8 but not 4."
12082 echo "There is no support at all for void."
12087 case "$voidflags" in
12089 *) $cat >&4 <<'EOM'
12090 Support flag bits are:
12091 1: basic void declarations.
12092 2: arrays of pointers to functions returning void.
12093 4: operations between pointers to and addresses of void functions.
12094 8: generic void pointers.
12097 rp="Your void support flags add up to what?"
12105 : How can we generate normalized random numbers ?
12107 echo "Looking for a random number function..." >&4
12108 case "$randfunc" in
12110 if set drand48 val -f; eval $csym; $val; then
12112 echo "Good, found drand48()." >&4
12113 elif set random val -f; eval $csym; $val; then
12115 echo "OK, found random()." >&4
12118 echo "Yick, looks like I have to use rand()." >&4
12129 *-Dmy_rand=*|*-Dmy_srand=*)
12130 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12131 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12132 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12133 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12137 while $test "$cont"; do
12138 rp="Use which function to generate random numbers?"
12140 if $test "$ans" = "$dflt"; then
12146 if set $ans val -f; eval $csym; $val; then
12150 rp="I cannot find function $ans. Use that name anyway?"
12159 case "$randfunc" in
12161 drand01="drand48()"
12167 case "$randbits" in
12169 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12171 #$i_unistd I_UNISTD
12172 #$i_stdlib I_STDLIB
12175 # include <unistd.h>
12178 # include <stdlib.h>
12183 register unsigned long tmp;
12184 register unsigned long max = 0L;
12186 for (i = 1000; i; i--) {
12187 tmp = (unsigned long) $randfunc();
12188 if (tmp > max) max = tmp;
12190 for (i = 0; max; i++)
12196 if eval $compile_ok; then
12200 echo "(I can't seem to compile the test program...)"
12207 rp="How many bits does your $randfunc() function produce?"
12211 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12212 seedfunc="s$randfunc"
12213 randseedtype=unsigned
12217 rp="How many bits does your $randfunc() function produce?"
12220 seedfunc="s$randfunc"
12221 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12222 if set $seedfunc val -f; eval $csym; $val; then
12223 echo "(Using $seedfunc() to seed random generator)"
12225 echo "(Warning: no $seedfunc() to seed random generator)"
12228 randseedtype=unsigned
12236 echo "Determining whether or not we are on an EBCDIC system..." >&4
12237 $cat >tebcdic.c <<'EOM'
12240 if ('M'==0xd4) return 0;
12247 if eval $compile_ok; then
12249 echo "You have EBCDIC." >&4
12252 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12255 echo "I'm unable to compile the test program." >&4
12256 echo "I'll assume ASCII or some ISO Latin." >&4
12258 $rm -f tebcdic.c tebcdic
12264 Checking how to flush all pending stdio output...
12266 # I only know how to find the first 32 possibly open files on SunOS.
12267 # See also hints/sunos_4_1.sh and util.c --AD
12269 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12271 $cat >>try.c <<EOCP
12273 #$i_unistd I_UNISTD
12275 # include <unistd.h>
12277 #$d_sysconf HAS_SYSCONF
12278 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12279 #ifdef HAS_STDIO_STREAM_ARRAY
12280 # define STDIO_STREAM_ARRAY $stdio_stream_array
12283 FILE* p = fopen("try.out", "w");
12287 # ifdef TRY_FPRINTF
12291 #ifdef TRY_FFLUSH_NULL
12294 #ifdef TRY_FFLUSH_ALL
12296 long open_max = -1;
12297 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12298 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12300 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12301 open_max = sysconf(_SC_OPEN_MAX);
12304 open_max = FOPEN_MAX;
12307 open_max = OPEN_MAX;
12316 # ifdef HAS_STDIO_STREAM_ARRAY
12317 if (open_max > 0) {
12319 for (i = 0; i < open_max; i++)
12320 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12321 STDIO_STREAM_ARRAY[i]._file < open_max &&
12322 STDIO_STREAM_ARRAY[i]._flag)
12323 fflush(&STDIO_STREAM_ARRAY[i]);
12331 : first we have to find out how _not_ to flush
12332 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12334 set try -DTRY_FPUTC
12335 if eval $compile; then
12337 ./try$exe_ext 2>/dev/null
12338 if $test ! -s try.out -a "X$?" = X42; then
12344 set try -DTRY_FPRINTF
12346 if eval $compile; then
12348 ./try$exe_ext 2>/dev/null
12349 if $test ! -s try.out -a "X$?" = X42; then
12350 output=-DTRY_FPRINTF
12356 : check for fflush NULL behaviour
12357 case "$fflushNULL" in
12358 '') set try -DTRY_FFLUSH_NULL $output
12359 if eval $compile; then
12361 ./try$exe_ext 2>/dev/null
12363 if $test -s try.out -a "X$code" = X42; then
12364 fflushNULL="`$cat try.out`"
12366 if $test "X$code" != X42; then
12368 (If this test failed, don't worry, we'll try another method shortly.)
12373 $rm -f core try.core core.try.*
12374 case "$fflushNULL" in
12376 Your fflush(NULL) works okay.
12378 fflushNULL="$define"
12381 Your fflush(NULL) isn't working (contrary to ANSI C).
12383 fflushNULL="$undef"
12386 Cannot figure out whether your fflush(NULL) works or not.
12387 I'm assuming it doesn't (contrary to ANSI C).
12389 fflushNULL="$undef"
12393 $define|true|[yY]*)
12394 fflushNULL="$define"
12397 fflushNULL="$undef"
12400 : check explicit looping only if NULL did not work
12401 case "$fflushNULL" in
12403 : check for fflush all behaviour
12404 case "$fflushall" in
12405 '') set try -DTRY_FFLUSH_ALL $output
12406 if eval $compile; then
12408 (Now testing the other method--but note that also this may fail.)
12411 ./try$exe_ext 2>/dev/null
12412 if $test -s try.out -a "X$?" = X42; then
12413 fflushall="`$cat try.out`"
12416 $rm -f core try.core core.try.*
12417 case "$fflushall" in
12419 Whew. Flushing explicitly all the stdio streams works.
12421 fflushall="$define"
12424 Sigh. Flushing explicitly all the stdio streams doesn't work.
12429 Cannot figure out whether flushing stdio streams explicitly works or not.
12430 I'm assuming it doesn't.
12436 "$define"|true|[yY]*)
12437 fflushall="$define"
12444 *) fflushall="$undef"
12447 case "$fflushNULL$fflushall" in
12450 I cannot figure out how to flush pending stdio output.
12454 $rm -f try.* try$exe_ext
12456 : Store the full pathname to the ar program for use in the C program
12457 : Respect a hint or command line value for full_ar.
12462 : Store the full pathname to the sed program for use in the C program
12465 : see what type gids are declared as in the kernel
12467 echo "Looking for the type for group ids returned by getgid()."
12468 set gid_t gidtype xxx stdio.h sys/types.h
12472 xxx=`./findhdr sys/user.h`
12473 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12475 unsigned) dflt="$1 $2" ;;
12479 *) dflt="$gidtype";;
12482 gid_t) echo "gid_t found." ;;
12483 *) rp="What is the type for group ids returned by getgid()?"
12491 *_t) zzz="$gidtype" ;;
12494 echo "Checking the size of $zzz..." >&4
12496 #include <sys/types.h>
12499 printf("%d\n", (int)sizeof($gidtype));
12504 if eval $compile_ok; then
12508 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12511 echo "Your $zzz is $gidsize bytes long."
12516 echo "(I can't compile the test program--guessing $gidsize.)" >&4
12522 *_t) zzz="$gidtype" ;;
12525 echo "Checking the sign of $zzz..." >&4
12527 #include <sys/types.h>
12538 if eval $compile; then
12542 echo "(I can't execute the test program--guessing unsigned.)" >&4
12546 1) echo "Your $zzz is unsigned." ;;
12547 -1) echo "Your $zzz is signed." ;;
12553 echo "(I can't compile the test program--guessing unsigned.)" >&4
12559 if $test X"$quadtype" != X; then
12561 echo "Checking how to print 64-bit integers..." >&4
12563 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12564 $cat >try.c <<'EOCP'
12565 #include <sys/types.h>
12568 int q = 12345678901;
12569 printf("%ld\n", q);
12573 if eval $compile; then
12574 yyy=`./try$exe_ext`
12577 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12578 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12579 echo "We will use %d."
12585 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12586 $cat >try.c <<'EOCP'
12587 #include <sys/types.h>
12590 long q = 12345678901;
12591 printf("%ld\n", q);
12595 if eval $compile; then
12596 yyy=`./try$exe_ext`
12599 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12600 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12601 echo "We will use %ld."
12607 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12608 $cat >try.c <<'EOCP'
12609 #include <sys/types.h>
12610 #include <inttypes.h>
12613 int64_t q = 12345678901;
12614 printf("%" PRId64 "\n", q);
12618 if eval $compile; then
12619 yyy=`./try$exe_ext`
12622 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12623 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12624 echo "We will use the C9X style."
12630 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12631 $cat >try.c <<'EOCP'
12632 #include <sys/types.h>
12635 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12636 printf("%lld\n", q);
12640 if eval $compile; then
12641 yyy=`./try$exe_ext`
12644 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12645 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12646 echo "We will use the %lld style."
12652 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12654 #include <sys/types.h>
12657 $quadtype q = 12345678901;
12658 printf("%Ld\n", q);
12662 if eval $compile; then
12663 yyy=`./try$exe_ext`
12666 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12667 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12668 echo "We will use %Ld."
12674 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12676 #include <sys/types.h>
12679 $quadtype q = 12345678901;
12680 printf("%qd\n", q);
12684 if eval $compile; then
12685 yyy=`./try$exe_ext`
12688 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12689 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12690 echo "We will use %qd."
12696 if $test X"$sPRId64" = X; then
12697 echo "Cannot figure out how to print 64-bit integers." >&4
12705 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
12706 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
12708 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
12709 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
12715 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12717 if $test X"$ivsize" = X8; then
12718 ivdformat="$sPRId64"
12719 uvuformat="$sPRIu64"
12720 uvoformat="$sPRIo64"
12721 uvxformat="$sPRIx64"
12723 if $test X"$ivsize" = X"$longsize"; then
12729 if $test X"$ivsize" = X"$intsize"; then
12736 if $test X"$ivsize" = X"$shortsize"; then
12746 case "$ivdformat" in
12747 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12754 $echo "Checking the format string to be used for gids..." >&4
12757 -1) if $test X"$gidsize" = X"$ivsize"; then
12758 gidformat="$ivdformat"
12760 if $test X"$gidsize" = X"$longsize"; then
12763 if $test X"$gidsize" = X"$intsize"; then
12766 if $test X"$gidsize" = X"$shortsize"; then
12773 *) if $test X"$gidsize" = X"$uvsize"; then
12774 gidformat="$uvuformat"
12776 if $test X"$gidsize" = X"$longsize"; then
12779 if $test X"$gidsize" = X"$intsize"; then
12782 if $test X"$gidsize" = X"$shortsize"; then
12791 : see if getgroups exists
12792 set getgroups d_getgrps
12795 : see if setgroups exists
12796 set setgroups d_setgrps
12800 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12802 case "$d_getgrps$d_setgrps" in
12804 case "$groupstype" in
12805 '') dflt="$gidtype" ;;
12806 *) dflt="$groupstype" ;;
12809 What type of pointer is the second argument to getgroups() and setgroups()?
12810 Usually this is the same as group ids, $gidtype, but not always.
12813 rp='What type pointer is the second argument to getgroups() and setgroups()?'
12817 *) groupstype="$gidtype";;
12821 echo "Checking if your $make program sets \$(MAKE)..." >&4
12822 case "$make_set_make" in
12824 $sed 's/^X //' > testmake.mak << 'EOF'
12826 X @echo 'maketemp="$(MAKE)"'
12828 case "`$make -f testmake.mak 2>/dev/null`" in
12829 *maketemp=*) make_set_make='#' ;;
12830 *) make_set_make="MAKE=$make" ;;
12832 $rm -f testmake.mak
12835 case "$make_set_make" in
12836 '#') echo "Yup, it does.";;
12837 *) echo "Nope, it doesn't.";;
12840 : see what type is used for mode_t
12841 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12842 set mode_t modetype int stdio.h sys/types.h
12845 : define a fucntion to check prototypes
12846 $cat > protochk <<EOSH
12849 optimize="$optimize"
12851 prototype="$prototype"
12856 $cat >> protochk <<'EOSH'
12861 while test $# -ge 2; do
12863 $define) echo "#include <$2>" >> try.c ;;
12864 literal) echo "$2" >> try.c ;;
12868 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
12869 cat >> try.c <<'EOCP'
12870 #ifdef CAN_PROTOTYPE
12871 #define _(args) args
12876 echo "$foo" >> try.c
12877 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12878 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12884 $eunicefix protochk
12886 : see what type is used for size_t
12887 rp="What is the type used for the length parameter for string functions?"
12888 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12891 : check for type of arguments to gethostbyaddr.
12892 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12893 case "$d_gethbyaddr" in
12897 Checking to see what type of arguments are accepted by gethostbyaddr().
12899 hdrs="$define sys/types.h
12900 $d_socket sys/socket.h
12901 $i_niin netinet/in.h
12903 $i_unistd unistd.h"
12904 : The first arg can 'char *' or 'void *'
12905 : The second arg is some of integral type
12906 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12907 for yyy in size_t long int; do
12908 case "$netdb_host_type" in
12909 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12910 if ./protochk "$try" $hdrs; then
12911 echo "Your system accepts $xxx for the first arg."
12912 echo "...and $yyy for the second arg."
12913 netdb_host_type="$xxx"
12914 netdb_hlen_type="$yyy"
12920 : In case none of those worked, prompt the user.
12921 case "$netdb_host_type" in
12922 '') rp='What is the type for the 1st argument to gethostbyaddr?'
12925 netdb_host_type=$ans
12926 rp='What is the type for the 2nd argument to gethostbyaddr?'
12929 netdb_hlen_type=$ans
12933 *) : no gethostbyaddr, so pick harmless defaults
12934 netdb_host_type='char *'
12935 netdb_hlen_type="$sizetype"
12938 # Remove the "const" if needed. -- but then we'll have a
12940 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12943 : check for type of argument to gethostbyname.
12944 if test "X$netdb_name_type" = X ; then
12945 case "$d_gethbyname" in
12949 Checking to see what type of argument is accepted by gethostbyname().
12951 hdrs="$define sys/types.h
12952 $d_socket sys/socket.h
12953 $i_niin netinet/in.h
12955 $i_unistd unistd.h"
12956 for xxx in "const char *" "char *"; do
12957 case "$netdb_name_type" in
12958 '') try="extern struct hostent *gethostbyname($xxx);"
12959 if ./protochk "$try" $hdrs; then
12960 echo "Your system accepts $xxx."
12961 netdb_name_type="$xxx"
12966 : In case none of those worked, prompt the user.
12967 case "$netdb_name_type" in
12968 '') rp='What is the type for the 1st argument to gethostbyname?'
12971 netdb_name_type=$ans
12975 *) : no gethostbyname, so pick harmless default
12976 netdb_name_type='char *'
12981 : check for type of 1st argument to getnetbyaddr.
12982 if test "X$netdb_net_type" = X ; then
12983 case "$d_getnbyaddr" in
12987 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12989 hdrs="$define sys/types.h
12990 $d_socket sys/socket.h
12991 $i_niin netinet/in.h
12993 $i_unistd unistd.h"
12994 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12995 case "$netdb_net_type" in
12996 '') try="extern struct netent *getnetbyaddr($xxx, int);"
12997 if ./protochk "$try" $hdrs; then
12998 echo "Your system accepts $xxx."
12999 netdb_net_type="$xxx"
13004 : In case none of those worked, prompt the user.
13005 case "$netdb_net_type" in
13006 '') rp='What is the type for the 1st argument to getnetbyaddr?'
13009 netdb_net_type=$ans
13013 *) : no getnetbyaddr, so pick harmless default
13014 netdb_net_type='long'
13018 : locate the preferred pager for this system
13032 '') dflt=/usr/ucb/more;;
13039 rp='What pager is used on your system?'
13043 : see what type pids are declared as in the kernel
13044 rp="What is the type of process ids on this system?"
13045 set pid_t pidtype int stdio.h sys/types.h
13048 : Find earliest binary compatible site_perl subdirectory perl can use.
13049 case "$bincompat5005" in
13050 "$define") xs_apiversion='5.005' ;;
13051 *) xs_apiversion=$version ;; # The current site_perl version.
13053 : Find earliest pure perl site_perl subdirectory perl can use.
13054 : The versioned directories started at 5.005.
13055 pm_apiversion='5.005'
13057 : check for length of pointer
13061 echo "Checking to see how big your pointers are..." >&4
13062 if test "$voidflags" -gt 7; then
13063 echo '#define VOID_PTR char *' > try.c
13065 echo '#define VOID_PTR void *' > try.c
13067 $cat >>try.c <<'EOCP'
13071 printf("%d\n", (int)sizeof(VOID_PTR));
13076 if eval $compile_ok; then
13078 echo "Your pointers are $ptrsize bytes long."
13081 echo "(I can't seem to compile the test program. Guessing...)" >&4
13082 rp="What is the size of a pointer (in bytes)?"
13090 : see if ar generates random libraries by itself
13092 echo "Checking how to generate random libraries on your machine..." >&4
13093 echo 'int bar1() { return bar2(); }' > bar1.c
13094 echo 'int bar2() { return 2; }' > bar2.c
13095 $cat > foo.c <<'EOP'
13096 int main() { printf("%d\n", bar1()); exit(0); }
13098 $cc $ccflags -c bar1.c >/dev/null 2>&1
13099 $cc $ccflags -c bar2.c >/dev/null 2>&1
13100 $cc $ccflags -c foo.c >/dev/null 2>&1
13101 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13102 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13103 ./foobar >/dev/null 2>&1; then
13104 echo "$ar appears to generate random libraries itself."
13107 elif $ar ts bar$_a >/dev/null 2>&1 &&
13108 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13109 ./foobar >/dev/null 2>&1; then
13110 echo "a table of contents needs to be added with '$ar ts'."
13117 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13118 $test -f $ranlib || ranlib=''
13121 if $test -n "$ranlib"; then
13122 echo "your system has '$ranlib'; we'll use that."
13125 echo "your system doesn't seem to support random libraries"
13126 echo "so we'll use lorder and tsort to order the libraries."
13133 : check for type of arguments to select.
13134 case "$selecttype" in
13135 '') case "$d_select" in
13139 Checking to see what type of arguments are accepted by select().
13141 hdrs="$define sys/types.h
13142 $i_systime sys/time.h
13143 $i_sysselct sys/select.h
13144 $d_socket sys/socket.h"
13145 : The first arg can be int, unsigned, or size_t
13146 : The last arg may or may not be 'const'
13148 : void pointer has been seen but using that
13149 : breaks the selectminbits test
13150 for xxx in 'fd_set *' 'int *'; do
13151 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13152 for tmo in 'struct timeval *' 'const struct timeval *'; do
13154 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13155 if ./protochk "$try" $hdrs; then
13156 echo "Your system accepts $xxx."
13165 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13166 case "$d_fd_set" in
13167 $define) dflt="fd_set *" ;;
13176 *) : no select, so pick a harmless default
13183 : check for the select 'width'
13184 case "$selectminbits" in
13185 '') case "$d_select" in
13189 Checking to see on how many bits at a time your select() operates...
13192 #include <sys/types.h>
13194 #$i_systime I_SYS_TIME
13195 #$i_systimek I_SYS_TIME_KERNEL
13200 # ifdef I_SYS_TIME_KERNEL
13203 # include <sys/time.h>
13204 # ifdef I_SYS_TIME_KERNEL
13208 #$i_sysselct I_SYS_SELECT
13209 #ifdef I_SYS_SELECT
13210 #include <sys/select.h>
13212 #$d_socket HAS_SOCKET
13214 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13218 #define S sizeof(*(b))
13220 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13221 #define NBITS (NBYTES * 8)
13230 fp = fopen("try.c", "r");
13236 b = ($selecttype)s;
13237 for (i = 0; i < NBITS; i++)
13241 select(fd + 1, b, 0, 0, &t);
13242 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13243 printf("%d\n", i + 1);
13248 if eval $compile_ok; then
13249 selectminbits=`./try`
13250 case "$selectminbits" in
13252 Cannot figure out on how many bits at a time your select() operates.
13253 I'll play safe and guess it is 32 bits.
13259 *) bits="$selectminbits bits" ;;
13261 echo "Your select() operates on $bits at a time." >&4
13263 rp='What is the minimum number of bits your select() operates on?'
13264 case "$byteorder" in
13265 1234|12345678) dflt=32 ;;
13270 selectminbits="$val"
13274 *) : no select, so pick a harmless default
13281 : Trace out the files included by signal.h, then look for SIGxxx names.
13282 : Remove SIGARRAYSIZE used by HPUX.
13283 : Remove SIGSTKSIZE used by Linux.
13284 : Remove SIGSTKSZ used by Posix.
13285 : Remove SIGTYP void lines used by OS2.
13286 : Some cpps, like os390, dont give the file name anywhere
13287 if [ "X$fieldn" = X ]; then
13288 : Just make some guesses. We check them later.
13289 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13291 xxx=`echo '#include <signal.h>' |
13292 $cppstdin $cppminus $cppflags 2>/dev/null |
13293 $grep '^[ ]*#.*include' |
13294 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13296 : Check this list of files to be sure we have parsed the cpp output ok.
13297 : This will also avoid potentially non-existent files, such
13300 for xx in $xxx /dev/null ; do
13301 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13303 : If we have found no files, at least try signal.h
13304 case "$xxxfiles" in
13305 '') xxxfiles=`./findhdr signal.h` ;;
13308 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13309 print substr($2, 4, 20)
13311 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13312 print substr($3, 4, 20)
13314 : Append some common names just in case the awk scan failed.
13315 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13316 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13317 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13318 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13319 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13321 : generate a few handy files for later
13322 $cat > signal.c <<'EOCP'
13323 #include <sys/types.h>
13324 #include <signal.h>
13328 /* Strange style to avoid deeply-nested #if/#else/#endif */
13331 # define NSIG (_NSIG)
13337 # define NSIG (SIGMAX+1)
13343 # define NSIG (SIG_MAX+1)
13349 # define NSIG (MAXSIG+1)
13355 # define NSIG (MAX_SIG+1)
13360 # ifdef SIGARRAYSIZE
13361 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13367 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13371 /* Default to some arbitrary number that's big enough to get most
13372 of the common signals.
13378 printf("NSIG %d\n", NSIG);
13384 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13386 printf "#ifdef SIG"; printf $1; printf "\n"
13387 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13388 printf $1; printf ");\n"
13392 printf "#endif /* JUST_NSIG */\n";
13393 printf "exit(0);\n}\n";
13396 $cat >signal.awk <<'EOP'
13397 BEGIN { ndups = 0 }
13398 $1 ~ /^NSIG$/ { nsig = $2 }
13399 ($1 !~ /^NSIG$/) && (NF == 2) {
13400 if ($2 > maxsig) { maxsig = $2 }
13401 if (sig_name[$2]) {
13402 dup_name[ndups] = $1
13403 dup_num[ndups] = $2
13415 printf("NSIG %d\n", nsig);
13416 for (n = 1; n < nsig; n++) {
13418 printf("%s %d\n", sig_name[n], sig_num[n])
13421 printf("NUM%d %d\n", n, n)
13424 for (n = 0; n < ndups; n++) {
13425 printf("%s %d\n", dup_name[n], dup_num[n])
13429 $cat >signal_cmd <<EOS
13431 if $test -s signal.lst; then
13432 echo "Using your existing signal.lst file"
13437 $cat >>signal_cmd <<'EOS'
13440 if eval $compile_ok; then
13441 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13443 echo "(I can't seem be able to compile the whole test program)" >&4
13444 echo "(I'll try it in little pieces.)" >&4
13445 set signal -DJUST_NSIG
13446 if eval $compile_ok; then
13447 ./signal$_exe > signal.nsg
13450 echo "I can't seem to figure out how many signals you have." >&4
13451 echo "Guessing 50." >&4
13452 echo 'NSIG 50' > signal.nsg
13454 : Now look at all the signal names, one at a time.
13455 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13456 $cat > signal.c <<EOCP
13457 #include <sys/types.h>
13458 #include <signal.h>
13461 printf("$xx %d\n", SIG${xx});
13466 if eval $compile; then
13467 echo "SIG${xx} found."
13468 ./signal$_exe >> signal.ls1
13470 echo "SIG${xx} NOT found."
13473 if $test -s signal.ls1; then
13474 $cat signal.nsg signal.ls1 |
13475 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13479 if $test -s signal.lst; then
13482 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13483 echo 'kill -l' >signal
13484 set X `csh -f <signal`
13488 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13490 echo $@ | $tr ' ' $trnl | \
13491 $awk '{ printf "%s %d\n", $1, ++s; }
13492 END { printf "NSIG %d\n", ++s }' >signal.lst
13494 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13496 chmod a+x signal_cmd
13497 $eunicefix signal_cmd
13499 : generate list of signal names
13501 case "$sig_name_init" in
13503 *) case "$sig_num_init" in
13504 ''|*,*) doinit=yes ;;
13509 echo "Generating a list of signal names and numbers..." >&4
13511 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13512 sig_name=`$awk 'BEGIN { printf "ZERO " }
13513 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13514 sig_num=`$awk 'BEGIN { printf "0 " }
13515 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13516 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
13517 !/^NSIG/ { printf "\"%s\", ", $1 }
13518 END { printf "0\n" }' signal.lst`
13519 sig_num_init=`$awk 'BEGIN { printf "0, " }
13520 !/^NSIG/ { printf "%d, ", $2}
13521 END { printf "0\n"}' signal.lst`
13524 echo "The following $sig_count signals are available:"
13526 echo $sig_name | $awk \
13527 'BEGIN { linelen = 0 }
13529 for (i = 1; i <= NF; i++) {
13530 name = "SIG" $i " "
13531 linelen = linelen + length(name)
13532 if (linelen > 70) {
13534 linelen = length(name)
13540 $rm -f signal signal.c signal.awk signal.lst signal_cmd
13542 : check for socklen_t
13544 echo "Checking to see if you have socklen_t..." >&4
13546 #include <sys/types.h>
13547 #$d_socket HAS_SOCKET
13549 #include <sys/socket.h>
13551 int main() { socklen_t x = 16; }
13554 if eval $compile; then
13556 echo "You have socklen_t."
13559 echo "You do not have socklen_t."
13560 case "$sizetype" in
13561 size_t) echo "(You do have size_t, that might work.)" ;;
13568 : check for type of the size argument to socket calls
13569 case "$d_socket" in
13573 Checking to see what type is the last argument of accept().
13575 hdrs="$define sys/types.h $d_socket sys/socket.h"
13577 case "$d_socklen_t" in
13578 "$define") yyy="$yyy socklen_t"
13580 yyy="$yyy $sizetype int long"
13581 for xxx in $yyy; do
13582 case "$socksizetype" in
13583 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
13584 if ./protochk "$try" $hdrs; then
13585 echo "Your system accepts '$xxx *' for the last argument of accept()."
13586 socksizetype="$xxx"
13591 : In case none of those worked, prompt the user.
13592 case "$socksizetype" in
13593 '') rp='What is the type for the last argument to accept()?'
13600 *) : no sockets, so pick relatively harmless defaults
13601 socksizetype='char *'
13605 : see what type is used for signed size_t
13606 set ssize_t ssizetype int stdio.h sys/types.h
13609 $cat > ssize.c <<EOM
13611 #include <sys/types.h>
13612 #define Size_t $sizetype
13613 #define SSize_t $dflt
13616 if (sizeof(Size_t) == sizeof(SSize_t))
13618 else if (sizeof(Size_t) == sizeof(int))
13627 if eval $compile_ok && ./ssize > /dev/null; then
13628 ssizetype=`./ssize`
13629 echo "I'll be using $ssizetype for functions returning a byte count." >&4
13632 Help! I can't compile and run the ssize_t test program: please enlighten me!
13633 (This is probably a misconfiguration in your system or libraries, and
13634 you really ought to fix it. Still, I'll try anyway.)
13636 I need a type that is the same size as $sizetype, but is guaranteed to
13637 be signed. Common values are ssize_t, int and long.
13640 rp="What signed type is the same size as $sizetype?"
13644 $rm -f ssize ssize.*
13646 : see what type of char stdio uses.
13648 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13649 echo "Your stdio uses unsigned chars." >&4
13650 stdchar="unsigned char"
13652 echo "Your stdio uses signed chars." >&4
13656 : see if time exists
13658 if test "X$d_time" = X -o X"$timetype" = X; then
13659 if set time val -f d_time; eval $csym; $val; then
13660 echo 'time() found.' >&4
13662 rp="What is the type returned by time() on this system?"
13663 set time_t timetype long stdio.h sys/types.h
13666 echo 'time() not found, hope that will do.' >&4
13674 : see what type uids are declared as in the kernel
13676 echo "Looking for the type for user ids returned by getuid()."
13677 set uid_t uidtype xxx stdio.h sys/types.h
13681 xxx=`./findhdr sys/user.h`
13682 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13684 unsigned) dflt="$1 $2" ;;
13688 *) dflt="$uidtype";;
13691 uid_t) echo "uid_t found." ;;
13692 *) rp="What is the type for user ids returned by getuid()?"
13700 *_t) zzz="$uidtype" ;;
13703 echo "Checking the size of $zzz..." >&4
13705 #include <sys/types.h>
13708 printf("%d\n", (int)sizeof($uidtype));
13713 if eval $compile_ok; then
13717 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13720 echo "Your $zzz is $uidsize bytes long."
13725 echo "(I can't compile the test program--guessing $uidsize.)" >&4
13730 *_t) zzz="$uidtype" ;;
13733 echo "Checking the sign of $zzz..." >&4
13735 #include <sys/types.h>
13746 if eval $compile; then
13750 echo "(I can't execute the test program--guessing unsigned.)" >&4
13754 1) echo "Your $zzz is unsigned." ;;
13755 -1) echo "Your $zzz is signed." ;;
13761 echo "(I can't compile the test program--guessing unsigned.)" >&4
13767 $echo "Checking the format string to be used for uids..." >&4
13770 -1) if $test X"$uidsize" = X"$ivsize"; then
13771 uidformat="$ivdformat"
13773 if $test X"$uidsize" = X"$longsize"; then
13776 if $test X"$uidsize" = X"$intsize"; then
13779 if $test X"$uidsize" = X"$shortsize"; then
13786 *) if $test X"$uidsize" = X"$uvsize"; then
13787 uidformat="$uvuformat"
13789 if $test X"$uidsize" = X"$longsize"; then
13792 if $test X"$uidsize" = X"$intsize"; then
13795 if $test X"$uidsize" = X"$shortsize"; then
13804 : see if dbm.h is available
13805 : see if dbmclose exists
13806 set dbmclose d_dbmclose
13809 case "$d_dbmclose" in
13819 *) set rpcsvc/dbm.h i_rpcsvcdbm
13824 *) echo "We won't be including <dbm.h>"
13834 : see if this is a sys/file.h system
13839 : do we need to include sys/file.h ?
13843 if $h_sysfile; then
13845 echo "We'll be including <sys/file.h>." >&4
13848 echo "We won't be including <sys/file.h>." >&4
13858 : see if fcntl.h is there
13863 : see if we can include fcntl.h
13869 echo "We'll be including <fcntl.h>." >&4
13872 if $h_sysfile; then
13873 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13875 echo "We won't be including <fcntl.h>." >&4
13887 : see if this is a iconv.h system
13888 set iconv.h i_iconv
13891 : see if locale.h is available
13892 set locale.h i_locale
13895 : see if mach cthreads are available
13896 if test "X$usethreads" = "X$define"; then
13897 set mach/cthreads.h i_machcthr
13900 i_machcthr="$undef"
13905 : see if this is a math.h system
13909 : see if this is a mntent.h system
13910 set mntent.h i_mntent
13913 : see if ndbm.h is available
13918 : see if dbm_open exists
13919 set dbm_open d_dbm_open
13921 case "$d_dbm_open" in
13924 echo "We won't be including <ndbm.h>"
13933 : see if net/errno.h is available
13935 set net/errno.h val
13938 : Unfortunately, it causes problems on some systems. Arrgh.
13941 cat > try.c <<'EOM'
13944 #include <net/errno.h>
13950 if $cc $ccflags -c try.c >/dev/null 2>&1; then
13951 echo "We'll be including <net/errno.h>." >&4
13953 echo "We won't be including <net/errno.h>." >&4
13962 : see if netinet/tcp.h is available
13963 set netinet/tcp.h i_netinettcp
13966 : see if this is a poll.h system
13971 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
13972 $cat <<'EOSH' > Cppsym.know
13973 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13974 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13975 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13976 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13977 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13978 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13979 bull c cadmus clipper CMU COFF COMPILER_VERSION
13980 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13981 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13982 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13983 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13984 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13985 H3050R H3050RX hbullx20 hcx host_mips
13986 hp200 hp300 hp700 HP700 hp800 hp9000
13987 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13988 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13989 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13990 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13991 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13992 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13993 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13994 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13995 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13996 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13997 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13998 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13999 MATH_HAS_NO_SIDE_EFFECTS
14000 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14001 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14002 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14003 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14004 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14005 NetBSD news1500 news1700 news1800 news1900 news3700
14006 news700 news800 news900 NeXT NLS ns16000 ns32000
14007 ns32016 ns32332 ns32k nsc32000
14008 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14009 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14010 pc532 pdp11 PGC PIC plexus PORTAR posix
14011 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14012 POSIX_C_SOURCE POSIX_SOURCE POWER
14013 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14014 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14015 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14016 sony sony_news sonyrisc sparc sparclite spectrum
14017 stardent stdc STDC_EXT stratos sun sun3 sun386
14018 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14019 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14020 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14021 sysV68 sysV88 Tek4132 Tek4300 titan
14022 tower tower32 tower32_200 tower32_600 tower32_700
14023 tower32_800 tower32_850 tss
14024 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14025 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14026 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14027 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14028 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14029 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14032 # Maybe put other stuff here too.
14033 cat <<EOSH >>Cppsym.know
14036 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14037 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14038 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14039 $rm -f Cppsym.a Cppsym.b
14040 cat <<EOSH > Cppsym
14042 if $test \$# -gt 0; then
14043 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14044 if $test -s Cppsym.got; then
14051 $tr " " "$trnl" | ./Cppsym.try
14057 cat <<EOSH > Cppsym.try
14059 cat <<'EOCP' > try.c
14065 cat <<'EOSH' >> Cppsym.try
14067 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
14068 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
14069 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
14070 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
14074 cat <<EOSH >> Cppsym.try
14076 case "$osname-$gccversion" in
14077 irix-) ccflags="\$ccflags -woff 1178" ;;
14079 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14081 chmod +x Cppsym.try
14082 $eunicefix Cppsym.try
14083 ./Cppsym < Cppsym.know > Cppsym.true
14084 : now check the C compiler for additional symbols
14085 postprocess_cc_v=''
14087 aix) postprocess_cc_v="|$tr , ' '" ;;
14094 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14097 -D*) echo "\$i" | $sed 's/^-D//';;
14098 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14103 postprocess_cc_v=''
14106 ./ccsym > ccsym1.raw
14107 if $test -s ccsym1.raw; then
14108 $sort ccsym1.raw | $uniq >ccsym.raw
14110 mv ccsym1.raw ccsym.raw
14113 $awk '/\=/ { print $0; next }
14114 { print $0"=1" }' ccsym.raw >ccsym.list
14115 $awk '/\=/ { print $0; next }
14116 { print $0"=1" }' Cppsym.true >ccsym.true
14117 $comm -13 ccsym.true ccsym.list >ccsym.own
14118 $comm -12 ccsym.true ccsym.list >ccsym.com
14119 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14121 if $test -z ccsym.raw; then
14122 echo "Your C compiler doesn't seem to define any symbols!" >&4
14124 echo "However, your C preprocessor defines the following symbols:"
14127 cppsymbols=`$cat Cppsym.true`
14128 cppsymbols=`echo $cppsymbols`
14129 cppccsymbols="$cppsymbols"
14131 if $test -s ccsym.com; then
14132 echo "Your C compiler and pre-processor define these symbols:"
14133 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14136 cppccsymbols=`$cat ccsym.com`
14137 cppccsymbols=`echo $cppccsymbols`
14138 $test "$silent" || sleep 1
14140 if $test -s ccsym.cpp; then
14141 $test "$also" && echo " "
14142 echo "Your C pre-processor ${also}defines the following symbols:"
14143 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14145 cppsymbols=`$cat ccsym.cpp`
14146 cppsymbols=`echo $cppsymbols`
14147 $test "$silent" || sleep 1
14149 if $test -s ccsym.own; then
14150 $test "$also" && echo " "
14151 echo "Your C compiler ${also}defines the following cpp symbols:"
14152 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14153 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14154 ccsymbols=`$cat ccsym.own`
14155 ccsymbols=`echo $ccsymbols`
14156 $test "$silent" || sleep 1
14161 : see if this is a termio system
14165 if $test `./findhdr termios.h`; then
14166 set tcsetattr i_termios
14172 "$define") echo "You have POSIX termios.h... good!" >&4;;
14173 *) if ./Cppsym pyr; then
14174 case "`/bin/universe`" in
14175 ucb) if $test `./findhdr sgtty.h`; then
14177 echo "<sgtty.h> found." >&4
14179 echo "System is pyramid with BSD universe."
14180 echo "<sgtty.h> not found--you could have problems." >&4
14182 *) if $test `./findhdr termio.h`; then
14184 echo "<termio.h> found." >&4
14186 echo "System is pyramid with USG universe."
14187 echo "<termio.h> not found--you could have problems." >&4
14191 if $test `./findhdr termio.h`; then
14192 echo "<termio.h> found." >&4
14194 elif $test `./findhdr sgtty.h`; then
14195 echo "<sgtty.h> found." >&4
14198 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14201 if $test `./findhdr sgtty.h`; then
14202 echo "<sgtty.h> found." >&4
14204 elif $test `./findhdr termio.h`; then
14205 echo "<termio.h> found." >&4
14208 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14212 set i_termio; eval $setvar
14213 val=$val2; set i_sgtty; eval $setvar
14214 val=$val3; set i_termios; eval $setvar
14216 : see if this is a shadow.h system
14217 set shadow.h i_shadow
14220 : see if this is a socks.h system
14221 set socks.h i_socks
14224 : see if stdarg is available
14226 if $test `./findhdr stdarg.h`; then
14227 echo "<stdarg.h> found." >&4
14230 echo "<stdarg.h> NOT found." >&4
14234 : see if varags is available
14236 if $test `./findhdr varargs.h`; then
14237 echo "<varargs.h> found." >&4
14239 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14242 : set up the varargs testing programs
14243 $cat > varargs.c <<EOP
14245 #include <stdarg.h>
14248 #include <varargs.h>
14252 int f(char *p, ...)
14266 p = va_arg(ap, char *);
14271 $cat > varargs <<EOP
14273 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14282 : now check which varargs header should be included
14287 if `./varargs I_STDARG`; then
14289 elif `./varargs I_VARARGS`; then
14294 if `./varargs I_VARARGS`; then
14301 echo "I could not find the definition for va_dcl... You have problems..." >&4
14302 val="$undef"; set i_stdarg; eval $setvar
14303 val="$undef"; set i_varargs; eval $setvar
14308 case "$i_varhdr" in
14310 val="$define"; set i_stdarg; eval $setvar
14311 val="$undef"; set i_varargs; eval $setvar
14314 val="$undef"; set i_stdarg; eval $setvar
14315 val="$define"; set i_varargs; eval $setvar
14318 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14322 : see if stddef is available
14323 set stddef.h i_stddef
14326 : see if sys/access.h is available
14327 set sys/access.h i_sysaccess
14330 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14331 set sys/filio.h i_sysfilio
14334 if $test `./findhdr sys/ioctl.h`; then
14336 echo '<sys/ioctl.h> found.' >&4
14339 if $test $i_sysfilio = "$define"; then
14340 echo '<sys/ioctl.h> NOT found.' >&4
14342 $test $i_sgtty = "$define" && xxx="sgtty.h"
14343 $test $i_termio = "$define" && xxx="termio.h"
14344 $test $i_termios = "$define" && xxx="termios.h"
14345 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14352 : see if this is a syslog.h system
14353 set syslog.h i_syslog
14357 : see if this is a sys/mode.h system
14358 set sys/mode.h i_sysmode
14361 : see if sys/resource.h has to be included
14362 set sys/resource.h i_sysresrc
14365 : see if sys/security.h is available
14366 set sys/security.h i_syssecrt
14369 : see if this is a sys/statvfs.h system
14370 set sys/statvfs.h i_sysstatvfs
14373 : see if this is a sys/uio.h system
14374 set sys/uio.h i_sysuio
14377 : see if this is a sys/un.h system
14378 set sys/un.h i_sysun
14382 : see if this is a sys/utsname.h system
14383 set sys/utsname.h i_sysutsname
14386 : see if this is a syswait system
14387 set sys/wait.h i_syswait
14390 : see if this is a ustat.h system
14391 set ustat.h i_ustat
14394 : see if this is an utime system
14395 set utime.h i_utime
14398 : see if this is a values.h system
14399 set values.h i_values
14402 : see if this is a vfork system
14405 set vfork.h i_vfork
14413 : see if gdbm.h is available
14418 : see if gdbm_open exists
14419 set gdbm_open d_gdbm_open
14421 case "$d_gdbm_open" in
14424 echo "We won't be including <gdbm.h>"
14434 echo "Looking for extensions..." >&4
14435 : If we are using the old config.sh, known_extensions may contain
14436 : old or inaccurate or duplicate values.
14437 known_extensions=''
14438 nonxs_extensions=''
14439 : We do not use find because it might not be available.
14440 : We do not just use MANIFEST because the user may have dropped
14441 : some additional extensions into the source tree and expect them
14444 : Function to recursively find available extensions, ignoring DynaLoader
14445 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14449 DynaLoader|dynaload) ;;
14451 if $test -f $xxx/$xxx.xs; then
14452 known_extensions="$known_extensions $1$xxx";
14453 elif $test -f $xxx/Makefile.PL; then
14454 nonxs_extensions="$nonxs_extensions $1$xxx";
14456 if $test -d $xxx -a $# -lt 10; then
14459 eval $find_extensions;
14471 eval $find_extensions
14472 set X $nonxs_extensions
14474 nonxs_extensions="$*"
14475 set X $known_extensions
14477 known_extensions="$*"
14480 : Now see which are supported on this system.
14482 for xxx in $known_extensions ; do
14486 $define) avail_ext="$avail_ext $xxx" ;;
14489 GDBM_File|gdbm_fil)
14491 $define) avail_ext="$avail_ext $xxx" ;;
14494 NDBM_File|ndbm_fil)
14497 case "$osname-$use64bitint" in
14500 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14503 *) avail_ext="$avail_ext $xxx" ;;
14508 ODBM_File|odbm_fil)
14509 case "${i_dbm}${i_rpcsvcdbm}" in
14511 case "$osname-$use64bitint" in
14514 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14517 *) avail_ext="$avail_ext $xxx" ;;
14523 case "$useposix" in
14524 true|define|y) avail_ext="$avail_ext $xxx" ;;
14528 case "$useopcode" in
14529 true|define|y) avail_ext="$avail_ext $xxx" ;;
14533 case "$d_socket" in
14534 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14538 case "$usethreads" in
14539 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14543 : XXX Do we need a useipcsysv variable here
14544 case "${d_msg}${d_sem}${d_shm}" in
14545 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14548 *) avail_ext="$avail_ext $xxx"
14557 : Now see which nonxs extensions are supported on this system.
14558 : For now assume all are.
14560 for xxx in $nonxs_extensions ; do
14562 *) nonxs_ext="$nonxs_ext $xxx"
14574 A number of extensions are supplied with $package. You may choose to
14575 compile these extensions for dynamic loading (the default), compile
14576 them into the $package executable (static loading), or not include
14577 them at all. Answer "none" to include no extensions.
14578 Note that DynaLoader is always built and need not be mentioned here.
14581 case "$dynamic_ext" in
14582 '') dflt="$avail_ext" ;;
14583 *) dflt="$dynamic_ext"
14584 # Perhaps we are reusing an old out-of-date config.sh.
14587 if test X"$dynamic_ext" != X"$avail_ext"; then
14589 NOTICE: Your previous config.sh list may be incorrect.
14590 The extensions now available to you are
14592 but the default list from your previous config.sh is
14604 rp="What extensions do you wish to load dynamically?"
14607 none) dynamic_ext=' ' ;;
14608 *) dynamic_ext="$ans" ;;
14611 case "$static_ext" in
14613 : Exclude those already listed in dynamic linking
14615 for xxx in $avail_ext; do
14616 case " $dynamic_ext " in
14618 *) dflt="$dflt $xxx" ;;
14625 *) dflt="$static_ext"
14632 rp="What extensions do you wish to load statically?"
14635 none) static_ext=' ' ;;
14636 *) static_ext="$ans" ;;
14641 A number of extensions are supplied with $package. Answer "none"
14642 to include no extensions.
14643 Note that DynaLoader is always built and need not be mentioned here.
14646 case "$static_ext" in
14647 '') dflt="$avail_ext" ;;
14648 *) dflt="$static_ext"
14649 # Perhaps we are reusing an old out-of-date config.sh.
14652 if test X"$static_ext" != X"$avail_ext"; then
14654 NOTICE: Your previous config.sh list may be incorrect.
14655 The extensions now available to you are
14657 but the default list from your previous config.sh is
14666 : Exclude those that are not xs extensions
14670 rp="What extensions do you wish to include?"
14673 none) static_ext=' ' ;;
14674 *) static_ext="$ans" ;;
14679 set X $dynamic_ext $static_ext $nonxs_ext
14683 : Remove build directory name from cppstdin so it can be used from
14684 : either the present location or the final installed location.
14686 : Get out of the UU directory to get correct path name.
14688 case "$cppstdin" in
14690 echo "Stripping down cppstdin path name"
14696 : end of configuration questions
14698 echo "End of configuration questions."
14701 : back to where it started
14702 if test -d ../UU; then
14706 : configuration may be patched via a 'config.over' file
14707 if $test -f config.over; then
14710 rp='I see a config.over file. Do you wish to load it?'
14713 n*) echo "OK, I'll ignore it.";;
14715 echo "Configuration override changes have been loaded."
14720 : in case they want portability, strip down executable paths
14721 case "$d_portable" in
14724 echo "Stripping down executable paths..." >&4
14725 for file in $loclist $trylist; do
14727 eval $file=`basename $temp`
14732 : create config.sh file
14734 echo "Creating config.sh..." >&4
14735 $spitshell <<EOT >config.sh
14738 # This file was produced by running the Configure script. It holds all the
14739 # definitions figured out by Configure. Should you modify one of these values,
14740 # do not forget to propagate your changes by running "Configure -der". You may
14741 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14744 # Package name : $package
14745 # Source directory : $src
14746 # Configuration time: $cf_time
14747 # Configured by : $cf_by
14748 # Target system : $myuname
14758 Revision='$Revision'
14765 alignbytes='$alignbytes'
14766 ansi2knr='$ansi2knr'
14767 aphostname='$aphostname'
14768 api_revision='$api_revision'
14769 api_subversion='$api_subversion'
14770 api_version='$api_version'
14771 api_versionstring='$api_versionstring'
14774 archlibexp='$archlibexp'
14775 archname64='$archname64'
14776 archname='$archname'
14777 archobjs='$archobjs'
14782 bincompat5005='$bincompat5005'
14786 byteorder='$byteorder'
14788 castflags='$castflags'
14791 cccdlflags='$cccdlflags'
14792 ccdlflags='$ccdlflags'
14794 ccsymbols='$ccsymbols'
14796 cf_email='$cf_email'
14798 charsize='$charsize'
14802 clocktype='$clocktype'
14804 compress='$compress'
14805 contains='$contains'
14809 cpp_stuff='$cpp_stuff'
14810 cppccsymbols='$cppccsymbols'
14811 cppflags='$cppflags'
14813 cppminus='$cppminus'
14815 cppstdin='$cppstdin'
14816 cppsymbols='$cppsymbols'
14817 crosscompile='$crosscompile'
14818 cryptlib='$cryptlib'
14820 d_Gconvert='$d_Gconvert'
14821 d_PRIEldbl='$d_PRIEldbl'
14822 d_PRIFldbl='$d_PRIFldbl'
14823 d_PRIGldbl='$d_PRIGldbl'
14824 d_PRIX64='$d_PRIX64'
14825 d_PRId64='$d_PRId64'
14826 d_PRIeldbl='$d_PRIeldbl'
14827 d_PRIfldbl='$d_PRIfldbl'
14828 d_PRIgldbl='$d_PRIgldbl'
14829 d_PRIi64='$d_PRIi64'
14830 d_PRIo64='$d_PRIo64'
14831 d_PRIu64='$d_PRIu64'
14832 d_PRIx64='$d_PRIx64'
14833 d_access='$d_access'
14834 d_accessx='$d_accessx'
14836 d_archlib='$d_archlib'
14839 d_attribut='$d_attribut'
14842 d_bincompat5005='$d_bincompat5005'
14844 d_bsdgetpgrp='$d_bsdgetpgrp'
14845 d_bsdsetpgrp='$d_bsdsetpgrp'
14847 d_casti32='$d_casti32'
14848 d_castneg='$d_castneg'
14849 d_charvspr='$d_charvspr'
14851 d_chroot='$d_chroot'
14852 d_chsize='$d_chsize'
14853 d_closedir='$d_closedir'
14857 d_cuserid='$d_cuserid'
14858 d_dbl_dig='$d_dbl_dig'
14859 d_difftime='$d_difftime'
14860 d_dirnamlen='$d_dirnamlen'
14861 d_dlerror='$d_dlerror'
14862 d_dlopen='$d_dlopen'
14863 d_dlsymun='$d_dlsymun'
14864 d_dosuid='$d_dosuid'
14865 d_drand48proto='$d_drand48proto'
14867 d_eaccess='$d_eaccess'
14868 d_endgrent='$d_endgrent'
14869 d_endhent='$d_endhent'
14870 d_endnent='$d_endnent'
14871 d_endpent='$d_endpent'
14872 d_endpwent='$d_endpwent'
14873 d_endsent='$d_endsent'
14874 d_endspent='$d_endspent'
14875 d_eofnblk='$d_eofnblk'
14876 d_eunice='$d_eunice'
14877 d_fchmod='$d_fchmod'
14878 d_fchown='$d_fchown'
14880 d_fd_macros='$d_fd_macros'
14881 d_fd_set='$d_fd_set'
14882 d_fds_bits='$d_fds_bits'
14883 d_fgetpos='$d_fgetpos'
14884 d_flexfnam='$d_flexfnam'
14887 d_fpathconf='$d_fpathconf'
14888 d_fpos64_t='$d_fpos64_t'
14889 d_fs_data_s='$d_fs_data_s'
14890 d_fseeko='$d_fseeko'
14891 d_fsetpos='$d_fsetpos'
14892 d_fstatfs='$d_fstatfs'
14893 d_fstatvfs='$d_fstatvfs'
14894 d_ftello='$d_ftello'
14896 d_getcwd='$d_getcwd'
14897 d_getfsstat='$d_getfsstat'
14898 d_getgrent='$d_getgrent'
14899 d_getgrps='$d_getgrps'
14900 d_gethbyaddr='$d_gethbyaddr'
14901 d_gethbyname='$d_gethbyname'
14902 d_gethent='$d_gethent'
14903 d_gethname='$d_gethname'
14904 d_gethostprotos='$d_gethostprotos'
14905 d_getlogin='$d_getlogin'
14906 d_getmnt='$d_getmnt'
14907 d_getmntent='$d_getmntent'
14908 d_getnbyaddr='$d_getnbyaddr'
14909 d_getnbyname='$d_getnbyname'
14910 d_getnent='$d_getnent'
14911 d_getnetprotos='$d_getnetprotos'
14912 d_getpbyname='$d_getpbyname'
14913 d_getpbynumber='$d_getpbynumber'
14914 d_getpent='$d_getpent'
14915 d_getpgid='$d_getpgid'
14916 d_getpgrp2='$d_getpgrp2'
14917 d_getpgrp='$d_getpgrp'
14918 d_getppid='$d_getppid'
14919 d_getprior='$d_getprior'
14920 d_getprotoprotos='$d_getprotoprotos'
14921 d_getpwent='$d_getpwent'
14922 d_getsbyname='$d_getsbyname'
14923 d_getsbyport='$d_getsbyport'
14924 d_getsent='$d_getsent'
14925 d_getservprotos='$d_getservprotos'
14926 d_getspent='$d_getspent'
14927 d_getspnam='$d_getspnam'
14928 d_gettimeod='$d_gettimeod'
14929 d_gnulibc='$d_gnulibc'
14930 d_grpasswd='$d_grpasswd'
14931 d_hasmntopt='$d_hasmntopt'
14935 d_inetaton='$d_inetaton'
14936 d_int64_t='$d_int64_t'
14937 d_isascii='$d_isascii'
14938 d_killpg='$d_killpg'
14939 d_lchown='$d_lchown'
14940 d_ldbl_dig='$d_ldbl_dig'
14942 d_locconv='$d_locconv'
14944 d_longdbl='$d_longdbl'
14945 d_longlong='$d_longlong'
14946 d_lseekproto='$d_lseekproto'
14948 d_madvise='$d_madvise'
14950 d_mbstowcs='$d_mbstowcs'
14951 d_mbtowc='$d_mbtowc'
14952 d_memchr='$d_memchr'
14953 d_memcmp='$d_memcmp'
14954 d_memcpy='$d_memcpy'
14955 d_memmove='$d_memmove'
14956 d_memset='$d_memset'
14958 d_mkdtemp='$d_mkdtemp'
14959 d_mkfifo='$d_mkfifo'
14960 d_mkstemp='$d_mkstemp'
14961 d_mkstemps='$d_mkstemps'
14962 d_mktime='$d_mktime'
14964 d_mprotect='$d_mprotect'
14966 d_msg_ctrunc='$d_msg_ctrunc'
14967 d_msg_dontroute='$d_msg_dontroute'
14968 d_msg_oob='$d_msg_oob'
14969 d_msg_peek='$d_msg_peek'
14970 d_msg_proxy='$d_msg_proxy'
14971 d_msgctl='$d_msgctl'
14972 d_msgget='$d_msgget'
14973 d_msgrcv='$d_msgrcv'
14974 d_msgsnd='$d_msgsnd'
14976 d_munmap='$d_munmap'
14977 d_mymalloc='$d_mymalloc'
14979 d_nv_preserves_uv='$d_nv_preserves_uv'
14980 d_off64_t='$d_off64_t'
14981 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14982 d_oldpthreads='$d_oldpthreads'
14983 d_oldsock='$d_oldsock'
14985 d_pathconf='$d_pathconf'
14987 d_phostname='$d_phostname'
14990 d_portable='$d_portable'
14991 d_pthread_yield='$d_pthread_yield'
14993 d_pwchange='$d_pwchange'
14994 d_pwclass='$d_pwclass'
14995 d_pwcomment='$d_pwcomment'
14996 d_pwexpire='$d_pwexpire'
14997 d_pwgecos='$d_pwgecos'
14998 d_pwpasswd='$d_pwpasswd'
14999 d_pwquota='$d_pwquota'
15001 d_readdir='$d_readdir'
15002 d_readlink='$d_readlink'
15003 d_rename='$d_rename'
15004 d_rewinddir='$d_rewinddir'
15006 d_safebcpy='$d_safebcpy'
15007 d_safemcpy='$d_safemcpy'
15008 d_sanemcmp='$d_sanemcmp'
15009 d_sched_yield='$d_sched_yield'
15010 d_scm_rights='$d_scm_rights'
15011 d_seekdir='$d_seekdir'
15012 d_select='$d_select'
15014 d_semctl='$d_semctl'
15015 d_semctl_semid_ds='$d_semctl_semid_ds'
15016 d_semctl_semun='$d_semctl_semun'
15017 d_semget='$d_semget'
15019 d_setegid='$d_setegid'
15020 d_seteuid='$d_seteuid'
15021 d_setgrent='$d_setgrent'
15022 d_setgrps='$d_setgrps'
15023 d_sethent='$d_sethent'
15024 d_setlinebuf='$d_setlinebuf'
15025 d_setlocale='$d_setlocale'
15026 d_setnent='$d_setnent'
15027 d_setpent='$d_setpent'
15028 d_setpgid='$d_setpgid'
15029 d_setpgrp2='$d_setpgrp2'
15030 d_setpgrp='$d_setpgrp'
15031 d_setprior='$d_setprior'
15032 d_setpwent='$d_setpwent'
15033 d_setregid='$d_setregid'
15034 d_setresgid='$d_setresgid'
15035 d_setresuid='$d_setresuid'
15036 d_setreuid='$d_setreuid'
15037 d_setrgid='$d_setrgid'
15038 d_setruid='$d_setruid'
15039 d_setsent='$d_setsent'
15040 d_setsid='$d_setsid'
15041 d_setspent='$d_setspent'
15042 d_setvbuf='$d_setvbuf'
15046 d_shmatprototype='$d_shmatprototype'
15047 d_shmctl='$d_shmctl'
15049 d_shmget='$d_shmget'
15050 d_sigaction='$d_sigaction'
15051 d_sigsetjmp='$d_sigsetjmp'
15052 d_socket='$d_socket'
15053 d_socklen_t='$d_socklen_t'
15054 d_sockpair='$d_sockpair'
15056 d_statblks='$d_statblks'
15057 d_statfs_f_flags='$d_statfs_f_flags'
15058 d_statfs_s='$d_statfs_s'
15059 d_statvfs='$d_statvfs'
15060 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15061 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15062 d_stdio_stream_array='$d_stdio_stream_array'
15063 d_stdiobase='$d_stdiobase'
15064 d_stdstdio='$d_stdstdio'
15065 d_strchr='$d_strchr'
15066 d_strcoll='$d_strcoll'
15067 d_strctcpy='$d_strctcpy'
15068 d_strerrm='$d_strerrm'
15069 d_strerror='$d_strerror'
15070 d_strtod='$d_strtod'
15071 d_strtol='$d_strtol'
15072 d_strtold='$d_strtold'
15073 d_strtoll='$d_strtoll'
15074 d_strtoul='$d_strtoul'
15075 d_strtoull='$d_strtoull'
15076 d_strtouq='$d_strtouq'
15077 d_strxfrm='$d_strxfrm'
15078 d_suidsafe='$d_suidsafe'
15079 d_symlink='$d_symlink'
15080 d_syscall='$d_syscall'
15081 d_sysconf='$d_sysconf'
15082 d_sysernlst='$d_sysernlst'
15083 d_syserrlst='$d_syserrlst'
15084 d_system='$d_system'
15085 d_tcgetpgrp='$d_tcgetpgrp'
15086 d_tcsetpgrp='$d_tcsetpgrp'
15087 d_telldir='$d_telldir'
15088 d_telldirproto='$d_telldirproto'
15091 d_truncate='$d_truncate'
15092 d_tzname='$d_tzname'
15095 d_union_semun='$d_union_semun'
15097 d_vendorbin='$d_vendorbin'
15098 d_vendorlib='$d_vendorlib'
15100 d_void_closedir='$d_void_closedir'
15101 d_voidsig='$d_voidsig'
15102 d_voidtty='$d_voidtty'
15103 d_volatile='$d_volatile'
15104 d_vprintf='$d_vprintf'
15106 d_waitpid='$d_waitpid'
15107 d_wcstombs='$d_wcstombs'
15108 d_wctomb='$d_wctomb'
15111 db_hashtype='$db_hashtype'
15112 db_prefixtype='$db_prefixtype'
15113 defvoidused='$defvoidused'
15114 direntrytype='$direntrytype'
15117 doublesize='$doublesize'
15119 dynamic_ext='$dynamic_ext'
15125 eunicefix='$eunicefix'
15128 extensions='$extensions'
15129 fflushNULL='$fflushNULL'
15130 fflushall='$fflushall'
15132 firstmakefile='$firstmakefile'
15134 fpossize='$fpossize'
15135 fpostype='$fpostype'
15136 freetype='$freetype'
15138 full_csh='$full_csh'
15139 full_sed='$full_sed'
15140 gccversion='$gccversion'
15141 gidformat='$gidformat'
15147 groupcat='$groupcat'
15148 groupstype='$groupstype'
15151 h_sysfile='$h_sysfile'
15163 i_arpainet='$i_arpainet'
15164 i_bsdioctl='$i_bsdioctl'
15167 i_dirent='$i_dirent'
15175 i_inttypes='$i_inttypes'
15176 i_limits='$i_limits'
15177 i_locale='$i_locale'
15178 i_machcthr='$i_machcthr'
15179 i_malloc='$i_malloc'
15181 i_memory='$i_memory'
15182 i_mntent='$i_mntent'
15185 i_neterrno='$i_neterrno'
15186 i_netinettcp='$i_netinettcp'
15189 i_pthread='$i_pthread'
15191 i_rpcsvcdbm='$i_rpcsvcdbm'
15194 i_shadow='$i_shadow'
15196 i_stdarg='$i_stdarg'
15197 i_stddef='$i_stddef'
15198 i_stdlib='$i_stdlib'
15199 i_string='$i_string'
15200 i_sysaccess='$i_sysaccess'
15201 i_sysdir='$i_sysdir'
15202 i_sysfile='$i_sysfile'
15203 i_sysfilio='$i_sysfilio'
15205 i_sysioctl='$i_sysioctl'
15206 i_syslog='$i_syslog'
15207 i_sysmman='$i_sysmman'
15208 i_sysmode='$i_sysmode'
15209 i_sysmount='$i_sysmount'
15210 i_sysndir='$i_sysndir'
15211 i_sysparam='$i_sysparam'
15212 i_sysresrc='$i_sysresrc'
15213 i_syssecrt='$i_syssecrt'
15214 i_sysselct='$i_sysselct'
15215 i_syssockio='$i_syssockio'
15216 i_sysstat='$i_sysstat'
15217 i_sysstatfs='$i_sysstatfs'
15218 i_sysstatvfs='$i_sysstatvfs'
15219 i_systime='$i_systime'
15220 i_systimek='$i_systimek'
15221 i_systimes='$i_systimes'
15222 i_systypes='$i_systypes'
15223 i_sysuio='$i_sysuio'
15225 i_sysutsname='$i_sysutsname'
15226 i_sysvfs='$i_sysvfs'
15227 i_syswait='$i_syswait'
15228 i_termio='$i_termio'
15229 i_termios='$i_termios'
15231 i_unistd='$i_unistd'
15234 i_values='$i_values'
15235 i_varargs='$i_varargs'
15236 i_varhdr='$i_varhdr'
15238 ignore_versioned_solibs='$ignore_versioned_solibs'
15239 inc_version_list='$inc_version_list'
15240 inc_version_list_init='$inc_version_list_init'
15243 installarchlib='$installarchlib'
15244 installbin='$installbin'
15245 installman1dir='$installman1dir'
15246 installman3dir='$installman3dir'
15247 installprefix='$installprefix'
15248 installprefixexp='$installprefixexp'
15249 installprivlib='$installprivlib'
15250 installscript='$installscript'
15251 installsitearch='$installsitearch'
15252 installsitebin='$installsitebin'
15253 installsitelib='$installsitelib'
15254 installstyle='$installstyle'
15255 installusrbinperl='$installusrbinperl'
15256 installvendorbin='$installvendorbin'
15257 installvendorlib='$installvendorlib'
15259 ivdformat='$ivdformat'
15262 known_extensions='$known_extensions'
15266 lddlflags='$lddlflags'
15268 ldlibpthname='$ldlibpthname'
15275 libsdirs='$libsdirs'
15276 libsfiles='$libsfiles'
15277 libsfound='$libsfound'
15278 libspath='$libspath'
15279 libswanted='$libswanted'
15285 locincpth='$locincpth'
15286 loclibpth='$loclibpth'
15287 longdblsize='$longdblsize'
15288 longlongsize='$longlongsize'
15289 longsize='$longsize'
15293 lseeksize='$lseeksize'
15294 lseektype='$lseektype'
15298 make_set_make='$make_set_make'
15299 mallocobj='$mallocobj'
15300 mallocsrc='$mallocsrc'
15301 malloctype='$malloctype'
15303 man1direxp='$man1direxp'
15306 man3direxp='$man3direxp'
15309 mips_type='$mips_type'
15311 mmaptype='$mmaptype'
15313 modetype='$modetype'
15315 multiarch='$multiarch'
15317 myarchname='$myarchname'
15318 mydomain='$mydomain'
15319 myhostname='$myhostname'
15322 netdb_hlen_type='$netdb_hlen_type'
15323 netdb_host_type='$netdb_host_type'
15324 netdb_name_type='$netdb_name_type'
15325 netdb_net_type='$netdb_net_type'
15328 nm_so_opt='$nm_so_opt'
15329 nonxs_ext='$nonxs_ext'
15333 o_nonblock='$o_nonblock'
15335 old_pthread_create_joinable='$old_pthread_create_joinable'
15336 optimize='$optimize'
15337 orderlib='$orderlib'
15343 patchlevel='$patchlevel'
15344 path_sep='$path_sep'
15347 perladmin='$perladmin'
15348 perlpath='$perlpath'
15350 phostname='$phostname'
15353 pm_apiversion='$pm_apiversion'
15357 prefixexp='$prefixexp'
15359 privlibexp='$privlibexp'
15360 prototype='$prototype'
15362 quadkind='$quadkind'
15363 quadtype='$quadtype'
15364 randbits='$randbits'
15365 randfunc='$randfunc'
15366 randseedtype='$randseedtype'
15368 rd_nodata='$rd_nodata'
15369 revision='$revision'
15373 sPRIEldbl='$sPRIEldbl'
15374 sPRIFldbl='$sPRIFldbl'
15375 sPRIGldbl='$sPRIGldbl'
15378 sPRIeldbl='$sPRIeldbl'
15379 sPRIfldbl='$sPRIfldbl'
15380 sPRIgldbl='$sPRIgldbl'
15385 sched_yield='$sched_yield'
15386 scriptdir='$scriptdir'
15387 scriptdirexp='$scriptdirexp'
15389 seedfunc='$seedfunc'
15390 selectminbits='$selectminbits'
15391 selecttype='$selecttype'
15392 sendmail='$sendmail'
15395 sharpbang='$sharpbang'
15396 shmattype='$shmattype'
15397 shortsize='$shortsize'
15400 sig_count='$sig_count'
15401 sig_name='$sig_name'
15402 sig_name_init='$sig_name_init'
15404 sig_num_init='$sig_num_init'
15405 signal_t='$signal_t'
15406 sitearch='$sitearch'
15407 sitearchexp='$sitearchexp'
15409 sitebinexp='$sitebinexp'
15411 sitelibexp='$sitelibexp'
15412 siteprefix='$siteprefix'
15413 siteprefixexp='$siteprefixexp'
15414 sizetype='$sizetype'
15419 sockethdr='$sockethdr'
15420 socketlib='$socketlib'
15421 socksizetype='$socksizetype'
15423 spackage='$spackage'
15424 spitshell='$spitshell'
15427 ssizetype='$ssizetype'
15428 startperl='$startperl'
15430 static_ext='$static_ext'
15432 stdio_base='$stdio_base'
15433 stdio_bufsiz='$stdio_bufsiz'
15434 stdio_cnt='$stdio_cnt'
15435 stdio_filbuf='$stdio_filbuf'
15436 stdio_ptr='$stdio_ptr'
15437 stdio_stream_array='$stdio_stream_array'
15440 subversion='$subversion'
15447 timeincl='$timeincl'
15448 timetype='$timetype'
15461 uidformat='$uidformat'
15467 uquadtype='$uquadtype'
15468 use5005threads='$use5005threads'
15469 use64bitall='$use64bitall'
15470 use64bitint='$use64bitint'
15472 useithreads='$useithreads'
15473 uselargefiles='$uselargefiles'
15474 uselongdouble='$uselongdouble'
15475 usemorebits='$usemorebits'
15476 usemultiplicity='$usemultiplicity'
15477 usemymalloc='$usemymalloc'
15479 useopcode='$useopcode'
15480 useperlio='$useperlio'
15481 useposix='$useposix'
15483 useshrplib='$useshrplib'
15484 usesocks='$usesocks'
15485 usethreads='$usethreads'
15486 usevendorprefix='$usevendorprefix'
15487 usevfork='$usevfork'
15490 uvoformat='$uvoformat'
15493 uvuformat='$uvuformat'
15494 uvxformat='$uvxformat'
15495 vendorbin='$vendorbin'
15496 vendorbinexp='$vendorbinexp'
15497 vendorlib='$vendorlib'
15498 vendorlibexp='$vendorlibexp'
15499 vendorprefix='$vendorprefix'
15500 vendorprefixexp='$vendorprefixexp'
15503 voidflags='$voidflags'
15505 xs_apiversion='$xs_apiversion'
15510 : Add in command line options if available
15511 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15513 : add special variables
15514 $test -f $src/patchlevel.h && \
15515 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15516 echo "CONFIGDOTSH=true" >>config.sh
15518 : propagate old symbols
15519 if $test -f UU/config.sh; then
15520 <UU/config.sh sort | uniq >UU/oldconfig.sh
15521 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15522 sort | uniq -u >UU/oldsyms
15523 set X `cat UU/oldsyms`
15529 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15531 echo "# Variables propagated from previous config.sh file." >>config.sh
15532 for sym in `cat UU/oldsyms`; do
15533 echo " Propagating $hint variable "'$'"$sym..."
15534 eval 'tmp="$'"${sym}"'"'
15536 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15542 : Finish up by extracting the .SH files
15556 If you'd like to make any changes to the config.sh file before I begin
15557 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15560 rp="Press return or use a shell escape to edit config.sh:"
15565 *) : in case they cannot read
15566 sh 1>&4 -c "$ans";;
15571 : if this fails, just run all the .SH files by hand
15578 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15585 Now you need to generate make dependencies by running "$make depend".
15586 You might prefer to run it in background: "$make depend > makedepend.out &"
15587 It can take a while, so you might not want to run it right now.
15592 rp="Run $make depend now?"
15596 $make depend && echo "Now you must run a $make."
15599 echo "You must run '$make depend' then '$make'."
15602 elif test -f [Mm]akefile; then
15604 echo "Now you must run a $make."
15609 if $test -f Policy.sh; then
15612 If you compile $package on a different machine or from a different object
15613 directory, copy the Policy.sh file from this object directory to the
15614 new one before you run Configure -- this will help you with most of
15615 the policy defaults.
15619 if $test -f config.msg; then
15620 echo "Hmm. I also noted the following information while running:"
15622 $cat config.msg >&4
15625 $rm -f kit*isdone ark*isdone