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 Fri Jul 28 01:31:47 EET DST 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
458 d_old_pthread_create_joinable=''
459 old_pthread_create_joinable=''
703 inc_version_list_init=''
721 ignore_versioned_solibs=''
783 d_perl_otherlibdirs=''
800 d_nv_preserves_uv_bits=''
891 d_stdio_stream_array=''
892 stdio_stream_array=''
943 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
946 : We must find out about Eunice early
948 if test -f /etc/unixtovms; then
949 eunicefix=/etc/unixtovms
951 if test -f /etc/unixtovms.exe; then
952 eunicefix=/etc/unixtovms.exe
956 : set useposix=false in your hint file to disable the POSIX extension.
958 : set useopcode=false in your hint file to disable the Opcode extension.
960 : Trailing extension. Override this in a hint file, if needed.
962 : Extra object files, if any, needed on this platform.
964 : Possible local include directories to search.
965 : Set locincpth to "" in a hint file to defeat local include searches.
966 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
967 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
969 : no include file wanted by default
973 : change the next line if compiling for Xenix/286 on Xenix/386
974 xlibpth='/usr/lib/386 /lib/386'
975 : Possible local library directories to search.
976 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
977 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
979 : general looking path for locating libraries
980 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
981 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
982 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
983 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
984 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
986 : Private path used by Configure to find libraries. Its value
987 : is prepended to libpth. This variable takes care of special
988 : machines, like the mips. Usually, it should be empty.
991 : default library list
993 : some systems want to use only the non-versioned libso:s
994 ignore_versioned_solibs=''
995 : set usemultiplicity on the Configure command line to enable multiplicity.
996 : set usesocks on the Configure command line to enable socks.
997 : set usethreads on the Configure command line to enable threads.
998 : full support for void wanted by default
1001 : List of libraries we want.
1002 : If anyone needs -lnet, put it in a hint file.
1003 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1004 libswanted="$libswanted dld ld sun m c cposix posix"
1005 libswanted="$libswanted ndir dir crypt sec"
1006 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1007 : We probably want to search /usr/shlib before most other libraries.
1008 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1009 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1010 glibpth="/usr/shlib $glibpth"
1011 : Do not use vfork unless overridden by a hint file.
1014 : Find the basic shell for Bourne shell scripts
1018 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1021 if test -f "$xxx"; then
1024 : Build up a list and do a single loop so we can 'break' out.
1025 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1026 for xxx in sh bash ksh pdksh ash; do
1028 try="$try ${p}/${xxx}"
1032 if test -f "$xxx"; then
1035 elif test -f "$xxx.exe"; then
1046 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1048 Usually it's in /bin/sh. How did you even get this far?
1049 Please contact me (Perl Maintainers) at perlbug@perl.com and
1050 we'll try to straighten this all out.
1056 : see if sh knows # comments
1057 if `$sh -c '#' >/dev/null 2>&1`; then
1061 test -f $xcat || xcat=/usr/bin/cat
1066 if test -s today; then
1069 echo "#! $xcat" > try
1073 if test -s today; then
1081 echo "Your $sh doesn't grok # comments--I will strip them later on."
1084 echo "exec grep -v '^[ ]*#'" >spitshell
1086 $eunicefix spitshell
1087 spitshell=`pwd`/spitshell
1089 echo "I presume that if # doesn't work, #! won't work either!"
1094 : figure out how to guarantee sh startup
1096 '') startsh=${sharpbang}${sh} ;;
1108 : echo "Yup, it does."
1110 echo "Hmm... '$startsh' does not guarantee sh startup..."
1111 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1116 : Save command line options in file UU/cmdline.opt for later use in
1117 : generating config.sh.
1118 cat > cmdline.opt <<EOSH
1119 # Configure command line arguments.
1126 cat >>cmdline.opt <<EOSH
1127 config_arg$argn='$arg'
1129 argn=`expr $argn + 1`
1132 : produce awk script to parse command line options
1133 cat >options.awk <<'EOF'
1135 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1137 len = length(optstr);
1138 for (i = 1; i <= len; i++) {
1139 c = substr(optstr, i, 1);
1140 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1151 if (substr(str, 1, 1) != "-") {
1152 printf("'%s'\n", str);
1156 for (i = 2; i <= len; i++) {
1157 c = substr(str, i, 1);
1159 printf("-%s\n", substr(str, i));
1165 printf("'%s'\n", substr(str, i + 1));
1178 : process the command line options
1179 set X `for arg in "$@"; do echo "X$arg"; done |
1180 sed -e s/X// | awk -f options.awk`
1185 : set up default values
1195 rm -f optdef.sh posthint.sh
1196 cat >optdef.sh <<EOS
1202 while test $# -gt 0; do
1204 -d) shift; fastread=yes;;
1205 -e) shift; alldone=cont;;
1209 if test -r "$1"; then
1212 echo "$me: cannot read config file $1." >&2
1217 -h) shift; error=true;;
1218 -r) shift; reuseval=true;;
1219 -s) shift; silent=true; realsilent=true;;
1220 -E) shift; alldone=exit;;
1221 -K) shift; knowitall=true;;
1222 -O) shift; override=true;;
1223 -S) shift; silent=true; extractsh=true;;
1228 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1229 echo "$me: ignoring -D $1" >&2
1232 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1233 *) echo "$1='define'" >> optdef.sh;;
1240 *=) echo "$1" >> optdef.sh;;
1242 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1243 echo "$me: ignoring -U $1" >&2
1245 *) echo "$1='undef'" >> optdef.sh;;
1256 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1260 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1261 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1267 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1268 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1269 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1270 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1271 *) xxx=`echo $yyy|sed 's!:.*!!'`
1272 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1278 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1280 echo "$yyy=''" >> posthint.sh ;;
1285 echo "$yyy='$zzz'" >> posthint.sh ;;
1287 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1289 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1294 echo "$yyy=$zzz" >> posthint.sh ;;
1295 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1299 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1302 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1310 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1311 [-U symbol] [-U symbol=] [-A command:symbol...]
1312 -d : use defaults for all answers.
1313 -e : go on without questioning past the production of config.sh.
1314 -f : specify an alternate default configuration file.
1315 -h : print this help message and exit (with an error status).
1316 -r : reuse C symbols value if possible (skips costly nm extraction).
1317 -s : silent mode, only echoes questions and essential information.
1318 -D : define symbol to have some value:
1319 -D symbol symbol gets the value 'define'
1320 -D symbol=value symbol gets the value 'value'
1321 -E : stop at the end of questions, after having produced config.sh.
1322 -K : do not use unless you know what you are doing.
1323 -O : let -D and -U override definitions from loaded configuration file.
1324 -S : perform variable substitutions on all .SH files (can mix with -f)
1325 -U : undefine symbol:
1326 -U symbol symbol gets the value 'undef'
1327 -U symbol= symbol gets completely empty
1328 -A : manipulate symbol after the platform specific hints have been applied:
1329 -A symbol=value append " "value to symbol
1330 -A append:symbol=value append value to symbol
1331 -A define:symbol=value define symbol to have value
1332 -A clear:symbol define symbol to be ''
1333 -A define:symbol define symbol to be 'define'
1334 -A eval:symbol=value define symbol to be eval of value
1335 -A prepend:symbol=value prepend value to symbol
1336 -A undef:symbol define symbol to be 'undef'
1337 -A undef:symbol= define symbol to be ''
1338 -V : print version number and exit (with a zero status).
1345 case "$fastread$alldone" in
1348 case "$extractsh" in
1351 if test ! -t 0; then
1352 echo "Say 'sh Configure', not 'sh <Configure'"
1362 true) exec 1>/dev/null;;
1365 : run the defines and the undefines, if any, but leave the file out there...
1368 : create the posthint manipulation script and leave the file out there...
1373 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1374 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1375 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1376 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1377 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1380 : Some greps do not return status, grrr.
1381 echo "grimblepritz" >grimble
1382 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1384 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1390 : the following should work in any shell
1394 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1395 cat >contains <<'EOSS'
1396 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1401 : Find the path to the source tree
1404 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1407 *) src=`cd ../$src && pwd` ;;
1420 if test -f $rsrc/Configure && \
1421 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1423 : found it, so we are ok.
1426 for src in . .. ../.. ../../.. ../../../..; do
1427 if test -f ../$src/Configure && \
1428 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1439 Sorry, I can't seem to locate the source dir for $package. Please start
1440 Configure with an explicit path -- i.e. /some/path/Configure.
1448 echo "Sources for $package found in \"$src\"." >&4
1452 : script used to extract .SH files with variable substitutions
1453 cat >extract <<'EOS'
1455 echo "Doing variable substitutions on .SH files..."
1456 if test -f $src/MANIFEST; then
1457 set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1459 echo "(Looking for .SH files under the source directory.)"
1460 set x `(cd $src; find . -name "*.SH" -print)`
1464 0) set x `(cd $src; echo *.SH)`; shift;;
1466 if test ! -f $src/$1; then
1472 while test $name; do
1473 if test ! -d "$name"; then
1474 create="$name $create";
1475 name=`echo $name | sed -e "s|^[^/]*$||"`;
1476 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1481 for file in $create; do
1490 dir=`expr X$file : 'X\(.*\)/'`
1491 file=`expr X$file : 'X.*/\(.*\)'`
1492 (cd $dir && . ./$file)
1502 dir=`expr X$file : 'X\(.*\)/'`
1503 file=`expr X$file : 'X.*/\(.*\)'`
1504 (set x $dir; shift; eval $mkdir_p)
1514 if test -f $src/config_h.SH; then
1515 if test ! -f config.h; then
1516 : oops, they left it out of MANIFEST, probably, so do it anyway.
1522 : extract files and exit if asked to do so
1523 case "$extractsh" in
1525 case "$realsilent" in
1529 case "$config_sh" in
1530 '') config_sh='config.sh';;
1533 echo "Fetching answers from $config_sh..."
1536 test "$override" && . ./optdef.sh
1545 : Eunice requires " " instead of "", can you believe it
1548 echo "Beginning of configuration questions for $package."
1550 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1552 : first determine how to suppress newline on echo command
1554 echo "Checking echo to see how to suppress newlines..."
1555 (echo "hi there\c" ; echo " ") >.echotmp
1556 if $contains c .echotmp >/dev/null 2>&1 ; then
1567 echo $n "The star should be here-->$c"
1571 : Now test for existence of everything in MANIFEST
1573 if test -f $rsrc/MANIFEST; then
1574 echo "First let's make sure your kit is complete. Checking..." >&4
1575 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1578 for filelist in x??; do
1579 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1581 if test -s missing; then
1585 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1587 You have the option of continuing the configuration process, despite the
1588 distinct possibility that your kit is damaged, by typing 'y'es. If you
1589 do, don't blame me if something goes wrong. I advise you to type 'n'o
1590 and contact the author (perlbug@perl.com).
1593 echo $n "Continue? [n] $c" >&4
1597 echo "Continuing..." >&4
1601 echo "ABORTING..." >&4
1606 echo "Looks good..."
1609 echo "There is no MANIFEST file. I hope your kit is complete !"
1614 : Find the appropriate value for a newline for tr
1615 if test -n "$DJGPP"; then
1618 if test X"$trnl" = X; then
1619 case "`echo foo|tr '\n' x 2>/dev/null`" in
1623 if test X"$trnl" = X; then
1624 case "`echo foo|tr '\012' x 2>/dev/null`" in
1625 foox) trnl='\012' ;;
1628 if test X"$trnl" = X; then
1631 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1637 : compute the number of columns on the terminal for proper question formatting
1642 : set up the echo used in my read
1643 myecho="case \"\$xxxm\" in
1644 '') echo $n \"\$rp $c\" >&4;;
1646 '') echo $n \"[\$xxxm] $c\";;
1648 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1650 echo $n \"[\$xxxm] $c\" >&4
1652 echo $n \"\$rp [\$xxxm] $c\" >&4
1658 : now set up to do reads with possible shell escape and default assignment
1664 case "\$fastread" in
1665 yes) case "\$dflt" in
1668 case "\$silent-\$rp" in
1673 *) case "\$silent" in
1674 true) case "\$rp" in
1679 while expr "X\$ans" : "X!" >/dev/null; do
1683 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1691 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1700 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1705 echo "(OK, I'll run with -d after this question.)" >&4
1708 echo "*** Sorry, \$1 not supported yet." >&4
1718 echo "*** Substitution done -- please confirm."
1720 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1725 echo "*** Error -- try again."
1732 case "\$ans\$xxxm\$nostick" in
1744 : create .config dir to save info across Configure sessions
1745 test -d ../.config || mkdir ../.config
1746 cat >../.config/README <<EOF
1747 This directory created by Configure to save information that should
1748 persist across sessions for $package.
1750 You may safely delete it if you wish.
1753 : general instructions
1756 user=`(logname) 2>/dev/null`
1758 '') user=`whoami 2>&1`;;
1760 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1763 rp='Would you like to see the instructions?'
1774 This installation shell script will examine your system and ask you questions
1775 to determine how the perl5 package should be installed. If you get
1776 stuck on a question, you may use a ! shell escape to start a subshell or
1777 execute a command. Many of the questions will have default answers in square
1778 brackets; typing carriage return will give you the default.
1780 On some of the questions which ask for file or directory names you are allowed
1781 to use the ~name construct to specify the login directory belonging to "name",
1782 even if you don't have a shell which knows about that. Questions where this is
1783 allowed will be marked "(~name ok)".
1787 dflt='Type carriage return to continue'
1791 The prompter used in this script allows you to use shell variables and
1792 backticks in your answers. You may use $1, $2, etc... to refer to the words
1793 in the default answer, as if the default line was a set of arguments given to a
1794 script shell. This means you may also use $* to repeat the whole default line,
1795 so you do not have to re-type everything to add something to the default.
1797 Everytime there is a substitution, you will have to confirm. If there is an
1798 error (e.g. an unmatched backtick), the default answer will remain unchanged
1799 and you will be prompted again.
1801 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1802 the questions and use the computed defaults (or the previous answers if there
1803 was already a config.sh file). Type 'Configure -h' for a list of options.
1804 You may also start interactively and then answer '& -d' at any prompt to turn
1805 on the non-interactive behaviour for the remainder of the execution.
1811 Much effort has been expended to ensure that this shell script will run on any
1812 Unix system. If despite that it blows up on yours, your best bet is to edit
1813 Configure and run it again. If you can't run Configure for some reason,
1814 you'll have to generate a config.sh file by hand. Whatever problems you
1815 have, let me (perlbug@perl.com) know how I blew it.
1817 This installation script affects things in two ways:
1819 1) it may do direct variable substitutions on some of the files included
1821 2) it builds a config.h file for inclusion in C programs. You may edit
1822 any of these files as the need arises after running this script.
1824 If you make a mistake on a question, there is no easy way to back up to it
1825 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1826 files. Configure will offer to let you do this before it runs the SH files.
1829 dflt='Type carriage return to continue'
1831 case "$firsttime" in
1832 true) echo $user >>../.config/instruct;;
1836 : find out where common programs are
1838 echo "Locating common programs..." >&4
1851 if test -d \$dir/\$thing; then
1857 for thisthing in \$dir/\$thing; do
1858 : just loop through to pick last item
1860 if test -f \$thisthing; then
1863 elif test -f \$dir/\$thing.exe; then
1864 if test -n "$DJGPP"; then
1865 echo \$dir/\$thing.exe
1867 : on Eunice apparently
1917 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1918 pth="$pth /lib /usr/lib"
1919 for file in $loclist; do
1923 if test -f "$xxx"; then
1926 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1927 xxx=`./loc $file $file $pth`
1930 '') xxx=`./loc $file $file $pth`;;
1931 *) xxx=`./loc $xxx $xxx $pth`;;
1937 echo $file is in $xxx.
1940 echo $file is in $xxx.
1943 echo "I don't know where '$file' is, and my life depends on it." >&4
1944 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1950 echo "Don't worry if any of the following aren't found..."
1952 for file in $trylist; do
1956 if test -f "$xxx"; then
1959 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1960 xxx=`./loc $file $file $pth`
1963 '') xxx=`./loc $file $file $pth`;;
1964 *) xxx=`./loc $xxx $xxx $pth`;;
1970 echo $file is in $xxx.
1973 echo $file is in $xxx.
1976 echo "I don't see $file out there, $say."
1983 echo "Substituting grep for egrep."
1989 echo "Substituting cp for ln."
1995 echo "Hopefully test is built into your sh."
1998 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1999 echo "Using the test built into your sh."
2007 echo "Hopefully echo is built into your sh."
2012 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2013 $echo $n "hi there$c" >foo1
2014 echo $n "hi there$c" >foo2
2015 if cmp foo1 foo2 >/dev/null 2>&1; then
2016 echo "They are compatible. In fact, they may be identical."
2023 They are not compatible! You are probably running ksh on a non-USG system.
2024 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2025 have echo built in and we may have to run some Bourne shell scripts. That
2026 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2029 $echo $n "The star should be here-->$c"
2039 cat <<'EOSC' >>checkcc
2044 int main(int argc, char *argv[]) {
2048 if $cc -o try try.c; then
2051 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2057 case "`$cc -v -c try.c 2>&1`" in
2060 if $test X"$trygcc" = Xyes; then
2061 if gcc -o try -c try.c; then
2063 echo "You seem to have a working gcc, though." >&4
2064 rp="Would you like to use it?"
2066 if $test -f myread; then
2069 if $test -f UU/myread; then
2072 echo "Cannot find myread, sorry. Aborting." >&2
2077 [yY]*) cc=gcc; ccflags=''; despair=no ;;
2081 if $test X"$despair" = Xyes; then
2082 echo "You need to find a working C compiler." >&4
2083 echo "I cannot continue any further, aborting." >&4
2092 : determine whether symbolic links are supported
2095 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2096 echo "Symbolic links are supported." >&4
2099 echo "Symbolic links are NOT supported." >&4
2104 : see whether [:lower:] and [:upper:] are supported character classes
2106 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2108 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2112 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2113 # (0xc9 and 0xd1), therefore that is a nice testing point.
2114 if test "X$up" = X -o "X$low" = X; then
2115 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2121 if test "X$up" = X -o "X$low" = X; then
2122 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2128 if test "X$up" = X -o "X$low" = X; then
2129 case "`echo IJ | od -x 2>/dev/null`" in
2131 echo "Hey, this might be EBCDIC." >&4
2132 if test "X$up" = X -o "X$low" = X; then
2133 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2134 ij) up='[A-IJ-RS-Z]'
2139 if test "X$up" = X -o "X$low" = X; then
2140 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2150 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2152 echo "Using $up and $low to convert case." >&4
2155 echo "I don't know how to translate letters from upper to lower case." >&4
2156 echo "Your tr is not acting any way I know of." >&4
2160 : set up the translation script tr, must be called with ./tr of course
2164 '[A-Z][a-z]') exec $tr '$up' '$low';;
2165 '[a-z][A-Z]') exec $tr '$low' '$up';;
2172 : Try to determine whether config.sh was made on this system
2173 case "$config_sh" in
2175 myuname=`$uname -a 2>/dev/null`
2176 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2177 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2178 # because the A-Z/a-z are not consecutive.
2179 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2180 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2181 newmyuname="$myuname"
2183 case "$knowitall" in
2185 if test -f ../config.sh; then
2186 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2187 eval "`grep myuname= ../config.sh`"
2189 if test "X$myuname" = "X$newmyuname"; then
2197 : Get old answers from old config file if Configure was run on the
2198 : same system, otherwise use the hints.
2201 if test -f config.sh; then
2203 rp="I see a config.sh file. Shall I use it to set the defaults?"
2206 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2207 *) echo "Fetching default answers from your old config.sh file..." >&4
2215 : Older versions did not always set $sh. Catch re-use of such
2225 if test ! -f config.sh; then
2228 First time through, eh? I have some defaults handy for some systems
2229 that need some extra help getting the Configure answers right:
2232 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2234 : Half the following guesses are probably wrong... If you have better
2235 : tests or hints, please send them to perlbug@perl.com
2236 : The metaconfig authors would also appreciate a copy...
2237 $test -f /irix && osname=irix
2238 $test -f /xenix && osname=sco_xenix
2239 $test -f /dynix && osname=dynix
2240 $test -f /dnix && osname=dnix
2241 $test -f /lynx.os && osname=lynxos
2242 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2243 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2244 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2245 $test -f /bin/mips && /bin/mips && osname=mips
2246 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2247 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2248 $test -d /usr/apollo/bin && osname=apollo
2249 $test -f /etc/saf/_sactab && osname=svr4
2250 $test -d /usr/include/minix && osname=minix
2251 if $test -d /MachTen -o -d /MachTen_Folder; then
2253 if $test -x /sbin/version; then
2254 osvers=`/sbin/version | $awk '{print $2}' |
2255 $sed -e 's/[A-Za-z]$//'`
2256 elif $test -x /usr/etc/version; then
2257 osvers=`/usr/etc/version | $awk '{print $2}' |
2258 $sed -e 's/[A-Za-z]$//'`
2264 $test -f /sys/posix.dll &&
2265 $test -f /usr/bin/what &&
2266 set X `/usr/bin/what /sys/posix.dll` &&
2267 $test "$3" = UWIN &&
2271 if $test -f $uname; then
2279 umips) osname=umips ;;
2282 [23]100) osname=mips ;;
2283 next*) osname=next ;;
2285 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2286 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2289 elif $test -f /etc/kconfig; then
2291 if test "$lns" = "$ln -s"; then
2293 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2295 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2302 if test -n "$DJGPP"; then
2311 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2313 'not found') osvers="$4"."$3" ;;
2314 '<3240'|'<>3240') osvers=3.2.0 ;;
2315 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2316 '=3250'|'>3250') osvers=3.2.5 ;;
2320 bsd386) osname=bsd386
2323 cygwin*) osname=cygwin
2326 *dc.osx) osname=dcosx
2332 domainos) osname=apollo
2338 dynixptx*) osname=dynixptx
2339 osvers=`echo "$4"|sed 's/^v//'`
2341 freebsd) osname=freebsd
2343 genix) osname=genix ;;
2345 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2361 netbsd*) osname=netbsd
2364 news-os) osvers="$3"
2366 4*) osname=newsos4 ;;
2370 next*) osname=next ;;
2371 POSIX-BC | posix-bc ) osname=posix-bc
2374 powerux | power_ux | powermax_os | powermaxos | \
2375 powerunix | power_unix) osname=powerux
2381 solaris) osname=solaris
2383 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2390 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2394 titanos) osname=titanos
2403 ultrix) osname=ultrix
2406 osf1|mls+) case "$5" in
2409 osvers=`echo "$3" | sed 's/^[xvt]//'`
2411 hp*) osname=hp_osf1 ;;
2412 mips) osname=mips_osf1 ;;
2415 unixware) osname=svr5
2421 $2) case "$osname" in
2425 : svr4.x or possibly later
2435 if test -f /stand/boot ; then
2436 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2437 if test -n "$INITPROG" -a -f "$INITPROG"; then
2438 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2439 if test -n "$isesix"; then
2447 *) if test -f /etc/systemid; then
2449 set `echo $3 | $sed 's/\./ /g'` $4
2450 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2452 elif $test -f $src/hints/sco_$1_$2.sh; then
2454 elif $test -f $src/hints/sco_$1.sh; then
2459 '') : Still unknown. Probably a generic Sys V.
2468 *) case "$osname" in
2469 '') : Still unknown. Probably a generic BSD.
2477 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2478 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2479 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2482 $rm -f UU/kernel.what
2483 elif test -d c:/.; then
2490 : Now look for a hint file osname_osvers, unless one has been
2491 : specified already.
2494 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2495 : Also try without trailing minor version numbers.
2496 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2497 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2498 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2499 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2502 *) case "$osvers" in
2505 *) if $test -f $src/hints/$file.sh ; then
2507 elif $test -f $src/hints/$xfile.sh ; then
2509 elif $test -f $src/hints/$xxfile.sh ; then
2511 elif $test -f $src/hints/$xxxfile.sh ; then
2513 elif $test -f $src/hints/$xxxxfile.sh ; then
2515 elif $test -f "$src/hints/${osname}.sh" ; then
2524 if $test -f Policy.sh ; then
2527 none) dflt="Policy" ;;
2528 *) dflt="Policy $dflt" ;;
2533 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2537 if $test -f Policy.sh ; then
2540 There's also a Policy hint file available, which should make the
2541 site-specific (policy) questions easier to answer.
2548 You may give one or more space-separated answers, or "none" if appropriate.
2549 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2550 is a good thing. DO NOT give a wrong version or a wrong OS.
2554 rp="Which of these apply, if any?"
2557 for file in $tans; do
2558 if $test X$file = XPolicy -a -f Policy.sh; then
2560 $cat Policy.sh >> UU/config.sh
2561 elif $test -f $src/hints/$file.sh; then
2562 . $src/hints/$file.sh
2563 $cat $src/hints/$file.sh >> UU/config.sh
2564 elif $test X$tans = X -o X$tans = Xnone ; then
2567 : Give one chance to correct a possible typo.
2568 echo "$file.sh does not exist"
2570 rp="hint to use instead?"
2572 for file in $ans; do
2573 if $test -f "$src/hints/$file.sh"; then
2574 . $src/hints/$file.sh
2575 $cat $src/hints/$file.sh >> UU/config.sh
2576 elif $test X$ans = X -o X$ans = Xnone ; then
2579 echo "$file.sh does not exist -- ignored."
2586 : Remember our hint file for later.
2587 if $test -f "$src/hints/$file.sh" ; then
2597 echo "Fetching default answers from $config_sh..." >&4
2601 cp $config_sh config.sh 2>/dev/null
2611 test "$override" && . ./optdef.sh
2612 myuname="$newmyuname"
2614 : Restore computed paths
2615 for file in $loclist $trylist; do
2616 eval $file="\$_$file"
2621 Configure uses the operating system name and version to set some defaults.
2622 The default value is probably right if the name rings a bell. Otherwise,
2623 since spelling matters for me, either accept the default or answer "none"
2630 ''|' '|none) dflt=none ;;
2631 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2634 *) dflt="$osname" ;;
2636 rp="Operating system name?"
2640 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2646 ''|' '|none) dflt=none ;;
2647 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2648 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2650 ''|' ') dflt=none ;;
2655 *) dflt="$osvers" ;;
2657 rp="Operating system version?"
2667 : who configured the system
2668 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2669 cf_by=`(logname) 2>/dev/null`
2672 cf_by=`(whoami) 2>/dev/null`
2674 "") cf_by=unknown ;;
2678 : set up the script used to warn in case of inconsistency
2685 echo "*** WHOA THERE!!! ***" >&4
2686 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2687 rp=" Keep the $hint value?"
2690 y) td=$was; tu=$was;;
2694 : function used to set $1 to $val
2695 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2697 $define$undef) . ./whoa; eval "$var=\$td";;
2698 $undef$define) . ./whoa; eval "$var=\$tu";;
2699 *) eval "$var=$val";;
2702 case "$usethreads" in
2703 $define|true|[yY]*) dflt='y';;
2708 Perl can be built to take advantage of threads on some systems.
2709 To do so, Configure can be run with -Dusethreads.
2711 Note that threading is a highly experimental feature, and
2712 some known race conditions still remain. If you choose to try
2713 it, be very sure to not actually deploy it for production
2714 purposes. README.threads has more details, and is required
2715 reading if you enable threads.
2717 If this doesn't make any sense to you, just accept the default '$dflt'.
2719 rp='Build a threading Perl?'
2722 y|Y) val="$define" ;;
2728 case "$usethreads" in
2732 As of 5.5.640, Perl has two different internal threading implementations,
2733 the 5.005 version (5005threads) and an interpreter-based version
2734 (ithreads) that has one interpreter per thread. Both are very
2735 experimental. This arrangement exists to help developers work out
2736 which one is better.
2738 If you're a casual user, you probably don't want interpreter-threads
2739 at this time. There doesn't yet exist a way to create threads from
2740 within Perl in this model, i.e., "use Thread;" will NOT work.
2742 : Default to ithreads unless overridden on command line or with
2745 case "$use5005threads" in
2746 $define|true|[yY]*) dflt='n';;
2748 case "$useithreads" in
2749 $undef|false|[nN]*) dflt='n';;
2751 rp='Use interpreter-based ithreads?'
2754 y|Y) val="$define" ;;
2759 : Now set use5005threads to the opposite value.
2760 case "$useithreads" in
2761 $define) val="$undef" ;;
2768 useithreads="$undef"
2769 use5005threads="$undef"
2773 case "$d_oldpthreads" in
2774 '') : Configure tests would be welcome here. For now, assume undef.
2776 *) val="$d_oldpthreads" ;;
2782 case "$usethreads" in
2783 "$define"|true|[yY]*)
2784 : Look for a hint-file generated 'call-back-unit'. If the
2785 : user has specified that a threading perl is to be built,
2786 : we may need to set or change some other defaults.
2787 if $test -f usethreads.cbu; then
2788 echo "Your platform has some specific hints for threaded builds, using them..."
2792 (Your platform doesn't have any specific hints for threaded builds.
2793 Assuming POSIX threads, then.)
2801 Perl can be built so that multiple Perl interpreters can coexist
2802 within the same Perl executable.
2805 case "$useithreads" in
2808 This multiple interpreter support is required for interpreter-based threads.
2812 *) case "$usemultiplicity" in
2813 $define|true|[yY]*) dflt='y';;
2817 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2818 rp='Build Perl for multiplicity?'
2821 y|Y) val="$define" ;;
2829 : determine where manual pages are on this system
2833 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2834 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2835 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2836 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2837 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2838 sysman=`./loc . /usr/man/man1 $syspath`
2841 if $test -d "$sysman"; then
2842 echo "System manual is in $sysman." >&4
2844 echo "Could not find manual pages in source form." >&4
2847 : see what memory models we can support
2850 $cat >pdp11.c <<'EOP'
2860 '') modelcc="$cc" ;;
2863 ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1
2864 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2865 dflt='unsplit split'
2867 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2870 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2875 if $test -d /lib/medium || $test -d /usr/lib/medium; then
2878 if $test -d /lib/large || $test -d /usr/lib/large; then
2881 if $test -d /lib/huge || $test -d /usr/lib/huge; then
2890 Some systems have different model sizes. On most systems they are called
2891 small, medium, large, and huge. On the PDP11 they are called unsplit and
2892 split. If your system doesn't support different memory models, say "none".
2893 If you wish to force everything to one memory model, say "none" here and
2894 put the appropriate flags later when it asks you for other cc and ld flags.
2895 Venix systems may wish to put "none" and let the compiler figure things out.
2896 (In the following question multiple model names should be space separated.)
2898 The default for most systems is "none".
2901 rp="Which memory models are supported?"
2916 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2917 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2924 rp="What flag indicates separate I and D space?"
2932 *large*|*small*|*medium*|*huge*)
2939 rp="What flag indicates large model?"
2949 *huge*) case "$huge" in
2953 rp="What flag indicates huge model?"
2963 *medium*) case "$medium" in
2967 rp="What flag indicates medium model?"
2974 *) medium="$large";;
2977 *small*) case "$small" in
2981 rp="What flag indicates small model?"
2992 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2995 $rm -f pdp11.* pdp11
2997 : make some quick guesses about what we are up against
2999 $echo $n "Hmm... $c"
3009 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3010 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3012 echo "Looks kind of like an OSF/1 system, but we'll see..."
3014 elif test `echo abc | tr a-z A-Z` = Abc ; then
3015 xxx=`./loc addbib blurfl $pth`
3016 if $test -f $xxx; then
3017 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3021 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3022 echo "Looks kind of like an extended USG system, but we'll see..."
3024 echo "Looks kind of like a USG system, but we'll see..."
3028 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3029 echo "Looks kind of like a BSD system, but we'll see..."
3033 echo "Looks kind of like a Version 7 system, but we'll see..."
3036 case "$eunicefix" in
3039 There is, however, a strange, musty smell in the air that reminds me of
3040 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3044 : it so happens the Eunice I know will not run shell scripts in Unix format
3048 echo "Congratulations. You aren't running Eunice."
3052 : Detect OS2. The p_ variable is set above in the Head.U unit.
3057 I have the feeling something is not exactly right, however...don't tell me...
3058 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3063 if test -f /xenix; then
3064 echo "Actually, this looks more like a XENIX system..."
3069 echo "It's not Xenix..."
3074 if test -f /venix; then
3075 echo "Actually, this looks more like a VENIX system..."
3082 echo "Nor is it Venix..."
3085 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3086 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3089 : see if we need a special compiler
3097 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3098 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3112 On some older systems the default C compiler will not resolve multiple global
3113 references that happen to have the same name. On some such systems the "Mcc"
3114 command may be used to force these to be resolved. On other systems a "cc -M"
3115 command is required. (Note that the -M flag on other systems indicates a
3116 memory model to use!) If you have the Gnu C compiler, you might wish to use
3122 rp="Use which C compiler?"
3130 rp="Use which C compiler?"
3134 : Look for a hint-file generated 'call-back-unit'. Now that the
3135 : user has specified the compiler, we may need to set or change some
3137 if $test -f cc.cbu; then
3143 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3144 $cat >gccvers.c <<EOM
3149 printf("%s\n", __VERSION__);
3151 printf("%s\n", "1");
3157 if $cc $ldflags -o gccvers gccvers.c; then
3158 gccversion=`./gccvers`
3159 case "$gccversion" in
3160 '') echo "You are not using GNU cc." ;;
3161 *) echo "You are using GNU cc $gccversion."
3166 echo "*** WHOA THERE!!! ***" >&4
3167 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3168 case "$knowitall" in
3170 echo " You'd better start hunting for one and let me know about it." >&4
3176 case "$gccversion" in
3177 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3180 : see how we invoke the C preprocessor
3182 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3183 cat <<'EOT' >testcpp.c
3189 if test ! -f cppstdin; then
3190 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3191 # AIX cc -E doesn't show the absolute headerfile
3192 # locations but we'll cheat by using the -M flag.
3193 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
3195 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3198 echo "Keeping your $hint cppstdin wrapper."
3201 wrapper=`pwd`/cppstdin
3205 if $test "X$cppstdin" != "X" && \
3206 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3207 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3209 echo "You used to use $cppstdin $cppminus so we'll use that again."
3211 '') echo "But let's see if we can live without a wrapper..." ;;
3213 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3214 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3216 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3219 echo "(However, $cpprun $cpplast does not work, let's see...)"
3227 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3234 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3235 $cc -E <testcpp.c >testcpp.out 2>&1; \
3236 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3237 echo "Yup, it does."
3240 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3241 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3242 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3243 echo "Yup, it does."
3246 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3247 $cc -P <testcpp.c >testcpp.out 2>&1; \
3248 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3249 echo "Yipee, that works!"
3252 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3253 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3254 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3255 echo "At long last!"
3258 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3259 $cpp <testcpp.c >testcpp.out 2>&1; \
3260 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3264 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3265 $cpp - <testcpp.c >testcpp.out 2>&1; \
3266 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3267 echo "Hooray, it works! I was beginning to wonder."
3270 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3271 $wrapper <testcpp.c >testcpp.out 2>&1; \
3272 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3278 rp="No dice. I can't find a C preprocessor. Name one:"
3282 $x_cpp <testcpp.c >testcpp.out 2>&1
3283 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3284 echo "OK, that will do." >&4
3286 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3301 echo "Perhaps can we force $cc -E using a wrapper..."
3302 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3303 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3309 echo "Nope, we'll have to live without it..."
3323 "$wrapper"|'cppstdin') ;;
3324 *) $rm -f $wrapper;;
3326 $rm -f testcpp.c testcpp.out
3328 : decide how portable to be. Allow command line overrides.
3329 case "$d_portable" in
3331 *) d_portable="$define" ;;
3334 : set up shell script to do ~ expansion
3340 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3343 if $test -f /bin/csh; then
3344 /bin/csh -f -c "glob \$1"
3349 name=\`$expr x\$1 : '..\([^/]*\)'\`
3350 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3351 if $test ! -d "\$dir"; then
3353 echo "\$me: can't locate home directory for: \$name" >&2
3358 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3374 : now set up to get a file name
3378 cat <<'EOSC' >>getfile
3394 expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3395 fn=`echo $fn | sed 's/(.*)//'`
3401 loc_file=`expr $fn : '.*:\(.*\)'`
3402 fn=`expr $fn : '\(.*\):.*'`
3410 */*) fullpath=true;;
3419 *e*) exp_file=true;;
3422 *p*) nopath_ok=true;;
3427 *d*) type='Directory';;
3428 *l*) type='Locate';;
3433 Locate) what='File';;
3438 case "$d_portable" in
3446 while test "$type"; do
3451 true) rp="$rp (~name ok)";;
3454 if test -f UU/getfile.ok && \
3455 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3474 value=`UU/filexp $ans`
3477 if test "$ans" != "$value"; then
3478 echo "(That expands to $value on this system.)"
3492 /*) value="$ansexp" ;;
3493 [a-zA-Z]:/*) value="$ansexp" ;;
3498 echo "I shall only accept a full path name, as in /bin/ls." >&4
3499 echo "Use a ! shell escape if you wish to check pathnames." >&4
3502 echo "Please give a full path name, starting with slash." >&4
3505 echo "Note that using ~name is ok provided it expands well." >&4
3518 for fp in $gfpth; do
3519 if test "X$fp" = X.; then
3524 if test -f "$pf"; then
3526 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3528 echo "($value is not a plain file, but that's ok.)"
3531 if test X"$type" = X; then
3538 for fp in $gfpth; do
3539 if test "X$fp" = X.; then
3544 direxp="$fp/$ansexp"
3546 if test -d "$direxp"; then
3554 if test -d "$ansexp"; then
3555 echo "(Looking for $loc_file in directory $value.)"
3556 value="$value/$loc_file"
3557 ansexp="$ansexp/$loc_file"
3559 if test -f "$ansexp"; then
3562 case "$nopath_ok" in
3563 true) case "$value" in
3565 *) echo "Assuming $value will be in people's path."
3581 if test "$fastread" = yes; then
3586 rp="$what $value doesn't exist. Use that name anyway?"
3605 test "X$gfpthkeep" != Xy && gfpth=""
3608 : What should the include directory be ?
3610 $echo $n "Hmm... $c"
3614 if $test -f /bin/mips && /bin/mips; then
3615 echo "Looks like a MIPS system..."
3616 $cat >usr.c <<'EOCP'
3617 #ifdef SYSTYPE_BSD43
3621 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3622 dflt='/bsd43/usr/include'
3626 mips_type='System V'
3628 $rm -f usr.c usr.out
3629 echo "and you're compiling with the $mips_type compiler and libraries."
3633 echo "Doesn't look like a MIPS system."
3643 case "$xxx_prompt" in
3646 rp='Where are the include files you want to use?'
3654 : Set private lib path
3657 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3662 '') dlist="$loclibpth $plibpth $glibpth";;
3663 *) dlist="$libpth";;
3666 : Now check and see which directories actually exist, avoiding duplicates
3670 if $test -d $xxx; then
3673 *) libpth="$libpth $xxx";;
3679 Some systems have incompatible or broken versions of libraries. Among
3680 the directories listed in the question below, please remove any you
3681 know not to be holding relevant libraries, and add any that are needed.
3682 Say "none" for none.
3693 rp="Directories to use for library searches?"
3700 : compute shared library extension
3703 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3713 On some systems, shared libraries may be available. Answer 'none' if
3714 you want to suppress searching of shared libraries for the remainder
3715 of this configuration.
3718 rp='What is the file extension used for shared libraries?'
3722 : Define several unixisms.
3723 : Hints files or command line option can be used to override them.
3724 : The convoluted testing is in case hints files set either the old
3727 '') case "$exe_ext" in
3729 *) _exe="$exe_ext" ;;
3734 '') case "$lib_ext" in
3741 '') case "$obj_ext" in
3748 '') case "$path_sep" in
3759 : Which makefile gets called first. This is used by make depend.
3760 case "$firstmakefile" in
3761 '') firstmakefile='makefile';;
3765 $define|true|[yY]*) dflt='y';;
3770 Perl can be built to use the SOCKS proxy protocol library. To do so,
3771 Configure must be run with -Dusesocks.
3773 If this doesn't make any sense to you, just accept the default '$dflt'.
3775 rp='Build Perl for SOCKS?'
3778 y|Y) val="$define" ;;
3784 : Looking for optional libraries
3786 echo "Checking for optional libraries..." >&4
3791 case "$libswanted" in
3792 '') libswanted='c_s';;
3795 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3801 for thisdir in $libpth $xlibpth; do
3802 test -d $thisdir && libspath="$libspath $thisdir"
3804 for thislib in $libswanted; do
3805 for thisdir in $libspath; do
3807 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3808 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3809 $test -f "$xxx" && eval $libscheck
3810 $test -f "$xxx" && libstyle=shared
3812 if test ! -f "$xxx"; then
3813 xxx=$thisdir/lib$thislib.$so
3814 $test -f "$xxx" && eval $libscheck
3815 $test -f "$xxx" && libstyle=shared
3817 if test ! -f "$xxx"; then
3818 xxx=$thisdir/lib$thislib$_a
3819 $test -f "$xxx" && eval $libscheck
3820 $test -f "$xxx" && libstyle=static
3822 if test ! -f "$xxx"; then
3823 xxx=$thisdir/$thislib$_a
3824 $test -f "$xxx" && eval $libscheck
3825 $test -f "$xxx" && libstyle=static
3827 if test ! -f "$xxx"; then
3828 xxx=$thisdir/lib${thislib}_s$_a
3829 $test -f "$xxx" && eval $libscheck
3830 $test -f "$xxx" && libstyle=static
3831 $test -f "$xxx" && thislib=${thislib}_s
3833 if test ! -f "$xxx"; then
3834 xxx=$thisdir/Slib$thislib$_a
3835 $test -f "$xxx" && eval $libscheck
3836 $test -f "$xxx" && libstyle=static
3838 if $test -f "$xxx"; then
3840 shared) echo "Found -l$thislib (shared)." ;;
3841 static) echo "Found -l$thislib." ;;
3842 *) echo "Found -l$thislib ($libstyle)." ;;
3846 *) dflt="$dflt -l$thislib"
3847 libsfound="$libsfound $xxx"
3849 libsfiles="$libsfiles $yyy"
3850 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3851 case " $libsdirs " in
3853 *) libsdirs="$libsdirs $yyy" ;;
3860 if $test ! -f "$xxx"; then
3861 echo "No -l$thislib."
3872 ' '|'') dflt='none';;
3877 In order to compile $package on your machine, a number of libraries
3878 are usually needed. Include any other special libraries here as well.
3879 Say "none" for none. The default list is almost always right.
3883 rp="What libraries to use?"
3890 : determine optimization, if desired, or use for debug flag also
3892 ' '|$undef) dflt='none';;
3894 *) dflt="$optimize";;
3898 By default, $package compiles with the -O flag to use the optimizer.
3899 Alternately, you might want to use the symbolic debugger, which uses
3900 the -g flag (on traditional Unix systems). Either flag can be
3901 specified here. To use neither flag, specify the word "none".
3904 rp="What optimizer/debugger flag should be used?"
3908 'none') optimize=" ";;
3912 : We will not override a previous value, but we might want to
3913 : augment a hint file
3915 default|recommended)
3916 case "$gccversion" in
3917 1*) dflt='-fpcc-struct-return' ;;
3920 *-g*) dflt="$dflt -DDEBUGGING";;
3922 case "$gccversion" in
3923 2*) if test -d /etc/conf/kconfig.d &&
3924 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3930 case "$gccversion" in
3934 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3935 echo 'int main(void) { return 0; }' > gcctest.c
3936 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3937 echo "Yes, it does." 2>&1
3940 echo "Leaving current flags $ccflags alone." 2>&1
3942 *) dflt="$dflt -fno-strict-aliasing" ;;
3945 echo "Nope, it doesn't, but that's ok." 2>&1
3952 case "$mips_type" in
3953 *BSD*|'') inclwanted="$locincpth $usrinc";;
3954 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3956 for thisincl in $inclwanted; do
3957 if $test -d $thisincl; then
3958 if $test x$thisincl != x$usrinc; then
3961 *) dflt="$dflt -I$thisincl";;
3967 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3969 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3977 *) dflt="$dflt -D$2";;
3981 set signal.h LANGUAGE_C; eval $inctest
3985 ccflags="$ccflags -DSOCKS"
3990 default|recommended) dflt="$ccflags $dflt" ;;
3991 *) dflt="$ccflags";;
3999 Your C compiler may want other flags. For this question you should include
4000 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4001 but you should NOT include libraries or ld flags like -lwhatever. If you
4002 want $package to honor its debug switch, you should include -DDEBUGGING here.
4003 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4005 To use no flags, specify the word "none".
4011 rp="Any additional cc flags?"
4018 : the following weeds options from ccflags that are of no interest to cpp
4020 case "$gccversion" in
4021 1*) cppflags="$cppflags -D__GNUC__"
4023 case "$mips_type" in
4025 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4031 echo "Let me guess what the preprocessor flags are..." >&4
4045 *) ftry="$previous $flag";;
4047 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4048 >cpp1.out 2>/dev/null && \
4049 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4050 >cpp2.out 2>/dev/null && \
4051 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4052 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4054 cppflags="$cppflags $ftry"
4064 *-*) echo "They appear to be: $cppflags";;
4066 $rm -f cpp.c cpp?.out
4070 : flags used in final linking phase
4072 '') if ./venix; then
4078 *-posix*) dflt="$dflt -posix" ;;
4081 *) dflt="$ldflags";;
4084 : Try to guess additional flags to pick up local libraries.
4085 for thislibdir in $libpth; do
4086 case " $loclibpth " in
4089 *"-L$thislibdir "*) ;;
4090 *) dflt="$dflt -L$thislibdir" ;;
4102 Your C linker may need flags. For this question you should
4103 include -L/whatever and any other flags used by the C linker, but you
4104 should NOT include libraries like -lwhatever.
4106 Make sure you include the appropriate -L/path flags if your C linker
4107 does not normally search all of the directories you specified above,
4110 To use no flags, specify the word "none".
4114 rp="Any additional ld flags (NOT including libraries)?"
4120 rmlist="$rmlist pdp11"
4124 echo "Checking your choice of C compiler and flags for coherency..." >&4
4125 $cat > try.c <<'EOF'
4127 int main() { printf("Ok\n"); exit(0); }
4129 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4131 $cat >try.msg <<'EOM'
4132 I've tried to compile and run the following simple program:
4135 $cat try.c >> try.msg
4137 $cat >> try.msg <<EOM
4144 and I got the following output:
4148 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4149 if sh -c './try' >>try.msg 2>&1; then
4153 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4156 cat >> try.msg <<'EOQS'
4157 If $libs contains -lsfio, and sfio is mis-configured, then it
4158 sometimes (apparently) runs and exits with a 0 status, but with no
4159 output! It may have to do with sfio's use of _exit vs. exit.
4162 rp="You have a big problem. Shall I abort Configure"
4169 echo "The program compiled OK, but exited with status $?." >>try.msg
4170 rp="You have a problem. Shall I abort Configure"
4174 echo "I can't compile the test program." >>try.msg
4175 rp="You have a BIG problem. Shall I abort Configure"
4181 case "$knowitall" in
4183 echo "(The supplied flags or libraries might be incorrect.)"
4191 *) echo "Ok. Stopping Configure." >&4
4196 n) echo "OK, that should do.";;
4198 $rm -f try try.* core
4200 : define an is-a-typedef? function
4201 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4203 "") inclist="sys/types.h";;
4205 eval "varval=\$$var";
4209 for inc in $inclist; do
4210 echo "#include <$inc>" >>temp.c;
4212 echo "#ifdef $type" >> temp.c;
4213 echo "printf(\"We have $type\");" >> temp.c;
4214 echo "#endif" >> temp.c;
4215 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4216 if $contains $type temp.E >/dev/null 2>&1; then
4222 *) eval "$var=\$varval";;
4225 : define an is-a-typedef? function that prompts if the type is not available.
4226 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4228 "") inclist="sys/types.h";;
4230 eval "varval=\$$var";
4234 for inc in $inclist; do
4235 echo "#include <$inc>" >>temp.c;
4237 echo "#ifdef $type" >> temp.c;
4238 echo "printf(\"We have $type\");" >> temp.c;
4239 echo "#endif" >> temp.c;
4240 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4242 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4243 if $contains $type temp.E >/dev/null 2>&1; then
4244 echo "$type found." >&4;
4247 echo "$type NOT found." >&4;
4253 *) eval "$var=\$varval";;
4256 : define a shorthand compile call
4260 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4261 : define a shorthand compile call for compilations that should be ok.
4265 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4267 : check for lengths of integral types
4271 echo "Checking to see how big your integers are..." >&4
4272 $cat >intsize.c <<'EOCP'
4276 printf("intsize=%d;\n", (int)sizeof(int));
4277 printf("longsize=%d;\n", (int)sizeof(long));
4278 printf("shortsize=%d;\n", (int)sizeof(short));
4283 if eval $compile_ok && ./intsize > /dev/null; then
4285 echo "Your integers are $intsize bytes long."
4286 echo "Your long integers are $longsize bytes long."
4287 echo "Your short integers are $shortsize bytes long."
4291 Help! I can't compile and run the intsize test program: please enlighten me!
4292 (This is probably a misconfiguration in your system or libraries, and
4293 you really ought to fix it. Still, I'll try anyway.)
4297 rp="What is the size of an integer (in bytes)?"
4301 rp="What is the size of a long integer (in bytes)?"
4305 rp="What is the size of a short integer (in bytes)?"
4311 $rm -f intsize intsize.*
4313 : see what type lseek is declared as in the kernel
4314 rp="What is the type used for lseek's offset on this system?"
4315 set off_t lseektype long stdio.h sys/types.h
4319 echo "Checking to see how big your file offsets are..." >&4
4321 #include <sys/types.h>
4325 printf("%d\n", (int)sizeof($lseektype));
4330 if eval $compile_ok; then
4332 echo "Your file offsets are $lseeksize bytes long."
4336 echo "(I can't seem to compile the test program. Guessing...)"
4337 rp="What is the size of your file offsets (in bytes)?"
4343 : see what type file positions are declared as in the library
4344 rp="What is the type for file position used by fsetpos()?"
4345 set fpos_t fpostype long stdio.h sys/types.h
4350 *_t) zzz="$fpostype" ;;
4353 echo "Checking the size of $zzz..." >&4
4355 #include <sys/types.h>
4358 printf("%d\n", (int)sizeof($fpostype));
4363 if eval $compile_ok; then
4367 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4370 echo "Your $zzz is $fpossize bytes long."
4376 echo "(I can't compile the test program. Guessing...)" >&4
4377 rp="What is the size of your file positions (in bytes)?"
4384 # Backward compatibility (uselfs is deprecated).
4386 "$define"|true|[yY]*)
4389 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4391 uselargefiles="$define"
4395 case "$lseeksize:$fpossize" in
4398 You can have files larger than 2 gigabytes.
4401 *) case "$uselargefiles" in
4402 "$undef"|false|[nN]*) dflt='n' ;;
4407 Perl can be built to understand large files (files larger than 2 gigabytes)
4408 on some systems. To do so, Configure can be run with -Duselargefiles.
4410 If this doesn't make any sense to you, just accept the default '$dflt'.
4412 rp='Try to understand large files, if available?'
4415 y|Y) val="$define" ;;
4422 case "$uselargefiles" in
4424 : Look for a hint-file generated 'call-back-unit'. If the
4425 : user has specified that a large files perl is to be built,
4426 : we may need to set or change some other defaults.
4427 if $test -f uselargefiles.cbu; then
4428 echo "Your platform has some specific hints for large file builds, using them..."
4429 . ./uselargefiles.cbu
4431 echo "Rechecking to see how big your file offsets are..." >&4
4433 #include <sys/types.h>
4437 printf("%d\n", (int)sizeof($lseektype));
4442 if eval $compile_ok; then
4444 $echo "Your file offsets are now $lseeksize bytes long."
4448 echo "(I can't seem to compile the test program. Guessing...)"
4449 rp="What is the size of your file offsets (in bytes)?"
4454 *_t) zzz="$fpostype" ;;
4457 $echo $n "Rechecking the size of $zzz...$c" >&4
4459 #include <sys/types.h>
4462 printf("%d\n", (int)sizeof($fpostype));
4467 if eval $compile_ok; then
4472 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4475 echo " $fpossize bytes." >&4
4481 echo "(I can't compile the test program. Guessing...)" >&4
4482 rp="What is the size of your file positions (in bytes)?"
4492 case "$usemorebits" in
4493 "$define"|true|[yY]*)
4494 use64bitint="$define"
4495 uselongdouble="$define"
4496 usemorebits="$define"
4498 *) usemorebits="$undef"
4503 case "$uselonglong" in
4504 "$define"|true|[yY]*)
4507 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4509 use64bitint="$define"
4512 case "$use64bits" in
4513 "$define"|true|[yY]*)
4516 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4518 use64bitint="$define"
4521 case "$use64bitints" in
4522 "$define"|true|[yY]*)
4525 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4527 use64bitint="$define"
4530 case "$use64bitsint" in
4531 "$define"|true|[yY]*)
4534 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4536 use64bitint="$define"
4539 case "$uselonglongs" in
4540 "$define"|true|[yY]*)
4543 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4545 use64bitint="$define"
4548 case "$use64bitsall" in
4549 "$define"|true|[yY]*)
4552 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4554 use64bitall="$define"
4559 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4561 case "$use64bitall" in
4562 "$define"|true|[yY]*) use64bitint="$define" ;;
4568 You have natively 64-bit long integers.
4572 *) case "$use64bitint" in
4573 "$define"|true|[yY]*) dflt='y';;
4578 Perl can be built to take advantage of 64-bit integer types
4579 on some systems. To do so, Configure can be run with -Duse64bitint.
4580 Choosing this option will most probably introduce binary incompatibilities.
4582 If this doesn't make any sense to you, just accept the default '$dflt'.
4584 rp='Try to use 64-bit integers, if available?'
4587 [yY]*) val="$define" ;;
4595 case "$use64bitall" in
4596 "$define"|true|[yY]*) dflt='y' ;;
4597 *) case "$longsize" in
4605 You may also choose to try maximal 64-bitness. It means using as much
4606 64-bitness as possible on the platform. This in turn means even more
4607 binary incompatibilities. On the other hand, your platform may not
4608 have any more 64-bitness available than what you already have chosen.
4610 If this doesn't make any sense to you, just accept the default '$dflt'.
4612 rp='Try to use maximal 64-bit support, if available?'
4615 [yY]*) val="$define" ;;
4620 case "$use64bitall" in
4622 case "$use64bitint" in
4626 Since you have chosen a maximally 64-bit build, I'm also turning on
4627 the use of 64-bit integers.
4629 use64bitint="$define" ;;
4634 case "$use64bitint" in
4635 "$define"|true|[yY]*)
4636 : Look for a hint-file generated 'call-back-unit'. If the
4637 : user has specified that a 64-bit perl is to be built,
4638 : we may need to set or change some other defaults.
4639 if $test -f use64bitint.cbu; then
4640 echo "Your platform has some specific hints for 64-bit integers, using them..."
4644 4) case "$archname64" in
4645 '') archname64=64int ;;
4652 case "$use64bitall" in
4653 "$define"|true|[yY]*)
4654 : Look for a hint-file generated 'call-back-unit'. If the
4655 : user has specified that a maximally 64-bit perl is to be built,
4656 : we may need to set or change some other defaults.
4657 if $test -f use64bitall.cbu; then
4658 echo "Your platform has some specific hints for 64-bit builds, using them..."
4662 4) case "$archname64" in
4663 ''|64int) archname64=64all ;;
4670 : determine the architecture name
4672 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4673 tarch=`arch`"-$osname"
4674 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4675 if uname -m > tmparch 2>&1 ; then
4676 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4677 -e 's/$/'"-$osname/" tmparch`
4685 case "$myarchname" in
4688 echo "(Your architecture name used to be $myarchname.)"
4695 *) dflt="$archname";;
4697 rp='What is your architecture name'
4700 case "$usethreads" in
4702 echo "Threads selected." >&4
4704 *-thread*) echo "...and architecture name already has -thread." >&4
4706 *) archname="$archname-thread"
4707 echo "...setting architecture name to $archname." >&4
4712 case "$usemultiplicity" in
4714 echo "Multiplicity selected." >&4
4716 *-multi*) echo "...and architecture name already has -multi." >&4
4718 *) archname="$archname-multi"
4719 echo "...setting architecture name to $archname." >&4
4724 case "$use64bitint" in
4726 case "$archname64" in
4731 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4733 *) archname="$archname-$archname64"
4734 echo "...setting architecture name to $archname." >&4
4741 : determine root of directory hierarchy where package will be installed.
4744 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4752 By default, $package will be installed in $dflt/bin, manual pages
4753 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4754 installation directories. Typically this is something like /usr/local.
4755 If you wish to have binaries under /usr/bin but other parts of the
4756 installation under /usr/local, that's ok: you will be prompted
4757 separately for each of the installation directories, the prefix being
4758 only used to set the defaults.
4762 rp='Installation prefix to use?'
4770 *) oldprefix="$prefix";;
4780 $define|true) afs=true ;;
4781 $undef|false) afs=false ;;
4782 *) if test -d /afs; then
4790 echo "AFS may be running... I'll be extra cautious then..." >&4
4792 echo "AFS does not seem to be running..." >&4
4795 : determine installation prefix for where package is to be installed.
4799 Since you are running AFS, I need to distinguish the directory in which
4800 files will reside from the directory in which they are installed (and from
4801 which they are presumably copied to the former directory by occult means).
4804 case "$installprefix" in
4805 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4806 *) dflt="$installprefix";;
4811 In some special cases, particularly when building $package for distribution,
4812 it is convenient to distinguish between the directory in which files should
4813 be installed from the directory ($prefix) in which they
4814 will eventually reside. For most users, these two directories are the same.
4817 case "$installprefix" in
4819 *) dflt=$installprefix;;
4823 rp='What installation prefix should I use for installing files?'
4825 installprefix="$ans"
4826 installprefixexp="$ansexp"
4828 : set the prefixit variable, to compute a suitable default value
4829 prefixit='case "$3" in
4831 case "$oldprefix" in
4832 "") eval "$1=\"\$$2\"";;
4839 ""|" ") eval "$1=\"\$$2\"";;
4845 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4847 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4848 /*-$oldprefix/*|\~*-$oldprefix/*)
4849 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4850 *) eval "$1=\"\$$2\"";;
4855 : get the patchlevel
4857 echo "Getting the current patchlevel..." >&4
4858 if $test -r $rsrc/patchlevel.h;then
4859 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4860 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4861 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4862 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4863 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4864 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4873 $echo $n "(You have $package revision $revision" $c
4874 $echo $n " patchlevel $patchlevel" $c
4875 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4879 : XXX Should be a Configure test for double-dots in filenames.
4880 version=`echo $revision $patchlevel $subversion | \
4881 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4882 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4883 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4886 version=`echo $revision $patchlevel $subversion | \
4887 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4888 api_versionstring=`echo $api_revision $api_version $api_subversion | \
4889 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4892 : Special case the 5.005_xx maintenance series, which used 5.005
4893 : without any subversion label as a subdirectory in $sitelib
4894 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4895 api_versionstring='5.005'
4898 : determine installation style
4899 : For now, try to deduce it from prefix unless it is already set.
4900 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4901 case "$installstyle" in
4902 '') case "$prefix" in
4903 *perl*) dflt='lib';;
4904 *) dflt='lib/perl5' ;;
4907 *) dflt="$installstyle" ;;
4909 : Probably not worth prompting for this since we prompt for all
4910 : the directories individually, and the prompt would be too long and
4914 : determine where private library files go
4915 : Usual default is /usr/local/lib/perl5/$version.
4916 : Also allow things like /opt/perl/lib/$version, since
4917 : /opt/perl/lib/perl5... would be redundant.
4918 : The default "style" setting is made in installstyle.U
4919 case "$installstyle" in
4920 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4921 *) set dflt privlib lib/$version ;;
4926 There are some auxiliary files for $package that need to be put into a
4927 private library directory that is accessible by everyone.
4931 rp='Pathname where the private library files will reside?'
4934 privlibexp="$ansexp"
4935 : Change installation prefix, if necessary.
4936 if $test X"$prefix" != X"$installprefix"; then
4937 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4939 installprivlib="$privlibexp"
4942 : set the prefixup variable, to restore leading tilda escape
4943 prefixup='case "$prefixexp" in
4945 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4948 : determine where public architecture dependent libraries go
4951 : privlib default is /usr/local/lib/$package/$version
4952 : archlib default is /usr/local/lib/$package/$version/$archname
4953 : privlib may have an optional trailing /share.
4954 tdflt=`echo $privlib | $sed 's,/share$,,'`
4955 tdflt=$tdflt/$archname
4964 $spackage contains architecture-dependent library files. If you are
4965 sharing libraries in a heterogeneous environment, you might store
4966 these files in a separate location. Otherwise, you can just include
4967 them with the rest of the public library files.
4971 rp='Where do you want to put the public architecture-dependent libraries?'
4974 archlibexp="$ansexp"
4975 if $test X"$archlib" = X"$privlib"; then
4980 : Change installation prefix, if necessary.
4981 if $test X"$prefix" != X"$installprefix"; then
4982 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4984 installarchlib="$archlibexp"
4988 : Binary compatibility with 5.005 is not possible for builds
4989 : with advanced features
4990 case "$usethreads$usemultiplicity" in
4992 bincompat5005="$undef"
4993 d_bincompat5005="$undef"
4997 This version of Perl can be compiled for binary compatibility with 5.005.
4998 If you decide to do so, you will be able to continue using most of the
4999 extensions that were compiled for Perl 5.005.
5002 case "$bincompat5005$d_bincompat5005" in
5003 *"$undef"*) dflt=n ;;
5006 rp='Binary compatibility with Perl 5.005?'
5009 y*) val="$define" ;;
5014 case "$d_bincompat5005" in
5016 bincompat5005="$define"
5018 *) bincompat5005="$undef"
5019 d_bincompat5005="$undef"
5026 : see if setuid scripts can be secure
5029 Some kernels have a bug that prevents setuid #! scripts from being
5030 secure. Some sites have disabled setuid #! scripts because of this.
5032 First let's decide if your kernel supports secure setuid #! scripts.
5033 (If setuid #! scripts would be secure but have been disabled anyway,
5034 don't say that they are secure if asked.)
5039 if $test -d /dev/fd; then
5040 echo "#!$ls" >reflect
5041 chmod +x,u+s reflect
5042 ./reflect >flect 2>&1
5043 if $contains "/dev/fd" flect >/dev/null; then
5044 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5048 If you are not sure if they are secure, I can check but I'll need a
5049 username and password different from the one you are using right now.
5050 If you don't have such a username or don't want me to test, simply
5054 rp='Other username to test security of setuid scripts with?'
5059 case "$d_suidsafe" in
5060 '') echo "I'll assume setuid scripts are *not* secure." >&4
5063 echo "Well, the $hint value is *not* secure." >&4
5065 *) echo "Well, the $hint value *is* secure." >&4
5070 $rm -f reflect flect
5071 echo "#!$ls" >reflect
5072 chmod +x,u+s reflect
5075 echo '"su" will (probably) prompt you for '"$ans's password."
5076 su $ans -c './reflect >flect'
5077 if $contains "/dev/fd" flect >/dev/null; then
5078 echo "Okay, it looks like setuid scripts are secure." >&4
5081 echo "I don't think setuid scripts are secure." >&4
5086 rp='Does your kernel have *secure* setuid scripts?'
5089 [yY]*) val="$define";;
5094 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5095 echo "(That's for file descriptors, not floppy disks.)"
5101 $rm -f reflect flect
5103 : now see if they want to do setuid emulation
5106 case "$d_suidsafe" in
5109 echo "No need to emulate SUID scripts since they are secure here." >& 4
5113 Some systems have disabled setuid scripts, especially systems where
5114 setuid scripts cannot be secure. On systems where setuid scripts have
5115 been disabled, the setuid/setgid bits on scripts are currently
5116 useless. It is possible for $package to detect those bits and emulate
5117 setuid/setgid in a secure fashion. This emulation will only work if
5118 setuid scripts have been disabled in your kernel.
5122 "$define") dflt=y ;;
5125 rp="Do you want to do setuid/setgid emulation?"
5128 [yY]*) val="$define";;
5136 : determine filename position in cpp output
5138 echo "Computing filename position in cpp output for #include directives..." >&4
5139 echo '#include <stdio.h>' > foo.c
5142 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5143 $grep '^[ ]*#.*stdio\.h' | \
5144 while read cline; do
5147 while $test \$# -gt 0; do
5148 if $test -r \`echo \$1 | $tr -d '"'\`; then
5153 pos=\`expr \$pos + 1\`
5165 *) pos="${fieldn}th";;
5167 echo "Your cpp writes the filename in the $pos field of the line."
5169 : locate header file
5174 for usrincdir in $usrinc
5176 if test -f \$usrincdir/\$wanted; then
5177 echo "\$usrincdir/\$wanted"
5181 awkprg='{ print \$$fieldn }'
5182 echo "#include <\$wanted>" > foo\$\$.c
5183 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5184 $grep "^[ ]*#.*\$wanted" | \
5185 while read cline; do
5186 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5188 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5189 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5194 # status = 0: grep returned 0 lines, case statement not executed
5195 # status = 1: headerfile found
5196 # status = 2: while loop executed, no headerfile found
5200 if test \$status -eq 1; then
5207 : define an alternate in-header-list? function
5208 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5209 cont=true; xxf="echo \"<\$1> found.\" >&4";
5210 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5211 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5213 case $# in 4) instead=instead;; *) instead="at last";; esac;
5214 while $test "$cont"; do
5216 var=$2; eval "was=\$$2";
5217 if $test "$xxx" && $test -r "$xxx";
5219 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5222 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5223 set $yyy; shift; shift; yyy=$@;
5224 case $# in 0) cont="";;
5225 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5226 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5227 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5228 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5232 do set $yyy; var=$2; eval "was=\$$2";
5233 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5234 set $yyy; shift; shift; yyy=$@;
5237 : see if this is a malloc.h system
5238 set malloc.h i_malloc
5241 : see if stdlib is available
5242 set stdlib.h i_stdlib
5245 : determine which malloc to compile in
5247 case "$usemymalloc" in
5248 ''|[yY]*|true|$define) dflt='y' ;;
5251 rp="Do you wish to attempt to use the malloc that comes with $package?"
5257 mallocsrc='malloc.c'
5258 mallocobj="malloc$_o"
5259 d_mymalloc="$define"
5262 : Remove malloc from list of libraries to use
5263 echo "Removing unneeded -lmalloc from library list" >&4
5264 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5267 echo "libs = $libs" >&4
5279 : compute the return types of malloc and free
5281 $cat >malloc.c <<END
5285 #include <sys/types.h>
5299 case "$malloctype" in
5301 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5308 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5312 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5319 echo "Your system uses $freetype free(), it would seem." >&4
5323 After $package is installed, you may wish to install various
5324 add-on modules and utilities. Typically, these add-ons will
5325 be installed under $prefix with the rest
5326 of this package. However, you may wish to install such add-ons
5327 elsewhere under a different prefix.
5329 If you do not wish to put everything under a single prefix, that's
5330 ok. You will be prompted for the individual locations; this siteprefix
5331 is only used to suggest the defaults.
5333 The default should be fine for most people.
5337 rp='Installation prefix to use for add-on modules and utilities?'
5338 : XXX Here might be another good place for an installstyle setting.
5339 case "$siteprefix" in
5341 *) dflt=$siteprefix ;;
5344 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5346 case "$siteprefix" in
5350 *) oldsiteprefix="$prefix";;
5355 siteprefixexp="$ansexp"
5357 : determine where site specific libraries go.
5358 : Usual default is /usr/local/lib/perl5/site_perl/$version
5359 : The default "style" setting is made in installstyle.U
5360 : XXX No longer works with Prefixit stuff.
5361 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5363 '') case "$installstyle" in
5364 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5365 *) dflt=$siteprefix/lib/site_$prog/$version ;;
5373 The installation process will create a directory for
5374 site-specific extensions and modules. Most users find it convenient
5375 to place all site-specific files in this directory rather than in the
5376 main distribution directory.
5380 rp='Pathname for the site-specific library files?'
5383 sitelibexp="$ansexp"
5384 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5385 : Change installation prefix, if necessary.
5386 if $test X"$prefix" != X"$installprefix"; then
5387 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5389 installsitelib="$sitelibexp"
5392 : determine where site specific architecture-dependent libraries go.
5393 : sitelib default is /usr/local/lib/perl5/site_perl/$version
5394 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5395 : sitelib may have an optional trailing /share.
5397 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
5398 dflt="$dflt/$archname"
5403 set sitearch sitearch none
5407 The installation process will also create a directory for
5408 architecture-dependent site-specific extensions and modules.
5412 rp='Pathname for the site-specific architecture-dependent library files?'
5415 sitearchexp="$ansexp"
5416 : Change installation prefix, if necessary.
5417 if $test X"$prefix" != X"$installprefix"; then
5418 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5420 installsitearch="$sitearchexp"
5425 The installation process will also create a directory for
5426 vendor-supplied add-ons. Vendors who supply perl with their system
5427 may find it convenient to place all vendor-supplied files in this
5428 directory rather than in the main distribution directory. This will
5429 ease upgrades between binary-compatible maintenance versions of perl.
5431 Of course you may also use these directories in whatever way you see
5432 fit. For example, you might use them to access modules shared over a
5433 company-wide network.
5435 The default answer should be fine for most people.
5436 This causes further questions about vendor add-ons to be skipped
5437 and no vendor-specific directories will be configured for perl.
5440 rp='Do you want to configure vendor-specific add-on directories?'
5441 case "$usevendorprefix" in
5442 define|true|[yY]*) dflt=y ;;
5443 *) : User may have set vendorprefix directly on Configure command line.
5444 case "$vendorprefix" in
5453 rp='Installation prefix to use for vendor-supplied add-ons?'
5454 case "$vendorprefix" in
5456 *) dflt=$vendorprefix ;;
5459 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5461 case "$vendorprefix" in
5465 *) oldvendorprefix="$prefix";;
5469 usevendorprefix="$define"
5471 vendorprefixexp="$ansexp"
5473 *) usevendorprefix="$undef"
5479 case "$vendorprefix" in
5480 '') d_vendorlib="$undef"
5484 *) d_vendorlib="$define"
5485 : determine where vendor-supplied modules go.
5486 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5487 case "$vendorlib" in
5489 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5490 case "$installstyle" in
5491 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5492 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5495 *) dflt="$vendorlib"
5499 rp='Pathname for the vendor-supplied library files?'
5502 vendorlibexp="$ansexp"
5505 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
5506 : Change installation prefix, if necessary.
5507 if $test X"$prefix" != X"$installprefix"; then
5508 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5510 installvendorlib="$vendorlibexp"
5513 case "$vendorprefix" in
5514 '') d_vendorarch="$undef"
5518 *) d_vendorarch="$define"
5519 : determine where vendor-supplied architecture-dependent libraries go.
5520 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
5521 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
5522 : vendorlib may have an optional trailing /share.
5523 case "$vendorarch" in
5524 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
5525 dflt="$dflt/$archname"
5527 *) dflt="$vendorarch" ;;
5530 rp='Pathname for vendor-supplied architecture-dependent files?'
5533 vendorarchexp="$ansexp"
5536 : Change installation prefix, if necessary.
5537 if $test X"$prefix" != X"$installprefix"; then
5538 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
5540 installvendorarch="$vendorarchexp"
5543 : Final catch-all directories to search
5546 Lastly, you can have perl look in other directories for extensions and
5547 modules in addition to those already specified.
5548 These directories will be searched after
5552 test X"$vendorlib" != "X" && echo ' ' $vendorlib
5553 test X"$vendorarch" != "X" && echo ' ' $vendorarch
5555 case "$otherlibdirs" in
5556 ''|' ') dflt='none' ;;
5557 *) dflt="$otherlibdirs" ;;
5560 Enter a colon-separated set of extra paths to include in perl's @INC
5561 search path, or enter 'none' for no extra paths.
5565 rp='Colon-separated list of additional directories for perl to search?'
5568 ' '|''|none) otherlibdirs=' ' ;;
5569 *) otherlibdirs="$ans" ;;
5571 case "$otherlibdirs" in
5575 set d_perl_otherlibdirs
5578 : Cruising for prototypes
5580 echo "Checking out function prototypes..." >&4
5581 $cat >prototype.c <<'EOCP'
5582 int main(int argc, char *argv[]) {
5585 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5586 echo "Your C compiler appears to support function prototypes."
5589 echo "Your C compiler doesn't seem to understand function prototypes."
5596 case "$prototype" in
5598 *) ansi2knr='ansi2knr'
5603 This version of $package can only be compiled by a compiler that
5604 understands function prototypes. Unfortunately, your C compiler
5606 doesn't seem to understand them. Sorry about that.
5608 If GNU cc is available for your system, perhaps you could try that instead.
5610 Eventually, we hope to support building Perl with pre-ANSI compilers.
5611 If you would like to help in that effort, please contact <perlbug@perl.org>.
5613 Aborting Configure now.
5619 : determine where public executables go
5624 rp='Pathname where the public executables will reside?'
5626 if $test "X$ansexp" != "X$binexp"; then
5631 : Change installation prefix, if necessary.
5632 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5633 if $test X"$prefix" != X"$installprefix"; then
5634 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5636 installbin="$binexp"
5639 : Find perl5.005 or later.
5640 echo "Looking for a previously installed perl5.005 or later... "
5642 '') for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5643 : Check if this perl is recent and can load a simple module
5644 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5647 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5657 '') echo "None found. That's ok.";;
5658 *) echo "Using $perl5." ;;
5661 : Determine list of previous versions to include in @INC
5662 $cat > getverlist <<EOPL
5665 \$api_versionstring = "$api_versionstring";
5666 \$version = "$version";
5667 \$stem = "$sitelib_stem";
5668 \$archname = "$archname";
5670 $cat >> getverlist <<'EOPL'
5671 # Can't have leading @ because metaconfig interprets it as a command!
5672 ;@inc_version_list=();
5673 # XXX Redo to do opendir/readdir?
5676 ;@candidates = glob("5.*");
5682 # XXX ToDo: These comparisons must be reworked when two-digit
5683 # subversions come along, so that 5.7.10 compares as greater than
5684 # 5.7.3! By that time, hope that 5.6.x is sufficiently
5685 # widespread that we can use the built-in version vectors rather
5686 # than reinventing them here. For 5.6.0, however, we must
5687 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
5688 foreach $d (@candidates) {
5689 if ($d lt $version) {
5690 if ($d ge $api_versionstring) {
5691 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
5693 elsif ($d ge "5.005") {
5694 unshift(@inc_version_list, grep { -d } $d);
5698 # Skip newer version. I.e. don't look in
5699 # 5.7.0 if we're installing 5.6.1.
5703 if (@inc_version_list) {
5704 print join(' ', @inc_version_list);
5707 # Blank space to preserve value for next Configure run.
5712 case "$inc_version_list" in
5713 '') if test -x "$perl5"; then
5714 dflt=`$perl5 getverlist`
5719 $undef) dflt='none' ;;
5720 *) dflt="$inc_version_list" ;;
5723 ''|' ') dflt=none ;;
5727 In order to ease the process of upgrading, this version of perl
5728 can be configured to use modules built and installed with earlier
5729 versions of perl that were installed under $prefix. Specify here
5730 the list of earlier versions that this version of perl should check.
5731 If Configure detected no earlier versions of perl installed under
5732 $prefix, then the list will be empty. Answer 'none' to tell perl
5733 to not search earlier versions.
5735 The default should almost always be sensible, so if you're not sure,
5736 just accept the default.
5739 rp='List of earlier versions to include in @INC?'
5742 [Nn]one|''|' ') inc_version_list=' ' ;;
5743 *) inc_version_list="$ans" ;;
5745 case "$inc_version_list" in
5747 inc_version_list_init='0';;
5748 *) inc_version_list_init=`echo $inc_version_list |
5749 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5754 : determine whether to install perl also as /usr/bin/perl
5757 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5759 Many scripts expect perl to be installed as /usr/bin/perl.
5760 I can install the perl you are about to compile also as /usr/bin/perl
5761 (in addition to $installbin/perl).
5763 case "$installusrbinperl" in
5764 "$undef"|[nN]*) dflt='n';;
5767 rp="Do you want to install perl as /usr/bin/perl?"
5770 [yY]*) val="$define";;
5776 set installusrbinperl
5780 echo "Checking for GNU C Library..." >&4
5781 cat >gnulibc.c <<EOM
5793 if eval $compile_ok && ./gnulibc; then
5795 echo "You are using the GNU C Library"
5798 echo "You are not using the GNU C Library"
5804 : see if nm is to be used to determine whether a symbol is defined or not
5808 case "$d_gnulibc" in
5811 echo "nm probably won't work on the GNU C Library." >&4
5817 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5819 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5820 echo "'nm' won't be sufficient on this sytem." >&4
5826 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5827 if $test $dflt -gt 20; then
5837 true|$define) dflt=y;;
5844 I can use $nm to extract the symbols from your C libraries. This
5845 is a time consuming task which may generate huge output on the disk (up
5846 to 3 megabytes) but that should make the symbols extraction faster. The
5847 alternative is to skip the 'nm' extraction part and to compile a small
5848 test program instead to determine whether each symbol is present. If
5849 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5850 this may be the best solution.
5852 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5855 rp="Shall I use $nm to extract C symbols from the libraries?"
5858 [Nn]*) usenm=false;;
5867 : nm options which may be necessary
5869 '') if $test -f /mach_boot; then
5871 elif $test -d /usr/ccs/lib; then
5872 nm_opt='-p' # Solaris (and SunOS?)
5873 elif $test -f /dgux; then
5875 elif $test -f /lib64/rld; then
5876 nm_opt='-p' # 64-bit Irix
5882 : nm options which may be necessary for shared libraries but illegal
5883 : for archive libraries. Thank you, Linux.
5884 case "$nm_so_opt" in
5885 '') case "$myuname" in
5887 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5888 nm_so_opt='--dynamic'
5897 : get list of predefined functions in a handy place
5902 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5909 *) for thislib in $libs; do
5912 : Handle C library specially below.
5915 thislib=`echo $thislib | $sed -e 's/^-l//'`
5916 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5918 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5920 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5922 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5924 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5926 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5928 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5933 libnames="$libnames $try"
5935 *) libnames="$libnames $thislib" ;;
5944 for xxx in $libpth; do
5945 $test -r $1 || set $xxx/libc.$so
5946 : The messy sed command sorts on library version numbers.
5948 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5949 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5951 s/[0-9][0-9]*/0000&/g
5952 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5955 sort | $sed -e 's/^.* //'`
5958 $test -r $1 || set /usr/ccs/lib/libc.$so
5959 $test -r $1 || set /lib/libsys_s$_a
5965 if $test -r "$1"; then
5966 echo "Your (shared) C library seems to be in $1."
5968 elif $test -r /lib/libc && $test -r /lib/clib; then
5969 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5971 libc='/lib/clib /lib/libc'
5972 if $test -r /lib/syslib; then
5973 echo "(Your math library is in /lib/syslib.)"
5974 libc="$libc /lib/syslib"
5976 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5977 echo "Your C library seems to be in $libc, as you said before."
5978 elif $test -r $incpath/usr/lib/libc$_a; then
5979 libc=$incpath/usr/lib/libc$_a;
5980 echo "Your C library seems to be in $libc. That's fine."
5981 elif $test -r /lib/libc$_a; then
5983 echo "Your C library seems to be in $libc. You're normal."
5985 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5987 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5988 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5989 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5991 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5993 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5996 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5998 if $test -r "$tans"; then
5999 echo "Your C library seems to be in $tans, of all places."
6005 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6009 If the guess above is wrong (which it might be if you're using a strange
6010 compiler, or your machine supports multiple models), you can override it here.
6015 echo $libpth | tr ' ' $trnl | sort | uniq > libpath
6017 I can't seem to find your C library. I've looked in the following places:
6020 $sed 's/^/ /' libpath
6023 None of these seems to contain your C library. I need to get its name...
6028 rp='Where is your C library?'
6033 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
6034 set X `cat libnames`
6037 case $# in 1) xxx=file; esac
6038 echo "Extracting names from the following $xxx for later perusal:" >&4
6040 $sed 's/^/ /' libnames >&4
6042 $echo $n "This may take a while...$c" >&4
6046 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
6047 *) $nm $nm_opt $file 2>/dev/null;;
6052 $grep fprintf libc.tmp > libc.ptf
6053 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
6054 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
6056 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
6058 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6060 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
6062 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6064 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
6066 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6068 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
6070 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6072 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
6074 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6076 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
6078 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6080 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
6081 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
6083 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6085 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
6087 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6089 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
6091 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6093 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
6095 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6097 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
6099 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6101 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
6103 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6105 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
6107 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6109 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
6111 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6114 $nm -p $* 2>/dev/null >libc.tmp
6115 $grep fprintf libc.tmp > libc.ptf
6116 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
6117 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
6123 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
6125 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
6126 for thisname in $libnames $libc; do
6127 $ar t $thisname >>libc.tmp
6129 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
6131 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
6132 # Repeat libc to extract forwarders to DLL entries too
6133 for thisname in $libnames $libc; do
6134 $ar tv $thisname >>libc.tmp
6135 # Revision 50 of EMX has bug in $ar.
6136 # it will not extract forwarders to DLL entries
6137 # Use emximp which will extract exactly them.
6138 emximp -o tmp.imp $thisname \
6140 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
6141 < tmp.imp >>libc.tmp
6144 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6147 echo "$ar didn't seem to work right." >&4
6148 echo "Maybe this is a Cray...trying bld instead..." >&4
6149 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
6151 for thisname in $libnames; do
6153 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6154 $ar t $thisname >>libc.tmp
6158 echo "That didn't work either. Giving up." >&4
6165 if $test -f /lib/syscalls.exp; then
6167 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6168 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
6172 $rm -f libnames libpath
6174 : see if dld is available
6178 : is a C symbol defined?
6181 -v) tf=libc.tmp; tc=""; tdc="";;
6182 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
6183 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
6186 case "$reuseval-$4" in
6188 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6194 if $contains $tlook $tf >/dev/null 2>&1;
6199 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6200 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6208 $define) tval=true;;
6214 : define an is-in-libc? function
6215 inlibc='echo " "; td=$define; tu=$undef;
6216 sym=$1; var=$2; eval "was=\$$2";
6218 case "$reuseval$was" in
6228 echo "$sym() found." >&4;
6229 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6231 echo "$sym() NOT found." >&4;
6232 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6236 $define) echo "$sym() found." >&4;;
6237 *) echo "$sym() NOT found." >&4;;
6241 : see if dlopen exists
6248 : determine which dynamic loading, if any, to compile in
6250 dldir="ext/DynaLoader"
6263 $define) dflt='y' ;;
6266 $define) dflt='y' ;;
6268 : Does a dl_xxx.xs file exist for this operating system
6269 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6272 rp="Do you wish to use dynamic loading?"
6279 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6280 dflt="$dldir/dl_${osname}.xs"
6281 elif $test "$d_dlopen" = "$define" ; then
6282 dflt="$dldir/dl_dlopen.xs"
6283 elif $test "$i_dld" = "$define" ; then
6284 dflt="$dldir/dl_dld.xs"
6289 *) dflt="$dldir/$dlsrc"
6292 echo "The following dynamic loading files are available:"
6293 : Can not go over to $dldir because getfile has path hard-coded in.
6294 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6295 rp="Source file to use for dynamic loading"
6301 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6305 Some systems may require passing special flags to $cc -c to
6306 compile modules that will be used to create a shared library.
6307 To use no flags, say "none".
6310 case "$cccdlflags" in
6311 '') case "$gccversion" in
6312 '') case "$osname" in
6314 next) dflt='none' ;;
6315 irix*) dflt='-KPIC' ;;
6316 svr4*|esix*|solaris) dflt='-KPIC' ;;
6317 sunos) dflt='-pic' ;;
6321 *) case "$osname" in
6322 svr4*|esix*|solaris) dflt='-fPIC' ;;
6327 *) dflt="$cccdlflags" ;;
6329 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6332 none) cccdlflags=' ' ;;
6333 *) cccdlflags="$ans" ;;
6338 Some systems use ld to create libraries that can be dynamically loaded,
6339 while other systems (such as those using ELF) use $cc.
6343 '') $cat >try.c <<'EOM'
6344 /* Test for whether ELF binaries are produced */
6349 int i = open("a.out",O_RDONLY);
6352 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6353 exit(0); /* succeed (yes, it's ELF) */
6358 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6360 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6364 echo "I'll use ld to build dynamic libraries."
6373 rp="What command should be used to create dynamic libraries?"
6379 Some systems may require passing special flags to $ld to create a
6380 library that can be dynamically loaded. If your ld flags include
6381 -L/other/path options to locate libraries outside your loader's normal
6382 search path, you may need to specify those -L options here as well. To
6383 use no flags, say "none".
6386 case "$lddlflags" in
6387 '') case "$osname" in
6388 beos) dflt='-nostart' ;;
6390 case "$gccversion" in
6391 '') dflt="$dflt +vnocompatwarnings" ;;
6394 linux|irix*) dflt='-shared' ;;
6395 next) dflt='none' ;;
6396 solaris) dflt='-G' ;;
6397 sunos) dflt='-assert nodefinitions' ;;
6398 svr4*|esix*) dflt="-G $ldflags" ;;
6402 *) dflt="$lddlflags" ;;
6405 : Try to guess additional flags to pick up local libraries.
6406 : Be careful not to append to a plain 'none'
6410 for thisflag in $ldflags; do
6415 *) dflt="$dflt $thisflag" ;;
6422 ''|' ') dflt='none' ;;
6425 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6428 none) lddlflags=' ' ;;
6429 *) lddlflags="$ans" ;;
6434 Some systems may require passing special flags to $cc to indicate that
6435 the resulting executable will use dynamic linking. To use no flags,
6439 case "$ccdlflags" in
6440 '') case "$osname" in
6441 hpux) dflt='-Wl,-E' ;;
6442 linux) dflt='-rdynamic' ;;
6443 next) dflt='none' ;;
6444 sunos) dflt='none' ;;
6448 *) dflt="$ccdlflags" ;;
6450 rp="Any special flags to pass to $cc to use dynamic linking?"
6453 none) ccdlflags=' ' ;;
6454 *) ccdlflags="$ans" ;;
6468 # No dynamic loading being used, so don't bother even to prompt.
6471 *) case "$useshrplib" in
6472 '') case "$osname" in
6473 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6475 also='Building a shared libperl is required for dynamic loading to work on your system.'
6480 also='Building a shared libperl is needed for MAB support.'
6498 The perl executable is normally obtained by linking perlmain.c with
6499 libperl${_a}, any static extensions (usually just DynaLoader), and
6500 any other libraries needed on this system (such as -lm, etc.). Since
6501 your system supports dynamic loading, it is probably possible to build
6502 a shared libperl.$so. If you will have more than one executable linked
6503 to libperl.$so, this will significantly reduce the size of each
6504 executable, but it may have a noticeable affect on performance. The
6505 default is probably sensible for your system.
6509 rp="Build a shared libperl.$so (y/n)"
6513 useshrplib='true' ;;
6514 *) useshrplib='false' ;;
6519 case "$useshrplib" in
6523 # Figure out a good name for libperl.so. Since it gets stored in
6524 # a version-specific architecture-dependent library, the version
6525 # number isn't really that important, except for making cc/ld happy.
6527 # A name such as libperl.so.3.1
6528 majmin="libperl.$so.$patchlevel.$subversion"
6529 # A name such as libperl.so.301
6530 majonly=`echo $patchlevel $subversion |
6531 $awk '{printf "%d%02d", $1, $2}'`
6532 majonly=libperl.$so.$majonly
6533 # I'd prefer to keep the os-specific stuff here to a minimum, and
6534 # rely on figuring it out from the naming of libc.
6535 case "${osname}${osvers}" in
6538 # XXX How handle the --version stuff for MAB?
6540 linux*) # ld won't link with a bare -lperl otherwise.
6543 cygwin*) # include version
6544 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6546 *) # Try to guess based on whether libc has major.minor.
6548 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6549 *libc.$so.[0-9]*) dflt=$majonly ;;
6550 *) dflt=libperl.$so ;;
6560 I need to select a good name for the shared libperl. If your system uses
6561 library names with major and minor numbers, then you might want something
6562 like $majmin. Alternatively, if your system uses a single version
6563 number for shared libraries, then you might want to use $majonly.
6564 Or, your system might be quite happy with a simple libperl.$so.
6566 Since the shared libperl will get installed into a version-specific
6567 architecture-dependent directory, the version number of the shared perl
6568 library probably isn't important, so the default should be o.k.
6571 rp='What name do you want to give to the shared libperl?'
6574 echo "Ok, I'll use $libperl"
6577 libperl="libperl${_a}"
6581 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6585 WARNING: Use of the shrpdir variable for the installation location of
6586 the shared $libperl is not supported. It was never documented and
6587 will not work in this version. Let me (perlbug@perl.com)
6588 know of any problems this may cause.
6594 But your current setting of $shrpdir is
6595 the default anyway, so it's harmless.
6600 Further, your current attempted setting of $shrpdir
6601 conflicts with the value of $archlibexp/CORE
6602 that installperl will use.
6609 # How will the perl executable find the installed shared $libperl?
6610 # Add $xxx to ccdlflags.
6611 # If we can't figure out a command-line option, use $shrpenv to
6612 # set env LD_RUN_PATH. The main perl makefile uses this.
6613 shrpdir=$archlibexp/CORE
6616 if "$useshrplib"; then
6619 # We'll set it in Makefile.SH...
6625 xxx="-Wl,-R$shrpdir"
6627 linux|irix*|dec_osf)
6628 xxx="-Wl,-rpath,$shrpdir"
6631 # next doesn't like the default...
6634 # beos doesn't like the default, either.
6637 # hpux doesn't like the default, either.
6638 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6641 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6647 # Only add $xxx if it isn't already in ccdlflags.
6648 case " $ccdlflags " in
6650 *) ccdlflags="$ccdlflags $xxx"
6653 Adding $xxx to the flags
6654 passed to $ld so that the perl executable will find the
6655 installed shared $libperl.
6663 # Fix ccdlflags in AIX for building external extensions.
6664 # (For building Perl itself bare -bE:perl.exp is needed,
6665 # Makefile.SH takes care of this.)
6667 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6669 # Respect a hint or command-line value.
6671 '') shrpenv="$tmp_shrpenv" ;;
6673 case "$ldlibpthname" in
6674 '') ldlibpthname=LD_LIBRARY_PATH ;;
6675 none) ldlibpthname='' ;;
6678 : determine where manual pages go
6679 set man1dir man1dir none
6683 $spackage has manual pages available in source form.
6687 echo "However, you don't have nroff, so they're probably useless to you."
6689 '') man1dir="none";;
6692 echo "If you don't want the manual sources installed, answer 'none'."
6697 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6698 lookpath="$lookpath $prefixexp/man/p_man/man1"
6699 lookpath="$lookpath $prefixexp/man/u_man/man1"
6700 lookpath="$lookpath $prefixexp/man/man.1"
6702 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6703 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6713 rp="Where do the main $spackage manual pages (source) go?"
6715 if $test "X$man1direxp" != "X$ansexp"; then
6719 man1direxp="$ansexp"
6725 : Change installation prefix, if necessary.
6726 if $test X"$prefix" != X"$installprefix"; then
6727 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6729 installman1dir="$man1direxp"
6732 : What suffix to use on installed man pages
6739 rp="What suffix should be used for the main $spackage man pages?"
6741 '') case "$man1dir" in
6755 *) dflt="$man1ext";;
6762 : see if we can have long filenames
6764 first=123456789abcdef
6766 if (echo hi >$first) 2>/dev/null; then
6767 if $test -f 123456789abcde; then
6768 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
6771 echo 'You can have filenames longer than 14 characters.'>&4
6776 You can't have filenames longer than 14 chars.
6777 You can't even think about them!
6783 $rm -rf 123456789abcde*
6785 : determine where library module manual pages go
6786 set man3dir man3dir none
6790 $spackage has manual pages for many of the library modules.
6796 However, you don't have nroff, so they're probably useless to you.
6799 '') man3dir="none";;
6803 case "$d_flexfnam" in
6806 However, your system can't handle the long file names like File::Basename.3.
6809 '') man3dir="none";;
6813 echo "If you don't want the manual sources installed, answer 'none'."
6814 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6816 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6817 if $test -d "$privlib/man/man3"; then
6820 WARNING: Previous versions of perl installed man3 pages into
6821 $privlib/man/man3. This version will suggest a
6822 new default of $dflt.
6826 rp='Do you wish to preserve the old behavior?(y/n)'
6829 y*) dflt="$privlib/man/man3" ;;
6834 *) dflt="$man3dir" ;;
6841 rp="Where do the $package library man pages (source) go?"
6844 man3direxp="$ansexp"
6850 : Change installation prefix, if necessary.
6851 if $test X"$prefix" != X"$installprefix"; then
6852 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6854 installman3dir="$man3direxp"
6857 : What suffix to use on installed man pages
6863 rp="What suffix should be used for the $package library man pages?"
6865 '') case "$man3dir" in
6879 *) dflt="$man3ext";;
6886 : see if we have to deal with yellow pages, now NIS.
6887 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6888 if $test -f /usr/etc/nibindd; then
6890 echo "I'm fairly confident you're on a NeXT."
6892 rp='Do you get the hosts file via NetInfo?'
6901 y*) hostcat='nidump hosts .';;
6902 *) case "$hostcat" in
6903 nidump*) hostcat='';;
6913 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6921 rp='Are you getting the hosts file via yellow pages?'
6924 y*) hostcat='ypcat hosts';;
6925 *) hostcat='cat /etc/hosts';;
6931 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6934 '') test -f /etc/group && groupcat='cat /etc/group';;
6937 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6940 : now get the host name
6942 echo "Figuring out host name..." >&4
6943 case "$myhostname" in
6945 echo 'Maybe "hostname" will work...'
6946 if tans=`sh -c hostname 2>&1` ; then
6954 if $test "$cont"; then
6956 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
6957 if tans=`cat /etc/systemid 2>&1` ; then
6959 phostname='cat /etc/systemid'
6960 echo "Whadyaknow. Xenix always was a bit strange..."
6963 elif $test -r /etc/systemid; then
6964 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6967 if $test "$cont"; then
6968 echo 'No, maybe "uuname -l" will work...'
6969 if tans=`sh -c 'uuname -l' 2>&1` ; then
6971 phostname='uuname -l'
6973 echo 'Strange. Maybe "uname -n" will work...'
6974 if tans=`sh -c 'uname -n' 2>&1` ; then
6976 phostname='uname -n'
6978 echo 'Oh well, maybe I can mine it out of whoami.h...'
6979 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6980 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6981 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6983 case "$myhostname" in
6984 '') echo "Does this machine have an identity crisis or something?"
6987 echo "Well, you said $myhostname before..."
6988 phostname='echo $myhostname';;
6994 : you do not want to know about this
6999 if $test "$myhostname" ; then
7001 rp='Your host name appears to be "'$myhostname'".'" Right?"
7009 : bad guess or no guess
7010 while $test "X$myhostname" = X ; do
7012 rp="Please type the (one word) name of your host:"
7017 : translate upper to lower if necessary
7018 case "$myhostname" in
7020 echo "(Normalizing case in your host name)"
7021 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7025 case "$myhostname" in
7027 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7028 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7029 echo "(Trimming domain name from host name--host name is now $myhostname)"
7031 *) case "$mydomain" in
7034 test "X$hostcat" = "Xypcat hosts" &&
7035 ypmatch "$myhostname" hosts 2>/dev/null |\
7036 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7039 test "X$hostcat" != "X" &&
7040 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7041 /[ ]$myhostname[ . ]/p" > hosts
7044 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7045 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7046 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7047 hosts | $sort | $uniq | \
7048 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7049 case `$echo X$dflt` in
7050 X*\ *) echo "(Several hosts in /etc/hosts matched hostname)"
7053 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7058 tans=`./loc resolv.conf X /etc /usr/etc`
7059 if $test -f "$tans"; then
7060 echo "(Attempting domain name extraction from $tans)"
7061 dflt=.`$sed -n -e 's/ / /g' \
7062 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7063 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7065 .) dflt=.`$sed -n -e 's/ / /g' \
7066 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7067 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7074 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7075 dflt=.`sh -c domainname 2>/dev/null`
7078 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7083 .) echo "(Lost all hope -- silly guess then)"
7089 *) dflt="$mydomain";;
7093 rp="What is your domain name?"
7103 : translate upper to lower if necessary
7106 echo "(Normalizing case in your domain name)"
7107 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7111 : a little sanity check here
7112 case "$phostname" in
7115 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7116 $myhostname$mydomain|$myhostname) ;;
7118 case "$phostname" in
7120 echo "(That doesn't agree with your whoami.h file, by the way.)"
7123 echo "(That doesn't agree with your $phostname command, by the way.)"
7133 I need to get your e-mail address in Internet format if possible, i.e.
7134 something like user@host.domain. Please answer accurately since I have
7135 no easy means to double check it. The default value provided below
7136 is most probably close to reality but may not be valid from outside
7137 your organization...
7141 while test "$cont"; do
7143 '') dflt="$cf_by@$myhostname$mydomain";;
7144 *) dflt="$cf_email";;
7146 rp='What is your e-mail address?'
7152 rp='Address does not look like an Internet one. Use it anyway?'
7168 If you or somebody else will be maintaining perl at your site, please
7169 fill in the correct e-mail address here so that they may be contacted
7170 if necessary. Currently, the "perlbug" program included with perl
7171 will send mail to this address in addition to perlbug@perl.com. You may
7172 enter "none" for no administrator.
7175 case "$perladmin" in
7176 '') dflt="$cf_email";;
7177 *) dflt="$perladmin";;
7179 rp='Perl administrator e-mail address'
7183 : figure out how to guarantee perl startup
7184 case "$startperl" in
7186 case "$sharpbang" in
7190 I can use the #! construct to start perl on your system. This will
7191 make startup of perl scripts faster, but may cause problems if you
7192 want to share those scripts and perl is not in a standard place
7193 ($binexp/perl) on all your platforms. The alternative is to force
7194 a shell by starting the script with a single ':' character.
7198 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7201 none) startperl=": # use perl";;
7202 *) startperl="#!$ans"
7203 if $test 30 -lt `echo "$ans" | wc -c`; then
7206 WARNING: Some systems limit the #! command to 32 characters.
7207 If you experience difficulty running Perl scripts with #!, try
7208 installing Perl in a directory with a shorter pathname.
7214 *) startperl=": # use perl"
7219 echo "I'll use $startperl to start perl scripts."
7221 : figure best path for perl in scripts
7224 perlpath="$binexp/perl"
7225 case "$startperl" in
7230 I will use the "eval 'exec'" idiom to start Perl on your system.
7231 I can use the full path of your Perl binary for this purpose, but
7232 doing so may cause problems if you want to share those scripts and
7233 Perl is not always in a standard place ($binexp/perl).
7237 rp="What path shall I use in \"eval 'exec'\"?"
7244 case "$startperl" in
7246 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7249 : determine where public executable scripts go
7250 set scriptdir scriptdir
7252 case "$scriptdir" in
7255 : guess some guesses
7256 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7257 $test -d /usr/share/bin && dflt=/usr/share/bin
7258 $test -d /usr/local/script && dflt=/usr/local/script
7259 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7260 $test -d $prefixexp/script && dflt=$prefixexp/script
7264 *) dflt="$scriptdir"
7269 Some installations have a separate directory just for executable scripts so
7270 that they can mount it across multiple architectures but keep the scripts in
7271 one spot. You might, for example, have a subdirectory of /usr/share for this.
7272 Or you might just lump your scripts in with all your other executables.
7276 rp='Where do you keep publicly executable scripts?'
7278 if $test "X$ansexp" != "X$scriptdirexp"; then
7282 scriptdirexp="$ansexp"
7283 : Change installation prefix, if necessary.
7284 if $test X"$prefix" != X"$installprefix"; then
7285 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7287 installscript="$scriptdirexp"
7290 : determine where add-on public executables go
7292 '') dflt=$siteprefix/bin ;;
7296 rp='Pathname where the add-on public executables should be installed?'
7299 sitebinexp="$ansexp"
7300 : Change installation prefix, if necessary.
7301 if $test X"$prefix" != X"$installprefix"; then
7302 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7304 installsitebin="$sitebinexp"
7307 : see if sqrtl exists
7312 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7315 case "$uselongdouble" in
7316 $define|true|[yY]*) dflt='y';;
7321 Perl can be built to take advantage of long doubles which
7322 (if available) may give more accuracy and range for floating point numbers.
7324 If this doesn't make any sense to you, just accept the default '$dflt'.
7326 rp='Try to use long doubles if available?'
7329 y|Y) val="$define" ;;
7335 case "$uselongdouble" in
7336 true|[yY]*) uselongdouble="$define" ;;
7339 case "$uselongdouble" in
7341 : Look for a hint-file generated 'call-back-unit'. If the
7342 : user has specified that long doubles should be used,
7343 : we may need to set or change some other defaults.
7344 if $test -f uselongdouble.cbu; then
7345 echo "Your platform has some specific hints for long doubles, using them..."
7346 . ./uselongdouble.cbu
7349 (Your platform doesn't have any specific hints for long doubles.)
7355 case "$uselongdouble:$d_sqrtl" in
7359 *** You requested the use of long doubles but you do not seem to have
7360 *** the mathematic functions for long doubles. I'm disabling the use
7361 *** of long doubles.
7364 uselongdouble=$undef
7368 case "$useperlio" in
7369 $define|true|[yY]*) dflt='y';;
7374 Previous version of $package used the standard IO mechanisms as defined
7375 in <stdio.h>. Versions 5.003_02 and later of perl allow alternate IO
7376 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7377 the default. This abstraction layer can use AT&T's sfio (if you already
7378 have sfio installed) or regular stdio. Using PerlIO with sfio may cause
7379 problems with some extension modules. Using PerlIO with stdio is safe,
7380 but it is slower than plain stdio and therefore is not the default.
7382 If this doesn't make any sense to you, just accept the default '$dflt'.
7384 rp='Use the experimental PerlIO abstraction layer?'
7391 echo "Ok, doing things the stdio way"
7398 case "$vendorprefix" in
7399 '') d_vendorbin="$undef"
7403 *) d_vendorbin="$define"
7404 : determine where vendor-supplied executables go.
7405 case "$vendorbin" in
7406 '') dflt=$vendorprefix/bin ;;
7407 *) dflt="$vendorbin" ;;
7410 rp='Pathname for the vendor-supplied executables directory?'
7413 vendorbinexp="$ansexp"
7416 : Change installation prefix, if necessary.
7417 if $test X"$prefix" != X"$installprefix"; then
7418 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7420 installvendorbin="$vendorbinexp"
7423 : see if qgcvt exists
7427 : check for length of double
7429 case "$doublesize" in
7431 echo "Checking to see how big your double precision numbers are..." >&4
7432 $cat >try.c <<'EOCP'
7436 printf("%d\n", (int)sizeof(double));
7441 if eval $compile_ok; then
7443 echo "Your double is $doublesize bytes long."
7446 echo "(I can't seem to compile the test program. Guessing...)"
7447 rp="What is the size of a double precision number (in bytes)?"
7455 : check for long doubles
7457 echo "Checking to see if you have long double..." >&4
7458 echo 'int main() { long double x = 7.0; }' > try.c
7460 if eval $compile; then
7462 echo "You have long double."
7465 echo "You do not have long double."
7471 : check for length of long double
7472 case "${d_longdbl}${longdblsize}" in
7475 echo "Checking to see how big your long doubles are..." >&4
7476 $cat >try.c <<'EOCP'
7480 printf("%d\n", sizeof(long double));
7485 if eval $compile; then
7486 longdblsize=`./try$exe_ext`
7487 echo "Your long doubles are $longdblsize bytes long."
7491 echo "(I can't seem to compile the test program. Guessing...)" >&4
7492 rp="What is the size of a long double (in bytes)?"
7496 if $test "X$doublesize" = "X$longdblsize"; then
7497 echo "(That isn't any different from an ordinary double.)"
7505 if $test X"$d_longdbl" = X"$define"; then
7507 echo "Checking how to print long doubles..." >&4
7509 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7510 $cat >try.c <<'EOCP'
7511 #include <sys/types.h>
7515 printf("%.3f\n", d);
7519 if eval $compile; then
7523 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7524 sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7525 echo "We will use %f."
7531 if $test X"$sPRIfldbl" = X; then
7532 $cat >try.c <<'EOCP'
7533 #include <sys/types.h>
7536 long double d = 123.456;
7537 printf("%.3llf\n", d);
7541 if eval $compile; then
7545 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7546 sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7547 echo "We will use %llf."
7553 if $test X"$sPRIfldbl" = X; then
7554 $cat >try.c <<'EOCP'
7555 #include <sys/types.h>
7558 long double d = 123.456;
7559 printf("%.3Lf\n", d);
7563 if eval $compile; then
7567 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7568 sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7569 echo "We will use %Lf."
7575 if $test X"$sPRIfldbl" = X; then
7576 $cat >try.c <<'EOCP'
7577 #include <sys/types.h>
7580 long double d = 123.456;
7581 printf("%.3lf\n", d);
7585 if eval $compile; then
7589 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7590 sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7591 echo "We will use %lf."
7597 if $test X"$sPRIfldbl" = X; then
7598 echo "Cannot figure out how to print long doubles." >&4
7605 case "$sPRIfldbl" in
7606 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
7607 d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef";
7609 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
7610 d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define";
7614 : Check how to convert floats to strings.
7615 if test "X$d_Gconvert" = X; then
7617 echo "Checking for an efficient way to convert floats to strings."
7619 case "$uselongdouble" in
7620 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7622 case "$d_longdbl" in
7623 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7625 case "$d_PRIgldbl" in
7626 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
7630 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7631 char *myname = "gconvert";
7634 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7635 char *myname = "gcvt";
7638 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7639 char *myname = "qgcvt";
7640 #define DOUBLETYPE long double
7643 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7644 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7646 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7648 char *myname = "sprintf";
7652 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7653 #define DOUBLETYPE long double
7655 #define DOUBLETYPE double
7661 #define I_STDLIB $i_stdlib
7667 checkit(expect, got)
7671 if (strcmp(expect, got)) {
7672 printf("%s oddity: Expected %s, got %s\n",
7673 myname, expect, got);
7683 /* This must be 1st test on (which?) platform */
7684 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7685 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7686 checkit("0.1", buf);
7688 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
7691 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
7692 checkit("1.1", buf);
7694 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
7695 checkit("1.01", buf);
7697 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
7698 checkit("1.001", buf);
7700 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
7701 checkit("1.0001", buf);
7703 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
7704 checkit("1.00001", buf);
7706 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
7707 checkit("1.000001", buf);
7709 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
7712 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
7715 /* Some Linux gcvt's give 1.e+5 here. */
7716 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
7717 checkit("100000", buf);
7719 /* Some Linux gcvt's give -1.e+5 here. */
7720 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
7721 checkit("-100000", buf);
7726 case "$d_Gconvert" in
7727 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7728 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7729 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7730 *) xxx_list='gconvert gcvt sprintf' ;;
7733 case "$d_longdbl$uselongdouble$d_qgcvt" in
7734 "$define$define$define") xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7737 for xxx_convert in $xxx_list; do
7738 echo "Trying $xxx_convert..."
7740 set try -DTRY_$xxx_convert
7741 if eval $compile; then
7742 echo "$xxx_convert() found." >&4
7744 echo "I'll use $xxx_convert to convert floats into a string." >&4
7747 echo "...But $xxx_convert didn't work as I expected."
7750 echo "$xxx_convert NOT found." >&4
7754 case "$xxx_convert" in
7755 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7756 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7757 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7758 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7759 "$define$define$define")
7760 d_Gconvert="sprintf((b),\"%.*$sPRIgldbl\",(n),(x))" ;;
7761 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7767 : Initialize h_fcntl
7770 : Initialize h_sysfile
7773 : access call always available on UNIX
7777 : locate the flags for 'access()'
7781 $cat >access.c <<'EOCP'
7782 #include <sys/types.h>
7787 #include <sys/file.h>
7796 : check sys/file.h first, no particular reason here
7797 if $test `./findhdr sys/file.h` && \
7798 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7800 echo "<sys/file.h> defines the *_OK access constants." >&4
7801 elif $test `./findhdr fcntl.h` && \
7802 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7804 echo "<fcntl.h> defines the *_OK access constants." >&4
7805 elif $test `./findhdr unistd.h` && \
7806 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7807 echo "<unistd.h> defines the *_OK access constants." >&4
7809 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7815 : see if accessx exists
7816 set accessx d_accessx
7819 : see if alarm exists
7823 : see if atolf exists
7827 : see if atoll exists
7831 : Look for GNU-cc style attribute checking
7833 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7834 $cat >attrib.c <<'EOCP'
7836 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7838 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7839 if $contains 'warning' attrib.out >/dev/null 2>&1; then
7840 echo "Your C compiler doesn't fully support __attribute__."
7843 echo "Your C compiler supports __attribute__."
7847 echo "Your C compiler doesn't seem to understand __attribute__ at all."
7854 : see if bcmp exists
7858 : see if bcopy exists
7862 : see if this is a unistd.h system
7863 set unistd.h i_unistd
7866 : see if getpgrp exists
7867 set getpgrp d_getpgrp
7870 case "$d_getpgrp" in
7873 echo "Checking to see which flavor of getpgrp is in use..."
7876 #include <sys/types.h>
7878 # include <unistd.h>
7882 if (getuid() == 0) {
7883 printf("(I see you are running Configure as super-user...)\n");
7887 if (getpgrp(1) == 0)
7896 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7897 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7899 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7900 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7903 echo "I can't seem to compile and run the test program."
7905 xxx="a USG one, i.e. you use getpgrp()."
7907 # SVR4 systems can appear rather BSD-ish.
7910 xxx="a BSD one, i.e. you use getpgrp(pid)."
7914 xxx="probably a USG one, i.e. you use getpgrp()."
7919 echo "Assuming your getpgrp is $xxx" >&4
7928 : see if setpgrp exists
7929 set setpgrp d_setpgrp
7932 case "$d_setpgrp" in
7935 echo "Checking to see which flavor of setpgrp is in use..."
7938 #include <sys/types.h>
7940 # include <unistd.h>
7944 if (getuid() == 0) {
7945 printf("(I see you are running Configure as super-user...)\n");
7949 if (-1 == setpgrp(1, 1))
7952 if (setpgrp() != -1)
7958 if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7959 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7961 elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7962 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7965 echo "(I can't seem to compile and run the test program.)"
7967 xxx="a USG one, i.e. you use setpgrp()."
7969 # SVR4 systems can appear rather BSD-ish.
7972 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7976 xxx="probably a USG one, i.e. you use setpgrp()."
7981 echo "Assuming your setpgrp is $xxx" >&4
7989 : see if bzero exists
7993 : see if signal is declared as pointer to function returning int or void
7995 xxx=`./findhdr signal.h`
7996 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7997 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
7998 echo "You have int (*signal())() instead of void." >&4
8000 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8001 echo "You have void (*signal())()." >&4
8003 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8004 echo "You have int (*signal())() instead of void." >&4
8006 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8007 echo "You have void (*signal())()." >&4
8010 case "$d_voidsig" in
8012 echo "I can't determine whether signal handler returns void or int..." >&4
8014 rp="What type does your signal handler return?"
8021 echo "As you already told me, signal handler returns void." >&4
8024 *) echo "As you already told me, signal handler returns int." >&4
8031 case "$d_voidsig" in
8032 "$define") signal_t="void";;
8037 : check for ability to cast large floats to 32-bit ints.
8039 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8040 if $test "$intsize" -ge 4; then
8047 #include <sys/types.h>
8049 $signal_t blech(s) int s; { exit(3); }
8056 signal(SIGFPE, blech);
8058 /* Don't let compiler optimize the test away. Store the number
8059 in a writable string for gcc to pass to sscanf under HP/UX.
8061 sprintf(str, "2147483647");
8062 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8066 /* x86 processors will probably give 0x8000 0000, which is a
8067 sign change. We don't want that. We want to mimic SPARC
8068 behavior here, which is to preserve the sign and give
8071 if (i32 != ($xxx) f)
8077 if eval $compile_ok; then
8081 echo "(I can't seem to compile the test program--assuming it can't)"
8089 echo "Nope, it can't."
8096 : check for ability to cast negative floats to unsigned
8098 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8101 #include <sys/types.h>
8103 $signal_t blech(s) int s; { exit(7); }
8104 $signal_t blech_in_list(s) int s; { exit(4); }
8105 unsigned long dummy_long(p) unsigned long p; { return p; }
8106 unsigned int dummy_int(p) unsigned int p; { return p; }
8107 unsigned short dummy_short(p) unsigned short p; { return p; }
8111 unsigned long along;
8113 unsigned short ashort;
8117 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8118 a direct f = -123. assignment. gcc-2.8.0 reportedly
8119 optimized the whole file away
8121 /* Store the number in a writable string for gcc to pass to
8124 sprintf(str, "-123");
8125 sscanf(str, "%lf", &f); /* f = -123.; */
8127 signal(SIGFPE, blech);
8128 along = (unsigned long)f;
8129 aint = (unsigned int)f;
8130 ashort = (unsigned short)f;
8131 if (along != (unsigned long)-123)
8133 if (aint != (unsigned int)-123)
8135 if (ashort != (unsigned short)-123)
8137 sprintf(str, "1073741824.");
8138 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8141 along = (unsigned long)f;
8142 if (along != 0x80000000)
8146 along = (unsigned long)f;
8147 if (along != 0x7fffffff)
8151 along = (unsigned long)f;
8152 if (along != 0x80000001)
8156 signal(SIGFPE, blech_in_list);
8157 sprintf(str, "123.");
8158 sscanf(str, "%lf", &f); /* f = 123.; */
8159 along = dummy_long((unsigned long)f);
8160 aint = dummy_int((unsigned int)f);
8161 ashort = dummy_short((unsigned short)f);
8162 if (along != (unsigned long)123)
8164 if (aint != (unsigned int)123)
8166 if (ashort != (unsigned short)123)
8173 if eval $compile_ok; then
8177 echo "(I can't seem to compile the test program--assuming it can't)"
8180 case "$castflags" in
8185 echo "Nope, it can't."
8192 : see if vprintf exists
8194 if set vprintf val -f d_vprintf; eval $csym; $val; then
8195 echo 'vprintf() found.' >&4
8197 $cat >vprintf.c <<'EOF'
8198 #include <varargs.h>
8200 int main() { xxx("foo"); }
8209 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8213 if eval $compile && ./vprintf; then
8214 echo "Your vsprintf() returns (int)." >&4
8217 echo "Your vsprintf() returns (char*)." >&4
8221 echo 'vprintf() NOT found.' >&4
8231 : see if chown exists
8235 : see if chroot exists
8239 : see if chsize exists
8243 : check for const keyword
8245 echo 'Checking to see if your C compiler knows about "const"...' >&4
8246 $cat >const.c <<'EOCP'
8247 typedef struct spug { int drokk; } spug;
8254 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8256 echo "Yup, it does."
8259 echo "Nope, it doesn't."
8264 : see if crypt exists
8266 if set crypt val -f d_crypt; eval $csym; $val; then
8267 echo 'crypt() found.' >&4
8271 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8272 if $test -z "$cryptlib"; then
8273 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8277 if $test -z "$cryptlib"; then
8278 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8282 if $test -z "$cryptlib"; then
8283 cryptlib=`./loc libcrypt$_a "" $libpth`
8287 if $test -z "$cryptlib"; then
8288 echo 'crypt() NOT found.' >&4
8297 : get csh whereabouts
8299 'csh') val="$undef" ;;
8304 : Respect a hint or command line value for full_csh.
8306 '') full_csh=$csh ;;
8309 : see if cuserid exists
8310 set cuserid d_cuserid
8313 : see if this is a limits.h system
8314 set limits.h i_limits
8317 : see if this is a float.h system
8321 : See if number of significant digits in a double precision number is known
8323 $cat >dbl_dig.c <<EOM
8333 printf("Contains DBL_DIG");
8336 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8337 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8338 echo "DBL_DIG found." >&4
8341 echo "DBL_DIG NOT found." >&4
8348 : see if difftime exists
8349 set difftime d_difftime
8352 : see if this is a dirent system
8354 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8356 echo "<dirent.h> found." >&4
8359 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8360 echo "<sys/dir.h> found." >&4
8363 xinc=`./findhdr sys/ndir.h`
8365 echo "<dirent.h> NOT found." >&4
8370 : Look for type of directory structure.
8372 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8374 case "$direntrytype" in
8377 $define) guess1='struct dirent' ;;
8378 *) guess1='struct direct' ;;
8381 *) guess1="$direntrytype"
8386 'struct dirent') guess2='struct direct' ;;
8387 *) guess2='struct dirent' ;;
8390 if $contains "$guess1" try.c >/dev/null 2>&1; then
8391 direntrytype="$guess1"
8392 echo "Your directory entries are $direntrytype." >&4
8393 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8394 direntrytype="$guess2"
8395 echo "Your directory entries seem to be $direntrytype." >&4
8397 echo "I don't recognize your system's directory entries." >&4
8398 rp="What type is used for directory entries on this system?"
8406 : see if the directory entry stores field length
8408 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8409 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8410 echo "Good, your directory entry keeps length information in d_namlen." >&4
8413 echo "Your directory entry does not know about the d_namlen field." >&4
8420 : see if dlerror exists
8423 set dlerror d_dlerror
8427 : see if dlfcn is available
8435 On a few systems, the dynamically loaded modules that perl generates and uses
8436 will need a different extension than shared libs. The default will probably
8444 rp='What is the extension of dynamically loaded modules'
8453 : Check if dlsym need a leading underscore
8459 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8460 $cat >dyna.c <<'EOM'
8469 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
8471 #include <sys/types.h>
8485 int mode = RTLD_LAZY ;
8487 handle = dlopen("./dyna.$dlext", mode) ;
8488 if (handle == NULL) {
8493 symbol = dlsym(handle, "fred") ;
8494 if (symbol == NULL) {
8495 /* try putting a leading underscore */
8496 symbol = dlsym(handle, "_fred") ;
8497 if (symbol == NULL) {
8510 : Call the object file tmp-dyna.o in case dlext=o.
8511 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
8512 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
8513 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 &&
8514 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8517 1) echo "Test program failed using dlopen." >&4
8518 echo "Perhaps you should not use dynamic loading." >&4;;
8519 2) echo "Test program failed using dlsym." >&4
8520 echo "Perhaps you should not use dynamic loading." >&4;;
8521 3) echo "dlsym needs a leading underscore" >&4
8523 4) echo "dlsym doesn't need a leading underscore." >&4;;
8526 echo "I can't compile and run the test program." >&4
8527 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8532 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8537 hasproto='varname=$1; func=$2; shift; shift;
8538 while $test $# -ge 2; do
8540 $define) echo "#include <$2>";;
8544 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8545 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8546 echo "$func() prototype found.";
8549 echo "$func() prototype NOT found.";
8554 $rm -f try.c tryout.c'
8556 : see if prototype for drand48 is available
8558 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8561 : see if dup2 exists
8565 : see if eaccess exists
8566 set eaccess d_eaccess
8569 : see if endgrent exists
8570 set endgrent d_endgrent
8573 : see if endhostent exists
8574 set endhostent d_endhent
8577 : see if endnetent exists
8578 set endnetent d_endnent
8581 : see if endprotoent exists
8582 set endprotoent d_endpent
8585 : see if endpwent exists
8586 set endpwent d_endpwent
8589 : see if endservent exists
8590 set endservent d_endsent
8593 : Locate the flags for 'open()'
8595 $cat >open3.c <<'EOCP'
8596 #include <sys/types.h>
8601 #include <sys/file.h>
8612 : check sys/file.h first to get FREAD on Sun
8613 if $test `./findhdr sys/file.h` && \
8614 set open3 -DI_SYS_FILE && eval $compile; then
8616 echo "<sys/file.h> defines the O_* constants..." >&4
8618 echo "and you have the 3 argument form of open()." >&4
8621 echo "but not the 3 argument form of open(). Oh, well." >&4
8624 elif $test `./findhdr fcntl.h` && \
8625 set open3 -DI_FCNTL && eval $compile; then
8627 echo "<fcntl.h> defines the O_* constants..." >&4
8629 echo "and you have the 3 argument form of open()." >&4
8632 echo "but not the 3 argument form of open(). Oh, well." >&4
8637 echo "I can't find the O_* constant definitions! You got problems." >&4
8643 : see which of string.h or strings.h is needed
8645 strings=`./findhdr string.h`
8646 if $test "$strings" && $test -r "$strings"; then
8647 echo "Using <string.h> instead of <strings.h>." >&4
8651 strings=`./findhdr strings.h`
8652 if $test "$strings" && $test -r "$strings"; then
8653 echo "Using <strings.h> instead of <string.h>." >&4
8655 echo "No string header found -- You'll surely have problems." >&4
8661 "$undef") strings=`./findhdr strings.h`;;
8662 *) strings=`./findhdr string.h`;;
8665 : check for non-blocking I/O stuff
8666 case "$h_sysfile" in
8667 true) echo "#include <sys/file.h>" > head.c;;
8670 true) echo "#include <fcntl.h>" > head.c;;
8671 *) echo "#include <sys/fcntl.h>" > head.c;;
8676 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8677 case "$o_nonblock" in
8680 $cat >>try.c <<'EOCP'
8684 printf("O_NONBLOCK\n");
8688 printf("O_NDELAY\n");
8692 printf("FNDELAY\n");
8699 if eval $compile_ok; then
8701 case "$o_nonblock" in
8702 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8703 *) echo "Seems like we can use $o_nonblock.";;
8706 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8709 *) echo "Using $hint value $o_nonblock.";;
8711 $rm -f try try.* .out core
8714 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8720 #include <sys/types.h>
8723 #define MY_O_NONBLOCK $o_nonblock
8724 #ifndef errno /* XXX need better Configure test */
8735 #include <strings.h>
8737 $signal_t blech(x) int x; { exit(3); }
8739 $cat >> try.c <<'EOCP'
8747 pipe(pd); /* Down: child -> parent */
8748 pipe(pu); /* Up: parent -> child */
8751 close(pd[1]); /* Parent reads from pd[0] */
8752 close(pu[0]); /* Parent writes (blocking) to pu[1] */
8753 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8755 signal(SIGALRM, blech);
8757 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
8759 sprintf(string, "%d\n", ret);
8760 write(2, string, strlen(string));
8763 if (errno == EAGAIN) {
8769 if (errno == EWOULDBLOCK)
8770 printf("EWOULDBLOCK\n");
8773 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
8774 sleep(2); /* Give it time to close our pipe */
8776 ret = read(pd[0], buf, 1); /* Should read EOF */
8778 sprintf(string, "%d\n", ret);
8779 write(3, string, strlen(string));
8783 close(pd[0]); /* We write to pd[1] */
8784 close(pu[1]); /* We read from pu[0] */
8785 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
8786 close(pd[1]); /* Pipe pd is now fully closed! */
8787 exit(0); /* Bye bye, thank you for playing! */
8791 if eval $compile_ok; then
8792 echo "$startsh" >mtry
8793 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8795 ./mtry >/dev/null 2>&1
8797 0) eagain=`$cat try.out`;;
8798 1) echo "Could not perform non-blocking setting!";;
8799 2) echo "I did a successful read() for something that was not there!";;
8800 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8801 *) echo "Something terribly wrong happened during testing.";;
8803 rd_nodata=`$cat try.ret`
8804 echo "A read() system call with no data present returns $rd_nodata."
8805 case "$rd_nodata" in
8808 echo "(That's peculiar, fixing that to be -1.)"
8814 echo "Forcing errno EAGAIN on read() with no data available."
8818 echo "Your read() sets errno to $eagain when no data is available."
8821 status=`$cat try.err`
8823 0) echo "And it correctly returns 0 to signal EOF.";;
8824 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8825 *) echo "However, your read() returns '$status' on EOF??";;
8828 if test "$status" = "$rd_nodata"; then
8829 echo "WARNING: you can't distinguish between EOF and no data!"
8833 echo "I can't compile the test program--assuming errno EAGAIN will do."
8840 echo "Using $hint value $eagain."
8841 echo "Your read() returns $rd_nodata when no data is present."
8842 case "$d_eofnblk" in
8843 "$define") echo "And you can see EOF because read() returns 0.";;
8844 "$undef") echo "But you can't see EOF status from read() returned value.";;
8846 echo "(Assuming you can't see EOF status from read anyway.)"
8852 $rm -f try try.* .out core head.c mtry
8854 : see if fchmod exists
8858 : see if fchown exists
8862 : see if this is an fcntl system
8866 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8867 while $test $# -ge 2; do
8869 $define) echo "#include <$2>";;
8873 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8875 if eval $compile; then
8886 : see whether socket exists
8888 $echo $n "Hmm... $c" >&4
8889 if set socket val -f d_socket; eval $csym; $val; then
8890 echo "Looks like you have Berkeley networking support." >&4
8892 if set setsockopt val -f; eval $csym; $val; then
8895 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8899 if $contains socklib libc.list >/dev/null 2>&1; then
8900 echo "Looks like you have Berkeley networking support." >&4
8902 : we will have to assume that it supports the 4.2 BSD interface
8905 echo "You don't have Berkeley networking in libc$_a..." >&4
8906 if test "X$d_socket" = "X$define"; then
8907 echo "...but you seem to believe that you have sockets." >&4
8909 for net in net socket
8911 if test -f /usr/lib/lib$net$_a; then
8912 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8913 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8914 if $contains socket libc.list >/dev/null 2>&1; then
8919 echo "...but the Wollongong group seems to have hacked it in." >&4
8920 sockethdr="-I/usr/netinclude"
8923 echo "Found Berkeley sockets interface in lib$net." >& 4
8924 if $contains setsockopt libc.list >/dev/null 2>&1; then
8927 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8934 if test "X$d_socket" != "X$define"; then
8935 echo "or anywhere else I see." >&4
8943 : see if socketpair exists
8944 set socketpair d_sockpair
8949 echo "Checking the availability of certain socket constants..." >& 4
8950 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8951 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8953 #include <sys/types.h>
8954 #include <sys/socket.h>
8960 set try; if eval $compile; then
8963 set d_${enum}; eval $setvar
8967 : see if sys/select.h has to be included
8968 set sys/select.h i_sysselct
8971 : see if we should include time.h, sys/time.h, or both
8973 if test "X$timeincl" = X; then
8974 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8975 $echo $n "I'm now running the test program...$c"
8976 $cat >try.c <<'EOCP'
8977 #include <sys/types.h>
8982 #ifdef SYSTIMEKERNEL
8985 #include <sys/time.h>
8988 #include <sys/select.h>
8997 struct timezone tzp;
8999 if (foo.tm_sec == foo.tm_sec)
9002 if (bar.tv_sec == bar.tv_sec)
9009 for s_timezone in '-DS_TIMEZONE' ''; do
9011 for s_timeval in '-DS_TIMEVAL' ''; do
9012 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9013 for i_time in '' '-DI_TIME'; do
9014 for i_systime in '-DI_SYSTIME' ''; do
9017 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9018 if eval $compile; then
9019 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9023 $echo $n "Succeeded with $flags$c"
9035 *SYSTIMEKERNEL*) i_systimek="$define"
9036 timeincl=`./findhdr sys/time.h`
9037 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9038 *) i_systimek="$undef";;
9041 *I_TIME*) i_time="$define"
9042 timeincl=`./findhdr time.h`" $timeincl"
9043 echo "We'll include <time.h>." >&4;;
9044 *) i_time="$undef";;
9047 *I_SYSTIME*) i_systime="$define"
9048 timeincl=`./findhdr sys/time.h`" $timeincl"
9049 echo "We'll include <sys/time.h>." >&4;;
9050 *) i_systime="$undef";;
9055 : check for fd_set items
9058 Checking to see how well your C compiler handles fd_set and friends ...
9060 $cat >fd_set.c <<EOCP
9061 #$i_systime I_SYS_TIME
9062 #$i_sysselct I_SYS_SELECT
9063 #$d_socket HAS_SOCKET
9064 #include <sys/types.h>
9066 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9069 #include <sys/time.h>
9072 #include <sys/select.h>
9081 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9088 set fd_set -DTRYBITS
9089 if eval $compile; then
9090 d_fds_bits="$define"
9092 echo "Well, your system knows about the normal fd_set typedef..." >&4
9094 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9095 d_fd_macros="$define"
9098 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9100 d_fd_macros="$undef"
9104 Hmm, your compiler has some difficulty with fd_set. Checking further...
9107 if eval $compile; then
9110 echo "Well, your system has some sort of fd_set available..." >&4
9112 echo "and you have the normal fd_set macros." >&4
9113 d_fd_macros="$define"
9116 but not the normal fd_set macros! Gross! More work for me...
9118 d_fd_macros="$undef"
9121 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9124 d_fd_macros="$undef"
9129 : see if fgetpos exists
9130 set fgetpos d_fgetpos
9133 : see if flock exists
9137 : see if fork exists
9141 : see if pathconf exists
9142 set pathconf d_pathconf
9145 : see if fpathconf exists
9146 set fpathconf d_fpathconf
9150 : check for fpos64_t
9152 echo "Checking to see if you have fpos64_t..." >&4
9155 int main() { fpos64_t x = 7; }
9158 if eval $compile; then
9160 echo "You have fpos64_t."
9163 echo "You do not have fpos64_t."
9165 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9172 : see if frexpl exists
9176 hasstruct='varname=$1; struct=$2; shift; shift;
9177 while $test $# -ge 2; do
9179 $define) echo "#include <$2>";;
9183 echo "int main () { struct $struct foo; }" >> try.c;
9185 if eval $compile; then
9194 : see if this is a sys/param system
9195 set sys/param.h i_sysparam
9198 : see if this is a sys/mount.h system
9199 set sys/mount.h i_sysmount
9202 : see if sys/types.h has to be included
9203 set sys/types.h i_systypes
9208 echo "Checking to see if your system supports struct fs_data..." >&4
9209 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9211 case "$d_fs_data_s" in
9212 "$define") echo "Yes, it does." ;;
9213 *) echo "No, it doesn't." ;;
9216 : see if fseeko exists
9220 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9223 : see if fsetpos exists
9224 set fsetpos d_fsetpos
9228 : see if fstatfs exists
9229 set fstatfs d_fstatfs
9233 : see if statvfs exists
9234 set statvfs d_statvfs
9237 : see if fstatvfs exists
9238 set fstatvfs d_fstatvfs
9242 : see if ftello exists
9246 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9249 : see if getcwd exists
9253 : see if getespwnam exists
9254 set getespwnam d_getespwnam
9258 : see if getfsstat exists
9259 set getfsstat d_getfsstat
9262 : see if getgrent exists
9263 set getgrent d_getgrent
9266 : see if gethostbyaddr exists
9267 set gethostbyaddr d_gethbyaddr
9270 : see if gethostbyname exists
9271 set gethostbyname d_gethbyname
9274 : see if gethostent exists
9275 set gethostent d_gethent
9278 : see how we will look up host name
9281 if set gethostname val -f d_gethname; eval $csym; $val; then
9282 echo 'gethostname() found.' >&4
9283 d_gethname="$define"
9286 if set uname val -f d_uname; eval $csym; $val; then
9289 uname() was found, but you're running xenix, and older versions of xenix
9290 have a broken uname(). If you don't really know whether your xenix is old
9291 enough to have a broken system call, use the default answer.
9298 rp='Is your uname() broken?'
9301 n*) d_uname="$define"; call=uname;;
9304 echo 'uname() found.' >&4
9311 case "$d_gethname" in
9312 '') d_gethname="$undef";;
9315 '') d_uname="$undef";;
9317 case "$d_uname$d_gethname" in
9322 Every now and then someone has a $call() that lies about the hostname
9323 but can't be fixed for political or economic reasons. If you wish, I can
9324 pretend $call() isn't there and maybe compute hostname at run-time
9325 thanks to the '$phostname' command.
9328 rp="Shall I ignore $call() from now on?"
9331 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9334 case "$phostname" in
9336 *) case "$aphostname" in
9342 file=`./loc $file $file $pth`
9343 aphostname=`echo $file $*`
9348 case "$d_uname$d_gethname" in
9351 case "$phostname" in
9353 echo "There will be no way for $package to get your hostname." >&4;;
9355 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9359 case "$d_phostname" in
9360 '') d_phostname="$undef";;
9363 : see if this is a netdb.h system
9367 : see if prototypes for various gethostxxx netdb.h functions are available
9369 set d_gethostprotos gethostent $i_netdb netdb.h
9372 : see if getlogin exists
9373 set getlogin d_getlogin
9376 : see if getmnt exists
9380 : see if getmntent exists
9381 set getmntent d_getmntent
9384 : see if getnetbyaddr exists
9385 set getnetbyaddr d_getnbyaddr
9388 : see if getnetbyname exists
9389 set getnetbyname d_getnbyname
9392 : see if getnetent exists
9393 set getnetent d_getnent
9396 : see if prototypes for various getnetxxx netdb.h functions are available
9398 set d_getnetprotos getnetent $i_netdb netdb.h
9402 : see if getprotobyname exists
9403 set getprotobyname d_getpbyname
9406 : see if getprotobynumber exists
9407 set getprotobynumber d_getpbynumber
9410 : see if getprotoent exists
9411 set getprotoent d_getpent
9414 : see if getpgid exists
9415 set getpgid d_getpgid
9418 : see if getpgrp2 exists
9419 set getpgrp2 d_getpgrp2
9422 : see if getppid exists
9423 set getppid d_getppid
9426 : see if getpriority exists
9427 set getpriority d_getprior
9430 : see if prototypes for various getprotoxxx netdb.h functions are available
9432 set d_getprotoprotos getprotoent $i_netdb netdb.h
9435 : see if getprpwnam exists
9436 set getprpwnam d_getprpwnam
9439 : see if getpwent exists
9440 set getpwent d_getpwent
9444 : see if getservbyname exists
9445 set getservbyname d_getsbyname
9448 : see if getservbyport exists
9449 set getservbyport d_getsbyport
9452 : see if getservent exists
9453 set getservent d_getsent
9456 : see if prototypes for various getservxxx netdb.h functions are available
9458 set d_getservprotos getservent $i_netdb netdb.h
9461 : see if getspnam exists
9462 set getspnam d_getspnam
9465 : see if gettimeofday or ftime exists
9466 set gettimeofday d_gettimeod
9468 case "$d_gettimeod" in
9474 val="$undef"; set d_ftime; eval $setvar
9477 case "$d_gettimeod$d_ftime" in
9480 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9484 : see if this is an grp system
9490 xxx=`./findhdr grp.h`
9491 $cppstdin $cppflags $cppminus < $xxx >$$.h
9493 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9505 set d_grpasswd; eval $setvar
9509 : see if hasmntopt exists
9510 set hasmntopt d_hasmntopt
9513 : see if this is a netinet/in.h or sys/in.h system
9514 set netinet/in.h i_niin sys/in.h i_sysin
9517 : see if arpa/inet.h has to be included
9518 set arpa/inet.h i_arpainet
9521 : see if htonl --and friends-- exists
9526 : Maybe they are macros.
9531 #include <sys/types.h>
9532 #$i_niin I_NETINET_IN
9534 #$i_arpainet I_ARPA_INET
9536 #include <netinet/in.h>
9542 #include <arpa/inet.h>
9545 printf("Defined as a macro.");
9548 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9549 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9551 echo "But it seems to be defined as a macro." >&4
9559 : see if iconv exists
9565 if set index val -f; eval $csym; $val; then
9566 if set strchr val -f d_strchr; eval $csym; $val; then
9567 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9570 echo "strchr() found." >&4
9574 echo "index() found." >&4
9579 echo "index() found." >&4
9582 if set strchr val -f d_strchr; eval $csym; $val; then
9585 echo "strchr() found." >&4
9587 echo "No index() or strchr() found!" >&4
9592 set d_strchr; eval $setvar
9594 set d_index; eval $setvar
9596 : check whether inet_aton exists
9597 set inet_aton d_inetaton
9600 : see if inttypes.h is available
9601 : we want a real compile instead of Inhdr because some systems
9602 : have an inttypes.h which includes non-existent headers
9605 #include <inttypes.h>
9607 static int32_t foo32 = 0x12345678;
9611 if eval $compile; then
9612 echo "<inttypes.h> found." >&4
9615 echo "<inttypes.h> NOT found." >&4
9624 echo "Checking to see if you have int64_t..." >&4
9626 #include <sys/types.h>
9627 #$i_inttypes I_INTTYPES
9629 #include <inttypes.h>
9631 int main() { int64_t x = 7; }
9634 if eval $compile; then
9636 echo "You have int64_t."
9639 echo "You do not have int64_t."
9647 $cat >isascii.c <<'EOCP'
9659 if eval $compile; then
9660 echo "isascii() found." >&4
9663 echo "isascii() NOT found." >&4
9670 : see if isnan exists
9674 : see if isnanl exists
9678 : see if killpg exists
9682 : see if lchown exists
9684 $cat > try.c <<'EOCP'
9685 /* System header to define __stub macros and hopefully few prototypes,
9686 which can conflict with char lchown(); below. */
9688 /* Override any gcc2 internal prototype to avoid an error. */
9689 /* We use char because int might match the return type of a gcc2
9690 builtin and then its argument prototype would still apply. */
9693 /* The GNU C library defines this for functions which it implements
9694 to always fail with ENOSYS. Some functions are actually named
9695 something starting with __ and the normal name is an alias. */
9696 #if defined (__stub_lchown) || defined (__stub___lchown)
9704 if eval $compile; then
9705 $echo "lchown() found." >&4
9708 $echo "lchown() NOT found." >&4
9714 : See if number of significant digits in a double precision number is known
9716 $cat >ldbl_dig.c <<EOM
9726 printf("Contains LDBL_DIG");
9729 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9730 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9731 echo "LDBL_DIG found." >&4
9734 echo "LDBL_DIG NOT found." >&4
9741 : see if link exists
9745 : see if localeconv exists
9746 set localeconv d_locconv
9749 : see if lockf exists
9753 : check for long long
9755 echo "Checking to see if you have long long..." >&4
9756 echo 'int main() { long long x = 7; return 0; }' > try.c
9758 if eval $compile; then
9760 echo "You have long long."
9763 echo "You do not have long long."
9769 : check for length of long long
9770 case "${d_longlong}${longlongsize}" in
9773 echo "Checking to see how big your long longs are..." >&4
9774 $cat >try.c <<'EOCP'
9778 printf("%d\n", (int)sizeof(long long));
9783 if eval $compile_ok; then
9784 longlongsize=`./try$exe_ext`
9785 echo "Your long longs are $longlongsize bytes long."
9789 echo "(I can't seem to compile the test program. Guessing...)"
9790 rp="What is the size of a long long (in bytes)?"
9794 if $test "X$longsize" = "X$longlongsize"; then
9795 echo "(That isn't any different from an ordinary long.)"
9801 : see if prototype for lseek is available
9803 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9806 : see if lstat exists
9810 : see if madvise exists
9811 set madvise d_madvise
9814 : see if mblen exists
9818 : see if mbstowcs exists
9819 set mbstowcs d_mbstowcs
9822 : see if mbtowc exists
9826 : see if memchr exists
9830 : see if memcmp exists
9834 : see if memcpy exists
9838 : see if memmove exists
9839 set memmove d_memmove
9842 : see if memset exists
9846 : see if mkdir exists
9850 : see if mkdtemp exists
9851 set mkdtemp d_mkdtemp
9854 : see if mkfifo exists
9858 : see if mkstemp exists
9859 set mkstemp d_mkstemp
9862 : see if mkstemps exists
9863 set mkstemps d_mkstemps
9866 : see if mktime exists
9870 : see if this is a sys/mman.h system
9871 set sys/mman.h i_sysmman
9874 : see if mmap exists
9877 : see what shmat returns
9878 : default to something harmless
9880 case "$i_sysmman$d_mmap" in
9882 $cat >mmap.c <<'END'
9883 #include <sys/mman.h>
9886 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9891 echo "and it returns ($mmaptype)." >&4
9897 : see if modfl exists
9901 : see if mprotect exists
9902 set mprotect d_mprotect
9905 : see if msgctl exists
9909 : see if msgget exists
9913 : see if msgsnd exists
9917 : see if msgrcv exists
9921 : see how much of the 'msg*(2)' library is present.
9924 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9925 *"$undef"*) h_msg=false;;
9929 case "`ipcs 2>&1`" in
9930 "SVID messages"*"not configured"*)
9931 echo "Your $osname does not have the msg*(2) configured." >&4
9946 : we could also check for sys/ipc.h ...
9947 if $h_msg && $test `./findhdr sys/msg.h`; then
9948 echo "You have the full msg*(2) library." >&4
9951 echo "You don't have the full msg*(2) library." >&4
9957 : see if msync exists
9961 : see if munmap exists
9965 : see if nice exists
9971 echo "Checking which 64-bit integer type we could use..." >&4
9977 val='"unsigned int"'
9982 *) case "$longsize" in
9986 val='"unsigned long"'
9991 *) case "$d_longlong:$longlongsize" in
9996 val='"unsigned long long"'
10001 *) case "$d_int64_t" in
10019 case "$quadtype" in
10020 '') echo "Alas, no 64-bit integer types in sight." >&4
10023 *) if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10028 echo "We $verb use '$quadtype' for 64-bit integers." >&4
10033 : check for length of character
10035 case "$charsize" in
10037 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10038 $cat >try.c <<'EOCP'
10042 printf("%d\n", (int)sizeof(char));
10047 if eval $compile_ok; then
10051 echo "(I can't seem to compile the test program. Guessing...)"
10058 rp="What is the size of a character (in bytes)?"
10065 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10067 case "$use64bitint:$d_quad:$quadtype" in
10070 uvtype="$uquadtype"
10075 uvtype="unsigned long"
10081 case "$uselongdouble:$d_longdbl" in
10083 nvtype="long double"
10084 nvsize=$longdblsize
10091 $echo "(IV will be "$ivtype", $ivsize bytes)"
10092 $echo "(UV will be "$uvtype", $uvsize bytes)"
10093 $echo "(NV will be "$nvtype", $nvsize bytes)"
10096 #$i_inttypes I_INTTYPES
10098 #include <inttypes.h>
10103 int8_t i = INT8_MAX;
10104 uint8_t u = UINT8_MAX;
10105 printf("int8_t\n");
10108 int16_t i = INT16_MAX;
10109 uint16_t i = UINT16_MAX;
10110 printf("int16_t\n");
10113 int32_t i = INT32_MAX;
10114 uint32_t u = UINT32_MAX;
10115 printf("int32_t\n");
10121 '') case "$charsize" in
10123 u8type="unsigned char"
10132 if eval $compile; then
10133 case "`./try$exe_ext`" in
10134 int8_t) i8type=int8_t
10144 '') if $test $charsize -ge 1; then
10146 u8type="unsigned char"
10154 '') case "$shortsize" in
10156 u16type="unsigned short"
10164 '') set try -DINT16
10165 if eval $compile; then
10166 case "`./try$exe_ext`" in
10178 '') if $test $shortsize -ge 2; then
10180 u16type="unsigned short"
10188 '') case "$longsize" in
10190 u32type="unsigned long"
10194 *) case "$intsize" in
10196 u32type="unsigned int"
10206 '') set try -DINT32
10207 if eval $compile; then
10208 case "`./try$exe_ext`" in
10220 '') if $test $intsize -ge 4; then
10222 u32type="unsigned int"
10230 '') case "$d_quad:$quadtype" in
10232 i64type="$quadtype"
10233 u64type="$uquadtype"
10241 $echo "Checking whether your NVs can preserve your UVs..." >&4
10245 $uvtype k = ($uvtype)~0, l;
10251 printf("preserve\n");
10256 if eval $compile; then
10257 case "`./try$exe_ext`" in
10258 preserve) d_nv_preserves_uv="$define" ;;
10261 case "$d_nv_preserves_uv" in
10262 $define) $echo "Yes, they can." 2>&1 ;;
10263 *) $echo "No, they can't." 2>&1
10264 d_nv_preserves_uv="$undef"
10270 case "$d_nv_preserves_uv" in
10271 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10272 *) $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10277 int n = 8 * $uvsize;
10279 for (i = 0; i < n; i++) {
10280 u = u << 1 | ($uvtype)1;
10281 if (($uvtype)($nvtype)u != u)
10289 if eval $compile; then
10290 d_nv_preserves_uv_bits="`./try$exe_ext`"
10292 case "$d_nv_preserves_uv_bits" in
10293 [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs." 2>&1 ;;
10294 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10295 d_nv_preserves_uv_bits="$undef"
10304 : check for off64_t
10306 echo "Checking to see if you have off64_t..." >&4
10308 #include <sys/types.h>
10309 #include <unistd.h>
10310 int main() { off64_t x = 7; }
10313 if eval $compile; then
10315 echo "You have off64_t."
10318 echo "You do not have off64_t."
10319 case "$lseeksize" in
10320 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10327 : see if POSIX threads are available
10328 set pthread.h i_pthread
10334 : how to create joinable pthreads
10335 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10337 echo "Checking what constant to use for creating joinable pthreads..." >&4
10338 $cat >try.c <<'EOCP'
10339 #include <pthread.h>
10341 int detachstate = JOINABLE;
10344 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10345 if eval $compile; then
10346 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10347 val="$undef" # Yes, undef.
10348 set d_old_pthread_create_joinable
10351 set old_pthread_create_joinable
10354 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10355 if eval $compile; then
10356 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10358 set d_old_pthread_create_joinable
10360 val=PTHREAD_CREATE_UNDETACHED
10361 set old_pthread_create_joinable
10364 set try -DJOINABLE=__UNDETACHED
10365 if eval $compile; then
10366 echo "You seem to use __UNDETACHED." >&4
10368 set d_old_pthread_create_joinable
10371 set old_pthread_create_joinable
10374 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10376 set d_old_pthread_create_joinable
10379 set old_pthread_create_joinable
10386 d_old_pthread_create_joinable="$undef"
10387 old_pthread_create_joinable=""
10390 : see if pause exists
10394 : see if pipe exists
10398 : see if poll exists
10403 : see whether the various POSIXish _yields exist
10405 #include <pthread.h>
10411 #ifdef PTHREAD_YIELD
10414 #ifdef PTHREAD_YIELD_NULL
10415 pthread_yield(NULL);
10421 : see if sched_yield exists
10422 set try -DSCHED_YIELD
10423 if eval $compile; then
10425 sched_yield='sched_yield()'
10429 case "$usethreads" in
10432 $define) echo 'sched_yield() found.' >&4 ;;
10433 *) echo 'sched_yield() NOT found.' >&4 ;;
10439 : see if pthread_yield exists
10440 set try -DPTHREAD_YIELD
10441 if eval $compile; then
10443 case "$sched_yield" in
10444 '') sched_yield='pthread_yield()' ;;
10447 set try -DPTHREAD_YIELD_NULL
10448 if eval $compile; then
10450 case "$sched_yield" in
10451 '') sched_yield='pthread_yield(NULL)' ;;
10457 case "$usethreads" in
10460 $define) echo 'pthread_yield() found.' >&4 ;;
10461 *) echo 'pthread_yield() NOT found.' >&4 ;;
10465 set d_pthread_yield
10468 case "$sched_yield" in
10469 '') sched_yield=undef ;;
10474 : see if this is a pwd.h system
10480 xxx=`./findhdr pwd.h`
10481 $cppstdin $cppflags $cppminus < $xxx >$$.h
10483 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10491 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10499 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10507 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10515 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10523 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10531 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10539 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10551 set d_pwquota; eval $setvar
10552 set d_pwage; eval $setvar
10553 set d_pwchange; eval $setvar
10554 set d_pwclass; eval $setvar
10555 set d_pwexpire; eval $setvar
10556 set d_pwcomment; eval $setvar
10557 set d_pwgecos; eval $setvar
10558 set d_pwpasswd; eval $setvar
10562 : see if readdir and friends exist
10563 set readdir d_readdir
10565 set seekdir d_seekdir
10567 set telldir d_telldir
10569 set rewinddir d_rewinddir
10572 : see if readlink exists
10573 set readlink d_readlink
10576 : see if rename exists
10577 set rename d_rename
10580 : see if rmdir exists
10584 : see if memory.h is available.
10589 : See if it conflicts with string.h
10595 $cppstdin $cppflags $cppminus < $strings > mem.h
10596 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10598 echo "We won't be including <memory.h>."
10608 : can bcopy handle overlapping blocks?
10613 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10615 #$i_memory I_MEMORY
10616 #$i_stdlib I_STDLIB
10617 #$i_string I_STRING
10618 #$i_unistd I_UNISTD
10620 $cat >>try.c <<'EOCP'
10623 # include <memory.h>
10626 # include <stdlib.h>
10629 # include <string.h>
10631 # include <strings.h>
10634 # include <unistd.h> /* Needed for NetBSD */
10638 char buf[128], abc[128];
10644 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10646 for (align = 7; align >= 0; align--) {
10647 for (len = 36; len; len--) {
10649 bcopy(abc, b, len);
10650 for (off = 1; off <= len; off++) {
10651 bcopy(b, b+off, len);
10652 bcopy(b+off, b, len);
10653 if (bcmp(b, abc, len))
10662 if eval $compile_ok; then
10663 if ./try 2>/dev/null; then
10664 echo "Yes, it can."
10667 echo "It can't, sorry."
10668 case "$d_memmove" in
10669 "$define") echo "But that's Ok since you have memmove()." ;;
10673 echo "(I can't compile the test program, so we'll assume not...)"
10674 case "$d_memmove" in
10675 "$define") echo "But that's Ok since you have memmove()." ;;
10680 $rm -f try.* try core
10684 : can memcpy handle overlapping blocks?
10686 case "$d_memcpy" in
10689 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10691 #$i_memory I_MEMORY
10692 #$i_stdlib I_STDLIB
10693 #$i_string I_STRING
10694 #$i_unistd I_UNISTD
10696 $cat >>try.c <<'EOCP'
10699 # include <memory.h>
10702 # include <stdlib.h>
10705 # include <string.h>
10707 # include <strings.h>
10710 # include <unistd.h> /* Needed for NetBSD */
10714 char buf[128], abc[128];
10720 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10721 try to store the string in read-only memory. */
10722 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10724 for (align = 7; align >= 0; align--) {
10725 for (len = 36; len; len--) {
10727 memcpy(b, abc, len);
10728 for (off = 1; off <= len; off++) {
10729 memcpy(b+off, b, len);
10730 memcpy(b, b+off, len);
10731 if (memcmp(b, abc, len))
10740 if eval $compile_ok; then
10741 if ./try 2>/dev/null; then
10742 echo "Yes, it can."
10745 echo "It can't, sorry."
10746 case "$d_memmove" in
10747 "$define") echo "But that's Ok since you have memmove()." ;;
10751 echo "(I can't compile the test program, so we'll assume not...)"
10752 case "$d_memmove" in
10753 "$define") echo "But that's Ok since you have memmove()." ;;
10758 $rm -f try.* try core
10762 : can memcmp be trusted to compare relative magnitude?
10764 case "$d_memcmp" in
10767 echo "Checking if your memcmp() can compare relative magnitude..." >&4
10769 #$i_memory I_MEMORY
10770 #$i_stdlib I_STDLIB
10771 #$i_string I_STRING
10772 #$i_unistd I_UNISTD
10774 $cat >>try.c <<'EOCP'
10777 # include <memory.h>
10780 # include <stdlib.h>
10783 # include <string.h>
10785 # include <strings.h>
10788 # include <unistd.h> /* Needed for NetBSD */
10794 if ((a < b) && memcmp(&a, &b, 1) < 0)
10800 if eval $compile_ok; then
10801 if ./try 2>/dev/null; then
10802 echo "Yes, it can."
10805 echo "No, it can't (it uses signed chars)."
10808 echo "(I can't compile the test program, so we'll assume not...)"
10812 $rm -f try.* try core
10816 : see if select exists
10817 set select d_select
10820 : see if semctl exists
10821 set semctl d_semctl
10824 : see if semget exists
10825 set semget d_semget
10828 : see if semop exists
10832 : see how much of the 'sem*(2)' library is present.
10835 case "$d_semctl$d_semget$d_semop" in
10836 *"$undef"*) h_sem=false;;
10840 case "`ipcs 2>&1`" in
10841 "SVID messages"*"not configured"*)
10842 echo "Your $osname does not have the sem*(2) configured." >&4
10845 set semctl d_semctl
10847 set semget d_semget
10855 : we could also check for sys/ipc.h ...
10856 if $h_sem && $test `./findhdr sys/sem.h`; then
10857 echo "You have the full sem*(2) library." >&4
10860 echo "You don't have the full sem*(2) library." >&4
10866 : see whether sys/sem.h defines union semun
10868 $cat > try.c <<'END'
10869 #include <sys/types.h>
10870 #include <sys/ipc.h>
10871 #include <sys/sem.h>
10872 int main () { union semun semun; semun.buf = 0; }
10875 if eval $compile; then
10876 echo "You have union semun in <sys/sem.h>." >&4
10879 echo "You do not have union semun in <sys/sem.h>." >&4
10882 $rm -f try try.c try.h
10886 : see how to do semctl IPC_STAT
10889 : see whether semctl IPC_STAT can use union semun
10894 # define S_IRUSR S_IREAD
10895 # define S_IWUSR S_IWRITE
10896 # define S_IXUSR S_IEXEC
10898 # define S_IRUSR 0400
10899 # define S_IWUSR 0200
10900 # define S_IXUSR 0100
10902 # define S_IRGRP (S_IRUSR>>3)
10903 # define S_IWGRP (S_IWUSR>>3)
10904 # define S_IXGRP (S_IXUSR>>3)
10905 # define S_IROTH (S_IRUSR>>6)
10906 # define S_IWOTH (S_IWUSR>>6)
10907 # define S_IXOTH (S_IXUSR>>6)
10910 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10911 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10912 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10917 #include <sys/types.h>
10918 #include <sys/ipc.h>
10919 #include <sys/sem.h>
10920 #include <sys/stat.h>
10927 #$d_union_semun HAS_UNION_SEMUN
10930 #ifndef HAS_UNION_SEMUN
10933 struct semid_ds *buf;
10934 unsigned short *array;
10940 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10941 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10943 struct semid_ds argbuf;
10946 st = semctl(sem, 0, IPC_STAT, arg);
10950 # endif /* IPC_STAT */
10951 printf("semctl IPC_STAT failed: errno = %d\n", errno);
10953 if (semctl(sem, 0, IPC_RMID, arg) != 0)
10954 # endif /* IPC_RMID */
10955 printf("semctl IPC_RMID failed: errno = %d\n", errno);
10957 #endif /* IPC_PRIVATE && ... */
10958 printf("semget failed: errno = %d\n", errno);
10964 if eval $compile; then
10967 semun) val="$define" ;;
10973 case "$d_semctl_semun" in
10975 echo "You can use union semun for semctl IPC_STAT." >&4
10978 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
10983 : see whether semctl IPC_STAT can use struct semid_ds pointer
10984 $cat > try.c <<'END'
10985 #include <sys/types.h>
10986 #include <sys/ipc.h>
10987 #include <sys/sem.h>
10988 #include <sys/stat.h>
10996 struct semid_ds arg;
10999 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11000 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11003 st = semctl(sem, 0, IPC_STAT, &arg);
11005 printf("semid_ds\n");
11007 # endif /* IPC_STAT */
11008 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11010 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11011 # endif /* IPC_RMID */
11012 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11014 #endif /* IPC_PRIVATE && ... */
11015 printf("semget failed: errno = %d\n", errno);
11022 if eval $compile; then
11025 semid_ds) val="$define" ;;
11029 set d_semctl_semid_ds
11031 case "$d_semctl_semid_ds" in
11033 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11035 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11042 # We do not have the full sem*(2) library, so assume we can not
11048 set d_semctl_semid_ds
11053 : see if setegid exists
11054 set setegid d_setegid
11057 : see if seteuid exists
11058 set seteuid d_seteuid
11061 : see if setgrent exists
11062 set setgrent d_setgrent
11065 : see if sethostent exists
11066 set sethostent d_sethent
11069 : see if setlinebuf exists
11070 set setlinebuf d_setlinebuf
11073 : see if setlocale exists
11074 set setlocale d_setlocale
11077 : see if setnetent exists
11078 set setnetent d_setnent
11081 : see if setprotoent exists
11082 set setprotoent d_setpent
11085 : see if setpgid exists
11086 set setpgid d_setpgid
11089 : see if setpgrp2 exists
11090 set setpgrp2 d_setpgrp2
11093 : see if setpriority exists
11094 set setpriority d_setprior
11097 : see if setproctitle exists
11098 set setproctitle d_setproctitle
11101 : see if setpwent exists
11102 set setpwent d_setpwent
11105 : see if setregid exists
11106 set setregid d_setregid
11108 set setresgid d_setresgid
11111 : see if setreuid exists
11112 set setreuid d_setreuid
11114 set setresuid d_setresuid
11117 : see if setrgid exists
11118 set setrgid d_setrgid
11121 : see if setruid exists
11122 set setruid d_setruid
11125 : see if setservent exists
11126 set setservent d_setsent
11129 : see if setsid exists
11130 set setsid d_setsid
11133 : see if setvbuf exists
11134 set setvbuf d_setvbuf
11137 : see if sfio.h is available
11142 : see if sfio library is available
11153 : Ok, but do we want to use it.
11157 true|$define|[yY]*) dflt='y';;
11160 echo "$package can use the sfio library, but it is experimental."
11161 rp="You seem to have sfio available, do you want to try using it?"
11165 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11167 : Remove sfio from list of libraries to use
11168 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11171 echo "libs = $libs" >&4
11175 *) case "$usesfio" in
11176 true|$define|[yY]*)
11177 echo "Sorry, cannot find sfio on this machine" >&4
11178 echo "Ignoring your setting of usesfio=$usesfio" >&4
11186 $define) usesfio='true';;
11187 *) usesfio='false';;
11190 : see if shmctl exists
11191 set shmctl d_shmctl
11194 : see if shmget exists
11195 set shmget d_shmget
11198 : see if shmat exists
11201 : see what shmat returns
11204 $cat >shmat.c <<'END'
11205 #include <sys/shm.h>
11208 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11213 echo "and it returns ($shmattype)." >&4
11214 : see if a prototype for shmat is available
11215 xxx=`./findhdr sys/shm.h`
11216 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11217 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11228 set d_shmatprototype
11231 : see if shmdt exists
11235 : see how much of the 'shm*(2)' library is present.
11238 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11239 *"$undef"*) h_shm=false;;
11243 case "`ipcs 2>&1`" in
11244 "SVID shared memory"*"not configured"*)
11245 echo "Your $osname does not have the shm*(2) configured." >&4
11248 set shmctl d_shmctl
11250 set shmget d_shmget
11260 : we could also check for sys/ipc.h ...
11261 if $h_shm && $test `./findhdr sys/shm.h`; then
11262 echo "You have the full shm*(2) library." >&4
11265 echo "You don't have the full shm*(2) library." >&4
11272 : see if we have sigaction
11273 if set sigaction val -f d_sigaction; eval $csym; $val; then
11274 echo 'sigaction() found.' >&4
11275 $cat > try.c <<'EOP'
11277 #include <sys/types.h>
11278 #include <signal.h>
11281 struct sigaction act, oact;
11283 oact.sa_handler = 0;
11284 /* so that act and oact are used */
11285 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11289 if eval $compile_ok; then
11292 echo "But you don't seem to have a useable struct sigaction." >&4
11296 echo 'sigaction NOT found.' >&4
11299 set d_sigaction; eval $setvar
11300 $rm -f try try$_o try.c
11302 : see if sigsetjmp exists
11304 case "$d_sigsetjmp" in
11306 $cat >try.c <<'EOP'
11307 #include <setjmp.h>
11312 if (sigsetjmp(env,1))
11315 siglongjmp(env, 1);
11320 if eval $compile; then
11321 if ./try >/dev/null 2>&1; then
11322 echo "POSIX sigsetjmp found." >&4
11326 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11332 echo "sigsetjmp not found." >&4
11336 *) val="$d_sigsetjmp"
11337 case "$d_sigsetjmp" in
11338 $define) echo "POSIX sigsetjmp found." >&4;;
11339 $undef) echo "sigsetjmp not found." >&4;;
11347 : see if sys/stat.h is available
11348 set sys/stat.h i_sysstat
11352 : see if stat knows about block sizes
11354 echo "Checking to see if your struct stat has st_blocks field..." >&4
11355 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11359 : see if this is a sys/vfs.h system
11360 set sys/vfs.h i_sysvfs
11364 : see if this is a sys/statfs.h system
11365 set sys/statfs.h i_sysstatfs
11370 echo "Checking to see if your system supports struct statfs..." >&4
11371 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
11373 case "$d_statfs_s" in
11374 "$define") echo "Yes, it does." ;;
11375 *) echo "No, it doesn't." ;;
11380 : see if struct statfs knows about f_flags
11381 case "$d_statfs_s" in
11384 echo "Checking to see if your struct statfs has f_flags field..." >&4
11385 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
11389 set d_statfs_f_flags
11393 case "$d_statfs_f_flags" in
11394 "$define") echo "Yes, it does." ;;
11395 *) echo "No, it doesn't." ;;
11398 : see if _ptr and _cnt from stdio act std
11400 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11401 echo "(Looks like you have stdio.h from Linux.)"
11402 case "$stdio_ptr" in
11403 '') stdio_ptr='((fp)->_IO_read_ptr)'
11406 *) ptr_lval=$d_stdio_ptr_lval;;
11408 case "$stdio_cnt" in
11409 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11412 *) cnt_lval=$d_stdio_cnt_lval;;
11414 case "$stdio_base" in
11415 '') stdio_base='((fp)->_IO_read_base)';;
11417 case "$stdio_bufsiz" in
11418 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11421 case "$stdio_ptr" in
11422 '') stdio_ptr='((fp)->_ptr)'
11425 *) ptr_lval=$d_stdio_ptr_lval;;
11427 case "$stdio_cnt" in
11428 '') stdio_cnt='((fp)->_cnt)'
11431 *) cnt_lval=$d_stdio_cnt_lval;;
11433 case "$stdio_base" in
11434 '') stdio_base='((fp)->_base)';;
11436 case "$stdio_bufsiz" in
11437 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11440 : test whether _ptr and _cnt really work
11441 echo "Checking how std your stdio is..." >&4
11444 #define FILE_ptr(fp) $stdio_ptr
11445 #define FILE_cnt(fp) $stdio_cnt
11447 FILE *fp = fopen("try.c", "r");
11450 18 <= FILE_cnt(fp) &&
11451 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11459 if eval $compile; then
11461 echo "Your stdio acts pretty std."
11464 echo "Your stdio isn't very std."
11467 echo "Your stdio doesn't appear very std."
11473 : Can _ptr be used as an lvalue?
11474 case "$d_stdstdio$ptr_lval" in
11475 $define$define) val=$define ;;
11478 set d_stdio_ptr_lval
11481 : Can _cnt be used as an lvalue?
11482 case "$d_stdstdio$cnt_lval" in
11483 $define$define) val=$define ;;
11486 set d_stdio_cnt_lval
11489 : see if _base is also standard
11491 case "$d_stdstdio" in
11495 #define FILE_base(fp) $stdio_base
11496 #define FILE_bufsiz(fp) $stdio_bufsiz
11498 FILE *fp = fopen("try.c", "r");
11501 19 <= FILE_bufsiz(fp) &&
11502 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11509 if eval $compile; then
11511 echo "And its _base field acts std."
11514 echo "But its _base field isn't std."
11517 echo "However, it seems to be lacking the _base field."
11526 Checking how to access stdio streams by file descriptor number...
11528 case "$stdio_stream_array" in
11529 '') $cat >try.c <<EOCP
11532 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11536 for s in _iob __iob __sF
11538 set try -DSTDIO_STREAM_ARRAY=$s
11539 if eval $compile; then
11540 case "`./try$exe_ext`" in
11541 yes) stdio_stream_array=$s; break ;;
11545 $rm -f try.* try$exe_ext
11547 case "$stdio_stream_array" in
11549 I can't figure out how to access stdio streams by file descriptor number.
11551 d_stdio_stream_array="$undef"
11554 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11556 d_stdio_stream_array="$define"
11560 : see if strcoll exists
11561 set strcoll d_strcoll
11564 : check for structure copying
11566 echo "Checking to see if your C compiler can copy structs..." >&4
11567 $cat >try.c <<'EOCP'
11577 if $cc -c try.c >/dev/null 2>&1 ; then
11579 echo "Yup, it can."
11582 echo "Nope, it can't."
11588 : see if strerror and/or sys_errlist[] exist
11590 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11591 if set strerror val -f d_strerror; eval $csym; $val; then
11592 echo 'strerror() found.' >&4
11593 d_strerror="$define"
11594 d_strerrm='strerror(e)'
11595 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11596 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
11597 d_syserrlst="$define"
11599 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11600 d_syserrlst="$undef"
11602 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11603 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11604 echo 'strerror() found in string header.' >&4
11605 d_strerror="$define"
11606 d_strerrm='strerror(e)'
11607 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11608 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11609 d_syserrlst="$define"
11611 echo "(You don't appear to have any sys_errlist[], how can this be?)"
11612 d_syserrlst="$undef"
11614 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11615 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11616 d_strerror="$undef"
11617 d_syserrlst="$define"
11618 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11620 echo 'strerror() and sys_errlist[] NOT found.' >&4
11621 d_strerror="$undef"
11622 d_syserrlst="$undef"
11623 d_strerrm='"unknown"'
11627 : see if strtod exists
11628 set strtod d_strtod
11631 : see if strtol exists
11632 set strtol d_strtol
11635 : see if strtold exists
11636 set strtold d_strtold
11639 : see if strtoll exists
11640 set strtoll d_strtoll
11643 case "$d_longlong-$d_strtoll" in
11646 Checking whether your strtoll() works okay...
11648 $cat >try.c <<'EOCP'
11651 #define strtoll __strtoll
11654 extern long long int strtoll(char *s, char **, int);
11655 static int bad = 0;
11656 int check(char *s, long long ell, int een) {
11659 gll = strtoll(s, 0, 10);
11660 if (!((gll == ell) && (errno == een)))
11664 check(" 1", 1LL, 0);
11665 check(" 0", 0LL, 0);
11666 check("-1", -1LL, 0);
11667 check("-9223372036854775808", -9223372036854775808LL, 0);
11668 check("-9223372036854775808", -9223372036854775808LL, 0);
11669 check(" 9223372036854775807", 9223372036854775807LL, 0);
11670 check("-9223372036854775808", -9223372036854775808LL, 0);
11671 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
11672 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11678 if eval $compile; then
11680 ok) echo "Your strtoll() seems to be working okay." ;;
11682 Your strtoll() doesn't seem to be working okay.
11691 : see if strtoul exists
11692 set strtoul d_strtoul
11695 : see if strtoull exists
11696 set strtoull d_strtoull
11699 case "$d_longlong-$d_strtoull" in
11702 Checking whether your strtoull() works okay...
11704 $cat >try.c <<'EOCP'
11707 #define strtoull __strtoull
11710 extern unsigned long long int strtoull(char *s, char **, int);
11711 static int bad = 0;
11712 int check(char *s, long long eull, int een) {
11715 gull = strtoull(s, 0, 10);
11716 if (!((gull == eull) && (errno == een)))
11720 check(" 1", 1LL, 0);
11721 check(" 0", 0LL, 0);
11722 check("18446744073709551615", 18446744073709551615ULL, 0);
11723 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11729 if eval $compile; then
11731 ok) echo "Your strtoull() seems to be working okay." ;;
11733 Your strtoull() doesn't seem to be working okay.
11735 d_strtoull="$undef"
11742 : see if strtouq exists
11743 set strtouq d_strtouq
11746 : see if strxfrm exists
11747 set strxfrm d_strxfrm
11750 : see if symlink exists
11751 set symlink d_symlink
11754 : see if syscall exists
11755 set syscall d_syscall
11758 : see if sysconf exists
11759 set sysconf d_sysconf
11762 : see if system exists
11763 set system d_system
11766 : see if tcgetpgrp exists
11767 set tcgetpgrp d_tcgetpgrp
11770 : see if tcsetpgrp exists
11771 set tcsetpgrp d_tcsetpgrp
11774 : see if prototype for telldir is available
11776 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11779 : see if this is a sys/times.h system
11780 set sys/times.h i_systimes
11783 : see if times exists
11785 if set times val -f d_times; eval $csym; $val; then
11786 echo 'times() found.' >&4
11789 case "$i_systimes" in
11790 "$define") inc='sys/times.h';;
11792 rp="What is the type returned by times() on this system?"
11793 set clock_t clocktype long stdio.h sys/types.h $inc
11796 echo 'times() NOT found, hope that will do.' >&4
11801 : see if truncate exists
11802 set truncate d_truncate
11805 : see if tzname[] exists
11807 if set tzname val -a d_tzname; eval $csym; $val; then
11809 echo 'tzname[] found.' >&4
11812 echo 'tzname[] NOT found.' >&4
11817 : see if umask exists
11821 : see if ustat exists
11825 : backward compatibility for d_hvfork
11826 if test X$d_hvfork != X; then
11827 d_vfork="$d_hvfork"
11830 : see if there is a vfork
11835 : Ok, but do we want to use it. vfork is reportedly unreliable in
11836 : perl on Solaris 2.x, and probably elsewhere.
11840 case "$usevfork" in
11846 Perl can only use a vfork() that doesn't suffer from strict
11847 restrictions on calling functions or modifying global data in
11848 the child. For example, glibc-2.1 contains such a vfork()
11849 that is unsuitable. If your system provides a proper fork()
11850 call, chances are that you do NOT want perl to use vfork().
11853 rp="Do you still want to use vfork()?"
11858 echo "Ok, we won't use vfork()."
11867 $define) usevfork='true';;
11868 *) usevfork='false';;
11871 : see if this is an sysdir system
11872 set sys/dir.h i_sysdir
11875 : see if this is an sysndir system
11876 set sys/ndir.h i_sysndir
11879 : see if closedir exists
11880 set closedir d_closedir
11883 case "$d_closedir" in
11886 echo "Checking whether closedir() returns a status..." >&4
11887 cat > closedir.c <<EOM
11888 #$i_dirent I_DIRENT /**/
11889 #$i_sysdir I_SYS_DIR /**/
11890 #$i_sysndir I_SYS_NDIR /**/
11891 #$i_systypes I_SYS_TYPES /**/
11893 #if defined(I_SYS_TYPES)
11894 #include <sys/types.h>
11896 #if defined(I_DIRENT)
11897 #include <dirent.h>
11898 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11899 #include <sys/dir.h>
11903 #include <sys/ndir.h>
11907 #include <ndir.h> /* may be wrong in the future */
11909 #include <sys/dir.h>
11914 int main() { return closedir(opendir(".")); }
11917 if eval $compile_ok; then
11918 if ./closedir > /dev/null 2>&1 ; then
11919 echo "Yes, it does."
11922 echo "No, it doesn't."
11926 echo "(I can't seem to compile the test program--assuming it doesn't)"
11934 set d_void_closedir
11937 : check for volatile keyword
11939 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11940 $cat >try.c <<'EOCP'
11943 typedef struct _goo_struct goo_struct;
11944 goo_struct * volatile goo = ((goo_struct *)0);
11945 struct _goo_struct {
11950 typedef unsigned short foo_t;
11951 char *volatile foo;
11953 volatile foo_t blech;
11957 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11959 echo "Yup, it does."
11962 echo "Nope, it doesn't."
11968 : see if there is a wait4
11972 : see if waitpid exists
11973 set waitpid d_waitpid
11976 : see if wcstombs exists
11977 set wcstombs d_wcstombs
11980 : see if wctomb exists
11981 set wctomb d_wctomb
11984 : preserve RCS keywords in files with variable substitution, grrr
11989 Revision='$Revision'
11991 case "$crosscompile" in
11992 ''|[nN]*) crosscompile="$undef" ;;
11996 next|rhapsody|darwin) multiarch="$define" ;;
11998 case "$multiarch" in
11999 ''|[nN]*) multiarch="$undef" ;;
12002 : check for alignment requirements
12004 case "$crosscompile$multiarch" in
12007 You seem to be either cross-compiling or doing a multiarchitecture build,
12008 skipping the memory alignment check.
12011 case "$alignbytes" in
12012 '') alignbytes=8 ;;
12016 case "$alignbytes" in
12017 '') echo "Checking alignment constraints..." >&4
12018 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12019 $cat >try.c <<'EOCP'
12020 typedef long double NV;
12023 $cat >try.c <<'EOCP'
12027 $cat >>try.c <<'EOCP'
12035 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12040 if eval $compile_ok; then
12044 echo "(I can't seem to compile the test program...)"
12047 *) dflt="$alignbytes"
12050 rp="Doubles must be aligned on a how-many-byte boundary?"
12058 : set the base revision
12061 : check for ordering of bytes in a long
12063 case "$crosscompile$multiarch" in
12066 You seem to be either cross-compiling or doing a multiarchitecture build,
12067 skipping the byteorder check.
12073 case "$byteorder" in
12076 In the following, larger digits indicate more significance. A big-endian
12077 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12078 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12079 machines may have weird orders like 3412. A Cray will report 87654321,
12080 an Alpha will report 12345678. If the test program works the default is
12082 I'm now running the test program...
12084 $cat >try.c <<'EOCP'
12091 char c[sizeof(long)];
12094 if (sizeof(long) > 4)
12095 u.l = (0x08070605L << 32) | 0x04030201L;
12098 for (i = 0; i < sizeof(long); i++)
12099 printf("%c", u.c[i]+'0');
12106 if eval $compile && ./try > /dev/null; then
12109 [1-4][1-4][1-4][1-4]|12345678|87654321)
12110 echo "(The test program ran ok.)"
12111 echo "byteorder=$dflt"
12114 ????|????????) echo "(The test program ran ok.)" ;;
12115 *) echo "(The test program didn't run right for some reason.)" ;;
12120 (I can't seem to compile the test program. Guessing big-endian...)
12123 case "$xxx_prompt" in
12125 rp="What is the order of bytes in a long?"
12139 : how do we catenate cpp tokens here?
12141 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12142 $cat >cpp_stuff.c <<'EOCP'
12143 #define RCAT(a,b)a/**/b
12144 #define ACAT(a,b)a ## b
12148 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12149 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12150 echo "Oh! Smells like ANSI's been here." >&4
12151 echo "We can catify or stringify, separately or together!"
12153 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12154 echo "Ah, yes! The good old days!" >&4
12155 echo "However, in the good old days we don't know how to stringify and"
12156 echo "catify at the same time."
12160 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
12161 to have to edit the values of CAT[2-5] in config.h...
12163 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12167 : see if this is a db.h system
12173 : Check db version.
12175 echo "Checking Berkeley DB version ..." >&4
12181 #include <sys/types.h>
12186 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12187 int Major, Minor, Patch ;
12188 unsigned long Version ;
12189 (void)db_version(&Major, &Minor, &Patch) ;
12190 printf("You have Berkeley DB Version 2 or greater\n");
12192 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12193 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12194 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12195 Major, Minor, Patch) ;
12197 /* check that db.h & libdb are compatible */
12198 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12199 printf("db.h and libdb are incompatible\n") ;
12203 printf("db.h and libdb are compatible\n") ;
12205 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12206 + DB_VERSION_PATCH ;
12208 /* needs to be >= 2.3.4 */
12209 if (Version < 2003004) {
12210 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12211 printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12217 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12218 printf("You have Berkeley DB Version 1\n");
12219 exit(0); /* DB version < 2: the coast is clear. */
12221 exit(1); /* <db.h> not Berkeley DB? */
12227 if eval $compile_ok && ./try; then
12228 echo 'Looks OK.' >&4
12230 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
12234 : Remove db from list of libraries to use
12235 echo "Removing unusable -ldb from library list" >&4
12236 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12239 echo "libs = $libs" >&4
12249 : Check the return type needed for hash
12251 echo "Checking return type needed for hash for Berkeley DB ..." >&4
12257 #include <sys/types.h>
12260 #ifndef DB_VERSION_MAJOR
12261 u_int32_t hash_cb (ptr, size)
12269 info.hash = hash_cb;
12273 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12274 if $contains warning try.out >>/dev/null 2>&1 ; then
12277 db_hashtype='u_int32_t'
12280 : XXX Maybe we should just give up here.
12281 db_hashtype=u_int32_t
12283 echo "Help: I can't seem to compile the db test program." >&4
12284 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12287 echo "Your version of Berkeley DB uses $db_hashtype for hash."
12289 *) db_hashtype=u_int32_t
12294 : Check the return type needed for prefix
12296 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12302 #include <sys/types.h>
12305 #ifndef DB_VERSION_MAJOR
12306 size_t prefix_cb (key1, key2)
12314 info.prefix = prefix_cb;
12318 if $cc $ccflags -c try.c >try.out 2>&1 ; then
12319 if $contains warning try.out >>/dev/null 2>&1 ; then
12320 db_prefixtype='int'
12322 db_prefixtype='size_t'
12325 db_prefixtype='size_t'
12326 : XXX Maybe we should just give up here.
12328 echo "Help: I can't seem to compile the db test program." >&4
12329 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12332 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12334 *) db_prefixtype='size_t'
12338 : check for void type
12340 echo "Checking to see how well your C compiler groks the void type..." >&4
12341 case "$voidflags" in
12343 $cat >try.c <<'EOCP'
12349 extern void moo(); /* function returning void */
12350 void (*goo)(); /* ptr to func returning void */
12352 void *hue; /* generic ptr */
12365 int main() { sub(); }
12367 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12368 voidflags=$defvoidused
12369 echo "Good. It appears to support void to the level $package wants.">&4
12370 if $contains warning .out >/dev/null 2>&1; then
12371 echo "However, you might get some warnings that look like this:"
12375 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12376 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12377 echo "It supports 1..."
12378 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12379 echo "It also supports 2..."
12380 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12382 echo "And it supports 4 but not 8 definitely."
12384 echo "It doesn't support 4..."
12385 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12387 echo "But it supports 8."
12390 echo "Neither does it support 8."
12394 echo "It does not support 2..."
12395 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12397 echo "But it supports 4 and 8."
12399 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12401 echo "And it supports 4 but has not heard about 8."
12403 echo "However it supports 8 but not 4."
12408 echo "There is no support at all for void."
12413 case "$voidflags" in
12415 *) $cat >&4 <<'EOM'
12416 Support flag bits are:
12417 1: basic void declarations.
12418 2: arrays of pointers to functions returning void.
12419 4: operations between pointers to and addresses of void functions.
12420 8: generic void pointers.
12423 rp="Your void support flags add up to what?"
12431 : How can we generate normalized random numbers ?
12433 echo "Looking for a random number function..." >&4
12434 case "$randfunc" in
12436 if set drand48 val -f; eval $csym; $val; then
12438 echo "Good, found drand48()." >&4
12439 elif set random val -f; eval $csym; $val; then
12441 echo "OK, found random()." >&4
12444 echo "Yick, looks like I have to use rand()." >&4
12455 *-Dmy_rand=*|*-Dmy_srand=*)
12456 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12457 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12458 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12459 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12463 while $test "$cont"; do
12464 rp="Use which function to generate random numbers?"
12466 if $test "$ans" = "$dflt"; then
12472 if set $ans val -f; eval $csym; $val; then
12476 rp="I cannot find function $ans. Use that name anyway?"
12485 case "$randfunc" in
12487 drand01="drand48()"
12493 case "$randbits" in
12495 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12497 #$i_unistd I_UNISTD
12498 #$i_stdlib I_STDLIB
12501 # include <unistd.h>
12504 # include <stdlib.h>
12509 register unsigned long tmp;
12510 register unsigned long max = 0L;
12512 for (i = 1000; i; i--) {
12513 tmp = (unsigned long) $randfunc();
12514 if (tmp > max) max = tmp;
12516 for (i = 0; max; i++)
12522 if eval $compile_ok; then
12526 echo "(I can't seem to compile the test program...)"
12533 rp="How many bits does your $randfunc() function produce?"
12537 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12538 seedfunc="s$randfunc"
12539 randseedtype=unsigned
12543 rp="How many bits does your $randfunc() function produce?"
12546 seedfunc="s$randfunc"
12547 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12548 if set $seedfunc val -f; eval $csym; $val; then
12549 echo "(Using $seedfunc() to seed random generator)"
12551 echo "(Warning: no $seedfunc() to seed random generator)"
12554 randseedtype=unsigned
12562 echo "Determining whether or not we are on an EBCDIC system..." >&4
12563 $cat >tebcdic.c <<'EOM'
12566 if ('M'==0xd4) return 0;
12573 if eval $compile_ok; then
12575 echo "You have EBCDIC." >&4
12578 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12581 echo "I'm unable to compile the test program." >&4
12582 echo "I'll assume ASCII or some ISO Latin." >&4
12584 $rm -f tebcdic.c tebcdic
12590 Checking how to flush all pending stdio output...
12592 # I only know how to find the first 32 possibly open files on SunOS.
12593 # See also hints/sunos_4_1.sh and util.c --AD
12595 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12597 $cat >>try.c <<EOCP
12599 #$i_unistd I_UNISTD
12601 # include <unistd.h>
12603 #$d_sysconf HAS_SYSCONF
12604 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12605 #ifdef HAS_STDIO_STREAM_ARRAY
12606 # define STDIO_STREAM_ARRAY $stdio_stream_array
12609 FILE* p = fopen("try.out", "w");
12613 # ifdef TRY_FPRINTF
12617 #ifdef TRY_FFLUSH_NULL
12620 #ifdef TRY_FFLUSH_ALL
12622 long open_max = -1;
12623 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12624 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12626 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12627 open_max = sysconf(_SC_OPEN_MAX);
12630 open_max = FOPEN_MAX;
12633 open_max = OPEN_MAX;
12642 # ifdef HAS_STDIO_STREAM_ARRAY
12643 if (open_max > 0) {
12645 for (i = 0; i < open_max; i++)
12646 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12647 STDIO_STREAM_ARRAY[i]._file < open_max &&
12648 STDIO_STREAM_ARRAY[i]._flag)
12649 fflush(&STDIO_STREAM_ARRAY[i]);
12657 : first we have to find out how _not_ to flush
12658 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12660 set try -DTRY_FPUTC
12661 if eval $compile; then
12663 ./try$exe_ext 2>/dev/null
12664 if $test ! -s try.out -a "X$?" = X42; then
12670 set try -DTRY_FPRINTF
12672 if eval $compile; then
12674 ./try$exe_ext 2>/dev/null
12675 if $test ! -s try.out -a "X$?" = X42; then
12676 output=-DTRY_FPRINTF
12682 : check for fflush NULL behaviour
12683 case "$fflushNULL" in
12684 '') set try -DTRY_FFLUSH_NULL $output
12685 if eval $compile; then
12687 ./try$exe_ext 2>/dev/null
12689 if $test -s try.out -a "X$code" = X42; then
12690 fflushNULL="`$cat try.out`"
12692 if $test "X$code" != X42; then
12694 (If this test failed, don't worry, we'll try another method shortly.)
12699 $rm -f core try.core core.try.*
12700 case "$fflushNULL" in
12702 Your fflush(NULL) works okay for output streams.
12703 Let's see if it clobbers input pipes...
12705 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12706 # bug that improperly flushes the input end of pipes. So we avoid the
12707 # autoflush on fork/system/exec support for now. :-(
12708 $cat >tryp.c <<EOCP
12711 main(int argc, char **argv)
12717 while ((i = getc(stdin)) != -1
12718 && (*bp++ = i) != '\n'
12719 && bp < &buf[1024])
12722 fprintf(stdout, "%s", buf);
12730 fflushNULL="$define"
12732 if eval $compile; then
12734 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12735 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12737 fflush(NULL) seems to behave okay with input streams.
12739 fflushNULL="$define"
12742 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
12744 fflushNULL="$undef"
12747 $rm -f core tryp.c tryp.core core.tryp.*
12750 Your fflush(NULL) isn't working (contrary to ANSI C).
12752 fflushNULL="$undef"
12755 Cannot figure out whether your fflush(NULL) works or not.
12756 I'm assuming it doesn't (contrary to ANSI C).
12758 fflushNULL="$undef"
12762 $define|true|[yY]*)
12763 fflushNULL="$define"
12766 fflushNULL="$undef"
12769 : check explicit looping only if NULL did not work, and if the pipe
12770 : bug does not show up on an explicit flush too
12771 case "$fflushNULL" in
12773 $cat >tryp.c <<EOCP
12776 main(int argc, char **argv)
12782 while ((i = getc(stdin)) != -1
12783 && (*bp++ = i) != '\n'
12784 && bp < &buf[1024])
12787 fprintf(stdout, "%s", buf);
12796 if eval $compile; then
12798 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12799 if cmp tryp.c tryp.out >/dev/null 2>&1; then
12801 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12803 : now check for fflushall behaviour
12804 case "$fflushall" in
12805 '') set try -DTRY_FFLUSH_ALL $output
12806 if eval $compile; then
12808 (Now testing the other method--but note that this also may fail.)
12811 ./try$exe_ext 2>/dev/null
12812 if $test -s try.out -a "X$?" = X42; then
12813 fflushall="`$cat try.out`"
12816 $rm -f core try.core core.try.*
12817 case "$fflushall" in
12819 Whew. Flushing explicitly all the stdio streams works.
12821 fflushall="$define"
12824 Sigh. Flushing explicitly all the stdio streams doesn't work.
12829 Cannot figure out whether flushing stdio streams explicitly works or not.
12830 I'm assuming it doesn't.
12836 "$define"|true|[yY]*)
12837 fflushall="$define"
12845 All is futile. Even fflush(stdin) clobbers input pipes!
12852 $rm -f core tryp.c tryp.core core.tryp.*
12854 *) fflushall="$undef"
12858 case "$fflushNULL$fflushall" in
12861 OK, I give up. I cannot figure out how to flush pending stdio output.
12862 We won't be flushing handles at all before fork/exec/popen.
12866 $rm -f try.* try$exe_ext
12868 : Store the full pathname to the ar program for use in the C program
12869 : Respect a hint or command line value for full_ar.
12874 : Store the full pathname to the sed program for use in the C program
12877 : see what type gids are declared as in the kernel
12879 echo "Looking for the type for group ids returned by getgid()."
12880 set gid_t gidtype xxx stdio.h sys/types.h
12884 xxx=`./findhdr sys/user.h`
12885 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12887 unsigned) dflt="$1 $2" ;;
12891 *) dflt="$gidtype";;
12894 gid_t) echo "gid_t found." ;;
12895 *) rp="What is the type for group ids returned by getgid()?"
12903 *_t) zzz="$gidtype" ;;
12906 echo "Checking the size of $zzz..." >&4
12908 #include <sys/types.h>
12911 printf("%d\n", (int)sizeof($gidtype));
12916 if eval $compile_ok; then
12920 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12923 echo "Your $zzz is $gidsize bytes long."
12928 echo "(I can't compile the test program--guessing $gidsize.)" >&4
12934 *_t) zzz="$gidtype" ;;
12937 echo "Checking the sign of $zzz..." >&4
12939 #include <sys/types.h>
12950 if eval $compile; then
12954 echo "(I can't execute the test program--guessing unsigned.)" >&4
12958 1) echo "Your $zzz is unsigned." ;;
12959 -1) echo "Your $zzz is signed." ;;
12965 echo "(I can't compile the test program--guessing unsigned.)" >&4
12971 if $test X"$quadtype" != X; then
12973 echo "Checking how to print 64-bit integers..." >&4
12975 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12976 $cat >try.c <<'EOCP'
12977 #include <sys/types.h>
12980 int q = 12345678901;
12981 printf("%ld\n", q);
12985 if eval $compile; then
12986 yyy=`./try$exe_ext`
12989 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12990 sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12991 echo "We will use %d."
12997 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12998 $cat >try.c <<'EOCP'
12999 #include <sys/types.h>
13002 long q = 12345678901;
13003 printf("%ld\n", q);
13007 if eval $compile; then
13008 yyy=`./try$exe_ext`
13011 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13012 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
13013 echo "We will use %ld."
13019 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13020 $cat >try.c <<'EOCP'
13021 #include <sys/types.h>
13022 #include <inttypes.h>
13025 int64_t q = 12345678901;
13026 printf("%" PRId64 "\n", q);
13030 if eval $compile; then
13031 yyy=`./try$exe_ext`
13034 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13035 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
13036 echo "We will use the C9X style."
13042 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13043 $cat >try.c <<'EOCP'
13044 #include <sys/types.h>
13047 long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
13048 printf("%lld\n", q);
13052 if eval $compile; then
13053 yyy=`./try$exe_ext`
13056 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13057 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
13058 echo "We will use the %lld style."
13064 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13066 #include <sys/types.h>
13069 $quadtype q = 12345678901;
13070 printf("%Ld\n", q);
13074 if eval $compile; then
13075 yyy=`./try$exe_ext`
13078 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13079 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13080 echo "We will use %Ld."
13086 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13088 #include <sys/types.h>
13091 $quadtype q = 12345678901;
13092 printf("%qd\n", q);
13096 if eval $compile; then
13097 yyy=`./try$exe_ext`
13100 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13101 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13102 echo "We will use %qd."
13108 if $test X"$sPRId64" = X; then
13109 echo "Cannot figure out how to print 64-bit integers." >&4
13117 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
13118 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef";
13120 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
13121 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define";
13127 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13129 if $test X"$ivsize" = X8; then
13130 ivdformat="$sPRId64"
13131 uvuformat="$sPRIu64"
13132 uvoformat="$sPRIo64"
13133 uvxformat="$sPRIx64"
13135 if $test X"$ivsize" = X"$longsize"; then
13141 if $test X"$ivsize" = X"$intsize"; then
13148 if $test X"$ivsize" = X"$shortsize"; then
13158 case "$ivdformat" in
13159 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13166 $echo "Checking the format string to be used for gids..." >&4
13169 -1) if $test X"$gidsize" = X"$ivsize"; then
13170 gidformat="$ivdformat"
13172 if $test X"$gidsize" = X"$longsize"; then
13175 if $test X"$gidsize" = X"$intsize"; then
13178 if $test X"$gidsize" = X"$shortsize"; then
13185 *) if $test X"$gidsize" = X"$uvsize"; then
13186 gidformat="$uvuformat"
13188 if $test X"$gidsize" = X"$longsize"; then
13191 if $test X"$gidsize" = X"$intsize"; then
13194 if $test X"$gidsize" = X"$shortsize"; then
13203 : see if getgroups exists
13204 set getgroups d_getgrps
13207 : see if setgroups exists
13208 set setgroups d_setgrps
13212 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13214 case "$d_getgrps$d_setgrps" in
13216 case "$groupstype" in
13217 '') dflt="$gidtype" ;;
13218 *) dflt="$groupstype" ;;
13221 What type of pointer is the second argument to getgroups() and setgroups()?
13222 Usually this is the same as group ids, $gidtype, but not always.
13225 rp='What type pointer is the second argument to getgroups() and setgroups()?'
13229 *) groupstype="$gidtype";;
13233 echo "Checking if your $make program sets \$(MAKE)..." >&4
13234 case "$make_set_make" in
13236 $sed 's/^X //' > testmake.mak << 'EOF'
13238 X @echo 'maketemp="$(MAKE)"'
13240 case "`$make -f testmake.mak 2>/dev/null`" in
13241 *maketemp=*) make_set_make='#' ;;
13242 *) make_set_make="MAKE=$make" ;;
13244 $rm -f testmake.mak
13247 case "$make_set_make" in
13248 '#') echo "Yup, it does.";;
13249 *) echo "Nope, it doesn't.";;
13252 : see what type is used for mode_t
13253 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13254 set mode_t modetype int stdio.h sys/types.h
13257 : define a fucntion to check prototypes
13258 $cat > protochk <<EOSH
13261 optimize="$optimize"
13263 prototype="$prototype"
13268 $cat >> protochk <<'EOSH'
13273 while test $# -ge 2; do
13275 $define) echo "#include <$2>" >> try.c ;;
13276 literal) echo "$2" >> try.c ;;
13280 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
13281 cat >> try.c <<'EOCP'
13282 #ifdef CAN_PROTOTYPE
13283 #define _(args) args
13288 echo "$foo" >> try.c
13289 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13290 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13296 $eunicefix protochk
13298 : see what type is used for size_t
13299 rp="What is the type used for the length parameter for string functions?"
13300 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13303 : check for type of arguments to gethostbyaddr.
13304 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13305 case "$d_gethbyaddr" in
13309 Checking to see what type of arguments are accepted by gethostbyaddr().
13311 hdrs="$define sys/types.h
13312 $d_socket sys/socket.h
13313 $i_niin netinet/in.h
13315 $i_unistd unistd.h"
13316 : The first arg can 'char *' or 'void *'
13317 : The second arg is some of integral type
13318 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13319 for yyy in size_t long int; do
13320 case "$netdb_host_type" in
13321 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13322 if ./protochk "$try" $hdrs; then
13323 echo "Your system accepts $xxx for the first arg."
13324 echo "...and $yyy for the second arg."
13325 netdb_host_type="$xxx"
13326 netdb_hlen_type="$yyy"
13332 : In case none of those worked, prompt the user.
13333 case "$netdb_host_type" in
13334 '') rp='What is the type for the 1st argument to gethostbyaddr?'
13337 netdb_host_type=$ans
13338 rp='What is the type for the 2nd argument to gethostbyaddr?'
13341 netdb_hlen_type=$ans
13345 *) : no gethostbyaddr, so pick harmless defaults
13346 netdb_host_type='char *'
13347 netdb_hlen_type="$sizetype"
13350 # Remove the "const" if needed. -- but then we'll have a
13352 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13355 : check for type of argument to gethostbyname.
13356 if test "X$netdb_name_type" = X ; then
13357 case "$d_gethbyname" in
13361 Checking to see what type of argument is accepted by gethostbyname().
13363 hdrs="$define sys/types.h
13364 $d_socket sys/socket.h
13365 $i_niin netinet/in.h
13367 $i_unistd unistd.h"
13368 for xxx in "const char *" "char *"; do
13369 case "$netdb_name_type" in
13370 '') try="extern struct hostent *gethostbyname($xxx);"
13371 if ./protochk "$try" $hdrs; then
13372 echo "Your system accepts $xxx."
13373 netdb_name_type="$xxx"
13378 : In case none of those worked, prompt the user.
13379 case "$netdb_name_type" in
13380 '') rp='What is the type for the 1st argument to gethostbyname?'
13383 netdb_name_type=$ans
13387 *) : no gethostbyname, so pick harmless default
13388 netdb_name_type='char *'
13393 : check for type of 1st argument to getnetbyaddr.
13394 if test "X$netdb_net_type" = X ; then
13395 case "$d_getnbyaddr" in
13399 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13401 hdrs="$define sys/types.h
13402 $d_socket sys/socket.h
13403 $i_niin netinet/in.h
13405 $i_unistd unistd.h"
13406 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13407 case "$netdb_net_type" in
13408 '') try="extern struct netent *getnetbyaddr($xxx, int);"
13409 if ./protochk "$try" $hdrs; then
13410 echo "Your system accepts $xxx."
13411 netdb_net_type="$xxx"
13416 : In case none of those worked, prompt the user.
13417 case "$netdb_net_type" in
13418 '') rp='What is the type for the 1st argument to getnetbyaddr?'
13421 netdb_net_type=$ans
13425 *) : no getnetbyaddr, so pick harmless default
13426 netdb_net_type='long'
13430 : locate the preferred pager for this system
13444 '') dflt=/usr/ucb/more;;
13451 rp='What pager is used on your system?'
13455 : see what type pids are declared as in the kernel
13456 rp="What is the type of process ids on this system?"
13457 set pid_t pidtype int stdio.h sys/types.h
13460 : Find earliest binary compatible site_perl subdirectory perl can use.
13461 case "$bincompat5005" in
13462 "$define") xs_apiversion='5.005' ;;
13463 *) xs_apiversion=$version ;; # The current site_perl version.
13465 : Find earliest pure perl site_perl subdirectory perl can use.
13466 : The versioned directories started at 5.005.
13467 pm_apiversion='5.005'
13469 : check for length of pointer
13473 echo "Checking to see how big your pointers are..." >&4
13474 if test "$voidflags" -gt 7; then
13475 echo '#define VOID_PTR char *' > try.c
13477 echo '#define VOID_PTR void *' > try.c
13479 $cat >>try.c <<'EOCP'
13483 printf("%d\n", (int)sizeof(VOID_PTR));
13488 if eval $compile_ok; then
13490 echo "Your pointers are $ptrsize bytes long."
13493 echo "(I can't seem to compile the test program. Guessing...)" >&4
13494 rp="What is the size of a pointer (in bytes)?"
13502 : see if ar generates random libraries by itself
13504 echo "Checking how to generate random libraries on your machine..." >&4
13505 echo 'int bar1() { return bar2(); }' > bar1.c
13506 echo 'int bar2() { return 2; }' > bar2.c
13507 $cat > foo.c <<'EOP'
13508 int main() { printf("%d\n", bar1()); exit(0); }
13510 $cc $ccflags -c bar1.c >/dev/null 2>&1
13511 $cc $ccflags -c bar2.c >/dev/null 2>&1
13512 $cc $ccflags -c foo.c >/dev/null 2>&1
13513 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13514 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13515 ./foobar >/dev/null 2>&1; then
13516 echo "$ar appears to generate random libraries itself."
13519 elif $ar ts bar$_a >/dev/null 2>&1 &&
13520 $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13521 ./foobar >/dev/null 2>&1; then
13522 echo "a table of contents needs to be added with '$ar ts'."
13529 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13530 $test -f $ranlib || ranlib=''
13533 if $test -n "$ranlib"; then
13534 echo "your system has '$ranlib'; we'll use that."
13537 echo "your system doesn't seem to support random libraries"
13538 echo "so we'll use lorder and tsort to order the libraries."
13545 : check for type of arguments to select.
13546 case "$selecttype" in
13547 '') case "$d_select" in
13551 Checking to see what type of arguments are accepted by select().
13553 hdrs="$define sys/types.h
13554 $i_systime sys/time.h
13555 $i_sysselct sys/select.h
13556 $d_socket sys/socket.h"
13557 : The first arg can be int, unsigned, or size_t
13558 : The last arg may or may not be 'const'
13560 : void pointer has been seen but using that
13561 : breaks the selectminbits test
13562 for xxx in 'fd_set *' 'int *'; do
13563 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13564 for tmo in 'struct timeval *' 'const struct timeval *'; do
13566 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13567 if ./protochk "$try" $hdrs; then
13568 echo "Your system accepts $xxx."
13577 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13578 case "$d_fd_set" in
13579 $define) dflt="fd_set *" ;;
13588 *) : no select, so pick a harmless default
13595 : check for the select 'width'
13596 case "$selectminbits" in
13597 '') case "$d_select" in
13601 Checking to see on how many bits at a time your select() operates...
13604 #include <sys/types.h>
13606 #$i_systime I_SYS_TIME
13607 #$i_systimek I_SYS_TIME_KERNEL
13612 # ifdef I_SYS_TIME_KERNEL
13615 # include <sys/time.h>
13616 # ifdef I_SYS_TIME_KERNEL
13620 #$i_sysselct I_SYS_SELECT
13621 #ifdef I_SYS_SELECT
13622 #include <sys/select.h>
13624 #$d_socket HAS_SOCKET
13626 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13630 #define S sizeof(*(b))
13632 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13633 #define NBITS (NBYTES * 8)
13642 fp = fopen("try.c", "r");
13648 b = ($selecttype)s;
13649 for (i = 0; i < NBITS; i++)
13653 select(fd + 1, b, 0, 0, &t);
13654 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13655 printf("%d\n", i + 1);
13660 if eval $compile_ok; then
13661 selectminbits=`./try`
13662 case "$selectminbits" in
13664 Cannot figure out on how many bits at a time your select() operates.
13665 I'll play safe and guess it is 32 bits.
13671 *) bits="$selectminbits bits" ;;
13673 echo "Your select() operates on $bits at a time." >&4
13675 rp='What is the minimum number of bits your select() operates on?'
13676 case "$byteorder" in
13677 1234|12345678) dflt=32 ;;
13682 selectminbits="$val"
13686 *) : no select, so pick a harmless default
13693 : Trace out the files included by signal.h, then look for SIGxxx names.
13694 : Remove SIGARRAYSIZE used by HPUX.
13695 : Remove SIGSTKSIZE used by Linux.
13696 : Remove SIGSTKSZ used by Posix.
13697 : Remove SIGTYP void lines used by OS2.
13698 : Some cpps, like os390, dont give the file name anywhere
13699 if [ "X$fieldn" = X ]; then
13700 : Just make some guesses. We check them later.
13701 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13703 xxx=`echo '#include <signal.h>' |
13704 $cppstdin $cppminus $cppflags 2>/dev/null |
13705 $grep '^[ ]*#.*include' |
13706 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13708 : Check this list of files to be sure we have parsed the cpp output ok.
13709 : This will also avoid potentially non-existent files, such
13712 for xx in $xxx /dev/null ; do
13713 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13715 : If we have found no files, at least try signal.h
13716 case "$xxxfiles" in
13717 '') xxxfiles=`./findhdr signal.h` ;;
13720 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13721 print substr($2, 4, 20)
13723 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13724 print substr($3, 4, 20)
13726 : Append some common names just in case the awk scan failed.
13727 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13728 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13729 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13730 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13731 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13733 : generate a few handy files for later
13734 $cat > signal.c <<'EOCP'
13735 #include <sys/types.h>
13736 #include <signal.h>
13740 /* Strange style to avoid deeply-nested #if/#else/#endif */
13743 # define NSIG (_NSIG)
13749 # define NSIG (SIGMAX+1)
13755 # define NSIG (SIG_MAX+1)
13761 # define NSIG (MAXSIG+1)
13767 # define NSIG (MAX_SIG+1)
13772 # ifdef SIGARRAYSIZE
13773 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13779 # define NSIG (_sys_nsig) /* Solaris 2.5 */
13783 /* Default to some arbitrary number that's big enough to get most
13784 of the common signals.
13790 printf("NSIG %d\n", NSIG);
13796 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13798 printf "#ifdef SIG"; printf $1; printf "\n"
13799 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13800 printf $1; printf ");\n"
13804 printf "#endif /* JUST_NSIG */\n";
13805 printf "exit(0);\n}\n";
13808 $cat >signal.awk <<'EOP'
13809 BEGIN { ndups = 0 }
13810 $1 ~ /^NSIG$/ { nsig = $2 }
13811 ($1 !~ /^NSIG$/) && (NF == 2) {
13812 if ($2 > maxsig) { maxsig = $2 }
13813 if (sig_name[$2]) {
13814 dup_name[ndups] = $1
13815 dup_num[ndups] = $2
13827 printf("NSIG %d\n", nsig);
13828 for (n = 1; n < nsig; n++) {
13830 printf("%s %d\n", sig_name[n], sig_num[n])
13833 printf("NUM%d %d\n", n, n)
13836 for (n = 0; n < ndups; n++) {
13837 printf("%s %d\n", dup_name[n], dup_num[n])
13841 $cat >signal_cmd <<EOS
13843 if $test -s signal.lst; then
13844 echo "Using your existing signal.lst file"
13849 $cat >>signal_cmd <<'EOS'
13852 if eval $compile_ok; then
13853 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13855 echo "(I can't seem be able to compile the whole test program)" >&4
13856 echo "(I'll try it in little pieces.)" >&4
13857 set signal -DJUST_NSIG
13858 if eval $compile_ok; then
13859 ./signal$_exe > signal.nsg
13862 echo "I can't seem to figure out how many signals you have." >&4
13863 echo "Guessing 50." >&4
13864 echo 'NSIG 50' > signal.nsg
13866 : Now look at all the signal names, one at a time.
13867 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13868 $cat > signal.c <<EOCP
13869 #include <sys/types.h>
13870 #include <signal.h>
13873 printf("$xx %d\n", SIG${xx});
13878 if eval $compile; then
13879 echo "SIG${xx} found."
13880 ./signal$_exe >> signal.ls1
13882 echo "SIG${xx} NOT found."
13885 if $test -s signal.ls1; then
13886 $cat signal.nsg signal.ls1 |
13887 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13891 if $test -s signal.lst; then
13894 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13895 echo 'kill -l' >signal
13896 set X `csh -f <signal`
13900 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13902 echo $@ | $tr ' ' $trnl | \
13903 $awk '{ printf "%s %d\n", $1, ++s; }
13904 END { printf "NSIG %d\n", ++s }' >signal.lst
13906 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13908 chmod a+x signal_cmd
13909 $eunicefix signal_cmd
13911 : generate list of signal names
13913 case "$sig_name_init" in
13915 *) case "$sig_num_init" in
13916 ''|*,*) doinit=yes ;;
13921 echo "Generating a list of signal names and numbers..." >&4
13923 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13924 sig_name=`$awk 'BEGIN { printf "ZERO " }
13925 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13926 sig_num=`$awk 'BEGIN { printf "0 " }
13927 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13928 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
13929 !/^NSIG/ { printf "\"%s\", ", $1 }
13930 END { printf "0\n" }' signal.lst`
13931 sig_num_init=`$awk 'BEGIN { printf "0, " }
13932 !/^NSIG/ { printf "%d, ", $2}
13933 END { printf "0\n"}' signal.lst`
13936 echo "The following $sig_count signals are available:"
13938 echo $sig_name | $awk \
13939 'BEGIN { linelen = 0 }
13941 for (i = 1; i <= NF; i++) {
13942 name = "SIG" $i " "
13943 linelen = linelen + length(name)
13944 if (linelen > 70) {
13946 linelen = length(name)
13952 $rm -f signal signal.c signal.awk signal.lst signal_cmd
13955 case "$sizetype" in
13956 *_t) zzz="$sizetype" ;;
13957 *) zzz="filesize" ;;
13959 echo "Checking the size of $zzz..." >&4
13961 #include <sys/types.h>
13964 printf("%d\n", (int)sizeof($sizetype));
13969 if eval $compile_ok; then
13973 echo "(I can't execute the test program--guessing $sizesize.)" >&4
13976 echo "Your $zzz size is $sizesize bytes."
13981 echo "(I can't compile the test program--guessing $sizesize.)" >&4
13985 : check for socklen_t
13987 echo "Checking to see if you have socklen_t..." >&4
13989 #include <sys/types.h>
13990 #$d_socket HAS_SOCKET
13992 #include <sys/socket.h>
13994 int main() { socklen_t x = 16; }
13997 if eval $compile; then
13999 echo "You have socklen_t."
14002 echo "You do not have socklen_t."
14003 case "$sizetype" in
14004 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14011 : check for type of the size argument to socket calls
14012 case "$d_socket" in
14016 Checking to see what type is the last argument of accept().
14018 hdrs="$define sys/types.h $d_socket sys/socket.h"
14020 case "$d_socklen_t" in
14021 "$define") yyy="$yyy socklen_t"
14023 yyy="$yyy $sizetype int long unsigned"
14024 for xxx in $yyy; do
14025 case "$socksizetype" in
14026 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
14027 if ./protochk "$try" $hdrs; then
14028 echo "Your system accepts '$xxx *' for the last argument of accept()."
14029 socksizetype="$xxx"
14034 : In case none of those worked, prompt the user.
14035 case "$socksizetype" in
14036 '') rp='What is the type for socket address structure sizes?'
14043 *) : no sockets, so pick relatively harmless default
14048 : see what type is used for signed size_t
14049 set ssize_t ssizetype int stdio.h sys/types.h
14052 $cat > ssize.c <<EOM
14054 #include <sys/types.h>
14055 #define Size_t $sizetype
14056 #define SSize_t $dflt
14059 if (sizeof(Size_t) == sizeof(SSize_t))
14061 else if (sizeof(Size_t) == sizeof(int))
14070 if eval $compile_ok && ./ssize > /dev/null; then
14071 ssizetype=`./ssize`
14072 echo "I'll be using $ssizetype for functions returning a byte count." >&4
14075 Help! I can't compile and run the ssize_t test program: please enlighten me!
14076 (This is probably a misconfiguration in your system or libraries, and
14077 you really ought to fix it. Still, I'll try anyway.)
14079 I need a type that is the same size as $sizetype, but is guaranteed to
14080 be signed. Common values are ssize_t, int and long.
14083 rp="What signed type is the same size as $sizetype?"
14087 $rm -f ssize ssize.*
14089 : see what type of char stdio uses.
14091 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14092 echo "Your stdio uses unsigned chars." >&4
14093 stdchar="unsigned char"
14095 echo "Your stdio uses signed chars." >&4
14099 : see if time exists
14101 if test "X$d_time" = X -o X"$timetype" = X; then
14102 if set time val -f d_time; eval $csym; $val; then
14103 echo 'time() found.' >&4
14105 rp="What is the type returned by time() on this system?"
14106 set time_t timetype long stdio.h sys/types.h
14109 echo 'time() not found, hope that will do.' >&4
14117 : see what type uids are declared as in the kernel
14119 echo "Looking for the type for user ids returned by getuid()."
14120 set uid_t uidtype xxx stdio.h sys/types.h
14124 xxx=`./findhdr sys/user.h`
14125 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14127 unsigned) dflt="$1 $2" ;;
14131 *) dflt="$uidtype";;
14134 uid_t) echo "uid_t found." ;;
14135 *) rp="What is the type for user ids returned by getuid()?"
14143 *_t) zzz="$uidtype" ;;
14146 echo "Checking the size of $zzz..." >&4
14148 #include <sys/types.h>
14151 printf("%d\n", (int)sizeof($uidtype));
14156 if eval $compile_ok; then
14160 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14163 echo "Your $zzz is $uidsize bytes long."
14168 echo "(I can't compile the test program--guessing $uidsize.)" >&4
14173 *_t) zzz="$uidtype" ;;
14176 echo "Checking the sign of $zzz..." >&4
14178 #include <sys/types.h>
14189 if eval $compile; then
14193 echo "(I can't execute the test program--guessing unsigned.)" >&4
14197 1) echo "Your $zzz is unsigned." ;;
14198 -1) echo "Your $zzz is signed." ;;
14204 echo "(I can't compile the test program--guessing unsigned.)" >&4
14210 $echo "Checking the format string to be used for uids..." >&4
14213 -1) if $test X"$uidsize" = X"$ivsize"; then
14214 uidformat="$ivdformat"
14216 if $test X"$uidsize" = X"$longsize"; then
14219 if $test X"$uidsize" = X"$intsize"; then
14222 if $test X"$uidsize" = X"$shortsize"; then
14229 *) if $test X"$uidsize" = X"$uvsize"; then
14230 uidformat="$uvuformat"
14232 if $test X"$uidsize" = X"$longsize"; then
14235 if $test X"$uidsize" = X"$intsize"; then
14238 if $test X"$uidsize" = X"$shortsize"; then
14247 : see if dbm.h is available
14248 : see if dbmclose exists
14249 set dbmclose d_dbmclose
14252 case "$d_dbmclose" in
14262 *) set rpcsvc/dbm.h i_rpcsvcdbm
14267 *) echo "We won't be including <dbm.h>"
14277 : see if this is a sys/file.h system
14282 : do we need to include sys/file.h ?
14286 if $h_sysfile; then
14288 echo "We'll be including <sys/file.h>." >&4
14291 echo "We won't be including <sys/file.h>." >&4
14301 : see if fcntl.h is there
14306 : see if we can include fcntl.h
14312 echo "We'll be including <fcntl.h>." >&4
14315 if $h_sysfile; then
14316 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14318 echo "We won't be including <fcntl.h>." >&4
14330 : see if this is a iconv.h system
14331 set iconv.h i_iconv
14334 : see if this is a ieeefp.h system
14335 set ieeefp.h i_ieeefp
14338 : see if locale.h is available
14339 set locale.h i_locale
14342 : see if mach cthreads are available
14343 if test "X$usethreads" = "X$define"; then
14344 set mach/cthreads.h i_machcthr
14347 i_machcthr="$undef"
14352 : see if this is a math.h system
14356 : see if this is a mntent.h system
14357 set mntent.h i_mntent
14360 : see if ndbm.h is available
14365 : see if dbm_open exists
14366 set dbm_open d_dbm_open
14368 case "$d_dbm_open" in
14371 echo "We won't be including <ndbm.h>"
14380 : see if net/errno.h is available
14382 set net/errno.h val
14385 : Unfortunately, it causes problems on some systems. Arrgh.
14388 cat > try.c <<'EOM'
14391 #include <net/errno.h>
14397 if $cc $ccflags -c try.c >/dev/null 2>&1; then
14398 echo "We'll be including <net/errno.h>." >&4
14400 echo "We won't be including <net/errno.h>." >&4
14409 : see if netinet/tcp.h is available
14410 set netinet/tcp.h i_netinettcp
14413 : see if this is a poll.h system
14417 : see if this is a prot.h system
14422 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
14423 $cat <<'EOSH' > Cppsym.know
14424 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14425 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14426 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14427 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14428 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14429 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14430 bull c cadmus clipper CMU COFF COMPILER_VERSION
14431 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14432 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14433 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14434 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14435 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14436 H3050R H3050RX hbullx20 hcx host_mips
14437 hp200 hp300 hp700 HP700 hp800 hp9000
14438 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14439 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14440 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14441 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14442 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14443 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14444 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14445 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14446 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14447 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14448 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14449 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14450 MATH_HAS_NO_SIDE_EFFECTS
14451 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14452 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14453 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14454 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14455 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14456 NetBSD news1500 news1700 news1800 news1900 news3700
14457 news700 news800 news900 NeXT NLS ns16000 ns32000
14458 ns32016 ns32332 ns32k nsc32000
14459 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14460 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14461 pc532 pdp11 PGC PIC plexus PORTAR posix
14462 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14463 POSIX_C_SOURCE POSIX_SOURCE POWER
14464 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14465 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14466 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14467 sony sony_news sonyrisc sparc sparclite spectrum
14468 stardent stdc STDC_EXT stratos sun sun3 sun386
14469 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14470 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14471 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14472 sysV68 sysV88 Tek4132 Tek4300 titan
14473 tower tower32 tower32_200 tower32_600 tower32_700
14474 tower32_800 tower32_850 tss
14475 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14476 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14477 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14478 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14479 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14480 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14483 # Maybe put other stuff here too.
14484 cat <<EOSH >>Cppsym.know
14487 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14488 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14489 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14490 $rm -f Cppsym.a Cppsym.b
14491 cat <<EOSH > Cppsym
14493 if $test \$# -gt 0; then
14494 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14495 if $test -s Cppsym.got; then
14502 $tr " " "$trnl" | ./Cppsym.try
14508 cat <<EOSH > Cppsym.try
14510 cat <<'EOCP' > try.c
14516 cat <<'EOSH' >> Cppsym.try
14518 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
14519 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
14520 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
14521 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
14525 cat <<EOSH >> Cppsym.try
14527 case "$osname-$gccversion" in
14528 irix-) ccflags="\$ccflags -woff 1178" ;;
14530 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14532 chmod +x Cppsym.try
14533 $eunicefix Cppsym.try
14534 ./Cppsym < Cppsym.know > Cppsym.true
14535 : now check the C compiler for additional symbols
14536 postprocess_cc_v=''
14538 aix) postprocess_cc_v="|$tr , ' '" ;;
14545 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14548 -D*) echo "\$i" | $sed 's/^-D//';;
14549 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14554 postprocess_cc_v=''
14557 ./ccsym > ccsym1.raw
14558 if $test -s ccsym1.raw; then
14559 $sort ccsym1.raw | $uniq >ccsym.raw
14561 mv ccsym1.raw ccsym.raw
14564 $awk '/\=/ { print $0; next }
14565 { print $0"=1" }' ccsym.raw >ccsym.list
14566 $awk '/\=/ { print $0; next }
14567 { print $0"=1" }' Cppsym.true >ccsym.true
14568 $comm -13 ccsym.true ccsym.list >ccsym.own
14569 $comm -12 ccsym.true ccsym.list >ccsym.com
14570 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14572 if $test -z ccsym.raw; then
14573 echo "Your C compiler doesn't seem to define any symbols!" >&4
14575 echo "However, your C preprocessor defines the following symbols:"
14578 cppsymbols=`$cat Cppsym.true`
14579 cppsymbols=`echo $cppsymbols`
14580 cppccsymbols="$cppsymbols"
14582 if $test -s ccsym.com; then
14583 echo "Your C compiler and pre-processor define these symbols:"
14584 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14587 cppccsymbols=`$cat ccsym.com`
14588 cppccsymbols=`echo $cppccsymbols`
14589 $test "$silent" || sleep 1
14591 if $test -s ccsym.cpp; then
14592 $test "$also" && echo " "
14593 echo "Your C pre-processor ${also}defines the following symbols:"
14594 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14596 cppsymbols=`$cat ccsym.cpp`
14597 cppsymbols=`echo $cppsymbols`
14598 $test "$silent" || sleep 1
14600 if $test -s ccsym.own; then
14601 $test "$also" && echo " "
14602 echo "Your C compiler ${also}defines the following cpp symbols:"
14603 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14604 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14605 ccsymbols=`$cat ccsym.own`
14606 ccsymbols=`echo $ccsymbols`
14607 $test "$silent" || sleep 1
14612 : see if this is a termio system
14616 if $test `./findhdr termios.h`; then
14617 set tcsetattr i_termios
14623 "$define") echo "You have POSIX termios.h... good!" >&4;;
14624 *) if ./Cppsym pyr; then
14625 case "`/bin/universe`" in
14626 ucb) if $test `./findhdr sgtty.h`; then
14628 echo "<sgtty.h> found." >&4
14630 echo "System is pyramid with BSD universe."
14631 echo "<sgtty.h> not found--you could have problems." >&4
14633 *) if $test `./findhdr termio.h`; then
14635 echo "<termio.h> found." >&4
14637 echo "System is pyramid with USG universe."
14638 echo "<termio.h> not found--you could have problems." >&4
14642 if $test `./findhdr termio.h`; then
14643 echo "<termio.h> found." >&4
14645 elif $test `./findhdr sgtty.h`; then
14646 echo "<sgtty.h> found." >&4
14649 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14652 if $test `./findhdr sgtty.h`; then
14653 echo "<sgtty.h> found." >&4
14655 elif $test `./findhdr termio.h`; then
14656 echo "<termio.h> found." >&4
14659 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14663 set i_termio; eval $setvar
14664 val=$val2; set i_sgtty; eval $setvar
14665 val=$val3; set i_termios; eval $setvar
14667 : see if this is a shadow.h system
14668 set shadow.h i_shadow
14671 : see if this is a socks.h system
14672 set socks.h i_socks
14675 : see if stdarg is available
14677 if $test `./findhdr stdarg.h`; then
14678 echo "<stdarg.h> found." >&4
14681 echo "<stdarg.h> NOT found." >&4
14685 : see if varags is available
14687 if $test `./findhdr varargs.h`; then
14688 echo "<varargs.h> found." >&4
14690 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14693 : set up the varargs testing programs
14694 $cat > varargs.c <<EOP
14696 #include <stdarg.h>
14699 #include <varargs.h>
14703 int f(char *p, ...)
14717 p = va_arg(ap, char *);
14722 $cat > varargs <<EOP
14724 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14733 : now check which varargs header should be included
14738 if `./varargs I_STDARG`; then
14740 elif `./varargs I_VARARGS`; then
14745 if `./varargs I_VARARGS`; then
14752 echo "I could not find the definition for va_dcl... You have problems..." >&4
14753 val="$undef"; set i_stdarg; eval $setvar
14754 val="$undef"; set i_varargs; eval $setvar
14759 case "$i_varhdr" in
14761 val="$define"; set i_stdarg; eval $setvar
14762 val="$undef"; set i_varargs; eval $setvar
14765 val="$undef"; set i_stdarg; eval $setvar
14766 val="$define"; set i_varargs; eval $setvar
14769 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14773 : see if stddef is available
14774 set stddef.h i_stddef
14777 : see if this is a sunmath.h system
14778 set sunmath.h i_sunmath
14781 : see if sys/access.h is available
14782 set sys/access.h i_sysaccess
14785 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14786 set sys/filio.h i_sysfilio
14789 if $test `./findhdr sys/ioctl.h`; then
14791 echo '<sys/ioctl.h> found.' >&4
14794 if $test $i_sysfilio = "$define"; then
14795 echo '<sys/ioctl.h> NOT found.' >&4
14797 $test $i_sgtty = "$define" && xxx="sgtty.h"
14798 $test $i_termio = "$define" && xxx="termio.h"
14799 $test $i_termios = "$define" && xxx="termios.h"
14800 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14807 : see if this is a syslog.h system
14808 set syslog.h i_syslog
14812 : see if this is a sys/mode.h system
14813 set sys/mode.h i_sysmode
14816 : see if sys/resource.h has to be included
14817 set sys/resource.h i_sysresrc
14820 : see if sys/security.h is available
14821 set sys/security.h i_syssecrt
14824 : see if this is a sys/statvfs.h system
14825 set sys/statvfs.h i_sysstatvfs
14828 : see if this is a sys/uio.h system
14829 set sys/uio.h i_sysuio
14832 : see if this is a sys/un.h system
14833 set sys/un.h i_sysun
14837 : see if this is a sys/utsname.h system
14838 set sys/utsname.h i_sysutsname
14841 : see if this is a syswait system
14842 set sys/wait.h i_syswait
14845 : see if this is a ustat.h system
14846 set ustat.h i_ustat
14849 : see if this is an utime system
14850 set utime.h i_utime
14853 : see if this is a values.h system
14854 set values.h i_values
14857 : see if this is a vfork system
14860 set vfork.h i_vfork
14868 : see if gdbm.h is available
14873 : see if gdbm_open exists
14874 set gdbm_open d_gdbm_open
14876 case "$d_gdbm_open" in
14879 echo "We won't be including <gdbm.h>"
14889 echo "Looking for extensions..." >&4
14890 : If we are using the old config.sh, known_extensions may contain
14891 : old or inaccurate or duplicate values.
14892 known_extensions=''
14893 nonxs_extensions=''
14894 : We do not use find because it might not be available.
14895 : We do not just use MANIFEST because the user may have dropped
14896 : some additional extensions into the source tree and expect them
14899 : Function to recursively find available extensions, ignoring DynaLoader
14900 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14904 DynaLoader|dynaload) ;;
14906 if $test -f $xxx/$xxx.xs; then
14907 known_extensions="$known_extensions $1$xxx";
14908 elif $test -f $xxx/Makefile.PL; then
14909 nonxs_extensions="$nonxs_extensions $1$xxx";
14911 if $test -d $xxx -a $# -lt 10; then
14914 eval $find_extensions;
14926 eval $find_extensions
14927 set X $nonxs_extensions
14929 nonxs_extensions="$*"
14930 set X $known_extensions
14932 known_extensions="$*"
14935 : Now see which are supported on this system.
14937 for xxx in $known_extensions ; do
14941 $define) avail_ext="$avail_ext $xxx" ;;
14944 GDBM_File|gdbm_fil)
14946 $define) avail_ext="$avail_ext $xxx" ;;
14949 NDBM_File|ndbm_fil)
14952 case "$osname-$use64bitint" in
14955 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14958 *) avail_ext="$avail_ext $xxx" ;;
14963 ODBM_File|odbm_fil)
14964 case "${i_dbm}${i_rpcsvcdbm}" in
14966 case "$osname-$use64bitint" in
14969 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14972 *) avail_ext="$avail_ext $xxx" ;;
14978 case "$useposix" in
14979 true|define|y) avail_ext="$avail_ext $xxx" ;;
14983 case "$useopcode" in
14984 true|define|y) avail_ext="$avail_ext $xxx" ;;
14988 case "$d_socket" in
14989 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14992 Sys/Syslog|sys/syslog)
14993 : XXX syslog requires socket
14994 case "$d_socket" in
14995 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14999 case "$usethreads" in
15000 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15004 : XXX Do we need a useipcsysv variable here
15005 case "${d_msg}${d_sem}${d_shm}" in
15006 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15009 *) avail_ext="$avail_ext $xxx"
15018 : Now see which nonxs extensions are supported on this system.
15019 : For now assume all are.
15021 for xxx in $nonxs_extensions ; do
15023 *) nonxs_ext="$nonxs_ext $xxx"
15035 A number of extensions are supplied with $package. You may choose to
15036 compile these extensions for dynamic loading (the default), compile
15037 them into the $package executable (static loading), or not include
15038 them at all. Answer "none" to include no extensions.
15039 Note that DynaLoader is always built and need not be mentioned here.
15042 case "$dynamic_ext" in
15043 '') dflt="$avail_ext" ;;
15044 *) dflt="$dynamic_ext"
15045 # Perhaps we are reusing an old out-of-date config.sh.
15048 if test X"$dynamic_ext" != X"$avail_ext"; then
15050 NOTICE: Your previous config.sh list may be incorrect.
15051 The extensions now available to you are
15053 but the default list from your previous config.sh is
15065 rp="What extensions do you wish to load dynamically?"
15068 none) dynamic_ext=' ' ;;
15069 *) dynamic_ext="$ans" ;;
15072 case "$static_ext" in
15074 : Exclude those already listed in dynamic linking
15076 for xxx in $avail_ext; do
15077 case " $dynamic_ext " in
15079 *) dflt="$dflt $xxx" ;;
15086 *) dflt="$static_ext"
15093 rp="What extensions do you wish to load statically?"
15096 none) static_ext=' ' ;;
15097 *) static_ext="$ans" ;;
15102 A number of extensions are supplied with $package. Answer "none"
15103 to include no extensions.
15104 Note that DynaLoader is always built and need not be mentioned here.
15107 case "$static_ext" in
15108 '') dflt="$avail_ext" ;;
15109 *) dflt="$static_ext"
15110 # Perhaps we are reusing an old out-of-date config.sh.
15113 if test X"$static_ext" != X"$avail_ext"; then
15115 NOTICE: Your previous config.sh list may be incorrect.
15116 The extensions now available to you are
15118 but the default list from your previous config.sh is
15127 : Exclude those that are not xs extensions
15131 rp="What extensions do you wish to include?"
15134 none) static_ext=' ' ;;
15135 *) static_ext="$ans" ;;
15140 set X $dynamic_ext $static_ext $nonxs_ext
15144 : Remove build directory name from cppstdin so it can be used from
15145 : either the present location or the final installed location.
15147 : Get out of the UU directory to get correct path name.
15149 case "$cppstdin" in
15151 echo "Stripping down cppstdin path name"
15157 : end of configuration questions
15159 echo "End of configuration questions."
15162 : back to where it started
15163 if test -d ../UU; then
15167 : configuration may be patched via a 'config.over' file
15168 if $test -f config.over; then
15171 rp='I see a config.over file. Do you wish to load it?'
15174 n*) echo "OK, I'll ignore it.";;
15176 echo "Configuration override changes have been loaded."
15181 : in case they want portability, strip down executable paths
15182 case "$d_portable" in
15185 echo "Stripping down executable paths..." >&4
15186 for file in $loclist $trylist; do
15188 eval $file=`basename $temp`
15193 : create config.sh file
15195 echo "Creating config.sh..." >&4
15196 $spitshell <<EOT >config.sh
15199 # This file was produced by running the Configure script. It holds all the
15200 # definitions figured out by Configure. Should you modify one of these values,
15201 # do not forget to propagate your changes by running "Configure -der". You may
15202 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15205 # Package name : $package
15206 # Source directory : $src
15207 # Configuration time: $cf_time
15208 # Configured by : $cf_by
15209 # Target system : $myuname
15219 Revision='$Revision'
15226 alignbytes='$alignbytes'
15227 ansi2knr='$ansi2knr'
15228 aphostname='$aphostname'
15229 api_revision='$api_revision'
15230 api_subversion='$api_subversion'
15231 api_version='$api_version'
15232 api_versionstring='$api_versionstring'
15235 archlibexp='$archlibexp'
15236 archname64='$archname64'
15237 archname='$archname'
15238 archobjs='$archobjs'
15243 bincompat5005='$bincompat5005'
15247 byteorder='$byteorder'
15249 castflags='$castflags'
15252 cccdlflags='$cccdlflags'
15253 ccdlflags='$ccdlflags'
15255 ccsymbols='$ccsymbols'
15257 cf_email='$cf_email'
15259 charsize='$charsize'
15263 clocktype='$clocktype'
15265 compress='$compress'
15266 contains='$contains'
15270 cpp_stuff='$cpp_stuff'
15271 cppccsymbols='$cppccsymbols'
15272 cppflags='$cppflags'
15274 cppminus='$cppminus'
15276 cppstdin='$cppstdin'
15277 cppsymbols='$cppsymbols'
15278 crosscompile='$crosscompile'
15279 cryptlib='$cryptlib'
15281 d_Gconvert='$d_Gconvert'
15282 d_PRIEldbl='$d_PRIEldbl'
15283 d_PRIFldbl='$d_PRIFldbl'
15284 d_PRIGldbl='$d_PRIGldbl'
15285 d_PRIX64='$d_PRIX64'
15286 d_PRId64='$d_PRId64'
15287 d_PRIeldbl='$d_PRIeldbl'
15288 d_PRIfldbl='$d_PRIfldbl'
15289 d_PRIgldbl='$d_PRIgldbl'
15290 d_PRIi64='$d_PRIi64'
15291 d_PRIo64='$d_PRIo64'
15292 d_PRIu64='$d_PRIu64'
15293 d_PRIx64='$d_PRIx64'
15294 d_access='$d_access'
15295 d_accessx='$d_accessx'
15297 d_archlib='$d_archlib'
15300 d_attribut='$d_attribut'
15303 d_bincompat5005='$d_bincompat5005'
15305 d_bsdgetpgrp='$d_bsdgetpgrp'
15306 d_bsdsetpgrp='$d_bsdsetpgrp'
15308 d_casti32='$d_casti32'
15309 d_castneg='$d_castneg'
15310 d_charvspr='$d_charvspr'
15312 d_chroot='$d_chroot'
15313 d_chsize='$d_chsize'
15314 d_closedir='$d_closedir'
15318 d_cuserid='$d_cuserid'
15319 d_dbl_dig='$d_dbl_dig'
15320 d_difftime='$d_difftime'
15321 d_dirnamlen='$d_dirnamlen'
15322 d_dlerror='$d_dlerror'
15323 d_dlopen='$d_dlopen'
15324 d_dlsymun='$d_dlsymun'
15325 d_dosuid='$d_dosuid'
15326 d_drand48proto='$d_drand48proto'
15328 d_eaccess='$d_eaccess'
15329 d_endgrent='$d_endgrent'
15330 d_endhent='$d_endhent'
15331 d_endnent='$d_endnent'
15332 d_endpent='$d_endpent'
15333 d_endpwent='$d_endpwent'
15334 d_endsent='$d_endsent'
15335 d_eofnblk='$d_eofnblk'
15336 d_eunice='$d_eunice'
15337 d_fchmod='$d_fchmod'
15338 d_fchown='$d_fchown'
15340 d_fd_macros='$d_fd_macros'
15341 d_fd_set='$d_fd_set'
15342 d_fds_bits='$d_fds_bits'
15343 d_fgetpos='$d_fgetpos'
15344 d_flexfnam='$d_flexfnam'
15347 d_fpathconf='$d_fpathconf'
15348 d_fpos64_t='$d_fpos64_t'
15349 d_frexpl='$d_frexpl'
15350 d_fs_data_s='$d_fs_data_s'
15351 d_fseeko='$d_fseeko'
15352 d_fsetpos='$d_fsetpos'
15353 d_fstatfs='$d_fstatfs'
15354 d_fstatvfs='$d_fstatvfs'
15355 d_ftello='$d_ftello'
15357 d_getcwd='$d_getcwd'
15358 d_getespwnam='$d_getespwnam'
15359 d_getfsstat='$d_getfsstat'
15360 d_getgrent='$d_getgrent'
15361 d_getgrps='$d_getgrps'
15362 d_gethbyaddr='$d_gethbyaddr'
15363 d_gethbyname='$d_gethbyname'
15364 d_gethent='$d_gethent'
15365 d_gethname='$d_gethname'
15366 d_gethostprotos='$d_gethostprotos'
15367 d_getlogin='$d_getlogin'
15368 d_getmnt='$d_getmnt'
15369 d_getmntent='$d_getmntent'
15370 d_getnbyaddr='$d_getnbyaddr'
15371 d_getnbyname='$d_getnbyname'
15372 d_getnent='$d_getnent'
15373 d_getnetprotos='$d_getnetprotos'
15374 d_getpbyname='$d_getpbyname'
15375 d_getpbynumber='$d_getpbynumber'
15376 d_getpent='$d_getpent'
15377 d_getpgid='$d_getpgid'
15378 d_getpgrp2='$d_getpgrp2'
15379 d_getpgrp='$d_getpgrp'
15380 d_getppid='$d_getppid'
15381 d_getprior='$d_getprior'
15382 d_getprotoprotos='$d_getprotoprotos'
15383 d_getprpwnam='$d_getprpwnam'
15384 d_getpwent='$d_getpwent'
15385 d_getsbyname='$d_getsbyname'
15386 d_getsbyport='$d_getsbyport'
15387 d_getsent='$d_getsent'
15388 d_getservprotos='$d_getservprotos'
15389 d_getspnam='$d_getspnam'
15390 d_gettimeod='$d_gettimeod'
15391 d_gnulibc='$d_gnulibc'
15392 d_grpasswd='$d_grpasswd'
15393 d_hasmntopt='$d_hasmntopt'
15397 d_inetaton='$d_inetaton'
15398 d_int64_t='$d_int64_t'
15399 d_isascii='$d_isascii'
15401 d_isnanl='$d_isnanl'
15402 d_killpg='$d_killpg'
15403 d_lchown='$d_lchown'
15404 d_ldbl_dig='$d_ldbl_dig'
15406 d_locconv='$d_locconv'
15408 d_longdbl='$d_longdbl'
15409 d_longlong='$d_longlong'
15410 d_lseekproto='$d_lseekproto'
15412 d_madvise='$d_madvise'
15414 d_mbstowcs='$d_mbstowcs'
15415 d_mbtowc='$d_mbtowc'
15416 d_memchr='$d_memchr'
15417 d_memcmp='$d_memcmp'
15418 d_memcpy='$d_memcpy'
15419 d_memmove='$d_memmove'
15420 d_memset='$d_memset'
15422 d_mkdtemp='$d_mkdtemp'
15423 d_mkfifo='$d_mkfifo'
15424 d_mkstemp='$d_mkstemp'
15425 d_mkstemps='$d_mkstemps'
15426 d_mktime='$d_mktime'
15429 d_mprotect='$d_mprotect'
15431 d_msg_ctrunc='$d_msg_ctrunc'
15432 d_msg_dontroute='$d_msg_dontroute'
15433 d_msg_oob='$d_msg_oob'
15434 d_msg_peek='$d_msg_peek'
15435 d_msg_proxy='$d_msg_proxy'
15436 d_msgctl='$d_msgctl'
15437 d_msgget='$d_msgget'
15438 d_msgrcv='$d_msgrcv'
15439 d_msgsnd='$d_msgsnd'
15441 d_munmap='$d_munmap'
15442 d_mymalloc='$d_mymalloc'
15444 d_nv_preserves_uv='$d_nv_preserves_uv'
15445 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15446 d_off64_t='$d_off64_t'
15447 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15448 d_oldpthreads='$d_oldpthreads'
15449 d_oldsock='$d_oldsock'
15451 d_pathconf='$d_pathconf'
15453 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15454 d_phostname='$d_phostname'
15457 d_portable='$d_portable'
15458 d_pthread_yield='$d_pthread_yield'
15460 d_pwchange='$d_pwchange'
15461 d_pwclass='$d_pwclass'
15462 d_pwcomment='$d_pwcomment'
15463 d_pwexpire='$d_pwexpire'
15464 d_pwgecos='$d_pwgecos'
15465 d_pwpasswd='$d_pwpasswd'
15466 d_pwquota='$d_pwquota'
15469 d_readdir='$d_readdir'
15470 d_readlink='$d_readlink'
15471 d_rename='$d_rename'
15472 d_rewinddir='$d_rewinddir'
15474 d_safebcpy='$d_safebcpy'
15475 d_safemcpy='$d_safemcpy'
15476 d_sanemcmp='$d_sanemcmp'
15477 d_sched_yield='$d_sched_yield'
15478 d_scm_rights='$d_scm_rights'
15479 d_seekdir='$d_seekdir'
15480 d_select='$d_select'
15482 d_semctl='$d_semctl'
15483 d_semctl_semid_ds='$d_semctl_semid_ds'
15484 d_semctl_semun='$d_semctl_semun'
15485 d_semget='$d_semget'
15487 d_setegid='$d_setegid'
15488 d_seteuid='$d_seteuid'
15489 d_setgrent='$d_setgrent'
15490 d_setgrps='$d_setgrps'
15491 d_sethent='$d_sethent'
15492 d_setlinebuf='$d_setlinebuf'
15493 d_setlocale='$d_setlocale'
15494 d_setnent='$d_setnent'
15495 d_setpent='$d_setpent'
15496 d_setpgid='$d_setpgid'
15497 d_setpgrp2='$d_setpgrp2'
15498 d_setpgrp='$d_setpgrp'
15499 d_setprior='$d_setprior'
15500 d_setproctitle='$d_setproctitle'
15501 d_setpwent='$d_setpwent'
15502 d_setregid='$d_setregid'
15503 d_setresgid='$d_setresgid'
15504 d_setresuid='$d_setresuid'
15505 d_setreuid='$d_setreuid'
15506 d_setrgid='$d_setrgid'
15507 d_setruid='$d_setruid'
15508 d_setsent='$d_setsent'
15509 d_setsid='$d_setsid'
15510 d_setvbuf='$d_setvbuf'
15514 d_shmatprototype='$d_shmatprototype'
15515 d_shmctl='$d_shmctl'
15517 d_shmget='$d_shmget'
15518 d_sigaction='$d_sigaction'
15519 d_sigsetjmp='$d_sigsetjmp'
15520 d_socket='$d_socket'
15521 d_socklen_t='$d_socklen_t'
15522 d_sockpair='$d_sockpair'
15524 d_statblks='$d_statblks'
15525 d_statfs_f_flags='$d_statfs_f_flags'
15526 d_statfs_s='$d_statfs_s'
15527 d_statvfs='$d_statvfs'
15528 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15529 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15530 d_stdio_stream_array='$d_stdio_stream_array'
15531 d_stdiobase='$d_stdiobase'
15532 d_stdstdio='$d_stdstdio'
15533 d_strchr='$d_strchr'
15534 d_strcoll='$d_strcoll'
15535 d_strctcpy='$d_strctcpy'
15536 d_strerrm='$d_strerrm'
15537 d_strerror='$d_strerror'
15538 d_strtod='$d_strtod'
15539 d_strtol='$d_strtol'
15540 d_strtold='$d_strtold'
15541 d_strtoll='$d_strtoll'
15542 d_strtoul='$d_strtoul'
15543 d_strtoull='$d_strtoull'
15544 d_strtouq='$d_strtouq'
15545 d_strxfrm='$d_strxfrm'
15546 d_suidsafe='$d_suidsafe'
15547 d_symlink='$d_symlink'
15548 d_syscall='$d_syscall'
15549 d_sysconf='$d_sysconf'
15550 d_sysernlst='$d_sysernlst'
15551 d_syserrlst='$d_syserrlst'
15552 d_system='$d_system'
15553 d_tcgetpgrp='$d_tcgetpgrp'
15554 d_tcsetpgrp='$d_tcsetpgrp'
15555 d_telldir='$d_telldir'
15556 d_telldirproto='$d_telldirproto'
15559 d_truncate='$d_truncate'
15560 d_tzname='$d_tzname'
15563 d_union_semun='$d_union_semun'
15565 d_vendorarch='$d_vendorarch'
15566 d_vendorbin='$d_vendorbin'
15567 d_vendorlib='$d_vendorlib'
15569 d_void_closedir='$d_void_closedir'
15570 d_voidsig='$d_voidsig'
15571 d_voidtty='$d_voidtty'
15572 d_volatile='$d_volatile'
15573 d_vprintf='$d_vprintf'
15575 d_waitpid='$d_waitpid'
15576 d_wcstombs='$d_wcstombs'
15577 d_wctomb='$d_wctomb'
15580 db_hashtype='$db_hashtype'
15581 db_prefixtype='$db_prefixtype'
15582 defvoidused='$defvoidused'
15583 direntrytype='$direntrytype'
15586 doublesize='$doublesize'
15588 dynamic_ext='$dynamic_ext'
15594 eunicefix='$eunicefix'
15597 extensions='$extensions'
15598 fflushNULL='$fflushNULL'
15599 fflushall='$fflushall'
15601 firstmakefile='$firstmakefile'
15603 fpossize='$fpossize'
15604 fpostype='$fpostype'
15605 freetype='$freetype'
15607 full_csh='$full_csh'
15608 full_sed='$full_sed'
15609 gccversion='$gccversion'
15610 gidformat='$gidformat'
15616 groupcat='$groupcat'
15617 groupstype='$groupstype'
15620 h_sysfile='$h_sysfile'
15632 i_arpainet='$i_arpainet'
15633 i_bsdioctl='$i_bsdioctl'
15636 i_dirent='$i_dirent'
15644 i_ieeefp='$i_ieeefp'
15645 i_inttypes='$i_inttypes'
15646 i_limits='$i_limits'
15647 i_locale='$i_locale'
15648 i_machcthr='$i_machcthr'
15649 i_malloc='$i_malloc'
15651 i_memory='$i_memory'
15652 i_mntent='$i_mntent'
15655 i_neterrno='$i_neterrno'
15656 i_netinettcp='$i_netinettcp'
15660 i_pthread='$i_pthread'
15662 i_rpcsvcdbm='$i_rpcsvcdbm'
15665 i_shadow='$i_shadow'
15667 i_stdarg='$i_stdarg'
15668 i_stddef='$i_stddef'
15669 i_stdlib='$i_stdlib'
15670 i_string='$i_string'
15671 i_sunmath='$i_sunmath'
15672 i_sysaccess='$i_sysaccess'
15673 i_sysdir='$i_sysdir'
15674 i_sysfile='$i_sysfile'
15675 i_sysfilio='$i_sysfilio'
15677 i_sysioctl='$i_sysioctl'
15678 i_syslog='$i_syslog'
15679 i_sysmman='$i_sysmman'
15680 i_sysmode='$i_sysmode'
15681 i_sysmount='$i_sysmount'
15682 i_sysndir='$i_sysndir'
15683 i_sysparam='$i_sysparam'
15684 i_sysresrc='$i_sysresrc'
15685 i_syssecrt='$i_syssecrt'
15686 i_sysselct='$i_sysselct'
15687 i_syssockio='$i_syssockio'
15688 i_sysstat='$i_sysstat'
15689 i_sysstatfs='$i_sysstatfs'
15690 i_sysstatvfs='$i_sysstatvfs'
15691 i_systime='$i_systime'
15692 i_systimek='$i_systimek'
15693 i_systimes='$i_systimes'
15694 i_systypes='$i_systypes'
15695 i_sysuio='$i_sysuio'
15697 i_sysutsname='$i_sysutsname'
15698 i_sysvfs='$i_sysvfs'
15699 i_syswait='$i_syswait'
15700 i_termio='$i_termio'
15701 i_termios='$i_termios'
15703 i_unistd='$i_unistd'
15706 i_values='$i_values'
15707 i_varargs='$i_varargs'
15708 i_varhdr='$i_varhdr'
15710 ignore_versioned_solibs='$ignore_versioned_solibs'
15711 inc_version_list='$inc_version_list'
15712 inc_version_list_init='$inc_version_list_init'
15715 installarchlib='$installarchlib'
15716 installbin='$installbin'
15717 installman1dir='$installman1dir'
15718 installman3dir='$installman3dir'
15719 installprefix='$installprefix'
15720 installprefixexp='$installprefixexp'
15721 installprivlib='$installprivlib'
15722 installscript='$installscript'
15723 installsitearch='$installsitearch'
15724 installsitebin='$installsitebin'
15725 installsitelib='$installsitelib'
15726 installstyle='$installstyle'
15727 installusrbinperl='$installusrbinperl'
15728 installvendorarch='$installvendorarch'
15729 installvendorbin='$installvendorbin'
15730 installvendorlib='$installvendorlib'
15732 ivdformat='$ivdformat'
15735 known_extensions='$known_extensions'
15739 lddlflags='$lddlflags'
15741 ldlibpthname='$ldlibpthname'
15748 libsdirs='$libsdirs'
15749 libsfiles='$libsfiles'
15750 libsfound='$libsfound'
15751 libspath='$libspath'
15752 libswanted='$libswanted'
15758 locincpth='$locincpth'
15759 loclibpth='$loclibpth'
15760 longdblsize='$longdblsize'
15761 longlongsize='$longlongsize'
15762 longsize='$longsize'
15766 lseeksize='$lseeksize'
15767 lseektype='$lseektype'
15771 make_set_make='$make_set_make'
15772 mallocobj='$mallocobj'
15773 mallocsrc='$mallocsrc'
15774 malloctype='$malloctype'
15776 man1direxp='$man1direxp'
15779 man3direxp='$man3direxp'
15782 mips_type='$mips_type'
15784 mmaptype='$mmaptype'
15786 modetype='$modetype'
15788 multiarch='$multiarch'
15790 myarchname='$myarchname'
15791 mydomain='$mydomain'
15792 myhostname='$myhostname'
15795 netdb_hlen_type='$netdb_hlen_type'
15796 netdb_host_type='$netdb_host_type'
15797 netdb_name_type='$netdb_name_type'
15798 netdb_net_type='$netdb_net_type'
15801 nm_so_opt='$nm_so_opt'
15802 nonxs_ext='$nonxs_ext'
15806 o_nonblock='$o_nonblock'
15808 old_pthread_create_joinable='$old_pthread_create_joinable'
15809 optimize='$optimize'
15810 orderlib='$orderlib'
15813 otherlibdirs='$otherlibdirs'
15817 patchlevel='$patchlevel'
15818 path_sep='$path_sep'
15821 perladmin='$perladmin'
15822 perlpath='$perlpath'
15824 phostname='$phostname'
15827 pm_apiversion='$pm_apiversion'
15831 prefixexp='$prefixexp'
15833 privlibexp='$privlibexp'
15834 prototype='$prototype'
15836 quadkind='$quadkind'
15837 quadtype='$quadtype'
15838 randbits='$randbits'
15839 randfunc='$randfunc'
15840 randseedtype='$randseedtype'
15842 rd_nodata='$rd_nodata'
15843 revision='$revision'
15847 sPRIEldbl='$sPRIEldbl'
15848 sPRIFldbl='$sPRIFldbl'
15849 sPRIGldbl='$sPRIGldbl'
15852 sPRIeldbl='$sPRIeldbl'
15853 sPRIfldbl='$sPRIfldbl'
15854 sPRIgldbl='$sPRIgldbl'
15859 sched_yield='$sched_yield'
15860 scriptdir='$scriptdir'
15861 scriptdirexp='$scriptdirexp'
15863 seedfunc='$seedfunc'
15864 selectminbits='$selectminbits'
15865 selecttype='$selecttype'
15866 sendmail='$sendmail'
15869 sharpbang='$sharpbang'
15870 shmattype='$shmattype'
15871 shortsize='$shortsize'
15874 sig_count='$sig_count'
15875 sig_name='$sig_name'
15876 sig_name_init='$sig_name_init'
15878 sig_num_init='$sig_num_init'
15879 signal_t='$signal_t'
15880 sitearch='$sitearch'
15881 sitearchexp='$sitearchexp'
15883 sitebinexp='$sitebinexp'
15885 sitelib_stem='$sitelib_stem'
15886 sitelibexp='$sitelibexp'
15887 siteprefix='$siteprefix'
15888 siteprefixexp='$siteprefixexp'
15889 sizesize='$sizesize'
15890 sizetype='$sizetype'
15895 sockethdr='$sockethdr'
15896 socketlib='$socketlib'
15897 socksizetype='$socksizetype'
15899 spackage='$spackage'
15900 spitshell='$spitshell'
15903 ssizetype='$ssizetype'
15904 startperl='$startperl'
15906 static_ext='$static_ext'
15908 stdio_base='$stdio_base'
15909 stdio_bufsiz='$stdio_bufsiz'
15910 stdio_cnt='$stdio_cnt'
15911 stdio_filbuf='$stdio_filbuf'
15912 stdio_ptr='$stdio_ptr'
15913 stdio_stream_array='$stdio_stream_array'
15916 subversion='$subversion'
15923 timeincl='$timeincl'
15924 timetype='$timetype'
15937 uidformat='$uidformat'
15943 uquadtype='$uquadtype'
15944 use5005threads='$use5005threads'
15945 use64bitall='$use64bitall'
15946 use64bitint='$use64bitint'
15948 useithreads='$useithreads'
15949 uselargefiles='$uselargefiles'
15950 uselongdouble='$uselongdouble'
15951 usemorebits='$usemorebits'
15952 usemultiplicity='$usemultiplicity'
15953 usemymalloc='$usemymalloc'
15955 useopcode='$useopcode'
15956 useperlio='$useperlio'
15957 useposix='$useposix'
15959 useshrplib='$useshrplib'
15960 usesocks='$usesocks'
15961 usethreads='$usethreads'
15962 usevendorprefix='$usevendorprefix'
15963 usevfork='$usevfork'
15966 uvoformat='$uvoformat'
15969 uvuformat='$uvuformat'
15970 uvxformat='$uvxformat'
15971 vendorarch='$vendorarch'
15972 vendorarchexp='$vendorarchexp'
15973 vendorbin='$vendorbin'
15974 vendorbinexp='$vendorbinexp'
15975 vendorlib='$vendorlib'
15976 vendorlib_stem='$vendorlib_stem'
15977 vendorlibexp='$vendorlibexp'
15978 vendorprefix='$vendorprefix'
15979 vendorprefixexp='$vendorprefixexp'
15982 voidflags='$voidflags'
15984 xs_apiversion='$xs_apiversion'
15989 : Add in command line options if available
15990 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15992 : add special variables
15993 $test -f $src/patchlevel.h && \
15994 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15995 echo "CONFIGDOTSH=true" >>config.sh
15997 : propagate old symbols
15998 if $test -f UU/config.sh; then
15999 <UU/config.sh sort | uniq >UU/oldconfig.sh
16000 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16001 sort | uniq -u >UU/oldsyms
16002 set X `cat UU/oldsyms`
16008 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16010 echo "# Variables propagated from previous config.sh file." >>config.sh
16011 for sym in `cat UU/oldsyms`; do
16012 echo " Propagating $hint variable "'$'"$sym..."
16013 eval 'tmp="$'"${sym}"'"'
16015 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16021 : Finish up by extracting the .SH files
16035 If you'd like to make any changes to the config.sh file before I begin
16036 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16039 rp="Press return or use a shell escape to edit config.sh:"
16044 *) : in case they cannot read
16045 sh 1>&4 -c "$ans";;
16050 : if this fails, just run all the .SH files by hand
16057 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16064 Now you need to generate make dependencies by running "$make depend".
16065 You might prefer to run it in background: "$make depend > makedepend.out &"
16066 It can take a while, so you might not want to run it right now.
16071 rp="Run $make depend now?"
16075 $make depend && echo "Now you must run a $make."
16078 echo "You must run '$make depend' then '$make'."
16081 elif test -f [Mm]akefile; then
16083 echo "Now you must run a $make."
16088 if $test -f Policy.sh; then
16091 If you compile $package on a different machine or from a different object
16092 directory, copy the Policy.sh file from this object directory to the
16093 new one before you run Configure -- this will help you with most of
16094 the policy defaults.
16098 if $test -f config.msg; then
16099 echo "Hmm. I also noted the following information while running:"
16101 $cat config.msg >&4
16104 $rm -f kit*isdone ark*isdone