3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Wed Feb 9 04:26:02 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
449 d_old_pthread_create_joinable=''
450 old_pthread_create_joinable=''
685 inc_version_list_init=''
705 ignore_versioned_solibs=''
866 d_stdio_stream_array=''
867 stdio_stream_array=''
913 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
916 : We must find out about Eunice early
918 if test -f /etc/unixtovms; then
919 eunicefix=/etc/unixtovms
921 if test -f /etc/unixtovms.exe; then
922 eunicefix=/etc/unixtovms.exe
926 : set useposix=false in your hint file to disable the POSIX extension.
928 : set useopcode=false in your hint file to disable the Opcode extension.
930 : Trailing extension. Override this in a hint file, if needed.
932 : Extra object files, if any, needed on this platform.
934 : Possible local include directories to search.
935 : Set locincpth to "" in a hint file to defeat local include searches.
936 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
937 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
939 : no include file wanted by default
943 : change the next line if compiling for Xenix/286 on Xenix/386
944 xlibpth='/usr/lib/386 /lib/386'
946 : Possible local library directories to search.
947 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
948 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
950 : general looking path for locating libraries
951 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
952 glibpth="$glibpth /lib /usr/lib $xlibpth"
953 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
954 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
956 : Private path used by Configure to find libraries. Its value
957 : is prepended to libpth. This variable takes care of special
958 : machines, like the mips. Usually, it should be empty.
961 : default library list
963 : some systems want to use only the non-versioned libso:s
964 ignore_versioned_solibs=''
965 : set usemultiplicity on the Configure command line to enable multiplicity.
966 : set usesocks on the Configure command line to enable socks.
967 : set usethreads on the Configure command line to enable threads.
968 : full support for void wanted by default
971 : List of libraries we want.
972 : If anyone needs -lnet, put it in a hint file.
973 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
974 libswanted="$libswanted dld ld sun m c cposix posix"
975 libswanted="$libswanted ndir dir crypt sec"
976 libswanted="$libswanted ucb bsd BSD PW x"
977 : We probably want to search /usr/shlib before most other libraries.
978 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
979 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
980 glibpth="/usr/shlib $glibpth"
981 : Do not use vfork unless overridden by a hint file.
984 : Find the basic shell for Bourne shell scripts
988 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
991 if test -f "$xxx"; then
994 : Build up a list and do a single loop so we can 'break' out.
995 pth=`echo $PATH | sed -e "s/$p_/ /g"`
996 for xxx in sh bash ksh pdksh ash; do
998 try="$try ${p}/${xxx}"
1002 if test -f "$xxx"; then
1005 elif test -f "$xxx.exe"; then
1016 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1018 Usually it's in /bin/sh. How did you even get this far?
1019 Please contact me (Perl Maintainers) at perlbug@perl.com and
1020 we'll try to straighten this all out.
1026 : see if sh knows # comments
1027 if `$sh -c '#' >/dev/null 2>&1`; then
1031 test -f $xcat || xcat=/usr/bin/cat
1036 if test -s today; then
1039 echo "#! $xcat" > try
1043 if test -s today; then
1051 echo "Your $sh doesn't grok # comments--I will strip them later on."
1054 echo "exec grep -v '^[ ]*#'" >spitshell
1056 $eunicefix spitshell
1057 spitshell=`pwd`/spitshell
1059 echo "I presume that if # doesn't work, #! won't work either!"
1064 : figure out how to guarantee sh startup
1066 '') startsh=${sharpbang}${sh} ;;
1078 : echo "Yup, it does."
1080 echo "Hmm... '$startsh' does not guarantee sh startup..."
1081 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1086 : Save command line options in file UU/cmdline.opt for later use in
1087 : generating config.sh.
1088 cat > cmdline.opt <<EOSH
1089 # Configure command line arguments.
1096 cat >>cmdline.opt <<EOSH
1097 config_arg$argn='$arg'
1099 argn=`expr $argn + 1`
1102 : produce awk script to parse command line options
1103 cat >options.awk <<'EOF'
1105 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1107 len = length(optstr);
1108 for (i = 1; i <= len; i++) {
1109 c = substr(optstr, i, 1);
1110 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1121 if (substr(str, 1, 1) != "-") {
1122 printf("'%s'\n", str);
1126 for (i = 2; i <= len; i++) {
1127 c = substr(str, i, 1);
1129 printf("-%s\n", substr(str, i));
1135 printf("'%s'\n", substr(str, i + 1));
1148 : process the command line options
1149 set X `for arg in "$@"; do echo "X$arg"; done |
1150 sed -e s/X// | awk -f options.awk`
1155 : set up default values
1165 rm -f optdef.sh posthint.sh
1166 cat >optdef.sh <<EOS
1172 while test $# -gt 0; do
1174 -d) shift; fastread=yes;;
1175 -e) shift; alldone=cont;;
1179 if test -r "$1"; then
1182 echo "$me: cannot read config file $1." >&2
1187 -h) shift; error=true;;
1188 -r) shift; reuseval=true;;
1189 -s) shift; silent=true; realsilent=true;;
1190 -E) shift; alldone=exit;;
1191 -K) shift; knowitall=true;;
1192 -O) shift; override=true;;
1193 -S) shift; silent=true; extractsh=true;;
1198 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1199 echo "$me: ignoring -D $1" >&2
1202 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1203 *) echo "$1='define'" >> optdef.sh;;
1210 *=) echo "$1" >> optdef.sh;;
1212 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1213 echo "$me: ignoring -U $1" >&2
1215 *) echo "$1='undef'" >> optdef.sh;;
1226 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1230 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1231 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1237 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1238 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1239 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1240 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1241 *) xxx=`echo $yyy|sed 's!:.*!!'`
1242 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1248 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1250 echo "$yyy=''" >> posthint.sh ;;
1255 echo "$yyy='$zzz'" >> posthint.sh ;;
1257 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1259 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1264 echo "$yyy=$zzz" >> posthint.sh ;;
1265 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1268 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1271 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1279 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1280 [-U symbol] [-U symbol=] [-A command:symbol...]
1281 -d : use defaults for all answers.
1282 -e : go on without questioning past the production of config.sh.
1283 -f : specify an alternate default configuration file.
1284 -h : print this help message and exit (with an error status).
1285 -r : reuse C symbols value if possible (skips costly nm extraction).
1286 -s : silent mode, only echoes questions and essential information.
1287 -D : define symbol to have some value:
1288 -D symbol symbol gets the value 'define'
1289 -D symbol=value symbol gets the value 'value'
1290 -E : stop at the end of questions, after having produced config.sh.
1291 -K : do not use unless you know what you are doing.
1292 -O : let -D and -U override definitions from loaded configuration file.
1293 -S : perform variable substitutions on all .SH files (can mix with -f)
1294 -U : undefine symbol:
1295 -U symbol symbol gets the value 'undef'
1296 -U symbol= symbol gets completely empty
1297 -A : manipulate symbol after the platform specific hints have been applied:
1298 -A symbol=value append " "value to symbol
1299 -A append:symbol=value append value to symbol
1300 -A define:symbol=value define symbol to have value
1301 -A clear:symbol define symbol to be ''
1302 -A define:symbol define symbol to be 'define'
1303 -A eval:symbol=value define symbol to be eval of value
1304 -A prepend:symbol=value prepend value to symbol
1305 -A undef:symbol define symbol to be 'undef'
1306 -A undef:symbol= define symbol to be ''
1307 -V : print version number and exit (with a zero status).
1314 case "$fastread$alldone" in
1317 if test ! -t 0; then
1318 echo "Say 'sh Configure', not 'sh <Configure'"
1326 true) exec 1>/dev/null;;
1329 : run the defines and the undefines, if any, but leave the file out there...
1332 : create the posthint manipulation script and leave the file out there...
1337 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1338 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1339 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1340 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1341 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1344 : Some greps do not return status, grrr.
1345 echo "grimblepritz" >grimble
1346 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1348 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1354 : the following should work in any shell
1358 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1359 cat >contains <<'EOSS'
1360 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1365 : Find the path to the source tree
1368 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1371 *) src=`cd ../$src && pwd` ;;
1384 if test -f $rsrc/Configure && \
1385 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1387 : found it, so we are ok.
1390 for src in . .. ../.. ../../.. ../../../..; do
1391 if test -f ../$src/Configure && \
1392 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1403 Sorry, I can't seem to locate the source dir for $package. Please start
1404 Configure with an explicit path -- i.e. /some/path/Configure.
1412 echo "Sources for $package found in \"$src\"." >&4
1416 : script used to extract .SH files with variable substitutions
1417 cat >extract <<'EOS'
1419 echo "Doing variable substitutions on .SH files..."
1420 if test -f $src/MANIFEST; then
1421 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1423 echo "(Looking for .SH files under the source directory.)"
1424 set x `(cd $src; find . -name "*.SH" -print)`
1428 0) set x `(cd $src; echo *.SH)`; shift;;
1430 if test ! -f $src/$1; then
1436 while test $name; do
1437 if test ! -d "$name"; then
1438 create="$name $create";
1439 name=`echo $name | sed -e "s|^[^/]*$||"`;
1440 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1445 for file in $create; do
1454 dir=`expr X$file : 'X\(.*\)/'`
1455 file=`expr X$file : 'X.*/\(.*\)'`
1456 (cd $dir && . ./$file)
1466 dir=`expr X$file : 'X\(.*\)/'`
1467 file=`expr X$file : 'X.*/\(.*\)'`
1468 (set x $dir; shift; eval $mkdir_p)
1478 if test -f $src/config_h.SH; then
1479 if test ! -f config.h; then
1480 : oops, they left it out of MANIFEST, probably, so do it anyway.
1486 : extract files and exit if asked to do so
1487 case "$extractsh" in
1489 case "$realsilent" in
1493 case "$config_sh" in
1494 '') config_sh='config.sh';;
1497 echo "Fetching answers from $config_sh..."
1500 test "$override" && . ./optdef.sh
1509 : Eunice requires " " instead of "", can you believe it
1512 echo "Beginning of configuration questions for $package."
1514 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1516 : first determine how to suppress newline on echo command
1518 echo "Checking echo to see how to suppress newlines..."
1519 (echo "hi there\c" ; echo " ") >.echotmp
1520 if $contains c .echotmp >/dev/null 2>&1 ; then
1531 echo $n "The star should be here-->$c"
1535 : Now test for existence of everything in MANIFEST
1537 if test -f $rsrc/MANIFEST; then
1538 echo "First let's make sure your kit is complete. Checking..." >&4
1539 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1542 for filelist in x??; do
1543 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1545 if test -s missing; then
1549 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1551 You have the option of continuing the configuration process, despite the
1552 distinct possibility that your kit is damaged, by typing 'y'es. If you
1553 do, don't blame me if something goes wrong. I advise you to type 'n'o
1554 and contact the author (perlbug@perl.com).
1557 echo $n "Continue? [n] $c" >&4
1561 echo "Continuing..." >&4
1565 echo "ABORTING..." >&4
1570 echo "Looks good..."
1573 echo "There is no MANIFEST file. I hope your kit is complete !"
1578 : Find the appropriate value for a newline for tr
1579 if test -n "$DJGPP"; then
1582 if test X"$trnl" = X; then
1583 case "`echo foo|tr '\n' x 2>/dev/null`" in
1587 if test X"$trnl" = X; then
1588 case "`echo foo|tr '\012' x 2>/dev/null`" in
1589 foox) trnl='\012' ;;
1592 if test X"$trnl" = X; then
1595 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1601 : compute the number of columns on the terminal for proper question formatting
1606 : set up the echo used in my read
1607 myecho="case \"\$xxxm\" in
1608 '') echo $n \"\$rp $c\" >&4;;
1610 '') echo $n \"[\$xxxm] $c\";;
1612 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1614 echo $n \"[\$xxxm] $c\" >&4
1616 echo $n \"\$rp [\$xxxm] $c\" >&4
1622 : now set up to do reads with possible shell escape and default assignment
1628 case "\$fastread" in
1629 yes) case "\$dflt" in
1632 case "\$silent-\$rp" in
1637 *) case "\$silent" in
1638 true) case "\$rp" in
1643 while expr "X\$ans" : "X!" >/dev/null; do
1647 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1655 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1664 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1669 echo "(OK, I'll run with -d after this question.)" >&4
1672 echo "*** Sorry, \$1 not supported yet." >&4
1682 echo "*** Substitution done -- please confirm."
1684 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1689 echo "*** Error -- try again."
1696 case "\$ans\$xxxm\$nostick" in
1708 : create .config dir to save info across Configure sessions
1709 test -d ../.config || mkdir ../.config
1710 cat >../.config/README <<EOF
1711 This directory created by Configure to save information that should
1712 persist across sessions for $package.
1714 You may safely delete it if you wish.
1717 : general instructions
1720 user=`(logname) 2>/dev/null`
1722 '') user=`whoami 2>&1`;;
1724 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1727 rp='Would you like to see the instructions?'
1738 This installation shell script will examine your system and ask you questions
1739 to determine how the perl5 package should be installed. If you get
1740 stuck on a question, you may use a ! shell escape to start a subshell or
1741 execute a command. Many of the questions will have default answers in square
1742 brackets; typing carriage return will give you the default.
1744 On some of the questions which ask for file or directory names you are allowed
1745 to use the ~name construct to specify the login directory belonging to "name",
1746 even if you don't have a shell which knows about that. Questions where this is
1747 allowed will be marked "(~name ok)".
1751 dflt='Type carriage return to continue'
1755 The prompter used in this script allows you to use shell variables and
1756 backticks in your answers. You may use $1, $2, etc... to refer to the words
1757 in the default answer, as if the default line was a set of arguments given to a
1758 script shell. This means you may also use $* to repeat the whole default line,
1759 so you do not have to re-type everything to add something to the default.
1761 Everytime there is a substitution, you will have to confirm. If there is an
1762 error (e.g. an unmatched backtick), the default answer will remain unchanged
1763 and you will be prompted again.
1765 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1766 the questions and use the computed defaults (or the previous answers if there
1767 was already a config.sh file). Type 'Configure -h' for a list of options.
1768 You may also start interactively and then answer '& -d' at any prompt to turn
1769 on the non-interactive behaviour for the remainder of the execution.
1775 Much effort has been expended to ensure that this shell script will run on any
1776 Unix system. If despite that it blows up on yours, your best bet is to edit
1777 Configure and run it again. If you can't run Configure for some reason,
1778 you'll have to generate a config.sh file by hand. Whatever problems you
1779 have, let me (perlbug@perl.com) know how I blew it.
1781 This installation script affects things in two ways:
1783 1) it may do direct variable substitutions on some of the files included
1785 2) it builds a config.h file for inclusion in C programs. You may edit
1786 any of these files as the need arises after running this script.
1788 If you make a mistake on a question, there is no easy way to back up to it
1789 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1790 files. Configure will offer to let you do this before it runs the SH files.
1793 dflt='Type carriage return to continue'
1795 case "$firsttime" in
1796 true) echo $user >>../.config/instruct;;
1800 : find out where common programs are
1802 echo "Locating common programs..." >&4
1815 if test -d \$dir/\$thing; then
1821 for thisthing in \$dir/\$thing; do
1822 : just loop through to pick last item
1824 if test -f \$thisthing; then
1827 elif test -f \$dir/\$thing.exe; then
1828 if test -n "$DJGPP"; then
1829 echo \$dir/\$thing.exe
1831 : on Eunice apparently
1882 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1883 pth="$pth /lib /usr/lib"
1884 for file in $loclist; do
1888 if test -f "$xxx"; then
1891 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1892 xxx=`./loc $file $file $pth`
1895 '') xxx=`./loc $file $file $pth`;;
1896 *) xxx=`./loc $xxx $xxx $pth`;;
1902 echo $file is in $xxx.
1905 echo $file is in $xxx.
1908 echo "I don't know where '$file' is, and my life depends on it." >&4
1909 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1915 echo "Don't worry if any of the following aren't found..."
1917 for file in $trylist; do
1921 if test -f "$xxx"; then
1924 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1925 xxx=`./loc $file $file $pth`
1928 '') xxx=`./loc $file $file $pth`;;
1929 *) xxx=`./loc $xxx $xxx $pth`;;
1935 echo $file is in $xxx.
1938 echo $file is in $xxx.
1941 echo "I don't see $file out there, $say."
1948 echo "Substituting grep for egrep."
1954 echo "Substituting cp for ln."
1960 echo "Hopefully test is built into your sh."
1963 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1964 echo "Using the test built into your sh."
1972 echo "Hopefully echo is built into your sh."
1977 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1978 $echo $n "hi there$c" >foo1
1979 echo $n "hi there$c" >foo2
1980 if cmp foo1 foo2 >/dev/null 2>&1; then
1981 echo "They are compatible. In fact, they may be identical."
1988 They are not compatible! You are probably running ksh on a non-USG system.
1989 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1990 have echo built in and we may have to run some Bourne shell scripts. That
1991 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1994 $echo $n "The star should be here-->$c"
2001 : determine whether symbolic links are supported
2004 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2005 echo "Symbolic links are supported." >&4
2008 echo "Symbolic links are NOT supported." >&4
2013 : see whether [:lower:] and [:upper:] are supported character classes
2015 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2017 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2021 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2022 # (0xc9 and 0xd1), therefore that is a nice testing point.
2023 if test "X$up" = X -o "X$low" = X; then
2024 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2030 if test "X$up" = X -o "X$low" = X; then
2031 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2037 if test "X$up" = X -o "X$low" = X; then
2038 case "`echo IJ | od -x 2>/dev/null`" in
2040 echo "Hey, this might be EBCDIC." >&4
2041 if test "X$up" = X -o "X$low" = X; then
2042 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2043 ij) up='[A-IJ-RS-Z]'
2048 if test "X$up" = X -o "X$low" = X; then
2049 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2059 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2061 echo "Using $up and $low to convert case." >&4
2064 echo "I don't know how to translate letters from upper to lower case." >&4
2065 echo "Your tr is not acting any way I know of." >&4
2069 : set up the translation script tr, must be called with ./tr of course
2073 '[A-Z][a-z]') exec $tr '$up' '$low';;
2074 '[a-z][A-Z]') exec $tr '$low' '$up';;
2081 : Try to determine whether config.sh was made on this system
2082 case "$config_sh" in
2084 myuname=`$uname -a 2>/dev/null`
2085 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2086 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2087 # because the A-Z/a-z are not consecutive.
2088 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2089 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2090 newmyuname="$myuname"
2092 case "$knowitall" in
2094 if test -f ../config.sh; then
2095 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2096 eval "`grep myuname= ../config.sh`"
2098 if test "X$myuname" = "X$newmyuname"; then
2106 : Get old answers from old config file if Configure was run on the
2107 : same system, otherwise use the hints.
2110 if test -f config.sh; then
2112 rp="I see a config.sh file. Shall I use it to set the defaults?"
2115 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2116 *) echo "Fetching default answers from your old config.sh file..." >&4
2124 : Older versions did not always set $sh. Catch re-use of such
2133 if test ! -f config.sh; then
2136 First time through, eh? I have some defaults handy for some systems
2137 that need some extra help getting the Configure answers right:
2140 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2142 : Half the following guesses are probably wrong... If you have better
2143 : tests or hints, please send them to perlbug@perl.com
2144 : The metaconfig authors would also appreciate a copy...
2145 $test -f /irix && osname=irix
2146 $test -f /xenix && osname=sco_xenix
2147 $test -f /dynix && osname=dynix
2148 $test -f /dnix && osname=dnix
2149 $test -f /lynx.os && osname=lynxos
2150 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2151 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2152 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2153 $test -f /bin/mips && /bin/mips && osname=mips
2154 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2155 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2156 $test -d /usr/apollo/bin && osname=apollo
2157 $test -f /etc/saf/_sactab && osname=svr4
2158 $test -d /usr/include/minix && osname=minix
2159 if $test -d /MachTen -o -d /MachTen_Folder; then
2161 if $test -x /sbin/version; then
2162 osvers=`/sbin/version | $awk '{print $2}' |
2163 $sed -e 's/[A-Za-z]$//'`
2164 elif $test -x /usr/etc/version; then
2165 osvers=`/usr/etc/version | $awk '{print $2}' |
2166 $sed -e 's/[A-Za-z]$//'`
2172 $test -f /sys/posix.dll &&
2173 $test -f /usr/bin/what &&
2174 set X `/usr/bin/what /sys/posix.dll` &&
2175 $test "$3" = UWIN &&
2179 if $test -f $uname; then
2187 umips) osname=umips ;;
2190 [23]100) osname=mips ;;
2191 next*) osname=next ;;
2193 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2194 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2197 elif $test -f /etc/kconfig; then
2199 if test "$lns" = "$ln -s"; then
2201 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2203 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2210 if test -n "$DJGPP"; then
2219 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2221 'not found') osvers="$4"."$3" ;;
2222 '<3240'|'<>3240') osvers=3.2.0 ;;
2223 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2224 '=3250'|'>3250') osvers=3.2.5 ;;
2228 bsd386) osname=bsd386
2231 cygwin*) osname=cygwin
2234 *dc.osx) osname=dcosx
2240 domainos) osname=apollo
2246 dynixptx*) osname=dynixptx
2247 osvers=`echo "$4"|sed 's/^v//'`
2249 freebsd) osname=freebsd
2251 genix) osname=genix ;;
2253 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2269 netbsd*) osname=netbsd
2272 news-os) osvers="$3"
2274 4*) osname=newsos4 ;;
2278 next*) osname=next ;;
2279 POSIX-BC | posix-bc ) osname=posix-bc
2282 powerux | power_ux | powermax_os | powermaxos | \
2283 powerunix | power_unix) osname=powerux
2289 solaris) osname=solaris
2291 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2298 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2302 titanos) osname=titanos
2311 ultrix) osname=ultrix
2314 osf1|mls+) case "$5" in
2317 osvers=`echo "$3" | sed 's/^[xvt]//'`
2319 hp*) osname=hp_osf1 ;;
2320 mips) osname=mips_osf1 ;;
2323 unixware) osname=svr5
2329 $2) case "$osname" in
2333 : svr4.x or possibly later
2343 if test -f /stand/boot ; then
2344 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2345 if test -n "$INITPROG" -a -f "$INITPROG"; then
2346 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2347 if test -n "$isesix"; then
2355 *) if test -f /etc/systemid; then
2357 set `echo $3 | $sed 's/\./ /g'` $4
2358 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2360 elif $test -f $src/hints/sco_$1_$2.sh; then
2362 elif $test -f $src/hints/sco_$1.sh; then
2367 '') : Still unknown. Probably a generic Sys V.
2376 *) case "$osname" in
2377 '') : Still unknown. Probably a generic BSD.
2385 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2386 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2387 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2390 $rm -f UU/kernel.what
2391 elif test -d c:/.; then
2398 : Now look for a hint file osname_osvers, unless one has been
2399 : specified already.
2402 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2403 : Also try without trailing minor version numbers.
2404 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2405 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2406 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2407 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2410 *) case "$osvers" in
2413 *) if $test -f $src/hints/$file.sh ; then
2415 elif $test -f $src/hints/$xfile.sh ; then
2417 elif $test -f $src/hints/$xxfile.sh ; then
2419 elif $test -f $src/hints/$xxxfile.sh ; then
2421 elif $test -f $src/hints/$xxxxfile.sh ; then
2423 elif $test -f "$src/hints/${osname}.sh" ; then
2432 if $test -f Policy.sh ; then
2435 none) dflt="Policy" ;;
2436 *) dflt="Policy $dflt" ;;
2441 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2445 if $test -f Policy.sh ; then
2448 There's also a Policy hint file available, which should make the
2449 site-specific (policy) questions easier to answer.
2456 You may give one or more space-separated answers, or "none" if appropriate.
2457 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2458 is a good thing. DO NOT give a wrong version or a wrong OS.
2462 rp="Which of these apply, if any?"
2465 for file in $tans; do
2466 if $test X$file = XPolicy -a -f Policy.sh; then
2468 $cat Policy.sh >> UU/config.sh
2469 elif $test -f $src/hints/$file.sh; then
2470 . $src/hints/$file.sh
2471 $cat $src/hints/$file.sh >> UU/config.sh
2472 elif $test X$tans = X -o X$tans = Xnone ; then
2475 : Give one chance to correct a possible typo.
2476 echo "$file.sh does not exist"
2478 rp="hint to use instead?"
2480 for file in $ans; do
2481 if $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$ans = X -o X$ans = Xnone ; then
2487 echo "$file.sh does not exist -- ignored."
2494 : Remember our hint file for later.
2495 if $test -f "$src/hints/$file.sh" ; then
2505 echo "Fetching default answers from $config_sh..." >&4
2509 cp $config_sh config.sh 2>/dev/null
2519 test "$override" && . ./optdef.sh
2520 myuname="$newmyuname"
2522 : Restore computed paths
2523 for file in $loclist $trylist; do
2524 eval $file="\$_$file"
2529 Configure uses the operating system name and version to set some defaults.
2530 The default value is probably right if the name rings a bell. Otherwise,
2531 since spelling matters for me, either accept the default or answer "none"
2538 ''|' '|none) dflt=none ;;
2539 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2542 *) dflt="$osname" ;;
2544 rp="Operating system name?"
2548 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2554 ''|' '|none) dflt=none ;;
2555 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2556 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2558 ''|' ') dflt=none ;;
2563 *) dflt="$osvers" ;;
2565 rp="Operating system version?"
2575 : who configured the system
2576 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2577 cf_by=`(logname) 2>/dev/null`
2580 cf_by=`(whoami) 2>/dev/null`
2582 "") cf_by=unknown ;;
2586 : set up the script used to warn in case of inconsistency
2593 echo "*** WHOA THERE!!! ***" >&4
2594 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2595 rp=" Keep the $hint value?"
2598 y) td=$was; tu=$was;;
2602 : function used to set $1 to $val
2603 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2605 $define$undef) . ./whoa; eval "$var=\$td";;
2606 $undef$define) . ./whoa; eval "$var=\$tu";;
2607 *) eval "$var=$val";;
2612 Perl can be built to take advantage of threads on some systems.
2613 To do so, Configure must be run with -Dusethreads.
2615 Note that threading is a highly experimental feature, and
2616 some known race conditions still remain. If you choose to try
2617 it, be very sure to not actually deploy it for production
2618 purposes. README.threads has more details, and is required
2619 reading if you enable threads.
2621 case "$usethreads" in
2622 $define|true|[yY]*) dflt='y';;
2625 rp='Build a threading Perl?'
2628 y|Y) val="$define" ;;
2634 case "$usethreads" in
2638 As of 5.5.640, Perl has two different internal threading implementations,
2639 the 5.005 version (5005threads) and an interpreter-based version
2640 (ithreads) that has one interpreter per thread. Both are very
2641 experimental. This arrangement exists to help developers work out
2642 which one is better.
2644 If you're a casual user, you probably don't want interpreter-threads
2645 at this time. There doesn't yet exist a way to create threads from
2646 within Perl in this model, i.e., "use Thread;" will NOT work.
2648 : Default to ithreads unless overridden on command line or with
2651 case "$use5005threads" in
2652 $define|true|[yY]*) dflt='n';;
2654 case "$useithreads" in
2655 $undef|false|[nN]*) dflt='n';;
2657 rp='Use interpreter-based ithreads?'
2660 y|Y) val="$define" ;;
2665 : Now set use5005threads to the opposite value.
2666 case "$useithreads" in
2667 $define) val="$undef" ;;
2674 useithreads="$undef"
2675 use5005threads="$undef"
2679 case "$d_oldpthreads" in
2680 '') : Configure tests would be welcome here. For now, assume undef.
2682 *) val="$d_oldpthreads" ;;
2688 case "$usethreads" in
2689 "$define"|true|[yY]*)
2690 : Look for a hint-file generated 'call-back-unit'. If the
2691 : user has specified that a threading perl is to be built,
2692 : we may need to set or change some other defaults.
2693 if $test -f usethreads.cbu; then
2694 echo "Your platform has some specific hints for threaded builds, using them..."
2698 (Your platform doesn't have any specific hints for threaded builds.
2699 Assuming POSIX threads, then.)
2707 Perl can be built so that multiple Perl interpreters can coexist
2708 within the same Perl executable.
2711 case "$useithreads" in
2714 This multiple interpreter support is required for interpreter-based threads.
2719 echo 'Normally you do not need this and you should answer no.'
2720 case "$usemultiplicity" in
2721 $define|true|[yY]*) dflt='y';;
2724 rp='Build Perl for multiplicity?'
2727 y|Y) val="$define" ;;
2735 : determine where manual pages are on this system
2739 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2740 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2741 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2742 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2743 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2744 sysman=`./loc . /usr/man/man1 $syspath`
2747 if $test -d "$sysman"; then
2748 echo "System manual is in $sysman." >&4
2750 echo "Could not find manual pages in source form." >&4
2753 : see what memory models we can support
2756 $cat >pdp11.c <<'EOP'
2765 ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2766 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2767 dflt='unsplit split'
2769 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2772 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2777 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2780 if $test -d /lib/large || $test -d /usr/lib/large; then
2783 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2792 Some systems have different model sizes. On most systems they are called
2793 small, medium, large, and huge. On the PDP11 they are called unsplit and
2794 split. If your system doesn't support different memory models, say "none".
2795 If you wish to force everything to one memory model, say "none" here and
2796 put the appropriate flags later when it asks you for other cc and ld flags.
2797 Venix systems may wish to put "none" and let the compiler figure things out.
2798 (In the following question multiple model names should be space separated.)
2800 The default for most systems is "none".
2803 rp="Which memory models are supported?"
2818 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2819 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2826 rp="What flag indicates separate I and D space?"
2834 *large*|*small*|*medium*|*huge*)
2841 rp="What flag indicates large model?"
2851 *huge*) case "$huge" in
2855 rp="What flag indicates huge model?"
2865 *medium*) case "$medium" in
2869 rp="What flag indicates medium model?"
2876 *) medium="$large";;
2879 *small*) case "$small" in
2883 rp="What flag indicates small model?"
2894 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2897 $rm -f pdp11.* pdp11
2899 : make some quick guesses about what we are up against
2901 $echo $n "Hmm... $c"
2911 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2912 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2914 echo "Looks kind of like an OSF/1 system, but we'll see..."
2916 elif test `echo abc | tr a-z A-Z` = Abc ; then
2917 xxx=`./loc addbib blurfl $pth`
2918 if $test -f $xxx; then
2919 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2923 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2924 echo "Looks kind of like an extended USG system, but we'll see..."
2926 echo "Looks kind of like a USG system, but we'll see..."
2930 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2931 echo "Looks kind of like a BSD system, but we'll see..."
2935 echo "Looks kind of like a Version 7 system, but we'll see..."
2938 case "$eunicefix" in
2941 There is, however, a strange, musty smell in the air that reminds me of
2942 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2946 : it so happens the Eunice I know will not run shell scripts in Unix format
2950 echo "Congratulations. You aren't running Eunice."
2954 : Detect OS2. The p_ variable is set above in the Head.U unit.
2959 I have the feeling something is not exactly right, however...don't tell me...
2960 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2965 if test -f /xenix; then
2966 echo "Actually, this looks more like a XENIX system..."
2971 echo "It's not Xenix..."
2976 if test -f /venix; then
2977 echo "Actually, this looks more like a VENIX system..."
2984 echo "Nor is it Venix..."
2987 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2988 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2991 : see if we need a special compiler
2999 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3000 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3014 On some older systems the default C compiler will not resolve multiple global
3015 references that happen to have the same name. On some such systems the "Mcc"
3016 command may be used to force these to be resolved. On other systems a "cc -M"
3017 command is required. (Note that the -M flag on other systems indicates a
3018 memory model to use!) If you have the Gnu C compiler, you might wish to use
3024 rp="Use which C compiler?"
3032 rp="Use which C compiler?"
3036 : Look for a hint-file generated 'call-back-unit'. Now that the
3037 : user has specified the compiler, we may need to set or change some
3039 if $test -f cc.cbu; then
3043 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3044 $cat >gccvers.c <<EOM
3049 printf("%s\n", __VERSION__);
3051 printf("%s\n", "1");
3057 if $cc -o gccvers gccvers.c; then
3058 gccversion=`./gccvers`
3059 case "$gccversion" in
3060 '') echo "You are not using GNU cc." ;;
3061 *) echo "You are using GNU cc $gccversion."
3066 echo "*** WHOA THERE!!! ***" >&4
3067 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3068 case "$knowitall" in
3070 echo " You'd better start hunting for one and let me know about it." >&4
3076 case "$gccversion" in
3077 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3080 : decide how portable to be. Allow command line overrides.
3081 case "$d_portable" in
3083 *) d_portable="$define" ;;
3086 : set up shell script to do ~ expansion
3092 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3095 if $test -f /bin/csh; then
3096 /bin/csh -f -c "glob \$1"
3101 name=\`$expr x\$1 : '..\([^/]*\)'\`
3102 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3103 if $test ! -d "\$dir"; then
3105 echo "\$me: can't locate home directory for: \$name" >&2
3110 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3126 : now set up to get a file name
3130 cat <<'EOSC' >>getfile
3146 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3147 fn=`echo $fn | sed 's/(.*)//'`
3153 loc_file=`expr $fn : '.*:\(.*\)'`
3154 fn=`expr $fn : '\(.*\):.*'`
3162 */*) fullpath=true;;
3171 *e*) exp_file=true;;
3174 *p*) nopath_ok=true;;
3179 *d*) type='Directory';;
3180 *l*) type='Locate';;
3185 Locate) what='File';;
3190 case "$d_portable" in
3198 while test "$type"; do
3203 true) rp="$rp (~name ok)";;
3206 if test -f UU/getfile.ok && \
3207 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3226 value=`UU/filexp $ans`
3229 if test "$ans" != "$value"; then
3230 echo "(That expands to $value on this system.)"
3244 /*) value="$ansexp" ;;
3249 echo "I shall only accept a full path name, as in /bin/ls." >&4
3250 echo "Use a ! shell escape if you wish to check pathnames." >&4
3253 echo "Please give a full path name, starting with slash." >&4
3256 echo "Note that using ~name is ok provided it expands well." >&4
3269 for fp in $gfpth; do
3270 if test "X$fp" = X.; then
3275 if test -f "$pf"; then
3277 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3279 echo "($value is not a plain file, but that's ok.)"
3282 if test X"$type" = X; then
3289 for fp in $gfpth; do
3290 if test "X$fp" = X.; then
3295 if test -d "$pf"; then
3303 if test -d "$ansexp"; then
3304 echo "(Looking for $loc_file in directory $value.)"
3305 value="$value/$loc_file"
3306 ansexp="$ansexp/$loc_file"
3308 if test -f "$ansexp"; then
3311 case "$nopath_ok" in
3312 true) case "$value" in
3314 *) echo "Assuming $value will be in people's path."
3330 if test "$fastread" = yes; then
3335 rp="$what $value doesn't exist. Use that name anyway?"
3354 test "X$gfpthkeep" != Xy && gfpth=""
3357 : What should the include directory be ?
3359 $echo $n "Hmm... $c"
3363 if $test -f /bin/mips && /bin/mips; then
3364 echo "Looks like a MIPS system..."
3365 $cat >usr.c <<'EOCP'
3366 #ifdef SYSTYPE_BSD43
3370 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3371 dflt='/bsd43/usr/include'
3375 mips_type='System V'
3377 $rm -f usr.c usr.out
3378 echo "and you're compiling with the $mips_type compiler and libraries."
3382 echo "Doesn't look like a MIPS system."
3392 case "$xxx_prompt" in
3395 rp='Where are the include files you want to use?'
3403 : see how we invoke the C preprocessor
3405 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3406 cat <<'EOT' >testcpp.c
3412 if test ! -f cppstdin; then
3413 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3414 # AIX cc -E doesn't show the absolute headerfile
3415 # locations but we'll cheat by using the -M flag.
3416 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
3418 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3421 echo "Keeping your $hint cppstdin wrapper."
3424 wrapper=`pwd`/cppstdin
3428 if $test "X$cppstdin" != "X" && \
3429 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3430 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3432 echo "You used to use $cppstdin $cppminus so we'll use that again."
3434 '') echo "But let's see if we can live without a wrapper..." ;;
3436 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3437 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3439 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3442 echo "(However, $cpprun $cpplast does not work, let's see...)"
3450 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3457 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3458 $cc -E <testcpp.c >testcpp.out 2>&1; \
3459 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3460 echo "Yup, it does."
3463 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3464 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3465 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3466 echo "Yup, it does."
3469 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3470 $cc -P <testcpp.c >testcpp.out 2>&1; \
3471 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3472 echo "Yipee, that works!"
3475 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3476 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3477 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3478 echo "At long last!"
3481 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3482 $cpp <testcpp.c >testcpp.out 2>&1; \
3483 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3487 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3488 $cpp - <testcpp.c >testcpp.out 2>&1; \
3489 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3490 echo "Hooray, it works! I was beginning to wonder."
3493 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3494 $wrapper <testcpp.c >testcpp.out 2>&1; \
3495 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3501 rp="No dice. I can't find a C preprocessor. Name one:"
3505 $x_cpp <testcpp.c >testcpp.out 2>&1
3506 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3507 echo "OK, that will do." >&4
3509 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3524 echo "Perhaps can we force $cc -E using a wrapper..."
3525 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3526 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3532 echo "Nope, we'll have to live without it..."
3546 "$wrapper"|'cppstdin') ;;
3547 *) $rm -f $wrapper;;
3549 $rm -f testcpp.c testcpp.out
3551 : Set private lib path
3554 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3559 '') dlist="$loclibpth $plibpth $glibpth";;
3560 *) dlist="$libpth";;
3563 : Now check and see which directories actually exist, avoiding duplicates
3567 if $test -d $xxx; then
3570 *) libpth="$libpth $xxx";;
3576 Some systems have incompatible or broken versions of libraries. Among
3577 the directories listed in the question below, please remove any you
3578 know not to be holding relevant libraries, and add any that are needed.
3579 Say "none" for none.
3590 rp="Directories to use for library searches?"
3597 : compute shared library extension
3600 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3610 On some systems, shared libraries may be available. Answer 'none' if
3611 you want to suppress searching of shared libraries for the remainder
3612 of this configuration.
3615 rp='What is the file extension used for shared libraries?'
3619 : Define several unixisms.
3620 : Hints files or command line option can be used to override them.
3621 : The convoluted testing is in case hints files set either the old
3624 '') case "$exe_ext" in
3626 *) _exe="$exe_ext" ;;
3631 '') case "$lib_ext" in
3638 '') case "$obj_ext" in
3645 '') case "$path_sep" in
3656 : Which makefile gets called first. This is used by make depend.
3657 case "$firstmakefile" in
3658 '') firstmakefile='makefile';;
3663 Perl can be built to use the SOCKS proxy protocol library. To do so,
3664 Configure must be run with -Dusesocks.
3666 Normally you do not need this and you should answer no.
3670 $define|true|[yY]*) dflt='y';;
3673 rp='Build Perl for SOCKS?'
3676 y|Y) val="$define" ;;
3682 : Looking for optional libraries
3684 echo "Checking for optional libraries..." >&4
3689 case "$libswanted" in
3690 '') libswanted='c_s';;
3694 libswanted="$libswanted socks5 socks5_sh"
3697 for thislib in $libswanted; do
3700 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`
3701 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X" ; then
3703 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3705 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3707 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3709 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3711 libname=${thislib}_s
3712 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3715 if $test -f "$xxx"; then
3718 if $test -f "$xxx"; then
3720 shared) echo "Found -l$libname (shared)." ;;
3721 static) echo "Found -l$libname." ;;
3722 *) echo "Found -l$libname ($libstyle)." ;;
3726 *) dflt="$dflt -l$libname"
3727 libsfound="$libsfound $xxx"
3729 libsfiles="$libsfiles $yyy"
3730 yyy=`echo $xxx|sed "s@/$yyy\\$@@"`
3731 case " $libsdirs " in
3733 *) libsdirs="$libsdirs $yyy" ;;
3738 echo "No -l$thislib."
3749 ' '|'') dflt='none';;
3754 In order to compile $package on your machine, a number of libraries
3755 are usually needed. Include any other special libraries here as well.
3756 Say "none" for none. The default list is almost always right.
3760 rp="What libraries to use?"
3767 : determine optimization, if desired, or use for debug flag also
3769 ' '|$undef) dflt='none';;
3771 *) dflt="$optimize";;
3775 By default, $package compiles with the -O flag to use the optimizer.
3776 Alternately, you might want to use the symbolic debugger, which uses
3777 the -g flag (on traditional Unix systems). Either flag can be
3778 specified here. To use neither flag, specify the word "none".
3781 rp="What optimizer/debugger flag should be used?"
3785 'none') optimize=" ";;
3789 : We will not override a previous value, but we might want to
3790 : augment a hint file
3792 default|recommended)
3793 case "$gccversion" in
3794 1*) dflt='-fpcc-struct-return' ;;
3797 *-g*) dflt="$dflt -DDEBUGGING";;
3799 case "$gccversion" in
3800 2*) if test -d /etc/conf/kconfig.d &&
3801 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3807 case "$gccversion" in
3811 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3812 echo 'int main(void) { return 0; }' > gcctest.c
3813 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3814 echo "Yes, it does." 2>&1
3817 echo "Leaving current flags $ccflags alone." 2>&1
3819 *) dflt="$dflt -fno-strict-aliasing" ;;
3822 echo "Nope, it doesn't, but that's ok." 2>&1
3829 case "$mips_type" in
3830 *BSD*|'') inclwanted="$locincpth $usrinc";;
3831 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3833 for thisincl in $inclwanted; do
3834 if $test -d $thisincl; then
3835 if $test x$thisincl != x$usrinc; then
3838 *) dflt="$dflt -I$thisincl";;
3844 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3846 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3854 *) dflt="$dflt -D$2";;
3858 set signal.h LANGUAGE_C; eval $inctest
3862 ccflags="$ccflags -DSOCKS"
3867 default|recommended) dflt="$ccflags $dflt" ;;
3868 *) dflt="$ccflags";;
3876 Your C compiler may want other flags. For this question you should include
3877 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3878 but you should NOT include libraries or ld flags like -lwhatever. If you
3879 want $package to honor its debug switch, you should include -DDEBUGGING here.
3880 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3882 To use no flags, specify the word "none".
3888 rp="Any additional cc flags?"
3895 : the following weeds options from ccflags that are of no interest to cpp
3897 case "$gccversion" in
3898 1*) cppflags="$cppflags -D__GNUC__"
3900 case "$mips_type" in
3902 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3908 echo "Let me guess what the preprocessor flags are..." >&4
3922 *) ftry="$previous $flag";;
3924 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3925 >cpp1.out 2>/dev/null && \
3926 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3927 >cpp2.out 2>/dev/null && \
3928 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3929 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3931 cppflags="$cppflags $ftry"
3941 *-*) echo "They appear to be: $cppflags";;
3943 $rm -f cpp.c cpp?.out
3947 : flags used in final linking phase
3949 '') if ./venix; then
3955 *-posix*) dflt="$dflt -posix" ;;
3958 *) dflt="$ldflags";;
3961 : Try to guess additional flags to pick up local libraries.
3962 for thislibdir in $libpth; do
3963 case " $loclibpth " in
3966 *"-L$thislibdir "*) ;;
3967 *) dflt="$dflt -L$thislibdir" ;;
3979 Your C linker may need flags. For this question you should
3980 include -L/whatever and any other flags used by the C linker, but you
3981 should NOT include libraries like -lwhatever.
3983 Make sure you include the appropriate -L/path flags if your C linker
3984 does not normally search all of the directories you specified above,
3987 To use no flags, specify the word "none".
3991 rp="Any additional ld flags (NOT including libraries)?"
3997 rmlist="$rmlist pdp11"
4001 echo "Checking your choice of C compiler and flags for coherency..." >&4
4002 $cat > try.c <<'EOF'
4004 int main() { printf("Ok\n"); exit(0); }
4006 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4008 $cat >try.msg <<'EOM'
4009 I've tried to compile and run the following simple program:
4012 $cat try.c >> try.msg
4014 $cat >> try.msg <<EOM
4021 and I got the following output:
4025 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4026 if sh -c './try' >>try.msg 2>&1; then
4030 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4033 cat >> try.msg <<'EOQS'
4034 If $libs contains -lsfio, and sfio is mis-configured, then it
4035 sometimes (apparently) runs and exits with a 0 status, but with no
4036 output! It may have to do with sfio's use of _exit vs. exit.
4039 rp="You have a big problem. Shall I abort Configure"
4046 echo "The program compiled OK, but exited with status $?." >>try.msg
4047 rp="You have a problem. Shall I abort Configure"
4051 echo "I can't compile the test program." >>try.msg
4052 rp="You have a BIG problem. Shall I abort Configure"
4058 case "$knowitall" in
4060 echo "(The supplied flags or libraries might be incorrect.)"
4068 *) echo "Ok. Stopping Configure." >&4
4073 n) echo "OK, that should do.";;
4075 $rm -f try try.* core
4077 : define an is-a-typedef? function
4078 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4080 "") inclist="sys/types.h";;
4082 eval "varval=\$$var";
4086 for inc in $inclist; do
4087 echo "#include <$inc>" >>temp.c;
4089 echo "#ifdef $type" >> temp.c;
4090 echo "printf(\"We have $type\");" >> temp.c;
4091 echo "#endif" >> temp.c;
4092 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4093 if $contains $type temp.E >/dev/null 2>&1; then
4099 *) eval "$var=\$varval";;
4102 : define an is-a-typedef? function that prompts if the type is not available.
4103 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4105 "") inclist="sys/types.h";;
4107 eval "varval=\$$var";
4111 for inc in $inclist; do
4112 echo "#include <$inc>" >>temp.c;
4114 echo "#ifdef $type" >> temp.c;
4115 echo "printf(\"We have $type\");" >> temp.c;
4116 echo "#endif" >> temp.c;
4117 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4119 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4120 if $contains $type temp.E >/dev/null 2>&1; then
4121 echo "$type found." >&4;
4124 echo "$type NOT found." >&4;
4130 *) eval "$var=\$varval";;
4133 : define a shorthand compile call
4137 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4138 : define a shorthand compile call for compilations that should be ok.
4142 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4144 : check for lengths of integral types
4148 echo "Checking to see how big your integers are..." >&4
4149 $cat >intsize.c <<'EOCP'
4153 printf("intsize=%d;\n", (int)sizeof(int));
4154 printf("longsize=%d;\n", (int)sizeof(long));
4155 printf("shortsize=%d;\n", (int)sizeof(short));
4160 if eval $compile_ok && ./intsize > /dev/null; then
4162 echo "Your integers are $intsize bytes long."
4163 echo "Your long integers are $longsize bytes long."
4164 echo "Your short integers are $shortsize bytes long."
4168 Help! I can't compile and run the intsize test program: please enlighten me!
4169 (This is probably a misconfiguration in your system or libraries, and
4170 you really ought to fix it. Still, I'll try anyway.)
4174 rp="What is the size of an integer (in bytes)?"
4178 rp="What is the size of a long integer (in bytes)?"
4182 rp="What is the size of a short integer (in bytes)?"
4188 $rm -f intsize intsize.*
4190 : see what type lseek is declared as in the kernel
4191 rp="What is the type used for lseek's offset on this system?"
4192 set off_t lseektype long stdio.h sys/types.h
4196 $echo $n "Checking to see how big your file offsets are...$c" >&4
4198 #include <sys/types.h>
4202 printf("%d\n", (int)sizeof($lseektype));
4207 if eval $compile_ok; then
4209 $echo " $lseeksize bytes." >&4
4213 echo "(I can't seem to compile the test program. Guessing...)"
4214 rp="What is the size of your file offsets (in bytes)?"
4220 : see what type file positions are declared as in the library
4221 rp="What is the type for file position used by fsetpos()?"
4222 set fpos_t fpostype long stdio.h sys/types.h
4227 *_t) zzz="$fpostype" ;;
4230 $echo $n "Checking the size of $zzz...$c" >&4
4232 #include <sys/types.h>
4235 printf("%d\n", (int)sizeof($fpostype));
4240 if eval $compile_ok; then
4245 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4248 echo " $fpossize bytes."
4254 echo "(I can't compile the test program. Guessing...)" >&4
4255 rp="What is the size of your file positions (in bytes)?"
4262 case "$lseeksize:$fpossize" in
4265 You can have files larger than 2 gigabytes.
4270 Perl can be built to understand large files (files larger than 2 gigabytes)
4271 on some systems. To do so, Configure must be run with -Duselargefiles.
4273 If this doesn't make any sense to you, just accept the default 'y'.
4275 case "$uselargefiles" in
4276 "$undef"|false|[nN]*) dflt='n' ;;
4279 rp='Try to understand large files, if available?'
4282 y|Y) val="$define" ;;
4289 case "$uselargefiles" in
4291 : Look for a hint-file generated 'call-back-unit'. If the
4292 : user has specified that a large files perl is to be built,
4293 : we may need to set or change some other defaults.
4294 if $test -f uselfs.cbu; then
4295 echo "Your platform has some specific hints for large file builds, using them..."
4298 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4300 #include <sys/types.h>
4304 printf("%d\n", (int)sizeof($lseektype));
4309 if eval $compile_ok; then
4311 $echo " $lseeksize bytes." >&4
4315 echo "(I can't seem to compile the test program. Guessing...)"
4316 rp="What is the size of your file offsets (in bytes)?"
4321 *_t) zzz="$fpostype" ;;
4324 $echo $n "Rechecking the size of $zzz...$c" >&4
4326 #include <sys/types.h>
4329 printf("%d\n", (int)sizeof($fpostype));
4334 if eval $compile_ok; then
4339 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4342 echo " $fpossize bytes."
4348 echo "(I can't compile the test program. Guessing...)" >&4
4349 rp="What is the size of your file positions (in bytes)?"
4359 case "$usemorebits" in
4360 "$define"|true|[yY]*)
4362 uselongdouble="$define"
4363 usemorebits="$define"
4365 *) usemorebits="$undef"
4370 case "$intsize:$longsize" in
4373 You have natively 64-bit integers.
4378 Perl can be built to take advantage of 64-bit integer types
4379 on some systems. To do so, Configure must be run with -Duse64bits.
4381 If this doesn't make any sense to you, just accept the default.
4383 case "$use64bits" in
4384 $define|true|[yY]*) dflt='y';;
4387 rp='Try to use 64-bit integers, if available?'
4390 y|Y) val="$define" ;;
4398 case "$archname64" in
4399 '') archname64='' ;; # not a typo
4402 case "$use64bits" in
4403 "$define"|true|[yY]*)
4404 : Look for a hint-file generated 'call-back-unit'. If the
4405 : user has specified that a 64-bit perl is to be built,
4406 : we may need to set or change some other defaults.
4407 if $test -f use64bits.cbu; then
4408 echo "Your platform has some specific hints for 64-bit builds, using them..."
4412 (Your platform doesn't have any specific hints for 64-bit builds.)
4414 case "$intsize:$longsize" in
4416 (This is probably okay, as your system is a natively 64-bit system.)
4420 case "$gccversion" in
4422 *) case "$ccflags" in
4423 *-DUSE_LONG_LONG*) ;;
4425 But since you seem to be using gcc, I will now add -DUSE_LONG_LONG
4426 to the compilation flags.
4428 ccflags="$ccflags -DUSE_LONG_LONG"
4437 : determine the architecture name
4439 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4440 tarch=`arch`"-$osname"
4441 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4442 if uname -m > tmparch 2>&1 ; then
4443 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4444 -e 's/$/'"-$osname/" tmparch`
4452 case "$myarchname" in
4455 echo "(Your architecture name used to be $myarchname.)"
4462 *) dflt="$archname";;
4464 rp='What is your architecture name'
4467 case "$usethreads" in
4469 echo "Threads selected." >&4
4471 *-thread*) echo "...and architecture name already has -thread." >&4
4473 *) archname="$archname-thread"
4474 echo "...setting architecture name to $archname." >&4
4479 case "$usemultiplicity" in
4481 echo "Multiplicity selected." >&4
4483 *-multi*) echo "...and architecture name already has -multi." >&4
4485 *) archname="$archname-multi"
4486 echo "...setting architecture name to $archname." >&4
4491 case "$use64bits" in
4493 case "$archname64" in
4498 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4500 *) archname="$archname-$archname64"
4501 echo "...setting architecture name to $archname." >&4
4508 : determine root of directory hierarchy where package will be installed.
4511 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4519 By default, $package will be installed in $dflt/bin, manual pages
4520 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4521 installation directories. Typically this is something like /usr/local.
4522 If you wish to have binaries under /usr/bin but other parts of the
4523 installation under /usr/local, that's ok: you will be prompted
4524 separately for each of the installation directories, the prefix being
4525 only used to set the defaults.
4529 rp='Installation prefix to use?'
4537 *) oldprefix="$prefix";;
4547 $define|true) afs=true ;;
4548 $undef|false) afs=false ;;
4549 *) if test -d /afs; then
4557 echo "AFS may be running... I'll be extra cautious then..." >&4
4559 echo "AFS does not seem to be running..." >&4
4562 : determine installation prefix for where package is to be installed.
4566 Since you are running AFS, I need to distinguish the directory in which
4567 files will reside from the directory in which they are installed (and from
4568 which they are presumably copied to the former directory by occult means).
4571 case "$installprefix" in
4572 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4573 *) dflt="$installprefix";;
4578 In some special cases, particularly when building $package for distribution,
4579 it is convenient to distinguish between the directory in which files should
4580 be installed from the directory ($prefix) in which they
4581 will eventually reside. For most users, these two directories are the same.
4584 case "$installprefix" in
4586 *) dflt=$installprefix;;
4590 rp='What installation prefix should I use for installing files?'
4592 installprefix="$ans"
4593 installprefixexp="$ansexp"
4595 : set the prefixit variable, to compute a suitable default value
4596 prefixit='case "$3" in
4598 case "$oldprefix" in
4599 "") eval "$1=\"\$$2\"";;
4606 ""|" ") eval "$1=\"\$$2\"";;
4612 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4614 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4615 /*-$oldprefix/*|\~*-$oldprefix/*)
4616 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4617 *) eval "$1=\"\$$2\"";;
4621 : set the base revision
4625 : get the patchlevel
4627 echo "Getting the current patchlevel..." >&4
4628 if $test -r $rsrc/patchlevel.h;then
4629 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4630 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4631 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4632 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4633 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4641 $echo $n "(You have $package" $c
4644 *) $echo $n " $baserev" $c ;;
4646 $echo $n " patchlevel $patchlevel" $c
4647 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4651 : XXX Should be a Configure test for double-dots in filenames.
4652 version=`echo $baserev $patchlevel $subversion | \
4653 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4654 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4655 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4658 version=`echo $baserev $patchlevel $subversion | \
4659 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4660 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4661 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4664 : Special case the 5.005_xx maintenance series, which used 5.005
4665 : without any subversion label as a subdirectory in $sitelib
4666 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4667 api_versionstring='5.005'
4670 : determine installation style
4671 : For now, try to deduce it from prefix unless it is already set.
4672 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4673 case "$installstyle" in
4674 '') case "$prefix" in
4675 *perl*) dflt='lib';;
4676 *) dflt='lib/perl5' ;;
4679 *) dflt='lib/perl5' ;;
4681 : Probably not worth prompting for this since we prompt for all
4682 : the directories individually, and the prompt would be too long and
4686 : determine where private library files go
4687 : Usual default is /usr/local/lib/perl5/$version.
4688 : Also allow things like /opt/perl/lib/$version, since
4689 : /opt/perl/lib/perl5... would be redundant.
4690 : The default "style" setting is made in installstyle.U
4691 case "$installstyle" in
4692 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4693 *) set dflt privlib lib/$version ;;
4698 There are some auxiliary files for $package that need to be put into a
4699 private library directory that is accessible by everyone.
4703 rp='Pathname where the private library files will reside?'
4706 privlibexp="$ansexp"
4707 : Change installation prefix, if necessary.
4708 if $test X"$prefix" != X"$installprefix"; then
4709 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4711 installprivlib="$privlibexp"
4714 : set the prefixup variable, to restore leading tilda escape
4715 prefixup='case "$prefixexp" in
4717 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4720 : determine where public architecture dependent libraries go
4723 : privlib default is /usr/local/lib/$package/$version
4724 : archlib default is /usr/local/lib/$package/$version/$archname
4725 : privlib may have an optional trailing /share.
4726 tdflt=`echo $privlib | $sed 's,/share$,,'`
4727 tdflt=$tdflt/$archname
4736 $spackage contains architecture-dependent library files. If you are
4737 sharing libraries in a heterogeneous environment, you might store
4738 these files in a separate location. Otherwise, you can just include
4739 them with the rest of the public library files.
4743 rp='Where do you want to put the public architecture-dependent libraries?'
4746 archlibexp="$ansexp"
4747 if $test X"$archlib" = X"$privlib"; then
4752 : Change installation prefix, if necessary.
4753 if $test X"$prefix" != X"$installprefix"; then
4754 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4756 installarchlib="$archlibexp"
4760 : Binary compatibility with 5.005 is not possible for builds
4761 : with advanced features
4762 case "$usethreads$usemultiplicity" in
4764 bincompat5005="$undef"
4765 d_bincompat5005="$undef"
4769 Perl 5.006 can be compiled for binary compatibility with 5.005.
4770 If you decide to do so, you will be able to continue using most
4771 of the extensions that were compiled for Perl 5.005.
4774 case "$bincompat5005$d_bincompat5005" in
4775 *"$undef"*) dflt=n ;;
4778 rp='Binary compatibility with Perl 5.005?'
4781 y*) val="$define" ;;
4786 case "$d_bincompat5005" in
4788 bincompat5005="$define"
4790 *) bincompat5005="$undef"
4791 d_bincompat5005="$undef"
4798 : see if setuid scripts can be secure
4801 Some kernels have a bug that prevents setuid #! scripts from being
4802 secure. Some sites have disabled setuid #! scripts because of this.
4804 First let's decide if your kernel supports secure setuid #! scripts.
4805 (If setuid #! scripts would be secure but have been disabled anyway,
4806 don't say that they are secure if asked.)
4811 if $test -d /dev/fd; then
4812 echo "#!$ls" >reflect
4813 chmod +x,u+s reflect
4814 ./reflect >flect 2>&1
4815 if $contains "/dev/fd" flect >/dev/null; then
4816 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4820 If you are not sure if they are secure, I can check but I'll need a
4821 username and password different from the one you are using right now.
4822 If you don't have such a username or don't want me to test, simply
4826 rp='Other username to test security of setuid scripts with?'
4831 case "$d_suidsafe" in
4832 '') echo "I'll assume setuid scripts are *not* secure." >&4
4835 echo "Well, the $hint value is *not* secure." >&4
4837 *) echo "Well, the $hint value *is* secure." >&4
4842 $rm -f reflect flect
4843 echo "#!$ls" >reflect
4844 chmod +x,u+s reflect
4847 echo '"su" will (probably) prompt you for '"$ans's password."
4848 su $ans -c './reflect >flect'
4849 if $contains "/dev/fd" flect >/dev/null; then
4850 echo "Okay, it looks like setuid scripts are secure." >&4
4853 echo "I don't think setuid scripts are secure." >&4
4858 rp='Does your kernel have *secure* setuid scripts?'
4861 [yY]*) val="$define";;
4866 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4867 echo "(That's for file descriptors, not floppy disks.)"
4873 $rm -f reflect flect
4875 : now see if they want to do setuid emulation
4878 case "$d_suidsafe" in
4881 echo "No need to emulate SUID scripts since they are secure here." >& 4
4885 Some systems have disabled setuid scripts, especially systems where
4886 setuid scripts cannot be secure. On systems where setuid scripts have
4887 been disabled, the setuid/setgid bits on scripts are currently
4888 useless. It is possible for $package to detect those bits and emulate
4889 setuid/setgid in a secure fashion. This emulation will only work if
4890 setuid scripts have been disabled in your kernel.
4894 "$define") dflt=y ;;
4897 rp="Do you want to do setuid/setgid emulation?"
4900 [yY]*) val="$define";;
4908 : determine filename position in cpp output
4910 echo "Computing filename position in cpp output for #include directives..." >&4
4911 echo '#include <stdio.h>' > foo.c
4914 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4915 $grep '^[ ]*#.*stdio\.h' | \
4916 while read cline; do
4919 while $test \$# -gt 0; do
4920 if $test -r \`echo \$1 | $tr -d '"'\`; then
4925 pos=\`expr \$pos + 1\`
4937 *) pos="${fieldn}th";;
4939 echo "Your cpp writes the filename in the $pos field of the line."
4941 : locate header file
4946 for usrincdir in $usrinc
4948 if test -f \$usrincdir/\$wanted; then
4949 echo "\$usrincdir/\$wanted"
4953 awkprg='{ print \$$fieldn }'
4954 echo "#include <\$wanted>" > foo\$\$.c
4955 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4956 $grep "^[ ]*#.*\$wanted" | \
4957 while read cline; do
4958 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4960 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4961 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4966 # status = 0: grep returned 0 lines, case statement not executed
4967 # status = 1: headerfile found
4968 # status = 2: while loop executed, no headerfile found
4972 if test \$status -eq 1; then
4979 : define an alternate in-header-list? function
4980 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4981 cont=true; xxf="echo \"<\$1> found.\" >&4";
4982 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4983 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4985 case $# in 4) instead=instead;; *) instead="at last";; esac;
4986 while $test "$cont"; do
4988 var=$2; eval "was=\$$2";
4989 if $test "$xxx" && $test -r "$xxx";
4991 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4994 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4995 set $yyy; shift; shift; yyy=$@;
4996 case $# in 0) cont="";;
4997 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4998 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4999 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5000 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5004 do set $yyy; var=$2; eval "was=\$$2";
5005 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5006 set $yyy; shift; shift; yyy=$@;
5009 : see if this is a malloc.h system
5010 set malloc.h i_malloc
5013 : see if stdlib is available
5014 set stdlib.h i_stdlib
5017 : determine which malloc to compile in
5019 case "$usemymalloc" in
5020 ''|[yY]*|true|$define) dflt='y' ;;
5023 rp="Do you wish to attempt to use the malloc that comes with $package?"
5029 mallocsrc='malloc.c'
5030 mallocobj="malloc$_o"
5031 d_mymalloc="$define"
5034 : Remove malloc from list of libraries to use
5035 echo "Removing unneeded -lmalloc from library list" >&4
5036 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5039 echo "libs = $libs" >&4
5051 : compute the return types of malloc and free
5053 $cat >malloc.c <<END
5057 #include <sys/types.h>
5071 case "$malloctype" in
5073 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5080 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5084 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5091 echo "Your system uses $freetype free(), it would seem." >&4
5095 The installation process will also create a directory for
5096 vendor-supplied add-ons. Vendors who supply perl with their system
5097 may find it convenient to place all vendor-supplied files in this
5098 directory rather than in the main distribution directory. This will
5099 ease upgrades between binary-compatible maintenance versions of perl.
5101 Of course you may also use these directories in whatever way you see
5102 fit. For example, you might use them to access modules shared over a
5103 company-wide network.
5105 The default answer should be fine for most people.
5106 This causes further questions about vendor add-ons to be skipped
5107 and no vendor-specific directories will be configured for perl.
5110 rp='Do you want to configure vendor-specific add-on directories?'
5111 case "$usevendorprefix" in
5112 define|true|[yY]*) dflt=y ;;
5118 rp='Installation prefix to use for vendor-supplied add-ons?'
5119 case "$vendorprefix" in
5121 *) dflt=$vendorprefix ;;
5125 case "$vendorprefix" in
5129 *) oldvendorprefix="$prefix";;
5133 usevendorprefix="$define"
5135 vendorprefixexp="$ansexp"
5137 *) usevendorprefix="$undef"
5143 case "$vendorprefix" in
5144 '') d_vendorlib="$undef"
5148 *) d_vendorlib="$define"
5149 : determine where vendor-supplied modules go.
5150 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5151 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5152 case "$installstyle" in
5153 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5154 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5157 rp='Pathname for the vendor-supplied library files?'
5160 vendorlibexp="$ansexp"
5161 : Change installation prefix, if necessary.
5162 if $test X"$prefix" != X"$installprefix"; then
5163 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5165 installvendorlib="$vendorlibexp"
5170 : Cruising for prototypes
5172 echo "Checking out function prototypes..." >&4
5173 $cat >prototype.c <<'EOCP'
5174 int main(int argc, char *argv[]) {
5177 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5178 echo "Your C compiler appears to support function prototypes."
5181 echo "Your C compiler doesn't seem to understand function prototypes."
5188 case "$prototype" in
5190 *) ansi2knr='ansi2knr'
5195 This version of $package can only be compiled by a compiler that
5196 understands function prototypes. Unfortunately, your C compiler
5198 doesn't seem to understand them. Sorry about that.
5200 If GNU cc is available for your system, perhaps you could try that instead.
5202 Eventually, we hope to support building Perl with pre-ANSI compilers.
5203 If you would like to help in that effort, please contact <perlbug@perl.org>.
5205 Aborting Configure now.
5211 : determine where public executables go
5216 rp='Pathname where the public executables will reside?'
5218 if $test "X$ansexp" != "X$binexp"; then
5223 : Change installation prefix, if necessary.
5224 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5225 if $test X"$prefix" != X"$installprefix"; then
5226 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5228 installbin="$binexp"
5233 After $package is installed, you may wish to install various
5234 add-on modules and utilities. Typically, these add-ons will
5235 be installed under $prefix with the rest
5236 of this package. However, you may wish to install such add-ons
5237 elsewhere under a different prefix.
5239 If you do not wish to put everything under a single prefix, that's
5240 ok. You will be prompted for the individual locations; this siteprefix
5241 is only used to suggest the defaults.
5243 The default should be fine for most people.
5247 rp='Installation prefix to use for add-on modules and utilities?'
5248 : XXX Here might be another good place for an installstyle setting.
5249 case "$siteprefix" in
5251 *) dflt=$siteprefix ;;
5255 case "$siteprefix" in
5260 *) oldsiteprefix="$prefix";;
5265 siteprefixexp="$ansexp"
5267 : determine where site specific libraries go.
5268 : Usual default is /usr/local/lib/perl5/site_perl/$version
5269 : The default "style" setting is made in installstyle.U
5270 : XXX No longer works with Prefixit stuff.
5271 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5272 case "$installstyle" in
5273 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5274 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5278 The installation process will create a directory for
5279 site-specific extensions and modules. Most users find it convenient
5280 to place all site-specific files in this directory rather than in the
5281 main distribution directory.
5285 rp='Pathname for the site-specific library files?'
5288 sitelibexp="$ansexp"
5289 : Change installation prefix, if necessary.
5290 if $test X"$prefix" != X"$installprefix"; then
5291 installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5293 installsitelib="$sitelibexp"
5296 : Determine list of previous versions to include in @INC
5297 $cat > getverlist <<EOPL
5300 \$api_versionstring = "$api_versionstring";
5301 \$version = "$version";
5302 \$sitelib = "$sitelib";
5303 \$archname = "$archname";
5305 $cat >> getverlist <<'EOPL'
5306 # Can't have leading @ because metaconfig interprets it as a command!
5307 ;@inc_version_list=();
5308 $stem=dirname($sitelib);
5309 # Redo to do opendir/readdir?
5312 ;@candidates = glob("5.*");
5318 # XXX ToDo: These comparisons must be reworked when two-digit
5319 # subversions come along, so that 5.7.10 compares as greater than
5320 # 5.7.3! By that time, hope that 5.6.x is sufficiently
5321 # widespread that we can use the built-in version vectors rather
5322 # than reinventing them here. For 5.6.0, however, we must
5323 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
5324 foreach $d (@candidates) {
5325 if ($d lt $version) {
5326 if ($d ge $api_versionstring) {
5327 unshift(@inc_version_list, "$d/$archname", $d);
5329 elsif ($d ge "5.005") {
5330 unshift(@inc_version_list, $d);
5334 # Skip newer version. I.e. don't look in
5335 # 5.7.0 if we're installing 5.6.1.
5339 if (@inc_version_list) {
5340 print join(' ', @inc_version_list);
5343 # Blank space to preserve value for next Configure run.
5348 case "$inc_version_list" in
5349 '') if test -x $perl; then
5350 dflt=`$perl getverlist`
5355 $undef) dflt='none' ;;
5356 *) dflt="$inc_version_list" ;;
5360 In order to ease the process of upgrading, this version of perl
5361 can be configured to use modules built and installed with earlier
5362 versions of perl that were installed under $prefix. Specify here
5363 the list of earlier versions that this version of perl should check.
5364 If Configure detected no earlier versions of perl installed under
5365 $prefix, then the list will be empty. Answer 'none' to tell perl
5366 to not search earlier versions.
5368 The default should almost always be sensible, so if you're not sure,
5369 just accept the default.
5372 rp='List of earlier versions to include in @INC?'
5375 [Nn]one) inc_version_list=' ' ;;
5376 *) inc_version_list="$ans" ;;
5378 case "$inc_version_list" in
5380 inc_version_list_init='0';;
5381 *) inc_version_list_init=`echo $inc_version_list |
5382 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5387 : determine whether to install perl also as /usr/bin/perl
5390 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5392 Many scripts expect to perl to be installed as /usr/bin/perl.
5393 I can install the perl you are about to compile also as /usr/bin/perl
5394 (in addition to $installbin/perl).
5396 case "$installusrbinperl" in
5397 "$undef"|[nN]*) dflt='n';;
5400 rp="Do you want to install perl as /usr/bin/perl?"
5403 [yY]*) val="$define";;
5409 set installusrbinperl
5413 echo "Checking for GNU C Library..." >&4
5414 cat >gnulibc.c <<EOM
5426 if eval $compile_ok && ./gnulibc; then
5428 echo "You are using the GNU C Library"
5431 echo "You are not using the GNU C Library"
5437 : see if nm is to be used to determine whether a symbol is defined or not
5441 case "$d_gnulibc" in
5444 echo "nm probably won't work on the GNU C Library." >&4
5450 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5452 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5453 echo "'nm' won't be sufficient on this sytem." >&4
5459 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5460 if $test $dflt -gt 20; then
5470 true|$define) dflt=y;;
5477 I can use $nm to extract the symbols from your C libraries. This
5478 is a time consuming task which may generate huge output on the disk (up
5479 to 3 megabytes) but that should make the symbols extraction faster. The
5480 alternative is to skip the 'nm' extraction part and to compile a small
5481 test program instead to determine whether each symbol is present. If
5482 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5483 this may be the best solution.
5485 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5488 rp="Shall I use $nm to extract C symbols from the libraries?"
5491 [Nn]*) usenm=false;;
5500 : nm options which may be necessary
5502 '') if $test -f /mach_boot; then
5504 elif $test -d /usr/ccs/lib; then
5505 nm_opt='-p' # Solaris (and SunOS?)
5506 elif $test -f /dgux; then
5508 elif $test -f /lib64/rld; then
5509 nm_opt='-p' # 64-bit Irix
5515 : nm options which may be necessary for shared libraries but illegal
5516 : for archive libraries. Thank you, Linux.
5517 case "$nm_so_opt" in
5518 '') case "$myuname" in
5520 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5521 nm_so_opt='--dynamic'
5530 : get list of predefined functions in a handy place
5535 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5542 *) for thislib in $libs; do
5545 : Handle C library specially below.
5548 thislib=`echo $thislib | $sed -e 's/^-l//'`
5549 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5551 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5553 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5555 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5557 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5559 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5561 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5566 libnames="$libnames $try"
5568 *) libnames="$libnames $thislib" ;;
5577 for xxx in $libpth; do
5578 $test -r $1 || set $xxx/libc.$so
5579 : The messy sed command sorts on library version numbers.
5581 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5582 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5584 s/[0-9][0-9]*/0000&/g
5585 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5588 sort | $sed -e 's/^.* //'`
5591 $test -r $1 || set /usr/ccs/lib/libc.$so
5592 $test -r $1 || set /lib/libsys_s$_a
5598 if $test -r "$1"; then
5599 echo "Your (shared) C library seems to be in $1."
5601 elif $test -r /lib/libc && $test -r /lib/clib; then
5602 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5604 libc='/lib/clib /lib/libc'
5605 if $test -r /lib/syslib; then
5606 echo "(Your math library is in /lib/syslib.)"
5607 libc="$libc /lib/syslib"
5609 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5610 echo "Your C library seems to be in $libc, as you said before."
5611 elif $test -r $incpath/usr/lib/libc$_a; then
5612 libc=$incpath/usr/lib/libc$_a;
5613 echo "Your C library seems to be in $libc. That's fine."
5614 elif $test -r /lib/libc$_a; then
5616 echo "Your C library seems to be in $libc. You're normal."
5618 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5620 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5621 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5622 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5624 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5626 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5629 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5631 if $test -r "$tans"; then
5632 echo "Your C library seems to be in $tans, of all places."
5638 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5642 If the guess above is wrong (which it might be if you're using a strange
5643 compiler, or your machine supports multiple models), you can override it here.
5648 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5650 I can't seem to find your C library. I've looked in the following places:
5653 $sed 's/^/ /' libpath
5656 None of these seems to contain your C library. I need to get its name...
5661 rp='Where is your C library?'
5666 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5667 set X `cat libnames`
5670 case $# in 1) xxx=file; esac
5671 echo "Extracting names from the following $xxx for later perusal:" >&4
5673 $sed 's/^/ /' libnames >&4
5675 $echo $n "This may take a while...$c" >&4
5679 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5680 *) $nm $nm_opt $file 2>/dev/null;;
5685 $grep fprintf libc.tmp > libc.ptf
5686 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5687 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5689 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5691 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5693 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5695 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5697 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5699 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5701 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5703 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5705 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5707 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5709 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5711 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5713 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5714 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5716 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5718 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5720 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5722 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5724 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5726 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5728 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5730 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5732 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5734 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5736 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5738 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5740 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5742 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5744 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5747 $nm -p $* 2>/dev/null >libc.tmp
5748 $grep fprintf libc.tmp > libc.ptf
5749 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5750 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5756 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5758 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5759 for thisname in $libnames $libc; do
5760 $ar t $thisname >>libc.tmp
5762 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5764 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5765 # Repeat libc to extract forwarders to DLL entries too
5766 for thisname in $libnames $libc; do
5767 $ar tv $thisname >>libc.tmp
5768 # Revision 50 of EMX has bug in $ar.
5769 # it will not extract forwarders to DLL entries
5770 # Use emximp which will extract exactly them.
5771 emximp -o tmp.imp $thisname \
5773 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5774 < tmp.imp >>libc.tmp
5777 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5780 echo "$ar didn't seem to work right." >&4
5781 echo "Maybe this is a Cray...trying bld instead..." >&4
5782 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5784 for thisname in $libnames; do
5786 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5787 $ar t $thisname >>libc.tmp
5791 echo "That didn't work either. Giving up." >&4
5798 if $test -f /lib/syscalls.exp; then
5800 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5801 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5805 $rm -f libnames libpath
5807 : see if dld is available
5811 : is a C symbol defined?
5814 -v) tf=libc.tmp; tc=""; tdc="";;
5815 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5816 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5819 case "$reuseval-$4" in
5821 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5827 if $contains $tlook $tf >/dev/null 2>&1;
5832 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5833 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5841 $define) tval=true;;
5847 : define an is-in-libc? function
5848 inlibc='echo " "; td=$define; tu=$undef;
5849 sym=$1; var=$2; eval "was=\$$2";
5851 case "$reuseval$was" in
5861 echo "$sym() found." >&4;
5862 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5864 echo "$sym() NOT found." >&4;
5865 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5869 $define) echo "$sym() found." >&4;;
5870 *) echo "$sym() NOT found." >&4;;
5874 : see if dlopen exists
5881 : determine which dynamic loading, if any, to compile in
5883 dldir="ext/DynaLoader"
5896 $define) dflt='y' ;;
5899 $define) dflt='y' ;;
5901 : Does a dl_xxx.xs file exist for this operating system
5902 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5905 rp="Do you wish to use dynamic loading?"
5912 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5913 dflt="$dldir/dl_${osname}.xs"
5914 elif $test "$d_dlopen" = "$define" ; then
5915 dflt="$dldir/dl_dlopen.xs"
5916 elif $test "$i_dld" = "$define" ; then
5917 dflt="$dldir/dl_dld.xs"
5922 *) dflt="$dldir/$dlsrc"
5925 echo "The following dynamic loading files are available:"
5926 : Can not go over to $dldir because getfile has path hard-coded in.
5927 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5928 rp="Source file to use for dynamic loading"
5934 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5938 Some systems may require passing special flags to $cc -c to
5939 compile modules that will be used to create a shared library.
5940 To use no flags, say "none".
5943 case "$cccdlflags" in
5944 '') case "$gccversion" in
5945 '') case "$osname" in
5947 next) dflt='none' ;;
5948 irix*) dflt='-KPIC' ;;
5949 svr4*|esix*|solaris) dflt='-KPIC' ;;
5950 sunos) dflt='-pic' ;;
5954 *) case "$osname" in
5955 svr4*|esix*|solaris) dflt='-fPIC' ;;
5960 *) dflt="$cccdlflags" ;;
5962 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5965 none) cccdlflags=' ' ;;
5966 *) cccdlflags="$ans" ;;
5971 Some systems use ld to create libraries that can be dynamically loaded,
5972 while other systems (such as those using ELF) use $cc.
5976 '') $cat >try.c <<'EOM'
5977 /* Test for whether ELF binaries are produced */
5982 int i = open("a.out",O_RDONLY);
5985 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5986 exit(0); /* succeed (yes, it's ELF) */
5991 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5993 You appear to have ELF support. I'll use $cc to build dynamic libraries.
5997 echo "I'll use ld to build dynamic libraries."
6006 rp="What command should be used to create dynamic libraries?"
6012 Some systems may require passing special flags to $ld to create a
6013 library that can be dynamically loaded. If your ld flags include
6014 -L/other/path options to locate libraries outside your loader's normal
6015 search path, you may need to specify those -L options here as well. To
6016 use no flags, say "none".
6019 case "$lddlflags" in
6020 '') case "$osname" in
6021 beos) dflt='-nostart' ;;
6023 linux|irix*) dflt='-shared' ;;
6024 next) dflt='none' ;;
6025 solaris) dflt='-G' ;;
6026 sunos) dflt='-assert nodefinitions' ;;
6027 svr4*|esix*) dflt="-G $ldflags" ;;
6031 *) dflt="$lddlflags" ;;
6034 : Try to guess additional flags to pick up local libraries.
6035 : Be careful not to append to a plain 'none'
6039 for thisflag in $ldflags; do
6044 *) dflt="$dflt $thisflag" ;;
6051 ''|' ') dflt='none' ;;
6054 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6057 none) lddlflags=' ' ;;
6058 *) lddlflags="$ans" ;;
6063 Some systems may require passing special flags to $cc to indicate that
6064 the resulting executable will use dynamic linking. To use no flags,
6068 case "$ccdlflags" in
6069 '') case "$osname" in
6070 hpux) dflt='-Wl,-E' ;;
6071 linux) dflt='-rdynamic' ;;
6072 next) dflt='none' ;;
6073 sunos) dflt='none' ;;
6077 *) dflt="$ccdlflags" ;;
6079 rp="Any special flags to pass to $cc to use dynamic linking?"
6082 none) ccdlflags=' ' ;;
6083 *) ccdlflags="$ans" ;;
6097 # No dynamic loading being used, so don't bother even to prompt.
6100 *) case "$useshrplib" in
6101 '') case "$osname" in
6102 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6104 also='Building a shared libperl is required for dynamic loading to work on your system.'
6109 also='Building a shared libperl is needed for MAB support.'
6127 The perl executable is normally obtained by linking perlmain.c with
6128 libperl${_a}, any static extensions (usually just DynaLoader), and
6129 any other libraries needed on this system (such as -lm, etc.). Since
6130 your system supports dynamic loading, it is probably possible to build
6131 a shared libperl.$so. If you will have more than one executable linked
6132 to libperl.$so, this will significantly reduce the size of each
6133 executable, but it may have a noticeable affect on performance. The
6134 default is probably sensible for your system.
6138 rp="Build a shared libperl.$so (y/n)"
6142 useshrplib='true' ;;
6143 *) useshrplib='false' ;;
6148 case "$useshrplib" in
6152 # Figure out a good name for libperl.so. Since it gets stored in
6153 # a version-specific architecture-dependent library, the version
6154 # number isn't really that important, except for making cc/ld happy.
6156 # A name such as libperl.so.3.1
6157 majmin="libperl.$so.$patchlevel.$subversion"
6158 # A name such as libperl.so.301
6159 majonly=`echo $patchlevel $subversion |
6160 $awk '{printf "%d%02d", $1, $2}'`
6161 majonly=libperl.$so.$majonly
6162 # I'd prefer to keep the os-specific stuff here to a minimum, and
6163 # rely on figuring it out from the naming of libc.
6164 case "${osname}${osvers}" in
6167 # XXX How handle the --version stuff for MAB?
6169 linux*) # ld won't link with a bare -lperl otherwise.
6172 cygwin*) # include version
6173 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6175 *) # Try to guess based on whether libc has major.minor.
6177 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6178 *libc.$so.[0-9]*) dflt=$majonly ;;
6179 *) dflt=libperl.$so ;;
6189 I need to select a good name for the shared libperl. If your system uses
6190 library names with major and minor numbers, then you might want something
6191 like $majmin. Alternatively, if your system uses a single version
6192 number for shared libraries, then you might want to use $majonly.
6193 Or, your system might be quite happy with a simple libperl.$so.
6195 Since the shared libperl will get installed into a version-specific
6196 architecture-dependent directory, the version number of the shared perl
6197 library probably isn't important, so the default should be o.k.
6200 rp='What name do you want to give to the shared libperl?'
6203 echo "Ok, I'll use $libperl"
6206 libperl="libperl${_a}"
6210 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6214 WARNING: Use of the shrpdir variable for the installation location of
6215 the shared $libperl is not supported. It was never documented and
6216 will not work in this version. Let me (perlbug@perl.com)
6217 know of any problems this may cause.
6223 But your current setting of $shrpdir is
6224 the default anyway, so it's harmless.
6229 Further, your current attempted setting of $shrpdir
6230 conflicts with the value of $archlibexp/CORE
6231 that installperl will use.
6238 # How will the perl executable find the installed shared $libperl?
6239 # Add $xxx to ccdlflags.
6240 # If we can't figure out a command-line option, use $shrpenv to
6241 # set env LD_RUN_PATH. The main perl makefile uses this.
6242 shrpdir=$archlibexp/CORE
6245 if "$useshrplib"; then
6248 # We'll set it in Makefile.SH...
6254 xxx="-Wl,-R$shrpdir"
6256 linux|irix*|dec_osf)
6257 xxx="-Wl,-rpath,$shrpdir"
6260 # next doesn't like the default...
6263 # beos doesn't like the default, either.
6266 # hpux doesn't like the default, either.
6267 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6270 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6276 # Only add $xxx if it isn't already in ccdlflags.
6277 case " $ccdlflags " in
6279 *) ccdlflags="$ccdlflags $xxx"
6282 Adding $xxx to the flags
6283 passed to $ld so that the perl executable will find the
6284 installed shared $libperl.
6292 # Fix ccdlflags in AIX for building external extensions.
6293 # (For building Perl itself bare -bE:perl.exp is needed,
6294 # Makefile.SH takes care of this.)
6296 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6298 # Respect a hint or command-line value.
6300 '') shrpenv="$tmp_shrpenv" ;;
6302 case "$ldlibpthname" in
6303 '') ldlibpthname=LD_LIBRARY_PATH ;;
6304 none) ldlibpthname='' ;;
6307 : determine where manual pages go
6308 set man1dir man1dir none
6312 $spackage has manual pages available in source form.
6316 echo "However, you don't have nroff, so they're probably useless to you."
6318 '') man1dir="none";;
6321 echo "If you don't want the manual sources installed, answer 'none'."
6326 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6327 lookpath="$lookpath $prefixexp/man/p_man/man1"
6328 lookpath="$lookpath $prefixexp/man/u_man/man1"
6329 lookpath="$lookpath $prefixexp/man/man.1"
6331 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6332 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6342 rp="Where do the main $spackage manual pages (source) go?"
6344 if $test "X$man1direxp" != "X$ansexp"; then
6348 man1direxp="$ansexp"
6354 : Change installation prefix, if necessary.
6355 if $test X"$prefix" != X"$installprefix"; then
6356 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6358 installman1dir="$man1direxp"
6361 : What suffix to use on installed man pages
6368 rp="What suffix should be used for the main $spackage man pages?"
6370 '') case "$man1dir" in
6384 *) dflt="$man1ext";;
6391 : see if we can have long filenames
6393 rmlist="$rmlist /tmp/cf$$"
6394 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6395 first=123456789abcdef
6396 second=/tmp/cf$$/$first
6397 $rm -f $first $second
6398 if (echo hi >$first) 2>/dev/null; then
6399 if $test -f 123456789abcde; then
6400 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6403 if (echo hi >$second) 2>/dev/null; then
6404 if $test -f /tmp/cf$$/123456789abcde; then
6406 That's peculiar... You can have filenames longer than 14 characters, but only
6407 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
6408 I shall consider your system cannot support long filenames at all.
6412 echo 'You can have filenames longer than 14 characters.' >&4
6417 How confusing! Some of your filesystems are sane enough to allow filenames
6418 longer than 14 characters but some others like /tmp can't even think about them.
6419 So, for now on, I shall assume your kernel does not allow them at all.
6426 You can't have filenames longer than 14 chars. You can't even think about them!
6432 $rm -rf /tmp/cf$$ 123456789abcde*
6434 : determine where library module manual pages go
6435 set man3dir man3dir none
6439 $spackage has manual pages for many of the library modules.
6445 However, you don't have nroff, so they're probably useless to you.
6448 '') man3dir="none";;
6452 case "$d_flexfnam" in
6455 However, your system can't handle the long file names like File::Basename.3.
6458 '') man3dir="none";;
6462 echo "If you don't want the manual sources installed, answer 'none'."
6463 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6465 '') dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6466 if $test -d "$privlib/man/man3"; then
6469 WARNING: Previous versions of perl installed man3 pages into
6470 $privlib/man/man3. This version will suggest a
6471 new default of $dflt.
6475 rp='Do you wish to preserve the old behavior?(y/n)'
6478 y*) dflt="$privlib/man/man3" ;;
6484 *) dflt="$man3dir" ;;
6488 rp="Where do the $package library man pages (source) go?"
6491 man3direxp="$ansexp"
6497 : Change installation prefix, if necessary.
6498 if $test X"$prefix" != X"$installprefix"; then
6499 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6501 installman3dir="$man3direxp"
6504 : What suffix to use on installed man pages
6510 rp="What suffix should be used for the $package library man pages?"
6512 '') case "$man3dir" in
6526 *) dflt="$man3ext";;
6533 : see if we have to deal with yellow pages, now NIS.
6534 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6535 if $test -f /usr/etc/nibindd; then
6537 echo "I'm fairly confident you're on a NeXT."
6539 rp='Do you get the hosts file via NetInfo?'
6548 y*) hostcat='nidump hosts .';;
6549 *) case "$hostcat" in
6550 nidump*) hostcat='';;
6560 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6568 rp='Are you getting the hosts file via yellow pages?'
6571 y*) hostcat='ypcat hosts';;
6572 *) hostcat='cat /etc/hosts';;
6578 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6581 '') test -f /etc/group && groupcat='cat /etc/group';;
6584 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6587 : now get the host name
6589 echo "Figuring out host name..." >&4
6590 case "$myhostname" in
6592 echo 'Maybe "hostname" will work...'
6593 if tans=`sh -c hostname 2>&1` ; then
6601 if $test "$cont"; then
6603 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6604 if tans=`cat /etc/systemid 2>&1` ; then
6606 phostname='cat /etc/systemid'
6607 echo "Whadyaknow. Xenix always was a bit strange..."
6610 elif $test -r /etc/systemid; then
6611 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6614 if $test "$cont"; then
6615 echo 'No, maybe "uuname -l" will work...'
6616 if tans=`sh -c 'uuname -l' 2>&1` ; then
6618 phostname='uuname -l'
6620 echo 'Strange. Maybe "uname -n" will work...'
6621 if tans=`sh -c 'uname -n' 2>&1` ; then
6623 phostname='uname -n'
6625 echo 'Oh well, maybe I can mine it out of whoami.h...'
6626 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6627 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6628 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6630 case "$myhostname" in
6631 '') echo "Does this machine have an identity crisis or something?"
6634 echo "Well, you said $myhostname before..."
6635 phostname='echo $myhostname';;
6641 : you do not want to know about this
6646 if $test "$myhostname" ; then
6648 rp='Your host name appears to be "'$myhostname'".'" Right?"
6656 : bad guess or no guess
6657 while $test "X$myhostname" = X ; do
6659 rp="Please type the (one word) name of your host:"
6664 : translate upper to lower if necessary
6665 case "$myhostname" in
6667 echo "(Normalizing case in your host name)"
6668 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6672 case "$myhostname" in
6674 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6675 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6676 echo "(Trimming domain name from host name--host name is now $myhostname)"
6678 *) case "$mydomain" in
6681 test "X$hostcat" = "Xypcat hosts" &&
6682 ypmatch "$myhostname" hosts 2>/dev/null |\
6683 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
6686 test "X$hostcat" != "X" &&
6687 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
6688 /[ ]$myhostname[ . ]/p" > hosts
6691 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
6692 END { print sum }" hosts` = x1 || tmp_re="[ ]"
6693 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6694 hosts | $sort | $uniq | \
6695 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6696 case `$echo X$dflt` in
6697 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
6700 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6705 tans=`./loc resolv.conf X /etc /usr/etc`
6706 if $test -f "$tans"; then
6707 echo "(Attempting domain name extraction from $tans)"
6708 dflt=.`$sed -n -e 's/ / /g' \
6709 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
6710 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6712 .) dflt=.`$sed -n -e 's/ / /g' \
6713 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
6714 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6721 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6722 dflt=.`sh -c domainname 2>/dev/null`
6725 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6730 .) echo "(Lost all hope -- silly guess then)"
6736 *) dflt="$mydomain";;
6740 rp="What is your domain name?"
6750 : translate upper to lower if necessary
6753 echo "(Normalizing case in your domain name)"
6754 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6758 : a little sanity check here
6759 case "$phostname" in
6762 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6763 $myhostname$mydomain|$myhostname) ;;
6765 case "$phostname" in
6767 echo "(That doesn't agree with your whoami.h file, by the way.)"
6770 echo "(That doesn't agree with your $phostname command, by the way.)"
6780 I need to get your e-mail address in Internet format if possible, i.e.
6781 something like user@host.domain. Please answer accurately since I have
6782 no easy means to double check it. The default value provided below
6783 is most probably close to reality but may not be valid from outside
6784 your organization...
6788 while test "$cont"; do
6790 '') dflt="$cf_by@$myhostname$mydomain";;
6791 *) dflt="$cf_email";;
6793 rp='What is your e-mail address?'
6799 rp='Address does not look like an Internet one. Use it anyway?'
6815 If you or somebody else will be maintaining perl at your site, please
6816 fill in the correct e-mail address here so that they may be contacted
6817 if necessary. Currently, the "perlbug" program included with perl
6818 will send mail to this address in addition to perlbug@perl.com. You may
6819 enter "none" for no administrator.
6822 case "$perladmin" in
6823 '') dflt="$cf_email";;
6824 *) dflt="$perladmin";;
6826 rp='Perl administrator e-mail address'
6830 : figure out how to guarantee perl startup
6831 case "$startperl" in
6833 case "$sharpbang" in
6837 I can use the #! construct to start perl on your system. This will
6838 make startup of perl scripts faster, but may cause problems if you
6839 want to share those scripts and perl is not in a standard place
6840 ($binexp/perl) on all your platforms. The alternative is to force
6841 a shell by starting the script with a single ':' character.
6845 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6848 none) startperl=": # use perl";;
6849 *) startperl="#!$ans"
6850 if $test 30 -lt `echo "$ans" | wc -c`; then
6853 WARNING: Some systems limit the #! command to 32 characters.
6854 If you experience difficulty running Perl scripts with #!, try
6855 installing Perl in a directory with a shorter pathname.
6861 *) startperl=": # use perl"
6866 echo "I'll use $startperl to start perl scripts."
6868 : figure best path for perl in scripts
6871 perlpath="$binexp/perl"
6872 case "$startperl" in
6877 I will use the "eval 'exec'" idiom to start Perl on your system.
6878 I can use the full path of your Perl binary for this purpose, but
6879 doing so may cause problems if you want to share those scripts and
6880 Perl is not always in a standard place ($binexp/perl).
6884 rp="What path shall I use in \"eval 'exec'\"?"
6891 case "$startperl" in
6893 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6896 : determine where public executable scripts go
6897 set scriptdir scriptdir
6899 case "$scriptdir" in
6902 : guess some guesses
6903 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6904 $test -d /usr/share/bin && dflt=/usr/share/bin
6905 $test -d /usr/local/script && dflt=/usr/local/script
6906 $test -d /usr/local/scripts && dflt=/usr/local/scripts
6907 $test -d $prefixexp/script && dflt=$prefixexp/script
6911 *) dflt="$scriptdir"
6916 Some installations have a separate directory just for executable scripts so
6917 that they can mount it across multiple architectures but keep the scripts in
6918 one spot. You might, for example, have a subdirectory of /usr/share for this.
6919 Or you might just lump your scripts in with all your other executables.
6923 rp='Where do you keep publicly executable scripts?'
6925 if $test "X$ansexp" != "X$scriptdirexp"; then
6929 scriptdirexp="$ansexp"
6930 : Change installation prefix, if necessary.
6931 if $test X"$prefix" != X"$installprefix"; then
6932 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6934 installscript="$scriptdirexp"
6937 : determine where site specific architecture-dependent libraries go.
6938 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6939 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6940 : sitelib may have an optional trailing /share.
6941 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6942 tdflt="$tdflt/$archname"
6943 set sitearch sitearch none
6946 '') dflt="$tdflt" ;;
6947 *) dflt="$sitearch" ;;
6951 The installation process will also create a directory for
6952 architecture-dependent site-specific extensions and modules.
6956 rp='Pathname for the site-specific architecture-dependent library files?'
6959 sitearchexp="$ansexp"
6960 : Change installation prefix, if necessary.
6961 if $test X"$prefix" != X"$installprefix"; then
6962 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6964 installsitearch="$sitearchexp"
6967 : determine where add-on public executables go
6969 '') dflt=$siteprefix/bin ;;
6973 rp='Pathname where the add-on public executables should be installed?'
6976 sitebinexp="$ansexp"
6977 : Change installation prefix, if necessary.
6978 if $test X"$prefix" != X"$installprefix"; then
6979 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
6981 installsitebin="$sitebinexp"
6984 : see if sqrtl exists
6990 Perl can be built to take advantage of long doubles which
6991 (if available) may give more accuracy and range for floating point numbers.
6993 If this doesn't make any sense to you, just accept the default 'n'.
6997 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7000 case "$uselongdouble" in
7001 $define|true|[yY]*) dflt='y';;
7004 rp='Try to use long doubles if available?'
7007 y|Y) val="$define" ;;
7013 case "$uselongdouble" in
7014 true|[yY]*) uselongdouble="$define" ;;
7017 case "$uselongdouble" in
7019 : Look for a hint-file generated 'call-back-unit'. If the
7020 : user has specified that long doubles should be used,
7021 : we may need to set or change some other defaults.
7022 if $test -f uselongdouble.cbu; then
7023 echo "Your platform has some specific hints for long doubles, using them..."
7024 . ./uselongdouble.cbu
7027 (Your platform doesn't have any specific hints for long doubles.)
7033 case "$uselongdouble:$d_sqrtl" in
7037 You requested the use of long doubles but you do not seem to have
7038 the mathematic functions for long doubles. I'm disabling the use
7041 uselongdouble=$undef
7047 Perl can be built to take advantage of long longs which
7048 (if available) may give more range for integer numbers.
7050 If this doesn't make any sense to you, just accept the default 'n'.
7054 *-DUSE_LONG_LONG*) uselonglong="$define" ;;
7057 case "$uselonglong" in
7060 rp='Try to use long longs if available?'
7063 y|Y) val="$define" ;;
7069 case "$uselonglong" in
7070 true|[yY]*) uselonglong="$define" ;;
7073 case "$uselonglong" in
7075 : Look for a hint-file generated 'call-back-unit'. If the
7076 : user has specified that long longs should be used,
7077 : we may need to set or change some other defaults.
7078 if $test -f uselonglong.cbu; then
7079 echo "Your platform has some specific hints for long longs, using them..."
7083 (Your platform doesn't have any specific hints for long longs.)
7091 Previous version of $package used the standard IO mechanisms as defined
7092 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7093 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7094 the default. This abstraction layer can use AT&T's sfio (if you already
7095 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7096 problems with some extension modules. Using PerlIO with stdio is safe,
7097 but it is slower than plain stdio and therefore is not the default.
7099 If this doesn't make any sense to you, just accept the default 'n'.
7101 case "$useperlio" in
7102 $define|true|[yY]*) dflt='y';;
7105 rp='Use the experimental PerlIO abstraction layer?'
7112 echo "Ok, doing things the stdio way"
7119 case "$vendorprefix" in
7120 '') d_vendorbin="$undef"
7124 *) d_vendorbin="$define"
7125 : determine where vendor-supplied executables go.
7126 dflt=$vendorprefix/bin
7128 rp='Pathname for the vendor-supplied executables directory?'
7131 vendorbinexp="$ansexp"
7132 : Change installation prefix, if necessary.
7133 if $test X"$prefix" != X"$installprefix"; then
7134 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7136 installvendorbin="$vendorbinexp"
7141 : check for length of double
7143 case "$doublesize" in
7145 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7146 $cat >try.c <<'EOCP'
7150 printf("%d\n", (int)sizeof(double));
7155 if eval $compile_ok; then
7157 $echo " $doublesize bytes." >&4
7160 echo "(I can't seem to compile the test program. Guessing...)"
7161 rp="What is the size of a double precision number (in bytes)?"
7169 : check for long doubles
7171 $echo $n "Checking to see if your system supports long double..." $c >&4
7172 echo 'int main() { long double x = 7.0; }' > try.c
7174 if eval $compile; then
7176 echo " Yes, it does." >&4
7179 echo " No, it doesn't." >&4
7185 : check for length of long double
7186 case "${d_longdbl}${longdblsize}" in
7189 $echo $n "Checking to see how big your long doubles are..." $c >&4
7190 $cat >try.c <<'EOCP'
7194 printf("%d\n", sizeof(long double));
7199 if eval $compile; then
7200 longdblsize=`./try$exe_ext`
7201 $echo " $longdblsize bytes." >&4
7205 echo "(I can't seem to compile the test program. Guessing...)" >&4
7206 rp="What is the size of a long double (in bytes)?"
7210 if $test "X$doublesize" = "X$longdblsize"; then
7211 echo "(That isn't any different from an ordinary double.)"
7217 : Check how to convert floats to strings.
7218 if test "X$d_Gconvert" = X; then
7220 echo "Checking for an efficient way to convert floats to strings."
7223 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7224 char *myname = "gconvert";
7227 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7228 char *myname = "gcvt";
7231 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7232 char *myname = "qgcvt";
7233 #define DOUBLETYPE long double
7236 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7237 char *myname = "sprintf";
7241 #define DOUBLETYPE double
7246 #define I_STDLIB $i_stdlib
7252 checkit(expect, got)
7256 if (strcmp(expect, got)) {
7257 printf("%s oddity: Expected %s, got %s\n",
7258 myname, expect, got);
7268 /* This must be 1st test on (which?) platform */
7269 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7270 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7271 checkit("0.1", buf);
7273 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7276 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7279 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7282 /* Some Linux gcvt's give 1.e+5 here. */
7283 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7284 checkit("100000", buf);
7286 /* Some Linux gcvt's give -1.e+5 here. */
7287 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7288 checkit("-100000", buf);
7293 case "$d_Gconvert" in
7294 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7295 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7296 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7297 *) xxx_list='gconvert gcvt sprintf' ;;
7300 case "$d_longdbl$uselongdouble" in
7301 definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7304 for xxx_convert in $xxx_list; do
7305 echo "Trying $xxx_convert..."
7307 set try -DTRY_$xxx_convert
7308 if eval $compile; then
7309 echo "$xxx_convert() found." >&4
7311 echo "I'll use $xxx_convert to convert floats into a string." >&4
7314 echo "...But $xxx_convert didn't work as I expected."
7317 echo "$xxx_convert NOT found." >&4
7321 case "$xxx_convert" in
7322 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7323 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7324 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7325 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7331 if $test X"$d_longdbl" = X"$define"; then
7333 echo "Checking how to print long doubles..." >&4
7335 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7336 $cat >try.c <<'EOCP'
7337 #include <sys/types.h>
7341 printf("%.3f\n", d);
7345 if eval $compile; then
7349 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7350 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7351 echo "We will use %f."
7357 if $test X"$sPRIfldbl" = X; then
7358 $cat >try.c <<'EOCP'
7359 #include <sys/types.h>
7362 long double d = 123.456;
7363 printf("%.3llf\n", d);
7367 if eval $compile; then
7371 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7372 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7373 echo "We will use %llf."
7379 if $test X"$sPRIfldbl" = X; then
7380 $cat >try.c <<'EOCP'
7381 #include <sys/types.h>
7384 long double d = 123.456;
7385 printf("%.3Lf\n", d);
7389 if eval $compile; then
7393 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7394 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7395 echo "We will use %Lf."
7401 if $test X"$sPRIfldbl" = X; then
7402 $cat >try.c <<'EOCP'
7403 #include <sys/types.h>
7406 long double d = 123.456;
7407 printf("%.3lf\n", d);
7411 if eval $compile; then
7415 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7416 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7417 echo "We will use %lf."
7423 if $test X"$sPRIfldbl" = X; then
7424 echo "Cannot figure out how to print long doubles." >&4
7431 case "$sPRIfldbl" in
7432 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7433 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7435 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7436 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7440 : Initialize h_fcntl
7443 : Initialize h_sysfile
7446 : access call always available on UNIX
7450 : locate the flags for 'access()'
7454 $cat >access.c <<'EOCP'
7455 #include <sys/types.h>
7460 #include <sys/file.h>
7469 : check sys/file.h first, no particular reason here
7470 if $test `./findhdr sys/file.h` && \
7471 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7473 echo "<sys/file.h> defines the *_OK access constants." >&4
7474 elif $test `./findhdr fcntl.h` && \
7475 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7477 echo "<fcntl.h> defines the *_OK access constants." >&4
7478 elif $test `./findhdr unistd.h` && \
7479 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7480 echo "<unistd.h> defines the *_OK access constants." >&4
7482 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7488 : see if accessx exists
7489 set accessx d_accessx
7492 : see if alarm exists
7496 : see if atolf exists
7500 : see if atoll exists
7504 : Look for GNU-cc style attribute checking
7506 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7507 $cat >attrib.c <<'EOCP'
7509 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7511 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7512 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7513 echo "Your C compiler doesn't fully support __attribute__."
7516 echo "Your C compiler supports __attribute__."
7520 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7527 : see if bcmp exists
7531 : see if bcopy exists
7535 : see if this is a unistd.h system
7536 set unistd.h i_unistd
7539 : see if getpgrp exists
7540 set getpgrp d_getpgrp
7543 case "$d_getpgrp" in
7546 echo "Checking to see which flavor of getpgrp is in use..."
7549 #include <sys/types.h>
7551 # include <unistd.h>
7555 if (getuid() == 0) {
7556 printf("(I see you are running Configure as super-user...)\n");
7560 if (getpgrp(1) == 0)
7569 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7570 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7572 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7573 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7576 echo "I can't seem to compile and run the test program."
7578 xxx="a USG one, i.e. you use getpgrp()."
7580 # SVR4 systems can appear rather BSD-ish.
7583 xxx="a BSD one, i.e. you use getpgrp(pid)."
7587 xxx="probably a USG one, i.e. you use getpgrp()."
7592 echo "Assuming your getpgrp is $xxx" >&4
7601 : see if setpgrp exists
7602 set setpgrp d_setpgrp
7605 case "$d_setpgrp" in
7608 echo "Checking to see which flavor of setpgrp is in use..."
7611 #include <sys/types.h>
7613 # include <unistd.h>
7617 if (getuid() == 0) {
7618 printf("(I see you are running Configure as super-user...)\n");
7622 if (-1 == setpgrp(1, 1))
7625 if (setpgrp() != -1)
7631 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7632 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7634 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7635 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7638 echo "(I can't seem to compile and run the test program.)"
7640 xxx="a USG one, i.e. you use setpgrp()."
7642 # SVR4 systems can appear rather BSD-ish.
7645 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7649 xxx="probably a USG one, i.e. you use setpgrp()."
7654 echo "Assuming your setpgrp is $xxx" >&4
7662 : see if bzero exists
7666 : see if signal is declared as pointer to function returning int or void
7668 xxx=`./findhdr signal.h`
7669 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7670 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7671 echo "You have int (*signal())() instead of void." >&4
7673 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7674 echo "You have void (*signal())()." >&4
7676 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7677 echo "You have int (*signal())() instead of void." >&4
7679 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7680 echo "You have void (*signal())()." >&4
7683 case "$d_voidsig" in
7685 echo "I can't determine whether signal handler returns void or int..." >&4
7687 rp="What type does your signal handler return?"
7694 echo "As you already told me, signal handler returns void." >&4
7697 *) echo "As you already told me, signal handler returns int." >&4
7704 case "$d_voidsig" in
7705 "$define") signal_t="void";;
7710 : check for ability to cast large floats to 32-bit ints.
7712 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7713 if $test "$intsize" -ge 4; then
7720 #include <sys/types.h>
7722 $signal_t blech(s) int s; { exit(3); }
7729 signal(SIGFPE, blech);
7731 /* Don't let compiler optimize the test away. Store the number
7732 in a writable string for gcc to pass to sscanf under HP/UX.
7734 sprintf(str, "2147483647");
7735 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7739 /* x86 processors will probably give 0x8000 0000, which is a
7740 sign change. We don't want that. We want to mimic SPARC
7741 behavior here, which is to preserve the sign and give
7744 if (i32 != ($xxx) f)
7750 if eval $compile_ok; then
7754 echo "(I can't seem to compile the test program--assuming it can't)"
7762 echo "Nope, it can't."
7769 : check for ability to cast negative floats to unsigned
7771 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7774 #include <sys/types.h>
7776 $signal_t blech(s) int s; { exit(7); }
7777 $signal_t blech_in_list(s) int s; { exit(4); }
7778 unsigned long dummy_long(p) unsigned long p; { return p; }
7779 unsigned int dummy_int(p) unsigned int p; { return p; }
7780 unsigned short dummy_short(p) unsigned short p; { return p; }
7784 unsigned long along;
7786 unsigned short ashort;
7790 /* Frustrate gcc-2.7.2's optimizer which failed this test with
7791 a direct f = -123. assignment. gcc-2.8.0 reportedly
7792 optimized the whole file away
7794 /* Store the number in a writable string for gcc to pass to
7797 sprintf(str, "-123");
7798 sscanf(str, "%lf", &f); /* f = -123.; */
7800 signal(SIGFPE, blech);
7801 along = (unsigned long)f;
7802 aint = (unsigned int)f;
7803 ashort = (unsigned short)f;
7804 if (along != (unsigned long)-123)
7806 if (aint != (unsigned int)-123)
7808 if (ashort != (unsigned short)-123)
7810 sprintf(str, "1073741824.");
7811 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7814 along = (unsigned long)f;
7815 if (along != 0x80000000)
7819 along = (unsigned long)f;
7820 if (along != 0x7fffffff)
7824 along = (unsigned long)f;
7825 if (along != 0x80000001)
7829 signal(SIGFPE, blech_in_list);
7830 sprintf(str, "123.");
7831 sscanf(str, "%lf", &f); /* f = 123.; */
7832 along = dummy_long((unsigned long)f);
7833 aint = dummy_int((unsigned int)f);
7834 ashort = dummy_short((unsigned short)f);
7835 if (along != (unsigned long)123)
7837 if (aint != (unsigned int)123)
7839 if (ashort != (unsigned short)123)
7846 if eval $compile_ok; then
7850 echo "(I can't seem to compile the test program--assuming it can't)"
7853 case "$castflags" in
7858 echo "Nope, it can't."
7865 : see if vprintf exists
7867 if set vprintf val -f d_vprintf; eval $csym; $val; then
7868 echo 'vprintf() found.' >&4
7870 $cat >vprintf.c <<'EOF'
7871 #include <varargs.h>
7873 int main() { xxx("foo"); }
7882 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7886 if eval $compile && ./vprintf; then
7887 echo "Your vsprintf() returns (int)." >&4
7890 echo "Your vsprintf() returns (char*)." >&4
7894 echo 'vprintf() NOT found.' >&4
7904 : see if chown exists
7908 : see if chroot exists
7912 : see if chsize exists
7916 : check for const keyword
7918 echo 'Checking to see if your C compiler knows about "const"...' >&4
7919 $cat >const.c <<'EOCP'
7920 typedef struct spug { int drokk; } spug;
7927 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7929 echo "Yup, it does."
7932 echo "Nope, it doesn't."
7937 : see if crypt exists
7939 if set crypt val -f d_crypt; eval $csym; $val; then
7940 echo 'crypt() found.' >&4
7944 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7945 if $test -z "$cryptlib"; then
7946 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7950 if $test -z "$cryptlib"; then
7951 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7955 if $test -z "$cryptlib"; then
7956 cryptlib=`./loc libcrypt$_a "" $libpth`
7960 if $test -z "$cryptlib"; then
7961 echo 'crypt() NOT found.' >&4
7970 : get csh whereabouts
7972 'csh') val="$undef" ;;
7977 : Respect a hint or command line value for full_csh.
7979 '') full_csh=$csh ;;
7982 : see if cuserid exists
7983 set cuserid d_cuserid
7986 : see if this is a limits.h system
7987 set limits.h i_limits
7990 : see if this is a float.h system
7994 : See if number of significant digits in a double precision number is known
7996 $cat >dbl_dig.c <<EOM
8006 printf("Contains DBL_DIG");
8009 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8010 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8011 echo "DBL_DIG found." >&4
8014 echo "DBL_DIG NOT found." >&4
8021 : see if difftime exists
8022 set difftime d_difftime
8025 : see if this is a dirent system
8027 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8029 echo "<dirent.h> found." >&4
8032 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8033 echo "<sys/dir.h> found." >&4
8036 xinc=`./findhdr sys/ndir.h`
8038 echo "<dirent.h> NOT found." >&4
8043 : Look for type of directory structure.
8045 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8047 case "$direntrytype" in
8050 $define) guess1='struct dirent' ;;
8051 *) guess1='struct direct' ;;
8054 *) guess1="$direntrytype"
8059 'struct dirent') guess2='struct direct' ;;
8060 *) guess2='struct dirent' ;;
8063 if $contains "$guess1" try.c >/dev/null 2>&1; then
8064 direntrytype="$guess1"
8065 echo "Your directory entries are $direntrytype." >&4
8066 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8067 direntrytype="$guess2"
8068 echo "Your directory entries seem to be $direntrytype." >&4
8070 echo "I don't recognize your system's directory entries." >&4
8071 rp="What type is used for directory entries on this system?"
8079 : see if the directory entry stores field length
8081 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8082 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8083 echo "Good, your directory entry keeps length information in d_namlen." >&4
8086 echo "Your directory entry does not know about the d_namlen field." >&4
8093 : see if dlerror exists
8096 set dlerror d_dlerror
8100 : see if dlfcn is available
8108 On a few systems, the dynamically loaded modules that perl generates and uses
8109 will need a different extension than shared libs. The default will probably
8117 rp='What is the extension of dynamically loaded modules'
8126 : Check if dlsym need a leading underscore
8132 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8133 $cat >dyna.c <<'EOM'
8142 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8144 #include <sys/types.h>
8158 int mode = RTLD_LAZY ;
8160 handle = dlopen("./dyna.$dlext", mode) ;
8161 if (handle == NULL) {
8166 symbol = dlsym(handle, "fred") ;
8167 if (symbol == NULL) {
8168 /* try putting a leading underscore */
8169 symbol = dlsym(handle, "_fred") ;
8170 if (symbol == NULL) {
8183 : Call the object file tmp-dyna.o in case dlext=o.
8184 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8185 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8186 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
8187 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8190 1) echo "Test program failed using dlopen." >&4
8191 echo "Perhaps you should not use dynamic loading." >&4;;
8192 2) echo "Test program failed using dlsym." >&4
8193 echo "Perhaps you should not use dynamic loading." >&4;;
8194 3) echo "dlsym needs a leading underscore" >&4
8196 4) echo "dlsym doesn't need a leading underscore." >&4;;
8199 echo "I can't compile and run the test program." >&4
8200 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8205 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8210 hasproto='varname=$1; func=$2; shift; shift;
8211 while $test $# -ge 2; do
8213 $define) echo "#include <$2>";;
8217 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8218 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8219 echo "$func() prototype found.";
8222 echo "$func() prototype NOT found.";
8227 $rm -f try.c tryout.c'
8229 : see if prototype for drand48 is available
8231 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8234 : see if dup2 exists
8238 : see if eaccess exists
8239 set eaccess d_eaccess
8242 : see if endgrent exists
8243 set endgrent d_endgrent
8246 : see if endhostent exists
8247 set endhostent d_endhent
8250 : see if endnetent exists
8251 set endnetent d_endnent
8254 : see if endprotoent exists
8255 set endprotoent d_endpent
8258 : see if endpwent exists
8259 set endpwent d_endpwent
8262 : see if endservent exists
8263 set endservent d_endsent
8266 : see if endspent exists
8267 set endspent d_endspent
8270 : Locate the flags for 'open()'
8272 $cat >open3.c <<'EOCP'
8273 #include <sys/types.h>
8278 #include <sys/file.h>
8289 : check sys/file.h first to get FREAD on Sun
8290 if $test `./findhdr sys/file.h` && \
8291 set open3 -DI_SYS_FILE && eval $compile; then
8293 echo "<sys/file.h> defines the O_* constants..." >&4
8295 echo "and you have the 3 argument form of open()." >&4
8298 echo "but not the 3 argument form of open(). Oh, well." >&4
8301 elif $test `./findhdr fcntl.h` && \
8302 set open3 -DI_FCNTL && eval $compile; then
8304 echo "<fcntl.h> defines the O_* constants..." >&4
8306 echo "and you have the 3 argument form of open()." >&4
8309 echo "but not the 3 argument form of open(). Oh, well." >&4
8314 echo "I can't find the O_* constant definitions! You got problems." >&4
8320 : see which of string.h or strings.h is needed
8322 strings=`./findhdr string.h`
8323 if $test "$strings" && $test -r "$strings"; then
8324 echo "Using <string.h> instead of <strings.h>." >&4
8328 strings=`./findhdr strings.h`
8329 if $test "$strings" && $test -r "$strings"; then
8330 echo "Using <strings.h> instead of <string.h>." >&4
8332 echo "No string header found -- You'll surely have problems." >&4
8338 "$undef") strings=`./findhdr strings.h`;;
8339 *) strings=`./findhdr string.h`;;
8342 : check for non-blocking I/O stuff
8343 case "$h_sysfile" in
8344 true) echo "#include <sys/file.h>" > head.c;;
8347 true) echo "#include <fcntl.h>" > head.c;;
8348 *) echo "#include <sys/fcntl.h>" > head.c;;
8353 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8354 case "$o_nonblock" in
8357 $cat >>try.c <<'EOCP'
8361 printf("O_NONBLOCK\n");
8365 printf("O_NDELAY\n");
8369 printf("FNDELAY\n");
8376 if eval $compile_ok; then
8378 case "$o_nonblock" in
8379 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8380 *) echo "Seems like we can use $o_nonblock.";;
8383 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8386 *) echo "Using $hint value $o_nonblock.";;
8388 $rm -f try try.* .out core
8391 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8397 #include <sys/types.h>
8400 #define MY_O_NONBLOCK $o_nonblock
8401 #ifndef errno /* XXX need better Configure test */
8411 #include <strings.h>
8413 $signal_t blech(x) int x; { exit(3); }
8415 $cat >> try.c <<'EOCP'
8423 pipe(pd); /* Down: child -> parent */
8424 pipe(pu); /* Up: parent -> child */
8427 close(pd[1]); /* Parent reads from pd[0] */
8428 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8429 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8431 signal(SIGALRM, blech);
8433 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8435 sprintf(string, "%d\n", ret);
8436 write(2, string, strlen(string));
8439 if (errno == EAGAIN) {
8445 if (errno == EWOULDBLOCK)
8446 printf("EWOULDBLOCK\n");
8449 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8450 sleep(2); /* Give it time to close our pipe */
8452 ret = read(pd[0], buf, 1); /* Should read EOF */
8454 sprintf(string, "%d\n", ret);
8455 write(3, string, strlen(string));
8459 close(pd[0]); /* We write to pd[1] */
8460 close(pu[1]); /* We read from pu[0] */
8461 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8462 close(pd[1]); /* Pipe pd is now fully closed! */
8463 exit(0); /* Bye bye, thank you for playing! */
8467 if eval $compile_ok; then
8468 echo "$startsh" >mtry
8469 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8471 ./mtry >/dev/null 2>&1
8473 0) eagain=`$cat try.out`;;
8474 1) echo "Could not perform non-blocking setting!";;
8475 2) echo "I did a successful read() for something that was not there!";;
8476 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8477 *) echo "Something terribly wrong happened during testing.";;
8479 rd_nodata=`$cat try.ret`
8480 echo "A read() system call with no data present returns $rd_nodata."
8481 case "$rd_nodata" in
8484 echo "(That's peculiar, fixing that to be -1.)"
8490 echo "Forcing errno EAGAIN on read() with no data available."
8494 echo "Your read() sets errno to $eagain when no data is available."
8497 status=`$cat try.err`
8499 0) echo "And it correctly returns 0 to signal EOF.";;
8500 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8501 *) echo "However, your read() returns '$status' on EOF??";;
8504 if test "$status" = "$rd_nodata"; then
8505 echo "WARNING: you can't distinguish between EOF and no data!"
8509 echo "I can't compile the test program--assuming errno EAGAIN will do."
8516 echo "Using $hint value $eagain."
8517 echo "Your read() returns $rd_nodata when no data is present."
8518 case "$d_eofnblk" in
8519 "$define") echo "And you can see EOF because read() returns 0.";;
8520 "$undef") echo "But you can't see EOF status from read() returned value.";;
8522 echo "(Assuming you can't see EOF status from read anyway.)"
8528 $rm -f try try.* .out core head.c mtry
8530 : see if fchmod exists
8534 : see if fchown exists
8538 : see if this is an fcntl system
8542 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8543 while $test $# -ge 2; do
8545 $define) echo "#include <$2>";;
8549 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8551 if eval $compile; then
8562 : see whether socket exists
8564 $echo $n "Hmm... $c" >&4
8565 if set socket val -f d_socket; eval $csym; $val; then
8566 echo "Looks like you have Berkeley networking support." >&4
8568 if set setsockopt val -f; eval $csym; $val; then
8571 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8575 if $contains socklib libc.list >/dev/null 2>&1; then
8576 echo "Looks like you have Berkeley networking support." >&4
8578 : we will have to assume that it supports the 4.2 BSD interface
8581 echo "You don't have Berkeley networking in libc$_a..." >&4
8582 if test "X$d_socket" = "X$define"; then
8583 echo "...but you seem to believe that you have sockets." >&4
8585 for net in net socket
8587 if test -f /usr/lib/lib$net$_a; then
8588 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8589 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8590 if $contains socket libc.list >/dev/null 2>&1; then
8595 echo "...but the Wollongong group seems to have hacked it in." >&4
8596 sockethdr="-I/usr/netinclude"
8599 echo "Found Berkeley sockets interface in lib$net." >& 4
8600 if $contains setsockopt libc.list >/dev/null 2>&1; then
8603 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8610 if test "X$d_socket" != "X$define"; then
8611 echo "or anywhere else I see." >&4
8619 : see if socketpair exists
8620 set socketpair d_sockpair
8625 echo "Checking the availability of certain socket constants..." >& 4
8626 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8627 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8629 #include <sys/types.h>
8630 #include <sys/socket.h>
8636 set try; if eval $compile; then
8639 set d_${enum}; eval $setvar
8643 : see if sys/select.h has to be included
8644 set sys/select.h i_sysselct
8647 : see if we should include time.h, sys/time.h, or both
8649 if test "X$timeincl" = X; then
8650 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8651 $echo $n "I'm now running the test program...$c"
8652 $cat >try.c <<'EOCP'
8653 #include <sys/types.h>
8658 #ifdef SYSTIMEKERNEL
8661 #include <sys/time.h>
8664 #include <sys/select.h>
8673 struct timezone tzp;
8675 if (foo.tm_sec == foo.tm_sec)
8678 if (bar.tv_sec == bar.tv_sec)
8685 for s_timezone in '-DS_TIMEZONE' ''; do
8687 for s_timeval in '-DS_TIMEVAL' ''; do
8688 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8689 for i_time in '' '-DI_TIME'; do
8690 for i_systime in '-DI_SYSTIME' ''; do
8693 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8694 if eval $compile; then
8695 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8699 $echo $n "Succeeded with $flags$c"
8711 *SYSTIMEKERNEL*) i_systimek="$define"
8712 timeincl=`./findhdr sys/time.h`
8713 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8714 *) i_systimek="$undef";;
8717 *I_TIME*) i_time="$define"
8718 timeincl=`./findhdr time.h`" $timeincl"
8719 echo "We'll include <time.h>." >&4;;
8720 *) i_time="$undef";;
8723 *I_SYSTIME*) i_systime="$define"
8724 timeincl=`./findhdr sys/time.h`" $timeincl"
8725 echo "We'll include <sys/time.h>." >&4;;
8726 *) i_systime="$undef";;
8731 : check for fd_set items
8734 Checking to see how well your C compiler handles fd_set and friends ...
8736 $cat >fd_set.c <<EOCP
8737 #$i_systime I_SYS_TIME
8738 #$i_sysselct I_SYS_SELECT
8739 #$d_socket HAS_SOCKET
8740 #include <sys/types.h>
8742 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8745 #include <sys/time.h>
8748 #include <sys/select.h>
8757 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8764 set fd_set -DTRYBITS
8765 if eval $compile; then
8766 d_fds_bits="$define"
8768 echo "Well, your system knows about the normal fd_set typedef..." >&4
8770 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8771 d_fd_macros="$define"
8774 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8776 d_fd_macros="$undef"
8780 Hmm, your compiler has some difficulty with fd_set. Checking further...
8783 if eval $compile; then
8786 echo "Well, your system has some sort of fd_set available..." >&4
8788 echo "and you have the normal fd_set macros." >&4
8789 d_fd_macros="$define"
8792 but not the normal fd_set macros! Gross! More work for me...
8794 d_fd_macros="$undef"
8797 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8800 d_fd_macros="$undef"
8805 : see if fgetpos exists
8806 set fgetpos d_fgetpos
8809 : see if flock exists
8813 : see if fork exists
8817 : see if pathconf exists
8818 set pathconf d_pathconf
8821 : see if fpathconf exists
8822 set fpathconf d_fpathconf
8828 echo "Checking to see if your system supports off64_t..." >&4
8830 #include <sys/types.h>
8832 int main() { off64_t x = 7; }'
8835 if eval $compile; then
8837 echo "Yes, it does."
8840 echo "No, it doesn't."
8841 case "$lseeksize" in
8842 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8849 : check for fpos64_t
8851 echo "Checking to see if your system supports fpos64_t..." >&4
8853 #include <sys/stdio.h>
8854 int main() { fpos64_t x x = 7; }'
8857 if eval $compile; then
8859 echo "Yes, it does."
8862 echo "No, it doesn't."
8864 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8871 hasstruct='varname=$1; struct=$2; shift; shift;
8872 while $test $# -ge 2; do
8874 $define) echo "#include <$2>";;
8878 echo "int main () { struct $struct foo; }" >> try.c;
8880 if eval $compile; then
8889 : see if this is a sys/param system
8890 set sys/param.h i_sysparam
8893 : see if this is a sys/mount.h system
8894 set sys/mount.h i_sysmount
8897 : see if sys/types.h has to be included
8898 set sys/types.h i_systypes
8903 echo "Checking to see if your system supports struct fs_data..." >&4
8904 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8906 case "$d_fs_data_s" in
8907 "$define") echo "Yes, it does." ;;
8908 *) echo "No, it doesn't." ;;
8911 : see if fseeko exists
8915 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
8918 : see if fsetpos exists
8919 set fsetpos d_fsetpos
8923 : see if fstatfs exists
8924 set fstatfs d_fstatfs
8928 : see if statvfs exists
8929 set statvfs d_statvfs
8932 : see if fstatvfs exists
8933 set fstatvfs d_fstatvfs
8937 : see if ftello exists
8941 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
8944 : see if getgrent exists
8945 set getgrent d_getgrent
8948 : see if gethostbyaddr exists
8949 set gethostbyaddr d_gethbyaddr
8952 : see if gethostbyname exists
8953 set gethostbyname d_gethbyname
8956 : see if gethostent exists
8957 set gethostent d_gethent
8960 : see how we will look up host name
8963 if set gethostname val -f d_gethname; eval $csym; $val; then
8964 echo 'gethostname() found.' >&4
8965 d_gethname="$define"
8968 if set uname val -f d_uname; eval $csym; $val; then
8971 uname() was found, but you're running xenix, and older versions of xenix
8972 have a broken uname(). If you don't really know whether your xenix is old
8973 enough to have a broken system call, use the default answer.
8980 rp='Is your uname() broken?'
8983 n*) d_uname="$define"; call=uname;;
8986 echo 'uname() found.' >&4
8993 case "$d_gethname" in
8994 '') d_gethname="$undef";;
8997 '') d_uname="$undef";;
8999 case "$d_uname$d_gethname" in
9004 Every now and then someone has a $call() that lies about the hostname
9005 but can't be fixed for political or economic reasons. If you wish, I can
9006 pretend $call() isn't there and maybe compute hostname at run-time
9007 thanks to the '$phostname' command.
9010 rp="Shall I ignore $call() from now on?"
9013 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9016 case "$phostname" in
9018 *) case "$aphostname" in
9024 file=`./loc $file $file $pth`
9025 aphostname=`echo $file $*`
9030 case "$d_uname$d_gethname" in
9033 case "$phostname" in
9035 echo "There will be no way for $package to get your hostname." >&4;;
9037 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9041 case "$d_phostname" in
9042 '') d_phostname="$undef";;
9045 : see if this is a netdb.h system
9049 : see if prototypes for various gethostxxx netdb.h functions are available
9051 set d_gethostprotos gethostent $i_netdb netdb.h
9054 : see if getlogin exists
9055 set getlogin d_getlogin
9058 : see if getmnt exists
9062 : see if getmntent exists
9063 set getmntent d_getmntent
9066 : see if getnetbyaddr exists
9067 set getnetbyaddr d_getnbyaddr
9070 : see if getnetbyname exists
9071 set getnetbyname d_getnbyname
9074 : see if getnetent exists
9075 set getnetent d_getnent
9078 : see if prototypes for various getnetxxx netdb.h functions are available
9080 set d_getnetprotos getnetent $i_netdb netdb.h
9084 : see if getprotobyname exists
9085 set getprotobyname d_getpbyname
9088 : see if getprotobynumber exists
9089 set getprotobynumber d_getpbynumber
9092 : see if getprotoent exists
9093 set getprotoent d_getpent
9096 : see if getpgid exists
9097 set getpgid d_getpgid
9100 : see if getpgrp2 exists
9101 set getpgrp2 d_getpgrp2
9104 : see if getppid exists
9105 set getppid d_getppid
9108 : see if getpriority exists
9109 set getpriority d_getprior
9112 : see if prototypes for various getprotoxxx netdb.h functions are available
9114 set d_getprotoprotos getprotoent $i_netdb netdb.h
9117 : see if getpwent exists
9118 set getpwent d_getpwent
9122 : see if getservbyname exists
9123 set getservbyname d_getsbyname
9126 : see if getservbyport exists
9127 set getservbyport d_getsbyport
9130 : see if getservent exists
9131 set getservent d_getsent
9134 : see if prototypes for various getservxxx netdb.h functions are available
9136 set d_getservprotos getservent $i_netdb netdb.h
9139 : see if getspent exists
9140 set getspent d_getspent
9143 : see if getspnam exists
9144 set getspnam d_getspnam
9147 : see if gettimeofday or ftime exists
9148 set gettimeofday d_gettimeod
9150 case "$d_gettimeod" in
9156 val="$undef"; set d_ftime; eval $setvar
9159 case "$d_gettimeod$d_ftime" in
9162 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9166 : see if this is an grp system
9172 xxx=`./findhdr grp.h`
9173 $cppstdin $cppflags $cppminus < $xxx >$$.h
9175 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9187 set d_grpasswd; eval $setvar
9191 : see if hasmntopt exists
9192 set hasmntopt d_hasmntopt
9195 : see if this is a netinet/in.h or sys/in.h system
9196 set netinet/in.h i_niin sys/in.h i_sysin
9199 : see if arpa/inet.h has to be included
9200 set arpa/inet.h i_arpainet
9203 : see if htonl --and friends-- exists
9208 : Maybe they are macros.
9213 #include <sys/types.h>
9214 #$i_niin I_NETINET_IN
9216 #$i_arpainet I_ARPA_INET
9218 #include <netinet/in.h>
9224 #include <arpa/inet.h>
9227 printf("Defined as a macro.");
9230 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9231 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9233 echo "But it seems to be defined as a macro." >&4
9241 : see if iconv exists
9247 if set index val -f; eval $csym; $val; then
9248 if set strchr val -f d_strchr; eval $csym; $val; then
9249 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9252 echo "strchr() found." >&4
9256 echo "index() found." >&4
9261 echo "index() found." >&4
9264 if set strchr val -f d_strchr; eval $csym; $val; then
9267 echo "strchr() found." >&4
9269 echo "No index() or strchr() found!" >&4
9274 set d_strchr; eval $setvar
9276 set d_index; eval $setvar
9278 : check whether inet_aton exists
9279 set inet_aton d_inetaton
9282 : see if inttypes.h is available
9283 : we want a real compile instead of Inhdr because some systems
9284 : have an inttypes.h which includes non-existent headers
9287 #include <inttypes.h>
9289 static int32_t foo32 = 0x12345678;
9293 if eval $compile; then
9294 echo "<inttypes.h> found." >&4
9297 echo "<inttypes.h> NOT found." >&4
9306 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9308 #include <sys/types.h>
9309 #$i_inttypes I_INTTYPES
9311 #include <inttypes.h>
9313 int main() { int64_t x = 7; }
9316 if eval $compile; then
9318 echo " Yes, it does." >&4
9321 echo " No, it doesn't." >&4
9329 $cat >isascii.c <<'EOCP'
9341 if eval $compile; then
9342 echo "isascii() found." >&4
9345 echo "isascii() NOT found." >&4
9352 : see if killpg exists
9356 : see if lchown exists
9358 $cat > try.c <<'EOCP'
9359 /* System header to define __stub macros and hopefully few prototypes,
9360 which can conflict with char lchown(); below. */
9362 /* Override any gcc2 internal prototype to avoid an error. */
9363 /* We use char because int might match the return type of a gcc2
9364 builtin and then its argument prototype would still apply. */
9367 /* The GNU C library defines this for functions which it implements
9368 to always fail with ENOSYS. Some functions are actually named
9369 something starting with __ and the normal name is an alias. */
9370 #if defined (__stub_lchown) || defined (__stub___lchown)
9378 if eval $compile; then
9379 $echo "lchown() found." >&4
9382 $echo "lchown() NOT found." >&4
9388 : See if number of significant digits in a double precision number is known
9390 $cat >ldbl_dig.c <<EOM
9400 printf("Contains LDBL_DIG");
9403 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9404 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9405 echo "LDBL_DIG found." >&4
9408 echo "LDBL_DIG NOT found." >&4
9415 : see if link exists
9419 : see if localeconv exists
9420 set localeconv d_locconv
9423 : see if lockf exists
9427 : check for long long
9429 $echo $n "Checking to see if your system supports long long..." $c >&4
9430 echo 'int main() { long long x = 7; return 0; }' > try.c
9432 if eval $compile; then
9434 echo " Yes, it does." >&4
9437 echo " No, it doesn't." >&4
9443 : check for length of long long
9444 case "${d_longlong}${longlongsize}" in
9447 $echo $n "Checking to see how big your long longs are..." $c >&4
9448 $cat >try.c <<'EOCP'
9452 printf("%d\n", (int)sizeof(long long));
9457 if eval $compile_ok; then
9458 longlongsize=`./try$exe_ext`
9459 $echo " $longlongsize bytes." >&4
9463 echo "(I can't seem to compile the test program. Guessing...)"
9464 rp="What is the size of a long long (in bytes)?"
9468 if $test "X$longsize" = "X$longlongsize"; then
9469 echo "(That isn't any different from an ordinary long.)"
9475 : see if lstat exists
9479 : see if mblen exists
9483 : see if mbstowcs exists
9484 set mbstowcs d_mbstowcs
9487 : see if mbtowc exists
9491 : see if memchr exists
9495 : see if memcmp exists
9499 : see if memcpy exists
9503 : see if memmove exists
9504 set memmove d_memmove
9507 : see if memset exists
9511 : see if mkdir exists
9515 : see if mkdtemp exists
9516 set mkdtemp d_mkdtemp
9519 : see if mkfifo exists
9523 : see if mkstemp exists
9524 set mkstemp d_mkstemp
9527 : see if mkstemps exists
9528 set mkstemps d_mkstemps
9531 : see if mktime exists
9535 : see if mprotect exists
9536 set mprotect d_mprotect
9539 : see if msgctl exists
9543 : see if msgget exists
9547 : see if msgsnd exists
9551 : see if msgrcv exists
9555 : see how much of the 'msg*(2)' library is present.
9558 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9559 *"$undef"*) h_msg=false;;
9563 case "`ipcs 2>&1`" in
9564 "SVID messages"*"not configured"*)
9565 echo "Your $osname does not have the msg*(2) configured." >&4
9580 : we could also check for sys/ipc.h ...
9581 if $h_msg && $test `./findhdr sys/msg.h`; then
9582 echo "You have the full msg*(2) library." >&4
9585 echo "You don't have the full msg*(2) library." >&4
9591 : see if msync exists
9595 : see if munmap exists
9599 : see if nice exists
9605 echo "Checking which 64-bit integer type we could use..." >&4
9611 val='"unsigned int"'
9616 *) case "$longsize" in
9620 val='"unsigned long"'
9625 *) case "$d_longlong:$longlongsize" in
9630 val='"unsigned long long"'
9635 *) case "$d_int64t" in
9654 '') case "$uselonglong:$d_longlong:$longlongsize" in
9656 echo "(You would have 'long long', but you are not using it.)" >&4 ;;
9657 *) echo "Alas, no 64-bit integer types in sight." >&4 ;;
9661 *) if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9666 echo "We $verb use '$quadtype' for 64-bit integers." >&4
9671 : check for length of character
9675 echo "Checking to see how big your characters are (hey, you never know)..." >&4
9676 $cat >try.c <<'EOCP'
9680 printf("%d\n", (int)sizeof(char));
9685 if eval $compile_ok; then
9689 echo "(I can't seem to compile the test program. Guessing...)"
9696 rp="What is the size of a character (in bytes)?"
9703 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9705 case "$use64bits:$d_quad:$quadtype" in
9713 uvtype="unsigned long"
9719 case "$uselongdouble:$d_longdbl" in
9721 nvtype="long double"
9729 $echo "(IV will be "$ivtype", $ivsize bytes)"
9730 $echo "(UV will be "$uvtype", $uvsize bytes)"
9731 $echo "(NV will be "$nvtype", $nvsize bytes)"
9734 #$i_inttypes I_INTTYPES
9736 #include <inttypes.h>
9741 int8_t i = INT8_MAX;
9742 uint8_t u = UINT8_MAX;
9746 int16_t i = INT16_MAX;
9747 uint16_t i = UINT16_MAX;
9748 printf("int16_t\n");
9751 int32_t i = INT32_MAX;
9752 uint32_t u = UINT32_MAX;
9753 printf("int32_t\n");
9759 '') case "$charsize" in
9761 u8type="unsigned char"
9770 if eval $compile; then
9771 case "`./try$exe_ext`" in
9772 int8_t) i8type=int8_t
9782 '') if $test $charsize -ge 1; then
9784 u8type="unsigned char"
9792 '') case "$shortsize" in
9794 u16type="unsigned short"
9803 if eval $compile; then
9804 case "`./try$exe_ext`" in
9816 '') if $test $shortsize -ge 2; then
9818 u16type="unsigned short"
9826 '') case "$longsize" in
9828 u32type="unsigned long"
9832 *) case "$intsize" in
9834 u32type="unsigned int"
9845 if eval $compile; then
9846 case "`./try$exe_ext`" in
9858 '') if $test $intsize -ge 4; then
9860 u32type="unsigned int"
9868 '') case "$d_quad:$quadtype" in
9871 u64type="$uquadtype"
9879 $echo "Checking whether your NVs can preserve your UVs..." >&4
9883 $uvtype k = ($uvtype)~0, l;
9889 printf("preserve\n");
9894 if eval $compile; then
9895 case "`./try$exe_ext`" in
9896 preserve) d_nv_preserves_uv="$define" ;;
9899 case "$d_nv_preserves_uv" in
9900 $define) $echo "Yes, they can." 2>&1 ;;
9901 *) $echo "No, they can't." 2>&1
9902 d_nv_preserves_uv="$undef"
9908 : see if POSIX threads are available
9909 set pthread.h i_pthread
9915 : how to create joinable pthreads
9916 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9918 echo "Checking what constant to use for creating joinable pthreads..." >&4
9919 $cat >try.c <<'EOCP'
9920 #include <pthread.h>
9922 int detachstate = JOINABLE;
9925 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9926 if eval $compile; then
9927 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9928 val="$undef" # Yes, undef.
9929 set d_old_pthread_create_joinable
9932 set old_pthread_create_joinable
9935 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9936 if eval $compile; then
9937 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9939 set d_old_pthread_create_joinable
9941 val=PTHREAD_CREATE_UNDETACHED
9942 set old_pthread_create_joinable
9945 set try -DJOINABLE=__UNDETACHED
9946 if eval $compile; then
9947 echo "You seem to use __UNDETACHED." >&4
9949 set d_old_pthread_create_joinable
9952 set old_pthread_create_joinable
9955 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
9957 set d_old_pthread_create_joinable
9960 set old_pthread_create_joinable
9967 d_old_pthread_create_joinable="$undef"
9968 old_pthread_create_joinable=""
9971 : see if pause exists
9975 : see if pipe exists
9979 : see if poll exists
9984 : see whether the various POSIXish _yields exist
9986 #include <pthread.h>
9992 #ifdef PTHREAD_YIELD
9995 #ifdef PTHREAD_YIELD_NULL
9996 pthread_yield(NULL);
10002 : see if sched_yield exists
10003 set try -DSCHED_YIELD
10004 if eval $compile; then
10006 sched_yield='sched_yield()'
10010 case "$usethreads" in
10013 $define) echo 'sched_yield() found.' >&4 ;;
10014 *) echo 'sched_yield() NOT found.' >&4 ;;
10020 : see if pthread_yield exists
10021 set try -DPTHREAD_YIELD
10022 if eval $compile; then
10024 case "$sched_yield" in
10025 '') sched_yield='pthread_yield()' ;;
10028 set try -DPTHREAD_YIELD_NULL
10029 if eval $compile; then
10031 case "$sched_yield" in
10032 '') sched_yield='pthread_yield(NULL)' ;;
10038 case "$usethreads" in
10041 $define) echo 'pthread_yield() found.' >&4 ;;
10042 *) echo 'pthread_yield() NOT found.' >&4 ;;
10046 set d_pthread_yield
10049 case "$sched_yield" in
10050 '') sched_yield=undef ;;
10055 : see if this is a pwd.h system
10061 xxx=`./findhdr pwd.h`
10062 $cppstdin $cppflags $cppminus < $xxx >$$.h
10064 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10072 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10080 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10088 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10096 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10104 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10112 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10120 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10132 set d_pwquota; eval $setvar
10133 set d_pwage; eval $setvar
10134 set d_pwchange; eval $setvar
10135 set d_pwclass; eval $setvar
10136 set d_pwexpire; eval $setvar
10137 set d_pwcomment; eval $setvar
10138 set d_pwgecos; eval $setvar
10139 set d_pwpasswd; eval $setvar
10143 : see if readdir and friends exist
10144 set readdir d_readdir
10146 set seekdir d_seekdir
10148 set telldir d_telldir
10150 set rewinddir d_rewinddir
10153 : see if readlink exists
10154 set readlink d_readlink
10157 : see if rename exists
10158 set rename d_rename
10161 : see if rmdir exists
10165 : see if memory.h is available.
10170 : See if it conflicts with string.h
10176 $cppstdin $cppflags $cppminus < $strings > mem.h
10177 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10179 echo "We won't be including <memory.h>."
10189 : can bcopy handle overlapping blocks?
10194 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10196 #$i_memory I_MEMORY
10197 #$i_stdlib I_STDLIB
10198 #$i_string I_STRING
10199 #$i_unistd I_UNISTD
10201 $cat >>try.c <<'EOCP'
10204 # include <memory.h>
10207 # include <stdlib.h>
10210 # include <string.h>
10212 # include <strings.h>
10215 # include <unistd.h> /* Needed for NetBSD */
10219 char buf[128], abc[128];
10225 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10227 for (align = 7; align >= 0; align--) {
10228 for (len = 36; len; len--) {
10230 bcopy(abc, b, len);
10231 for (off = 1; off <= len; off++) {
10232 bcopy(b, b+off, len);
10233 bcopy(b+off, b, len);
10234 if (bcmp(b, abc, len))
10243 if eval $compile_ok; then
10244 if ./try 2>/dev/null; then
10245 echo "Yes, it can."
10248 echo "It can't, sorry."
10249 case "$d_memmove" in
10250 "$define") echo "But that's Ok since you have memmove()." ;;
10254 echo "(I can't compile the test program, so we'll assume not...)"
10255 case "$d_memmove" in
10256 "$define") echo "But that's Ok since you have memmove()." ;;
10261 $rm -f try.* try core
10265 : can memcpy handle overlapping blocks?
10267 case "$d_memcpy" in
10270 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10272 #$i_memory I_MEMORY
10273 #$i_stdlib I_STDLIB
10274 #$i_string I_STRING
10275 #$i_unistd I_UNISTD
10277 $cat >>try.c <<'EOCP'
10280 # include <memory.h>
10283 # include <stdlib.h>
10286 # include <string.h>
10288 # include <strings.h>
10291 # include <unistd.h> /* Needed for NetBSD */
10295 char buf[128], abc[128];
10301 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10302 try to store the string in read-only memory. */
10303 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10305 for (align = 7; align >= 0; align--) {
10306 for (len = 36; len; len--) {
10308 memcpy(b, abc, len);
10309 for (off = 1; off <= len; off++) {
10310 memcpy(b+off, b, len);
10311 memcpy(b, b+off, len);
10312 if (memcmp(b, abc, len))
10321 if eval $compile_ok; then
10322 if ./try 2>/dev/null; then
10323 echo "Yes, it can."
10326 echo "It can't, sorry."
10327 case "$d_memmove" in
10328 "$define") echo "But that's Ok since you have memmove()." ;;
10332 echo "(I can't compile the test program, so we'll assume not...)"
10333 case "$d_memmove" in
10334 "$define") echo "But that's Ok since you have memmove()." ;;
10339 $rm -f try.* try core
10343 : can memcmp be trusted to compare relative magnitude?
10345 case "$d_memcmp" in
10348 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10350 #$i_memory I_MEMORY
10351 #$i_stdlib I_STDLIB
10352 #$i_string I_STRING
10353 #$i_unistd I_UNISTD
10355 $cat >>try.c <<'EOCP'
10358 # include <memory.h>
10361 # include <stdlib.h>
10364 # include <string.h>
10366 # include <strings.h>
10369 # include <unistd.h> /* Needed for NetBSD */
10375 if ((a < b) && memcmp(&a, &b, 1) < 0)
10381 if eval $compile_ok; then
10382 if ./try 2>/dev/null; then
10383 echo "Yes, it can."
10386 echo "No, it can't (it uses signed chars)."
10389 echo "(I can't compile the test program, so we'll assume not...)"
10393 $rm -f try.* try core
10397 : see if select exists
10398 set select d_select
10401 : see if semctl exists
10402 set semctl d_semctl
10405 : see if semget exists
10406 set semget d_semget
10409 : see if semop exists
10413 : see how much of the 'sem*(2)' library is present.
10416 case "$d_semctl$d_semget$d_semop" in
10417 *"$undef"*) h_sem=false;;
10421 case "`ipcs 2>&1`" in
10422 "SVID messages"*"not configured"*)
10423 echo "Your $osname does not have the sem*(2) configured." >&4
10426 set semctl d_semctl
10428 set semget d_semget
10436 : we could also check for sys/ipc.h ...
10437 if $h_sem && $test `./findhdr sys/sem.h`; then
10438 echo "You have the full sem*(2) library." >&4
10441 echo "You don't have the full sem*(2) library." >&4
10447 : see whether sys/sem.h defines union semun
10449 $cat > try.c <<'END'
10450 #include <sys/types.h>
10451 #include <sys/ipc.h>
10452 #include <sys/sem.h>
10453 int main () { union semun semun; semun.buf = 0; }
10456 if eval $compile; then
10457 echo "You have union semun in <sys/sem.h>." >&4
10460 echo "You do not have union semun in <sys/sem.h>." >&4
10463 $rm -f try try.c try.h
10467 : see how to do semctl IPC_STAT
10470 : see whether semctl IPC_STAT can use union semun
10475 # define S_IRUSR S_IREAD
10476 # define S_IWUSR S_IWRITE
10477 # define S_IXUSR S_IEXEC
10479 # define S_IRUSR 0400
10480 # define S_IWUSR 0200
10481 # define S_IXUSR 0100
10483 # define S_IRGRP (S_IRUSR>>3)
10484 # define S_IWGRP (S_IWUSR>>3)
10485 # define S_IXGRP (S_IXUSR>>3)
10486 # define S_IROTH (S_IRUSR>>6)
10487 # define S_IWOTH (S_IWUSR>>6)
10488 # define S_IXOTH (S_IXUSR>>6)
10491 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10492 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10493 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10498 #include <sys/types.h>
10499 #include <sys/ipc.h>
10500 #include <sys/sem.h>
10501 #include <sys/stat.h>
10508 #$d_union_semun HAS_UNION_SEMUN
10511 #ifndef HAS_UNION_SEMUN
10514 struct semid_ds *buf;
10515 unsigned short *array;
10521 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10522 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10524 struct semid_ds argbuf;
10527 st = semctl(sem, 0, IPC_STAT, arg);
10531 # endif /* IPC_STAT */
10532 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10534 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10535 # endif /* IPC_RMID */
10536 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10538 #endif /* IPC_PRIVATE && ... */
10539 printf("semget failed: errno = %d\n", errno);
10545 if eval $compile; then
10548 semun) val="$define" ;;
10554 case "$d_semctl_semun" in
10556 echo "You can use union semun for semctl IPC_STAT." >&4
10559 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10564 : see whether semctl IPC_STAT can use struct semid_ds pointer
10565 $cat > try.c <<'END'
10566 #include <sys/types.h>
10567 #include <sys/ipc.h>
10568 #include <sys/sem.h>
10569 #include <sys/stat.h>
10577 struct semid_ds arg;
10580 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10581 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10584 st = semctl(sem, 0, IPC_STAT, &arg);
10586 printf("semid_ds\n");
10588 # endif /* IPC_STAT */
10589 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10591 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10592 # endif /* IPC_RMID */
10593 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10595 #endif /* IPC_PRIVATE && ... */
10596 printf("semget failed: errno = %d\n", errno);
10603 if eval $compile; then
10606 semid_ds) val="$define" ;;
10610 set d_semctl_semid_ds
10612 case "$d_semctl_semid_ds" in
10614 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10616 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10623 # We do not have the full sem*(2) library, so assume we can not
10629 set d_semctl_semid_ds
10634 : see if setegid exists
10635 set setegid d_setegid
10638 : see if seteuid exists
10639 set seteuid d_seteuid
10642 : see if setgrent exists
10643 set setgrent d_setgrent
10646 : see if sethostent exists
10647 set sethostent d_sethent
10650 : see if setlinebuf exists
10651 set setlinebuf d_setlinebuf
10654 : see if setlocale exists
10655 set setlocale d_setlocale
10658 : see if setnetent exists
10659 set setnetent d_setnent
10662 : see if setprotoent exists
10663 set setprotoent d_setpent
10666 : see if setpgid exists
10667 set setpgid d_setpgid
10670 : see if setpgrp2 exists
10671 set setpgrp2 d_setpgrp2
10674 : see if setpriority exists
10675 set setpriority d_setprior
10678 : see if setpwent exists
10679 set setpwent d_setpwent
10682 : see if setregid exists
10683 set setregid d_setregid
10685 set setresgid d_setresgid
10688 : see if setreuid exists
10689 set setreuid d_setreuid
10691 set setresuid d_setresuid
10694 : see if setrgid exists
10695 set setrgid d_setrgid
10698 : see if setruid exists
10699 set setruid d_setruid
10702 : see if setservent exists
10703 set setservent d_setsent
10706 : see if setsid exists
10707 set setsid d_setsid
10710 : see if setspent exists
10711 set setspent d_setspent
10714 : see if setvbuf exists
10715 set setvbuf d_setvbuf
10718 : see if sfio.h is available
10723 : see if sfio library is available
10734 : Ok, but do we want to use it.
10738 true|$define|[yY]*) dflt='y';;
10741 echo "$package can use the sfio library, but it is experimental."
10742 rp="You seem to have sfio available, do you want to try using it?"
10746 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
10748 : Remove sfio from list of libraries to use
10749 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10752 echo "libs = $libs" >&4
10756 *) case "$usesfio" in
10757 true|$define|[yY]*)
10758 echo "Sorry, cannot find sfio on this machine" >&4
10759 echo "Ignoring your setting of usesfio=$usesfio" >&4
10767 $define) usesfio='true';;
10768 *) usesfio='false';;
10771 : see if shmctl exists
10772 set shmctl d_shmctl
10775 : see if shmget exists
10776 set shmget d_shmget
10779 : see if shmat exists
10782 : see what shmat returns
10785 $cat >shmat.c <<'END'
10786 #include <sys/shm.h>
10789 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10794 echo "and it returns ($shmattype)." >&4
10795 : see if a prototype for shmat is available
10796 xxx=`./findhdr sys/shm.h`
10797 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10798 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10809 set d_shmatprototype
10812 : see if shmdt exists
10816 : see how much of the 'shm*(2)' library is present.
10819 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10820 *"$undef"*) h_shm=false;;
10824 case "`ipcs 2>&1`" in
10825 "SVID shared memory"*"not configured"*)
10826 echo "Your $osname does not have the shm*(2) configured." >&4
10829 set shmctl d_shmctl
10831 set shmget d_shmget
10841 : we could also check for sys/ipc.h ...
10842 if $h_shm && $test `./findhdr sys/shm.h`; then
10843 echo "You have the full shm*(2) library." >&4
10846 echo "You don't have the full shm*(2) library." >&4
10853 : see if we have sigaction
10854 if set sigaction val -f d_sigaction; eval $csym; $val; then
10855 echo 'sigaction() found.' >&4
10856 $cat > try.c <<'EOP'
10858 #include <sys/types.h>
10859 #include <signal.h>
10862 struct sigaction act, oact;
10864 oact.sa_handler = 0;
10865 /* so that act and oact are used */
10866 exit(act.sa_flags == 0 && oact.sa_handler == 0);
10870 if eval $compile_ok; then
10873 echo "But you don't seem to have a useable struct sigaction." >&4
10877 echo 'sigaction NOT found.' >&4
10880 set d_sigaction; eval $setvar
10881 $rm -f try try$_o try.c
10883 : see if sigsetjmp exists
10885 case "$d_sigsetjmp" in
10887 $cat >try.c <<'EOP'
10888 #include <setjmp.h>
10893 if (sigsetjmp(env,1))
10896 siglongjmp(env, 1);
10901 if eval $compile; then
10902 if ./try >/dev/null 2>&1; then
10903 echo "POSIX sigsetjmp found." >&4
10907 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10913 echo "sigsetjmp not found." >&4
10917 *) val="$d_sigsetjmp"
10918 case "$d_sigsetjmp" in
10919 $define) echo "POSIX sigsetjmp found." >&4;;
10920 $undef) echo "sigsetjmp not found." >&4;;
10928 : see if sys/stat.h is available
10929 set sys/stat.h i_sysstat
10933 : see if stat knows about block sizes
10935 echo "Checking to see if your struct stat has st_blocks field..." >&4
10936 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10940 : see if this is a sys/vfs.h system
10941 set sys/vfs.h i_sysvfs
10945 : see if this is a sys/statfs.h system
10946 set sys/statfs.h i_sysstatfs
10951 echo "Checking to see if your system supports struct statfs..." >&4
10952 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
10954 case "$d_statfs_s" in
10955 "$define") echo "Yes, it does." ;;
10956 *) echo "No, it doesn't." ;;
10961 : see if struct statfs knows about f_flags
10962 case "$d_statfs_s" in
10965 echo "Checking to see if your struct statfs has f_flags field..." >&4
10966 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
10970 set d_statfs_f_flags
10974 case "$d_statfs_f_flags" in
10975 "$define") echo "Yes, it does." ;;
10976 *) echo "No, it doesn't." ;;
10979 : see if _ptr and _cnt from stdio act std
10981 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10982 echo "(Looks like you have stdio.h from Linux.)"
10983 case "$stdio_ptr" in
10984 '') stdio_ptr='((fp)->_IO_read_ptr)'
10987 *) ptr_lval=$d_stdio_ptr_lval;;
10989 case "$stdio_cnt" in
10990 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10993 *) cnt_lval=$d_stdio_cnt_lval;;
10995 case "$stdio_base" in
10996 '') stdio_base='((fp)->_IO_read_base)';;
10998 case "$stdio_bufsiz" in
10999 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11002 case "$stdio_ptr" in
11003 '') stdio_ptr='((fp)->_ptr)'
11006 *) ptr_lval=$d_stdio_ptr_lval;;
11008 case "$stdio_cnt" in
11009 '') stdio_cnt='((fp)->_cnt)'
11012 *) cnt_lval=$d_stdio_cnt_lval;;
11014 case "$stdio_base" in
11015 '') stdio_base='((fp)->_base)';;
11017 case "$stdio_bufsiz" in
11018 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11021 : test whether _ptr and _cnt really work
11022 echo "Checking how std your stdio is..." >&4
11025 #define FILE_ptr(fp) $stdio_ptr
11026 #define FILE_cnt(fp) $stdio_cnt
11028 FILE *fp = fopen("try.c", "r");
11031 18 <= FILE_cnt(fp) &&
11032 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11040 if eval $compile; then
11042 echo "Your stdio acts pretty std."
11045 echo "Your stdio isn't very std."
11048 echo "Your stdio doesn't appear very std."
11054 : Can _ptr be used as an lvalue?
11055 case "$d_stdstdio$ptr_lval" in
11056 $define$define) val=$define ;;
11059 set d_stdio_ptr_lval
11062 : Can _cnt be used as an lvalue?
11063 case "$d_stdstdio$cnt_lval" in
11064 $define$define) val=$define ;;
11067 set d_stdio_cnt_lval
11070 : see if _base is also standard
11072 case "$d_stdstdio" in
11076 #define FILE_base(fp) $stdio_base
11077 #define FILE_bufsiz(fp) $stdio_bufsiz
11079 FILE *fp = fopen("try.c", "r");
11082 19 <= FILE_bufsiz(fp) &&
11083 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11090 if eval $compile; then
11092 echo "And its _base field acts std."
11095 echo "But its _base field isn't std."
11098 echo "However, it seems to be lacking the _base field."
11107 Checking how to access stdio streams by file descriptor number...
11109 case "$stdio_stream_array" in
11110 '') $cat >try.c <<EOCP
11113 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11117 for s in _iob __iob __sF
11119 set try -DSTDIO_STREAM_ARRAY=$s
11120 if eval $compile; then
11121 case "`./try$exe_ext`" in
11122 yes) stdio_stream_array=$s; break ;;
11126 $rm -f try.* try$exe_ext
11128 case "$stdio_stream_array" in
11130 I can't figure out how to access stdio streams by file descriptor number.
11132 d_stdio_stream_array="$undef"
11135 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11137 d_stdio_stream_array="$define"
11141 : see if strcoll exists
11142 set strcoll d_strcoll
11145 : check for structure copying
11147 echo "Checking to see if your C compiler can copy structs..." >&4
11148 $cat >try.c <<'EOCP'
11158 if $cc -c try.c >/dev/null 2>&1 ; then
11160 echo "Yup, it can."
11163 echo "Nope, it can't."
11169 : see if strerror and/or sys_errlist[] exist
11171 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11172 if set strerror val -f d_strerror; eval $csym; $val; then
11173 echo 'strerror() found.' >&4
11174 d_strerror="$define"
11175 d_strerrm='strerror(e)'
11176 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11177 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11178 d_syserrlst="$define"
11180 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11181 d_syserrlst="$undef"
11183 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11184 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11185 echo 'strerror() found in string header.' >&4
11186 d_strerror="$define"
11187 d_strerrm='strerror(e)'
11188 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11189 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11190 d_syserrlst="$define"
11192 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11193 d_syserrlst="$undef"
11195 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11196 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11197 d_strerror="$undef"
11198 d_syserrlst="$define"
11199 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11201 echo 'strerror() and sys_errlist[] NOT found.' >&4
11202 d_strerror="$undef"
11203 d_syserrlst="$undef"
11204 d_strerrm='"unknown"'
11208 : see if strtod exists
11209 set strtod d_strtod
11212 : see if strtol exists
11213 set strtol d_strtol
11216 : see if strtold exists
11217 set strtold d_strtold
11220 : see if strtoll exists
11221 set strtoll d_strtoll
11224 : see if strtoul exists
11225 set strtoul d_strtoul
11228 : see if strtoull exists
11229 set strtoull d_strtoull
11232 : see if strtouq exists
11233 set strtouq d_strtouq
11236 : see if strxfrm exists
11237 set strxfrm d_strxfrm
11240 : see if symlink exists
11241 set symlink d_symlink
11244 : see if syscall exists
11245 set syscall d_syscall
11248 : see if sysconf exists
11249 set sysconf d_sysconf
11252 : see if system exists
11253 set system d_system
11256 : see if tcgetpgrp exists
11257 set tcgetpgrp d_tcgetpgrp
11260 : see if tcsetpgrp exists
11261 set tcsetpgrp d_tcsetpgrp
11264 : see if prototype for telldir is available
11266 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11269 : see if this is a sys/times.h system
11270 set sys/times.h i_systimes
11273 : see if times exists
11275 if set times val -f d_times; eval $csym; $val; then
11276 echo 'times() found.' >&4
11279 case "$i_systimes" in
11280 "$define") inc='sys/times.h';;
11282 rp="What is the type returned by times() on this system?"
11283 set clock_t clocktype long stdio.h sys/types.h $inc
11286 echo 'times() NOT found, hope that will do.' >&4
11291 : see if truncate exists
11292 set truncate d_truncate
11295 : see if tzname[] exists
11297 if set tzname val -a d_tzname; eval $csym; $val; then
11299 echo 'tzname[] found.' >&4
11302 echo 'tzname[] NOT found.' >&4
11307 : see if umask exists
11311 : see if ustat exists
11315 : backward compatibility for d_hvfork
11316 if test X$d_hvfork != X; then
11317 d_vfork="$d_hvfork"
11320 : see if there is a vfork
11325 : Ok, but do we want to use it. vfork is reportedly unreliable in
11326 : perl on Solaris 2.x, and probably elsewhere.
11330 case "$usevfork" in
11336 Perl can only use a vfork() that doesn't suffer from strict
11337 restrictions on calling functions or modifying global data in
11338 the child. For example, glibc-2.1 contains such a vfork()
11339 that is unsuitable. If your system provides a proper fork()
11340 call, chances are that you do NOT want perl to use vfork().
11343 rp="Do you still want to use vfork()?"
11348 echo "Ok, we won't use vfork()."
11357 $define) usevfork='true';;
11358 *) usevfork='false';;
11361 : see if this is an sysdir system
11362 set sys/dir.h i_sysdir
11365 : see if this is an sysndir system
11366 set sys/ndir.h i_sysndir
11369 : see if closedir exists
11370 set closedir d_closedir
11373 case "$d_closedir" in
11376 echo "Checking whether closedir() returns a status..." >&4
11377 cat > closedir.c <<EOM
11378 #$i_dirent I_DIRENT /**/
11379 #$i_sysdir I_SYS_DIR /**/
11380 #$i_sysndir I_SYS_NDIR /**/
11381 #$i_systypes I_SYS_TYPES /**/
11383 #if defined(I_SYS_TYPES)
11384 #include <sys/types.h>
11386 #if defined(I_DIRENT)
11387 #include <dirent.h>
11388 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11389 #include <sys/dir.h>
11393 #include <sys/ndir.h>
11397 #include <ndir.h> /* may be wrong in the future */
11399 #include <sys/dir.h>
11404 int main() { return closedir(opendir(".")); }
11407 if eval $compile_ok; then
11408 if ./closedir > /dev/null 2>&1 ; then
11409 echo "Yes, it does."
11412 echo "No, it doesn't."
11416 echo "(I can't seem to compile the test program--assuming it doesn't)"
11424 set d_void_closedir
11427 : check for volatile keyword
11429 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11430 $cat >try.c <<'EOCP'
11433 typedef struct _goo_struct goo_struct;
11434 goo_struct * volatile goo = ((goo_struct *)0);
11435 struct _goo_struct {
11440 typedef unsigned short foo_t;
11441 char *volatile foo;
11443 volatile foo_t blech;
11447 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11449 echo "Yup, it does."
11452 echo "Nope, it doesn't."
11458 : see if there is a wait4
11462 : see if waitpid exists
11463 set waitpid d_waitpid
11466 : see if wcstombs exists
11467 set wcstombs d_wcstombs
11470 : see if wctomb exists
11471 set wctomb d_wctomb
11474 : preserve RCS keywords in files with variable substitution, grrr
11479 Revision='$Revision'
11481 case "$crosscompile" in
11482 ''|[nN]*) crosscompile="$undef" ;;
11486 next|rhapsody) multiarch="$define" ;;
11488 case "$multiarch" in
11489 ''|[nN]*) multiarch="$undef" ;;
11492 : check for alignment requirements
11494 case "$crosscompile$multiarch" in
11497 You seem to be either cross-compiling or doing a multiarchitecture build,
11498 skipping the memory alignment check.
11501 case "$alignbytes" in
11502 '') alignbytes=8 ;;
11506 case "$alignbytes" in
11507 '') echo "Checking alignment constraints..." >&4
11508 $cat >try.c <<'EOCP'
11516 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11521 if eval $compile_ok; then
11525 echo "(I can't seem to compile the test program...)"
11528 *) dflt="$alignbytes"
11531 rp="Doubles must be aligned on a how-many-byte boundary?"
11539 : check for ordering of bytes in a long
11541 case "$crosscompile$multiarch" in
11544 You seem to be either cross-compiling or doing a multiarchitecture build,
11545 skipping the byteorder check.
11551 case "$byteorder" in
11554 In the following, larger digits indicate more significance. A big-endian
11555 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11556 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11557 machines may have weird orders like 3412. A Cray will report 87654321,
11558 an Alpha will report 12345678. If the test program works the default is
11560 I'm now running the test program...
11562 $cat >try.c <<'EOCP'
11569 char c[sizeof(long)];
11572 if (sizeof(long) > 4)
11573 u.l = (0x08070605L << 32) | 0x04030201L;
11576 for (i = 0; i < sizeof(long); i++)
11577 printf("%c", u.c[i]+'0');
11584 if eval $compile && ./try > /dev/null; then
11587 [1-4][1-4][1-4][1-4]|12345678|87654321)
11588 echo "(The test program ran ok.)"
11589 echo "byteorder=$dflt"
11592 ????|????????) echo "(The test program ran ok.)" ;;
11593 *) echo "(The test program didn't run right for some reason.)" ;;
11598 (I can't seem to compile the test program. Guessing big-endian...)
11601 case "$xxx_prompt" in
11603 rp="What is the order of bytes in a long?"
11617 : how do we catenate cpp tokens here?
11619 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11620 $cat >cpp_stuff.c <<'EOCP'
11621 #define RCAT(a,b)a/**/b
11622 #define ACAT(a,b)a ## b
11626 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11627 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11628 echo "Oh! Smells like ANSI's been here." >&4
11629 echo "We can catify or stringify, separately or together!"
11631 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11632 echo "Ah, yes! The good old days!" >&4
11633 echo "However, in the good old days we don't know how to stringify and"
11634 echo "catify at the same time."
11638 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
11639 to have to edit the values of CAT[2-5] in config.h...
11641 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11645 : see if this is a db.h system
11651 : Check db version.
11653 echo "Checking Berkeley DB version ..." >&4
11659 #include <sys/types.h>
11664 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11665 int Major, Minor, Patch ;
11666 unsigned long Version ;
11667 (void)db_version(&Major, &Minor, &Patch) ;
11668 printf("You have Berkeley DB Version 2 or greater\n");
11670 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11671 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11672 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11673 Major, Minor, Patch) ;
11675 /* check that db.h & libdb are compatible */
11676 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11677 printf("db.h and libdb are incompatible\n") ;
11681 printf("db.h and libdb are compatible\n") ;
11683 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11684 + DB_VERSION_PATCH ;
11686 /* needs to be >= 2.3.4 */
11687 if (Version < 2003004) {
11688 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11689 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11695 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11696 printf("You have Berkeley DB Version 1\n");
11697 exit(0); /* DB version < 2: the coast is clear. */
11699 exit(1); /* <db.h> not Berkeley DB? */
11705 if eval $compile_ok && ./try; then
11706 echo 'Looks OK.' >&4
11708 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
11712 : Remove db from list of libraries to use
11713 echo "Removing unusable -ldb from library list" >&4
11714 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11717 echo "libs = $libs" >&4
11727 : Check the return type needed for hash
11729 echo "Checking return type needed for hash for Berkeley DB ..." >&4
11735 #include <sys/types.h>
11738 #ifndef DB_VERSION_MAJOR
11739 u_int32_t hash_cb (ptr, size)
11747 info.hash = hash_cb;
11751 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11752 if $contains warning try.out >>/dev/null 2>&1 ; then
11755 db_hashtype='u_int32_t'
11758 : XXX Maybe we should just give up here.
11759 db_hashtype=u_int32_t
11761 echo "Help: I can't seem to compile the db test program." >&4
11762 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11765 echo "Your version of Berkeley DB uses $db_hashtype for hash."
11767 *) db_hashtype=u_int32_t
11772 : Check the return type needed for prefix
11774 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11780 #include <sys/types.h>
11783 #ifndef DB_VERSION_MAJOR
11784 size_t prefix_cb (key1, key2)
11792 info.prefix = prefix_cb;
11796 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11797 if $contains warning try.out >>/dev/null 2>&1 ; then
11798 db_prefixtype='int'
11800 db_prefixtype='size_t'
11803 db_prefixtype='size_t'
11804 : XXX Maybe we should just give up here.
11806 echo "Help: I can't seem to compile the db test program." >&4
11807 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11810 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11812 *) db_prefixtype='size_t'
11816 : check for void type
11818 echo "Checking to see how well your C compiler groks the void type..." >&4
11819 case "$voidflags" in
11821 $cat >try.c <<'EOCP'
11827 extern void moo(); /* function returning void */
11828 void (*goo)(); /* ptr to func returning void */
11830 void *hue; /* generic ptr */
11843 int main() { sub(); }
11845 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11846 voidflags=$defvoidused
11847 echo "Good. It appears to support void to the level $package wants.">&4
11848 if $contains warning .out >/dev/null 2>&1; then
11849 echo "However, you might get some warnings that look like this:"
11853 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11854 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11855 echo "It supports 1..."
11856 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11857 echo "It also supports 2..."
11858 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11860 echo "And it supports 4 but not 8 definitely."
11862 echo "It doesn't support 4..."
11863 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11865 echo "But it supports 8."
11868 echo "Neither does it support 8."
11872 echo "It does not support 2..."
11873 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11875 echo "But it supports 4 and 8."
11877 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11879 echo "And it supports 4 but has not heard about 8."
11881 echo "However it supports 8 but not 4."
11886 echo "There is no support at all for void."
11891 case "$voidflags" in
11893 *) $cat >&4 <<'EOM'
11894 Support flag bits are:
11895 1: basic void declarations.
11896 2: arrays of pointers to functions returning void.
11897 4: operations between pointers to and addresses of void functions.
11898 8: generic void pointers.
11901 rp="Your void support flags add up to what?"
11909 : How can we generate normalized random numbers ?
11911 echo "Looking for a random number function..." >&4
11912 case "$randfunc" in
11914 if set drand48 val -f; eval $csym; $val; then
11916 echo "Good, found drand48()." >&4
11917 elif set random val -f; eval $csym; $val; then
11919 echo "OK, found random()." >&4
11922 echo "Yick, looks like I have to use rand()." >&4
11933 *-Dmy_rand=*|*-Dmy_srand=*)
11934 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11935 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11936 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11937 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11941 while $test "$cont"; do
11942 rp="Use which function to generate random numbers?"
11944 if $test "$ans" = "$dflt"; then
11950 if set $ans val -f; eval $csym; $val; then
11954 rp="I cannot find function $ans. Use that name anyway?"
11963 case "$randfunc" in
11965 drand01="drand48()"
11971 case "$randbits" in
11973 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11975 #$i_unistd I_UNISTD
11976 #$i_stdlib I_STDLIB
11979 # include <unistd.h>
11982 # include <stdlib.h>
11987 register unsigned long tmp;
11988 register unsigned long max = 0L;
11990 for (i = 1000; i; i--) {
11991 tmp = (unsigned long) $randfunc();
11992 if (tmp > max) max = tmp;
11994 for (i = 0; max; i++)
12000 if eval $compile_ok; then
12004 echo "(I can't seem to compile the test program...)"
12011 rp="How many bits does your $randfunc() function produce?"
12015 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12016 seedfunc="s$randfunc"
12017 randseedtype=unsigned
12021 rp="How many bits does your $randfunc() function produce?"
12024 seedfunc="s$randfunc"
12025 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12026 if set $seedfunc val -f; eval $csym; $val; then
12027 echo "(Using $seedfunc() to seed random generator)"
12029 echo "(Warning: no $seedfunc() to seed random generator)"
12032 randseedtype=unsigned
12040 echo "Determining whether or not we are on an EBCDIC system..." >&4
12041 $cat >tebcdic.c <<'EOM'
12044 if ('M'==0xd4) return 0;
12051 if eval $compile_ok; then
12053 echo "You have EBCDIC." >&4
12056 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12059 echo "I'm unable to compile the test program." >&4
12060 echo "I'll assume ASCII or some ISO Latin." >&4
12062 $rm -f tebcdic.c tebcdic
12068 Checking how to flush all pending stdio output...
12070 # I only know how to find the first 32 possibly open files on SunOS.
12071 # See also hints/sunos_4_1.sh and util.c --AD
12073 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12075 $cat >>try.c <<EOCP
12077 #$i_unistd I_UNISTD
12079 # include <unistd.h>
12081 #$d_sysconf HAS_SYSCONF
12082 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12083 #ifdef HAS_STDIO_STREAM_ARRAY
12084 # define STDIO_STREAM_ARRAY $stdio_stream_array
12087 FILE* p = fopen("try.out", "w");
12091 # ifdef TRY_FPRINTF
12095 #ifdef TRY_FFLUSH_NULL
12098 #ifdef TRY_FFLUSH_ALL
12100 long open_max = -1;
12101 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12102 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12104 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12105 open_max = sysconf(_SC_OPEN_MAX);
12108 open_max = FOPEN_MAX;
12111 open_max = OPEN_MAX;
12120 # ifdef HAS_STDIO_STREAM_ARRAY
12121 if (open_max > 0) {
12123 for (i = 0; i < open_max; i++)
12124 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12125 STDIO_STREAM_ARRAY[i]._file < open_max &&
12126 STDIO_STREAM_ARRAY[i]._flag)
12127 fflush(&STDIO_STREAM_ARRAY[i]);
12135 : first we have to find out how _not_ to flush
12136 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12138 set try -DTRY_FPUTC
12139 if eval $compile; then
12141 ./try$exe_ext 2>/dev/null
12142 if $test ! -s try.out -a "X$?" = X42; then
12148 set try -DTRY_FPRINTF
12150 if eval $compile; then
12152 ./try$exe_ext 2>/dev/null
12153 if $test ! -s try.out -a "X$?" = X42; then
12154 output=-DTRY_FPRINTF
12160 : check for fflush NULL behaviour
12161 case "$fflushNULL" in
12162 '') set try -DTRY_FFLUSH_NULL $output
12163 if eval $compile; then
12165 ./try$exe_ext 2>/dev/null
12167 if $test -s try.out -a "X$code" = X42; then
12168 fflushNULL="`$cat try.out`"
12170 if $test "X$code" != X42; then
12172 (If this test failed, don't worry, we'll try another method shortly.)
12177 $rm -f core try.core core.try.*
12178 case "$fflushNULL" in
12180 Your fflush(NULL) works okay.
12182 fflushNULL="$define"
12185 Your fflush(NULL) isn't working (contrary to ANSI C).
12187 fflushNULL="$undef"
12190 Cannot figure out whether your fflush(NULL) works or not.
12191 I'm assuming it doesn't (contrary to ANSI C).
12193 fflushNULL="$undef"
12197 $define|true|[yY]*)
12198 fflushNULL="$define"
12201 fflushNULL="$undef"
12204 : check explicit looping only if NULL did not work
12205 case "$fflushNULL" in
12207 : check for fflush all behaviour
12208 case "$fflushall" in
12209 '') set try -DTRY_FFLUSH_ALL $output
12210 if eval $compile; then
12212 (Now testing the other method--but note that also this may fail.)
12215 ./try$exe_ext 2>/dev/null
12216 if $test -s try.out -a "X$?" = X42; then
12217 fflushall="`$cat try.out`"
12220 $rm -f core try.core core.try.*
12221 case "$fflushall" in
12223 Whew. Flushing explicitly all the stdio streams works.
12225 fflushall="$define"
12228 Sigh. Flushing explicitly all the stdio streams doesn't work.
12233 Cannot figure out whether flushing stdio streams explicitly works or not.
12234 I'm assuming it doesn't.
12240 "$define"|true|[yY]*)
12241 fflushall="$define"
12248 *) fflushall="$undef"
12251 case "$fflushNULL$fflushall" in
12254 I cannot figure out how to flush pending stdio output.
12258 $rm -f try.* try$exe_ext
12260 : Store the full pathname to the ar program for use in the C program
12261 : Respect a hint or command line value for full_ar.
12266 : Store the full pathname to the sed program for use in the C program
12269 : see what type gids are declared as in the kernel
12271 echo "Looking for the type for group ids returned by getgid()."
12272 set gid_t gidtype xxx stdio.h sys/types.h
12276 xxx=`./findhdr sys/user.h`
12277 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12279 unsigned) dflt="$1 $2" ;;
12283 *) dflt="$gidtype";;
12286 gid_t) echo "gid_t found." ;;
12287 *) rp="What is the type for group ids returned by getgid()?"
12295 *_t) zzz="$gidtype" ;;
12298 echo "Checking the size of $zzz..." >&4
12300 #include <sys/types.h>
12303 printf("%d\n", (int)sizeof($gidtype));
12308 if eval $compile_ok; then
12312 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12315 echo "Your $zzz size is $gidsize bytes."
12320 echo "(I can't compile the test program--guessing $gidsize.)" >&4
12326 *_t) zzz="$gidtype" ;;
12329 echo "Checking the sign of $zzz..." >&4
12331 #include <sys/types.h>
12342 if eval $compile; then
12346 echo "(I can't execute the test program--guessing unsigned.)" >&4
12350 1) echo "Your $zzz is unsigned." ;;
12351 -1) echo "Your $zzz is signed." ;;
12357 echo "(I can't compile the test program--guessing unsigned.)" >&4
12363 if $test X"$quadtype" != X; then
12365 echo "Checking how to print 64-bit integers..." >&4
12367 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12368 $cat >try.c <<'EOCP'
12369 #include <sys/types.h>
12372 int q = 12345678901;
12373 printf("%ld\n", q);
12377 if eval $compile; then
12378 yyy=`./try$exe_ext`
12381 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12382 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12383 echo "We will use %d."
12389 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12390 $cat >try.c <<'EOCP'
12391 #include <sys/types.h>
12394 long q = 12345678901;
12395 printf("%ld\n", q);
12399 if eval $compile; then
12400 yyy=`./try$exe_ext`
12403 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12404 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12405 echo "We will use %ld."
12411 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12412 $cat >try.c <<'EOCP'
12413 #include <sys/types.h>
12414 #include <inttypes.h>
12417 int64_t q = 12345678901;
12418 printf("%" PRId64 "\n", q);
12422 if eval $compile; then
12423 yyy=`./try$exe_ext`
12426 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12427 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12428 echo "We will use the C9X style."
12434 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12435 $cat >try.c <<'EOCP'
12436 #include <sys/types.h>
12439 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12440 printf("%lld\n", q);
12444 if eval $compile; then
12445 yyy=`./try$exe_ext`
12448 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12449 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12450 echo "We will use the %lld style."
12456 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12458 #include <sys/types.h>
12461 $quadtype q = 12345678901;
12462 printf("%Ld\n", q);
12466 if eval $compile; then
12467 yyy=`./try$exe_ext`
12470 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12471 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12472 echo "We will use %Ld."
12478 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12480 #include <sys/types.h>
12483 $quadtype q = 12345678901;
12484 printf("%qd\n", q);
12488 if eval $compile; then
12489 yyy=`./try$exe_ext`
12492 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12493 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12494 echo "We will use %qd."
12500 if $test X"$sPRId64" = X; then
12501 echo "Cannot figure out how to print 64-bit integers." >&4
12509 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
12510 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
12512 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
12513 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
12519 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12521 if $test X"$ivsize" = X8; then
12522 ivdformat="$sPRId64"
12523 uvuformat="$sPRIu64"
12524 uvoformat="$sPRIo64"
12525 uvxformat="$sPRIx64"
12527 if $test X"$ivsize" = X"$longsize"; then
12533 if $test X"$ivsize" = X"$intsize"; then
12540 if $test X"$ivsize" = X"$shortsize"; then
12550 case "$ivdformat" in
12551 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12558 $echo "Checking the format string to be used for gids..." >&4
12561 -1) if $test X"$gidsize" = X"$ivsize"; then
12562 gidformat="$ivdformat"
12564 if $test X"$gidsize" = X"$longsize"; then
12567 if $test X"$gidsize" = X"$intsize"; then
12570 if $test X"$gidsize" = X"$shortsize"; then
12577 *) if $test X"$gidsize" = X"$uvsize"; then
12578 gidformat="$uvuformat"
12580 if $test X"$gidsize" = X"$longsize"; then
12583 if $test X"$gidsize" = X"$intsize"; then
12586 if $test X"$gidsize" = X"$shortsize"; then
12595 : see if getgroups exists
12596 set getgroups d_getgrps
12599 : see if setgroups exists
12600 set setgroups d_setgrps
12604 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12606 case "$d_getgrps$d_setgrps" in
12608 case "$groupstype" in
12609 '') dflt="$gidtype" ;;
12610 *) dflt="$groupstype" ;;
12613 What type of pointer is the second argument to getgroups() and setgroups()?
12614 Usually this is the same as group ids, $gidtype, but not always.
12617 rp='What type pointer is the second argument to getgroups() and setgroups()?'
12621 *) groupstype="$gidtype";;
12625 echo "Checking if your $make program sets \$(MAKE)..." >&4
12626 case "$make_set_make" in
12628 $sed 's/^X //' > testmake.mak << 'EOF'
12630 X @echo 'maketemp="$(MAKE)"'
12632 case "`$make -f testmake.mak 2>/dev/null`" in
12633 *maketemp=*) make_set_make='#' ;;
12634 *) make_set_make="MAKE=$make" ;;
12636 $rm -f testmake.mak
12639 case "$make_set_make" in
12640 '#') echo "Yup, it does.";;
12641 *) echo "Nope, it doesn't.";;
12644 : see if this is a sys/mman.h system
12645 set sys/mman.h i_sysmman
12648 : see if mmap exists
12651 : see what shmat returns
12652 : default to something harmless
12654 case "$i_sysmman$d_mmap" in
12656 $cat >mmap.c <<'END'
12657 #include <sys/mman.h>
12660 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
12665 echo "and it returns ($mmaptype)." >&4
12671 : see what type is used for mode_t
12672 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12673 set mode_t modetype int stdio.h sys/types.h
12676 : define a fucntion to check prototypes
12677 $cat > protochk <<EOSH
12680 optimize="$optimize"
12682 prototype="$prototype"
12687 $cat >> protochk <<'EOSH'
12692 while test $# -ge 2; do
12694 $define) echo "#include <$2>" >> try.c ;;
12695 literal) echo "$2" >> try.c ;;
12699 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
12700 cat >> try.c <<'EOCP'
12701 #ifdef CAN_PROTOTYPE
12702 #define _(args) args
12707 echo "$foo" >> try.c
12708 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12709 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12715 $eunicefix protochk
12717 : see what type is used for size_t
12718 rp="What is the type used for the length parameter for string functions?"
12719 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12722 : check for type of arguments to gethostbyaddr.
12723 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12724 case "$d_gethbyaddr" in
12728 Checking to see what type of arguments are accepted by gethostbyaddr().
12730 hdrs="$define sys/types.h
12731 $d_socket sys/socket.h
12732 $i_niin netinet/in.h
12734 $i_unistd unistd.h"
12735 : The first arg can 'char *' or 'void *'
12736 : The second arg is some of integral type
12737 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12738 for yyy in size_t long int; do
12739 case "$netdb_host_type" in
12740 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12741 if ./protochk "$try" $hdrs; then
12742 echo "Your system accepts $xxx for the first arg."
12743 echo "...and $yyy for the second arg."
12744 netdb_host_type="$xxx"
12745 netdb_hlen_type="$yyy"
12751 : In case none of those worked, prompt the user.
12752 case "$netdb_host_type" in
12753 '') rp='What is the type for the 1st argument to gethostbyaddr?'
12756 netdb_host_type=$ans
12757 rp='What is the type for the 2nd argument to gethostbyaddr?'
12760 netdb_hlen_type=$ans
12764 *) : no gethostbyaddr, so pick harmless defaults
12765 netdb_host_type='char *'
12766 netdb_hlen_type="$sizetype"
12769 # Remove the "const" if needed. -- but then we'll have a
12771 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12774 : check for type of argument to gethostbyname.
12775 if test "X$netdb_name_type" = X ; then
12776 case "$d_gethbyname" in
12780 Checking to see what type of argument is accepted by gethostbyname().
12782 hdrs="$define sys/types.h
12783 $d_socket sys/socket.h
12784 $i_niin netinet/in.h
12786 $i_unistd unistd.h"
12787 for xxx in "const char *" "char *"; do
12788 case "$netdb_name_type" in
12789 '') try="extern struct hostent *gethostbyname($xxx);"
12790 if ./protochk "$try" $hdrs; then
12791 echo "Your system accepts $xxx."
12792 netdb_name_type="$xxx"
12797 : In case none of those worked, prompt the user.
12798 case "$netdb_name_type" in
12799 '') rp='What is the type for the 1st argument to gethostbyname?'
12802 netdb_name_type=$ans
12806 *) : no gethostbyname, so pick harmless default
12807 netdb_name_type='char *'
12812 : check for type of 1st argument to getnetbyaddr.
12813 if test "X$netdb_net_type" = X ; then
12814 case "$d_getnbyaddr" in
12818 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12820 hdrs="$define sys/types.h
12821 $d_socket sys/socket.h
12822 $i_niin netinet/in.h
12824 $i_unistd unistd.h"
12825 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12826 case "$netdb_net_type" in
12827 '') try="extern struct netent *getnetbyaddr($xxx, int);"
12828 if ./protochk "$try" $hdrs; then
12829 echo "Your system accepts $xxx."
12830 netdb_net_type="$xxx"
12835 : In case none of those worked, prompt the user.
12836 case "$netdb_net_type" in
12837 '') rp='What is the type for the 1st argument to getnetbyaddr?'
12840 netdb_net_type=$ans
12844 *) : no getnetbyaddr, so pick harmless default
12845 netdb_net_type='long'
12849 : locate the preferred pager for this system
12863 '') dflt=/usr/ucb/more;;
12870 rp='What pager is used on your system?'
12874 : see what type pids are declared as in the kernel
12875 rp="What is the type of process ids on this system?"
12876 set pid_t pidtype int stdio.h sys/types.h
12879 : Find earliest binary compatible site_perl subdirectory perl can use.
12880 case "$bincompat5005" in
12881 "$define") xs_apiversion='5.005' ;;
12882 *) xs_apiversion=$version ;; # The current site_perl version.
12884 : Find earliest pure perl site_perl subdirectory perl can use.
12885 : The versioned directories started at 5.005.
12886 pm_apiversion='5.005'
12888 : check for length of pointer
12892 $echo $n "Checking to see how big your pointers are...$c" >&4
12893 if test "$voidflags" -gt 7; then
12894 echo '#define VOID_PTR char *' > try.c
12896 echo '#define VOID_PTR void *' > try.c
12898 $cat >>try.c <<'EOCP'
12902 printf("%d\n", (int)sizeof(VOID_PTR));
12907 if eval $compile_ok; then
12909 $echo " $ptrsize bytes." >&4
12912 echo "(I can't seem to compile the test program. Guessing...)" >&4
12913 rp="What is the size of a pointer (in bytes)?"
12921 : see if ar generates random libraries by itself
12923 echo "Checking how to generate random libraries on your machine..." >&4
12924 echo 'int bar1() { return bar2(); }' > bar1.c
12925 echo 'int bar2() { return 2; }' > bar2.c
12926 $cat > foo.c <<'EOP'
12927 int main() { printf("%d\n", bar1()); exit(0); }
12929 $cc $ccflags -c bar1.c >/dev/null 2>&1
12930 $cc $ccflags -c bar2.c >/dev/null 2>&1
12931 $cc $ccflags -c foo.c >/dev/null 2>&1
12932 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12933 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12934 ./foobar >/dev/null 2>&1; then
12935 echo "$ar appears to generate random libraries itself."
12938 elif $ar ts bar$_a >/dev/null 2>&1 &&
12939 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12940 ./foobar >/dev/null 2>&1; then
12941 echo "a table of contents needs to be added with '$ar ts'."
12948 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12949 $test -f $ranlib || ranlib=''
12952 if $test -n "$ranlib"; then
12953 echo "your system has '$ranlib'; we'll use that."
12956 echo "your system doesn't seem to support random libraries"
12957 echo "so we'll use lorder and tsort to order the libraries."
12964 : check for type of arguments to select.
12965 case "$selecttype" in
12966 '') case "$d_select" in
12970 Checking to see what type of arguments are accepted by select().
12972 hdrs="$define sys/types.h
12973 $i_systime sys/time.h
12974 $i_sysselct sys/select.h
12975 $d_socket sys/socket.h"
12976 : The first arg can be int, unsigned, or size_t
12977 : The last arg may or may not be 'const'
12979 : void pointer has been seen but using that
12980 : breaks the selectminbits test
12981 for xxx in 'fd_set *' 'int *'; do
12982 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12983 for tmo in 'struct timeval *' 'const struct timeval *'; do
12985 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12986 if ./protochk "$try" $hdrs; then
12987 echo "Your system accepts $xxx."
12996 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12997 case "$d_fd_set" in
12998 $define) dflt="fd_set *" ;;
13007 *) : no select, so pick a harmless default
13014 : check for the select 'width'
13015 case "$selectminbits" in
13016 '') case "$d_select" in
13020 Checking to see on how many bits at a time your select() operates...
13023 #include <sys/types.h>
13025 #$i_systime I_SYS_TIME
13026 #$i_systimek I_SYS_TIME_KERNEL
13031 # ifdef I_SYS_TIME_KERNEL
13034 # include <sys/time.h>
13035 # ifdef I_SYS_TIME_KERNEL
13039 #$i_sysselct I_SYS_SELECT
13040 #ifdef I_SYS_SELECT
13041 #include <sys/select.h>
13043 #$d_socket HAS_SOCKET
13045 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13049 #define S sizeof(*(b))
13051 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13052 #define NBITS (NBYTES * 8)
13061 fp = fopen("try.c", "r");
13067 b = ($selecttype)s;
13068 for (i = 0; i < NBITS; i++)
13072 select(fd + 1, b, 0, 0, &t);
13073 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13074 printf("%d\n", i + 1);
13079 if eval $compile_ok; then
13080 selectminbits=`./try`
13081 case "$selectminbits" in
13083 Cannot figure out on how many bits at a time your select() operates.
13084 I'll play safe and guess it is 32 bits.
13090 *) bits="$selectminbits bits" ;;
13092 echo "Your select() operates on $bits at a time." >&4
13094 rp='What is the minimum number of bits your select() operates on?'
13095 case "$byteorder" in
13096 1234|12345678) dflt=32 ;;
13101 selectminbits="$val"
13105 *) : no select, so pick a harmless default
13112 : Trace out the files included by signal.h, then look for SIGxxx names.
13113 : Remove SIGARRAYSIZE used by HPUX.
13114 : Remove SIGSTKSIZE used by Linux.
13115 : Remove SIGSTKSZ used by Posix.
13116 : Remove SIGTYP void lines used by OS2.
13117 : Some cpps, like os390, dont give the file name anywhere
13118 if [ "X$fieldn" = X ]; then
13119 : Just make some guesses. We check them later.
13120 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13122 xxx=`echo '#include <signal.h>' |
13123 $cppstdin $cppminus $cppflags 2>/dev/null |
13124 $grep '^[ ]*#.*include' |
13125 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13127 : Check this list of files to be sure we have parsed the cpp output ok.
13128 : This will also avoid potentially non-existent files, such
13131 for xx in $xxx /dev/null ; do
13132 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13134 : If we have found no files, at least try signal.h
13135 case "$xxxfiles" in
13136 '') xxxfiles=`./findhdr signal.h` ;;
13139 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13140 print substr($2, 4, 20)
13142 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13143 print substr($3, 4, 20)
13145 : Append some common names just in case the awk scan failed.
13146 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13147 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13148 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13149 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13150 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13152 : generate a few handy files for later
13153 $cat > signal.c <<'EOCP'
13154 #include <sys/types.h>
13155 #include <signal.h>
13159 /* Strange style to avoid deeply-nested #if/#else/#endif */
13162 # define NSIG (_NSIG)
13168 # define NSIG (SIGMAX+1)
13174 # define NSIG (SIG_MAX+1)
13180 # define NSIG (MAXSIG+1)
13186 # define NSIG (MAX_SIG+1)
13191 # ifdef SIGARRAYSIZE
13192 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13198 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13202 /* Default to some arbitrary number that's big enough to get most
13203 of the common signals.
13209 printf("NSIG %d\n", NSIG);
13215 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13217 printf "#ifdef SIG"; printf $1; printf "\n"
13218 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13219 printf $1; printf ");\n"
13223 printf "#endif /* JUST_NSIG */\n";
13224 printf "exit(0);\n}\n";
13227 $cat >signal.awk <<'EOP'
13228 BEGIN { ndups = 0 }
13229 $1 ~ /^NSIG$/ { nsig = $2 }
13230 ($1 !~ /^NSIG$/) && (NF == 2) {
13231 if ($2 > maxsig) { maxsig = $2 }
13232 if (sig_name[$2]) {
13233 dup_name[ndups] = $1
13234 dup_num[ndups] = $2
13246 printf("NSIG %d\n", nsig);
13247 for (n = 1; n < nsig; n++) {
13249 printf("%s %d\n", sig_name[n], sig_num[n])
13252 printf("NUM%d %d\n", n, n)
13255 for (n = 0; n < ndups; n++) {
13256 printf("%s %d\n", dup_name[n], dup_num[n])
13260 $cat >signal_cmd <<EOS
13262 if $test -s signal.lst; then
13263 echo "Using your existing signal.lst file"
13268 $cat >>signal_cmd <<'EOS'
13271 if eval $compile_ok; then
13272 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13274 echo "(I can't seem be able to compile the whole test program)" >&4
13275 echo "(I'll try it in little pieces.)" >&4
13276 set signal -DJUST_NSIG
13277 if eval $compile_ok; then
13278 ./signal$_exe > signal.nsg
13281 echo "I can't seem to figure out how many signals you have." >&4
13282 echo "Guessing 50." >&4
13283 echo 'NSIG 50' > signal.nsg
13285 : Now look at all the signal names, one at a time.
13286 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13287 $cat > signal.c <<EOCP
13288 #include <sys/types.h>
13289 #include <signal.h>
13292 printf("$xx %d\n", SIG${xx});
13297 if eval $compile; then
13298 echo "SIG${xx} found."
13299 ./signal$_exe >> signal.ls1
13301 echo "SIG${xx} NOT found."
13304 if $test -s signal.ls1; then
13305 $cat signal.nsg signal.ls1 |
13306 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13310 if $test -s signal.lst; then
13313 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13314 echo 'kill -l' >signal
13315 set X `csh -f <signal`
13319 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13321 echo $@ | $tr ' ' $trnl | \
13322 $awk '{ printf "%s %d\n", $1, ++s; }
13323 END { printf "NSIG %d\n", ++s }' >signal.lst
13325 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13327 chmod a+x signal_cmd
13328 $eunicefix signal_cmd
13330 : generate list of signal names
13332 case "$sig_name_init" in
13334 *) case "$sig_num_init" in
13335 ''|*,*) doinit=yes ;;
13340 echo "Generating a list of signal names and numbers..." >&4
13342 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13343 sig_name=`$awk 'BEGIN { printf "ZERO " }
13344 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13345 sig_num=`$awk 'BEGIN { printf "0 " }
13346 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13347 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
13348 !/^NSIG/ { printf "\"%s\", ", $1 }
13349 END { printf "0\n" }' signal.lst`
13350 sig_num_init=`$awk 'BEGIN { printf "0, " }
13351 !/^NSIG/ { printf "%d, ", $2}
13352 END { printf "0\n"}' signal.lst`
13355 echo "The following $sig_count signals are available:"
13357 echo $sig_name | $awk \
13358 'BEGIN { linelen = 0 }
13360 for (i = 1; i <= NF; i++) {
13361 name = "SIG" $i " "
13362 linelen = linelen + length(name)
13363 if (linelen > 70) {
13365 linelen = length(name)
13371 $rm -f signal signal.c signal.awk signal.lst signal_cmd
13373 : see what type is used for signed size_t
13374 set ssize_t ssizetype int stdio.h sys/types.h
13377 $cat > ssize.c <<EOM
13379 #include <sys/types.h>
13380 #define Size_t $sizetype
13381 #define SSize_t $dflt
13384 if (sizeof(Size_t) == sizeof(SSize_t))
13386 else if (sizeof(Size_t) == sizeof(int))
13395 if eval $compile_ok && ./ssize > /dev/null; then
13396 ssizetype=`./ssize`
13397 echo "I'll be using $ssizetype for functions returning a byte count." >&4
13400 Help! I can't compile and run the ssize_t test program: please enlighten me!
13401 (This is probably a misconfiguration in your system or libraries, and
13402 you really ought to fix it. Still, I'll try anyway.)
13404 I need a type that is the same size as $sizetype, but is guaranteed to
13405 be signed. Common values are ssize_t, int and long.
13408 rp="What signed type is the same size as $sizetype?"
13412 $rm -f ssize ssize.*
13414 : see what type of char stdio uses.
13416 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13417 echo "Your stdio uses unsigned chars." >&4
13418 stdchar="unsigned char"
13420 echo "Your stdio uses signed chars." >&4
13424 : see if time exists
13426 if test "X$d_time" = X -o X"$timetype" = X; then
13427 if set time val -f d_time; eval $csym; $val; then
13428 echo 'time() found.' >&4
13430 rp="What is the type returned by time() on this system?"
13431 set time_t timetype long stdio.h sys/types.h
13434 echo 'time() not found, hope that will do.' >&4
13442 : see what type uids are declared as in the kernel
13444 echo "Looking for the type for user ids returned by getuid()."
13445 set uid_t uidtype xxx stdio.h sys/types.h
13449 xxx=`./findhdr sys/user.h`
13450 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13452 unsigned) dflt="$1 $2" ;;
13456 *) dflt="$uidtype";;
13459 uid_t) echo "uid_t found." ;;
13460 *) rp="What is the type for user ids returned by getuid()?"
13468 *_t) zzz="$uidtype" ;;
13471 echo "Checking the size of $zzz..." >&4
13473 #include <sys/types.h>
13476 printf("%d\n", (int)sizeof($uidtype));
13481 if eval $compile_ok; then
13485 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13488 echo "Your $zzz size is $uidsize bytes."
13493 echo "(I can't compile the test program--guessing $uidsize.)" >&4
13498 *_t) zzz="$uidtype" ;;
13501 echo "Checking the sign of $zzz..." >&4
13503 #include <sys/types.h>
13514 if eval $compile; then
13518 echo "(I can't execute the test program--guessing unsigned.)" >&4
13522 1) echo "Your $zzz is unsigned." ;;
13523 -1) echo "Your $zzz is signed." ;;
13529 echo "(I can't compile the test program--guessing unsigned.)" >&4
13535 $echo "Checking the format string to be used for uids..." >&4
13538 -1) if $test X"$uidsize" = X"$ivsize"; then
13539 uidformat="$ivdformat"
13541 if $test X"$uidsize" = X"$longsize"; then
13544 if $test X"$uidsize" = X"$intsize"; then
13547 if $test X"$uidsize" = X"$shortsize"; then
13554 *) if $test X"$uidsize" = X"$uvsize"; then
13555 uidformat="$uvuformat"
13557 if $test X"$uidsize" = X"$longsize"; then
13560 if $test X"$uidsize" = X"$intsize"; then
13563 if $test X"$uidsize" = X"$shortsize"; then
13572 : see if dbm.h is available
13573 : see if dbmclose exists
13574 set dbmclose d_dbmclose
13577 case "$d_dbmclose" in
13587 *) set rpcsvc/dbm.h i_rpcsvcdbm
13592 *) echo "We won't be including <dbm.h>"
13602 : see if this is a sys/file.h system
13607 : do we need to include sys/file.h ?
13611 if $h_sysfile; then
13613 echo "We'll be including <sys/file.h>." >&4
13616 echo "We won't be including <sys/file.h>." >&4
13626 : see if fcntl.h is there
13631 : see if we can include fcntl.h
13637 echo "We'll be including <fcntl.h>." >&4
13640 if $h_sysfile; then
13641 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13643 echo "We won't be including <fcntl.h>." >&4
13655 : see if this is a iconv.h system
13656 set iconv.h i_iconv
13659 : see if locale.h is available
13660 set locale.h i_locale
13663 : see if mach cthreads are available
13664 if test "X$usethreads" = "X$define"; then
13665 set mach/cthreads.h i_machcthr
13668 i_machcthr="$undef"
13673 : see if this is a math.h system
13677 : see if this is a mntent.h system
13678 set mntent.h i_mntent
13681 : see if ndbm.h is available
13686 : see if dbm_open exists
13687 set dbm_open d_dbm_open
13689 case "$d_dbm_open" in
13692 echo "We won't be including <ndbm.h>"
13701 : see if net/errno.h is available
13703 set net/errno.h val
13706 : Unfortunately, it causes problems on some systems. Arrgh.
13709 cat > try.c <<'EOM'
13712 #include <net/errno.h>
13718 if $cc $ccflags -c try.c >/dev/null 2>&1; then
13719 echo "We'll be including <net/errno.h>." >&4
13721 echo "We won't be including <net/errno.h>." >&4
13730 : see if netinet/tcp.h is available
13731 set netinet/tcp.h i_netinettcp
13734 : see if this is a poll.h system
13739 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
13740 $cat <<'EOSH' > Cppsym.know
13741 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13742 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13743 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13744 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13745 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13746 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13747 bull c cadmus clipper CMU COFF COMPILER_VERSION
13748 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13749 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13750 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13751 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13752 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13753 H3050R H3050RX hbullx20 hcx host_mips
13754 hp200 hp300 hp700 HP700 hp800 hp9000
13755 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13756 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13757 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13758 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13759 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13760 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13761 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13762 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13763 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13764 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13765 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13766 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13767 MATH_HAS_NO_SIDE_EFFECTS
13768 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13769 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13770 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13771 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13772 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13773 NetBSD news1500 news1700 news1800 news1900 news3700
13774 news700 news800 news900 NeXT NLS ns16000 ns32000
13775 ns32016 ns32332 ns32k nsc32000
13776 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13777 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13778 pc532 pdp11 PGC PIC plexus PORTAR posix
13779 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
13780 POSIX_C_SOURCE POSIX_SOURCE POWER
13781 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
13782 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
13783 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
13784 sony sony_news sonyrisc sparc sparclite spectrum
13785 stardent stdc STDC_EXT stratos sun sun3 sun386
13786 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
13787 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
13788 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
13789 sysV68 sysV88 Tek4132 Tek4300 titan
13790 tower tower32 tower32_200 tower32_600 tower32_700
13791 tower32_800 tower32_850 tss
13792 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
13793 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
13794 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
13795 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
13796 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
13797 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
13800 # Maybe put other stuff here too.
13801 cat <<EOSH >>Cppsym.know
13804 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13805 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13806 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
13807 $rm -f Cppsym.a Cppsym.b
13808 cat <<EOSH > Cppsym
13810 if $test \$# -gt 0; then
13811 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13812 if $test -s Cppsym.got; then
13819 $tr " " "$trnl" | ./Cppsym.try
13825 cat <<EOSH > Cppsym.try
13827 cat <<'EOCP' > try.c
13833 cat <<'EOSH' >> Cppsym.try
13835 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
13836 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
13837 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
13838 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
13842 cat <<EOSH >> Cppsym.try
13844 optimize="$optimize"
13849 $cc $optimize $ccflags $ldflags -o try$exe_ext try.c $libs && ./try$exe_ext
13851 chmod +x Cppsym.try
13852 $eunicefix Cppsym.try
13853 ./Cppsym < Cppsym.know > Cppsym.true
13854 : now check the C compiler for additional symbols
13855 postprocess_cc_v=''
13857 aix) postprocess_cc_v="|$tr , ' '" ;;
13864 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13867 -D*) echo "\$i" | $sed 's/^-D//';;
13868 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13873 postprocess_cc_v=''
13876 ./ccsym > ccsym1.raw
13877 if $test -s ccsym1.raw; then
13878 $sort ccsym1.raw | $uniq >ccsym.raw
13880 mv ccsym1.raw ccsym.raw
13883 $awk '/\=/ { print $0; next }
13884 { print $0"=1" }' ccsym.raw >ccsym.list
13885 $awk '/\=/ { print $0; next }
13886 { print $0"=1" }' Cppsym.true >ccsym.true
13887 $comm -13 ccsym.true ccsym.list >ccsym.own
13888 $comm -12 ccsym.true ccsym.list >ccsym.com
13889 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13891 if $test -z ccsym.raw; then
13892 echo "Your C compiler doesn't seem to define any symbols!" >&4
13894 echo "However, your C preprocessor defines the following symbols:"
13897 cppsymbols=`$cat Cppsym.true`
13898 cppsymbols=`echo $cppsymbols`
13899 cppccsymbols="$cppsymbols"
13901 if $test -s ccsym.com; then
13902 echo "Your C compiler and pre-processor define these symbols:"
13903 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13906 cppccsymbols=`$cat ccsym.com`
13907 cppccsymbols=`echo $cppccsymbols`
13908 $test "$silent" || sleep 1
13910 if $test -s ccsym.cpp; then
13911 $test "$also" && echo " "
13912 echo "Your C pre-processor ${also}defines the following symbols:"
13913 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13915 cppsymbols=`$cat ccsym.cpp`
13916 cppsymbols=`echo $cppsymbols`
13917 $test "$silent" || sleep 1
13919 if $test -s ccsym.own; then
13920 $test "$also" && echo " "
13921 echo "Your C compiler ${also}defines the following cpp symbols:"
13922 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13923 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13924 ccsymbols=`$cat ccsym.own`
13925 ccsymbols=`echo $ccsymbols`
13926 $test "$silent" || sleep 1
13931 : see if this is a termio system
13935 if $test `./findhdr termios.h`; then
13936 set tcsetattr i_termios
13942 "$define") echo "You have POSIX termios.h... good!" >&4;;
13943 *) if ./Cppsym pyr; then
13944 case "`/bin/universe`" in
13945 ucb) if $test `./findhdr sgtty.h`; then
13947 echo "<sgtty.h> found." >&4
13949 echo "System is pyramid with BSD universe."
13950 echo "<sgtty.h> not found--you could have problems." >&4
13952 *) if $test `./findhdr termio.h`; then
13954 echo "<termio.h> found." >&4
13956 echo "System is pyramid with USG universe."
13957 echo "<termio.h> not found--you could have problems." >&4
13961 if $test `./findhdr termio.h`; then
13962 echo "<termio.h> found." >&4
13964 elif $test `./findhdr sgtty.h`; then
13965 echo "<sgtty.h> found." >&4
13968 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13971 if $test `./findhdr sgtty.h`; then
13972 echo "<sgtty.h> found." >&4
13974 elif $test `./findhdr termio.h`; then
13975 echo "<termio.h> found." >&4
13978 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13982 set i_termio; eval $setvar
13983 val=$val2; set i_sgtty; eval $setvar
13984 val=$val3; set i_termios; eval $setvar
13986 : see if this is a shadow.h system
13987 set shadow.h i_shadow
13990 : see if this is a socks.h system
13991 set socks.h i_socks
13994 : see if stdarg is available
13996 if $test `./findhdr stdarg.h`; then
13997 echo "<stdarg.h> found." >&4
14000 echo "<stdarg.h> NOT found." >&4
14004 : see if varags is available
14006 if $test `./findhdr varargs.h`; then
14007 echo "<varargs.h> found." >&4
14009 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14012 : set up the varargs testing programs
14013 $cat > varargs.c <<EOP
14015 #include <stdarg.h>
14018 #include <varargs.h>
14022 int f(char *p, ...)
14036 p = va_arg(ap, char *);
14041 $cat > varargs <<EOP
14043 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14052 : now check which varargs header should be included
14057 if `./varargs I_STDARG`; then
14059 elif `./varargs I_VARARGS`; then
14064 if `./varargs I_VARARGS`; then
14071 echo "I could not find the definition for va_dcl... You have problems..." >&4
14072 val="$undef"; set i_stdarg; eval $setvar
14073 val="$undef"; set i_varargs; eval $setvar
14078 case "$i_varhdr" in
14080 val="$define"; set i_stdarg; eval $setvar
14081 val="$undef"; set i_varargs; eval $setvar
14084 val="$undef"; set i_stdarg; eval $setvar
14085 val="$define"; set i_varargs; eval $setvar
14088 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14092 : see if stddef is available
14093 set stddef.h i_stddef
14096 : see if sys/access.h is available
14097 set sys/access.h i_sysaccess
14100 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14101 set sys/filio.h i_sysfilio
14104 if $test `./findhdr sys/ioctl.h`; then
14106 echo '<sys/ioctl.h> found.' >&4
14109 if $test $i_sysfilio = "$define"; then
14110 echo '<sys/ioctl.h> NOT found.' >&4
14112 $test $i_sgtty = "$define" && xxx="sgtty.h"
14113 $test $i_termio = "$define" && xxx="termio.h"
14114 $test $i_termios = "$define" && xxx="termios.h"
14115 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14121 : see if sys/resource.h has to be included
14122 set sys/resource.h i_sysresrc
14125 : see if sys/security.h is available
14126 set sys/security.h i_syssecrt
14129 : see if this is a sys/statvfs.h system
14130 set sys/statvfs.h i_sysstatvfs
14133 : see if this is a sys/uio.h system
14134 set sys/uio.h i_sysuio
14137 : see if this is a sys/un.h system
14138 set sys/un.h i_sysun
14141 : see if this is a syswait system
14142 set sys/wait.h i_syswait
14145 : see if this is a ustat.h system
14146 set ustat.h i_ustat
14149 : see if this is an utime system
14150 set utime.h i_utime
14153 : see if this is a values.h system
14154 set values.h i_values
14157 : see if this is a vfork system
14160 set vfork.h i_vfork
14168 : see if gdbm.h is available
14173 : see if gdbm_open exists
14174 set gdbm_open d_gdbm_open
14176 case "$d_gdbm_open" in
14179 echo "We won't be including <gdbm.h>"
14189 echo "Looking for extensions..." >&4
14190 : If we are using the old config.sh, known_extensions may contain
14191 : old or inaccurate or duplicate values.
14192 known_extensions=''
14193 nonxs_extensions=''
14194 : We do not use find because it might not be available.
14195 : We do not just use MANIFEST because the user may have dropped
14196 : some additional extensions into the source tree and expect them
14199 : Function to recursively find available extensions, ignoring DynaLoader
14200 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14204 DynaLoader|dynaload) ;;
14206 if $test -f $xxx/$xxx.xs; then
14207 known_extensions="$known_extensions $1$xxx";
14208 elif $test -f $xxx/Makefile.PL; then
14209 nonxs_extensions="$nonxs_extensions $1$xxx";
14211 if $test -d $xxx -a $# -lt 10; then
14214 eval $find_extensions;
14226 eval $find_extensions
14227 set X $nonxs_extensions
14229 nonxs_extensions="$*"
14230 set X $known_extensions
14232 known_extensions="$*"
14235 : Now see which are supported on this system.
14237 for xxx in $known_extensions ; do
14241 $define) avail_ext="$avail_ext $xxx" ;;
14244 GDBM_File|gdbm_fil)
14246 $define) avail_ext="$avail_ext $xxx" ;;
14249 NDBM_File|ndbm_fil)
14251 $define) avail_ext="$avail_ext $xxx" ;;
14254 ODBM_File|odbm_fil)
14255 case "${i_dbm}${i_rpcsvcdbm}" in
14256 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14260 case "$useposix" in
14261 true|define|y) avail_ext="$avail_ext $xxx" ;;
14265 case "$useopcode" in
14266 true|define|y) avail_ext="$avail_ext $xxx" ;;
14270 case "$d_socket" in
14271 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14275 case "$usethreads" in
14276 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14280 : XXX Do we need a useipcsysv variable here
14281 case "${d_msg}${d_sem}${d_shm}" in
14282 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14285 *) avail_ext="$avail_ext $xxx"
14294 : Now see which nonxs extensions are supported on this system.
14295 : For now assume all are.
14297 for xxx in $nonxs_extensions ; do
14299 *) nonxs_ext="$nonxs_ext $xxx"
14311 A number of extensions are supplied with $package. You may choose to
14312 compile these extensions for dynamic loading (the default), compile
14313 them into the $package executable (static loading), or not include
14314 them at all. Answer "none" to include no extensions.
14315 Note that DynaLoader is always built and need not be mentioned here.
14318 case "$dynamic_ext" in
14319 '') dflt="$avail_ext" ;;
14320 *) dflt="$dynamic_ext"
14321 # Perhaps we are reusing an old out-of-date config.sh.
14324 if test X"$dynamic_ext" != X"$avail_ext"; then
14326 NOTICE: Your previous config.sh list may be incorrect.
14327 The extensions now available to you are
14329 but the default list from your previous config.sh is
14341 rp="What extensions do you wish to load dynamically?"
14344 none) dynamic_ext=' ' ;;
14345 *) dynamic_ext="$ans" ;;
14348 case "$static_ext" in
14350 : Exclude those already listed in dynamic linking
14352 for xxx in $avail_ext; do
14353 case " $dynamic_ext " in
14355 *) dflt="$dflt $xxx" ;;
14362 *) dflt="$static_ext"
14369 rp="What extensions do you wish to load statically?"
14372 none) static_ext=' ' ;;
14373 *) static_ext="$ans" ;;
14378 A number of extensions are supplied with $package. Answer "none"
14379 to include no extensions.
14380 Note that DynaLoader is always built and need not be mentioned here.
14383 case "$static_ext" in
14384 '') dflt="$avail_ext" ;;
14385 *) dflt="$static_ext"
14386 # Perhaps we are reusing an old out-of-date config.sh.
14389 if test X"$static_ext" != X"$avail_ext"; then
14391 NOTICE: Your previous config.sh list may be incorrect.
14392 The extensions now available to you are
14394 but the default list from your previous config.sh is
14403 : Exclude those that are not xs extensions
14407 rp="What extensions do you wish to include?"
14410 none) static_ext=' ' ;;
14411 *) static_ext="$ans" ;;
14416 set X $dynamic_ext $static_ext $nonxs_ext
14420 : Remove build directory name from cppstdin so it can be used from
14421 : either the present location or the final installed location.
14423 : Get out of the UU directory to get correct path name.
14425 case "$cppstdin" in
14427 echo "Stripping down cppstdin path name"
14433 : end of configuration questions
14435 echo "End of configuration questions."
14438 : back to where it started
14439 if test -d ../UU; then
14443 : configuration may be patched via a 'config.over' file
14444 if $test -f config.over; then
14447 rp='I see a config.over file. Do you wish to load it?'
14450 n*) echo "OK, I'll ignore it.";;
14452 echo "Configuration override changes have been loaded."
14457 : in case they want portability, strip down executable paths
14458 case "$d_portable" in
14461 echo "Stripping down executable paths..." >&4
14462 for file in $loclist $trylist; do
14464 eval $file=`basename $temp`
14469 : create config.sh file
14471 echo "Creating config.sh..." >&4
14472 $spitshell <<EOT >config.sh
14475 # This file was produced by running the Configure script. It holds all the
14476 # definitions figured out by Configure. Should you modify one of these values,
14477 # do not forget to propagate your changes by running "Configure -der". You may
14478 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14481 # Package name : $package
14482 # Source directory : $src
14483 # Configuration time: $cf_time
14484 # Configured by : $cf_by
14485 # Target system : $myuname
14495 Revision='$Revision'
14502 alignbytes='$alignbytes'
14503 ansi2knr='$ansi2knr'
14504 aphostname='$aphostname'
14505 api_revision='$api_revision'
14506 api_subversion='$api_subversion'
14507 api_version='$api_version'
14508 api_versionstring='$api_versionstring'
14511 archlibexp='$archlibexp'
14512 archname64='$archname64'
14513 archname='$archname'
14514 archobjs='$archobjs'
14519 bincompat5005='$bincompat5005'
14523 byteorder='$byteorder'
14525 castflags='$castflags'
14528 cccdlflags='$cccdlflags'
14529 ccdlflags='$ccdlflags'
14531 ccsymbols='$ccsymbols'
14533 cf_email='$cf_email'
14535 charsize='$charsize'
14539 clocktype='$clocktype'
14541 compress='$compress'
14542 contains='$contains'
14546 cpp_stuff='$cpp_stuff'
14547 cppccsymbols='$cppccsymbols'
14548 cppflags='$cppflags'
14550 cppminus='$cppminus'
14552 cppstdin='$cppstdin'
14553 cppsymbols='$cppsymbols'
14554 crosscompile='$crosscompile'
14555 cryptlib='$cryptlib'
14557 d_Gconvert='$d_Gconvert'
14558 d_PRIEldbl='$d_PRIEldbl'
14559 d_PRIFldbl='$d_PRIFldbl'
14560 d_PRIGldbl='$d_PRIGldbl'
14561 d_PRIX64='$d_PRIX64'
14562 d_PRId64='$d_PRId64'
14563 d_PRIeldbl='$d_PRIeldbl'
14564 d_PRIfldbl='$d_PRIfldbl'
14565 d_PRIgldbl='$d_PRIgldbl'
14566 d_PRIi64='$d_PRIi64'
14567 d_PRIo64='$d_PRIo64'
14568 d_PRIu64='$d_PRIu64'
14569 d_PRIx64='$d_PRIx64'
14570 d_access='$d_access'
14571 d_accessx='$d_accessx'
14573 d_archlib='$d_archlib'
14576 d_attribut='$d_attribut'
14579 d_bincompat5005='$d_bincompat5005'
14581 d_bsdgetpgrp='$d_bsdgetpgrp'
14582 d_bsdsetpgrp='$d_bsdsetpgrp'
14584 d_casti32='$d_casti32'
14585 d_castneg='$d_castneg'
14586 d_charvspr='$d_charvspr'
14588 d_chroot='$d_chroot'
14589 d_chsize='$d_chsize'
14590 d_closedir='$d_closedir'
14594 d_cuserid='$d_cuserid'
14595 d_dbl_dig='$d_dbl_dig'
14596 d_difftime='$d_difftime'
14597 d_dirnamlen='$d_dirnamlen'
14598 d_dlerror='$d_dlerror'
14599 d_dlopen='$d_dlopen'
14600 d_dlsymun='$d_dlsymun'
14601 d_dosuid='$d_dosuid'
14602 d_drand48proto='$d_drand48proto'
14604 d_eaccess='$d_eaccess'
14605 d_endgrent='$d_endgrent'
14606 d_endhent='$d_endhent'
14607 d_endnent='$d_endnent'
14608 d_endpent='$d_endpent'
14609 d_endpwent='$d_endpwent'
14610 d_endsent='$d_endsent'
14611 d_endspent='$d_endspent'
14612 d_eofnblk='$d_eofnblk'
14613 d_eunice='$d_eunice'
14614 d_fchmod='$d_fchmod'
14615 d_fchown='$d_fchown'
14617 d_fd_macros='$d_fd_macros'
14618 d_fd_set='$d_fd_set'
14619 d_fds_bits='$d_fds_bits'
14620 d_fgetpos='$d_fgetpos'
14621 d_flexfnam='$d_flexfnam'
14624 d_fpathconf='$d_fpathconf'
14625 d_fpos64_t='$d_fpos64_t'
14626 d_fs_data_s='$d_fs_data_s'
14627 d_fseeko='$d_fseeko'
14628 d_fsetpos='$d_fsetpos'
14629 d_fstatfs='$d_fstatfs'
14630 d_fstatvfs='$d_fstatvfs'
14631 d_ftello='$d_ftello'
14633 d_getgrent='$d_getgrent'
14634 d_getgrps='$d_getgrps'
14635 d_gethbyaddr='$d_gethbyaddr'
14636 d_gethbyname='$d_gethbyname'
14637 d_gethent='$d_gethent'
14638 d_gethname='$d_gethname'
14639 d_gethostprotos='$d_gethostprotos'
14640 d_getlogin='$d_getlogin'
14641 d_getmnt='$d_getmnt'
14642 d_getmntent='$d_getmntent'
14643 d_getnbyaddr='$d_getnbyaddr'
14644 d_getnbyname='$d_getnbyname'
14645 d_getnent='$d_getnent'
14646 d_getnetprotos='$d_getnetprotos'
14647 d_getpbyname='$d_getpbyname'
14648 d_getpbynumber='$d_getpbynumber'
14649 d_getpent='$d_getpent'
14650 d_getpgid='$d_getpgid'
14651 d_getpgrp2='$d_getpgrp2'
14652 d_getpgrp='$d_getpgrp'
14653 d_getppid='$d_getppid'
14654 d_getprior='$d_getprior'
14655 d_getprotoprotos='$d_getprotoprotos'
14656 d_getpwent='$d_getpwent'
14657 d_getsbyname='$d_getsbyname'
14658 d_getsbyport='$d_getsbyport'
14659 d_getsent='$d_getsent'
14660 d_getservprotos='$d_getservprotos'
14661 d_getspent='$d_getspent'
14662 d_getspnam='$d_getspnam'
14663 d_gettimeod='$d_gettimeod'
14664 d_gnulibc='$d_gnulibc'
14665 d_grpasswd='$d_grpasswd'
14666 d_hasmntopt='$d_hasmntopt'
14670 d_inetaton='$d_inetaton'
14671 d_int64t='$d_int64t'
14672 d_isascii='$d_isascii'
14673 d_killpg='$d_killpg'
14674 d_lchown='$d_lchown'
14675 d_ldbl_dig='$d_ldbl_dig'
14677 d_locconv='$d_locconv'
14679 d_longdbl='$d_longdbl'
14680 d_longlong='$d_longlong'
14683 d_mbstowcs='$d_mbstowcs'
14684 d_mbtowc='$d_mbtowc'
14685 d_memchr='$d_memchr'
14686 d_memcmp='$d_memcmp'
14687 d_memcpy='$d_memcpy'
14688 d_memmove='$d_memmove'
14689 d_memset='$d_memset'
14691 d_mkdtemp='$d_mkdtemp'
14692 d_mkfifo='$d_mkfifo'
14693 d_mkstemp='$d_mkstemp'
14694 d_mkstemps='$d_mkstemps'
14695 d_mktime='$d_mktime'
14697 d_mprotect='$d_mprotect'
14699 d_msg_ctrunc='$d_msg_ctrunc'
14700 d_msg_dontroute='$d_msg_dontroute'
14701 d_msg_oob='$d_msg_oob'
14702 d_msg_peek='$d_msg_peek'
14703 d_msg_proxy='$d_msg_proxy'
14704 d_msgctl='$d_msgctl'
14705 d_msgget='$d_msgget'
14706 d_msgrcv='$d_msgrcv'
14707 d_msgsnd='$d_msgsnd'
14709 d_munmap='$d_munmap'
14710 d_mymalloc='$d_mymalloc'
14712 d_nv_preserves_uv='$d_nv_preserves_uv'
14713 d_off64_t='$d_off64_t'
14714 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14715 d_oldpthreads='$d_oldpthreads'
14716 d_oldsock='$d_oldsock'
14718 d_pathconf='$d_pathconf'
14720 d_phostname='$d_phostname'
14723 d_portable='$d_portable'
14724 d_pthread_yield='$d_pthread_yield'
14726 d_pwchange='$d_pwchange'
14727 d_pwclass='$d_pwclass'
14728 d_pwcomment='$d_pwcomment'
14729 d_pwexpire='$d_pwexpire'
14730 d_pwgecos='$d_pwgecos'
14731 d_pwpasswd='$d_pwpasswd'
14732 d_pwquota='$d_pwquota'
14734 d_readdir='$d_readdir'
14735 d_readlink='$d_readlink'
14736 d_rename='$d_rename'
14737 d_rewinddir='$d_rewinddir'
14739 d_safebcpy='$d_safebcpy'
14740 d_safemcpy='$d_safemcpy'
14741 d_sanemcmp='$d_sanemcmp'
14742 d_sched_yield='$d_sched_yield'
14743 d_scm_rights='$d_scm_rights'
14744 d_seekdir='$d_seekdir'
14745 d_select='$d_select'
14747 d_semctl='$d_semctl'
14748 d_semctl_semid_ds='$d_semctl_semid_ds'
14749 d_semctl_semun='$d_semctl_semun'
14750 d_semget='$d_semget'
14752 d_setegid='$d_setegid'
14753 d_seteuid='$d_seteuid'
14754 d_setgrent='$d_setgrent'
14755 d_setgrps='$d_setgrps'
14756 d_sethent='$d_sethent'
14757 d_setlinebuf='$d_setlinebuf'
14758 d_setlocale='$d_setlocale'
14759 d_setnent='$d_setnent'
14760 d_setpent='$d_setpent'
14761 d_setpgid='$d_setpgid'
14762 d_setpgrp2='$d_setpgrp2'
14763 d_setpgrp='$d_setpgrp'
14764 d_setprior='$d_setprior'
14765 d_setpwent='$d_setpwent'
14766 d_setregid='$d_setregid'
14767 d_setresgid='$d_setresgid'
14768 d_setresuid='$d_setresuid'
14769 d_setreuid='$d_setreuid'
14770 d_setrgid='$d_setrgid'
14771 d_setruid='$d_setruid'
14772 d_setsent='$d_setsent'
14773 d_setsid='$d_setsid'
14774 d_setspent='$d_setspent'
14775 d_setvbuf='$d_setvbuf'
14779 d_shmatprototype='$d_shmatprototype'
14780 d_shmctl='$d_shmctl'
14782 d_shmget='$d_shmget'
14783 d_sigaction='$d_sigaction'
14784 d_sigsetjmp='$d_sigsetjmp'
14785 d_socket='$d_socket'
14786 d_sockpair='$d_sockpair'
14788 d_statblks='$d_statblks'
14789 d_statfs_f_flags='$d_statfs_f_flags'
14790 d_statfs_s='$d_statfs_s'
14791 d_statvfs='$d_statvfs'
14792 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14793 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14794 d_stdio_stream_array='$d_stdio_stream_array'
14795 d_stdiobase='$d_stdiobase'
14796 d_stdstdio='$d_stdstdio'
14797 d_strchr='$d_strchr'
14798 d_strcoll='$d_strcoll'
14799 d_strctcpy='$d_strctcpy'
14800 d_strerrm='$d_strerrm'
14801 d_strerror='$d_strerror'
14802 d_strtod='$d_strtod'
14803 d_strtol='$d_strtol'
14804 d_strtold='$d_strtold'
14805 d_strtoll='$d_strtoll'
14806 d_strtoul='$d_strtoul'
14807 d_strtoull='$d_strtoull'
14808 d_strtouq='$d_strtouq'
14809 d_strxfrm='$d_strxfrm'
14810 d_suidsafe='$d_suidsafe'
14811 d_symlink='$d_symlink'
14812 d_syscall='$d_syscall'
14813 d_sysconf='$d_sysconf'
14814 d_sysernlst='$d_sysernlst'
14815 d_syserrlst='$d_syserrlst'
14816 d_system='$d_system'
14817 d_tcgetpgrp='$d_tcgetpgrp'
14818 d_tcsetpgrp='$d_tcsetpgrp'
14819 d_telldir='$d_telldir'
14820 d_telldirproto='$d_telldirproto'
14823 d_truncate='$d_truncate'
14824 d_tzname='$d_tzname'
14827 d_union_semun='$d_union_semun'
14829 d_vendorbin='$d_vendorbin'
14830 d_vendorlib='$d_vendorlib'
14832 d_void_closedir='$d_void_closedir'
14833 d_voidsig='$d_voidsig'
14834 d_voidtty='$d_voidtty'
14835 d_volatile='$d_volatile'
14836 d_vprintf='$d_vprintf'
14838 d_waitpid='$d_waitpid'
14839 d_wcstombs='$d_wcstombs'
14840 d_wctomb='$d_wctomb'
14843 db_hashtype='$db_hashtype'
14844 db_prefixtype='$db_prefixtype'
14845 defvoidused='$defvoidused'
14846 direntrytype='$direntrytype'
14849 doublesize='$doublesize'
14851 dynamic_ext='$dynamic_ext'
14857 eunicefix='$eunicefix'
14860 extensions='$extensions'
14861 fflushNULL='$fflushNULL'
14862 fflushall='$fflushall'
14864 firstmakefile='$firstmakefile'
14866 fpossize='$fpossize'
14867 fpostype='$fpostype'
14868 freetype='$freetype'
14870 full_csh='$full_csh'
14871 full_sed='$full_sed'
14872 gccversion='$gccversion'
14873 gidformat='$gidformat'
14879 groupcat='$groupcat'
14880 groupstype='$groupstype'
14883 h_sysfile='$h_sysfile'
14895 i_arpainet='$i_arpainet'
14896 i_bsdioctl='$i_bsdioctl'
14899 i_dirent='$i_dirent'
14907 i_inttypes='$i_inttypes'
14908 i_limits='$i_limits'
14909 i_locale='$i_locale'
14910 i_machcthr='$i_machcthr'
14911 i_malloc='$i_malloc'
14913 i_memory='$i_memory'
14914 i_mntent='$i_mntent'
14917 i_neterrno='$i_neterrno'
14918 i_netinettcp='$i_netinettcp'
14921 i_pthread='$i_pthread'
14923 i_rpcsvcdbm='$i_rpcsvcdbm'
14926 i_shadow='$i_shadow'
14928 i_stdarg='$i_stdarg'
14929 i_stddef='$i_stddef'
14930 i_stdlib='$i_stdlib'
14931 i_string='$i_string'
14932 i_sysaccess='$i_sysaccess'
14933 i_sysdir='$i_sysdir'
14934 i_sysfile='$i_sysfile'
14935 i_sysfilio='$i_sysfilio'
14937 i_sysioctl='$i_sysioctl'
14938 i_sysmman='$i_sysmman'
14939 i_sysmount='$i_sysmount'
14940 i_sysndir='$i_sysndir'
14941 i_sysparam='$i_sysparam'
14942 i_sysresrc='$i_sysresrc'
14943 i_syssecrt='$i_syssecrt'
14944 i_sysselct='$i_sysselct'
14945 i_syssockio='$i_syssockio'
14946 i_sysstat='$i_sysstat'
14947 i_sysstatfs='$i_sysstatfs'
14948 i_sysstatvfs='$i_sysstatvfs'
14949 i_systime='$i_systime'
14950 i_systimek='$i_systimek'
14951 i_systimes='$i_systimes'
14952 i_systypes='$i_systypes'
14953 i_sysuio='$i_sysuio'
14955 i_sysvfs='$i_sysvfs'
14956 i_syswait='$i_syswait'
14957 i_termio='$i_termio'
14958 i_termios='$i_termios'
14960 i_unistd='$i_unistd'
14963 i_values='$i_values'
14964 i_varargs='$i_varargs'
14965 i_varhdr='$i_varhdr'
14967 ignore_versioned_solibs='$ignore_versioned_solibs'
14968 inc_version_list='$inc_version_list'
14969 inc_version_list_init='$inc_version_list_init'
14972 installarchlib='$installarchlib'
14973 installbin='$installbin'
14974 installman1dir='$installman1dir'
14975 installman3dir='$installman3dir'
14976 installprefix='$installprefix'
14977 installprefixexp='$installprefixexp'
14978 installprivlib='$installprivlib'
14979 installscript='$installscript'
14980 installsitearch='$installsitearch'
14981 installsitebin='$installsitebin'
14982 installsitelib='$installsitelib'
14983 installstyle='$installstyle'
14984 installusrbinperl='$installusrbinperl'
14985 installvendorbin='$installvendorbin'
14986 installvendorlib='$installvendorlib'
14988 ivdformat='$ivdformat'
14991 known_extensions='$known_extensions'
14995 lddlflags='$lddlflags'
14997 ldlibpthname='$ldlibpthname'
15004 libsdirs='$libsdirs'
15005 libsfiles='$libsfiles'
15006 libsfound='$libsfound'
15007 libswanted='$libswanted'
15013 locincpth='$locincpth'
15014 loclibpth='$loclibpth'
15015 longdblsize='$longdblsize'
15016 longlongsize='$longlongsize'
15017 longsize='$longsize'
15021 lseeksize='$lseeksize'
15022 lseektype='$lseektype'
15026 make_set_make='$make_set_make'
15027 mallocobj='$mallocobj'
15028 mallocsrc='$mallocsrc'
15029 malloctype='$malloctype'
15031 man1direxp='$man1direxp'
15034 man3direxp='$man3direxp'
15037 mips_type='$mips_type'
15039 mmaptype='$mmaptype'
15041 modetype='$modetype'
15043 multiarch='$multiarch'
15045 myarchname='$myarchname'
15046 mydomain='$mydomain'
15047 myhostname='$myhostname'
15050 netdb_hlen_type='$netdb_hlen_type'
15051 netdb_host_type='$netdb_host_type'
15052 netdb_name_type='$netdb_name_type'
15053 netdb_net_type='$netdb_net_type'
15056 nm_so_opt='$nm_so_opt'
15057 nonxs_ext='$nonxs_ext'
15061 o_nonblock='$o_nonblock'
15063 old_pthread_create_joinable='$old_pthread_create_joinable'
15064 optimize='$optimize'
15065 orderlib='$orderlib'
15071 patchlevel='$patchlevel'
15072 path_sep='$path_sep'
15074 perladmin='$perladmin'
15075 perlpath='$perlpath'
15077 phostname='$phostname'
15080 pm_apiversion='$pm_apiversion'
15084 prefixexp='$prefixexp'
15086 privlibexp='$privlibexp'
15087 prototype='$prototype'
15089 quadkind='$quadkind'
15090 quadtype='$quadtype'
15091 randbits='$randbits'
15092 randfunc='$randfunc'
15093 randseedtype='$randseedtype'
15095 rd_nodata='$rd_nodata'
15099 sPRIEldbl='$sPRIEldbl'
15100 sPRIFldbl='$sPRIFldbl'
15101 sPRIGldbl='$sPRIGldbl'
15104 sPRIeldbl='$sPRIeldbl'
15105 sPRIfldbl='$sPRIfldbl'
15106 sPRIgldbl='$sPRIgldbl'
15111 sched_yield='$sched_yield'
15112 scriptdir='$scriptdir'
15113 scriptdirexp='$scriptdirexp'
15115 seedfunc='$seedfunc'
15116 selectminbits='$selectminbits'
15117 selecttype='$selecttype'
15118 sendmail='$sendmail'
15121 sharpbang='$sharpbang'
15122 shmattype='$shmattype'
15123 shortsize='$shortsize'
15126 sig_count='$sig_count'
15127 sig_name='$sig_name'
15128 sig_name_init='$sig_name_init'
15130 sig_num_init='$sig_num_init'
15131 signal_t='$signal_t'
15132 sitearch='$sitearch'
15133 sitearchexp='$sitearchexp'
15135 sitebinexp='$sitebinexp'
15137 sitelibexp='$sitelibexp'
15138 siteprefix='$siteprefix'
15139 siteprefixexp='$siteprefixexp'
15140 sizetype='$sizetype'
15145 sockethdr='$sockethdr'
15146 socketlib='$socketlib'
15148 spackage='$spackage'
15149 spitshell='$spitshell'
15152 ssizetype='$ssizetype'
15153 startperl='$startperl'
15155 static_ext='$static_ext'
15157 stdio_base='$stdio_base'
15158 stdio_bufsiz='$stdio_bufsiz'
15159 stdio_cnt='$stdio_cnt'
15160 stdio_filbuf='$stdio_filbuf'
15161 stdio_ptr='$stdio_ptr'
15162 stdio_stream_array='$stdio_stream_array'
15165 subversion='$subversion'
15172 timeincl='$timeincl'
15173 timetype='$timetype'
15186 uidformat='$uidformat'
15192 uquadtype='$uquadtype'
15193 use5005threads='$use5005threads'
15194 use64bits='$use64bits'
15196 useithreads='$useithreads'
15197 uselargefiles='$uselargefiles'
15198 uselongdouble='$uselongdouble'
15199 uselonglong='$uselonglong'
15200 usemorebits='$usemorebits'
15201 usemultiplicity='$usemultiplicity'
15202 usemymalloc='$usemymalloc'
15204 useopcode='$useopcode'
15205 useperlio='$useperlio'
15206 useposix='$useposix'
15208 useshrplib='$useshrplib'
15209 usesocks='$usesocks'
15210 usethreads='$usethreads'
15211 usevendorprefix='$usevendorprefix'
15212 usevfork='$usevfork'
15215 uvoformat='$uvoformat'
15218 uvuformat='$uvuformat'
15219 uvxformat='$uvxformat'
15220 vendorbin='$vendorbin'
15221 vendorbinexp='$vendorbinexp'
15222 vendorlib='$vendorlib'
15223 vendorlibexp='$vendorlibexp'
15224 vendorprefix='$vendorprefix'
15225 vendorprefixexp='$vendorprefixexp'
15228 voidflags='$voidflags'
15230 xs_apiversion='$xs_apiversion'
15235 : Add in command line options if available
15236 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15238 : add special variables
15239 $test -f $src/patchlevel.h && \
15240 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15241 echo "CONFIGDOTSH=true" >>config.sh
15243 : propagate old symbols
15244 if $test -f UU/config.sh; then
15245 <UU/config.sh sort | uniq >UU/oldconfig.sh
15246 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15247 sort | uniq -u >UU/oldsyms
15248 set X `cat UU/oldsyms`
15254 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15256 echo "# Variables propagated from previous config.sh file." >>config.sh
15257 for sym in `cat UU/oldsyms`; do
15258 echo " Propagating $hint variable "'$'"$sym..."
15259 eval 'tmp="$'"${sym}"'"'
15261 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15267 : Finish up by extracting the .SH files
15281 If you'd like to make any changes to the config.sh file before I begin
15282 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15285 rp="Press return or use a shell escape to edit config.sh:"
15290 *) : in case they cannot read
15291 sh 1>&4 -c "$ans";;
15296 : if this fails, just run all the .SH files by hand
15303 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15310 Now you need to generate make dependencies by running "$make depend".
15311 You might prefer to run it in background: "$make depend > makedepend.out &"
15312 It can take a while, so you might not want to run it right now.
15317 rp="Run $make depend now?"
15321 $make depend && echo "Now you must run a $make."
15324 echo "You must run '$make depend' then '$make'."
15327 elif test -f [Mm]akefile; then
15329 echo "Now you must run a $make."
15334 if $test -f Policy.sh; then
15337 If you compile $package on a different machine or from a different object
15338 directory, copy the Policy.sh file from this object directory to the
15339 new one before you run Configure -- this will help you with most of
15340 the policy defaults.
15344 if $test -f config.msg; then
15345 echo "Hmm. I also noted the following information while running:"
15347 $cat config.msg >&4
15350 $rm -f kit*isdone ark*isdone