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:05:32 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`; $test -f "$xxx"; then
3701 if $test "X$ignore_versioned_solibs" = "X"; then
3706 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3708 elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3710 elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3712 elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3714 libname=${thislib}_s
3715 elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3718 if $test -f "$xxx"; then
3721 if $test -f "$xxx"; then
3723 shared) echo "Found -l$libname (shared)." ;;
3724 static) echo "Found -l$libname." ;;
3725 *) echo "Found -l$libname ($libstyle)." ;;
3729 *) dflt="$dflt -l$libname"
3730 libsfound="$libsfound $xxx"
3732 libsfiles="$libsfiles $yyy"
3733 yyy=`echo $xxx|sed "s@/$yyy\\$@@"`
3734 case " $libsdirs " in
3736 *) libsdirs="$libsdirs $yyy" ;;
3741 echo "No -l$thislib."
3752 ' '|'') dflt='none';;
3757 In order to compile $package on your machine, a number of libraries
3758 are usually needed. Include any other special libraries here as well.
3759 Say "none" for none. The default list is almost always right.
3763 rp="What libraries to use?"
3770 : determine optimization, if desired, or use for debug flag also
3772 ' '|$undef) dflt='none';;
3774 *) dflt="$optimize";;
3778 By default, $package compiles with the -O flag to use the optimizer.
3779 Alternately, you might want to use the symbolic debugger, which uses
3780 the -g flag (on traditional Unix systems). Either flag can be
3781 specified here. To use neither flag, specify the word "none".
3784 rp="What optimizer/debugger flag should be used?"
3788 'none') optimize=" ";;
3792 : We will not override a previous value, but we might want to
3793 : augment a hint file
3795 default|recommended)
3796 case "$gccversion" in
3797 1*) dflt='-fpcc-struct-return' ;;
3800 *-g*) dflt="$dflt -DDEBUGGING";;
3802 case "$gccversion" in
3803 2*) if test -d /etc/conf/kconfig.d &&
3804 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3810 case "$gccversion" in
3814 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3815 echo 'int main(void) { return 0; }' > gcctest.c
3816 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3817 echo "Yes, it does." 2>&1
3820 echo "Leaving current flags $ccflags alone." 2>&1
3822 *) dflt="$dflt -fno-strict-aliasing" ;;
3825 echo "Nope, it doesn't, but that's ok." 2>&1
3832 case "$mips_type" in
3833 *BSD*|'') inclwanted="$locincpth $usrinc";;
3834 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3836 for thisincl in $inclwanted; do
3837 if $test -d $thisincl; then
3838 if $test x$thisincl != x$usrinc; then
3841 *) dflt="$dflt -I$thisincl";;
3847 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3849 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3857 *) dflt="$dflt -D$2";;
3861 set signal.h LANGUAGE_C; eval $inctest
3865 ccflags="$ccflags -DSOCKS"
3870 default|recommended) dflt="$ccflags $dflt" ;;
3871 *) dflt="$ccflags";;
3879 Your C compiler may want other flags. For this question you should include
3880 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3881 but you should NOT include libraries or ld flags like -lwhatever. If you
3882 want $package to honor its debug switch, you should include -DDEBUGGING here.
3883 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3885 To use no flags, specify the word "none".
3891 rp="Any additional cc flags?"
3898 : the following weeds options from ccflags that are of no interest to cpp
3900 case "$gccversion" in
3901 1*) cppflags="$cppflags -D__GNUC__"
3903 case "$mips_type" in
3905 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3911 echo "Let me guess what the preprocessor flags are..." >&4
3925 *) ftry="$previous $flag";;
3927 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3928 >cpp1.out 2>/dev/null && \
3929 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3930 >cpp2.out 2>/dev/null && \
3931 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3932 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3934 cppflags="$cppflags $ftry"
3944 *-*) echo "They appear to be: $cppflags";;
3946 $rm -f cpp.c cpp?.out
3950 : flags used in final linking phase
3952 '') if ./venix; then
3958 *-posix*) dflt="$dflt -posix" ;;
3961 *) dflt="$ldflags";;
3964 : Try to guess additional flags to pick up local libraries.
3965 for thislibdir in $libpth; do
3966 case " $loclibpth " in
3969 *"-L$thislibdir "*) ;;
3970 *) dflt="$dflt -L$thislibdir" ;;
3982 Your C linker may need flags. For this question you should
3983 include -L/whatever and any other flags used by the C linker, but you
3984 should NOT include libraries like -lwhatever.
3986 Make sure you include the appropriate -L/path flags if your C linker
3987 does not normally search all of the directories you specified above,
3990 To use no flags, specify the word "none".
3994 rp="Any additional ld flags (NOT including libraries)?"
4000 rmlist="$rmlist pdp11"
4004 echo "Checking your choice of C compiler and flags for coherency..." >&4
4005 $cat > try.c <<'EOF'
4007 int main() { printf("Ok\n"); exit(0); }
4009 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4011 $cat >try.msg <<'EOM'
4012 I've tried to compile and run the following simple program:
4015 $cat try.c >> try.msg
4017 $cat >> try.msg <<EOM
4024 and I got the following output:
4028 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4029 if sh -c './try' >>try.msg 2>&1; then
4033 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4036 cat >> try.msg <<'EOQS'
4037 If $libs contains -lsfio, and sfio is mis-configured, then it
4038 sometimes (apparently) runs and exits with a 0 status, but with no
4039 output! It may have to do with sfio's use of _exit vs. exit.
4042 rp="You have a big problem. Shall I abort Configure"
4049 echo "The program compiled OK, but exited with status $?." >>try.msg
4050 rp="You have a problem. Shall I abort Configure"
4054 echo "I can't compile the test program." >>try.msg
4055 rp="You have a BIG problem. Shall I abort Configure"
4061 case "$knowitall" in
4063 echo "(The supplied flags or libraries might be incorrect.)"
4071 *) echo "Ok. Stopping Configure." >&4
4076 n) echo "OK, that should do.";;
4078 $rm -f try try.* core
4080 : define an is-a-typedef? function
4081 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4083 "") inclist="sys/types.h";;
4085 eval "varval=\$$var";
4089 for inc in $inclist; do
4090 echo "#include <$inc>" >>temp.c;
4092 echo "#ifdef $type" >> temp.c;
4093 echo "printf(\"We have $type\");" >> temp.c;
4094 echo "#endif" >> temp.c;
4095 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4096 if $contains $type temp.E >/dev/null 2>&1; then
4102 *) eval "$var=\$varval";;
4105 : define an is-a-typedef? function that prompts if the type is not available.
4106 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4108 "") inclist="sys/types.h";;
4110 eval "varval=\$$var";
4114 for inc in $inclist; do
4115 echo "#include <$inc>" >>temp.c;
4117 echo "#ifdef $type" >> temp.c;
4118 echo "printf(\"We have $type\");" >> temp.c;
4119 echo "#endif" >> temp.c;
4120 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4122 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4123 if $contains $type temp.E >/dev/null 2>&1; then
4124 echo "$type found." >&4;
4127 echo "$type NOT found." >&4;
4133 *) eval "$var=\$varval";;
4136 : define a shorthand compile call
4140 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4141 : define a shorthand compile call for compilations that should be ok.
4145 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4147 : check for lengths of integral types
4151 echo "Checking to see how big your integers are..." >&4
4152 $cat >intsize.c <<'EOCP'
4156 printf("intsize=%d;\n", (int)sizeof(int));
4157 printf("longsize=%d;\n", (int)sizeof(long));
4158 printf("shortsize=%d;\n", (int)sizeof(short));
4163 if eval $compile_ok && ./intsize > /dev/null; then
4165 echo "Your integers are $intsize bytes long."
4166 echo "Your long integers are $longsize bytes long."
4167 echo "Your short integers are $shortsize bytes long."
4171 Help! I can't compile and run the intsize test program: please enlighten me!
4172 (This is probably a misconfiguration in your system or libraries, and
4173 you really ought to fix it. Still, I'll try anyway.)
4177 rp="What is the size of an integer (in bytes)?"
4181 rp="What is the size of a long integer (in bytes)?"
4185 rp="What is the size of a short integer (in bytes)?"
4191 $rm -f intsize intsize.*
4193 : see what type lseek is declared as in the kernel
4194 rp="What is the type used for lseek's offset on this system?"
4195 set off_t lseektype long stdio.h sys/types.h
4199 $echo $n "Checking to see how big your file offsets are...$c" >&4
4201 #include <sys/types.h>
4205 printf("%d\n", (int)sizeof($lseektype));
4210 if eval $compile_ok; then
4212 $echo " $lseeksize bytes." >&4
4216 echo "(I can't seem to compile the test program. Guessing...)"
4217 rp="What is the size of your file offsets (in bytes)?"
4223 : see what type file positions are declared as in the library
4224 rp="What is the type for file position used by fsetpos()?"
4225 set fpos_t fpostype long stdio.h sys/types.h
4230 *_t) zzz="$fpostype" ;;
4233 $echo $n "Checking the size of $zzz...$c" >&4
4235 #include <sys/types.h>
4238 printf("%d\n", (int)sizeof($fpostype));
4243 if eval $compile_ok; then
4248 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4251 echo " $fpossize bytes."
4257 echo "(I can't compile the test program. Guessing...)" >&4
4258 rp="What is the size of your file positions (in bytes)?"
4265 case "$lseeksize:$fpossize" in
4268 You can have files larger than 2 gigabytes.
4273 Perl can be built to understand large files (files larger than 2 gigabytes)
4274 on some systems. To do so, Configure must be run with -Duselargefiles.
4276 If this doesn't make any sense to you, just accept the default 'y'.
4278 case "$uselargefiles" in
4279 "$undef"|false|[nN]*) dflt='n' ;;
4282 rp='Try to understand large files, if available?'
4285 y|Y) val="$define" ;;
4292 case "$uselargefiles" in
4294 : Look for a hint-file generated 'call-back-unit'. If the
4295 : user has specified that a large files perl is to be built,
4296 : we may need to set or change some other defaults.
4297 if $test -f uselfs.cbu; then
4298 echo "Your platform has some specific hints for large file builds, using them..."
4301 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4303 #include <sys/types.h>
4307 printf("%d\n", (int)sizeof($lseektype));
4312 if eval $compile_ok; then
4314 $echo " $lseeksize bytes." >&4
4318 echo "(I can't seem to compile the test program. Guessing...)"
4319 rp="What is the size of your file offsets (in bytes)?"
4324 *_t) zzz="$fpostype" ;;
4327 $echo $n "Rechecking the size of $zzz...$c" >&4
4329 #include <sys/types.h>
4332 printf("%d\n", (int)sizeof($fpostype));
4337 if eval $compile_ok; then
4342 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4345 echo " $fpossize bytes."
4351 echo "(I can't compile the test program. Guessing...)" >&4
4352 rp="What is the size of your file positions (in bytes)?"
4362 case "$usemorebits" in
4363 "$define"|true|[yY]*)
4365 uselongdouble="$define"
4366 usemorebits="$define"
4368 *) usemorebits="$undef"
4373 case "$intsize:$longsize" in
4376 You have natively 64-bit integers.
4381 Perl can be built to take advantage of 64-bit integer types
4382 on some systems. To do so, Configure must be run with -Duse64bits.
4384 If this doesn't make any sense to you, just accept the default.
4386 case "$use64bits" in
4387 $define|true|[yY]*) dflt='y';;
4390 rp='Try to use 64-bit integers, if available?'
4393 y|Y) val="$define" ;;
4401 case "$archname64" in
4402 '') archname64='' ;; # not a typo
4405 case "$use64bits" in
4406 "$define"|true|[yY]*)
4407 : Look for a hint-file generated 'call-back-unit'. If the
4408 : user has specified that a 64-bit perl is to be built,
4409 : we may need to set or change some other defaults.
4410 if $test -f use64bits.cbu; then
4411 echo "Your platform has some specific hints for 64-bit builds, using them..."
4415 (Your platform doesn't have any specific hints for 64-bit builds.)
4417 case "$intsize:$longsize" in
4419 (This is probably okay, as your system is a natively 64-bit system.)
4423 case "$gccversion" in
4425 *) case "$ccflags" in
4426 *-DUSE_LONG_LONG*) ;;
4428 But since you seem to be using gcc, I will now add -DUSE_LONG_LONG
4429 to the compilation flags.
4431 ccflags="$ccflags -DUSE_LONG_LONG"
4440 : determine the architecture name
4442 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4443 tarch=`arch`"-$osname"
4444 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4445 if uname -m > tmparch 2>&1 ; then
4446 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4447 -e 's/$/'"-$osname/" tmparch`
4455 case "$myarchname" in
4458 echo "(Your architecture name used to be $myarchname.)"
4465 *) dflt="$archname";;
4467 rp='What is your architecture name'
4470 case "$usethreads" in
4472 echo "Threads selected." >&4
4474 *-thread*) echo "...and architecture name already has -thread." >&4
4476 *) archname="$archname-thread"
4477 echo "...setting architecture name to $archname." >&4
4482 case "$usemultiplicity" in
4484 echo "Multiplicity selected." >&4
4486 *-multi*) echo "...and architecture name already has -multi." >&4
4488 *) archname="$archname-multi"
4489 echo "...setting architecture name to $archname." >&4
4494 case "$use64bits" in
4496 case "$archname64" in
4501 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4503 *) archname="$archname-$archname64"
4504 echo "...setting architecture name to $archname." >&4
4511 : determine root of directory hierarchy where package will be installed.
4514 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4522 By default, $package will be installed in $dflt/bin, manual pages
4523 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4524 installation directories. Typically this is something like /usr/local.
4525 If you wish to have binaries under /usr/bin but other parts of the
4526 installation under /usr/local, that's ok: you will be prompted
4527 separately for each of the installation directories, the prefix being
4528 only used to set the defaults.
4532 rp='Installation prefix to use?'
4540 *) oldprefix="$prefix";;
4550 $define|true) afs=true ;;
4551 $undef|false) afs=false ;;
4552 *) if test -d /afs; then
4560 echo "AFS may be running... I'll be extra cautious then..." >&4
4562 echo "AFS does not seem to be running..." >&4
4565 : determine installation prefix for where package is to be installed.
4569 Since you are running AFS, I need to distinguish the directory in which
4570 files will reside from the directory in which they are installed (and from
4571 which they are presumably copied to the former directory by occult means).
4574 case "$installprefix" in
4575 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4576 *) dflt="$installprefix";;
4581 In some special cases, particularly when building $package for distribution,
4582 it is convenient to distinguish between the directory in which files should
4583 be installed from the directory ($prefix) in which they
4584 will eventually reside. For most users, these two directories are the same.
4587 case "$installprefix" in
4589 *) dflt=$installprefix;;
4593 rp='What installation prefix should I use for installing files?'
4595 installprefix="$ans"
4596 installprefixexp="$ansexp"
4598 : set the prefixit variable, to compute a suitable default value
4599 prefixit='case "$3" in
4601 case "$oldprefix" in
4602 "") eval "$1=\"\$$2\"";;
4609 ""|" ") eval "$1=\"\$$2\"";;
4615 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4617 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4618 /*-$oldprefix/*|\~*-$oldprefix/*)
4619 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4620 *) eval "$1=\"\$$2\"";;
4624 : set the base revision
4628 : get the patchlevel
4630 echo "Getting the current patchlevel..." >&4
4631 if $test -r $rsrc/patchlevel.h;then
4632 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4633 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4634 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4635 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4636 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4644 $echo $n "(You have $package" $c
4647 *) $echo $n " $baserev" $c ;;
4649 $echo $n " patchlevel $patchlevel" $c
4650 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4654 : XXX Should be a Configure test for double-dots in filenames.
4655 version=`echo $baserev $patchlevel $subversion | \
4656 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4657 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4658 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4661 version=`echo $baserev $patchlevel $subversion | \
4662 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4663 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4664 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4667 : Special case the 5.005_xx maintenance series, which used 5.005
4668 : without any subversion label as a subdirectory in $sitelib
4669 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4670 api_versionstring='5.005'
4673 : determine installation style
4674 : For now, try to deduce it from prefix unless it is already set.
4675 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4676 case "$installstyle" in
4677 '') case "$prefix" in
4678 *perl*) dflt='lib';;
4679 *) dflt='lib/perl5' ;;
4682 *) dflt='lib/perl5' ;;
4684 : Probably not worth prompting for this since we prompt for all
4685 : the directories individually, and the prompt would be too long and
4689 : determine where private library files go
4690 : Usual default is /usr/local/lib/perl5/$version.
4691 : Also allow things like /opt/perl/lib/$version, since
4692 : /opt/perl/lib/perl5... would be redundant.
4693 : The default "style" setting is made in installstyle.U
4694 case "$installstyle" in
4695 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4696 *) set dflt privlib lib/$version ;;
4701 There are some auxiliary files for $package that need to be put into a
4702 private library directory that is accessible by everyone.
4706 rp='Pathname where the private library files will reside?'
4709 privlibexp="$ansexp"
4710 : Change installation prefix, if necessary.
4711 if $test X"$prefix" != X"$installprefix"; then
4712 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4714 installprivlib="$privlibexp"
4717 : set the prefixup variable, to restore leading tilda escape
4718 prefixup='case "$prefixexp" in
4720 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4723 : determine where public architecture dependent libraries go
4726 : privlib default is /usr/local/lib/$package/$version
4727 : archlib default is /usr/local/lib/$package/$version/$archname
4728 : privlib may have an optional trailing /share.
4729 tdflt=`echo $privlib | $sed 's,/share$,,'`
4730 tdflt=$tdflt/$archname
4739 $spackage contains architecture-dependent library files. If you are
4740 sharing libraries in a heterogeneous environment, you might store
4741 these files in a separate location. Otherwise, you can just include
4742 them with the rest of the public library files.
4746 rp='Where do you want to put the public architecture-dependent libraries?'
4749 archlibexp="$ansexp"
4750 if $test X"$archlib" = X"$privlib"; then
4755 : Change installation prefix, if necessary.
4756 if $test X"$prefix" != X"$installprefix"; then
4757 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4759 installarchlib="$archlibexp"
4763 : Binary compatibility with 5.005 is not possible for builds
4764 : with advanced features
4765 case "$usethreads$usemultiplicity" in
4767 bincompat5005="$undef"
4768 d_bincompat5005="$undef"
4772 Perl 5.006 can be compiled for binary compatibility with 5.005.
4773 If you decide to do so, you will be able to continue using most
4774 of the extensions that were compiled for Perl 5.005.
4777 case "$bincompat5005$d_bincompat5005" in
4778 *"$undef"*) dflt=n ;;
4781 rp='Binary compatibility with Perl 5.005?'
4784 y*) val="$define" ;;
4789 case "$d_bincompat5005" in
4791 bincompat5005="$define"
4793 *) bincompat5005="$undef"
4794 d_bincompat5005="$undef"
4801 : see if setuid scripts can be secure
4804 Some kernels have a bug that prevents setuid #! scripts from being
4805 secure. Some sites have disabled setuid #! scripts because of this.
4807 First let's decide if your kernel supports secure setuid #! scripts.
4808 (If setuid #! scripts would be secure but have been disabled anyway,
4809 don't say that they are secure if asked.)
4814 if $test -d /dev/fd; then
4815 echo "#!$ls" >reflect
4816 chmod +x,u+s reflect
4817 ./reflect >flect 2>&1
4818 if $contains "/dev/fd" flect >/dev/null; then
4819 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4823 If you are not sure if they are secure, I can check but I'll need a
4824 username and password different from the one you are using right now.
4825 If you don't have such a username or don't want me to test, simply
4829 rp='Other username to test security of setuid scripts with?'
4834 case "$d_suidsafe" in
4835 '') echo "I'll assume setuid scripts are *not* secure." >&4
4838 echo "Well, the $hint value is *not* secure." >&4
4840 *) echo "Well, the $hint value *is* secure." >&4
4845 $rm -f reflect flect
4846 echo "#!$ls" >reflect
4847 chmod +x,u+s reflect
4850 echo '"su" will (probably) prompt you for '"$ans's password."
4851 su $ans -c './reflect >flect'
4852 if $contains "/dev/fd" flect >/dev/null; then
4853 echo "Okay, it looks like setuid scripts are secure." >&4
4856 echo "I don't think setuid scripts are secure." >&4
4861 rp='Does your kernel have *secure* setuid scripts?'
4864 [yY]*) val="$define";;
4869 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4870 echo "(That's for file descriptors, not floppy disks.)"
4876 $rm -f reflect flect
4878 : now see if they want to do setuid emulation
4881 case "$d_suidsafe" in
4884 echo "No need to emulate SUID scripts since they are secure here." >& 4
4888 Some systems have disabled setuid scripts, especially systems where
4889 setuid scripts cannot be secure. On systems where setuid scripts have
4890 been disabled, the setuid/setgid bits on scripts are currently
4891 useless. It is possible for $package to detect those bits and emulate
4892 setuid/setgid in a secure fashion. This emulation will only work if
4893 setuid scripts have been disabled in your kernel.
4897 "$define") dflt=y ;;
4900 rp="Do you want to do setuid/setgid emulation?"
4903 [yY]*) val="$define";;
4911 : determine filename position in cpp output
4913 echo "Computing filename position in cpp output for #include directives..." >&4
4914 echo '#include <stdio.h>' > foo.c
4917 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4918 $grep '^[ ]*#.*stdio\.h' | \
4919 while read cline; do
4922 while $test \$# -gt 0; do
4923 if $test -r \`echo \$1 | $tr -d '"'\`; then
4928 pos=\`expr \$pos + 1\`
4940 *) pos="${fieldn}th";;
4942 echo "Your cpp writes the filename in the $pos field of the line."
4944 : locate header file
4949 for usrincdir in $usrinc
4951 if test -f \$usrincdir/\$wanted; then
4952 echo "\$usrincdir/\$wanted"
4956 awkprg='{ print \$$fieldn }'
4957 echo "#include <\$wanted>" > foo\$\$.c
4958 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4959 $grep "^[ ]*#.*\$wanted" | \
4960 while read cline; do
4961 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4963 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4964 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4969 # status = 0: grep returned 0 lines, case statement not executed
4970 # status = 1: headerfile found
4971 # status = 2: while loop executed, no headerfile found
4975 if test \$status -eq 1; then
4982 : define an alternate in-header-list? function
4983 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4984 cont=true; xxf="echo \"<\$1> found.\" >&4";
4985 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4986 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4988 case $# in 4) instead=instead;; *) instead="at last";; esac;
4989 while $test "$cont"; do
4991 var=$2; eval "was=\$$2";
4992 if $test "$xxx" && $test -r "$xxx";
4994 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4997 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4998 set $yyy; shift; shift; yyy=$@;
4999 case $# in 0) cont="";;
5000 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5001 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5002 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5003 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5007 do set $yyy; var=$2; eval "was=\$$2";
5008 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5009 set $yyy; shift; shift; yyy=$@;
5012 : see if this is a malloc.h system
5013 set malloc.h i_malloc
5016 : see if stdlib is available
5017 set stdlib.h i_stdlib
5020 : determine which malloc to compile in
5022 case "$usemymalloc" in
5023 ''|[yY]*|true|$define) dflt='y' ;;
5026 rp="Do you wish to attempt to use the malloc that comes with $package?"
5032 mallocsrc='malloc.c'
5033 mallocobj="malloc$_o"
5034 d_mymalloc="$define"
5037 : Remove malloc from list of libraries to use
5038 echo "Removing unneeded -lmalloc from library list" >&4
5039 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5042 echo "libs = $libs" >&4
5054 : compute the return types of malloc and free
5056 $cat >malloc.c <<END
5060 #include <sys/types.h>
5074 case "$malloctype" in
5076 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5083 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5087 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5094 echo "Your system uses $freetype free(), it would seem." >&4
5098 The installation process will also create a directory for
5099 vendor-supplied add-ons. Vendors who supply perl with their system
5100 may find it convenient to place all vendor-supplied files in this
5101 directory rather than in the main distribution directory. This will
5102 ease upgrades between binary-compatible maintenance versions of perl.
5104 Of course you may also use these directories in whatever way you see
5105 fit. For example, you might use them to access modules shared over a
5106 company-wide network.
5108 The default answer should be fine for most people.
5109 This causes further questions about vendor add-ons to be skipped
5110 and no vendor-specific directories will be configured for perl.
5113 rp='Do you want to configure vendor-specific add-on directories?'
5114 case "$usevendorprefix" in
5115 define|true|[yY]*) dflt=y ;;
5121 rp='Installation prefix to use for vendor-supplied add-ons?'
5122 case "$vendorprefix" in
5124 *) dflt=$vendorprefix ;;
5128 case "$vendorprefix" in
5132 *) oldvendorprefix="$prefix";;
5136 usevendorprefix="$define"
5138 vendorprefixexp="$ansexp"
5140 *) usevendorprefix="$undef"
5146 case "$vendorprefix" in
5147 '') d_vendorlib="$undef"
5151 *) d_vendorlib="$define"
5152 : determine where vendor-supplied modules go.
5153 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5154 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5155 case "$installstyle" in
5156 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5157 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5160 rp='Pathname for the vendor-supplied library files?'
5163 vendorlibexp="$ansexp"
5164 : Change installation prefix, if necessary.
5165 if $test X"$prefix" != X"$installprefix"; then
5166 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5168 installvendorlib="$vendorlibexp"
5173 : Cruising for prototypes
5175 echo "Checking out function prototypes..." >&4
5176 $cat >prototype.c <<'EOCP'
5177 int main(int argc, char *argv[]) {
5180 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5181 echo "Your C compiler appears to support function prototypes."
5184 echo "Your C compiler doesn't seem to understand function prototypes."
5191 case "$prototype" in
5193 *) ansi2knr='ansi2knr'
5198 This version of $package can only be compiled by a compiler that
5199 understands function prototypes. Unfortunately, your C compiler
5201 doesn't seem to understand them. Sorry about that.
5203 If GNU cc is available for your system, perhaps you could try that instead.
5205 Eventually, we hope to support building Perl with pre-ANSI compilers.
5206 If you would like to help in that effort, please contact <perlbug@perl.org>.
5208 Aborting Configure now.
5214 : determine where public executables go
5219 rp='Pathname where the public executables will reside?'
5221 if $test "X$ansexp" != "X$binexp"; then
5226 : Change installation prefix, if necessary.
5227 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5228 if $test X"$prefix" != X"$installprefix"; then
5229 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5231 installbin="$binexp"
5236 After $package is installed, you may wish to install various
5237 add-on modules and utilities. Typically, these add-ons will
5238 be installed under $prefix with the rest
5239 of this package. However, you may wish to install such add-ons
5240 elsewhere under a different prefix.
5242 If you do not wish to put everything under a single prefix, that's
5243 ok. You will be prompted for the individual locations; this siteprefix
5244 is only used to suggest the defaults.
5246 The default should be fine for most people.
5250 rp='Installation prefix to use for add-on modules and utilities?'
5251 : XXX Here might be another good place for an installstyle setting.
5252 case "$siteprefix" in
5254 *) dflt=$siteprefix ;;
5258 case "$siteprefix" in
5263 *) oldsiteprefix="$prefix";;
5268 siteprefixexp="$ansexp"
5270 : determine where site specific libraries go.
5271 : Usual default is /usr/local/lib/perl5/site_perl/$version
5272 : The default "style" setting is made in installstyle.U
5273 : XXX No longer works with Prefixit stuff.
5274 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5275 case "$installstyle" in
5276 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5277 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5281 The installation process will create a directory for
5282 site-specific extensions and modules. Most users find it convenient
5283 to place all site-specific files in this directory rather than in the
5284 main distribution directory.
5288 rp='Pathname for the site-specific library files?'
5291 sitelibexp="$ansexp"
5292 : Change installation prefix, if necessary.
5293 if $test X"$prefix" != X"$installprefix"; then
5294 installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5296 installsitelib="$sitelibexp"
5299 : Determine list of previous versions to include in @INC
5300 $cat > getverlist <<EOPL
5303 \$api_versionstring = "$api_versionstring";
5304 \$version = "$version";
5305 \$sitelib = "$sitelib";
5306 \$archname = "$archname";
5308 $cat >> getverlist <<'EOPL'
5309 # Can't have leading @ because metaconfig interprets it as a command!
5310 ;@inc_version_list=();
5311 $stem=dirname($sitelib);
5312 # Redo to do opendir/readdir?
5315 ;@candidates = glob("5.*");
5321 # XXX ToDo: These comparisons must be reworked when two-digit
5322 # subversions come along, so that 5.7.10 compares as greater than
5323 # 5.7.3! By that time, hope that 5.6.x is sufficiently
5324 # widespread that we can use the built-in version vectors rather
5325 # than reinventing them here. For 5.6.0, however, we must
5326 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
5327 foreach $d (@candidates) {
5328 if ($d lt $version) {
5329 if ($d ge $api_versionstring) {
5330 unshift(@inc_version_list, "$d/$archname", $d);
5332 elsif ($d ge "5.005") {
5333 unshift(@inc_version_list, $d);
5337 # Skip newer version. I.e. don't look in
5338 # 5.7.0 if we're installing 5.6.1.
5342 if (@inc_version_list) {
5343 print join(' ', @inc_version_list);
5346 # Blank space to preserve value for next Configure run.
5351 case "$inc_version_list" in
5352 '') if test -x $perl; then
5353 dflt=`$perl getverlist`
5358 $undef) dflt='none' ;;
5359 *) dflt="$inc_version_list" ;;
5363 In order to ease the process of upgrading, this version of perl
5364 can be configured to use modules built and installed with earlier
5365 versions of perl that were installed under $prefix. Specify here
5366 the list of earlier versions that this version of perl should check.
5367 If Configure detected no earlier versions of perl installed under
5368 $prefix, then the list will be empty. Answer 'none' to tell perl
5369 to not search earlier versions.
5371 The default should almost always be sensible, so if you're not sure,
5372 just accept the default.
5375 rp='List of earlier versions to include in @INC?'
5378 [Nn]one) inc_version_list=' ' ;;
5379 *) inc_version_list="$ans" ;;
5381 case "$inc_version_list" in
5383 inc_version_list_init='""';;
5384 *) inc_version_list_init=`echo $inc_version_list |
5385 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/"/'`
5390 : determine whether to install perl also as /usr/bin/perl
5393 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5395 Many scripts expect to perl to be installed as /usr/bin/perl.
5396 I can install the perl you are about to compile also as /usr/bin/perl
5397 (in addition to $installbin/perl).
5399 case "$installusrbinperl" in
5400 "$undef"|[nN]*) dflt='n';;
5403 rp="Do you want to install perl as /usr/bin/perl?"
5406 [yY]*) val="$define";;
5412 set installusrbinperl
5416 echo "Checking for GNU C Library..." >&4
5417 cat >gnulibc.c <<EOM
5429 if eval $compile_ok && ./gnulibc; then
5431 echo "You are using the GNU C Library"
5434 echo "You are not using the GNU C Library"
5440 : see if nm is to be used to determine whether a symbol is defined or not
5444 case "$d_gnulibc" in
5447 echo "nm probably won't work on the GNU C Library." >&4
5453 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5455 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5456 echo "'nm' won't be sufficient on this sytem." >&4
5462 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5463 if $test $dflt -gt 20; then
5473 true|$define) dflt=y;;
5480 I can use $nm to extract the symbols from your C libraries. This
5481 is a time consuming task which may generate huge output on the disk (up
5482 to 3 megabytes) but that should make the symbols extraction faster. The
5483 alternative is to skip the 'nm' extraction part and to compile a small
5484 test program instead to determine whether each symbol is present. If
5485 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5486 this may be the best solution.
5488 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5491 rp="Shall I use $nm to extract C symbols from the libraries?"
5494 [Nn]*) usenm=false;;
5503 : nm options which may be necessary
5505 '') if $test -f /mach_boot; then
5507 elif $test -d /usr/ccs/lib; then
5508 nm_opt='-p' # Solaris (and SunOS?)
5509 elif $test -f /dgux; then
5511 elif $test -f /lib64/rld; then
5512 nm_opt='-p' # 64-bit Irix
5518 : nm options which may be necessary for shared libraries but illegal
5519 : for archive libraries. Thank you, Linux.
5520 case "$nm_so_opt" in
5521 '') case "$myuname" in
5523 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5524 nm_so_opt='--dynamic'
5533 : get list of predefined functions in a handy place
5538 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5545 *) for thislib in $libs; do
5548 : Handle C library specially below.
5551 thislib=`echo $thislib | $sed -e 's/^-l//'`
5552 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5554 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5556 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5558 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5560 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5562 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5564 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5569 libnames="$libnames $try"
5571 *) libnames="$libnames $thislib" ;;
5580 for xxx in $libpth; do
5581 $test -r $1 || set $xxx/libc.$so
5582 : The messy sed command sorts on library version numbers.
5584 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5585 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5587 s/[0-9][0-9]*/0000&/g
5588 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5591 sort | $sed -e 's/^.* //'`
5594 $test -r $1 || set /usr/ccs/lib/libc.$so
5595 $test -r $1 || set /lib/libsys_s$_a
5601 if $test -r "$1"; then
5602 echo "Your (shared) C library seems to be in $1."
5604 elif $test -r /lib/libc && $test -r /lib/clib; then
5605 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5607 libc='/lib/clib /lib/libc'
5608 if $test -r /lib/syslib; then
5609 echo "(Your math library is in /lib/syslib.)"
5610 libc="$libc /lib/syslib"
5612 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5613 echo "Your C library seems to be in $libc, as you said before."
5614 elif $test -r $incpath/usr/lib/libc$_a; then
5615 libc=$incpath/usr/lib/libc$_a;
5616 echo "Your C library seems to be in $libc. That's fine."
5617 elif $test -r /lib/libc$_a; then
5619 echo "Your C library seems to be in $libc. You're normal."
5621 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5623 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5624 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5625 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5627 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5629 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5632 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5634 if $test -r "$tans"; then
5635 echo "Your C library seems to be in $tans, of all places."
5641 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5645 If the guess above is wrong (which it might be if you're using a strange
5646 compiler, or your machine supports multiple models), you can override it here.
5651 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5653 I can't seem to find your C library. I've looked in the following places:
5656 $sed 's/^/ /' libpath
5659 None of these seems to contain your C library. I need to get its name...
5664 rp='Where is your C library?'
5669 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5670 set X `cat libnames`
5673 case $# in 1) xxx=file; esac
5674 echo "Extracting names from the following $xxx for later perusal:" >&4
5676 $sed 's/^/ /' libnames >&4
5678 $echo $n "This may take a while...$c" >&4
5682 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5683 *) $nm $nm_opt $file 2>/dev/null;;
5688 $grep fprintf libc.tmp > libc.ptf
5689 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5690 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5692 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5694 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5696 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5698 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5700 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5702 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5704 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5706 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5708 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5710 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5712 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5714 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5716 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5717 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5719 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5721 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5723 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5725 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5727 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5729 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5731 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5733 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5735 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5737 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5739 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5741 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5743 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5745 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5747 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5750 $nm -p $* 2>/dev/null >libc.tmp
5751 $grep fprintf libc.tmp > libc.ptf
5752 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5753 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5759 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5761 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5762 for thisname in $libnames $libc; do
5763 $ar t $thisname >>libc.tmp
5765 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5767 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5768 # Repeat libc to extract forwarders to DLL entries too
5769 for thisname in $libnames $libc; do
5770 $ar tv $thisname >>libc.tmp
5771 # Revision 50 of EMX has bug in $ar.
5772 # it will not extract forwarders to DLL entries
5773 # Use emximp which will extract exactly them.
5774 emximp -o tmp.imp $thisname \
5776 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5777 < tmp.imp >>libc.tmp
5780 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5783 echo "$ar didn't seem to work right." >&4
5784 echo "Maybe this is a Cray...trying bld instead..." >&4
5785 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5787 for thisname in $libnames; do
5789 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5790 $ar t $thisname >>libc.tmp
5794 echo "That didn't work either. Giving up." >&4
5801 if $test -f /lib/syscalls.exp; then
5803 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5804 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5808 $rm -f libnames libpath
5810 : see if dld is available
5814 : is a C symbol defined?
5817 -v) tf=libc.tmp; tc=""; tdc="";;
5818 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5819 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5822 case "$reuseval-$4" in
5824 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5830 if $contains $tlook $tf >/dev/null 2>&1;
5835 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5836 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5844 $define) tval=true;;
5850 : define an is-in-libc? function
5851 inlibc='echo " "; td=$define; tu=$undef;
5852 sym=$1; var=$2; eval "was=\$$2";
5854 case "$reuseval$was" in
5864 echo "$sym() found." >&4;
5865 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5867 echo "$sym() NOT found." >&4;
5868 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5872 $define) echo "$sym() found." >&4;;
5873 *) echo "$sym() NOT found." >&4;;
5877 : see if dlopen exists
5884 : determine which dynamic loading, if any, to compile in
5886 dldir="ext/DynaLoader"
5899 $define) dflt='y' ;;
5902 $define) dflt='y' ;;
5904 : Does a dl_xxx.xs file exist for this operating system
5905 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5908 rp="Do you wish to use dynamic loading?"
5915 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5916 dflt="$dldir/dl_${osname}.xs"
5917 elif $test "$d_dlopen" = "$define" ; then
5918 dflt="$dldir/dl_dlopen.xs"
5919 elif $test "$i_dld" = "$define" ; then
5920 dflt="$dldir/dl_dld.xs"
5925 *) dflt="$dldir/$dlsrc"
5928 echo "The following dynamic loading files are available:"
5929 : Can not go over to $dldir because getfile has path hard-coded in.
5930 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5931 rp="Source file to use for dynamic loading"
5937 dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5941 Some systems may require passing special flags to $cc -c to
5942 compile modules that will be used to create a shared library.
5943 To use no flags, say "none".
5946 case "$cccdlflags" in
5947 '') case "$gccversion" in
5948 '') case "$osname" in
5950 next) dflt='none' ;;
5951 irix*) dflt='-KPIC' ;;
5952 svr4*|esix*|solaris) dflt='-KPIC' ;;
5953 sunos) dflt='-pic' ;;
5957 *) case "$osname" in
5958 svr4*|esix*|solaris) dflt='-fPIC' ;;
5963 *) dflt="$cccdlflags" ;;
5965 rp="Any special flags to pass to $cc -c to compile shared library modules?"
5968 none) cccdlflags=' ' ;;
5969 *) cccdlflags="$ans" ;;
5974 Some systems use ld to create libraries that can be dynamically loaded,
5975 while other systems (such as those using ELF) use $cc.
5979 '') $cat >try.c <<'EOM'
5980 /* Test for whether ELF binaries are produced */
5985 int i = open("a.out",O_RDONLY);
5988 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5989 exit(0); /* succeed (yes, it's ELF) */
5994 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5996 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6000 echo "I'll use ld to build dynamic libraries."
6009 rp="What command should be used to create dynamic libraries?"
6015 Some systems may require passing special flags to $ld to create a
6016 library that can be dynamically loaded. If your ld flags include
6017 -L/other/path options to locate libraries outside your loader's normal
6018 search path, you may need to specify those -L options here as well. To
6019 use no flags, say "none".
6022 case "$lddlflags" in
6023 '') case "$osname" in
6024 beos) dflt='-nostart' ;;
6026 linux|irix*) dflt='-shared' ;;
6027 next) dflt='none' ;;
6028 solaris) dflt='-G' ;;
6029 sunos) dflt='-assert nodefinitions' ;;
6030 svr4*|esix*) dflt="-G $ldflags" ;;
6034 *) dflt="$lddlflags" ;;
6037 : Try to guess additional flags to pick up local libraries.
6038 : Be careful not to append to a plain 'none'
6042 for thisflag in $ldflags; do
6047 *) dflt="$dflt $thisflag" ;;
6054 ''|' ') dflt='none' ;;
6057 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6060 none) lddlflags=' ' ;;
6061 *) lddlflags="$ans" ;;
6066 Some systems may require passing special flags to $cc to indicate that
6067 the resulting executable will use dynamic linking. To use no flags,
6071 case "$ccdlflags" in
6072 '') case "$osname" in
6073 hpux) dflt='-Wl,-E' ;;
6074 linux) dflt='-rdynamic' ;;
6075 next) dflt='none' ;;
6076 sunos) dflt='none' ;;
6080 *) dflt="$ccdlflags" ;;
6082 rp="Any special flags to pass to $cc to use dynamic linking?"
6085 none) ccdlflags=' ' ;;
6086 *) ccdlflags="$ans" ;;
6100 # No dynamic loading being used, so don't bother even to prompt.
6103 *) case "$useshrplib" in
6104 '') case "$osname" in
6105 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6107 also='Building a shared libperl is required for dynamic loading to work on your system.'
6112 also='Building a shared libperl is needed for MAB support.'
6130 The perl executable is normally obtained by linking perlmain.c with
6131 libperl${_a}, any static extensions (usually just DynaLoader), and
6132 any other libraries needed on this system (such as -lm, etc.). Since
6133 your system supports dynamic loading, it is probably possible to build
6134 a shared libperl.$so. If you will have more than one executable linked
6135 to libperl.$so, this will significantly reduce the size of each
6136 executable, but it may have a noticeable affect on performance. The
6137 default is probably sensible for your system.
6141 rp="Build a shared libperl.$so (y/n)"
6145 useshrplib='true' ;;
6146 *) useshrplib='false' ;;
6151 case "$useshrplib" in
6155 # Figure out a good name for libperl.so. Since it gets stored in
6156 # a version-specific architecture-dependent library, the version
6157 # number isn't really that important, except for making cc/ld happy.
6159 # A name such as libperl.so.3.1
6160 majmin="libperl.$so.$patchlevel.$subversion"
6161 # A name such as libperl.so.301
6162 majonly=`echo $patchlevel $subversion |
6163 $awk '{printf "%d%02d", $1, $2}'`
6164 majonly=libperl.$so.$majonly
6165 # I'd prefer to keep the os-specific stuff here to a minimum, and
6166 # rely on figuring it out from the naming of libc.
6167 case "${osname}${osvers}" in
6170 # XXX How handle the --version stuff for MAB?
6172 linux*) # ld won't link with a bare -lperl otherwise.
6175 cygwin*) # include version
6176 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6178 *) # Try to guess based on whether libc has major.minor.
6180 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6181 *libc.$so.[0-9]*) dflt=$majonly ;;
6182 *) dflt=libperl.$so ;;
6192 I need to select a good name for the shared libperl. If your system uses
6193 library names with major and minor numbers, then you might want something
6194 like $majmin. Alternatively, if your system uses a single version
6195 number for shared libraries, then you might want to use $majonly.
6196 Or, your system might be quite happy with a simple libperl.$so.
6198 Since the shared libperl will get installed into a version-specific
6199 architecture-dependent directory, the version number of the shared perl
6200 library probably isn't important, so the default should be o.k.
6203 rp='What name do you want to give to the shared libperl?'
6206 echo "Ok, I'll use $libperl"
6209 libperl="libperl${_a}"
6213 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6217 WARNING: Use of the shrpdir variable for the installation location of
6218 the shared $libperl is not supported. It was never documented and
6219 will not work in this version. Let me (perlbug@perl.com)
6220 know of any problems this may cause.
6226 But your current setting of $shrpdir is
6227 the default anyway, so it's harmless.
6232 Further, your current attempted setting of $shrpdir
6233 conflicts with the value of $archlibexp/CORE
6234 that installperl will use.
6241 # How will the perl executable find the installed shared $libperl?
6242 # Add $xxx to ccdlflags.
6243 # If we can't figure out a command-line option, use $shrpenv to
6244 # set env LD_RUN_PATH. The main perl makefile uses this.
6245 shrpdir=$archlibexp/CORE
6248 if "$useshrplib"; then
6251 # We'll set it in Makefile.SH...
6257 xxx="-Wl,-R$shrpdir"
6259 linux|irix*|dec_osf)
6260 xxx="-Wl,-rpath,$shrpdir"
6263 # next doesn't like the default...
6266 # beos doesn't like the default, either.
6269 # hpux doesn't like the default, either.
6270 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6273 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6279 # Only add $xxx if it isn't already in ccdlflags.
6280 case " $ccdlflags " in
6282 *) ccdlflags="$ccdlflags $xxx"
6285 Adding $xxx to the flags
6286 passed to $ld so that the perl executable will find the
6287 installed shared $libperl.
6295 # Fix ccdlflags in AIX for building external extensions.
6296 # (For building Perl itself bare -bE:perl.exp is needed,
6297 # Makefile.SH takes care of this.)
6299 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6301 # Respect a hint or command-line value.
6303 '') shrpenv="$tmp_shrpenv" ;;
6305 case "$ldlibpthname" in
6306 '') ldlibpthname=LD_LIBRARY_PATH ;;
6307 none) ldlibpthname='' ;;
6310 : determine where manual pages go
6311 set man1dir man1dir none
6315 $spackage has manual pages available in source form.
6319 echo "However, you don't have nroff, so they're probably useless to you."
6321 '') man1dir="none";;
6324 echo "If you don't want the manual sources installed, answer 'none'."
6329 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6330 lookpath="$lookpath $prefixexp/man/p_man/man1"
6331 lookpath="$lookpath $prefixexp/man/u_man/man1"
6332 lookpath="$lookpath $prefixexp/man/man.1"
6334 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6335 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6345 rp="Where do the main $spackage manual pages (source) go?"
6347 if $test "X$man1direxp" != "X$ansexp"; then
6351 man1direxp="$ansexp"
6357 : Change installation prefix, if necessary.
6358 if $test X"$prefix" != X"$installprefix"; then
6359 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6361 installman1dir="$man1direxp"
6364 : What suffix to use on installed man pages
6371 rp="What suffix should be used for the main $spackage man pages?"
6373 '') case "$man1dir" in
6387 *) dflt="$man1ext";;
6394 : see if we can have long filenames
6396 rmlist="$rmlist /tmp/cf$$"
6397 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6398 first=123456789abcdef
6399 second=/tmp/cf$$/$first
6400 $rm -f $first $second
6401 if (echo hi >$first) 2>/dev/null; then
6402 if $test -f 123456789abcde; then
6403 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6406 if (echo hi >$second) 2>/dev/null; then
6407 if $test -f /tmp/cf$$/123456789abcde; then
6409 That's peculiar... You can have filenames longer than 14 characters, but only
6410 on some of the filesystems. Maybe you are using NFS. Anyway, to avoid problems
6411 I shall consider your system cannot support long filenames at all.
6415 echo 'You can have filenames longer than 14 characters.' >&4
6420 How confusing! Some of your filesystems are sane enough to allow filenames
6421 longer than 14 characters but some others like /tmp can't even think about them.
6422 So, for now on, I shall assume your kernel does not allow them at all.
6429 You can't have filenames longer than 14 chars. You can't even think about them!
6435 $rm -rf /tmp/cf$$ 123456789abcde*
6437 : determine where library module manual pages go
6438 set man3dir man3dir none
6442 $spackage has manual pages for many of the library modules.
6448 However, you don't have nroff, so they're probably useless to you.
6451 '') man3dir="none";;
6455 case "$d_flexfnam" in
6458 However, your system can't handle the long file names like File::Basename.3.
6461 '') man3dir="none";;
6465 echo "If you don't want the manual sources installed, answer 'none'."
6466 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6468 '') dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6469 if $test -d "$privlib/man/man3"; then
6472 WARNING: Previous versions of perl installed man3 pages into
6473 $privlib/man/man3. This version will suggest a
6474 new default of $dflt.
6478 rp='Do you wish to preserve the old behavior?(y/n)'
6481 y*) dflt="$privlib/man/man3" ;;
6487 *) dflt="$man3dir" ;;
6491 rp="Where do the $package library man pages (source) go?"
6494 man3direxp="$ansexp"
6500 : Change installation prefix, if necessary.
6501 if $test X"$prefix" != X"$installprefix"; then
6502 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6504 installman3dir="$man3direxp"
6507 : What suffix to use on installed man pages
6513 rp="What suffix should be used for the $package library man pages?"
6515 '') case "$man3dir" in
6529 *) dflt="$man3ext";;
6536 : see if we have to deal with yellow pages, now NIS.
6537 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6538 if $test -f /usr/etc/nibindd; then
6540 echo "I'm fairly confident you're on a NeXT."
6542 rp='Do you get the hosts file via NetInfo?'
6551 y*) hostcat='nidump hosts .';;
6552 *) case "$hostcat" in
6553 nidump*) hostcat='';;
6563 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6571 rp='Are you getting the hosts file via yellow pages?'
6574 y*) hostcat='ypcat hosts';;
6575 *) hostcat='cat /etc/hosts';;
6581 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6584 '') test -f /etc/group && groupcat='cat /etc/group';;
6587 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6590 : now get the host name
6592 echo "Figuring out host name..." >&4
6593 case "$myhostname" in
6595 echo 'Maybe "hostname" will work...'
6596 if tans=`sh -c hostname 2>&1` ; then
6604 if $test "$cont"; then
6606 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6607 if tans=`cat /etc/systemid 2>&1` ; then
6609 phostname='cat /etc/systemid'
6610 echo "Whadyaknow. Xenix always was a bit strange..."
6613 elif $test -r /etc/systemid; then
6614 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6617 if $test "$cont"; then
6618 echo 'No, maybe "uuname -l" will work...'
6619 if tans=`sh -c 'uuname -l' 2>&1` ; then
6621 phostname='uuname -l'
6623 echo 'Strange. Maybe "uname -n" will work...'
6624 if tans=`sh -c 'uname -n' 2>&1` ; then
6626 phostname='uname -n'
6628 echo 'Oh well, maybe I can mine it out of whoami.h...'
6629 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6630 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6631 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6633 case "$myhostname" in
6634 '') echo "Does this machine have an identity crisis or something?"
6637 echo "Well, you said $myhostname before..."
6638 phostname='echo $myhostname';;
6644 : you do not want to know about this
6649 if $test "$myhostname" ; then
6651 rp='Your host name appears to be "'$myhostname'".'" Right?"
6659 : bad guess or no guess
6660 while $test "X$myhostname" = X ; do
6662 rp="Please type the (one word) name of your host:"
6667 : translate upper to lower if necessary
6668 case "$myhostname" in
6670 echo "(Normalizing case in your host name)"
6671 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6675 case "$myhostname" in
6677 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6678 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6679 echo "(Trimming domain name from host name--host name is now $myhostname)"
6681 *) case "$mydomain" in
6684 test "X$hostcat" = "Xypcat hosts" &&
6685 ypmatch "$myhostname" hosts 2>/dev/null |\
6686 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
6689 test "X$hostcat" != "X" &&
6690 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
6691 /[ ]$myhostname[ . ]/p" > hosts
6694 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
6695 END { print sum }" hosts` = x1 || tmp_re="[ ]"
6696 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6697 hosts | $sort | $uniq | \
6698 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6699 case `$echo X$dflt` in
6700 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
6703 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6708 tans=`./loc resolv.conf X /etc /usr/etc`
6709 if $test -f "$tans"; then
6710 echo "(Attempting domain name extraction from $tans)"
6711 dflt=.`$sed -n -e 's/ / /g' \
6712 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
6713 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6715 .) dflt=.`$sed -n -e 's/ / /g' \
6716 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
6717 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6724 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6725 dflt=.`sh -c domainname 2>/dev/null`
6728 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6733 .) echo "(Lost all hope -- silly guess then)"
6739 *) dflt="$mydomain";;
6743 rp="What is your domain name?"
6753 : translate upper to lower if necessary
6756 echo "(Normalizing case in your domain name)"
6757 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6761 : a little sanity check here
6762 case "$phostname" in
6765 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6766 $myhostname$mydomain|$myhostname) ;;
6768 case "$phostname" in
6770 echo "(That doesn't agree with your whoami.h file, by the way.)"
6773 echo "(That doesn't agree with your $phostname command, by the way.)"
6783 I need to get your e-mail address in Internet format if possible, i.e.
6784 something like user@host.domain. Please answer accurately since I have
6785 no easy means to double check it. The default value provided below
6786 is most probably close to reality but may not be valid from outside
6787 your organization...
6791 while test "$cont"; do
6793 '') dflt="$cf_by@$myhostname$mydomain";;
6794 *) dflt="$cf_email";;
6796 rp='What is your e-mail address?'
6802 rp='Address does not look like an Internet one. Use it anyway?'
6818 If you or somebody else will be maintaining perl at your site, please
6819 fill in the correct e-mail address here so that they may be contacted
6820 if necessary. Currently, the "perlbug" program included with perl
6821 will send mail to this address in addition to perlbug@perl.com. You may
6822 enter "none" for no administrator.
6825 case "$perladmin" in
6826 '') dflt="$cf_email";;
6827 *) dflt="$perladmin";;
6829 rp='Perl administrator e-mail address'
6833 : figure out how to guarantee perl startup
6834 case "$startperl" in
6836 case "$sharpbang" in
6840 I can use the #! construct to start perl on your system. This will
6841 make startup of perl scripts faster, but may cause problems if you
6842 want to share those scripts and perl is not in a standard place
6843 ($binexp/perl) on all your platforms. The alternative is to force
6844 a shell by starting the script with a single ':' character.
6848 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6851 none) startperl=": # use perl";;
6852 *) startperl="#!$ans"
6853 if $test 30 -lt `echo "$ans" | wc -c`; then
6856 WARNING: Some systems limit the #! command to 32 characters.
6857 If you experience difficulty running Perl scripts with #!, try
6858 installing Perl in a directory with a shorter pathname.
6864 *) startperl=": # use perl"
6869 echo "I'll use $startperl to start perl scripts."
6871 : figure best path for perl in scripts
6874 perlpath="$binexp/perl"
6875 case "$startperl" in
6880 I will use the "eval 'exec'" idiom to start Perl on your system.
6881 I can use the full path of your Perl binary for this purpose, but
6882 doing so may cause problems if you want to share those scripts and
6883 Perl is not always in a standard place ($binexp/perl).
6887 rp="What path shall I use in \"eval 'exec'\"?"
6894 case "$startperl" in
6896 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6899 : determine where public executable scripts go
6900 set scriptdir scriptdir
6902 case "$scriptdir" in
6905 : guess some guesses
6906 $test -d /usr/share/scripts && dflt=/usr/share/scripts
6907 $test -d /usr/share/bin && dflt=/usr/share/bin
6908 $test -d /usr/local/script && dflt=/usr/local/script
6909 $test -d /usr/local/scripts && dflt=/usr/local/scripts
6910 $test -d $prefixexp/script && dflt=$prefixexp/script
6914 *) dflt="$scriptdir"
6919 Some installations have a separate directory just for executable scripts so
6920 that they can mount it across multiple architectures but keep the scripts in
6921 one spot. You might, for example, have a subdirectory of /usr/share for this.
6922 Or you might just lump your scripts in with all your other executables.
6926 rp='Where do you keep publicly executable scripts?'
6928 if $test "X$ansexp" != "X$scriptdirexp"; then
6932 scriptdirexp="$ansexp"
6933 : Change installation prefix, if necessary.
6934 if $test X"$prefix" != X"$installprefix"; then
6935 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6937 installscript="$scriptdirexp"
6940 : determine where site specific architecture-dependent libraries go.
6941 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6942 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6943 : sitelib may have an optional trailing /share.
6944 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6945 tdflt="$tdflt/$archname"
6946 set sitearch sitearch none
6949 '') dflt="$tdflt" ;;
6950 *) dflt="$sitearch" ;;
6954 The installation process will also create a directory for
6955 architecture-dependent site-specific extensions and modules.
6959 rp='Pathname for the site-specific architecture-dependent library files?'
6962 sitearchexp="$ansexp"
6963 : Change installation prefix, if necessary.
6964 if $test X"$prefix" != X"$installprefix"; then
6965 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6967 installsitearch="$sitearchexp"
6970 : determine where add-on public executables go
6972 '') dflt=$siteprefix/bin ;;
6976 rp='Pathname where the add-on public executables should be installed?'
6979 sitebinexp="$ansexp"
6980 : Change installation prefix, if necessary.
6981 if $test X"$prefix" != X"$installprefix"; then
6982 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
6984 installsitebin="$sitebinexp"
6987 : see if sqrtl exists
6993 Perl can be built to take advantage of long doubles which
6994 (if available) may give more accuracy and range for floating point numbers.
6996 If this doesn't make any sense to you, just accept the default 'n'.
7000 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7003 case "$uselongdouble" in
7004 $define|true|[yY]*) dflt='y';;
7007 rp='Try to use long doubles if available?'
7010 y|Y) val="$define" ;;
7016 case "$uselongdouble" in
7017 true|[yY]*) uselongdouble="$define" ;;
7020 case "$uselongdouble" in
7022 : Look for a hint-file generated 'call-back-unit'. If the
7023 : user has specified that long doubles should be used,
7024 : we may need to set or change some other defaults.
7025 if $test -f uselongdouble.cbu; then
7026 echo "Your platform has some specific hints for long doubles, using them..."
7027 . ./uselongdouble.cbu
7030 (Your platform doesn't have any specific hints for long doubles.)
7036 case "$uselongdouble:$d_sqrtl" in
7040 You requested the use of long doubles but you do not seem to have
7041 the mathematic functions for long doubles. I'm disabling the use
7044 uselongdouble=$undef
7050 Perl can be built to take advantage of long longs which
7051 (if available) may give more range for integer numbers.
7053 If this doesn't make any sense to you, just accept the default 'n'.
7057 *-DUSE_LONG_LONG*) uselonglong="$define" ;;
7060 case "$uselonglong" in
7063 rp='Try to use long longs if available?'
7066 y|Y) val="$define" ;;
7072 case "$uselonglong" in
7073 true|[yY]*) uselonglong="$define" ;;
7076 case "$uselonglong" in
7078 : Look for a hint-file generated 'call-back-unit'. If the
7079 : user has specified that long longs should be used,
7080 : we may need to set or change some other defaults.
7081 if $test -f uselonglong.cbu; then
7082 echo "Your platform has some specific hints for long longs, using them..."
7086 (Your platform doesn't have any specific hints for long longs.)
7094 Previous version of $package used the standard IO mechanisms as defined
7095 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7096 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7097 the default. This abstraction layer can use AT&T's sfio (if you already
7098 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7099 problems with some extension modules. Using PerlIO with stdio is safe,
7100 but it is slower than plain stdio and therefore is not the default.
7102 If this doesn't make any sense to you, just accept the default 'n'.
7104 case "$useperlio" in
7105 $define|true|[yY]*) dflt='y';;
7108 rp='Use the experimental PerlIO abstraction layer?'
7115 echo "Ok, doing things the stdio way"
7122 case "$vendorprefix" in
7123 '') d_vendorbin="$undef"
7127 *) d_vendorbin="$define"
7128 : determine where vendor-supplied executables go.
7129 dflt=$vendorprefix/bin
7131 rp='Pathname for the vendor-supplied executables directory?'
7134 vendorbinexp="$ansexp"
7135 : Change installation prefix, if necessary.
7136 if $test X"$prefix" != X"$installprefix"; then
7137 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7139 installvendorbin="$vendorbinexp"
7144 : check for length of double
7146 case "$doublesize" in
7148 $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7149 $cat >try.c <<'EOCP'
7153 printf("%d\n", (int)sizeof(double));
7158 if eval $compile_ok; then
7160 $echo " $doublesize bytes." >&4
7163 echo "(I can't seem to compile the test program. Guessing...)"
7164 rp="What is the size of a double precision number (in bytes)?"
7172 : check for long doubles
7174 $echo $n "Checking to see if your system supports long double..." $c >&4
7175 echo 'int main() { long double x = 7.0; }' > try.c
7177 if eval $compile; then
7179 echo " Yes, it does." >&4
7182 echo " No, it doesn't." >&4
7188 : check for length of long double
7189 case "${d_longdbl}${longdblsize}" in
7192 $echo $n "Checking to see how big your long doubles are..." $c >&4
7193 $cat >try.c <<'EOCP'
7197 printf("%d\n", sizeof(long double));
7202 if eval $compile; then
7203 longdblsize=`./try$exe_ext`
7204 $echo " $longdblsize bytes." >&4
7208 echo "(I can't seem to compile the test program. Guessing...)" >&4
7209 rp="What is the size of a long double (in bytes)?"
7213 if $test "X$doublesize" = "X$longdblsize"; then
7214 echo "(That isn't any different from an ordinary double.)"
7220 : Check how to convert floats to strings.
7221 if test "X$d_Gconvert" = X; then
7223 echo "Checking for an efficient way to convert floats to strings."
7226 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7227 char *myname = "gconvert";
7230 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7231 char *myname = "gcvt";
7234 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7235 char *myname = "qgcvt";
7236 #define DOUBLETYPE long double
7239 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7240 char *myname = "sprintf";
7244 #define DOUBLETYPE double
7249 #define I_STDLIB $i_stdlib
7255 checkit(expect, got)
7259 if (strcmp(expect, got)) {
7260 printf("%s oddity: Expected %s, got %s\n",
7261 myname, expect, got);
7271 /* This must be 1st test on (which?) platform */
7272 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7273 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7274 checkit("0.1", buf);
7276 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7279 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7282 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7285 /* Some Linux gcvt's give 1.e+5 here. */
7286 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7287 checkit("100000", buf);
7289 /* Some Linux gcvt's give -1.e+5 here. */
7290 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7291 checkit("-100000", buf);
7296 case "$d_Gconvert" in
7297 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7298 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7299 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7300 *) xxx_list='gconvert gcvt sprintf' ;;
7303 case "$d_longdbl$uselongdouble" in
7304 definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7307 for xxx_convert in $xxx_list; do
7308 echo "Trying $xxx_convert..."
7310 set try -DTRY_$xxx_convert
7311 if eval $compile; then
7312 echo "$xxx_convert() found." >&4
7314 echo "I'll use $xxx_convert to convert floats into a string." >&4
7317 echo "...But $xxx_convert didn't work as I expected."
7320 echo "$xxx_convert NOT found." >&4
7324 case "$xxx_convert" in
7325 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7326 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7327 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7328 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7334 if $test X"$d_longdbl" = X"$define"; then
7336 echo "Checking how to print long doubles..." >&4
7338 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7339 $cat >try.c <<'EOCP'
7340 #include <sys/types.h>
7344 printf("%.3f\n", d);
7348 if eval $compile; then
7352 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7353 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7354 echo "We will use %f."
7360 if $test X"$sPRIfldbl" = X; then
7361 $cat >try.c <<'EOCP'
7362 #include <sys/types.h>
7365 long double d = 123.456;
7366 printf("%.3llf\n", d);
7370 if eval $compile; then
7374 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7375 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7376 echo "We will use %llf."
7382 if $test X"$sPRIfldbl" = X; then
7383 $cat >try.c <<'EOCP'
7384 #include <sys/types.h>
7387 long double d = 123.456;
7388 printf("%.3Lf\n", d);
7392 if eval $compile; then
7396 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7397 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7398 echo "We will use %Lf."
7404 if $test X"$sPRIfldbl" = X; then
7405 $cat >try.c <<'EOCP'
7406 #include <sys/types.h>
7409 long double d = 123.456;
7410 printf("%.3lf\n", d);
7414 if eval $compile; then
7418 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7419 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7420 echo "We will use %lf."
7426 if $test X"$sPRIfldbl" = X; then
7427 echo "Cannot figure out how to print long doubles." >&4
7434 case "$sPRIfldbl" in
7435 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7436 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7438 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7439 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7443 : Initialize h_fcntl
7446 : Initialize h_sysfile
7449 : access call always available on UNIX
7453 : locate the flags for 'access()'
7457 $cat >access.c <<'EOCP'
7458 #include <sys/types.h>
7463 #include <sys/file.h>
7472 : check sys/file.h first, no particular reason here
7473 if $test `./findhdr sys/file.h` && \
7474 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7476 echo "<sys/file.h> defines the *_OK access constants." >&4
7477 elif $test `./findhdr fcntl.h` && \
7478 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7480 echo "<fcntl.h> defines the *_OK access constants." >&4
7481 elif $test `./findhdr unistd.h` && \
7482 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7483 echo "<unistd.h> defines the *_OK access constants." >&4
7485 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7491 : see if accessx exists
7492 set accessx d_accessx
7495 : see if alarm exists
7499 : see if atolf exists
7503 : see if atoll exists
7507 : Look for GNU-cc style attribute checking
7509 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7510 $cat >attrib.c <<'EOCP'
7512 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7514 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7515 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7516 echo "Your C compiler doesn't fully support __attribute__."
7519 echo "Your C compiler supports __attribute__."
7523 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7530 : see if bcmp exists
7534 : see if bcopy exists
7538 : see if this is a unistd.h system
7539 set unistd.h i_unistd
7542 : see if getpgrp exists
7543 set getpgrp d_getpgrp
7546 case "$d_getpgrp" in
7549 echo "Checking to see which flavor of getpgrp is in use..."
7552 #include <sys/types.h>
7554 # include <unistd.h>
7558 if (getuid() == 0) {
7559 printf("(I see you are running Configure as super-user...)\n");
7563 if (getpgrp(1) == 0)
7572 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7573 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7575 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7576 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7579 echo "I can't seem to compile and run the test program."
7581 xxx="a USG one, i.e. you use getpgrp()."
7583 # SVR4 systems can appear rather BSD-ish.
7586 xxx="a BSD one, i.e. you use getpgrp(pid)."
7590 xxx="probably a USG one, i.e. you use getpgrp()."
7595 echo "Assuming your getpgrp is $xxx" >&4
7604 : see if setpgrp exists
7605 set setpgrp d_setpgrp
7608 case "$d_setpgrp" in
7611 echo "Checking to see which flavor of setpgrp is in use..."
7614 #include <sys/types.h>
7616 # include <unistd.h>
7620 if (getuid() == 0) {
7621 printf("(I see you are running Configure as super-user...)\n");
7625 if (-1 == setpgrp(1, 1))
7628 if (setpgrp() != -1)
7634 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7635 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7637 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7638 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7641 echo "(I can't seem to compile and run the test program.)"
7643 xxx="a USG one, i.e. you use setpgrp()."
7645 # SVR4 systems can appear rather BSD-ish.
7648 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7652 xxx="probably a USG one, i.e. you use setpgrp()."
7657 echo "Assuming your setpgrp is $xxx" >&4
7665 : see if bzero exists
7669 : see if signal is declared as pointer to function returning int or void
7671 xxx=`./findhdr signal.h`
7672 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7673 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7674 echo "You have int (*signal())() instead of void." >&4
7676 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7677 echo "You have void (*signal())()." >&4
7679 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7680 echo "You have int (*signal())() instead of void." >&4
7682 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7683 echo "You have void (*signal())()." >&4
7686 case "$d_voidsig" in
7688 echo "I can't determine whether signal handler returns void or int..." >&4
7690 rp="What type does your signal handler return?"
7697 echo "As you already told me, signal handler returns void." >&4
7700 *) echo "As you already told me, signal handler returns int." >&4
7707 case "$d_voidsig" in
7708 "$define") signal_t="void";;
7713 : check for ability to cast large floats to 32-bit ints.
7715 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7716 if $test "$intsize" -ge 4; then
7723 #include <sys/types.h>
7725 $signal_t blech(s) int s; { exit(3); }
7732 signal(SIGFPE, blech);
7734 /* Don't let compiler optimize the test away. Store the number
7735 in a writable string for gcc to pass to sscanf under HP/UX.
7737 sprintf(str, "2147483647");
7738 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7742 /* x86 processors will probably give 0x8000 0000, which is a
7743 sign change. We don't want that. We want to mimic SPARC
7744 behavior here, which is to preserve the sign and give
7747 if (i32 != ($xxx) f)
7753 if eval $compile_ok; then
7757 echo "(I can't seem to compile the test program--assuming it can't)"
7765 echo "Nope, it can't."
7772 : check for ability to cast negative floats to unsigned
7774 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7777 #include <sys/types.h>
7779 $signal_t blech(s) int s; { exit(7); }
7780 $signal_t blech_in_list(s) int s; { exit(4); }
7781 unsigned long dummy_long(p) unsigned long p; { return p; }
7782 unsigned int dummy_int(p) unsigned int p; { return p; }
7783 unsigned short dummy_short(p) unsigned short p; { return p; }
7787 unsigned long along;
7789 unsigned short ashort;
7793 /* Frustrate gcc-2.7.2's optimizer which failed this test with
7794 a direct f = -123. assignment. gcc-2.8.0 reportedly
7795 optimized the whole file away
7797 /* Store the number in a writable string for gcc to pass to
7800 sprintf(str, "-123");
7801 sscanf(str, "%lf", &f); /* f = -123.; */
7803 signal(SIGFPE, blech);
7804 along = (unsigned long)f;
7805 aint = (unsigned int)f;
7806 ashort = (unsigned short)f;
7807 if (along != (unsigned long)-123)
7809 if (aint != (unsigned int)-123)
7811 if (ashort != (unsigned short)-123)
7813 sprintf(str, "1073741824.");
7814 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7817 along = (unsigned long)f;
7818 if (along != 0x80000000)
7822 along = (unsigned long)f;
7823 if (along != 0x7fffffff)
7827 along = (unsigned long)f;
7828 if (along != 0x80000001)
7832 signal(SIGFPE, blech_in_list);
7833 sprintf(str, "123.");
7834 sscanf(str, "%lf", &f); /* f = 123.; */
7835 along = dummy_long((unsigned long)f);
7836 aint = dummy_int((unsigned int)f);
7837 ashort = dummy_short((unsigned short)f);
7838 if (along != (unsigned long)123)
7840 if (aint != (unsigned int)123)
7842 if (ashort != (unsigned short)123)
7849 if eval $compile_ok; then
7853 echo "(I can't seem to compile the test program--assuming it can't)"
7856 case "$castflags" in
7861 echo "Nope, it can't."
7868 : see if vprintf exists
7870 if set vprintf val -f d_vprintf; eval $csym; $val; then
7871 echo 'vprintf() found.' >&4
7873 $cat >vprintf.c <<'EOF'
7874 #include <varargs.h>
7876 int main() { xxx("foo"); }
7885 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7889 if eval $compile && ./vprintf; then
7890 echo "Your vsprintf() returns (int)." >&4
7893 echo "Your vsprintf() returns (char*)." >&4
7897 echo 'vprintf() NOT found.' >&4
7907 : see if chown exists
7911 : see if chroot exists
7915 : see if chsize exists
7919 : check for const keyword
7921 echo 'Checking to see if your C compiler knows about "const"...' >&4
7922 $cat >const.c <<'EOCP'
7923 typedef struct spug { int drokk; } spug;
7930 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7932 echo "Yup, it does."
7935 echo "Nope, it doesn't."
7940 : see if crypt exists
7942 if set crypt val -f d_crypt; eval $csym; $val; then
7943 echo 'crypt() found.' >&4
7947 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7948 if $test -z "$cryptlib"; then
7949 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7953 if $test -z "$cryptlib"; then
7954 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7958 if $test -z "$cryptlib"; then
7959 cryptlib=`./loc libcrypt$_a "" $libpth`
7963 if $test -z "$cryptlib"; then
7964 echo 'crypt() NOT found.' >&4
7973 : get csh whereabouts
7975 'csh') val="$undef" ;;
7980 : Respect a hint or command line value for full_csh.
7982 '') full_csh=$csh ;;
7985 : see if cuserid exists
7986 set cuserid d_cuserid
7989 : see if this is a limits.h system
7990 set limits.h i_limits
7993 : see if this is a float.h system
7997 : See if number of significant digits in a double precision number is known
7999 $cat >dbl_dig.c <<EOM
8009 printf("Contains DBL_DIG");
8012 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8013 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8014 echo "DBL_DIG found." >&4
8017 echo "DBL_DIG NOT found." >&4
8024 : see if difftime exists
8025 set difftime d_difftime
8028 : see if this is a dirent system
8030 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8032 echo "<dirent.h> found." >&4
8035 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8036 echo "<sys/dir.h> found." >&4
8039 xinc=`./findhdr sys/ndir.h`
8041 echo "<dirent.h> NOT found." >&4
8046 : Look for type of directory structure.
8048 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8050 case "$direntrytype" in
8053 $define) guess1='struct dirent' ;;
8054 *) guess1='struct direct' ;;
8057 *) guess1="$direntrytype"
8062 'struct dirent') guess2='struct direct' ;;
8063 *) guess2='struct dirent' ;;
8066 if $contains "$guess1" try.c >/dev/null 2>&1; then
8067 direntrytype="$guess1"
8068 echo "Your directory entries are $direntrytype." >&4
8069 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8070 direntrytype="$guess2"
8071 echo "Your directory entries seem to be $direntrytype." >&4
8073 echo "I don't recognize your system's directory entries." >&4
8074 rp="What type is used for directory entries on this system?"
8082 : see if the directory entry stores field length
8084 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8085 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8086 echo "Good, your directory entry keeps length information in d_namlen." >&4
8089 echo "Your directory entry does not know about the d_namlen field." >&4
8096 : see if dlerror exists
8099 set dlerror d_dlerror
8103 : see if dlfcn is available
8111 On a few systems, the dynamically loaded modules that perl generates and uses
8112 will need a different extension than shared libs. The default will probably
8120 rp='What is the extension of dynamically loaded modules'
8129 : Check if dlsym need a leading underscore
8135 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8136 $cat >dyna.c <<'EOM'
8145 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8147 #include <sys/types.h>
8161 int mode = RTLD_LAZY ;
8163 handle = dlopen("./dyna.$dlext", mode) ;
8164 if (handle == NULL) {
8169 symbol = dlsym(handle, "fred") ;
8170 if (symbol == NULL) {
8171 /* try putting a leading underscore */
8172 symbol = dlsym(handle, "_fred") ;
8173 if (symbol == NULL) {
8186 : Call the object file tmp-dyna.o in case dlext=o.
8187 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8188 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8189 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
8190 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8193 1) echo "Test program failed using dlopen." >&4
8194 echo "Perhaps you should not use dynamic loading." >&4;;
8195 2) echo "Test program failed using dlsym." >&4
8196 echo "Perhaps you should not use dynamic loading." >&4;;
8197 3) echo "dlsym needs a leading underscore" >&4
8199 4) echo "dlsym doesn't need a leading underscore." >&4;;
8202 echo "I can't compile and run the test program." >&4
8203 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8208 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8213 hasproto='varname=$1; func=$2; shift; shift;
8214 while $test $# -ge 2; do
8216 $define) echo "#include <$2>";;
8220 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8221 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8222 echo "$func() prototype found.";
8225 echo "$func() prototype NOT found.";
8230 $rm -f try.c tryout.c'
8232 : see if prototype for drand48 is available
8234 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8237 : see if dup2 exists
8241 : see if eaccess exists
8242 set eaccess d_eaccess
8245 : see if endgrent exists
8246 set endgrent d_endgrent
8249 : see if endhostent exists
8250 set endhostent d_endhent
8253 : see if endnetent exists
8254 set endnetent d_endnent
8257 : see if endprotoent exists
8258 set endprotoent d_endpent
8261 : see if endpwent exists
8262 set endpwent d_endpwent
8265 : see if endservent exists
8266 set endservent d_endsent
8269 : see if endspent exists
8270 set endspent d_endspent
8273 : Locate the flags for 'open()'
8275 $cat >open3.c <<'EOCP'
8276 #include <sys/types.h>
8281 #include <sys/file.h>
8292 : check sys/file.h first to get FREAD on Sun
8293 if $test `./findhdr sys/file.h` && \
8294 set open3 -DI_SYS_FILE && eval $compile; then
8296 echo "<sys/file.h> defines the O_* constants..." >&4
8298 echo "and you have the 3 argument form of open()." >&4
8301 echo "but not the 3 argument form of open(). Oh, well." >&4
8304 elif $test `./findhdr fcntl.h` && \
8305 set open3 -DI_FCNTL && eval $compile; then
8307 echo "<fcntl.h> defines the O_* constants..." >&4
8309 echo "and you have the 3 argument form of open()." >&4
8312 echo "but not the 3 argument form of open(). Oh, well." >&4
8317 echo "I can't find the O_* constant definitions! You got problems." >&4
8323 : see which of string.h or strings.h is needed
8325 strings=`./findhdr string.h`
8326 if $test "$strings" && $test -r "$strings"; then
8327 echo "Using <string.h> instead of <strings.h>." >&4
8331 strings=`./findhdr strings.h`
8332 if $test "$strings" && $test -r "$strings"; then
8333 echo "Using <strings.h> instead of <string.h>." >&4
8335 echo "No string header found -- You'll surely have problems." >&4
8341 "$undef") strings=`./findhdr strings.h`;;
8342 *) strings=`./findhdr string.h`;;
8345 : check for non-blocking I/O stuff
8346 case "$h_sysfile" in
8347 true) echo "#include <sys/file.h>" > head.c;;
8350 true) echo "#include <fcntl.h>" > head.c;;
8351 *) echo "#include <sys/fcntl.h>" > head.c;;
8356 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8357 case "$o_nonblock" in
8360 $cat >>try.c <<'EOCP'
8364 printf("O_NONBLOCK\n");
8368 printf("O_NDELAY\n");
8372 printf("FNDELAY\n");
8379 if eval $compile_ok; then
8381 case "$o_nonblock" in
8382 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8383 *) echo "Seems like we can use $o_nonblock.";;
8386 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8389 *) echo "Using $hint value $o_nonblock.";;
8391 $rm -f try try.* .out core
8394 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8400 #include <sys/types.h>
8403 #define MY_O_NONBLOCK $o_nonblock
8404 #ifndef errno /* XXX need better Configure test */
8414 #include <strings.h>
8416 $signal_t blech(x) int x; { exit(3); }
8418 $cat >> try.c <<'EOCP'
8426 pipe(pd); /* Down: child -> parent */
8427 pipe(pu); /* Up: parent -> child */
8430 close(pd[1]); /* Parent reads from pd[0] */
8431 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8432 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8434 signal(SIGALRM, blech);
8436 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8438 sprintf(string, "%d\n", ret);
8439 write(2, string, strlen(string));
8442 if (errno == EAGAIN) {
8448 if (errno == EWOULDBLOCK)
8449 printf("EWOULDBLOCK\n");
8452 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8453 sleep(2); /* Give it time to close our pipe */
8455 ret = read(pd[0], buf, 1); /* Should read EOF */
8457 sprintf(string, "%d\n", ret);
8458 write(3, string, strlen(string));
8462 close(pd[0]); /* We write to pd[1] */
8463 close(pu[1]); /* We read from pu[0] */
8464 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8465 close(pd[1]); /* Pipe pd is now fully closed! */
8466 exit(0); /* Bye bye, thank you for playing! */
8470 if eval $compile_ok; then
8471 echo "$startsh" >mtry
8472 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8474 ./mtry >/dev/null 2>&1
8476 0) eagain=`$cat try.out`;;
8477 1) echo "Could not perform non-blocking setting!";;
8478 2) echo "I did a successful read() for something that was not there!";;
8479 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8480 *) echo "Something terribly wrong happened during testing.";;
8482 rd_nodata=`$cat try.ret`
8483 echo "A read() system call with no data present returns $rd_nodata."
8484 case "$rd_nodata" in
8487 echo "(That's peculiar, fixing that to be -1.)"
8493 echo "Forcing errno EAGAIN on read() with no data available."
8497 echo "Your read() sets errno to $eagain when no data is available."
8500 status=`$cat try.err`
8502 0) echo "And it correctly returns 0 to signal EOF.";;
8503 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8504 *) echo "However, your read() returns '$status' on EOF??";;
8507 if test "$status" = "$rd_nodata"; then
8508 echo "WARNING: you can't distinguish between EOF and no data!"
8512 echo "I can't compile the test program--assuming errno EAGAIN will do."
8519 echo "Using $hint value $eagain."
8520 echo "Your read() returns $rd_nodata when no data is present."
8521 case "$d_eofnblk" in
8522 "$define") echo "And you can see EOF because read() returns 0.";;
8523 "$undef") echo "But you can't see EOF status from read() returned value.";;
8525 echo "(Assuming you can't see EOF status from read anyway.)"
8531 $rm -f try try.* .out core head.c mtry
8533 : see if fchmod exists
8537 : see if fchown exists
8541 : see if this is an fcntl system
8545 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8546 while $test $# -ge 2; do
8548 $define) echo "#include <$2>";;
8552 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8554 if eval $compile; then
8565 : see whether socket exists
8567 $echo $n "Hmm... $c" >&4
8568 if set socket val -f d_socket; eval $csym; $val; then
8569 echo "Looks like you have Berkeley networking support." >&4
8571 if set setsockopt val -f; eval $csym; $val; then
8574 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8578 if $contains socklib libc.list >/dev/null 2>&1; then
8579 echo "Looks like you have Berkeley networking support." >&4
8581 : we will have to assume that it supports the 4.2 BSD interface
8584 echo "You don't have Berkeley networking in libc$_a..." >&4
8585 if test "X$d_socket" = "X$define"; then
8586 echo "...but you seem to believe that you have sockets." >&4
8588 for net in net socket
8590 if test -f /usr/lib/lib$net$_a; then
8591 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8592 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8593 if $contains socket libc.list >/dev/null 2>&1; then
8598 echo "...but the Wollongong group seems to have hacked it in." >&4
8599 sockethdr="-I/usr/netinclude"
8602 echo "Found Berkeley sockets interface in lib$net." >& 4
8603 if $contains setsockopt libc.list >/dev/null 2>&1; then
8606 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8613 if test "X$d_socket" != "X$define"; then
8614 echo "or anywhere else I see." >&4
8622 : see if socketpair exists
8623 set socketpair d_sockpair
8628 echo "Checking the availability of certain socket constants..." >& 4
8629 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8630 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8632 #include <sys/types.h>
8633 #include <sys/socket.h>
8639 set try; if eval $compile; then
8642 set d_${enum}; eval $setvar
8646 : see if sys/select.h has to be included
8647 set sys/select.h i_sysselct
8650 : see if we should include time.h, sys/time.h, or both
8652 if test "X$timeincl" = X; then
8653 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8654 $echo $n "I'm now running the test program...$c"
8655 $cat >try.c <<'EOCP'
8656 #include <sys/types.h>
8661 #ifdef SYSTIMEKERNEL
8664 #include <sys/time.h>
8667 #include <sys/select.h>
8676 struct timezone tzp;
8678 if (foo.tm_sec == foo.tm_sec)
8681 if (bar.tv_sec == bar.tv_sec)
8688 for s_timezone in '-DS_TIMEZONE' ''; do
8690 for s_timeval in '-DS_TIMEVAL' ''; do
8691 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8692 for i_time in '' '-DI_TIME'; do
8693 for i_systime in '-DI_SYSTIME' ''; do
8696 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8697 if eval $compile; then
8698 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8702 $echo $n "Succeeded with $flags$c"
8714 *SYSTIMEKERNEL*) i_systimek="$define"
8715 timeincl=`./findhdr sys/time.h`
8716 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8717 *) i_systimek="$undef";;
8720 *I_TIME*) i_time="$define"
8721 timeincl=`./findhdr time.h`" $timeincl"
8722 echo "We'll include <time.h>." >&4;;
8723 *) i_time="$undef";;
8726 *I_SYSTIME*) i_systime="$define"
8727 timeincl=`./findhdr sys/time.h`" $timeincl"
8728 echo "We'll include <sys/time.h>." >&4;;
8729 *) i_systime="$undef";;
8734 : check for fd_set items
8737 Checking to see how well your C compiler handles fd_set and friends ...
8739 $cat >fd_set.c <<EOCP
8740 #$i_systime I_SYS_TIME
8741 #$i_sysselct I_SYS_SELECT
8742 #$d_socket HAS_SOCKET
8743 #include <sys/types.h>
8745 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8748 #include <sys/time.h>
8751 #include <sys/select.h>
8760 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8767 set fd_set -DTRYBITS
8768 if eval $compile; then
8769 d_fds_bits="$define"
8771 echo "Well, your system knows about the normal fd_set typedef..." >&4
8773 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8774 d_fd_macros="$define"
8777 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
8779 d_fd_macros="$undef"
8783 Hmm, your compiler has some difficulty with fd_set. Checking further...
8786 if eval $compile; then
8789 echo "Well, your system has some sort of fd_set available..." >&4
8791 echo "and you have the normal fd_set macros." >&4
8792 d_fd_macros="$define"
8795 but not the normal fd_set macros! Gross! More work for me...
8797 d_fd_macros="$undef"
8800 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
8803 d_fd_macros="$undef"
8808 : see if fgetpos exists
8809 set fgetpos d_fgetpos
8812 : see if flock exists
8816 : see if fork exists
8820 : see if pathconf exists
8821 set pathconf d_pathconf
8824 : see if fpathconf exists
8825 set fpathconf d_fpathconf
8831 echo "Checking to see if your system supports off64_t..." >&4
8833 #include <sys/types.h>
8835 int main() { off64_t x = 7; }'
8838 if eval $compile; then
8840 echo "Yes, it does."
8843 echo "No, it doesn't."
8844 case "$lseeksize" in
8845 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8852 : check for fpos64_t
8854 echo "Checking to see if your system supports fpos64_t..." >&4
8856 #include <sys/stdio.h>
8857 int main() { fpos64_t x x = 7; }'
8860 if eval $compile; then
8862 echo "Yes, it does."
8865 echo "No, it doesn't."
8867 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8874 hasstruct='varname=$1; struct=$2; shift; shift;
8875 while $test $# -ge 2; do
8877 $define) echo "#include <$2>";;
8881 echo "int main () { struct $struct foo; }" >> try.c;
8883 if eval $compile; then
8892 : see if this is a sys/param system
8893 set sys/param.h i_sysparam
8896 : see if this is a sys/mount.h system
8897 set sys/mount.h i_sysmount
8900 : see if sys/types.h has to be included
8901 set sys/types.h i_systypes
8906 echo "Checking to see if your system supports struct fs_data..." >&4
8907 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8909 case "$d_fs_data_s" in
8910 "$define") echo "Yes, it does." ;;
8911 *) echo "No, it doesn't." ;;
8914 : see if fseeko exists
8918 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
8921 : see if fsetpos exists
8922 set fsetpos d_fsetpos
8926 : see if fstatfs exists
8927 set fstatfs d_fstatfs
8931 : see if statvfs exists
8932 set statvfs d_statvfs
8935 : see if fstatvfs exists
8936 set fstatvfs d_fstatvfs
8940 : see if ftello exists
8944 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
8947 : see if getgrent exists
8948 set getgrent d_getgrent
8951 : see if gethostbyaddr exists
8952 set gethostbyaddr d_gethbyaddr
8955 : see if gethostbyname exists
8956 set gethostbyname d_gethbyname
8959 : see if gethostent exists
8960 set gethostent d_gethent
8963 : see how we will look up host name
8966 if set gethostname val -f d_gethname; eval $csym; $val; then
8967 echo 'gethostname() found.' >&4
8968 d_gethname="$define"
8971 if set uname val -f d_uname; eval $csym; $val; then
8974 uname() was found, but you're running xenix, and older versions of xenix
8975 have a broken uname(). If you don't really know whether your xenix is old
8976 enough to have a broken system call, use the default answer.
8983 rp='Is your uname() broken?'
8986 n*) d_uname="$define"; call=uname;;
8989 echo 'uname() found.' >&4
8996 case "$d_gethname" in
8997 '') d_gethname="$undef";;
9000 '') d_uname="$undef";;
9002 case "$d_uname$d_gethname" in
9007 Every now and then someone has a $call() that lies about the hostname
9008 but can't be fixed for political or economic reasons. If you wish, I can
9009 pretend $call() isn't there and maybe compute hostname at run-time
9010 thanks to the '$phostname' command.
9013 rp="Shall I ignore $call() from now on?"
9016 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9019 case "$phostname" in
9021 *) case "$aphostname" in
9027 file=`./loc $file $file $pth`
9028 aphostname=`echo $file $*`
9033 case "$d_uname$d_gethname" in
9036 case "$phostname" in
9038 echo "There will be no way for $package to get your hostname." >&4;;
9040 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9044 case "$d_phostname" in
9045 '') d_phostname="$undef";;
9048 : see if this is a netdb.h system
9052 : see if prototypes for various gethostxxx netdb.h functions are available
9054 set d_gethostprotos gethostent $i_netdb netdb.h
9057 : see if getlogin exists
9058 set getlogin d_getlogin
9061 : see if getmnt exists
9065 : see if getmntent exists
9066 set getmntent d_getmntent
9069 : see if getnetbyaddr exists
9070 set getnetbyaddr d_getnbyaddr
9073 : see if getnetbyname exists
9074 set getnetbyname d_getnbyname
9077 : see if getnetent exists
9078 set getnetent d_getnent
9081 : see if prototypes for various getnetxxx netdb.h functions are available
9083 set d_getnetprotos getnetent $i_netdb netdb.h
9087 : see if getprotobyname exists
9088 set getprotobyname d_getpbyname
9091 : see if getprotobynumber exists
9092 set getprotobynumber d_getpbynumber
9095 : see if getprotoent exists
9096 set getprotoent d_getpent
9099 : see if getpgid exists
9100 set getpgid d_getpgid
9103 : see if getpgrp2 exists
9104 set getpgrp2 d_getpgrp2
9107 : see if getppid exists
9108 set getppid d_getppid
9111 : see if getpriority exists
9112 set getpriority d_getprior
9115 : see if prototypes for various getprotoxxx netdb.h functions are available
9117 set d_getprotoprotos getprotoent $i_netdb netdb.h
9120 : see if getpwent exists
9121 set getpwent d_getpwent
9125 : see if getservbyname exists
9126 set getservbyname d_getsbyname
9129 : see if getservbyport exists
9130 set getservbyport d_getsbyport
9133 : see if getservent exists
9134 set getservent d_getsent
9137 : see if prototypes for various getservxxx netdb.h functions are available
9139 set d_getservprotos getservent $i_netdb netdb.h
9142 : see if getspent exists
9143 set getspent d_getspent
9146 : see if getspnam exists
9147 set getspnam d_getspnam
9150 : see if gettimeofday or ftime exists
9151 set gettimeofday d_gettimeod
9153 case "$d_gettimeod" in
9159 val="$undef"; set d_ftime; eval $setvar
9162 case "$d_gettimeod$d_ftime" in
9165 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9169 : see if this is an grp system
9175 xxx=`./findhdr grp.h`
9176 $cppstdin $cppflags $cppminus < $xxx >$$.h
9178 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9190 set d_grpasswd; eval $setvar
9194 : see if hasmntopt exists
9195 set hasmntopt d_hasmntopt
9198 : see if this is a netinet/in.h or sys/in.h system
9199 set netinet/in.h i_niin sys/in.h i_sysin
9202 : see if arpa/inet.h has to be included
9203 set arpa/inet.h i_arpainet
9206 : see if htonl --and friends-- exists
9211 : Maybe they are macros.
9216 #include <sys/types.h>
9217 #$i_niin I_NETINET_IN
9219 #$i_arpainet I_ARPA_INET
9221 #include <netinet/in.h>
9227 #include <arpa/inet.h>
9230 printf("Defined as a macro.");
9233 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9234 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9236 echo "But it seems to be defined as a macro." >&4
9244 : see if iconv exists
9250 if set index val -f; eval $csym; $val; then
9251 if set strchr val -f d_strchr; eval $csym; $val; then
9252 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9255 echo "strchr() found." >&4
9259 echo "index() found." >&4
9264 echo "index() found." >&4
9267 if set strchr val -f d_strchr; eval $csym; $val; then
9270 echo "strchr() found." >&4
9272 echo "No index() or strchr() found!" >&4
9277 set d_strchr; eval $setvar
9279 set d_index; eval $setvar
9281 : check whether inet_aton exists
9282 set inet_aton d_inetaton
9285 : see if inttypes.h is available
9286 : we want a real compile instead of Inhdr because some systems
9287 : have an inttypes.h which includes non-existent headers
9290 #include <inttypes.h>
9292 static int32_t foo32 = 0x12345678;
9296 if eval $compile; then
9297 echo "<inttypes.h> found." >&4
9300 echo "<inttypes.h> NOT found." >&4
9309 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9311 #include <sys/types.h>
9312 #$i_inttypes I_INTTYPES
9314 #include <inttypes.h>
9316 int main() { int64_t x = 7; }
9319 if eval $compile; then
9321 echo " Yes, it does." >&4
9324 echo " No, it doesn't." >&4
9332 $cat >isascii.c <<'EOCP'
9344 if eval $compile; then
9345 echo "isascii() found." >&4
9348 echo "isascii() NOT found." >&4
9355 : see if killpg exists
9359 : see if lchown exists
9361 $cat > try.c <<'EOCP'
9362 /* System header to define __stub macros and hopefully few prototypes,
9363 which can conflict with char lchown(); below. */
9365 /* Override any gcc2 internal prototype to avoid an error. */
9366 /* We use char because int might match the return type of a gcc2
9367 builtin and then its argument prototype would still apply. */
9370 /* The GNU C library defines this for functions which it implements
9371 to always fail with ENOSYS. Some functions are actually named
9372 something starting with __ and the normal name is an alias. */
9373 #if defined (__stub_lchown) || defined (__stub___lchown)
9381 if eval $compile; then
9382 $echo "lchown() found." >&4
9385 $echo "lchown() NOT found." >&4
9391 : See if number of significant digits in a double precision number is known
9393 $cat >ldbl_dig.c <<EOM
9403 printf("Contains LDBL_DIG");
9406 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9407 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9408 echo "LDBL_DIG found." >&4
9411 echo "LDBL_DIG NOT found." >&4
9418 : see if link exists
9422 : see if localeconv exists
9423 set localeconv d_locconv
9426 : see if lockf exists
9430 : check for long long
9432 $echo $n "Checking to see if your system supports long long..." $c >&4
9433 echo 'int main() { long long x = 7; return 0; }' > try.c
9435 if eval $compile; then
9437 echo " Yes, it does." >&4
9440 echo " No, it doesn't." >&4
9446 : check for length of long long
9447 case "${d_longlong}${longlongsize}" in
9450 $echo $n "Checking to see how big your long longs are..." $c >&4
9451 $cat >try.c <<'EOCP'
9455 printf("%d\n", (int)sizeof(long long));
9460 if eval $compile_ok; then
9461 longlongsize=`./try$exe_ext`
9462 $echo " $longlongsize bytes." >&4
9466 echo "(I can't seem to compile the test program. Guessing...)"
9467 rp="What is the size of a long long (in bytes)?"
9471 if $test "X$longsize" = "X$longlongsize"; then
9472 echo "(That isn't any different from an ordinary long.)"
9478 : see if lstat exists
9482 : see if mblen exists
9486 : see if mbstowcs exists
9487 set mbstowcs d_mbstowcs
9490 : see if mbtowc exists
9494 : see if memchr exists
9498 : see if memcmp exists
9502 : see if memcpy exists
9506 : see if memmove exists
9507 set memmove d_memmove
9510 : see if memset exists
9514 : see if mkdir exists
9518 : see if mkdtemp exists
9519 set mkdtemp d_mkdtemp
9522 : see if mkfifo exists
9526 : see if mkstemp exists
9527 set mkstemp d_mkstemp
9530 : see if mkstemps exists
9531 set mkstemps d_mkstemps
9534 : see if mktime exists
9538 : see if mprotect exists
9539 set mprotect d_mprotect
9542 : see if msgctl exists
9546 : see if msgget exists
9550 : see if msgsnd exists
9554 : see if msgrcv exists
9558 : see how much of the 'msg*(2)' library is present.
9561 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9562 *"$undef"*) h_msg=false;;
9566 case "`ipcs 2>&1`" in
9567 "SVID messages"*"not configured"*)
9568 echo "Your $osname does not have the msg*(2) configured." >&4
9583 : we could also check for sys/ipc.h ...
9584 if $h_msg && $test `./findhdr sys/msg.h`; then
9585 echo "You have the full msg*(2) library." >&4
9588 echo "You don't have the full msg*(2) library." >&4
9594 : see if msync exists
9598 : see if munmap exists
9602 : see if nice exists
9608 echo "Checking which 64-bit integer type we could use..." >&4
9614 val='"unsigned int"'
9619 *) case "$longsize" in
9623 val='"unsigned long"'
9628 *) case "$d_longlong:$longlongsize" in
9633 val='"unsigned long long"'
9638 *) case "$d_int64t" in
9657 '') case "$uselonglong:$d_longlong:$longlongsize" in
9659 echo "(You would have 'long long', but you are not using it.)" >&4 ;;
9660 *) echo "Alas, no 64-bit integer types in sight." >&4 ;;
9664 *) if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9669 echo "We $verb use '$quadtype' for 64-bit integers." >&4
9674 : check for length of character
9678 echo "Checking to see how big your characters are (hey, you never know)..." >&4
9679 $cat >try.c <<'EOCP'
9683 printf("%d\n", (int)sizeof(char));
9688 if eval $compile_ok; then
9692 echo "(I can't seem to compile the test program. Guessing...)"
9699 rp="What is the size of a character (in bytes)?"
9706 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9708 case "$use64bits:$d_quad:$quadtype" in
9716 uvtype="unsigned long"
9722 case "$uselongdouble:$d_longdbl" in
9724 nvtype="long double"
9732 $echo "(IV will be "$ivtype", $ivsize bytes)"
9733 $echo "(UV will be "$uvtype", $uvsize bytes)"
9734 $echo "(NV will be "$nvtype", $nvsize bytes)"
9737 #$i_inttypes I_INTTYPES
9739 #include <inttypes.h>
9744 int8_t i = INT8_MAX;
9745 uint8_t u = UINT8_MAX;
9749 int16_t i = INT16_MAX;
9750 uint16_t i = UINT16_MAX;
9751 printf("int16_t\n");
9754 int32_t i = INT32_MAX;
9755 uint32_t u = UINT32_MAX;
9756 printf("int32_t\n");
9762 '') case "$charsize" in
9764 u8type="unsigned char"
9773 if eval $compile; then
9774 case "`./try$exe_ext`" in
9775 int8_t) i8type=int8_t
9785 '') if $test $charsize -ge 1; then
9787 u8type="unsigned char"
9795 '') case "$shortsize" in
9797 u16type="unsigned short"
9806 if eval $compile; then
9807 case "`./try$exe_ext`" in
9819 '') if $test $shortsize -ge 2; then
9821 u16type="unsigned short"
9829 '') case "$longsize" in
9831 u32type="unsigned long"
9835 *) case "$intsize" in
9837 u32type="unsigned int"
9848 if eval $compile; then
9849 case "`./try$exe_ext`" in
9861 '') if $test $intsize -ge 4; then
9863 u32type="unsigned int"
9871 '') case "$d_quad:$quadtype" in
9874 u64type="$uquadtype"
9882 $echo "Checking whether your NVs can preserve your UVs..." >&4
9886 $uvtype k = ($uvtype)~0, l;
9892 printf("preserve\n");
9897 if eval $compile; then
9898 case "`./try$exe_ext`" in
9899 preserve) d_nv_preserves_uv="$define" ;;
9902 case "$d_nv_preserves_uv" in
9903 $define) $echo "Yes, they can." 2>&1 ;;
9904 *) $echo "No, they can't." 2>&1
9905 d_nv_preserves_uv="$undef"
9911 : see if POSIX threads are available
9912 set pthread.h i_pthread
9918 : how to create joinable pthreads
9919 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9921 echo "Checking what constant to use for creating joinable pthreads..." >&4
9922 $cat >try.c <<'EOCP'
9923 #include <pthread.h>
9925 int detachstate = JOINABLE;
9928 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9929 if eval $compile; then
9930 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9931 val="$undef" # Yes, undef.
9932 set d_old_pthread_create_joinable
9935 set old_pthread_create_joinable
9938 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9939 if eval $compile; then
9940 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9942 set d_old_pthread_create_joinable
9944 val=PTHREAD_CREATE_UNDETACHED
9945 set old_pthread_create_joinable
9948 set try -DJOINABLE=__UNDETACHED
9949 if eval $compile; then
9950 echo "You seem to use __UNDETACHED." >&4
9952 set d_old_pthread_create_joinable
9955 set old_pthread_create_joinable
9958 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
9960 set d_old_pthread_create_joinable
9963 set old_pthread_create_joinable
9970 d_old_pthread_create_joinable="$undef"
9971 old_pthread_create_joinable=""
9974 : see if pause exists
9978 : see if pipe exists
9982 : see if poll exists
9987 : see whether the various POSIXish _yields exist
9989 #include <pthread.h>
9995 #ifdef PTHREAD_YIELD
9998 #ifdef PTHREAD_YIELD_NULL
9999 pthread_yield(NULL);
10005 : see if sched_yield exists
10006 set try -DSCHED_YIELD
10007 if eval $compile; then
10009 sched_yield='sched_yield()'
10013 case "$usethreads" in
10016 $define) echo 'sched_yield() found.' >&4 ;;
10017 *) echo 'sched_yield() NOT found.' >&4 ;;
10023 : see if pthread_yield exists
10024 set try -DPTHREAD_YIELD
10025 if eval $compile; then
10027 case "$sched_yield" in
10028 '') sched_yield='pthread_yield()' ;;
10031 set try -DPTHREAD_YIELD_NULL
10032 if eval $compile; then
10034 case "$sched_yield" in
10035 '') sched_yield='pthread_yield(NULL)' ;;
10041 case "$usethreads" in
10044 $define) echo 'pthread_yield() found.' >&4 ;;
10045 *) echo 'pthread_yield() NOT found.' >&4 ;;
10049 set d_pthread_yield
10052 case "$sched_yield" in
10053 '') sched_yield=undef ;;
10058 : see if this is a pwd.h system
10064 xxx=`./findhdr pwd.h`
10065 $cppstdin $cppflags $cppminus < $xxx >$$.h
10067 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10075 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10083 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10091 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10099 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10107 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10115 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10123 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10135 set d_pwquota; eval $setvar
10136 set d_pwage; eval $setvar
10137 set d_pwchange; eval $setvar
10138 set d_pwclass; eval $setvar
10139 set d_pwexpire; eval $setvar
10140 set d_pwcomment; eval $setvar
10141 set d_pwgecos; eval $setvar
10142 set d_pwpasswd; eval $setvar
10146 : see if readdir and friends exist
10147 set readdir d_readdir
10149 set seekdir d_seekdir
10151 set telldir d_telldir
10153 set rewinddir d_rewinddir
10156 : see if readlink exists
10157 set readlink d_readlink
10160 : see if rename exists
10161 set rename d_rename
10164 : see if rmdir exists
10168 : see if memory.h is available.
10173 : See if it conflicts with string.h
10179 $cppstdin $cppflags $cppminus < $strings > mem.h
10180 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10182 echo "We won't be including <memory.h>."
10192 : can bcopy handle overlapping blocks?
10197 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10199 #$i_memory I_MEMORY
10200 #$i_stdlib I_STDLIB
10201 #$i_string I_STRING
10202 #$i_unistd I_UNISTD
10204 $cat >>try.c <<'EOCP'
10207 # include <memory.h>
10210 # include <stdlib.h>
10213 # include <string.h>
10215 # include <strings.h>
10218 # include <unistd.h> /* Needed for NetBSD */
10222 char buf[128], abc[128];
10228 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10230 for (align = 7; align >= 0; align--) {
10231 for (len = 36; len; len--) {
10233 bcopy(abc, b, len);
10234 for (off = 1; off <= len; off++) {
10235 bcopy(b, b+off, len);
10236 bcopy(b+off, b, len);
10237 if (bcmp(b, abc, len))
10246 if eval $compile_ok; then
10247 if ./try 2>/dev/null; then
10248 echo "Yes, it can."
10251 echo "It can't, sorry."
10252 case "$d_memmove" in
10253 "$define") echo "But that's Ok since you have memmove()." ;;
10257 echo "(I can't compile the test program, so we'll assume not...)"
10258 case "$d_memmove" in
10259 "$define") echo "But that's Ok since you have memmove()." ;;
10264 $rm -f try.* try core
10268 : can memcpy handle overlapping blocks?
10270 case "$d_memcpy" in
10273 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10275 #$i_memory I_MEMORY
10276 #$i_stdlib I_STDLIB
10277 #$i_string I_STRING
10278 #$i_unistd I_UNISTD
10280 $cat >>try.c <<'EOCP'
10283 # include <memory.h>
10286 # include <stdlib.h>
10289 # include <string.h>
10291 # include <strings.h>
10294 # include <unistd.h> /* Needed for NetBSD */
10298 char buf[128], abc[128];
10304 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10305 try to store the string in read-only memory. */
10306 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10308 for (align = 7; align >= 0; align--) {
10309 for (len = 36; len; len--) {
10311 memcpy(b, abc, len);
10312 for (off = 1; off <= len; off++) {
10313 memcpy(b+off, b, len);
10314 memcpy(b, b+off, len);
10315 if (memcmp(b, abc, len))
10324 if eval $compile_ok; then
10325 if ./try 2>/dev/null; then
10326 echo "Yes, it can."
10329 echo "It can't, sorry."
10330 case "$d_memmove" in
10331 "$define") echo "But that's Ok since you have memmove()." ;;
10335 echo "(I can't compile the test program, so we'll assume not...)"
10336 case "$d_memmove" in
10337 "$define") echo "But that's Ok since you have memmove()." ;;
10342 $rm -f try.* try core
10346 : can memcmp be trusted to compare relative magnitude?
10348 case "$d_memcmp" in
10351 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10353 #$i_memory I_MEMORY
10354 #$i_stdlib I_STDLIB
10355 #$i_string I_STRING
10356 #$i_unistd I_UNISTD
10358 $cat >>try.c <<'EOCP'
10361 # include <memory.h>
10364 # include <stdlib.h>
10367 # include <string.h>
10369 # include <strings.h>
10372 # include <unistd.h> /* Needed for NetBSD */
10378 if ((a < b) && memcmp(&a, &b, 1) < 0)
10384 if eval $compile_ok; then
10385 if ./try 2>/dev/null; then
10386 echo "Yes, it can."
10389 echo "No, it can't (it uses signed chars)."
10392 echo "(I can't compile the test program, so we'll assume not...)"
10396 $rm -f try.* try core
10400 : see if select exists
10401 set select d_select
10404 : see if semctl exists
10405 set semctl d_semctl
10408 : see if semget exists
10409 set semget d_semget
10412 : see if semop exists
10416 : see how much of the 'sem*(2)' library is present.
10419 case "$d_semctl$d_semget$d_semop" in
10420 *"$undef"*) h_sem=false;;
10424 case "`ipcs 2>&1`" in
10425 "SVID messages"*"not configured"*)
10426 echo "Your $osname does not have the sem*(2) configured." >&4
10429 set semctl d_semctl
10431 set semget d_semget
10439 : we could also check for sys/ipc.h ...
10440 if $h_sem && $test `./findhdr sys/sem.h`; then
10441 echo "You have the full sem*(2) library." >&4
10444 echo "You don't have the full sem*(2) library." >&4
10450 : see whether sys/sem.h defines union semun
10452 $cat > try.c <<'END'
10453 #include <sys/types.h>
10454 #include <sys/ipc.h>
10455 #include <sys/sem.h>
10456 int main () { union semun semun; semun.buf = 0; }
10459 if eval $compile; then
10460 echo "You have union semun in <sys/sem.h>." >&4
10463 echo "You do not have union semun in <sys/sem.h>." >&4
10466 $rm -f try try.c try.h
10470 : see how to do semctl IPC_STAT
10473 : see whether semctl IPC_STAT can use union semun
10478 # define S_IRUSR S_IREAD
10479 # define S_IWUSR S_IWRITE
10480 # define S_IXUSR S_IEXEC
10482 # define S_IRUSR 0400
10483 # define S_IWUSR 0200
10484 # define S_IXUSR 0100
10486 # define S_IRGRP (S_IRUSR>>3)
10487 # define S_IWGRP (S_IWUSR>>3)
10488 # define S_IXGRP (S_IXUSR>>3)
10489 # define S_IROTH (S_IRUSR>>6)
10490 # define S_IWOTH (S_IWUSR>>6)
10491 # define S_IXOTH (S_IXUSR>>6)
10494 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10495 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10496 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10501 #include <sys/types.h>
10502 #include <sys/ipc.h>
10503 #include <sys/sem.h>
10504 #include <sys/stat.h>
10511 #$d_union_semun HAS_UNION_SEMUN
10514 #ifndef HAS_UNION_SEMUN
10517 struct semid_ds *buf;
10518 unsigned short *array;
10524 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10525 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10527 struct semid_ds argbuf;
10530 st = semctl(sem, 0, IPC_STAT, arg);
10534 # endif /* IPC_STAT */
10535 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10537 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10538 # endif /* IPC_RMID */
10539 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10541 #endif /* IPC_PRIVATE && ... */
10542 printf("semget failed: errno = %d\n", errno);
10548 if eval $compile; then
10551 semun) val="$define" ;;
10557 case "$d_semctl_semun" in
10559 echo "You can use union semun for semctl IPC_STAT." >&4
10562 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10567 : see whether semctl IPC_STAT can use struct semid_ds pointer
10568 $cat > try.c <<'END'
10569 #include <sys/types.h>
10570 #include <sys/ipc.h>
10571 #include <sys/sem.h>
10572 #include <sys/stat.h>
10580 struct semid_ds arg;
10583 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10584 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10587 st = semctl(sem, 0, IPC_STAT, &arg);
10589 printf("semid_ds\n");
10591 # endif /* IPC_STAT */
10592 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10594 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10595 # endif /* IPC_RMID */
10596 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10598 #endif /* IPC_PRIVATE && ... */
10599 printf("semget failed: errno = %d\n", errno);
10606 if eval $compile; then
10609 semid_ds) val="$define" ;;
10613 set d_semctl_semid_ds
10615 case "$d_semctl_semid_ds" in
10617 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10619 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10626 # We do not have the full sem*(2) library, so assume we can not
10632 set d_semctl_semid_ds
10637 : see if setegid exists
10638 set setegid d_setegid
10641 : see if seteuid exists
10642 set seteuid d_seteuid
10645 : see if setgrent exists
10646 set setgrent d_setgrent
10649 : see if sethostent exists
10650 set sethostent d_sethent
10653 : see if setlinebuf exists
10654 set setlinebuf d_setlinebuf
10657 : see if setlocale exists
10658 set setlocale d_setlocale
10661 : see if setnetent exists
10662 set setnetent d_setnent
10665 : see if setprotoent exists
10666 set setprotoent d_setpent
10669 : see if setpgid exists
10670 set setpgid d_setpgid
10673 : see if setpgrp2 exists
10674 set setpgrp2 d_setpgrp2
10677 : see if setpriority exists
10678 set setpriority d_setprior
10681 : see if setpwent exists
10682 set setpwent d_setpwent
10685 : see if setregid exists
10686 set setregid d_setregid
10688 set setresgid d_setresgid
10691 : see if setreuid exists
10692 set setreuid d_setreuid
10694 set setresuid d_setresuid
10697 : see if setrgid exists
10698 set setrgid d_setrgid
10701 : see if setruid exists
10702 set setruid d_setruid
10705 : see if setservent exists
10706 set setservent d_setsent
10709 : see if setsid exists
10710 set setsid d_setsid
10713 : see if setspent exists
10714 set setspent d_setspent
10717 : see if setvbuf exists
10718 set setvbuf d_setvbuf
10721 : see if sfio.h is available
10726 : see if sfio library is available
10737 : Ok, but do we want to use it.
10741 true|$define|[yY]*) dflt='y';;
10744 echo "$package can use the sfio library, but it is experimental."
10745 rp="You seem to have sfio available, do you want to try using it?"
10749 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
10751 : Remove sfio from list of libraries to use
10752 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10755 echo "libs = $libs" >&4
10759 *) case "$usesfio" in
10760 true|$define|[yY]*)
10761 echo "Sorry, cannot find sfio on this machine" >&4
10762 echo "Ignoring your setting of usesfio=$usesfio" >&4
10770 $define) usesfio='true';;
10771 *) usesfio='false';;
10774 : see if shmctl exists
10775 set shmctl d_shmctl
10778 : see if shmget exists
10779 set shmget d_shmget
10782 : see if shmat exists
10785 : see what shmat returns
10788 $cat >shmat.c <<'END'
10789 #include <sys/shm.h>
10792 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10797 echo "and it returns ($shmattype)." >&4
10798 : see if a prototype for shmat is available
10799 xxx=`./findhdr sys/shm.h`
10800 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10801 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10812 set d_shmatprototype
10815 : see if shmdt exists
10819 : see how much of the 'shm*(2)' library is present.
10822 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10823 *"$undef"*) h_shm=false;;
10827 case "`ipcs 2>&1`" in
10828 "SVID shared memory"*"not configured"*)
10829 echo "Your $osname does not have the shm*(2) configured." >&4
10832 set shmctl d_shmctl
10834 set shmget d_shmget
10844 : we could also check for sys/ipc.h ...
10845 if $h_shm && $test `./findhdr sys/shm.h`; then
10846 echo "You have the full shm*(2) library." >&4
10849 echo "You don't have the full shm*(2) library." >&4
10856 : see if we have sigaction
10857 if set sigaction val -f d_sigaction; eval $csym; $val; then
10858 echo 'sigaction() found.' >&4
10859 $cat > try.c <<'EOP'
10861 #include <sys/types.h>
10862 #include <signal.h>
10865 struct sigaction act, oact;
10867 oact.sa_handler = 0;
10868 /* so that act and oact are used */
10869 exit(act.sa_flags == 0 && oact.sa_handler == 0);
10873 if eval $compile_ok; then
10876 echo "But you don't seem to have a useable struct sigaction." >&4
10880 echo 'sigaction NOT found.' >&4
10883 set d_sigaction; eval $setvar
10884 $rm -f try try$_o try.c
10886 : see if sigsetjmp exists
10888 case "$d_sigsetjmp" in
10890 $cat >try.c <<'EOP'
10891 #include <setjmp.h>
10896 if (sigsetjmp(env,1))
10899 siglongjmp(env, 1);
10904 if eval $compile; then
10905 if ./try >/dev/null 2>&1; then
10906 echo "POSIX sigsetjmp found." >&4
10910 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10916 echo "sigsetjmp not found." >&4
10920 *) val="$d_sigsetjmp"
10921 case "$d_sigsetjmp" in
10922 $define) echo "POSIX sigsetjmp found." >&4;;
10923 $undef) echo "sigsetjmp not found." >&4;;
10931 : see if sys/stat.h is available
10932 set sys/stat.h i_sysstat
10936 : see if stat knows about block sizes
10938 echo "Checking to see if your struct stat has st_blocks field..." >&4
10939 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10943 : see if this is a sys/vfs.h system
10944 set sys/vfs.h i_sysvfs
10948 : see if this is a sys/statfs.h system
10949 set sys/statfs.h i_sysstatfs
10954 echo "Checking to see if your system supports struct statfs..." >&4
10955 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
10957 case "$d_statfs_s" in
10958 "$define") echo "Yes, it does." ;;
10959 *) echo "No, it doesn't." ;;
10964 : see if struct statfs knows about f_flags
10965 case "$d_statfs_s" in
10968 echo "Checking to see if your struct statfs has f_flags field..." >&4
10969 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
10973 set d_statfs_f_flags
10977 case "$d_statfs_f_flags" in
10978 "$define") echo "Yes, it does." ;;
10979 *) echo "No, it doesn't." ;;
10982 : see if _ptr and _cnt from stdio act std
10984 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10985 echo "(Looks like you have stdio.h from Linux.)"
10986 case "$stdio_ptr" in
10987 '') stdio_ptr='((fp)->_IO_read_ptr)'
10990 *) ptr_lval=$d_stdio_ptr_lval;;
10992 case "$stdio_cnt" in
10993 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10996 *) cnt_lval=$d_stdio_cnt_lval;;
10998 case "$stdio_base" in
10999 '') stdio_base='((fp)->_IO_read_base)';;
11001 case "$stdio_bufsiz" in
11002 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11005 case "$stdio_ptr" in
11006 '') stdio_ptr='((fp)->_ptr)'
11009 *) ptr_lval=$d_stdio_ptr_lval;;
11011 case "$stdio_cnt" in
11012 '') stdio_cnt='((fp)->_cnt)'
11015 *) cnt_lval=$d_stdio_cnt_lval;;
11017 case "$stdio_base" in
11018 '') stdio_base='((fp)->_base)';;
11020 case "$stdio_bufsiz" in
11021 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11024 : test whether _ptr and _cnt really work
11025 echo "Checking how std your stdio is..." >&4
11028 #define FILE_ptr(fp) $stdio_ptr
11029 #define FILE_cnt(fp) $stdio_cnt
11031 FILE *fp = fopen("try.c", "r");
11034 18 <= FILE_cnt(fp) &&
11035 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11043 if eval $compile; then
11045 echo "Your stdio acts pretty std."
11048 echo "Your stdio isn't very std."
11051 echo "Your stdio doesn't appear very std."
11057 : Can _ptr be used as an lvalue?
11058 case "$d_stdstdio$ptr_lval" in
11059 $define$define) val=$define ;;
11062 set d_stdio_ptr_lval
11065 : Can _cnt be used as an lvalue?
11066 case "$d_stdstdio$cnt_lval" in
11067 $define$define) val=$define ;;
11070 set d_stdio_cnt_lval
11073 : see if _base is also standard
11075 case "$d_stdstdio" in
11079 #define FILE_base(fp) $stdio_base
11080 #define FILE_bufsiz(fp) $stdio_bufsiz
11082 FILE *fp = fopen("try.c", "r");
11085 19 <= FILE_bufsiz(fp) &&
11086 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11093 if eval $compile; then
11095 echo "And its _base field acts std."
11098 echo "But its _base field isn't std."
11101 echo "However, it seems to be lacking the _base field."
11110 Checking how to access stdio streams by file descriptor number...
11112 case "$stdio_stream_array" in
11113 '') $cat >try.c <<EOCP
11116 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11120 for s in _iob __iob __sF
11122 set try -DSTDIO_STREAM_ARRAY=$s
11123 if eval $compile; then
11124 case "`./try$exe_ext`" in
11125 yes) stdio_stream_array=$s; break ;;
11129 $rm -f try.* try$exe_ext
11131 case "$stdio_stream_array" in
11133 I can't figure out how to access stdio streams by file descriptor number.
11135 d_stdio_stream_array="$undef"
11138 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11140 d_stdio_stream_array="$define"
11144 : see if strcoll exists
11145 set strcoll d_strcoll
11148 : check for structure copying
11150 echo "Checking to see if your C compiler can copy structs..." >&4
11151 $cat >try.c <<'EOCP'
11161 if $cc -c try.c >/dev/null 2>&1 ; then
11163 echo "Yup, it can."
11166 echo "Nope, it can't."
11172 : see if strerror and/or sys_errlist[] exist
11174 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11175 if set strerror val -f d_strerror; eval $csym; $val; then
11176 echo 'strerror() found.' >&4
11177 d_strerror="$define"
11178 d_strerrm='strerror(e)'
11179 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11180 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11181 d_syserrlst="$define"
11183 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11184 d_syserrlst="$undef"
11186 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11187 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11188 echo 'strerror() found in string header.' >&4
11189 d_strerror="$define"
11190 d_strerrm='strerror(e)'
11191 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11192 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11193 d_syserrlst="$define"
11195 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11196 d_syserrlst="$undef"
11198 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11199 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11200 d_strerror="$undef"
11201 d_syserrlst="$define"
11202 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11204 echo 'strerror() and sys_errlist[] NOT found.' >&4
11205 d_strerror="$undef"
11206 d_syserrlst="$undef"
11207 d_strerrm='"unknown"'
11211 : see if strtod exists
11212 set strtod d_strtod
11215 : see if strtol exists
11216 set strtol d_strtol
11219 : see if strtold exists
11220 set strtold d_strtold
11223 : see if strtoll exists
11224 set strtoll d_strtoll
11227 : see if strtoul exists
11228 set strtoul d_strtoul
11231 : see if strtoull exists
11232 set strtoull d_strtoull
11235 : see if strtouq exists
11236 set strtouq d_strtouq
11239 : see if strxfrm exists
11240 set strxfrm d_strxfrm
11243 : see if symlink exists
11244 set symlink d_symlink
11247 : see if syscall exists
11248 set syscall d_syscall
11251 : see if sysconf exists
11252 set sysconf d_sysconf
11255 : see if system exists
11256 set system d_system
11259 : see if tcgetpgrp exists
11260 set tcgetpgrp d_tcgetpgrp
11263 : see if tcsetpgrp exists
11264 set tcsetpgrp d_tcsetpgrp
11267 : see if prototype for telldir is available
11269 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11272 : see if this is a sys/times.h system
11273 set sys/times.h i_systimes
11276 : see if times exists
11278 if set times val -f d_times; eval $csym; $val; then
11279 echo 'times() found.' >&4
11282 case "$i_systimes" in
11283 "$define") inc='sys/times.h';;
11285 rp="What is the type returned by times() on this system?"
11286 set clock_t clocktype long stdio.h sys/types.h $inc
11289 echo 'times() NOT found, hope that will do.' >&4
11294 : see if truncate exists
11295 set truncate d_truncate
11298 : see if tzname[] exists
11300 if set tzname val -a d_tzname; eval $csym; $val; then
11302 echo 'tzname[] found.' >&4
11305 echo 'tzname[] NOT found.' >&4
11310 : see if umask exists
11314 : see if ustat exists
11318 : backward compatibility for d_hvfork
11319 if test X$d_hvfork != X; then
11320 d_vfork="$d_hvfork"
11323 : see if there is a vfork
11328 : Ok, but do we want to use it. vfork is reportedly unreliable in
11329 : perl on Solaris 2.x, and probably elsewhere.
11333 case "$usevfork" in
11339 Perl can only use a vfork() that doesn't suffer from strict
11340 restrictions on calling functions or modifying global data in
11341 the child. For example, glibc-2.1 contains such a vfork()
11342 that is unsuitable. If your system provides a proper fork()
11343 call, chances are that you do NOT want perl to use vfork().
11346 rp="Do you still want to use vfork()?"
11351 echo "Ok, we won't use vfork()."
11360 $define) usevfork='true';;
11361 *) usevfork='false';;
11364 : see if this is an sysdir system
11365 set sys/dir.h i_sysdir
11368 : see if this is an sysndir system
11369 set sys/ndir.h i_sysndir
11372 : see if closedir exists
11373 set closedir d_closedir
11376 case "$d_closedir" in
11379 echo "Checking whether closedir() returns a status..." >&4
11380 cat > closedir.c <<EOM
11381 #$i_dirent I_DIRENT /**/
11382 #$i_sysdir I_SYS_DIR /**/
11383 #$i_sysndir I_SYS_NDIR /**/
11384 #$i_systypes I_SYS_TYPES /**/
11386 #if defined(I_SYS_TYPES)
11387 #include <sys/types.h>
11389 #if defined(I_DIRENT)
11390 #include <dirent.h>
11391 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11392 #include <sys/dir.h>
11396 #include <sys/ndir.h>
11400 #include <ndir.h> /* may be wrong in the future */
11402 #include <sys/dir.h>
11407 int main() { return closedir(opendir(".")); }
11410 if eval $compile_ok; then
11411 if ./closedir > /dev/null 2>&1 ; then
11412 echo "Yes, it does."
11415 echo "No, it doesn't."
11419 echo "(I can't seem to compile the test program--assuming it doesn't)"
11427 set d_void_closedir
11430 : check for volatile keyword
11432 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11433 $cat >try.c <<'EOCP'
11436 typedef struct _goo_struct goo_struct;
11437 goo_struct * volatile goo = ((goo_struct *)0);
11438 struct _goo_struct {
11443 typedef unsigned short foo_t;
11444 char *volatile foo;
11446 volatile foo_t blech;
11450 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11452 echo "Yup, it does."
11455 echo "Nope, it doesn't."
11461 : see if there is a wait4
11465 : see if waitpid exists
11466 set waitpid d_waitpid
11469 : see if wcstombs exists
11470 set wcstombs d_wcstombs
11473 : see if wctomb exists
11474 set wctomb d_wctomb
11477 : preserve RCS keywords in files with variable substitution, grrr
11482 Revision='$Revision'
11484 case "$crosscompile" in
11485 ''|[nN]*) crosscompile="$undef" ;;
11489 next|rhapsody) multiarch="$define" ;;
11491 case "$multiarch" in
11492 ''|[nN]*) multiarch="$undef" ;;
11495 : check for alignment requirements
11497 case "$crosscompile$multiarch" in
11500 You seem to be either cross-compiling or doing a multiarchitecture build,
11501 skipping the memory alignment check.
11504 case "$alignbytes" in
11505 '') alignbytes=8 ;;
11509 case "$alignbytes" in
11510 '') echo "Checking alignment constraints..." >&4
11511 $cat >try.c <<'EOCP'
11519 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11524 if eval $compile_ok; then
11528 echo "(I can't seem to compile the test program...)"
11531 *) dflt="$alignbytes"
11534 rp="Doubles must be aligned on a how-many-byte boundary?"
11542 : check for ordering of bytes in a long
11544 case "$crosscompile$multiarch" in
11547 You seem to be either cross-compiling or doing a multiarchitecture build,
11548 skipping the byteorder check.
11554 case "$byteorder" in
11557 In the following, larger digits indicate more significance. A big-endian
11558 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11559 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11560 machines may have weird orders like 3412. A Cray will report 87654321,
11561 an Alpha will report 12345678. If the test program works the default is
11563 I'm now running the test program...
11565 $cat >try.c <<'EOCP'
11572 char c[sizeof(long)];
11575 if (sizeof(long) > 4)
11576 u.l = (0x08070605L << 32) | 0x04030201L;
11579 for (i = 0; i < sizeof(long); i++)
11580 printf("%c", u.c[i]+'0');
11587 if eval $compile && ./try > /dev/null; then
11590 [1-4][1-4][1-4][1-4]|12345678|87654321)
11591 echo "(The test program ran ok.)"
11592 echo "byteorder=$dflt"
11595 ????|????????) echo "(The test program ran ok.)" ;;
11596 *) echo "(The test program didn't run right for some reason.)" ;;
11601 (I can't seem to compile the test program. Guessing big-endian...)
11604 case "$xxx_prompt" in
11606 rp="What is the order of bytes in a long?"
11620 : how do we catenate cpp tokens here?
11622 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11623 $cat >cpp_stuff.c <<'EOCP'
11624 #define RCAT(a,b)a/**/b
11625 #define ACAT(a,b)a ## b
11629 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11630 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11631 echo "Oh! Smells like ANSI's been here." >&4
11632 echo "We can catify or stringify, separately or together!"
11634 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11635 echo "Ah, yes! The good old days!" >&4
11636 echo "However, in the good old days we don't know how to stringify and"
11637 echo "catify at the same time."
11641 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
11642 to have to edit the values of CAT[2-5] in config.h...
11644 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11648 : see if this is a db.h system
11654 : Check db version.
11656 echo "Checking Berkeley DB version ..." >&4
11662 #include <sys/types.h>
11667 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11668 int Major, Minor, Patch ;
11669 unsigned long Version ;
11670 (void)db_version(&Major, &Minor, &Patch) ;
11671 printf("You have Berkeley DB Version 2 or greater\n");
11673 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11674 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11675 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11676 Major, Minor, Patch) ;
11678 /* check that db.h & libdb are compatible */
11679 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11680 printf("db.h and libdb are incompatible\n") ;
11684 printf("db.h and libdb are compatible\n") ;
11686 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11687 + DB_VERSION_PATCH ;
11689 /* needs to be >= 2.3.4 */
11690 if (Version < 2003004) {
11691 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11692 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11698 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11699 printf("You have Berkeley DB Version 1\n");
11700 exit(0); /* DB version < 2: the coast is clear. */
11702 exit(1); /* <db.h> not Berkeley DB? */
11708 if eval $compile_ok && ./try; then
11709 echo 'Looks OK.' >&4
11711 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
11715 : Remove db from list of libraries to use
11716 echo "Removing unusable -ldb from library list" >&4
11717 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11720 echo "libs = $libs" >&4
11730 : Check the return type needed for hash
11732 echo "Checking return type needed for hash for Berkeley DB ..." >&4
11738 #include <sys/types.h>
11741 #ifndef DB_VERSION_MAJOR
11742 u_int32_t hash_cb (ptr, size)
11750 info.hash = hash_cb;
11754 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11755 if $contains warning try.out >>/dev/null 2>&1 ; then
11758 db_hashtype='u_int32_t'
11761 : XXX Maybe we should just give up here.
11762 db_hashtype=u_int32_t
11764 echo "Help: I can't seem to compile the db test program." >&4
11765 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11768 echo "Your version of Berkeley DB uses $db_hashtype for hash."
11770 *) db_hashtype=u_int32_t
11775 : Check the return type needed for prefix
11777 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11783 #include <sys/types.h>
11786 #ifndef DB_VERSION_MAJOR
11787 size_t prefix_cb (key1, key2)
11795 info.prefix = prefix_cb;
11799 if $cc $ccflags -c try.c >try.out 2>&1 ; then
11800 if $contains warning try.out >>/dev/null 2>&1 ; then
11801 db_prefixtype='int'
11803 db_prefixtype='size_t'
11806 db_prefixtype='size_t'
11807 : XXX Maybe we should just give up here.
11809 echo "Help: I can't seem to compile the db test program." >&4
11810 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11813 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11815 *) db_prefixtype='size_t'
11819 : check for void type
11821 echo "Checking to see how well your C compiler groks the void type..." >&4
11822 case "$voidflags" in
11824 $cat >try.c <<'EOCP'
11830 extern void moo(); /* function returning void */
11831 void (*goo)(); /* ptr to func returning void */
11833 void *hue; /* generic ptr */
11846 int main() { sub(); }
11848 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11849 voidflags=$defvoidused
11850 echo "Good. It appears to support void to the level $package wants.">&4
11851 if $contains warning .out >/dev/null 2>&1; then
11852 echo "However, you might get some warnings that look like this:"
11856 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11857 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11858 echo "It supports 1..."
11859 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11860 echo "It also supports 2..."
11861 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11863 echo "And it supports 4 but not 8 definitely."
11865 echo "It doesn't support 4..."
11866 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11868 echo "But it supports 8."
11871 echo "Neither does it support 8."
11875 echo "It does not support 2..."
11876 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11878 echo "But it supports 4 and 8."
11880 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11882 echo "And it supports 4 but has not heard about 8."
11884 echo "However it supports 8 but not 4."
11889 echo "There is no support at all for void."
11894 case "$voidflags" in
11896 *) $cat >&4 <<'EOM'
11897 Support flag bits are:
11898 1: basic void declarations.
11899 2: arrays of pointers to functions returning void.
11900 4: operations between pointers to and addresses of void functions.
11901 8: generic void pointers.
11904 rp="Your void support flags add up to what?"
11912 : How can we generate normalized random numbers ?
11914 echo "Looking for a random number function..." >&4
11915 case "$randfunc" in
11917 if set drand48 val -f; eval $csym; $val; then
11919 echo "Good, found drand48()." >&4
11920 elif set random val -f; eval $csym; $val; then
11922 echo "OK, found random()." >&4
11925 echo "Yick, looks like I have to use rand()." >&4
11936 *-Dmy_rand=*|*-Dmy_srand=*)
11937 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11938 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11939 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11940 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11944 while $test "$cont"; do
11945 rp="Use which function to generate random numbers?"
11947 if $test "$ans" = "$dflt"; then
11953 if set $ans val -f; eval $csym; $val; then
11957 rp="I cannot find function $ans. Use that name anyway?"
11966 case "$randfunc" in
11968 drand01="drand48()"
11974 case "$randbits" in
11976 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11978 #$i_unistd I_UNISTD
11979 #$i_stdlib I_STDLIB
11982 # include <unistd.h>
11985 # include <stdlib.h>
11990 register unsigned long tmp;
11991 register unsigned long max = 0L;
11993 for (i = 1000; i; i--) {
11994 tmp = (unsigned long) $randfunc();
11995 if (tmp > max) max = tmp;
11997 for (i = 0; max; i++)
12003 if eval $compile_ok; then
12007 echo "(I can't seem to compile the test program...)"
12014 rp="How many bits does your $randfunc() function produce?"
12018 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12019 seedfunc="s$randfunc"
12020 randseedtype=unsigned
12024 rp="How many bits does your $randfunc() function produce?"
12027 seedfunc="s$randfunc"
12028 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12029 if set $seedfunc val -f; eval $csym; $val; then
12030 echo "(Using $seedfunc() to seed random generator)"
12032 echo "(Warning: no $seedfunc() to seed random generator)"
12035 randseedtype=unsigned
12043 echo "Determining whether or not we are on an EBCDIC system..." >&4
12044 $cat >tebcdic.c <<'EOM'
12047 if ('M'==0xd4) return 0;
12054 if eval $compile_ok; then
12056 echo "You have EBCDIC." >&4
12059 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12062 echo "I'm unable to compile the test program." >&4
12063 echo "I'll assume ASCII or some ISO Latin." >&4
12065 $rm -f tebcdic.c tebcdic
12071 Checking how to flush all pending stdio output...
12073 # I only know how to find the first 32 possibly open files on SunOS.
12074 # See also hints/sunos_4_1.sh and util.c --AD
12076 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12078 $cat >>try.c <<EOCP
12080 #$i_unistd I_UNISTD
12082 # include <unistd.h>
12084 #$d_sysconf HAS_SYSCONF
12085 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12086 #ifdef HAS_STDIO_STREAM_ARRAY
12087 # define STDIO_STREAM_ARRAY $stdio_stream_array
12090 FILE* p = fopen("try.out", "w");
12094 # ifdef TRY_FPRINTF
12098 #ifdef TRY_FFLUSH_NULL
12101 #ifdef TRY_FFLUSH_ALL
12103 long open_max = -1;
12104 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12105 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12107 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12108 open_max = sysconf(_SC_OPEN_MAX);
12111 open_max = FOPEN_MAX;
12114 open_max = OPEN_MAX;
12123 # ifdef HAS_STDIO_STREAM_ARRAY
12124 if (open_max > 0) {
12126 for (i = 0; i < open_max; i++)
12127 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12128 STDIO_STREAM_ARRAY[i]._file < open_max &&
12129 STDIO_STREAM_ARRAY[i]._flag)
12130 fflush(&STDIO_STREAM_ARRAY[i]);
12138 : first we have to find out how _not_ to flush
12139 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12141 set try -DTRY_FPUTC
12142 if eval $compile; then
12144 ./try$exe_ext 2>/dev/null
12145 if $test ! -s try.out -a "X$?" = X42; then
12151 set try -DTRY_FPRINTF
12153 if eval $compile; then
12155 ./try$exe_ext 2>/dev/null
12156 if $test ! -s try.out -a "X$?" = X42; then
12157 output=-DTRY_FPRINTF
12163 : check for fflush NULL behaviour
12164 case "$fflushNULL" in
12165 '') set try -DTRY_FFLUSH_NULL $output
12166 if eval $compile; then
12168 ./try$exe_ext 2>/dev/null
12170 if $test -s try.out -a "X$code" = X42; then
12171 fflushNULL="`$cat try.out`"
12173 if $test "X$code" != X42; then
12175 (If this test failed, don't worry, we'll try another method shortly.)
12180 $rm -f core try.core core.try.*
12181 case "$fflushNULL" in
12183 Your fflush(NULL) works okay.
12185 fflushNULL="$define"
12188 Your fflush(NULL) isn't working (contrary to ANSI C).
12190 fflushNULL="$undef"
12193 Cannot figure out whether your fflush(NULL) works or not.
12194 I'm assuming it doesn't (contrary to ANSI C).
12196 fflushNULL="$undef"
12200 $define|true|[yY]*)
12201 fflushNULL="$define"
12204 fflushNULL="$undef"
12207 : check explicit looping only if NULL did not work
12208 case "$fflushNULL" in
12210 : check for fflush all behaviour
12211 case "$fflushall" in
12212 '') set try -DTRY_FFLUSH_ALL $output
12213 if eval $compile; then
12215 (Now testing the other method--but note that also this may fail.)
12218 ./try$exe_ext 2>/dev/null
12219 if $test -s try.out -a "X$?" = X42; then
12220 fflushall="`$cat try.out`"
12223 $rm -f core try.core core.try.*
12224 case "$fflushall" in
12226 Whew. Flushing explicitly all the stdio streams works.
12228 fflushall="$define"
12231 Sigh. Flushing explicitly all the stdio streams doesn't work.
12236 Cannot figure out whether flushing stdio streams explicitly works or not.
12237 I'm assuming it doesn't.
12243 "$define"|true|[yY]*)
12244 fflushall="$define"
12251 *) fflushall="$undef"
12254 case "$fflushNULL$fflushall" in
12257 I cannot figure out how to flush pending stdio output.
12261 $rm -f try.* try$exe_ext
12263 : Store the full pathname to the ar program for use in the C program
12264 : Respect a hint or command line value for full_ar.
12269 : Store the full pathname to the sed program for use in the C program
12272 : see what type gids are declared as in the kernel
12274 echo "Looking for the type for group ids returned by getgid()."
12275 set gid_t gidtype xxx stdio.h sys/types.h
12279 xxx=`./findhdr sys/user.h`
12280 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12282 unsigned) dflt="$1 $2" ;;
12286 *) dflt="$gidtype";;
12289 gid_t) echo "gid_t found." ;;
12290 *) rp="What is the type for group ids returned by getgid()?"
12298 *_t) zzz="$gidtype" ;;
12301 echo "Checking the size of $zzz..." >&4
12303 #include <sys/types.h>
12306 printf("%d\n", (int)sizeof($gidtype));
12311 if eval $compile_ok; then
12315 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12318 echo "Your $zzz size is $gidsize bytes."
12323 echo "(I can't compile the test program--guessing $gidsize.)" >&4
12329 *_t) zzz="$gidtype" ;;
12332 echo "Checking the sign of $zzz..." >&4
12334 #include <sys/types.h>
12345 if eval $compile; then
12349 echo "(I can't execute the test program--guessing unsigned.)" >&4
12353 1) echo "Your $zzz is unsigned." ;;
12354 -1) echo "Your $zzz is signed." ;;
12360 echo "(I can't compile the test program--guessing unsigned.)" >&4
12366 if $test X"$quadtype" != X; then
12368 echo "Checking how to print 64-bit integers..." >&4
12370 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12371 $cat >try.c <<'EOCP'
12372 #include <sys/types.h>
12375 int q = 12345678901;
12376 printf("%ld\n", q);
12380 if eval $compile; then
12381 yyy=`./try$exe_ext`
12384 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12385 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12386 echo "We will use %d."
12392 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12393 $cat >try.c <<'EOCP'
12394 #include <sys/types.h>
12397 long q = 12345678901;
12398 printf("%ld\n", q);
12402 if eval $compile; then
12403 yyy=`./try$exe_ext`
12406 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12407 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12408 echo "We will use %ld."
12414 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12415 $cat >try.c <<'EOCP'
12416 #include <sys/types.h>
12417 #include <inttypes.h>
12420 int64_t q = 12345678901;
12421 printf("%" PRId64 "\n", q);
12425 if eval $compile; then
12426 yyy=`./try$exe_ext`
12429 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12430 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12431 echo "We will use the C9X style."
12437 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12438 $cat >try.c <<'EOCP'
12439 #include <sys/types.h>
12442 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12443 printf("%lld\n", q);
12447 if eval $compile; then
12448 yyy=`./try$exe_ext`
12451 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12452 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12453 echo "We will use the %lld style."
12459 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12461 #include <sys/types.h>
12464 $quadtype q = 12345678901;
12465 printf("%Ld\n", q);
12469 if eval $compile; then
12470 yyy=`./try$exe_ext`
12473 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12474 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12475 echo "We will use %Ld."
12481 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12483 #include <sys/types.h>
12486 $quadtype q = 12345678901;
12487 printf("%qd\n", q);
12491 if eval $compile; then
12492 yyy=`./try$exe_ext`
12495 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12496 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12497 echo "We will use %qd."
12503 if $test X"$sPRId64" = X; then
12504 echo "Cannot figure out how to print 64-bit integers." >&4
12512 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
12513 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
12515 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
12516 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
12522 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12524 if $test X"$ivsize" = X8; then
12525 ivdformat="$sPRId64"
12526 uvuformat="$sPRIu64"
12527 uvoformat="$sPRIo64"
12528 uvxformat="$sPRIx64"
12530 if $test X"$ivsize" = X"$longsize"; then
12536 if $test X"$ivsize" = X"$intsize"; then
12543 if $test X"$ivsize" = X"$shortsize"; then
12553 case "$ivdformat" in
12554 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12561 $echo "Checking the format string to be used for gids..." >&4
12564 -1) if $test X"$gidsize" = X"$ivsize"; then
12565 gidformat="$ivdformat"
12567 if $test X"$gidsize" = X"$longsize"; then
12570 if $test X"$gidsize" = X"$intsize"; then
12573 if $test X"$gidsize" = X"$shortsize"; then
12580 *) if $test X"$gidsize" = X"$uvsize"; then
12581 gidformat="$uvuformat"
12583 if $test X"$gidsize" = X"$longsize"; then
12586 if $test X"$gidsize" = X"$intsize"; then
12589 if $test X"$gidsize" = X"$shortsize"; then
12598 : see if getgroups exists
12599 set getgroups d_getgrps
12602 : see if setgroups exists
12603 set setgroups d_setgrps
12607 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12609 case "$d_getgrps$d_setgrps" in
12611 case "$groupstype" in
12612 '') dflt="$gidtype" ;;
12613 *) dflt="$groupstype" ;;
12616 What type of pointer is the second argument to getgroups() and setgroups()?
12617 Usually this is the same as group ids, $gidtype, but not always.
12620 rp='What type pointer is the second argument to getgroups() and setgroups()?'
12624 *) groupstype="$gidtype";;
12628 echo "Checking if your $make program sets \$(MAKE)..." >&4
12629 case "$make_set_make" in
12631 $sed 's/^X //' > testmake.mak << 'EOF'
12633 X @echo 'maketemp="$(MAKE)"'
12635 case "`$make -f testmake.mak 2>/dev/null`" in
12636 *maketemp=*) make_set_make='#' ;;
12637 *) make_set_make="MAKE=$make" ;;
12639 $rm -f testmake.mak
12642 case "$make_set_make" in
12643 '#') echo "Yup, it does.";;
12644 *) echo "Nope, it doesn't.";;
12647 : see if this is a sys/mman.h system
12648 set sys/mman.h i_sysmman
12651 : see if mmap exists
12654 : see what shmat returns
12655 : default to something harmless
12657 case "$i_sysmman$d_mmap" in
12659 $cat >mmap.c <<'END'
12660 #include <sys/mman.h>
12663 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
12668 echo "and it returns ($mmaptype)." >&4
12674 : see what type is used for mode_t
12675 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12676 set mode_t modetype int stdio.h sys/types.h
12679 : define a fucntion to check prototypes
12680 $cat > protochk <<EOSH
12683 optimize="$optimize"
12685 prototype="$prototype"
12690 $cat >> protochk <<'EOSH'
12695 while test $# -ge 2; do
12697 $define) echo "#include <$2>" >> try.c ;;
12698 literal) echo "$2" >> try.c ;;
12702 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
12703 cat >> try.c <<'EOCP'
12704 #ifdef CAN_PROTOTYPE
12705 #define _(args) args
12710 echo "$foo" >> try.c
12711 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12712 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12718 $eunicefix protochk
12720 : see what type is used for size_t
12721 rp="What is the type used for the length parameter for string functions?"
12722 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12725 : check for type of arguments to gethostbyaddr.
12726 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12727 case "$d_gethbyaddr" in
12731 Checking to see what type of arguments are accepted by gethostbyaddr().
12733 hdrs="$define sys/types.h
12734 $d_socket sys/socket.h
12735 $i_niin netinet/in.h
12737 $i_unistd unistd.h"
12738 : The first arg can 'char *' or 'void *'
12739 : The second arg is some of integral type
12740 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12741 for yyy in size_t long int; do
12742 case "$netdb_host_type" in
12743 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12744 if ./protochk "$try" $hdrs; then
12745 echo "Your system accepts $xxx for the first arg."
12746 echo "...and $yyy for the second arg."
12747 netdb_host_type="$xxx"
12748 netdb_hlen_type="$yyy"
12754 : In case none of those worked, prompt the user.
12755 case "$netdb_host_type" in
12756 '') rp='What is the type for the 1st argument to gethostbyaddr?'
12759 netdb_host_type=$ans
12760 rp='What is the type for the 2nd argument to gethostbyaddr?'
12763 netdb_hlen_type=$ans
12767 *) : no gethostbyaddr, so pick harmless defaults
12768 netdb_host_type='char *'
12769 netdb_hlen_type="$sizetype"
12772 # Remove the "const" if needed. -- but then we'll have a
12774 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12777 : check for type of argument to gethostbyname.
12778 if test "X$netdb_name_type" = X ; then
12779 case "$d_gethbyname" in
12783 Checking to see what type of argument is accepted by gethostbyname().
12785 hdrs="$define sys/types.h
12786 $d_socket sys/socket.h
12787 $i_niin netinet/in.h
12789 $i_unistd unistd.h"
12790 for xxx in "const char *" "char *"; do
12791 case "$netdb_name_type" in
12792 '') try="extern struct hostent *gethostbyname($xxx);"
12793 if ./protochk "$try" $hdrs; then
12794 echo "Your system accepts $xxx."
12795 netdb_name_type="$xxx"
12800 : In case none of those worked, prompt the user.
12801 case "$netdb_name_type" in
12802 '') rp='What is the type for the 1st argument to gethostbyname?'
12805 netdb_name_type=$ans
12809 *) : no gethostbyname, so pick harmless default
12810 netdb_name_type='char *'
12815 : check for type of 1st argument to getnetbyaddr.
12816 if test "X$netdb_net_type" = X ; then
12817 case "$d_getnbyaddr" in
12821 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12823 hdrs="$define sys/types.h
12824 $d_socket sys/socket.h
12825 $i_niin netinet/in.h
12827 $i_unistd unistd.h"
12828 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12829 case "$netdb_net_type" in
12830 '') try="extern struct netent *getnetbyaddr($xxx, int);"
12831 if ./protochk "$try" $hdrs; then
12832 echo "Your system accepts $xxx."
12833 netdb_net_type="$xxx"
12838 : In case none of those worked, prompt the user.
12839 case "$netdb_net_type" in
12840 '') rp='What is the type for the 1st argument to getnetbyaddr?'
12843 netdb_net_type=$ans
12847 *) : no getnetbyaddr, so pick harmless default
12848 netdb_net_type='long'
12852 : locate the preferred pager for this system
12866 '') dflt=/usr/ucb/more;;
12873 rp='What pager is used on your system?'
12877 : see what type pids are declared as in the kernel
12878 rp="What is the type of process ids on this system?"
12879 set pid_t pidtype int stdio.h sys/types.h
12882 : Find earliest binary compatible site_perl subdirectory perl can use.
12883 case "$bincompat5005" in
12884 "$define") xs_apiversion='5.005' ;;
12885 *) xs_apiversion=$version ;; # The current site_perl version.
12887 : Find earliest pure perl site_perl subdirectory perl can use.
12888 : The versioned directories started at 5.005.
12889 pm_apiversion='5.005'
12891 : check for length of pointer
12895 $echo $n "Checking to see how big your pointers are...$c" >&4
12896 if test "$voidflags" -gt 7; then
12897 echo '#define VOID_PTR char *' > try.c
12899 echo '#define VOID_PTR void *' > try.c
12901 $cat >>try.c <<'EOCP'
12905 printf("%d\n", (int)sizeof(VOID_PTR));
12910 if eval $compile_ok; then
12912 $echo " $ptrsize bytes." >&4
12915 echo "(I can't seem to compile the test program. Guessing...)" >&4
12916 rp="What is the size of a pointer (in bytes)?"
12924 : see if ar generates random libraries by itself
12926 echo "Checking how to generate random libraries on your machine..." >&4
12927 echo 'int bar1() { return bar2(); }' > bar1.c
12928 echo 'int bar2() { return 2; }' > bar2.c
12929 $cat > foo.c <<'EOP'
12930 int main() { printf("%d\n", bar1()); exit(0); }
12932 $cc $ccflags -c bar1.c >/dev/null 2>&1
12933 $cc $ccflags -c bar2.c >/dev/null 2>&1
12934 $cc $ccflags -c foo.c >/dev/null 2>&1
12935 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12936 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12937 ./foobar >/dev/null 2>&1; then
12938 echo "$ar appears to generate random libraries itself."
12941 elif $ar ts bar$_a >/dev/null 2>&1 &&
12942 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12943 ./foobar >/dev/null 2>&1; then
12944 echo "a table of contents needs to be added with '$ar ts'."
12951 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12952 $test -f $ranlib || ranlib=''
12955 if $test -n "$ranlib"; then
12956 echo "your system has '$ranlib'; we'll use that."
12959 echo "your system doesn't seem to support random libraries"
12960 echo "so we'll use lorder and tsort to order the libraries."
12967 : check for type of arguments to select.
12968 case "$selecttype" in
12969 '') case "$d_select" in
12973 Checking to see what type of arguments are accepted by select().
12975 hdrs="$define sys/types.h
12976 $i_systime sys/time.h
12977 $i_sysselct sys/select.h
12978 $d_socket sys/socket.h"
12979 : The first arg can be int, unsigned, or size_t
12980 : The last arg may or may not be 'const'
12982 : void pointer has been seen but using that
12983 : breaks the selectminbits test
12984 for xxx in 'fd_set *' 'int *'; do
12985 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12986 for tmo in 'struct timeval *' 'const struct timeval *'; do
12988 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12989 if ./protochk "$try" $hdrs; then
12990 echo "Your system accepts $xxx."
12999 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13000 case "$d_fd_set" in
13001 $define) dflt="fd_set *" ;;
13010 *) : no select, so pick a harmless default
13017 : check for the select 'width'
13018 case "$selectminbits" in
13019 '') case "$d_select" in
13023 Checking to see on how many bits at a time your select() operates...
13026 #include <sys/types.h>
13028 #$i_systime I_SYS_TIME
13029 #$i_systimek I_SYS_TIME_KERNEL
13034 # ifdef I_SYS_TIME_KERNEL
13037 # include <sys/time.h>
13038 # ifdef I_SYS_TIME_KERNEL
13042 #$i_sysselct I_SYS_SELECT
13043 #ifdef I_SYS_SELECT
13044 #include <sys/select.h>
13046 #$d_socket HAS_SOCKET
13048 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13052 #define S sizeof(*(b))
13054 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13055 #define NBITS (NBYTES * 8)
13064 fp = fopen("try.c", "r");
13070 b = ($selecttype)s;
13071 for (i = 0; i < NBITS; i++)
13075 select(fd + 1, b, 0, 0, &t);
13076 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13077 printf("%d\n", i + 1);
13082 if eval $compile_ok; then
13083 selectminbits=`./try`
13084 case "$selectminbits" in
13086 Cannot figure out on how many bits at a time your select() operates.
13087 I'll play safe and guess it is 32 bits.
13093 *) bits="$selectminbits bits" ;;
13095 echo "Your select() operates on $bits at a time." >&4
13097 rp='What is the minimum number of bits your select() operates on?'
13098 case "$byteorder" in
13099 1234|12345678) dflt=32 ;;
13104 selectminbits="$val"
13108 *) : no select, so pick a harmless default
13115 : Trace out the files included by signal.h, then look for SIGxxx names.
13116 : Remove SIGARRAYSIZE used by HPUX.
13117 : Remove SIGSTKSIZE used by Linux.
13118 : Remove SIGSTKSZ used by Posix.
13119 : Remove SIGTYP void lines used by OS2.
13120 : Some cpps, like os390, dont give the file name anywhere
13121 if [ "X$fieldn" = X ]; then
13122 : Just make some guesses. We check them later.
13123 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13125 xxx=`echo '#include <signal.h>' |
13126 $cppstdin $cppminus $cppflags 2>/dev/null |
13127 $grep '^[ ]*#.*include' |
13128 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13130 : Check this list of files to be sure we have parsed the cpp output ok.
13131 : This will also avoid potentially non-existent files, such
13134 for xx in $xxx /dev/null ; do
13135 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13137 : If we have found no files, at least try signal.h
13138 case "$xxxfiles" in
13139 '') xxxfiles=`./findhdr signal.h` ;;
13142 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13143 print substr($2, 4, 20)
13145 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13146 print substr($3, 4, 20)
13148 : Append some common names just in case the awk scan failed.
13149 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13150 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13151 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13152 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13153 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13155 : generate a few handy files for later
13156 $cat > signal.c <<'EOCP'
13157 #include <sys/types.h>
13158 #include <signal.h>
13162 /* Strange style to avoid deeply-nested #if/#else/#endif */
13165 # define NSIG (_NSIG)
13171 # define NSIG (SIGMAX+1)
13177 # define NSIG (SIG_MAX+1)
13183 # define NSIG (MAXSIG+1)
13189 # define NSIG (MAX_SIG+1)
13194 # ifdef SIGARRAYSIZE
13195 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13201 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13205 /* Default to some arbitrary number that's big enough to get most
13206 of the common signals.
13212 printf("NSIG %d\n", NSIG);
13218 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13220 printf "#ifdef SIG"; printf $1; printf "\n"
13221 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13222 printf $1; printf ");\n"
13226 printf "#endif /* JUST_NSIG */\n";
13227 printf "exit(0);\n}\n";
13230 $cat >signal.awk <<'EOP'
13231 BEGIN { ndups = 0 }
13232 $1 ~ /^NSIG$/ { nsig = $2 }
13233 ($1 !~ /^NSIG$/) && (NF == 2) {
13234 if ($2 > maxsig) { maxsig = $2 }
13235 if (sig_name[$2]) {
13236 dup_name[ndups] = $1
13237 dup_num[ndups] = $2
13249 printf("NSIG %d\n", nsig);
13250 for (n = 1; n < nsig; n++) {
13252 printf("%s %d\n", sig_name[n], sig_num[n])
13255 printf("NUM%d %d\n", n, n)
13258 for (n = 0; n < ndups; n++) {
13259 printf("%s %d\n", dup_name[n], dup_num[n])
13263 $cat >signal_cmd <<EOS
13265 if $test -s signal.lst; then
13266 echo "Using your existing signal.lst file"
13271 $cat >>signal_cmd <<'EOS'
13274 if eval $compile_ok; then
13275 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13277 echo "(I can't seem be able to compile the whole test program)" >&4
13278 echo "(I'll try it in little pieces.)" >&4
13279 set signal -DJUST_NSIG
13280 if eval $compile_ok; then
13281 ./signal$_exe > signal.nsg
13284 echo "I can't seem to figure out how many signals you have." >&4
13285 echo "Guessing 50." >&4
13286 echo 'NSIG 50' > signal.nsg
13288 : Now look at all the signal names, one at a time.
13289 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13290 $cat > signal.c <<EOCP
13291 #include <sys/types.h>
13292 #include <signal.h>
13295 printf("$xx %d\n", SIG${xx});
13300 if eval $compile; then
13301 echo "SIG${xx} found."
13302 ./signal$_exe >> signal.ls1
13304 echo "SIG${xx} NOT found."
13307 if $test -s signal.ls1; then
13308 $cat signal.nsg signal.ls1 |
13309 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13313 if $test -s signal.lst; then
13316 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13317 echo 'kill -l' >signal
13318 set X `csh -f <signal`
13322 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13324 echo $@ | $tr ' ' $trnl | \
13325 $awk '{ printf "%s %d\n", $1, ++s; }
13326 END { printf "NSIG %d\n", ++s }' >signal.lst
13328 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13330 chmod a+x signal_cmd
13331 $eunicefix signal_cmd
13333 : generate list of signal names
13335 case "$sig_name_init" in
13337 *) case "$sig_num_init" in
13338 ''|*,*) doinit=yes ;;
13343 echo "Generating a list of signal names and numbers..." >&4
13345 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13346 sig_name=`$awk 'BEGIN { printf "ZERO " }
13347 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13348 sig_num=`$awk 'BEGIN { printf "0 " }
13349 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13350 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
13351 !/^NSIG/ { printf "\"%s\", ", $1 }
13352 END { printf "0\n" }' signal.lst`
13353 sig_num_init=`$awk 'BEGIN { printf "0, " }
13354 !/^NSIG/ { printf "%d, ", $2}
13355 END { printf "0\n"}' signal.lst`
13358 echo "The following $sig_count signals are available:"
13360 echo $sig_name | $awk \
13361 'BEGIN { linelen = 0 }
13363 for (i = 1; i <= NF; i++) {
13364 name = "SIG" $i " "
13365 linelen = linelen + length(name)
13366 if (linelen > 70) {
13368 linelen = length(name)
13374 $rm -f signal signal.c signal.awk signal.lst signal_cmd
13376 : see what type is used for signed size_t
13377 set ssize_t ssizetype int stdio.h sys/types.h
13380 $cat > ssize.c <<EOM
13382 #include <sys/types.h>
13383 #define Size_t $sizetype
13384 #define SSize_t $dflt
13387 if (sizeof(Size_t) == sizeof(SSize_t))
13389 else if (sizeof(Size_t) == sizeof(int))
13398 if eval $compile_ok && ./ssize > /dev/null; then
13399 ssizetype=`./ssize`
13400 echo "I'll be using $ssizetype for functions returning a byte count." >&4
13403 Help! I can't compile and run the ssize_t test program: please enlighten me!
13404 (This is probably a misconfiguration in your system or libraries, and
13405 you really ought to fix it. Still, I'll try anyway.)
13407 I need a type that is the same size as $sizetype, but is guaranteed to
13408 be signed. Common values are ssize_t, int and long.
13411 rp="What signed type is the same size as $sizetype?"
13415 $rm -f ssize ssize.*
13417 : see what type of char stdio uses.
13419 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13420 echo "Your stdio uses unsigned chars." >&4
13421 stdchar="unsigned char"
13423 echo "Your stdio uses signed chars." >&4
13427 : see if time exists
13429 if test "X$d_time" = X -o X"$timetype" = X; then
13430 if set time val -f d_time; eval $csym; $val; then
13431 echo 'time() found.' >&4
13433 rp="What is the type returned by time() on this system?"
13434 set time_t timetype long stdio.h sys/types.h
13437 echo 'time() not found, hope that will do.' >&4
13445 : see what type uids are declared as in the kernel
13447 echo "Looking for the type for user ids returned by getuid()."
13448 set uid_t uidtype xxx stdio.h sys/types.h
13452 xxx=`./findhdr sys/user.h`
13453 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13455 unsigned) dflt="$1 $2" ;;
13459 *) dflt="$uidtype";;
13462 uid_t) echo "uid_t found." ;;
13463 *) rp="What is the type for user ids returned by getuid()?"
13471 *_t) zzz="$uidtype" ;;
13474 echo "Checking the size of $zzz..." >&4
13476 #include <sys/types.h>
13479 printf("%d\n", (int)sizeof($uidtype));
13484 if eval $compile_ok; then
13488 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13491 echo "Your $zzz size is $uidsize bytes."
13496 echo "(I can't compile the test program--guessing $uidsize.)" >&4
13501 *_t) zzz="$uidtype" ;;
13504 echo "Checking the sign of $zzz..." >&4
13506 #include <sys/types.h>
13517 if eval $compile; then
13521 echo "(I can't execute the test program--guessing unsigned.)" >&4
13525 1) echo "Your $zzz is unsigned." ;;
13526 -1) echo "Your $zzz is signed." ;;
13532 echo "(I can't compile the test program--guessing unsigned.)" >&4
13538 $echo "Checking the format string to be used for uids..." >&4
13541 -1) if $test X"$uidsize" = X"$ivsize"; then
13542 uidformat="$ivdformat"
13544 if $test X"$uidsize" = X"$longsize"; then
13547 if $test X"$uidsize" = X"$intsize"; then
13550 if $test X"$uidsize" = X"$shortsize"; then
13557 *) if $test X"$uidsize" = X"$uvsize"; then
13558 uidformat="$uvuformat"
13560 if $test X"$uidsize" = X"$longsize"; then
13563 if $test X"$uidsize" = X"$intsize"; then
13566 if $test X"$uidsize" = X"$shortsize"; then
13575 : see if dbm.h is available
13576 : see if dbmclose exists
13577 set dbmclose d_dbmclose
13580 case "$d_dbmclose" in
13590 *) set rpcsvc/dbm.h i_rpcsvcdbm
13595 *) echo "We won't be including <dbm.h>"
13605 : see if this is a sys/file.h system
13610 : do we need to include sys/file.h ?
13614 if $h_sysfile; then
13616 echo "We'll be including <sys/file.h>." >&4
13619 echo "We won't be including <sys/file.h>." >&4
13629 : see if fcntl.h is there
13634 : see if we can include fcntl.h
13640 echo "We'll be including <fcntl.h>." >&4
13643 if $h_sysfile; then
13644 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13646 echo "We won't be including <fcntl.h>." >&4
13658 : see if this is a iconv.h system
13659 set iconv.h i_iconv
13662 : see if locale.h is available
13663 set locale.h i_locale
13666 : see if mach cthreads are available
13667 if test "X$usethreads" = "X$define"; then
13668 set mach/cthreads.h i_machcthr
13671 i_machcthr="$undef"
13676 : see if this is a math.h system
13680 : see if this is a mntent.h system
13681 set mntent.h i_mntent
13684 : see if ndbm.h is available
13689 : see if dbm_open exists
13690 set dbm_open d_dbm_open
13692 case "$d_dbm_open" in
13695 echo "We won't be including <ndbm.h>"
13704 : see if net/errno.h is available
13706 set net/errno.h val
13709 : Unfortunately, it causes problems on some systems. Arrgh.
13712 cat > try.c <<'EOM'
13715 #include <net/errno.h>
13721 if $cc $ccflags -c try.c >/dev/null 2>&1; then
13722 echo "We'll be including <net/errno.h>." >&4
13724 echo "We won't be including <net/errno.h>." >&4
13733 : see if netinet/tcp.h is available
13734 set netinet/tcp.h i_netinettcp
13737 : see if this is a poll.h system
13742 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
13743 $cat <<'EOSH' > Cppsym.know
13744 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13745 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13746 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13747 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13748 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13749 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13750 bull c cadmus clipper CMU COFF COMPILER_VERSION
13751 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13752 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13753 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13754 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13755 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13756 H3050R H3050RX hbullx20 hcx host_mips
13757 hp200 hp300 hp700 HP700 hp800 hp9000
13758 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13759 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13760 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13761 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13762 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13763 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13764 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13765 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13766 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13767 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13768 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13769 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13770 MATH_HAS_NO_SIDE_EFFECTS
13771 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13772 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13773 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13774 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13775 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13776 NetBSD news1500 news1700 news1800 news1900 news3700
13777 news700 news800 news900 NeXT NLS ns16000 ns32000
13778 ns32016 ns32332 ns32k nsc32000
13779 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13780 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13781 pc532 pdp11 PGC PIC plexus PORTAR posix
13782 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
13783 POSIX_C_SOURCE POSIX_SOURCE POWER
13784 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
13785 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
13786 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
13787 sony sony_news sonyrisc sparc sparclite spectrum
13788 stardent stdc STDC_EXT stratos sun sun3 sun386
13789 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
13790 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
13791 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
13792 sysV68 sysV88 Tek4132 Tek4300 titan
13793 tower tower32 tower32_200 tower32_600 tower32_700
13794 tower32_800 tower32_850 tss
13795 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
13796 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
13797 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
13798 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
13799 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
13800 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
13803 # Maybe put other stuff here too.
13804 cat <<EOSH >>Cppsym.know
13807 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13808 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13809 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
13810 $rm -f Cppsym.a Cppsym.b
13811 cat <<EOSH > Cppsym
13813 if $test \$# -gt 0; then
13814 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13815 if $test -s Cppsym.got; then
13822 $tr " " "$trnl" | ./Cppsym.try
13828 cat <<EOSH > Cppsym.try
13830 cat <<'EOCP' > try.c
13836 cat <<'EOSH' >> Cppsym.try
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
13839 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
13840 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
13841 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
13845 cat <<EOSH >> Cppsym.try
13847 optimize="$optimize"
13852 $cc $optimize $ccflags $ldflags -o try$exe_ext try.c $libs && ./try$exe_ext
13854 chmod +x Cppsym.try
13855 $eunicefix Cppsym.try
13856 ./Cppsym < Cppsym.know > Cppsym.true
13857 : now check the C compiler for additional symbols
13858 postprocess_cc_v=''
13860 aix) postprocess_cc_v="|$tr , ' '" ;;
13867 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13870 -D*) echo "\$i" | $sed 's/^-D//';;
13871 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13876 postprocess_cc_v=''
13879 ./ccsym > ccsym1.raw
13880 if $test -s ccsym1.raw; then
13881 $sort ccsym1.raw | $uniq >ccsym.raw
13883 mv ccsym1.raw ccsym.raw
13886 $awk '/\=/ { print $0; next }
13887 { print $0"=1" }' ccsym.raw >ccsym.list
13888 $awk '/\=/ { print $0; next }
13889 { print $0"=1" }' Cppsym.true >ccsym.true
13890 $comm -13 ccsym.true ccsym.list >ccsym.own
13891 $comm -12 ccsym.true ccsym.list >ccsym.com
13892 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13894 if $test -z ccsym.raw; then
13895 echo "Your C compiler doesn't seem to define any symbols!" >&4
13897 echo "However, your C preprocessor defines the following symbols:"
13900 cppsymbols=`$cat Cppsym.true`
13901 cppsymbols=`echo $cppsymbols`
13902 cppccsymbols="$cppsymbols"
13904 if $test -s ccsym.com; then
13905 echo "Your C compiler and pre-processor define these symbols:"
13906 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13909 cppccsymbols=`$cat ccsym.com`
13910 cppccsymbols=`echo $cppccsymbols`
13911 $test "$silent" || sleep 1
13913 if $test -s ccsym.cpp; then
13914 $test "$also" && echo " "
13915 echo "Your C pre-processor ${also}defines the following symbols:"
13916 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13918 cppsymbols=`$cat ccsym.cpp`
13919 cppsymbols=`echo $cppsymbols`
13920 $test "$silent" || sleep 1
13922 if $test -s ccsym.own; then
13923 $test "$also" && echo " "
13924 echo "Your C compiler ${also}defines the following cpp symbols:"
13925 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13926 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13927 ccsymbols=`$cat ccsym.own`
13928 ccsymbols=`echo $ccsymbols`
13929 $test "$silent" || sleep 1
13934 : see if this is a termio system
13938 if $test `./findhdr termios.h`; then
13939 set tcsetattr i_termios
13945 "$define") echo "You have POSIX termios.h... good!" >&4;;
13946 *) if ./Cppsym pyr; then
13947 case "`/bin/universe`" in
13948 ucb) if $test `./findhdr sgtty.h`; then
13950 echo "<sgtty.h> found." >&4
13952 echo "System is pyramid with BSD universe."
13953 echo "<sgtty.h> not found--you could have problems." >&4
13955 *) if $test `./findhdr termio.h`; then
13957 echo "<termio.h> found." >&4
13959 echo "System is pyramid with USG universe."
13960 echo "<termio.h> not found--you could have problems." >&4
13964 if $test `./findhdr termio.h`; then
13965 echo "<termio.h> found." >&4
13967 elif $test `./findhdr sgtty.h`; then
13968 echo "<sgtty.h> found." >&4
13971 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13974 if $test `./findhdr sgtty.h`; then
13975 echo "<sgtty.h> found." >&4
13977 elif $test `./findhdr termio.h`; then
13978 echo "<termio.h> found." >&4
13981 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13985 set i_termio; eval $setvar
13986 val=$val2; set i_sgtty; eval $setvar
13987 val=$val3; set i_termios; eval $setvar
13989 : see if this is a shadow.h system
13990 set shadow.h i_shadow
13993 : see if this is a socks.h system
13994 set socks.h i_socks
13997 : see if stdarg is available
13999 if $test `./findhdr stdarg.h`; then
14000 echo "<stdarg.h> found." >&4
14003 echo "<stdarg.h> NOT found." >&4
14007 : see if varags is available
14009 if $test `./findhdr varargs.h`; then
14010 echo "<varargs.h> found." >&4
14012 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14015 : set up the varargs testing programs
14016 $cat > varargs.c <<EOP
14018 #include <stdarg.h>
14021 #include <varargs.h>
14025 int f(char *p, ...)
14039 p = va_arg(ap, char *);
14044 $cat > varargs <<EOP
14046 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14055 : now check which varargs header should be included
14060 if `./varargs I_STDARG`; then
14062 elif `./varargs I_VARARGS`; then
14067 if `./varargs I_VARARGS`; then
14074 echo "I could not find the definition for va_dcl... You have problems..." >&4
14075 val="$undef"; set i_stdarg; eval $setvar
14076 val="$undef"; set i_varargs; eval $setvar
14081 case "$i_varhdr" in
14083 val="$define"; set i_stdarg; eval $setvar
14084 val="$undef"; set i_varargs; eval $setvar
14087 val="$undef"; set i_stdarg; eval $setvar
14088 val="$define"; set i_varargs; eval $setvar
14091 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14095 : see if stddef is available
14096 set stddef.h i_stddef
14099 : see if sys/access.h is available
14100 set sys/access.h i_sysaccess
14103 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14104 set sys/filio.h i_sysfilio
14107 if $test `./findhdr sys/ioctl.h`; then
14109 echo '<sys/ioctl.h> found.' >&4
14112 if $test $i_sysfilio = "$define"; then
14113 echo '<sys/ioctl.h> NOT found.' >&4
14115 $test $i_sgtty = "$define" && xxx="sgtty.h"
14116 $test $i_termio = "$define" && xxx="termio.h"
14117 $test $i_termios = "$define" && xxx="termios.h"
14118 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14124 : see if sys/resource.h has to be included
14125 set sys/resource.h i_sysresrc
14128 : see if sys/security.h is available
14129 set sys/security.h i_syssecrt
14132 : see if this is a sys/statvfs.h system
14133 set sys/statvfs.h i_sysstatvfs
14136 : see if this is a sys/uio.h system
14137 set sys/uio.h i_sysuio
14140 : see if this is a sys/un.h system
14141 set sys/un.h i_sysun
14144 : see if this is a syswait system
14145 set sys/wait.h i_syswait
14148 : see if this is a ustat.h system
14149 set ustat.h i_ustat
14152 : see if this is an utime system
14153 set utime.h i_utime
14156 : see if this is a values.h system
14157 set values.h i_values
14160 : see if this is a vfork system
14163 set vfork.h i_vfork
14171 : see if gdbm.h is available
14176 : see if gdbm_open exists
14177 set gdbm_open d_gdbm_open
14179 case "$d_gdbm_open" in
14182 echo "We won't be including <gdbm.h>"
14192 echo "Looking for extensions..." >&4
14193 : If we are using the old config.sh, known_extensions may contain
14194 : old or inaccurate or duplicate values.
14195 known_extensions=''
14196 nonxs_extensions=''
14197 : We do not use find because it might not be available.
14198 : We do not just use MANIFEST because the user may have dropped
14199 : some additional extensions into the source tree and expect them
14202 : Function to recursively find available extensions, ignoring DynaLoader
14203 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14207 DynaLoader|dynaload) ;;
14209 if $test -f $xxx/$xxx.xs; then
14210 known_extensions="$known_extensions $1$xxx";
14211 elif $test -f $xxx/Makefile.PL; then
14212 nonxs_extensions="$nonxs_extensions $1$xxx";
14214 if $test -d $xxx -a $# -lt 10; then
14217 eval $find_extensions;
14229 eval $find_extensions
14230 set X $nonxs_extensions
14232 nonxs_extensions="$*"
14233 set X $known_extensions
14235 known_extensions="$*"
14238 : Now see which are supported on this system.
14240 for xxx in $known_extensions ; do
14244 $define) avail_ext="$avail_ext $xxx" ;;
14247 GDBM_File|gdbm_fil)
14249 $define) avail_ext="$avail_ext $xxx" ;;
14252 NDBM_File|ndbm_fil)
14254 $define) avail_ext="$avail_ext $xxx" ;;
14257 ODBM_File|odbm_fil)
14258 case "${i_dbm}${i_rpcsvcdbm}" in
14259 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14263 case "$useposix" in
14264 true|define|y) avail_ext="$avail_ext $xxx" ;;
14268 case "$useopcode" in
14269 true|define|y) avail_ext="$avail_ext $xxx" ;;
14273 case "$d_socket" in
14274 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14278 case "$usethreads" in
14279 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14283 : XXX Do we need a useipcsysv variable here
14284 case "${d_msg}${d_sem}${d_shm}" in
14285 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14288 *) avail_ext="$avail_ext $xxx"
14297 : Now see which nonxs extensions are supported on this system.
14298 : For now assume all are.
14300 for xxx in $nonxs_extensions ; do
14302 *) nonxs_ext="$nonxs_ext $xxx"
14314 A number of extensions are supplied with $package. You may choose to
14315 compile these extensions for dynamic loading (the default), compile
14316 them into the $package executable (static loading), or not include
14317 them at all. Answer "none" to include no extensions.
14318 Note that DynaLoader is always built and need not be mentioned here.
14321 case "$dynamic_ext" in
14322 '') dflt="$avail_ext" ;;
14323 *) dflt="$dynamic_ext"
14324 # Perhaps we are reusing an old out-of-date config.sh.
14327 if test X"$dynamic_ext" != X"$avail_ext"; then
14329 NOTICE: Your previous config.sh list may be incorrect.
14330 The extensions now available to you are
14332 but the default list from your previous config.sh is
14344 rp="What extensions do you wish to load dynamically?"
14347 none) dynamic_ext=' ' ;;
14348 *) dynamic_ext="$ans" ;;
14351 case "$static_ext" in
14353 : Exclude those already listed in dynamic linking
14355 for xxx in $avail_ext; do
14356 case " $dynamic_ext " in
14358 *) dflt="$dflt $xxx" ;;
14365 *) dflt="$static_ext"
14372 rp="What extensions do you wish to load statically?"
14375 none) static_ext=' ' ;;
14376 *) static_ext="$ans" ;;
14381 A number of extensions are supplied with $package. Answer "none"
14382 to include no extensions.
14383 Note that DynaLoader is always built and need not be mentioned here.
14386 case "$static_ext" in
14387 '') dflt="$avail_ext" ;;
14388 *) dflt="$static_ext"
14389 # Perhaps we are reusing an old out-of-date config.sh.
14392 if test X"$static_ext" != X"$avail_ext"; then
14394 NOTICE: Your previous config.sh list may be incorrect.
14395 The extensions now available to you are
14397 but the default list from your previous config.sh is
14406 : Exclude those that are not xs extensions
14410 rp="What extensions do you wish to include?"
14413 none) static_ext=' ' ;;
14414 *) static_ext="$ans" ;;
14419 set X $dynamic_ext $static_ext $nonxs_ext
14423 : Remove build directory name from cppstdin so it can be used from
14424 : either the present location or the final installed location.
14426 : Get out of the UU directory to get correct path name.
14428 case "$cppstdin" in
14430 echo "Stripping down cppstdin path name"
14436 : end of configuration questions
14438 echo "End of configuration questions."
14441 : back to where it started
14442 if test -d ../UU; then
14446 : configuration may be patched via a 'config.over' file
14447 if $test -f config.over; then
14450 rp='I see a config.over file. Do you wish to load it?'
14453 n*) echo "OK, I'll ignore it.";;
14455 echo "Configuration override changes have been loaded."
14460 : in case they want portability, strip down executable paths
14461 case "$d_portable" in
14464 echo "Stripping down executable paths..." >&4
14465 for file in $loclist $trylist; do
14467 eval $file=`basename $temp`
14472 : create config.sh file
14474 echo "Creating config.sh..." >&4
14475 $spitshell <<EOT >config.sh
14478 # This file was produced by running the Configure script. It holds all the
14479 # definitions figured out by Configure. Should you modify one of these values,
14480 # do not forget to propagate your changes by running "Configure -der". You may
14481 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14484 # Package name : $package
14485 # Source directory : $src
14486 # Configuration time: $cf_time
14487 # Configured by : $cf_by
14488 # Target system : $myuname
14498 Revision='$Revision'
14505 alignbytes='$alignbytes'
14506 ansi2knr='$ansi2knr'
14507 aphostname='$aphostname'
14508 api_revision='$api_revision'
14509 api_subversion='$api_subversion'
14510 api_version='$api_version'
14511 api_versionstring='$api_versionstring'
14514 archlibexp='$archlibexp'
14515 archname64='$archname64'
14516 archname='$archname'
14517 archobjs='$archobjs'
14522 bincompat5005='$bincompat5005'
14526 byteorder='$byteorder'
14528 castflags='$castflags'
14531 cccdlflags='$cccdlflags'
14532 ccdlflags='$ccdlflags'
14534 ccsymbols='$ccsymbols'
14536 cf_email='$cf_email'
14538 charsize='$charsize'
14542 clocktype='$clocktype'
14544 compress='$compress'
14545 contains='$contains'
14549 cpp_stuff='$cpp_stuff'
14550 cppccsymbols='$cppccsymbols'
14551 cppflags='$cppflags'
14553 cppminus='$cppminus'
14555 cppstdin='$cppstdin'
14556 cppsymbols='$cppsymbols'
14557 crosscompile='$crosscompile'
14558 cryptlib='$cryptlib'
14560 d_Gconvert='$d_Gconvert'
14561 d_PRIEldbl='$d_PRIEldbl'
14562 d_PRIFldbl='$d_PRIFldbl'
14563 d_PRIGldbl='$d_PRIGldbl'
14564 d_PRIX64='$d_PRIX64'
14565 d_PRId64='$d_PRId64'
14566 d_PRIeldbl='$d_PRIeldbl'
14567 d_PRIfldbl='$d_PRIfldbl'
14568 d_PRIgldbl='$d_PRIgldbl'
14569 d_PRIi64='$d_PRIi64'
14570 d_PRIo64='$d_PRIo64'
14571 d_PRIu64='$d_PRIu64'
14572 d_PRIx64='$d_PRIx64'
14573 d_access='$d_access'
14574 d_accessx='$d_accessx'
14576 d_archlib='$d_archlib'
14579 d_attribut='$d_attribut'
14582 d_bincompat5005='$d_bincompat5005'
14584 d_bsdgetpgrp='$d_bsdgetpgrp'
14585 d_bsdsetpgrp='$d_bsdsetpgrp'
14587 d_casti32='$d_casti32'
14588 d_castneg='$d_castneg'
14589 d_charvspr='$d_charvspr'
14591 d_chroot='$d_chroot'
14592 d_chsize='$d_chsize'
14593 d_closedir='$d_closedir'
14597 d_cuserid='$d_cuserid'
14598 d_dbl_dig='$d_dbl_dig'
14599 d_difftime='$d_difftime'
14600 d_dirnamlen='$d_dirnamlen'
14601 d_dlerror='$d_dlerror'
14602 d_dlopen='$d_dlopen'
14603 d_dlsymun='$d_dlsymun'
14604 d_dosuid='$d_dosuid'
14605 d_drand48proto='$d_drand48proto'
14607 d_eaccess='$d_eaccess'
14608 d_endgrent='$d_endgrent'
14609 d_endhent='$d_endhent'
14610 d_endnent='$d_endnent'
14611 d_endpent='$d_endpent'
14612 d_endpwent='$d_endpwent'
14613 d_endsent='$d_endsent'
14614 d_endspent='$d_endspent'
14615 d_eofnblk='$d_eofnblk'
14616 d_eunice='$d_eunice'
14617 d_fchmod='$d_fchmod'
14618 d_fchown='$d_fchown'
14620 d_fd_macros='$d_fd_macros'
14621 d_fd_set='$d_fd_set'
14622 d_fds_bits='$d_fds_bits'
14623 d_fgetpos='$d_fgetpos'
14624 d_flexfnam='$d_flexfnam'
14627 d_fpathconf='$d_fpathconf'
14628 d_fpos64_t='$d_fpos64_t'
14629 d_fs_data_s='$d_fs_data_s'
14630 d_fseeko='$d_fseeko'
14631 d_fsetpos='$d_fsetpos'
14632 d_fstatfs='$d_fstatfs'
14633 d_fstatvfs='$d_fstatvfs'
14634 d_ftello='$d_ftello'
14636 d_getgrent='$d_getgrent'
14637 d_getgrps='$d_getgrps'
14638 d_gethbyaddr='$d_gethbyaddr'
14639 d_gethbyname='$d_gethbyname'
14640 d_gethent='$d_gethent'
14641 d_gethname='$d_gethname'
14642 d_gethostprotos='$d_gethostprotos'
14643 d_getlogin='$d_getlogin'
14644 d_getmnt='$d_getmnt'
14645 d_getmntent='$d_getmntent'
14646 d_getnbyaddr='$d_getnbyaddr'
14647 d_getnbyname='$d_getnbyname'
14648 d_getnent='$d_getnent'
14649 d_getnetprotos='$d_getnetprotos'
14650 d_getpbyname='$d_getpbyname'
14651 d_getpbynumber='$d_getpbynumber'
14652 d_getpent='$d_getpent'
14653 d_getpgid='$d_getpgid'
14654 d_getpgrp2='$d_getpgrp2'
14655 d_getpgrp='$d_getpgrp'
14656 d_getppid='$d_getppid'
14657 d_getprior='$d_getprior'
14658 d_getprotoprotos='$d_getprotoprotos'
14659 d_getpwent='$d_getpwent'
14660 d_getsbyname='$d_getsbyname'
14661 d_getsbyport='$d_getsbyport'
14662 d_getsent='$d_getsent'
14663 d_getservprotos='$d_getservprotos'
14664 d_getspent='$d_getspent'
14665 d_getspnam='$d_getspnam'
14666 d_gettimeod='$d_gettimeod'
14667 d_gnulibc='$d_gnulibc'
14668 d_grpasswd='$d_grpasswd'
14669 d_hasmntopt='$d_hasmntopt'
14673 d_inetaton='$d_inetaton'
14674 d_int64t='$d_int64t'
14675 d_isascii='$d_isascii'
14676 d_killpg='$d_killpg'
14677 d_lchown='$d_lchown'
14678 d_ldbl_dig='$d_ldbl_dig'
14680 d_locconv='$d_locconv'
14682 d_longdbl='$d_longdbl'
14683 d_longlong='$d_longlong'
14686 d_mbstowcs='$d_mbstowcs'
14687 d_mbtowc='$d_mbtowc'
14688 d_memchr='$d_memchr'
14689 d_memcmp='$d_memcmp'
14690 d_memcpy='$d_memcpy'
14691 d_memmove='$d_memmove'
14692 d_memset='$d_memset'
14694 d_mkdtemp='$d_mkdtemp'
14695 d_mkfifo='$d_mkfifo'
14696 d_mkstemp='$d_mkstemp'
14697 d_mkstemps='$d_mkstemps'
14698 d_mktime='$d_mktime'
14700 d_mprotect='$d_mprotect'
14702 d_msg_ctrunc='$d_msg_ctrunc'
14703 d_msg_dontroute='$d_msg_dontroute'
14704 d_msg_oob='$d_msg_oob'
14705 d_msg_peek='$d_msg_peek'
14706 d_msg_proxy='$d_msg_proxy'
14707 d_msgctl='$d_msgctl'
14708 d_msgget='$d_msgget'
14709 d_msgrcv='$d_msgrcv'
14710 d_msgsnd='$d_msgsnd'
14712 d_munmap='$d_munmap'
14713 d_mymalloc='$d_mymalloc'
14715 d_nv_preserves_uv='$d_nv_preserves_uv'
14716 d_off64_t='$d_off64_t'
14717 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14718 d_oldpthreads='$d_oldpthreads'
14719 d_oldsock='$d_oldsock'
14721 d_pathconf='$d_pathconf'
14723 d_phostname='$d_phostname'
14726 d_portable='$d_portable'
14727 d_pthread_yield='$d_pthread_yield'
14729 d_pwchange='$d_pwchange'
14730 d_pwclass='$d_pwclass'
14731 d_pwcomment='$d_pwcomment'
14732 d_pwexpire='$d_pwexpire'
14733 d_pwgecos='$d_pwgecos'
14734 d_pwpasswd='$d_pwpasswd'
14735 d_pwquota='$d_pwquota'
14737 d_readdir='$d_readdir'
14738 d_readlink='$d_readlink'
14739 d_rename='$d_rename'
14740 d_rewinddir='$d_rewinddir'
14742 d_safebcpy='$d_safebcpy'
14743 d_safemcpy='$d_safemcpy'
14744 d_sanemcmp='$d_sanemcmp'
14745 d_sched_yield='$d_sched_yield'
14746 d_scm_rights='$d_scm_rights'
14747 d_seekdir='$d_seekdir'
14748 d_select='$d_select'
14750 d_semctl='$d_semctl'
14751 d_semctl_semid_ds='$d_semctl_semid_ds'
14752 d_semctl_semun='$d_semctl_semun'
14753 d_semget='$d_semget'
14755 d_setegid='$d_setegid'
14756 d_seteuid='$d_seteuid'
14757 d_setgrent='$d_setgrent'
14758 d_setgrps='$d_setgrps'
14759 d_sethent='$d_sethent'
14760 d_setlinebuf='$d_setlinebuf'
14761 d_setlocale='$d_setlocale'
14762 d_setnent='$d_setnent'
14763 d_setpent='$d_setpent'
14764 d_setpgid='$d_setpgid'
14765 d_setpgrp2='$d_setpgrp2'
14766 d_setpgrp='$d_setpgrp'
14767 d_setprior='$d_setprior'
14768 d_setpwent='$d_setpwent'
14769 d_setregid='$d_setregid'
14770 d_setresgid='$d_setresgid'
14771 d_setresuid='$d_setresuid'
14772 d_setreuid='$d_setreuid'
14773 d_setrgid='$d_setrgid'
14774 d_setruid='$d_setruid'
14775 d_setsent='$d_setsent'
14776 d_setsid='$d_setsid'
14777 d_setspent='$d_setspent'
14778 d_setvbuf='$d_setvbuf'
14782 d_shmatprototype='$d_shmatprototype'
14783 d_shmctl='$d_shmctl'
14785 d_shmget='$d_shmget'
14786 d_sigaction='$d_sigaction'
14787 d_sigsetjmp='$d_sigsetjmp'
14788 d_socket='$d_socket'
14789 d_sockpair='$d_sockpair'
14791 d_statblks='$d_statblks'
14792 d_statfs_f_flags='$d_statfs_f_flags'
14793 d_statfs_s='$d_statfs_s'
14794 d_statvfs='$d_statvfs'
14795 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14796 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14797 d_stdio_stream_array='$d_stdio_stream_array'
14798 d_stdiobase='$d_stdiobase'
14799 d_stdstdio='$d_stdstdio'
14800 d_strchr='$d_strchr'
14801 d_strcoll='$d_strcoll'
14802 d_strctcpy='$d_strctcpy'
14803 d_strerrm='$d_strerrm'
14804 d_strerror='$d_strerror'
14805 d_strtod='$d_strtod'
14806 d_strtol='$d_strtol'
14807 d_strtold='$d_strtold'
14808 d_strtoll='$d_strtoll'
14809 d_strtoul='$d_strtoul'
14810 d_strtoull='$d_strtoull'
14811 d_strtouq='$d_strtouq'
14812 d_strxfrm='$d_strxfrm'
14813 d_suidsafe='$d_suidsafe'
14814 d_symlink='$d_symlink'
14815 d_syscall='$d_syscall'
14816 d_sysconf='$d_sysconf'
14817 d_sysernlst='$d_sysernlst'
14818 d_syserrlst='$d_syserrlst'
14819 d_system='$d_system'
14820 d_tcgetpgrp='$d_tcgetpgrp'
14821 d_tcsetpgrp='$d_tcsetpgrp'
14822 d_telldir='$d_telldir'
14823 d_telldirproto='$d_telldirproto'
14826 d_truncate='$d_truncate'
14827 d_tzname='$d_tzname'
14830 d_union_semun='$d_union_semun'
14832 d_vendorbin='$d_vendorbin'
14833 d_vendorlib='$d_vendorlib'
14835 d_void_closedir='$d_void_closedir'
14836 d_voidsig='$d_voidsig'
14837 d_voidtty='$d_voidtty'
14838 d_volatile='$d_volatile'
14839 d_vprintf='$d_vprintf'
14841 d_waitpid='$d_waitpid'
14842 d_wcstombs='$d_wcstombs'
14843 d_wctomb='$d_wctomb'
14846 db_hashtype='$db_hashtype'
14847 db_prefixtype='$db_prefixtype'
14848 defvoidused='$defvoidused'
14849 direntrytype='$direntrytype'
14852 doublesize='$doublesize'
14854 dynamic_ext='$dynamic_ext'
14860 eunicefix='$eunicefix'
14863 extensions='$extensions'
14864 fflushNULL='$fflushNULL'
14865 fflushall='$fflushall'
14867 firstmakefile='$firstmakefile'
14869 fpossize='$fpossize'
14870 fpostype='$fpostype'
14871 freetype='$freetype'
14873 full_csh='$full_csh'
14874 full_sed='$full_sed'
14875 gccversion='$gccversion'
14876 gidformat='$gidformat'
14882 groupcat='$groupcat'
14883 groupstype='$groupstype'
14886 h_sysfile='$h_sysfile'
14898 i_arpainet='$i_arpainet'
14899 i_bsdioctl='$i_bsdioctl'
14902 i_dirent='$i_dirent'
14910 i_inttypes='$i_inttypes'
14911 i_limits='$i_limits'
14912 i_locale='$i_locale'
14913 i_machcthr='$i_machcthr'
14914 i_malloc='$i_malloc'
14916 i_memory='$i_memory'
14917 i_mntent='$i_mntent'
14920 i_neterrno='$i_neterrno'
14921 i_netinettcp='$i_netinettcp'
14924 i_pthread='$i_pthread'
14926 i_rpcsvcdbm='$i_rpcsvcdbm'
14929 i_shadow='$i_shadow'
14931 i_stdarg='$i_stdarg'
14932 i_stddef='$i_stddef'
14933 i_stdlib='$i_stdlib'
14934 i_string='$i_string'
14935 i_sysaccess='$i_sysaccess'
14936 i_sysdir='$i_sysdir'
14937 i_sysfile='$i_sysfile'
14938 i_sysfilio='$i_sysfilio'
14940 i_sysioctl='$i_sysioctl'
14941 i_sysmman='$i_sysmman'
14942 i_sysmount='$i_sysmount'
14943 i_sysndir='$i_sysndir'
14944 i_sysparam='$i_sysparam'
14945 i_sysresrc='$i_sysresrc'
14946 i_syssecrt='$i_syssecrt'
14947 i_sysselct='$i_sysselct'
14948 i_syssockio='$i_syssockio'
14949 i_sysstat='$i_sysstat'
14950 i_sysstatfs='$i_sysstatfs'
14951 i_sysstatvfs='$i_sysstatvfs'
14952 i_systime='$i_systime'
14953 i_systimek='$i_systimek'
14954 i_systimes='$i_systimes'
14955 i_systypes='$i_systypes'
14956 i_sysuio='$i_sysuio'
14958 i_sysvfs='$i_sysvfs'
14959 i_syswait='$i_syswait'
14960 i_termio='$i_termio'
14961 i_termios='$i_termios'
14963 i_unistd='$i_unistd'
14966 i_values='$i_values'
14967 i_varargs='$i_varargs'
14968 i_varhdr='$i_varhdr'
14970 ignore_versioned_solibs='$ignore_versioned_solibs'
14971 inc_version_list='$inc_version_list'
14972 inc_version_list_init='$inc_version_list_init'
14975 installarchlib='$installarchlib'
14976 installbin='$installbin'
14977 installman1dir='$installman1dir'
14978 installman3dir='$installman3dir'
14979 installprefix='$installprefix'
14980 installprefixexp='$installprefixexp'
14981 installprivlib='$installprivlib'
14982 installscript='$installscript'
14983 installsitearch='$installsitearch'
14984 installsitebin='$installsitebin'
14985 installsitelib='$installsitelib'
14986 installstyle='$installstyle'
14987 installusrbinperl='$installusrbinperl'
14988 installvendorbin='$installvendorbin'
14989 installvendorlib='$installvendorlib'
14991 ivdformat='$ivdformat'
14994 known_extensions='$known_extensions'
14998 lddlflags='$lddlflags'
15000 ldlibpthname='$ldlibpthname'
15007 libsdirs='$libsdirs'
15008 libsfiles='$libsfiles'
15009 libsfound='$libsfound'
15010 libswanted='$libswanted'
15016 locincpth='$locincpth'
15017 loclibpth='$loclibpth'
15018 longdblsize='$longdblsize'
15019 longlongsize='$longlongsize'
15020 longsize='$longsize'
15024 lseeksize='$lseeksize'
15025 lseektype='$lseektype'
15029 make_set_make='$make_set_make'
15030 mallocobj='$mallocobj'
15031 mallocsrc='$mallocsrc'
15032 malloctype='$malloctype'
15034 man1direxp='$man1direxp'
15037 man3direxp='$man3direxp'
15040 mips_type='$mips_type'
15042 mmaptype='$mmaptype'
15044 modetype='$modetype'
15046 multiarch='$multiarch'
15048 myarchname='$myarchname'
15049 mydomain='$mydomain'
15050 myhostname='$myhostname'
15053 netdb_hlen_type='$netdb_hlen_type'
15054 netdb_host_type='$netdb_host_type'
15055 netdb_name_type='$netdb_name_type'
15056 netdb_net_type='$netdb_net_type'
15059 nm_so_opt='$nm_so_opt'
15060 nonxs_ext='$nonxs_ext'
15064 o_nonblock='$o_nonblock'
15066 old_pthread_create_joinable='$old_pthread_create_joinable'
15067 optimize='$optimize'
15068 orderlib='$orderlib'
15074 patchlevel='$patchlevel'
15075 path_sep='$path_sep'
15077 perladmin='$perladmin'
15078 perlpath='$perlpath'
15080 phostname='$phostname'
15083 pm_apiversion='$pm_apiversion'
15087 prefixexp='$prefixexp'
15089 privlibexp='$privlibexp'
15090 prototype='$prototype'
15092 quadkind='$quadkind'
15093 quadtype='$quadtype'
15094 randbits='$randbits'
15095 randfunc='$randfunc'
15096 randseedtype='$randseedtype'
15098 rd_nodata='$rd_nodata'
15102 sPRIEldbl='$sPRIEldbl'
15103 sPRIFldbl='$sPRIFldbl'
15104 sPRIGldbl='$sPRIGldbl'
15107 sPRIeldbl='$sPRIeldbl'
15108 sPRIfldbl='$sPRIfldbl'
15109 sPRIgldbl='$sPRIgldbl'
15114 sched_yield='$sched_yield'
15115 scriptdir='$scriptdir'
15116 scriptdirexp='$scriptdirexp'
15118 seedfunc='$seedfunc'
15119 selectminbits='$selectminbits'
15120 selecttype='$selecttype'
15121 sendmail='$sendmail'
15124 sharpbang='$sharpbang'
15125 shmattype='$shmattype'
15126 shortsize='$shortsize'
15129 sig_count='$sig_count'
15130 sig_name='$sig_name'
15131 sig_name_init='$sig_name_init'
15133 sig_num_init='$sig_num_init'
15134 signal_t='$signal_t'
15135 sitearch='$sitearch'
15136 sitearchexp='$sitearchexp'
15138 sitebinexp='$sitebinexp'
15140 sitelibexp='$sitelibexp'
15141 siteprefix='$siteprefix'
15142 siteprefixexp='$siteprefixexp'
15143 sizetype='$sizetype'
15148 sockethdr='$sockethdr'
15149 socketlib='$socketlib'
15151 spackage='$spackage'
15152 spitshell='$spitshell'
15155 ssizetype='$ssizetype'
15156 startperl='$startperl'
15158 static_ext='$static_ext'
15160 stdio_base='$stdio_base'
15161 stdio_bufsiz='$stdio_bufsiz'
15162 stdio_cnt='$stdio_cnt'
15163 stdio_filbuf='$stdio_filbuf'
15164 stdio_ptr='$stdio_ptr'
15165 stdio_stream_array='$stdio_stream_array'
15168 subversion='$subversion'
15175 timeincl='$timeincl'
15176 timetype='$timetype'
15189 uidformat='$uidformat'
15195 uquadtype='$uquadtype'
15196 use5005threads='$use5005threads'
15197 use64bits='$use64bits'
15199 useithreads='$useithreads'
15200 uselargefiles='$uselargefiles'
15201 uselongdouble='$uselongdouble'
15202 uselonglong='$uselonglong'
15203 usemorebits='$usemorebits'
15204 usemultiplicity='$usemultiplicity'
15205 usemymalloc='$usemymalloc'
15207 useopcode='$useopcode'
15208 useperlio='$useperlio'
15209 useposix='$useposix'
15211 useshrplib='$useshrplib'
15212 usesocks='$usesocks'
15213 usethreads='$usethreads'
15214 usevendorprefix='$usevendorprefix'
15215 usevfork='$usevfork'
15218 uvoformat='$uvoformat'
15221 uvuformat='$uvuformat'
15222 uvxformat='$uvxformat'
15223 vendorbin='$vendorbin'
15224 vendorbinexp='$vendorbinexp'
15225 vendorlib='$vendorlib'
15226 vendorlibexp='$vendorlibexp'
15227 vendorprefix='$vendorprefix'
15228 vendorprefixexp='$vendorprefixexp'
15231 voidflags='$voidflags'
15233 xs_apiversion='$xs_apiversion'
15238 : Add in command line options if available
15239 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15241 : add special variables
15242 $test -f $src/patchlevel.h && \
15243 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15244 echo "CONFIGDOTSH=true" >>config.sh
15246 : propagate old symbols
15247 if $test -f UU/config.sh; then
15248 <UU/config.sh sort | uniq >UU/oldconfig.sh
15249 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15250 sort | uniq -u >UU/oldsyms
15251 set X `cat UU/oldsyms`
15257 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15259 echo "# Variables propagated from previous config.sh file." >>config.sh
15260 for sym in `cat UU/oldsyms`; do
15261 echo " Propagating $hint variable "'$'"$sym..."
15262 eval 'tmp="$'"${sym}"'"'
15264 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15270 : Finish up by extracting the .SH files
15284 If you'd like to make any changes to the config.sh file before I begin
15285 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15288 rp="Press return or use a shell escape to edit config.sh:"
15293 *) : in case they cannot read
15294 sh 1>&4 -c "$ans";;
15299 : if this fails, just run all the .SH files by hand
15306 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15313 Now you need to generate make dependencies by running "$make depend".
15314 You might prefer to run it in background: "$make depend > makedepend.out &"
15315 It can take a while, so you might not want to run it right now.
15320 rp="Run $make depend now?"
15324 $make depend && echo "Now you must run a $make."
15327 echo "You must run '$make depend' then '$make'."
15330 elif test -f [Mm]akefile; then
15332 echo "Now you must run a $make."
15337 if $test -f Policy.sh; then
15340 If you compile $package on a different machine or from a different object
15341 directory, copy the Policy.sh file from this object directory to the
15342 new one before you run Configure -- this will help you with most of
15343 the policy defaults.
15347 if $test -f config.msg; then
15348 echo "Hmm. I also noted the following information while running:"
15350 $cat config.msg >&4
15353 $rm -f kit*isdone ark*isdone