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 Jun 15 04:00:58 EET DST 2001 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
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...
44 true || exec sh $0 $argv:q
46 (exit $?0) || cat c2$$
47 (exit $?0) || exec sh $0 $argv:q
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
476 d_old_pthread_create_joinable=''
477 old_pthread_create_joinable=''
565 d_stdio_ptr_lval_nochange_cnt=''
566 d_stdio_ptr_lval_sets_cnt=''
748 inc_version_list_init=''
767 ignore_versioned_solibs=''
826 d_perl_otherlibdirs=''
844 d_nv_preserves_uv_bits=''
943 d_stdio_stream_array=''
944 stdio_stream_array=''
954 ccflags_uselargefiles=''
955 ldflags_uselargefiles=''
956 libswanted_uselargefiles=''
1002 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1005 : We must find out about Eunice early
1007 if test -f /etc/unixtovms; then
1008 eunicefix=/etc/unixtovms
1010 if test -f /etc/unixtovms.exe; then
1011 eunicefix=/etc/unixtovms.exe
1018 : set useposix=false in your hint file to disable the POSIX extension.
1020 : set useopcode=false in your hint file to disable the Opcode extension.
1022 : Trailing extension. Override this in a hint file, if needed.
1024 : Extra object files, if any, needed on this platform.
1027 : Possible local include directories to search.
1028 : Set locincpth to "" in a hint file to defeat local include searches.
1029 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1030 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1032 : no include file wanted by default
1036 : change the next line if compiling for Xenix/286 on Xenix/386
1037 xlibpth='/usr/lib/386 /lib/386'
1038 : Possible local library directories to search.
1039 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1040 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1042 : general looking path for locating libraries
1043 glibpth="/lib /usr/lib $xlibpth"
1044 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1045 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1046 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1048 : Private path used by Configure to find libraries. Its value
1049 : is prepended to libpth. This variable takes care of special
1050 : machines, like the mips. Usually, it should be empty.
1053 : default library list
1055 : some systems want to use only the non-versioned libso:s
1056 ignore_versioned_solibs=''
1058 ccflags_uselargefiles=''
1059 ldflags_uselargefiles=''
1060 libswanted_uselargefiles=''
1061 : set usemultiplicity on the Configure command line to enable multiplicity.
1062 : set usesocks on the Configure command line to enable socks.
1063 : set usethreads on the Configure command line to enable threads.
1064 usereentrant='undef'
1065 : full support for void wanted by default
1068 : List of libraries we want.
1069 : If anyone needs -lnet, put it in a hint file.
1070 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1071 libswanted="$libswanted dld ld sun m c cposix posix"
1072 libswanted="$libswanted ndir dir crypt sec"
1073 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1074 : We probably want to search /usr/shlib before most other libraries.
1075 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1076 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1077 glibpth="/usr/shlib $glibpth"
1078 : Do not use vfork unless overridden by a hint file.
1081 : Find the basic shell for Bourne shell scripts
1085 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1088 if test -f "$xxx"; then
1091 : Build up a list and do a single loop so we can 'break' out.
1092 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1093 for xxx in sh bash ksh pdksh ash; do
1095 try="$try ${p}/${xxx}"
1099 if test -f "$xxx"; then
1102 elif test -f "$xxx.exe"; then
1113 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1115 Usually it's in /bin/sh. How did you even get this far?
1116 Please contact me (Perl Maintainers) at perlbug@perl.org and
1117 we'll try to straighten this all out.
1123 : see if sh knows # comments
1124 if `$sh -c '#' >/dev/null 2>&1`; then
1128 test -f $xcat || xcat=/usr/bin/cat
1129 echo "#!$xcat" >sharp
1133 if test -s today; then
1136 echo "#! $xcat" > sharp
1140 if test -s today; then
1148 echo "Your $sh doesn't grok # comments--I will strip them later on."
1151 echo "exec grep -v '^[ ]*#'" >spitshell
1153 $eunicefix spitshell
1154 spitshell=`pwd`/spitshell
1156 echo "I presume that if # doesn't work, #! won't work either!"
1161 : figure out how to guarantee sh startup
1163 '') startsh=${sharpbang}${sh} ;;
1175 : echo "Yup, it does."
1177 echo "Hmm... '$startsh' does not guarantee sh startup..."
1178 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1183 : Save command line options in file UU/cmdline.opt for later use in
1184 : generating config.sh.
1185 cat > cmdline.opt <<EOSH
1186 # Configure command line arguments.
1193 cat >>cmdline.opt <<EOSH
1194 config_arg$argn='$arg'
1196 argn=`expr $argn + 1`
1199 : produce awk script to parse command line options
1200 cat >options.awk <<'EOF'
1202 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1204 len = length(optstr);
1205 for (i = 1; i <= len; i++) {
1206 c = substr(optstr, i, 1);
1207 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1218 if (substr(str, 1, 1) != "-") {
1219 printf("'%s'\n", str);
1223 for (i = 2; i <= len; i++) {
1224 c = substr(str, i, 1);
1226 printf("-%s\n", substr(str, i));
1232 printf("'%s'\n", substr(str, i + 1));
1245 : process the command line options
1246 set X `for arg in "$@"; do echo "X$arg"; done |
1247 sed -e s/X// | awk -f options.awk`
1252 : set up default values
1262 rm -f optdef.sh posthint.sh
1263 cat >optdef.sh <<EOS
1269 while test $# -gt 0; do
1271 -d) shift; fastread=yes;;
1272 -e) shift; alldone=cont;;
1276 if test -r "$1"; then
1279 echo "$me: cannot read config file $1." >&2
1284 -h) shift; error=true;;
1285 -r) shift; reuseval=true;;
1286 -s) shift; silent=true; realsilent=true;;
1287 -E) shift; alldone=exit;;
1288 -K) shift; knowitall=true;;
1289 -O) shift; override=true;;
1290 -S) shift; silent=true; extractsh=true;;
1295 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1296 echo "$me: ignoring -D $1" >&2
1299 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1300 *) echo "$1='define'" >> optdef.sh;;
1307 *=) echo "$1" >> optdef.sh;;
1309 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1310 echo "$me: ignoring -U $1" >&2
1312 *) echo "$1='undef'" >> optdef.sh;;
1323 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1327 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1328 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1334 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1335 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1336 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1337 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1338 *) xxx=`echo $yyy|sed 's!:.*!!'`
1339 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1345 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1347 echo "$yyy=''" >> posthint.sh ;;
1352 echo "$yyy='$zzz'" >> posthint.sh ;;
1354 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1356 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1361 echo "$yyy=$zzz" >> posthint.sh ;;
1362 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1366 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1369 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1377 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1378 [-U symbol] [-U symbol=] [-A command:symbol...]
1379 -d : use defaults for all answers.
1380 -e : go on without questioning past the production of config.sh.
1381 -f : specify an alternate default configuration file.
1382 -h : print this help message and exit (with an error status).
1383 -r : reuse C symbols value if possible (skips costly nm extraction).
1384 -s : silent mode, only echoes questions and essential information.
1385 -D : define symbol to have some value:
1386 -D symbol symbol gets the value 'define'
1387 -D symbol=value symbol gets the value 'value'
1388 -E : stop at the end of questions, after having produced config.sh.
1389 -K : do not use unless you know what you are doing.
1390 -O : let -D and -U override definitions from loaded configuration file.
1391 -S : perform variable substitutions on all .SH files (can mix with -f)
1392 -U : undefine symbol:
1393 -U symbol symbol gets the value 'undef'
1394 -U symbol= symbol gets completely empty
1395 -A : manipulate symbol after the platform specific hints have been applied:
1396 -A symbol=value append " "value to symbol
1397 -A append:symbol=value append value to symbol
1398 -A define:symbol=value define symbol to have value
1399 -A clear:symbol define symbol to be ''
1400 -A define:symbol define symbol to be 'define'
1401 -A eval:symbol=value define symbol to be eval of value
1402 -A prepend:symbol=value prepend value to symbol
1403 -A undef:symbol define symbol to be 'undef'
1404 -A undef:symbol= define symbol to be ''
1405 -V : print version number and exit (with a zero status).
1412 case "$fastread$alldone" in
1415 case "$extractsh" in
1418 if test ! -t 0; then
1419 echo "Say 'sh Configure', not 'sh <Configure'"
1429 true) exec 1>/dev/null;;
1432 : run the defines and the undefines, if any, but leave the file out there...
1435 : create the posthint manipulation script and leave the file out there...
1440 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1441 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1442 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1443 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1444 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1447 : Some greps do not return status, grrr.
1448 echo "grimblepritz" >grimble
1449 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1451 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1457 : the following should work in any shell
1461 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1462 cat >contains <<'EOSS'
1463 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1468 : Find the path to the source tree
1471 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1475 *) src=`cd ../$src && pwd` ;;
1488 if test -f $rsrc/Configure && \
1489 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1491 : found it, so we are ok.
1494 for src in . .. ../.. ../../.. ../../../..; do
1495 if test -f ../$src/Configure && \
1496 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1507 Sorry, I can't seem to locate the source dir for $package. Please start
1508 Configure with an explicit path -- i.e. /some/path/Configure.
1516 echo "Sources for $package found in \"$src\"." >&4
1520 : script used to extract .SH files with variable substitutions
1521 cat >extract <<'EOS'
1523 echo "Doing variable substitutions on .SH files..."
1524 if test -f MANIFEST; then
1525 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1527 echo "(Looking for .SH files under the source directory.)"
1528 set x `(cd $src; find . -name "*.SH" -print)`
1532 0) set x `(cd $src; echo *.SH)`; shift;;
1534 if test ! -f $src/$1; then
1540 while test $name; do
1541 if test ! -d "$name"; then
1542 create="$name $create";
1543 name=`echo $name | sed -e "s|^[^/]*$||"`;
1544 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1549 for file in $create; do
1558 dir=`expr X$file : 'X\(.*\)/'`
1559 file=`expr X$file : 'X.*/\(.*\)'`
1560 (cd $dir && . ./$file)
1570 dir=`expr X$file : 'X\(.*\)/'`
1571 file=`expr X$file : 'X.*/\(.*\)'`
1572 (set x $dir; shift; eval $mkdir_p)
1582 if test -f $src/config_h.SH; then
1583 if test ! -f config.h; then
1584 : oops, they left it out of MANIFEST, probably, so do it anyway.
1590 : extract files and exit if asked to do so
1591 case "$extractsh" in
1593 case "$realsilent" in
1597 case "$config_sh" in
1598 '') config_sh='config.sh';;
1601 echo "Fetching answers from $config_sh..."
1604 test "$override" && . ./optdef.sh
1608 echo "Extraction done."
1613 : Eunice requires " " instead of "", can you believe it
1616 echo "Beginning of configuration questions for $package."
1618 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1620 : first determine how to suppress newline on echo command
1622 echo "Checking echo to see how to suppress newlines..."
1623 (echo "hi there\c" ; echo " ") >.echotmp
1624 if $contains c .echotmp >/dev/null 2>&1 ; then
1635 echo $n "The star should be here-->$c"
1639 : Now test for existence of everything in MANIFEST
1641 if test -f $rsrc/MANIFEST; then
1642 echo "First let's make sure your kit is complete. Checking..." >&4
1643 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1646 for filelist in x??; do
1647 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1649 if test -s missing; then
1653 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1655 You have the option of continuing the configuration process, despite the
1656 distinct possibility that your kit is damaged, by typing 'y'es. If you
1657 do, don't blame me if something goes wrong. I advise you to type 'n'o
1658 and contact the author (perlbug@perl.org).
1661 echo $n "Continue? [n] $c" >&4
1665 echo "Continuing..." >&4
1669 echo "ABORTING..." >&4
1674 echo "Looks good..."
1677 echo "There is no MANIFEST file. I hope your kit is complete !"
1682 : Find the appropriate value for a newline for tr
1683 if test -n "$DJGPP"; then
1686 if test X"$trnl" = X; then
1687 case "`echo foo|tr '\n' x 2>/dev/null`" in
1691 if test X"$trnl" = X; then
1692 case "`echo foo|tr '\012' x 2>/dev/null`" in
1693 foox) trnl='\012' ;;
1696 if test X"$trnl" = X; then
1699 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1705 : compute the number of columns on the terminal for proper question formatting
1710 : set up the echo used in my read
1711 myecho="case \"\$xxxm\" in
1712 '') echo $n \"\$rp $c\" >&4;;
1714 '') echo $n \"[\$xxxm] $c\";;
1716 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1718 echo $n \"[\$xxxm] $c\" >&4
1720 echo $n \"\$rp [\$xxxm] $c\" >&4
1726 : now set up to do reads with possible shell escape and default assignment
1732 case "\$fastread" in
1733 yes) case "\$dflt" in
1736 case "\$silent-\$rp" in
1741 *) case "\$silent" in
1742 true) case "\$rp" in
1747 while expr "X\$ans" : "X!" >/dev/null; do
1751 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1759 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1768 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1773 echo "(OK, I'll run with -d after this question.)" >&4
1776 echo "*** Sorry, \$1 not supported yet." >&4
1786 echo "*** Substitution done -- please confirm."
1788 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1793 echo "*** Error -- try again."
1800 case "\$ans\$xxxm\$nostick" in
1812 : create .config dir to save info across Configure sessions
1813 test -d ../.config || mkdir ../.config
1814 cat >../.config/README <<EOF
1815 This directory created by Configure to save information that should
1816 persist across sessions for $package.
1818 You may safely delete it if you wish.
1821 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1823 $define|true|[yY]*) ;;
1824 *) case "$xversion" in
1827 *** WHOA THERE!!! ***
1829 This is an UNSTABLE DEVELOPMENT release.
1830 The version of this $package distribution is $xversion, that is, odd,
1831 (as opposed to even) and that signifies a development release.
1832 If you want a maintenance release, you want an even-numbered version.
1834 Do ***NOT*** install this into production use.
1835 Data corruption and crashes are possible.
1837 It is most seriously suggested that you do not continue any further
1838 unless you want to help in developing and debugging Perl.
1840 If you *still* want to build perl, you can answer 'y' now,
1841 or pass -Dusedevel to Configure.
1844 rp='Do you really want to continue?'
1848 [yY]) echo >&4 "Okay, continuing."
1849 usedevel="$define" ;;
1850 *) echo >&4 "Okay, bye."
1860 case "$versiononly" in
1861 '') versiononly="$define" ;;
1863 case "$installusrbinperl" in
1864 '') installusrbinperl="$undef" ;;
1869 : general instructions
1872 user=`(logname) 2>/dev/null`
1874 '') user=`whoami 2>&1`;;
1876 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1879 rp='Would you like to see the instructions?'
1890 This installation shell script will examine your system and ask you questions
1891 to determine how the perl5 package should be installed. If you get
1892 stuck on a question, you may use a ! shell escape to start a subshell or
1893 execute a command. Many of the questions will have default answers in square
1894 brackets; typing carriage return will give you the default.
1896 On some of the questions which ask for file or directory names you are allowed
1897 to use the ~name construct to specify the login directory belonging to "name",
1898 even if you don't have a shell which knows about that. Questions where this is
1899 allowed will be marked "(~name ok)".
1903 dflt='Type carriage return to continue'
1907 The prompter used in this script allows you to use shell variables and
1908 backticks in your answers. You may use $1, $2, etc... to refer to the words
1909 in the default answer, as if the default line was a set of arguments given to a
1910 script shell. This means you may also use $* to repeat the whole default line,
1911 so you do not have to re-type everything to add something to the default.
1913 Everytime there is a substitution, you will have to confirm. If there is an
1914 error (e.g. an unmatched backtick), the default answer will remain unchanged
1915 and you will be prompted again.
1917 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1918 the questions and use the computed defaults (or the previous answers if there
1919 was already a config.sh file). Type 'Configure -h' for a list of options.
1920 You may also start interactively and then answer '& -d' at any prompt to turn
1921 on the non-interactive behaviour for the remainder of the execution.
1927 Much effort has been expended to ensure that this shell script will run on any
1928 Unix system. If despite that it blows up on yours, your best bet is to edit
1929 Configure and run it again. If you can't run Configure for some reason,
1930 you'll have to generate a config.sh file by hand. Whatever problems you
1931 have, let me (perlbug@perl.org) know how I blew it.
1933 This installation script affects things in two ways:
1935 1) it may do direct variable substitutions on some of the files included
1937 2) it builds a config.h file for inclusion in C programs. You may edit
1938 any of these files as the need arises after running this script.
1940 If you make a mistake on a question, there is no easy way to back up to it
1941 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1942 files. Configure will offer to let you do this before it runs the SH files.
1945 dflt='Type carriage return to continue'
1947 case "$firsttime" in
1948 true) echo $user >>../.config/instruct;;
1952 : find out where common programs are
1954 echo "Locating common programs..." >&4
1967 if test -d \$dir/\$thing; then
1973 for thisthing in \$dir/\$thing; do
1974 : just loop through to pick last item
1976 if test -f \$thisthing; then
1979 elif test -f \$dir/\$thing.exe; then
1980 if test -n "$DJGPP"; then
1981 echo \$dir/\$thing.exe
1983 : on Eunice apparently
2034 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2035 pth="$pth /lib /usr/lib"
2036 for file in $loclist; do
2040 if test -f "$xxx"; then
2043 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2044 xxx=`./loc $file $file $pth`
2047 '') xxx=`./loc $file $file $pth`;;
2048 *) xxx=`./loc $xxx $xxx $pth`;;
2054 echo $file is in $xxx.
2057 echo $file is in $xxx.
2060 echo "I don't know where '$file' is, and my life depends on it." >&4
2061 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2067 echo "Don't worry if any of the following aren't found..."
2069 for file in $trylist; do
2073 if test -f "$xxx"; then
2076 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2077 xxx=`./loc $file $file $pth`
2080 '') xxx=`./loc $file $file $pth`;;
2081 *) xxx=`./loc $xxx $xxx $pth`;;
2087 echo $file is in $xxx.
2090 echo $file is in $xxx.
2093 echo "I don't see $file out there, $say."
2100 echo "Substituting grep for egrep."
2106 echo "Substituting cp for ln."
2112 echo "Hopefully test is built into your sh."
2115 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2116 echo "Using the test built into your sh."
2124 echo "Hopefully echo is built into your sh."
2129 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2130 $echo $n "hi there$c" >foo1
2131 echo $n "hi there$c" >foo2
2132 if cmp foo1 foo2 >/dev/null 2>&1; then
2133 echo "They are compatible. In fact, they may be identical."
2140 They are not compatible! You are probably running ksh on a non-USG system.
2141 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2142 have echo built in and we may have to run some Bourne shell scripts. That
2143 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2146 $echo $n "The star should be here-->$c"
2156 cat <<'EOSC' >>checkcc
2161 int main(int argc, char *argv[]) {
2165 if $cc -o try $ccflags $ldflags try.c; then
2168 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2174 case "`$cc -v -c try.c 2>&1`" in
2177 if $test X"$trygcc" = Xyes; then
2178 if gcc -o try -c try.c; then
2180 echo "You seem to have a working gcc, though." >&4
2181 rp="Would you like to use it?"
2183 if $test -f myread; then
2186 if $test -f UU/myread; then
2189 echo "Cannot find myread, sorry. Aborting." >&2
2194 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2198 if $test X"$despair" = Xyes; then
2200 You need to find a working C compiler.
2201 Either (purchase and) install the C compiler supplied by your OS vendor,
2202 or for a free C compiler try http://gcc.gnu.org/
2203 I cannot continue any further, aborting.
2213 : determine whether symbolic links are supported
2216 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2217 echo "Symbolic links are supported." >&4
2220 echo "Symbolic links are NOT supported." >&4
2225 : determine whether symbolic links are supported
2229 echo "Checking how to test for symbolic links..." >&4
2231 if $test "X$issymlink" = X; then
2232 sh -c "PATH= test -h sym" >/dev/null 2>&1
2233 if test $? = 0; then
2237 if $test "X$issymlink" = X; then
2238 if $test -h >/dev/null 2>&1; then
2239 issymlink="$test -h"
2240 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2243 if $test "X$issymlink" = X; then
2244 if $test -L sym 2>/dev/null; then
2245 issymlink="$test -L"
2248 if $test "X$issymlink" != X; then
2249 echo "You can test for symbolic links with '$issymlink'." >&4
2251 echo "I do not know how you can test for symbolic links." >&4
2255 *) echo "No symbolic links, so not testing for their testing..." >&4
2261 case "$mksymlinks" in
2264 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2267 *) case "$lns:$issymlink" in
2268 *"ln -s:"*"test -"?)
2269 echo "Creating the symbolic links..." >&4
2270 echo "(First creating the subdirectories...)" >&4
2272 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2274 test -z "$directory" && break
2278 if test ! -d t/base; then
2279 echo "Failed to create the subdirectories. Aborting." >&4
2282 echo "(Then creating the symlinks...)" >&4
2283 awk '{print $1}' $src/MANIFEST | while true; do
2285 test -z "$filename" && break
2286 if test -f $filename; then
2287 if $issymlink $filename; then
2291 if test -f $filename; then
2292 echo "$filename already exists, not symlinking."
2294 ln -s $src/$filename $filename
2298 if test ! -f t/base/commonsense.t; then
2299 echo "Failed to create the symlinks. Aborting." >&4
2304 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2313 case "$usecrosscompile" in
2317 *-*-gcc) # A cross-compiling gcc, probably.
2318 targetarch=`echo $cc|sed 's/-gcc$//'`
2320 # leave out ld, choosing it is more complex
2322 ranlib=$targetarch-ranlib
2325 case "$targetarch" in
2326 '') echo "Cross-compiling: you should define targetarch." >&4; croak=y ;;
2329 '') echo "Cross-compiling: you should define usrinc." >&4; croak=y ;;
2332 '') echo "Cross-compiling: you should define incpth." >&4; croak=y ;;
2335 '') echo "Cross-compiling: you should define libpth." >&4; croak=y ;;
2337 case "$targethost" in
2338 '') echo "Cross-compiling: targethost not defined." >&4; croak=y ;;
2340 case "$targetdir" in
2341 '') echo "Cross compiling: targetdir not defined." >&4; croak=y ;;
2349 /*) run=$src/Cross/run
2351 from=$src/Cross/from
2353 *) pwd=`test -f ../Configure & cd ..; pwd`
2356 from=$pwd/Cross/from
2359 case "$targetrun" in
2360 '') targetrun=ssh ;;
2365 case "$targetfrom" in
2366 '') targetfrom=scp ;;
2370 from=$from-$targetfrom
2371 case "$targetuser" in
2372 '') targetuser=root ;;
2374 case "$targetfrom" in
2378 case "$targetrun" in
2385 $targetrun -l $targetuser $targethost "cd $targetdir && ./\$exe \$@"
2388 *) echo "Cross-compiling: unknown targetrun '$targetrun'" >&4
2398 $targetto $q \$f $targetuser@$targethost:$targetdir/. || exit 1
2408 *) echo "Cross-compiling: unknown targetto '$targetto'" >&4
2412 case "$targetfrom" in
2418 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2423 cp) cat >$from <<EOF
2427 cp $targetdir/\$f . || exit 1
2432 *) echo "Cross-compiling: unknown targetfrom '$targetfrom'" >&4
2436 if test ! -f $run; then
2437 echo "Cross-compiling: target 'run' script '$run' not found." >&4
2441 if test ! -f $to; then
2442 echo "Cross-compiling: target 'to' script '$to' not found." >&4
2446 if test ! -f $from; then
2447 echo "Cross-compiling: target 'from' script '$from' not found." >&4
2451 if test ! -f $run -o ! -f $to -o ! -f $from; then
2455 Cross-compiling: Using
2464 usecrosscompile='undef'
2469 : see whether [:lower:] and [:upper:] are supported character classes
2471 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2473 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2477 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2478 # (0xc9 and 0xd1), therefore that is a nice testing point.
2479 if test "X$up" = X -o "X$low" = X; then
2480 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2486 if test "X$up" = X -o "X$low" = X; then
2487 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2493 if test "X$up" = X -o "X$low" = X; then
2494 case "`echo IJ | od -x 2>/dev/null`" in
2496 echo "Hey, this might be EBCDIC." >&4
2497 if test "X$up" = X -o "X$low" = X; then
2498 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2499 ij) up='[A-IJ-RS-Z]'
2504 if test "X$up" = X -o "X$low" = X; then
2505 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2515 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2517 echo "Using $up and $low to convert case." >&4
2520 echo "I don't know how to translate letters from upper to lower case." >&4
2521 echo "Your tr is not acting any way I know of." >&4
2525 : set up the translation script tr, must be called with ./tr of course
2529 '[A-Z][a-z]') exec $tr '$up' '$low';;
2530 '[a-z][A-Z]') exec $tr '$low' '$up';;
2537 : Try to determine whether config.sh was made on this system
2538 case "$config_sh" in
2540 myuname=`$uname -a 2>/dev/null`
2541 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2542 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2543 # because the A-Z/a-z are not consecutive.
2544 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2545 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2546 newmyuname="$myuname"
2548 case "$knowitall" in
2550 if test -f ../config.sh; then
2551 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2552 eval "`grep myuname= ../config.sh`"
2554 if test "X$myuname" = "X$newmyuname"; then
2562 : Get old answers from old config file if Configure was run on the
2563 : same system, otherwise use the hints.
2566 if test -f config.sh; then
2568 rp="I see a config.sh file. Shall I use it to set the defaults?"
2571 n*|N*) echo "OK, I'll ignore it."
2572 mv config.sh config.sh.old
2573 myuname="$newmyuname"
2575 *) echo "Fetching default answers from your old config.sh file..." >&4
2583 : Older versions did not always set $sh. Catch re-use of such
2593 if test ! -f config.sh; then
2596 First time through, eh? I have some defaults handy for some systems
2597 that need some extra help getting the Configure answers right:
2600 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2602 : Half the following guesses are probably wrong... If you have better
2603 : tests or hints, please send them to perlbug@perl.org
2604 : The metaconfig authors would also appreciate a copy...
2605 $test -f /irix && osname=irix
2606 $test -f /xenix && osname=sco_xenix
2607 $test -f /dynix && osname=dynix
2608 $test -f /dnix && osname=dnix
2609 $test -f /lynx.os && osname=lynxos
2610 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2611 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2612 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2613 $test -f /bin/mips && /bin/mips && osname=mips
2614 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2615 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2616 $test -d /usr/apollo/bin && osname=apollo
2617 $test -f /etc/saf/_sactab && osname=svr4
2618 $test -d /usr/include/minix && osname=minix
2619 if $test -d /MachTen -o -d /MachTen_Folder; then
2621 if $test -x /sbin/version; then
2622 osvers=`/sbin/version | $awk '{print $2}' |
2623 $sed -e 's/[A-Za-z]$//'`
2624 elif $test -x /usr/etc/version; then
2625 osvers=`/usr/etc/version | $awk '{print $2}' |
2626 $sed -e 's/[A-Za-z]$//'`
2632 $test -f /sys/posix.dll &&
2633 $test -f /usr/bin/what &&
2634 set X `/usr/bin/what /sys/posix.dll` &&
2635 $test "$3" = UWIN &&
2639 if $test -f $uname; then
2647 umips) osname=umips ;;
2650 [23]100) osname=mips ;;
2651 next*) osname=next ;;
2653 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2654 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2657 elif $test -f /etc/kconfig; then
2659 if test "$lns" = "$ln -s"; then
2661 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2663 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2670 if test -n "$DJGPP"; then
2679 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2681 'not found') osvers="$4"."$3" ;;
2682 '<3240'|'<>3240') osvers=3.2.0 ;;
2683 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2684 '=3250'|'>3250') osvers=3.2.5 ;;
2688 bsd386) osname=bsd386
2691 cygwin*) osname=cygwin
2694 *dc.osx) osname=dcosx
2700 domainos) osname=apollo
2706 dynixptx*) osname=dynixptx
2707 osvers=`echo "$4"|sed 's/^v//'`
2709 freebsd) osname=freebsd
2711 genix) osname=genix ;;
2713 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2729 netbsd*) osname=netbsd
2732 news-os) osvers="$3"
2734 4*) osname=newsos4 ;;
2738 next*) osname=next ;;
2739 nonstop-ux) osname=nonstopux ;;
2740 POSIX-BC | posix-bc ) osname=posix-bc
2743 powerux | power_ux | powermax_os | powermaxos | \
2744 powerunix | power_unix) osname=powerux
2750 solaris) osname=solaris
2752 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2759 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2763 titanos) osname=titanos
2772 ultrix) osname=ultrix
2775 osf1|mls+) case "$5" in
2778 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2781 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2784 hp*) osname=hp_osf1 ;;
2785 mips) osname=mips_osf1 ;;
2788 unixware) osname=svr5
2794 $2) case "$osname" in
2798 : svr4.x or possibly later
2808 if test -f /stand/boot ; then
2809 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2810 if test -n "$INITPROG" -a -f "$INITPROG"; then
2811 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2812 if test -n "$isesix"; then
2820 *) if test -f /etc/systemid; then
2822 set `echo $3 | $sed 's/\./ /g'` $4
2823 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2825 elif $test -f $src/hints/sco_$1_$2.sh; then
2827 elif $test -f $src/hints/sco_$1.sh; then
2832 '') : Still unknown. Probably a generic Sys V.
2841 *) case "$osname" in
2842 '') : Still unknown. Probably a generic BSD.
2850 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2851 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2852 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2855 $rm -f UU/kernel.what
2856 elif test -d c:/.; then
2863 case "$targetarch" in
2866 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2871 : Now look for a hint file osname_osvers, unless one has been
2872 : specified already.
2875 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2876 : Also try without trailing minor version numbers.
2877 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2878 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2879 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2880 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2883 *) case "$osvers" in
2886 *) if $test -f $src/hints/$file.sh ; then
2888 elif $test -f $src/hints/$xfile.sh ; then
2890 elif $test -f $src/hints/$xxfile.sh ; then
2892 elif $test -f $src/hints/$xxxfile.sh ; then
2894 elif $test -f $src/hints/$xxxxfile.sh ; then
2896 elif $test -f "$src/hints/${osname}.sh" ; then
2905 if $test -f Policy.sh ; then
2908 none) dflt="Policy" ;;
2909 *) dflt="Policy $dflt" ;;
2914 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2918 if $test -f Policy.sh ; then
2921 There's also a Policy hint file available, which should make the
2922 site-specific (policy) questions easier to answer.
2929 You may give one or more space-separated answers, or "none" if appropriate.
2930 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2931 is a good thing. DO NOT give a wrong version or a wrong OS.
2935 rp="Which of these apply, if any?"
2938 for file in $tans; do
2939 if $test X$file = XPolicy -a -f Policy.sh; then
2941 $cat Policy.sh >> UU/config.sh
2942 elif $test -f $src/hints/$file.sh; then
2943 . $src/hints/$file.sh
2944 $cat $src/hints/$file.sh >> UU/config.sh
2945 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
2948 : Give one chance to correct a possible typo.
2949 echo "$file.sh does not exist"
2951 rp="hint to use instead?"
2953 for file in $ans; do
2954 if $test -f "$src/hints/$file.sh"; then
2955 . $src/hints/$file.sh
2956 $cat $src/hints/$file.sh >> UU/config.sh
2957 elif $test X$ans = X -o X$ans = Xnone ; then
2960 echo "$file.sh does not exist -- ignored."
2967 : Remember our hint file for later.
2968 if $test -f "$src/hints/$file.sh" ; then
2978 echo "Fetching default answers from $config_sh..." >&4
2982 cp $config_sh config.sh 2>/dev/null
2992 test "$override" && . ./optdef.sh
2994 : Restore computed paths
2995 for file in $loclist $trylist; do
2996 eval $file="\$_$file"
3001 Configure uses the operating system name and version to set some defaults.
3002 The default value is probably right if the name rings a bell. Otherwise,
3003 since spelling matters for me, either accept the default or answer "none"
3010 ''|' '|none) dflt=none ;;
3011 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3014 *) dflt="$osname" ;;
3016 rp="Operating system name?"
3020 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3026 ''|' '|none) dflt=none ;;
3027 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3028 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3030 ''|' ') dflt=none ;;
3035 *) dflt="$osvers" ;;
3037 rp="Operating system version?"
3047 : who configured the system
3048 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3049 cf_by=`(logname) 2>/dev/null`
3052 cf_by=`(whoami) 2>/dev/null`
3054 "") cf_by=unknown ;;
3058 : set up the script used to warn in case of inconsistency
3065 echo "*** WHOA THERE!!! ***" >&4
3066 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3067 rp=" Keep the $hint value?"
3070 y) td=$was; tu=$was;;
3074 : function used to set $1 to $val
3075 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3077 $define$undef) . ./whoa; eval "$var=\$td";;
3078 $undef$define) . ./whoa; eval "$var=\$tu";;
3079 *) eval "$var=$val";;
3082 case "$usethreads" in
3083 $define|true|[yY]*) dflt='y';;
3088 Perl can be built to take advantage of threads on some systems.
3089 To do so, Configure can be run with -Dusethreads.
3091 Note that threading is a highly experimental feature, and
3092 some known race conditions still remain. If you choose to try
3093 it, be very sure to not actually deploy it for production
3094 purposes. README.threads has more details, and is required
3095 reading if you enable threads.
3097 If this doesn't make any sense to you, just accept the default '$dflt'.
3099 rp='Build a threading Perl?'
3102 y|Y) val="$define" ;;
3108 case "$usethreads" in
3112 As of 5.5.640, Perl has two different internal threading implementations,
3113 the 5.005 version (5005threads) and an interpreter-based version
3114 (ithreads) that has one interpreter per thread. Both are very
3115 experimental. This arrangement exists to help developers work out
3116 which one is better.
3118 If you're a casual user, you probably don't want interpreter-threads
3119 at this time. There doesn't yet exist a way to create threads from
3120 within Perl in this model, i.e., "use Thread;" will NOT work.
3122 : Default to ithreads unless overridden on command line or with
3125 case "$use5005threads" in
3126 $define|true|[yY]*) dflt='n';;
3128 case "$useithreads" in
3129 $undef|false|[nN]*) dflt='n';;
3131 rp='Use interpreter-based ithreads?'
3134 y|Y) val="$define" ;;
3139 : Now set use5005threads to the opposite value.
3140 case "$useithreads" in
3141 $define) val="$undef" ;;
3148 useithreads="$undef"
3149 use5005threads="$undef"
3153 case "$useithreads$use5005threads" in
3157 You cannot have both the ithreads and the 5.005 threads enabled
3158 at the same time. Disabling the 5.005 threads since they are
3159 much less stable than the ithreads.
3162 use5005threads="$undef"
3166 case "$d_oldpthreads" in
3167 '') : Configure tests would be welcome here. For now, assume undef.
3169 *) val="$d_oldpthreads" ;;
3175 case "$usethreads" in
3176 "$define"|true|[yY]*)
3177 : Look for a hint-file generated 'call-back-unit'. If the
3178 : user has specified that a threading perl is to be built,
3179 : we may need to set or change some other defaults.
3180 if $test -f usethreads.cbu; then
3181 echo "Your platform has some specific hints for threaded builds, using them..."
3185 (Your platform doesn't have any specific hints for threaded builds.
3186 Assuming POSIX threads, then.)
3194 Perl can be built so that multiple Perl interpreters can coexist
3195 within the same Perl executable.
3198 case "$useithreads" in
3201 This multiple interpreter support is required for interpreter-based threads.
3205 *) case "$usemultiplicity" in
3206 $define|true|[yY]*) dflt='y';;
3210 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3211 rp='Build Perl for multiplicity?'
3214 y|Y) val="$define" ;;
3222 : make some quick guesses about what we are up against
3224 $echo $n "Hmm... $c"
3234 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3235 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3237 echo "Looks kind of like an OSF/1 system, but we'll see..."
3239 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3240 xxx=`./loc addbib blurfl $pth`
3241 if $test -f $xxx; then
3242 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3246 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3247 echo "Looks kind of like an extended USG system, but we'll see..."
3249 echo "Looks kind of like a USG system, but we'll see..."
3253 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3254 echo "Looks kind of like a BSD system, but we'll see..."
3258 echo "Looks kind of like a Version 7 system, but we'll see..."
3261 case "$eunicefix" in
3264 There is, however, a strange, musty smell in the air that reminds me of
3265 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3269 : it so happens the Eunice I know will not run shell scripts in Unix format
3273 echo "Congratulations. You aren't running Eunice."
3277 : Detect OS2. The p_ variable is set above in the Head.U unit.
3278 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3279 : semicolon as a patch separator
3284 I have the feeling something is not exactly right, however...don't tell me...
3285 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3286 (Or you may be running DOS with DJGPP.)
3291 if test -f /xenix; then
3292 echo "Actually, this looks more like a XENIX system..."
3297 echo "It's not Xenix..."
3302 if test -f /venix; then
3303 echo "Actually, this looks more like a VENIX system..."
3310 echo "Nor is it Venix..."
3313 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3314 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3321 rp="Use which C compiler?"
3324 : Look for a hint-file generated 'call-back-unit'. Now that the
3325 : user has specified the compiler, we may need to set or change some
3327 if $test -f cc.cbu; then
3333 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3339 printf("%s\n", __VERSION__);
3341 printf("%s\n", "1");
3347 if $cc -o try $ccflags $ldflags try.c; then
3348 gccversion=`$run ./try`
3349 case "$gccversion" in
3350 '') echo "You are not using GNU cc." ;;
3351 *) echo "You are using GNU cc $gccversion."
3357 echo "*** WHOA THERE!!! ***" >&4
3358 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3359 case "$knowitall" in
3361 echo " You'd better start hunting for one and let me know about it." >&4
3367 case "$gccversion" in
3368 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3370 case "$gccversion" in
3371 '') gccosandvers='' ;;
3372 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3373 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3375 case "$gccosandvers" in
3376 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3377 $osname$osvers) ;; # looking good
3378 $osname*) cat <<EOM >&4
3380 *** WHOA THERE!!! ***
3382 Your gcc has not been compiled for the exact release of
3383 your operating system ($gccosandvers versus $osname$osvers).
3385 In general it is a good idea to keep gcc synchronized with
3386 the operating system because otherwise serious problems
3387 may ensue when trying to compile software, like Perl.
3389 I'm trying to be optimistic here, though, and will continue.
3390 If later during the configuration and build icky compilation
3391 problems appear (headerfile conflicts being the most common
3392 manifestation), I suggest reinstalling the gcc to match
3393 your operating system release.
3397 *) gccosandvers='' ;; # failed to parse, better be silent
3405 case "$gccversion" in
3407 *) case "$ccflags" in
3409 *) ccflags="$ccflags -Wall" ;;
3414 : see how we invoke the C preprocessor
3416 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3417 cat <<'EOT' >testcpp.c
3423 if test ! -f cppstdin; then
3424 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3425 # AIX cc -E doesn't show the absolute headerfile
3426 # locations but we'll cheat by using the -M flag.
3427 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
3429 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3432 echo "Keeping your $hint cppstdin wrapper."
3435 wrapper=`pwd`/cppstdin
3439 if $test "X$cppstdin" != "X" && \
3440 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3441 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3443 echo "You used to use $cppstdin $cppminus so we'll use that again."
3445 '') echo "But let's see if we can live without a wrapper..." ;;
3447 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3448 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3450 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3453 echo "(However, $cpprun $cpplast does not work, let's see...)"
3461 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3468 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3469 $cc -E <testcpp.c >testcpp.out 2>&1; \
3470 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3471 echo "Yup, it does."
3474 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3475 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3476 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3477 echo "Yup, it does."
3480 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3481 $cc -P <testcpp.c >testcpp.out 2>&1; \
3482 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3483 echo "Yipee, that works!"
3486 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3487 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3488 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3489 echo "At long last!"
3492 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3493 $cpp <testcpp.c >testcpp.out 2>&1; \
3494 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3498 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3499 $cpp - <testcpp.c >testcpp.out 2>&1; \
3500 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3501 echo "Hooray, it works! I was beginning to wonder."
3504 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3505 $wrapper <testcpp.c >testcpp.out 2>&1; \
3506 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3512 rp="No dice. I can't find a C preprocessor. Name one:"
3516 $x_cpp <testcpp.c >testcpp.out 2>&1
3517 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3518 echo "OK, that will do." >&4
3520 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3535 echo "Perhaps can we force $cc -E using a wrapper..."
3536 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3537 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3543 echo "Nope, we'll have to live without it..."
3557 "$wrapper"|'cppstdin') ;;
3558 *) $rm -f $wrapper;;
3560 $rm -f testcpp.c testcpp.out
3562 : decide how portable to be. Allow command line overrides.
3563 case "$d_portable" in
3565 *) d_portable="$define" ;;
3568 : set up shell script to do ~ expansion
3574 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3577 if $test -f /bin/csh; then
3578 /bin/csh -f -c "glob \$1"
3583 name=\`$expr x\$1 : '..\([^/]*\)'\`
3584 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3585 if $test ! -d "\$dir"; then
3587 echo "\$me: can't locate home directory for: \$name" >&2
3592 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3608 : now set up to get a file name
3612 cat <<'EOSC' >>getfile
3628 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3629 fn=`echo $fn | sed 's/(.*)//'`
3635 loc_file=`expr $fn : '.*:\(.*\)'`
3636 fn=`expr $fn : '\(.*\):.*'`
3644 */*) fullpath=true;;
3653 *e*) exp_file=true;;
3656 *p*) nopath_ok=true;;
3661 *d*) type='Directory';;
3662 *l*) type='Locate';;
3667 Locate) what='File';;
3672 case "$d_portable" in
3680 while test "$type"; do
3685 true) rp="$rp (~name ok)";;
3688 if test -f UU/getfile.ok && \
3689 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3708 value=`UU/filexp $ans`
3711 if test "$ans" != "$value"; then
3712 echo "(That expands to $value on this system.)"
3726 /*) value="$ansexp" ;;
3727 [a-zA-Z]:/*) value="$ansexp" ;;
3732 echo "I shall only accept a full path name, as in /bin/ls." >&4
3733 echo "Use a ! shell escape if you wish to check pathnames." >&4
3736 echo "Please give a full path name, starting with slash." >&4
3739 echo "Note that using ~name is ok provided it expands well." >&4
3752 for fp in $gfpth; do
3753 if test "X$fp" = X.; then
3758 if test -f "$pf"; then
3760 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3762 echo "($value is not a plain file, but that's ok.)"
3765 if test X"$type" = X; then
3772 for fp in $gfpth; do
3773 if test "X$fp" = X.; then
3778 direxp="$fp/$ansexp"
3780 if test -d "$direxp"; then
3788 if test -d "$ansexp"; then
3789 echo "(Looking for $loc_file in directory $value.)"
3790 value="$value/$loc_file"
3791 ansexp="$ansexp/$loc_file"
3793 if test -f "$ansexp"; then
3796 case "$nopath_ok" in
3797 true) case "$value" in
3799 *) echo "Assuming $value will be in people's path."
3815 if test "$fastread" = yes; then
3820 rp="$what $value doesn't exist. Use that name anyway?"
3839 test "X$gfpthkeep" != Xy && gfpth=""
3842 : What should the include directory be ?
3844 $echo $n "Hmm... $c"
3848 if $test -f /bin/mips && /bin/mips; then
3849 echo "Looks like a MIPS system..."
3850 $cat >usr.c <<'EOCP'
3851 #ifdef SYSTYPE_BSD43
3855 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3856 dflt='/bsd43/usr/include'
3860 mips_type='System V'
3862 $rm -f usr.c usr.out
3863 echo "and you're compiling with the $mips_type compiler and libraries."
3867 echo "Doesn't look like a MIPS system."
3877 case "$xxx_prompt" in
3880 rp='Where are the include files you want to use?'
3888 : Set private lib path
3891 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3896 '') dlist="$loclibpth $plibpth $glibpth";;
3897 *) dlist="$libpth";;
3900 : Now check and see which directories actually exist, avoiding duplicates
3904 if $test -d $xxx; then
3907 *) libpth="$libpth $xxx";;
3913 Some systems have incompatible or broken versions of libraries. Among
3914 the directories listed in the question below, please remove any you
3915 know not to be holding relevant libraries, and add any that are needed.
3916 Say "none" for none.
3927 rp="Directories to use for library searches?"
3934 : compute shared library extension
3937 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3947 On some systems, shared libraries may be available. Answer 'none' if
3948 you want to suppress searching of shared libraries for the remainder
3949 of this configuration.
3952 rp='What is the file extension used for shared libraries?'
3956 : Define several unixisms.
3957 : Hints files or command line option can be used to override them.
3958 : The convoluted testing is in case hints files set either the old
3961 '') case "$exe_ext" in
3963 *) _exe="$exe_ext" ;;
3968 '') case "$lib_ext" in
3975 '') case "$obj_ext" in
3982 '') case "$path_sep" in
3993 : Which makefile gets called first. This is used by make depend.
3994 case "$firstmakefile" in
3995 '') firstmakefile='makefile';;
3999 $define|true|[yY]*) dflt='y';;
4004 Perl can be built to use the SOCKS proxy protocol library. To do so,
4005 Configure must be run with -Dusesocks. If you use SOCKS you also need
4006 to use the PerlIO abstraction layer, this will be implicitly selected.
4008 If this doesn't make any sense to you, just accept the default '$dflt'.
4010 rp='Build Perl for SOCKS?'
4013 y|Y) val="$define" ;;
4020 $define|true|[yY]*) useperlio="$define";;
4023 : Looking for optional libraries
4025 echo "Checking for optional libraries..." >&4
4030 case "$libswanted" in
4031 '') libswanted='c_s';;
4034 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4040 for thisdir in $libpth $xlibpth; do
4041 test -d $thisdir && libspath="$libspath $thisdir"
4043 for thislib in $libswanted; do
4044 for thisdir in $libspath; do
4046 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4047 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4048 $test -f "$xxx" && eval $libscheck
4049 $test -f "$xxx" && libstyle=shared
4051 if test ! -f "$xxx"; then
4052 xxx=$thisdir/lib$thislib.$so
4053 $test -f "$xxx" && eval $libscheck
4054 $test -f "$xxx" && libstyle=shared
4056 if test ! -f "$xxx"; then
4057 xxx=$thisdir/lib$thislib$_a
4058 $test -f "$xxx" && eval $libscheck
4059 $test -f "$xxx" && libstyle=static
4061 if test ! -f "$xxx"; then
4062 xxx=$thisdir/$thislib$_a
4063 $test -f "$xxx" && eval $libscheck
4064 $test -f "$xxx" && libstyle=static
4066 if test ! -f "$xxx"; then
4067 xxx=$thisdir/lib${thislib}_s$_a
4068 $test -f "$xxx" && eval $libscheck
4069 $test -f "$xxx" && libstyle=static
4070 $test -f "$xxx" && thislib=${thislib}_s
4072 if test ! -f "$xxx"; then
4073 xxx=$thisdir/Slib$thislib$_a
4074 $test -f "$xxx" && eval $libscheck
4075 $test -f "$xxx" && libstyle=static
4077 if $test -f "$xxx"; then
4079 shared) echo "Found -l$thislib (shared)." ;;
4080 static) echo "Found -l$thislib." ;;
4081 *) echo "Found -l$thislib ($libstyle)." ;;
4085 *) dflt="$dflt -l$thislib"
4086 libsfound="$libsfound $xxx"
4088 libsfiles="$libsfiles $yyy"
4089 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4090 case " $libsdirs " in
4092 *) libsdirs="$libsdirs $yyy" ;;
4099 if $test ! -f "$xxx"; then
4100 echo "No -l$thislib."
4111 ' '|'') dflt='none';;
4116 In order to compile $package on your machine, a number of libraries
4117 are usually needed. Include any other special libraries here as well.
4118 Say "none" for none. The default list is almost always right.
4122 rp="What libraries to use?"
4129 : determine optimization, if desired, or use for debug flag also
4131 ' '|$undef) dflt='none';;
4133 *) dflt="$optimize";;
4137 By default, $package compiles with the -O flag to use the optimizer.
4138 Alternately, you might want to use the symbolic debugger, which uses
4139 the -g flag (on traditional Unix systems). Either flag can be
4140 specified here. To use neither flag, specify the word "none".
4143 rp="What optimizer/debugger flag should be used?"
4147 'none') optimize=" ";;
4151 : We will not override a previous value, but we might want to
4152 : augment a hint file
4154 default|recommended)
4155 case "$gccversion" in
4156 1*) dflt='-fpcc-struct-return' ;;
4159 *-g*) dflt="$dflt -DDEBUGGING";;
4161 case "$gccversion" in
4162 2*) if test -d /etc/conf/kconfig.d &&
4163 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4169 case "$gccversion" in
4173 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4174 echo 'int main(void) { return 0; }' > gcctest.c
4175 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4176 echo "Yes, it does." 2>&1
4179 echo "Leaving current flags $ccflags alone." 2>&1
4181 *) dflt="$dflt -fno-strict-aliasing" ;;
4184 echo "Nope, it doesn't, but that's ok." 2>&1
4191 case "$mips_type" in
4192 *BSD*|'') inclwanted="$locincpth $usrinc";;
4193 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4195 for thisincl in $inclwanted; do
4196 if $test -d $thisincl; then
4197 if $test x$thisincl != x$usrinc; then
4199 *" -I$thisincl "*);;
4200 *) dflt="$dflt -I$thisincl ";;
4206 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4208 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4216 *) dflt="$dflt -D$2";;
4220 set signal.h LANGUAGE_C; eval $inctest
4224 ccflags="$ccflags -DSOCKS"
4229 default|recommended) dflt="$ccflags $dflt" ;;
4230 *) dflt="$ccflags";;
4239 Your C compiler may want other flags. For this question you should include
4240 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4241 but you should NOT include libraries or ld flags like -lwhatever. If you
4242 want $package to honor its debug switch, you should include -DDEBUGGING here.
4243 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4245 To use no flags, specify the word "none".
4251 rp="Any additional cc flags?"
4258 : the following weeds options from ccflags that are of no interest to cpp
4260 '') cppflags="$ccflags" ;;
4261 *) cppflags="$cppflags $ccflags" ;;
4263 case "$gccversion" in
4264 1*) cppflags="$cppflags -D__GNUC__"
4266 case "$mips_type" in
4268 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4274 echo "Let me guess what the preprocessor flags are..." >&4
4288 *) ftry="$previous $flag";;
4290 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4291 >cpp1.out 2>/dev/null && \
4292 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4293 >cpp2.out 2>/dev/null && \
4294 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4295 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4297 cppflags="$cppflags $ftry"
4307 *-*) echo "They appear to be: $cppflags";;
4309 $rm -f cpp.c cpp?.out
4313 : flags used in final linking phase
4315 '') if ./venix; then
4321 *-posix*) dflt="$dflt -posix" ;;
4324 *) dflt="$ldflags";;
4327 : Try to guess additional flags to pick up local libraries.
4328 for thislibdir in $libpth; do
4329 case " $loclibpth " in
4332 *"-L$thislibdir "*) ;;
4333 *) dflt="$dflt -L$thislibdir" ;;
4345 Your C linker may need flags. For this question you should
4346 include -L/whatever and any other flags used by the C linker, but you
4347 should NOT include libraries like -lwhatever.
4349 Make sure you include the appropriate -L/path flags if your C linker
4350 does not normally search all of the directories you specified above,
4353 To use no flags, specify the word "none".
4357 rp="Any additional ld flags (NOT including libraries)?"
4363 rmlist="$rmlist pdp11"
4367 echo "Checking your choice of C compiler and flags for coherency..." >&4
4368 $cat > try.c <<'EOF'
4370 int main() { printf("Ok\n"); exit(0); }
4372 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4374 $cat >try.msg <<'EOM'
4375 I've tried to compile and run the following simple program:
4378 $cat try.c >> try.msg
4380 $cat >> try.msg <<EOM
4387 and I got the following output:
4391 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4392 if $sh -c "$run ./try" >>try.msg 2>&1; then
4396 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4399 cat >> try.msg <<'EOQS'
4400 If $libs contains -lsfio, and sfio is mis-configured, then it
4401 sometimes (apparently) runs and exits with a 0 status, but with no
4402 output! It may have to do with sfio's use of _exit vs. exit.
4405 rp="You have a big problem. Shall I abort Configure"
4412 echo "The program compiled OK, but exited with status $?." >>try.msg
4413 rp="You have a problem. Shall I abort Configure"
4417 echo "I can't compile the test program." >>try.msg
4418 rp="You have a BIG problem. Shall I abort Configure"
4424 case "$knowitall" in
4426 echo "(The supplied flags or libraries might be incorrect.)"
4434 *) echo "Ok. Stopping Configure." >&4
4439 n) echo "OK, that should do.";;
4441 $rm -f try try.* core
4443 : define an is-a-typedef? function
4444 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4446 "") inclist="sys/types.h";;
4448 eval "varval=\$$var";
4452 for inc in $inclist; do
4453 echo "#include <$inc>" >>temp.c;
4455 echo "#ifdef $type" >> temp.c;
4456 echo "printf(\"We have $type\");" >> temp.c;
4457 echo "#endif" >> temp.c;
4458 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4459 if $contains $type temp.E >/dev/null 2>&1; then
4465 *) eval "$var=\$varval";;
4468 : define an is-a-typedef? function that prompts if the type is not available.
4469 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4471 "") inclist="sys/types.h";;
4473 eval "varval=\$$var";
4477 for inc in $inclist; do
4478 echo "#include <$inc>" >>temp.c;
4480 echo "#ifdef $type" >> temp.c;
4481 echo "printf(\"We have $type\");" >> temp.c;
4482 echo "#endif" >> temp.c;
4483 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4485 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4486 if $contains $type temp.E >/dev/null 2>&1; then
4487 echo "$type found." >&4;
4490 echo "$type NOT found." >&4;
4496 *) eval "$var=\$varval";;
4499 : define a shorthand compile call
4503 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4504 : define a shorthand compile call for compilations that should be ok.
4508 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4510 : check for lengths of integral types
4514 echo "Checking to see how big your integers are..." >&4
4515 $cat >try.c <<'EOCP'
4519 printf("intsize=%d;\n", (int)sizeof(int));
4520 printf("longsize=%d;\n", (int)sizeof(long));
4521 printf("shortsize=%d;\n", (int)sizeof(short));
4526 if eval $compile_ok && $run ./try > /dev/null; then
4528 echo "Your integers are $intsize bytes long."
4529 echo "Your long integers are $longsize bytes long."
4530 echo "Your short integers are $shortsize bytes long."
4534 Help! I can't compile and run the intsize test program: please enlighten me!
4535 (This is probably a misconfiguration in your system or libraries, and
4536 you really ought to fix it. Still, I'll try anyway.)
4540 rp="What is the size of an integer (in bytes)?"
4544 rp="What is the size of a long integer (in bytes)?"
4548 rp="What is the size of a short integer (in bytes)?"
4556 : see what type lseek is declared as in the kernel
4557 rp="What is the type used for lseek's offset on this system?"
4558 set off_t lseektype long stdio.h sys/types.h
4562 echo "Checking to see how big your file offsets are..." >&4
4564 #include <sys/types.h>
4568 printf("%d\n", (int)sizeof($lseektype));
4573 if eval $compile_ok; then
4574 lseeksize=`$run ./try`
4575 echo "Your file offsets are $lseeksize bytes long."
4579 echo "(I can't seem to compile the test program. Guessing...)"
4580 rp="What is the size of your file offsets (in bytes)?"
4586 : see what type file positions are declared as in the library
4587 rp="What is the type for file position used by fsetpos()?"
4588 set fpos_t fpostype long stdio.h sys/types.h
4593 *_t) zzz="$fpostype" ;;
4596 echo "Checking the size of $zzz..." >&4
4598 #include <sys/types.h>
4601 printf("%d\n", (int)sizeof($fpostype));
4606 if eval $compile_ok; then
4610 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4613 echo "Your $zzz is $fpossize bytes long."
4619 echo "(I can't compile the test program. Guessing...)" >&4
4620 rp="What is the size of your file positions (in bytes)?"
4627 # Backward compatibility (uselfs is deprecated).
4629 "$define"|true|[yY]*)
4632 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4634 uselargefiles="$define"
4638 case "$lseeksize:$fpossize" in
4641 You can have files larger than 2 gigabytes.
4644 *) case "$uselargefiles" in
4645 "$undef"|false|[nN]*) dflt='n' ;;
4650 Perl can be built to understand large files (files larger than 2 gigabytes)
4651 on some systems. To do so, Configure can be run with -Duselargefiles.
4653 If this doesn't make any sense to you, just accept the default '$dflt'.
4655 rp='Try to understand large files, if available?'
4658 y|Y) val="$define" ;;
4665 case "$uselargefiles" in
4667 : Look for a hint-file generated 'call-back-unit'. If the
4668 : user has specified that a large files perl is to be built,
4669 : we may need to set or change some other defaults.
4670 if $test -f uselargefiles.cbu; then
4671 echo "Your platform has some specific hints for large file builds, using them..."
4672 . ./uselargefiles.cbu
4674 echo "Rechecking to see how big your file offsets are..." >&4
4676 #include <sys/types.h>
4680 printf("%d\n", (int)sizeof($lseektype));
4685 if eval $compile_ok; then
4686 lseeksize=`$run ./try`
4687 $echo "Your file offsets are now $lseeksize bytes long."
4691 echo "(I can't seem to compile the test program. Guessing...)"
4692 rp="What is the size of your file offsets (in bytes)?"
4697 *_t) zzz="$fpostype" ;;
4700 $echo $n "Rechecking the size of $zzz...$c" >&4
4702 #include <sys/types.h>
4705 printf("%d\n", (int)sizeof($fpostype));
4710 if eval $compile_ok; then
4715 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4718 echo " $fpossize bytes." >&4
4724 echo "(I can't compile the test program. Guessing...)" >&4
4725 rp="What is the size of your file positions (in bytes)?"
4735 case "$usemorebits" in
4736 "$define"|true|[yY]*)
4737 use64bitint="$define"
4738 uselongdouble="$define"
4739 usemorebits="$define"
4741 *) usemorebits="$undef"
4745 : check for void type
4747 echo "Checking to see how well your C compiler groks the void type..." >&4
4748 case "$voidflags" in
4750 $cat >try.c <<'EOCP'
4756 extern void moo(); /* function returning void */
4757 void (*goo)(); /* ptr to func returning void */
4759 void *hue; /* generic ptr */
4772 int main() { sub(); }
4774 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4775 voidflags=$defvoidused
4776 echo "Good. It appears to support void to the level $package wants.">&4
4777 if $contains warning .out >/dev/null 2>&1; then
4778 echo "However, you might get some warnings that look like this:"
4782 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4783 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4784 echo "It supports 1..."
4785 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4786 echo "It also supports 2..."
4787 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4789 echo "And it supports 4 but not 8 definitely."
4791 echo "It doesn't support 4..."
4792 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4794 echo "But it supports 8."
4797 echo "Neither does it support 8."
4801 echo "It does not support 2..."
4802 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4804 echo "But it supports 4 and 8."
4806 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4808 echo "And it supports 4 but has not heard about 8."
4810 echo "However it supports 8 but not 4."
4815 echo "There is no support at all for void."
4820 case "$voidflags" in
4823 Support flag bits are:
4824 1: basic void declarations.
4825 2: arrays of pointers to functions returning void.
4826 4: operations between pointers to and addresses of void functions.
4827 8: generic void pointers.
4830 rp="Your void support flags add up to what?"
4837 : check for length of pointer
4841 echo "Checking to see how big your pointers are..." >&4
4842 if test "$voidflags" -gt 7; then
4843 echo '#define VOID_PTR char *' > try.c
4845 echo '#define VOID_PTR void *' > try.c
4847 $cat >>try.c <<'EOCP'
4851 printf("%d\n", (int)sizeof(VOID_PTR));
4856 if eval $compile_ok; then
4857 ptrsize=`$run ./try`
4858 echo "Your pointers are $ptrsize bytes long."
4861 echo "(I can't seem to compile the test program. Guessing...)" >&4
4862 rp="What is the size of a pointer (in bytes)?"
4870 : check for long long
4872 echo "Checking to see if you have long long..." >&4
4873 echo 'int main() { long long x = 7; return 0; }' > try.c
4875 if eval $compile; then
4877 echo "You have long long."
4880 echo "You do not have long long."
4886 : check for length of long long
4887 case "${d_longlong}${longlongsize}" in
4890 echo "Checking to see how big your long longs are..." >&4
4891 $cat >try.c <<'EOCP'
4895 printf("%d\n", (int)sizeof(long long));
4900 if eval $compile_ok; then
4901 longlongsize=`$run ./try`
4902 echo "Your long longs are $longlongsize bytes long."
4906 echo "(I can't seem to compile the test program. Guessing...)"
4907 rp="What is the size of a long long (in bytes)?"
4911 if $test "X$longsize" = "X$longlongsize"; then
4912 echo "(That isn't any different from an ordinary long.)"
4918 : determine filename position in cpp output
4920 echo "Computing filename position in cpp output for #include directives..." >&4
4921 echo '#include <stdio.h>' > foo.c
4924 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4925 $grep '^[ ]*#.*stdio\.h' | \
4926 while read cline; do
4929 while $test \$# -gt 0; do
4930 if $test -r \`echo \$1 | $tr -d '"'\`; then
4935 pos=\`expr \$pos + 1\`
4947 *) pos="${fieldn}th";;
4949 echo "Your cpp writes the filename in the $pos field of the line."
4951 : locate header file
4956 for usrincdir in $usrinc
4958 if test -f \$usrincdir/\$wanted; then
4959 echo "\$usrincdir/\$wanted"
4963 awkprg='{ print \$$fieldn }'
4964 echo "#include <\$wanted>" > foo\$\$.c
4965 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4966 $grep "^[ ]*#.*\$wanted" | \
4967 while read cline; do
4968 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4970 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4971 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4976 # status = 0: grep returned 0 lines, case statement not executed
4977 # status = 1: headerfile found
4978 # status = 2: while loop executed, no headerfile found
4982 if test \$status -eq 1; then
4989 : define an alternate in-header-list? function
4990 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4991 cont=true; xxf="echo \"<\$1> found.\" >&4";
4992 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4993 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4995 case $# in 4) instead=instead;; *) instead="at last";; esac;
4996 while $test "$cont"; do
4998 var=$2; eval "was=\$$2";
4999 if $test "$xxx" && $test -r "$xxx";
5001 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5004 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5005 set $yyy; shift; shift; yyy=$@;
5006 case $# in 0) cont="";;
5007 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5008 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5009 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5010 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5014 do set $yyy; var=$2; eval "was=\$$2";
5015 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5016 set $yyy; shift; shift; yyy=$@;
5019 : see if inttypes.h is available
5020 : we want a real compile instead of Inhdr because some systems
5021 : have an inttypes.h which includes non-existent headers
5024 #include <inttypes.h>
5026 static int32_t foo32 = 0x12345678;
5030 if eval $compile; then
5031 echo "<inttypes.h> found." >&4
5034 echo "<inttypes.h> NOT found." >&4
5043 echo "Checking to see if you have int64_t..." >&4
5045 #include <sys/types.h>
5046 #$i_inttypes I_INTTYPES
5048 #include <inttypes.h>
5050 int main() { int64_t x = 7; }
5053 if eval $compile; then
5055 echo "You have int64_t."
5058 echo "You do not have int64_t."
5066 echo "Checking which 64-bit integer type we could use..." >&4
5072 val='"unsigned int"'
5077 *) case "$longsize" in
5081 val='"unsigned long"'
5086 *) case "$d_longlong:$longlongsize" in
5091 val='"unsigned long long"'
5096 *) case "$d_int64_t" in
5115 '') echo "Alas, no 64-bit integer types in sight." >&4
5118 *) echo "We could use '$quadtype' for 64-bit integers." >&4
5124 case "$uselonglong" in
5125 "$define"|true|[yY]*)
5128 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5130 use64bitint="$define"
5133 case "$use64bits" in
5134 "$define"|true|[yY]*)
5137 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5139 use64bitint="$define"
5142 case "$use64bitints" in
5143 "$define"|true|[yY]*)
5146 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5148 use64bitint="$define"
5151 case "$use64bitsint" in
5152 "$define"|true|[yY]*)
5155 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5157 use64bitint="$define"
5160 case "$uselonglongs" in
5161 "$define"|true|[yY]*)
5164 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5166 use64bitint="$define"
5169 case "$use64bitsall" in
5170 "$define"|true|[yY]*)
5173 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5175 use64bitall="$define"
5180 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5182 case "$use64bitall" in
5183 "$define"|true|[yY]*) use64bitint="$define" ;;
5189 You have natively 64-bit long integers.
5193 *) case "$use64bitint" in
5194 "$define"|true|[yY]*) dflt='y';;
5203 Perl can be built to take advantage of 64-bit integer types
5204 on some systems. To do so, Configure can be run with -Duse64bitint.
5205 Choosing this option will most probably introduce binary incompatibilities.
5207 If this doesn't make any sense to you, just accept the default '$dflt'.
5208 (The default has been chosen based on your configuration.)
5210 rp='Try to use 64-bit integers, if available?'
5213 [yY]*) val="$define" ;;
5221 case "$use64bitall" in
5222 "$define"|true|[yY]*) dflt='y' ;;
5223 *) case "$longsize" in
5231 You may also choose to try maximal 64-bitness. It means using as much
5232 64-bitness as possible on the platform. This in turn means even more
5233 binary incompatibilities. On the other hand, your platform may not
5234 have any more 64-bitness available than what you already have chosen.
5236 If this doesn't make any sense to you, just accept the default '$dflt'.
5237 (The default has been chosen based on your configuration.)
5239 rp='Try to use maximal 64-bit support, if available?'
5242 [yY]*) val="$define" ;;
5247 case "$use64bitall" in
5249 case "$use64bitint" in
5253 Since you have chosen a maximally 64-bit build, I'm also turning on
5254 the use of 64-bit integers.
5256 use64bitint="$define" ;;
5261 case "$use64bitall" in
5262 "$define"|true|[yY]*)
5266 *** You have chosen a maximally 64-bit build, but your pointers
5267 *** are only 4 bytes wide, disabling maximal 64-bitness.
5270 use64bitall="$undef"
5271 case "$use64bitint" in
5272 "$define"|true|[yY]*) ;;
5275 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5278 use64bitint="$define"
5286 case "$use64bitint" in
5287 "$define"|true|[yY]*)
5288 : Look for a hint-file generated 'call-back-unit'. If the
5289 : user has specified that a 64-bit perl is to be built,
5290 : we may need to set or change some other defaults.
5291 if $test -f use64bitint.cbu; then
5292 echo "Your platform has some specific hints for 64-bit integers, using them..."
5296 4) case "$archname64" in
5297 '') archname64=64int ;;
5304 case "$use64bitall" in
5305 "$define"|true|[yY]*)
5306 : Look for a hint-file generated 'call-back-unit'. If the
5307 : user has specified that a maximally 64-bit perl is to be built,
5308 : we may need to set or change some other defaults.
5309 if $test -f use64bitall.cbu; then
5310 echo "Your platform has some specific hints for 64-bit builds, using them..."
5314 4) case "$archname64" in
5315 ''|64int) archname64=64all ;;
5323 echo "Checking for GNU C Library..." >&4
5336 if eval $compile_ok && $run ./try; then
5338 echo "You are using the GNU C Library"
5341 echo "You are not using the GNU C Library"
5347 : see if nm is to be used to determine whether a symbol is defined or not
5351 case "$d_gnulibc" in
5354 echo "nm probably won't work on the GNU C Library." >&4
5360 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5362 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5363 echo "'nm' won't be sufficient on this sytem." >&4
5369 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5370 if $test $dflt -gt 20; then
5380 true|$define) dflt=y;;
5387 I can use $nm to extract the symbols from your C libraries. This
5388 is a time consuming task which may generate huge output on the disk (up
5389 to 3 megabytes) but that should make the symbols extraction faster. The
5390 alternative is to skip the 'nm' extraction part and to compile a small
5391 test program instead to determine whether each symbol is present. If
5392 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5393 this may be the best solution.
5395 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5398 rp="Shall I use $nm to extract C symbols from the libraries?"
5401 [Nn]*) usenm=false;;
5410 : nm options which may be necessary
5412 '') if $test -f /mach_boot; then
5414 elif $test -d /usr/ccs/lib; then
5415 nm_opt='-p' # Solaris (and SunOS?)
5416 elif $test -f /dgux; then
5418 elif $test -f /lib64/rld; then
5419 nm_opt='-p' # 64-bit Irix
5425 : nm options which may be necessary for shared libraries but illegal
5426 : for archive libraries. Thank you, Linux.
5427 case "$nm_so_opt" in
5428 '') case "$myuname" in
5430 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5431 nm_so_opt='--dynamic'
5440 : get list of predefined functions in a handy place
5445 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5452 *) for thislib in $libs; do
5455 : Handle C library specially below.
5458 thislib=`echo $thislib | $sed -e 's/^-l//'`
5459 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5461 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5463 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5465 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5467 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5469 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5471 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5476 libnames="$libnames $try"
5478 *) libnames="$libnames $thislib" ;;
5487 for xxx in $libpth; do
5488 $test -r $1 || set $xxx/libc.$so
5489 : The messy sed command sorts on library version numbers.
5491 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5492 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5494 s/[0-9][0-9]*/0000&/g
5495 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5498 $sort | $sed -e 's/^.* //'`
5501 $test -r $1 || set /usr/ccs/lib/libc.$so
5502 $test -r $1 || set /lib/libsys_s$_a
5508 if $test -r "$1"; then
5509 echo "Your (shared) C library seems to be in $1."
5511 elif $test -r /lib/libc && $test -r /lib/clib; then
5512 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5514 libc='/lib/clib /lib/libc'
5515 if $test -r /lib/syslib; then
5516 echo "(Your math library is in /lib/syslib.)"
5517 libc="$libc /lib/syslib"
5519 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5520 echo "Your C library seems to be in $libc, as you said before."
5521 elif $test -r $incpath/usr/lib/libc$_a; then
5522 libc=$incpath/usr/lib/libc$_a;
5523 echo "Your C library seems to be in $libc. That's fine."
5524 elif $test -r /lib/libc$_a; then
5526 echo "Your C library seems to be in $libc. You're normal."
5528 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5530 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5531 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5532 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5534 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5536 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5539 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5541 if $test -r "$tans"; then
5542 echo "Your C library seems to be in $tans, of all places."
5548 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5552 If the guess above is wrong (which it might be if you're using a strange
5553 compiler, or your machine supports multiple models), you can override it here.
5558 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5560 I can't seem to find your C library. I've looked in the following places:
5563 $sed 's/^/ /' libpath
5566 None of these seems to contain your C library. I need to get its name...
5571 rp='Where is your C library?'
5576 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5577 set X `cat libnames`
5580 case $# in 1) xxx=file; esac
5581 echo "Extracting names from the following $xxx for later perusal:" >&4
5583 $sed 's/^/ /' libnames >&4
5585 $echo $n "This may take a while...$c" >&4
5589 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5590 *) $nm $nm_opt $file 2>/dev/null;;
5595 $grep fprintf libc.tmp > libc.ptf
5596 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5597 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5599 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5601 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5603 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5605 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5607 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5609 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5611 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5613 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5615 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5617 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5619 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5621 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5623 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5624 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5626 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5628 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5630 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5632 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5634 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5636 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5638 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5640 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5642 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5644 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5646 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5648 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5650 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5652 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5654 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5657 $nm -p $* 2>/dev/null >libc.tmp
5658 $grep fprintf libc.tmp > libc.ptf
5659 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5660 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5666 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5668 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5669 for thisname in $libnames $libc; do
5670 $ar t $thisname >>libc.tmp
5672 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5674 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5675 # Repeat libc to extract forwarders to DLL entries too
5676 for thisname in $libnames $libc; do
5677 $ar tv $thisname >>libc.tmp
5678 # Revision 50 of EMX has bug in $ar.
5679 # it will not extract forwarders to DLL entries
5680 # Use emximp which will extract exactly them.
5681 emximp -o tmp.imp $thisname \
5683 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5684 < tmp.imp >>libc.tmp
5687 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5690 echo "$ar didn't seem to work right." >&4
5691 echo "Maybe this is a Cray...trying bld instead..." >&4
5692 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5694 for thisname in $libnames; do
5696 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5697 $ar t $thisname >>libc.tmp
5701 echo "That didn't work either. Giving up." >&4
5708 if $test -f /lib/syscalls.exp; then
5710 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5711 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5715 $rm -f libnames libpath
5717 : is a C symbol defined?
5720 -v) tf=libc.tmp; tc=""; tdc="";;
5721 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5722 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5725 case "$reuseval-$4" in
5727 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5733 if $contains $tlook $tf >/dev/null 2>&1;
5738 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5739 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5747 $define) tval=true;;
5753 : define an is-in-libc? function
5754 inlibc='echo " "; td=$define; tu=$undef;
5755 sym=$1; var=$2; eval "was=\$$2";
5757 case "$reuseval$was" in
5767 echo "$sym() found." >&4;
5768 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5770 echo "$sym() NOT found." >&4;
5771 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5775 $define) echo "$sym() found." >&4;;
5776 *) echo "$sym() NOT found." >&4;;
5780 : see if sqrtl exists
5785 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5788 case "$uselongdouble" in
5789 $define|true|[yY]*) dflt='y';;
5794 Perl can be built to take advantage of long doubles which
5795 (if available) may give more accuracy and range for floating point numbers.
5797 If this doesn't make any sense to you, just accept the default '$dflt'.
5799 rp='Try to use long doubles if available?'
5802 y|Y) val="$define" ;;
5808 case "$uselongdouble" in
5809 true|[yY]*) uselongdouble="$define" ;;
5812 case "$uselongdouble" in
5814 : Look for a hint-file generated 'call-back-unit'. If the
5815 : user has specified that long doubles should be used,
5816 : we may need to set or change some other defaults.
5817 if $test -f uselongdouble.cbu; then
5818 echo "Your platform has some specific hints for long doubles, using them..."
5819 . ./uselongdouble.cbu
5822 (Your platform doesn't have any specific hints for long doubles.)
5828 case "$uselongdouble:$d_sqrtl" in
5832 *** You requested the use of long doubles but you do not seem to have
5833 *** the mathematic functions for long doubles. I'm disabling the use
5834 *** of long doubles.
5837 uselongdouble=$undef
5841 : check for length of double
5843 case "$doublesize" in
5845 echo "Checking to see how big your double precision numbers are..." >&4
5846 $cat >try.c <<'EOCP'
5850 printf("%d\n", (int)sizeof(double));
5855 if eval $compile_ok; then
5856 doublesize=`$run ./try`
5857 echo "Your double is $doublesize bytes long."
5860 echo "(I can't seem to compile the test program. Guessing...)"
5861 rp="What is the size of a double precision number (in bytes)?"
5869 : check for long doubles
5871 echo "Checking to see if you have long double..." >&4
5872 echo 'int main() { long double x = 7.0; }' > try.c
5874 if eval $compile; then
5876 echo "You have long double."
5879 echo "You do not have long double."
5885 : check for length of long double
5886 case "${d_longdbl}${longdblsize}" in
5889 echo "Checking to see how big your long doubles are..." >&4
5890 $cat >try.c <<'EOCP'
5894 printf("%d\n", sizeof(long double));
5899 if eval $compile; then
5900 longdblsize=`$run ./try`
5901 echo "Your long doubles are $longdblsize bytes long."
5905 echo "(I can't seem to compile the test program. Guessing...)" >&4
5906 rp="What is the size of a long double (in bytes)?"
5910 if $test "X$doublesize" = "X$longdblsize"; then
5911 echo "(That isn't any different from an ordinary double.)"
5917 case "$useperlio" in
5918 $define|true|[yY]*|'') dflt='y';;
5923 Previous version of $package used the standard IO mechanisms as
5924 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
5925 alternate IO mechanisms via the PerlIO abstraction layer, but the
5926 stdio mechanism is still available if needed. The abstraction layer
5927 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5928 Using PerlIO with sfio may cause problems with some extension modules.
5930 If this doesn't make any sense to you, just accept the default '$dflt'.
5932 rp='Use the PerlIO abstraction layer?'
5939 echo "Ok, doing things the stdio way."
5948 case "$useperlio" in
5949 $define|true|[yY]*) ;;
5952 You are using the SOCKS proxy protocol library which means that you
5953 should also use the PerlIO layer. You may be headed for trouble.
5962 : determine the architecture name
5964 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5965 tarch=`arch`"-$osname"
5966 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5967 if uname -m > tmparch 2>&1 ; then
5968 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5969 -e 's/$/'"-$osname/" tmparch`
5977 case "$myarchname" in
5980 echo "(Your architecture name used to be $myarchname.)"
5984 case "$targetarch" in
5986 *) archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5991 *) dflt="$archname";;
5993 rp='What is your architecture name'
5996 case "$usethreads" in
5998 echo "Threads selected." >&4
6000 *-thread*) echo "...and architecture name already has -thread." >&4
6002 *) archname="$archname-thread"
6003 echo "...setting architecture name to $archname." >&4
6008 case "$usemultiplicity" in
6010 echo "Multiplicity selected." >&4
6012 *-multi*) echo "...and architecture name already has -multi." >&4
6014 *) archname="$archname-multi"
6015 echo "...setting architecture name to $archname." >&4
6020 case "$use64bitint$use64bitall" in
6022 case "$archname64" in
6024 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
6027 case "$use64bitint" in
6028 "$define") echo "64 bit integers selected." >&4 ;;
6030 case "$use64bitall" in
6031 "$define") echo "Maximal 64 bitness selected." >&4 ;;
6034 *-$archname64*) echo "...and architecture name already has $archname64." >&4
6036 *) archname="$archname-$archname64"
6037 echo "...setting architecture name to $archname." >&4
6043 case "$uselongdouble" in
6045 echo "Long doubles selected." >&4
6046 case "$longdblsize" in
6048 "...but long doubles are equal to doubles, not changing architecture name." >&4
6052 *-ld*) echo "...and architecture name already has -ld." >&4
6054 *) archname="$archname-ld"
6055 echo "...setting architecture name to $archname." >&4
6062 case "$useperlio" in
6064 echo "Perlio selected." >&4
6067 echo "Perlio not selected, using stdio." >&4
6069 *-stdio*) echo "...and architecture name already has -stdio." >&4
6071 *) archname="$archname-stdio"
6072 echo "...setting architecture name to $archname." >&4
6078 : determine root of directory hierarchy where package will be installed.
6081 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
6089 By default, $package will be installed in $dflt/bin, manual pages
6090 under $dflt/man, etc..., i.e. with $dflt as prefix for all
6091 installation directories. Typically this is something like /usr/local.
6092 If you wish to have binaries under /usr/bin but other parts of the
6093 installation under /usr/local, that's ok: you will be prompted
6094 separately for each of the installation directories, the prefix being
6095 only used to set the defaults.
6099 rp='Installation prefix to use?'
6107 *) oldprefix="$prefix";;
6116 *) afsroot=$afsroot ;;
6122 $define|true) afs=true ;;
6123 $undef|false) afs=false ;;
6124 *) if test -d $afsroot; then
6132 echo "AFS may be running... I'll be extra cautious then..." >&4
6134 echo "AFS does not seem to be running..." >&4
6137 : determine installation prefix for where package is to be installed.
6141 Since you are running AFS, I need to distinguish the directory in which
6142 files will reside from the directory in which they are installed (and from
6143 which they are presumably copied to the former directory by occult means).
6146 case "$installprefix" in
6147 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6148 *) dflt="$installprefix";;
6153 In some special cases, particularly when building $package for distribution,
6154 it is convenient to distinguish between the directory in which files should
6155 be installed from the directory ($prefix) in which they
6156 will eventually reside. For most users, these two directories are the same.
6159 case "$installprefix" in
6161 *) dflt=$installprefix;;
6165 rp='What installation prefix should I use for installing files?'
6167 installprefix="$ans"
6168 installprefixexp="$ansexp"
6170 : set the prefixit variable, to compute a suitable default value
6171 prefixit='case "$3" in
6173 case "$oldprefix" in
6174 "") eval "$1=\"\$$2\"";;
6181 ""|" ") eval "$1=\"\$$2\"";;
6187 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6189 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6190 /*-$oldprefix/*|\~*-$oldprefix/*)
6191 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6192 *) eval "$1=\"\$$2\"";;
6197 : get the patchlevel
6199 echo "Getting the current patchlevel..." >&4
6200 if $test -r $rsrc/patchlevel.h;then
6201 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6202 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6203 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6204 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6205 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6206 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6207 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6216 $echo "(You do not have patchlevel.h. Eek.)"
6218 if $test -r $rsrc/.patch ; then
6219 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6220 perl_patchlevel=`cat $rsrc/.patch`
6223 case "$perl_patchlevel" in
6225 '') $echo "(You have $package version $patchlevel subversion $subversion.)" ;;
6226 *) $echo "(You have $package version $patchlevel subversion $subversion patchlevel $perl_patchlevel.)" ;;
6230 : XXX Should be a Configure test for double-dots in filenames.
6231 version=`echo $revision $patchlevel $subversion | \
6232 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6233 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6234 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6237 version=`echo $revision $patchlevel $subversion | \
6238 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6239 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6240 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6243 : Special case the 5.005_xx maintenance series, which used 5.005
6244 : without any subversion label as a subdirectory in $sitelib
6245 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6246 api_versionstring='5.005'
6249 : determine installation style
6250 : For now, try to deduce it from prefix unless it is already set.
6251 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6252 case "$installstyle" in
6253 '') case "$prefix" in
6254 *perl*) dflt='lib';;
6255 *) dflt='lib/perl5' ;;
6258 *) dflt="$installstyle" ;;
6260 : Probably not worth prompting for this since we prompt for all
6261 : the directories individually, and the prompt would be too long and
6265 : determine where private library files go
6266 : Usual default is /usr/local/lib/perl5/$version.
6267 : Also allow things like /opt/perl/lib/$version, since
6268 : /opt/perl/lib/perl5... would be redundant.
6269 : The default "style" setting is made in installstyle.U
6270 case "$installstyle" in
6271 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6272 *) set dflt privlib lib/$version ;;
6277 There are some auxiliary files for $package that need to be put into a
6278 private library directory that is accessible by everyone.
6282 rp='Pathname where the private library files will reside?'
6285 privlibexp="$ansexp"
6286 : Change installation prefix, if necessary.
6287 if $test X"$prefix" != X"$installprefix"; then
6288 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6290 installprivlib="$privlibexp"
6293 : set the prefixup variable, to restore leading tilda escape
6294 prefixup='case "$prefixexp" in
6296 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6299 : determine where public architecture dependent libraries go
6302 : privlib default is /usr/local/lib/$package/$version
6303 : archlib default is /usr/local/lib/$package/$version/$archname
6304 : privlib may have an optional trailing /share.
6305 tdflt=`echo $privlib | $sed 's,/share$,,'`
6306 tdflt=$tdflt/$archname
6315 $spackage contains architecture-dependent library files. If you are
6316 sharing libraries in a heterogeneous environment, you might store
6317 these files in a separate location. Otherwise, you can just include
6318 them with the rest of the public library files.
6322 rp='Where do you want to put the public architecture-dependent libraries?'
6325 archlibexp="$ansexp"
6326 if $test X"$archlib" = X"$privlib"; then
6331 : Change installation prefix, if necessary.
6332 if $test X"$prefix" != X"$installprefix"; then
6333 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6335 installarchlib="$archlibexp"
6339 : Binary compatibility with 5.005 is not possible for builds
6340 : with advanced features
6341 case "$usethreads$usemultiplicity" in
6343 bincompat5005="$undef"
6344 d_bincompat5005="$undef"
6348 This version of Perl can be compiled for binary compatibility with 5.005.
6349 If you decide to do so, you will be able to continue using most of the
6350 extensions that were compiled for Perl 5.005.
6353 case "$bincompat5005$d_bincompat5005" in
6354 *"$undef"*) dflt=n ;;
6357 rp='Binary compatibility with Perl 5.005?'
6360 y*) val="$define" ;;
6365 case "$d_bincompat5005" in
6367 bincompat5005="$define"
6369 *) bincompat5005="$undef"
6370 d_bincompat5005="$undef"
6377 : see if setuid scripts can be secure
6380 Some kernels have a bug that prevents setuid #! scripts from being
6381 secure. Some sites have disabled setuid #! scripts because of this.
6383 First let's decide if your kernel supports secure setuid #! scripts.
6384 (If setuid #! scripts would be secure but have been disabled anyway,
6385 don't say that they are secure if asked.)
6390 if $test -d /dev/fd; then
6391 echo "#!$ls" >reflect
6392 chmod +x,u+s reflect
6393 ./reflect >flect 2>&1
6394 if $contains "/dev/fd" flect >/dev/null; then
6395 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6399 If you are not sure if they are secure, I can check but I'll need a
6400 username and password different from the one you are using right now.
6401 If you don't have such a username or don't want me to test, simply
6405 rp='Other username to test security of setuid scripts with?'
6410 case "$d_suidsafe" in
6411 '') echo "I'll assume setuid scripts are *not* secure." >&4
6414 echo "Well, the $hint value is *not* secure." >&4
6416 *) echo "Well, the $hint value *is* secure." >&4
6421 $rm -f reflect flect
6422 echo "#!$ls" >reflect
6423 chmod +x,u+s reflect
6426 echo '"su" will (probably) prompt you for '"$ans's password."
6427 su $ans -c './reflect >flect'
6428 if $contains "/dev/fd" flect >/dev/null; then
6429 echo "Okay, it looks like setuid scripts are secure." >&4
6432 echo "I don't think setuid scripts are secure." >&4
6437 rp='Does your kernel have *secure* setuid scripts?'
6440 [yY]*) val="$define";;
6445 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6446 echo "(That's for file descriptors, not floppy disks.)"
6452 $rm -f reflect flect
6454 : now see if they want to do setuid emulation
6457 case "$d_suidsafe" in
6460 echo "No need to emulate SUID scripts since they are secure here." >& 4
6464 Some systems have disabled setuid scripts, especially systems where
6465 setuid scripts cannot be secure. On systems where setuid scripts have
6466 been disabled, the setuid/setgid bits on scripts are currently
6467 useless. It is possible for $package to detect those bits and emulate
6468 setuid/setgid in a secure fashion. This emulation will only work if
6469 setuid scripts have been disabled in your kernel.
6473 "$define") dflt=y ;;
6476 rp="Do you want to do setuid/setgid emulation?"
6479 [yY]*) val="$define";;
6487 : see if this is a malloc.h system
6488 set malloc.h i_malloc
6491 : see if stdlib is available
6492 set stdlib.h i_stdlib
6495 : determine which malloc to compile in
6497 case "$usemymalloc" in
6498 [yY]*|true|$define) dflt='y' ;;
6499 [nN]*|false|$undef) dflt='n' ;;
6500 *) case "$ptrsize" in
6506 rp="Do you wish to attempt to use the malloc that comes with $package?"
6512 mallocsrc='malloc.c'
6513 mallocobj="malloc$_o"
6514 d_mymalloc="$define"
6517 : Remove malloc from list of libraries to use
6518 echo "Removing unneeded -lmalloc from library list" >&4
6519 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6522 echo "libs = $libs" >&4
6534 : compute the return types of malloc and free
6536 $cat >malloc.c <<END
6540 #include <sys/types.h>
6554 case "$malloctype" in
6556 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6563 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6567 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6574 echo "Your system uses $freetype free(), it would seem." >&4
6578 After $package is installed, you may wish to install various
6579 add-on modules and utilities. Typically, these add-ons will
6580 be installed under $prefix with the rest
6581 of this package. However, you may wish to install such add-ons
6582 elsewhere under a different prefix.
6584 If you do not wish to put everything under a single prefix, that's
6585 ok. You will be prompted for the individual locations; this siteprefix
6586 is only used to suggest the defaults.
6588 The default should be fine for most people.
6592 rp='Installation prefix to use for add-on modules and utilities?'
6593 : XXX Here might be another good place for an installstyle setting.
6594 case "$siteprefix" in
6596 *) dflt=$siteprefix ;;
6599 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6601 case "$siteprefix" in
6605 *) oldsiteprefix="$prefix";;
6610 siteprefixexp="$ansexp"
6612 : determine where site specific libraries go.
6613 : Usual default is /usr/local/lib/perl5/site_perl/$version
6614 : The default "style" setting is made in installstyle.U
6615 : XXX No longer works with Prefixit stuff.
6616 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6618 '') case "$installstyle" in
6619 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6620 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6628 The installation process will create a directory for
6629 site-specific extensions and modules. Most users find it convenient
6630 to place all site-specific files in this directory rather than in the
6631 main distribution directory.
6635 rp='Pathname for the site-specific library files?'
6638 sitelibexp="$ansexp"
6639 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6640 : Change installation prefix, if necessary.
6641 if $test X"$prefix" != X"$installprefix"; then
6642 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6644 installsitelib="$sitelibexp"
6647 : determine where site specific architecture-dependent libraries go.
6648 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6649 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6650 : sitelib may have an optional trailing /share.
6652 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6653 dflt="$dflt/$archname"
6658 set sitearch sitearch none
6662 The installation process will also create a directory for
6663 architecture-dependent site-specific extensions and modules.
6667 rp='Pathname for the site-specific architecture-dependent library files?'
6670 sitearchexp="$ansexp"
6671 : Change installation prefix, if necessary.
6672 if $test X"$prefix" != X"$installprefix"; then
6673 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6675 installsitearch="$sitearchexp"
6680 The installation process will also create a directory for
6681 vendor-supplied add-ons. Vendors who supply perl with their system
6682 may find it convenient to place all vendor-supplied files in this
6683 directory rather than in the main distribution directory. This will
6684 ease upgrades between binary-compatible maintenance versions of perl.
6686 Of course you may also use these directories in whatever way you see
6687 fit. For example, you might use them to access modules shared over a
6688 company-wide network.
6690 The default answer should be fine for most people.
6691 This causes further questions about vendor add-ons to be skipped
6692 and no vendor-specific directories will be configured for perl.
6695 rp='Do you want to configure vendor-specific add-on directories?'
6696 case "$usevendorprefix" in
6697 define|true|[yY]*) dflt=y ;;
6698 *) : User may have set vendorprefix directly on Configure command line.
6699 case "$vendorprefix" in
6708 rp='Installation prefix to use for vendor-supplied add-ons?'
6709 case "$vendorprefix" in
6711 *) dflt=$vendorprefix ;;
6714 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6716 case "$vendorprefix" in
6720 *) oldvendorprefix="$prefix";;
6724 usevendorprefix="$define"
6726 vendorprefixexp="$ansexp"
6728 *) usevendorprefix="$undef"
6734 case "$vendorprefix" in
6735 '') d_vendorlib="$undef"
6739 *) d_vendorlib="$define"
6740 : determine where vendor-supplied modules go.
6741 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6742 case "$vendorlib" in
6744 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6745 case "$installstyle" in
6746 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6747 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6750 *) dflt="$vendorlib"
6754 rp='Pathname for the vendor-supplied library files?'
6757 vendorlibexp="$ansexp"
6760 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6761 : Change installation prefix, if necessary.
6762 if $test X"$prefix" != X"$installprefix"; then
6763 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6765 installvendorlib="$vendorlibexp"
6768 case "$vendorprefix" in
6769 '') d_vendorarch="$undef"
6773 *) d_vendorarch="$define"
6774 : determine where vendor-supplied architecture-dependent libraries go.
6775 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6776 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6777 : vendorlib may have an optional trailing /share.
6778 case "$vendorarch" in
6779 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6780 dflt="$dflt/$archname"
6782 *) dflt="$vendorarch" ;;
6785 rp='Pathname for vendor-supplied architecture-dependent files?'
6788 vendorarchexp="$ansexp"
6791 : Change installation prefix, if necessary.
6792 if $test X"$prefix" != X"$installprefix"; then
6793 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6795 installvendorarch="$vendorarchexp"
6798 : Final catch-all directories to search
6801 Lastly, you can have perl look in other directories for extensions and
6802 modules in addition to those already specified.
6803 These directories will be searched after
6807 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6808 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6810 case "$otherlibdirs" in
6811 ''|' ') dflt='none' ;;
6812 *) dflt="$otherlibdirs" ;;
6815 Enter a colon-separated set of extra paths to include in perl's @INC
6816 search path, or enter 'none' for no extra paths.
6820 rp='Colon-separated list of additional directories for perl to search?'
6823 ' '|''|none) otherlibdirs=' ' ;;
6824 *) otherlibdirs="$ans" ;;
6826 case "$otherlibdirs" in
6830 set d_perl_otherlibdirs
6833 : Cruising for prototypes
6835 echo "Checking out function prototypes..." >&4
6836 $cat >prototype.c <<'EOCP'
6837 int main(int argc, char *argv[]) {
6840 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6841 echo "Your C compiler appears to support function prototypes."
6844 echo "Your C compiler doesn't seem to understand function prototypes."
6851 case "$prototype" in
6853 *) ansi2knr='ansi2knr'
6858 This version of $package can only be compiled by a compiler that
6859 understands function prototypes. Unfortunately, your C compiler
6861 doesn't seem to understand them. Sorry about that.
6863 If GNU cc is available for your system, perhaps you could try that instead.
6865 Eventually, we hope to support building Perl with pre-ANSI compilers.
6866 If you would like to help in that effort, please contact <perlbug@perl.org>.
6868 Aborting Configure now.
6874 : determine where public executables go
6879 rp='Pathname where the public executables will reside?'
6881 if $test "X$ansexp" != "X$binexp"; then
6886 : Change installation prefix, if necessary.
6887 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6888 if $test X"$prefix" != X"$installprefix"; then
6889 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6891 installbin="$binexp"
6894 : Find perl5.005 or later.
6895 echo "Looking for a previously installed perl5.005 or later... "
6897 '') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6898 : Check if this perl is recent and can load a simple module
6899 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6902 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6912 '') echo "None found. That's ok.";;
6913 *) echo "Using $perl5." ;;
6916 : Determine list of previous versions to include in @INC
6917 $cat > getverlist <<EOPL
6920 \$api_versionstring = "$api_versionstring";
6921 \$version = "$version";
6922 \$stem = "$sitelib_stem";
6923 \$archname = "$archname";
6925 $cat >> getverlist <<'EOPL'
6926 # Can't have leading @ because metaconfig interprets it as a command!
6927 ;@inc_version_list=();
6928 # XXX Redo to do opendir/readdir?
6931 ;@candidates = glob("5.*");
6937 # XXX ToDo: These comparisons must be reworked when two-digit
6938 # subversions come along, so that 5.7.10 compares as greater than
6939 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6940 # widespread that we can use the built-in version vectors rather
6941 # than reinventing them here. For 5.6.0, however, we must
6942 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6943 foreach $d (@candidates) {
6944 if ($d lt $version) {
6945 if ($d ge $api_versionstring) {
6946 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6948 elsif ($d ge "5.005") {
6949 unshift(@inc_version_list, grep { -d } $d);
6953 # Skip newer version. I.e. don't look in
6954 # 5.7.0 if we're installing 5.6.1.
6958 if (@inc_version_list) {
6959 print join(' ', @inc_version_list);
6962 # Blank space to preserve value for next Configure run.
6967 case "$inc_version_list" in
6968 '') if test -x "$perl5$exe_ext"; then
6969 dflt=`$perl5 getverlist`
6974 $undef) dflt='none' ;;
6975 *) eval dflt=\"$inc_version_list\" ;;
6978 ''|' ') dflt=none ;;
6981 5.005) case "$bincompat5005" in
6982 $define|true|[yY]*) ;;
6989 In order to ease the process of upgrading, this version of perl
6990 can be configured to use modules built and installed with earlier
6991 versions of perl that were installed under $prefix. Specify here
6992 the list of earlier versions that this version of perl should check.
6993 If Configure detected no earlier versions of perl installed under
6994 $prefix, then the list will be empty. Answer 'none' to tell perl
6995 to not search earlier versions.
6997 The default should almost always be sensible, so if you're not sure,
6998 just accept the default.
7001 rp='List of earlier versions to include in @INC?'
7004 [Nn]one|''|' ') inc_version_list=' ' ;;
7005 *) inc_version_list="$ans" ;;
7007 case "$inc_version_list" in
7009 inc_version_list_init='0';;
7010 *) inc_version_list_init=`echo $inc_version_list |
7011 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
7016 : determine whether to install perl also as /usr/bin/perl
7019 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
7021 Many scripts expect perl to be installed as /usr/bin/perl.
7022 I can install the perl you are about to compile also as /usr/bin/perl
7023 (in addition to $installbin/perl).
7025 case "$installusrbinperl" in
7026 "$undef"|[nN]*) dflt='n';;
7029 rp="Do you want to install perl as /usr/bin/perl?"
7032 [yY]*) val="$define";;
7038 set installusrbinperl
7041 : see if dld is available
7045 : see if dlopen exists
7052 : determine which dynamic loading, if any, to compile in
7054 dldir="ext/DynaLoader"
7067 $define) dflt='y' ;;
7070 $define) dflt='y' ;;
7072 : Does a dl_xxx.xs file exist for this operating system
7073 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
7076 rp="Do you wish to use dynamic loading?"
7083 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7084 dflt="$dldir/dl_${osname}.xs"
7085 elif $test "$d_dlopen" = "$define" ; then
7086 dflt="$dldir/dl_dlopen.xs"
7087 elif $test "$i_dld" = "$define" ; then
7088 dflt="$dldir/dl_dld.xs"
7093 *) dflt="$dldir/$dlsrc"
7096 echo "The following dynamic loading files are available:"
7097 : Can not go over to $dldir because getfile has path hard-coded in.
7098 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7099 rp="Source file to use for dynamic loading"
7105 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7109 Some systems may require passing special flags to $cc -c to
7110 compile modules that will be used to create a shared library.
7111 To use no flags, say "none".
7114 case "$cccdlflags" in
7115 '') case "$gccversion" in
7116 '') case "$osname" in
7118 next) dflt='none' ;;
7119 irix*) dflt='-KPIC' ;;
7120 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7121 sunos) dflt='-pic' ;;
7125 *) case "$osname" in
7126 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7131 *) dflt="$cccdlflags" ;;
7133 rp="Any special flags to pass to $cc -c to compile shared library modules?"
7136 none) cccdlflags=' ' ;;
7137 *) cccdlflags="$ans" ;;
7142 Some systems use ld to create libraries that can be dynamically loaded,
7143 while other systems (such as those using ELF) use $cc.
7147 '') $cat >try.c <<'EOM'
7148 /* Test for whether ELF binaries are produced */
7153 int i = open("a.out",O_RDONLY);
7156 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7157 exit(0); /* succeed (yes, it's ELF) */
7162 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7164 You appear to have ELF support. I'll use $cc to build dynamic libraries.
7168 echo "I'll use ld to build dynamic libraries."
7177 rp="What command should be used to create dynamic libraries?"
7183 Some systems may require passing special flags to $ld to create a
7184 library that can be dynamically loaded. If your ld flags include
7185 -L/other/path options to locate libraries outside your loader's normal
7186 search path, you may need to specify those -L options here as well. To
7187 use no flags, say "none".
7190 case "$lddlflags" in
7191 '') case "$osname" in
7192 beos) dflt='-nostart' ;;
7194 case "$gccversion" in
7195 '') dflt="$dflt +vnocompatwarnings" ;;
7198 linux|irix*) dflt='-shared' ;;
7199 next) dflt='none' ;;
7200 solaris) dflt='-G' ;;
7201 sunos) dflt='-assert nodefinitions' ;;
7202 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7206 *) dflt="$lddlflags" ;;
7209 : Try to guess additional flags to pick up local libraries.
7210 : Be careful not to append to a plain 'none'
7214 for thisflag in $ldflags; do
7219 *) dflt="$dflt $thisflag" ;;
7226 ''|' ') dflt='none' ;;
7229 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7232 none) lddlflags=' ' ;;
7233 *) lddlflags="$ans" ;;
7238 Some systems may require passing special flags to $cc to indicate that
7239 the resulting executable will use dynamic linking. To use no flags,
7243 case "$ccdlflags" in
7244 '') case "$osname" in
7245 hpux) dflt='-Wl,-E' ;;
7246 linux) dflt='-rdynamic' ;;
7247 next) dflt='none' ;;
7248 sunos) dflt='none' ;;
7252 *) dflt="$ccdlflags" ;;
7254 rp="Any special flags to pass to $cc to use dynamic linking?"
7257 none) ccdlflags=' ' ;;
7258 *) ccdlflags="$ans" ;;
7272 # No dynamic loading being used, so don't bother even to prompt.
7275 *) case "$useshrplib" in
7276 '') case "$osname" in
7277 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7279 also='Building a shared libperl is required for dynamic loading to work on your system.'
7284 also='Building a shared libperl is needed for MAB support.'
7302 The perl executable is normally obtained by linking perlmain.c with
7303 libperl${_a}, any static extensions (usually just DynaLoader), and
7304 any other libraries needed on this system (such as -lm, etc.). Since
7305 your system supports dynamic loading, it is probably possible to build
7306 a shared libperl.$so. If you will have more than one executable linked
7307 to libperl.$so, this will significantly reduce the size of each
7308 executable, but it may have a noticeable affect on performance. The
7309 default is probably sensible for your system.
7313 rp="Build a shared libperl.$so (y/n)"
7317 useshrplib='true' ;;
7318 *) useshrplib='false' ;;
7323 case "$useshrplib" in
7327 # Figure out a good name for libperl.so. Since it gets stored in
7328 # a version-specific architecture-dependent library, the version
7329 # number isn't really that important, except for making cc/ld happy.
7331 # A name such as libperl.so.3.1
7332 majmin="libperl.$so.$patchlevel.$subversion"
7333 # A name such as libperl.so.301
7334 majonly=`echo $patchlevel $subversion |
7335 $awk '{printf "%d%02d", $1, $2}'`
7336 majonly=libperl.$so.$majonly
7337 # I'd prefer to keep the os-specific stuff here to a minimum, and
7338 # rely on figuring it out from the naming of libc.
7339 case "${osname}${osvers}" in
7342 # XXX How handle the --version stuff for MAB?
7344 linux*) # ld won't link with a bare -lperl otherwise.
7347 cygwin*) # include version
7348 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7350 *) # Try to guess based on whether libc has major.minor.
7352 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7353 *libc.$so.[0-9]*) dflt=$majonly ;;
7354 *) dflt=libperl.$so ;;
7364 I need to select a good name for the shared libperl. If your system uses
7365 library names with major and minor numbers, then you might want something
7366 like $majmin. Alternatively, if your system uses a single version
7367 number for shared libraries, then you might want to use $majonly.
7368 Or, your system might be quite happy with a simple libperl.$so.
7370 Since the shared libperl will get installed into a version-specific
7371 architecture-dependent directory, the version number of the shared perl
7372 library probably isn't important, so the default should be o.k.
7375 rp='What name do you want to give to the shared libperl?'
7378 echo "Ok, I'll use $libperl"
7381 libperl="libperl${_a}"
7385 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7389 WARNING: Use of the shrpdir variable for the installation location of
7390 the shared $libperl is not supported. It was never documented and
7391 will not work in this version. Let me (perlbug@perl.org)
7392 know of any problems this may cause.
7398 But your current setting of $shrpdir is
7399 the default anyway, so it's harmless.
7404 Further, your current attempted setting of $shrpdir
7405 conflicts with the value of $archlibexp/CORE
7406 that installperl will use.
7413 # How will the perl executable find the installed shared $libperl?
7414 # Add $xxx to ccdlflags.
7415 # If we can't figure out a command-line option, use $shrpenv to
7416 # set env LD_RUN_PATH. The main perl makefile uses this.
7417 shrpdir=$archlibexp/CORE
7420 if "$useshrplib"; then
7423 # We'll set it in Makefile.SH...
7429 xxx="-Wl,-R$shrpdir"
7431 linux|irix*|dec_osf)
7432 xxx="-Wl,-rpath,$shrpdir"
7435 # next doesn't like the default...
7438 # beos doesn't like the default, either.
7441 # hpux doesn't like the default, either.
7442 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7445 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7451 # Only add $xxx if it isn't already in ccdlflags.
7452 case " $ccdlflags " in
7454 *) ccdlflags="$ccdlflags $xxx"
7457 Adding $xxx to the flags
7458 passed to $ld so that the perl executable will find the
7459 installed shared $libperl.
7467 # Fix ccdlflags in AIX for building external extensions.
7468 # (For building Perl itself bare -bE:perl.exp is needed,
7469 # Makefile.SH takes care of this.)
7471 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7473 # Respect a hint or command-line value.
7475 '') shrpenv="$tmp_shrpenv" ;;
7477 case "$ldlibpthname" in
7478 '') ldlibpthname=LD_LIBRARY_PATH ;;
7479 none) ldlibpthname='' ;;
7482 : determine where manual pages are on this system
7486 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7487 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7488 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7489 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7490 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7491 sysman=`./loc . /usr/man/man1 $syspath`
7494 if $test -d "$sysman"; then
7495 echo "System manual is in $sysman." >&4
7497 echo "Could not find manual pages in source form." >&4
7500 : determine where manual pages go
7501 set man1dir man1dir none
7505 $spackage has manual pages available in source form.
7509 echo "However, you don't have nroff, so they're probably useless to you."
7511 '') man1dir="none";;
7514 echo "If you don't want the manual sources installed, answer 'none'."
7519 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7520 lookpath="$lookpath $prefixexp/man/p_man/man1"
7521 lookpath="$lookpath $prefixexp/man/u_man/man1"
7522 lookpath="$lookpath $prefixexp/man/man.1"
7524 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7525 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7535 rp="Where do the main $spackage manual pages (source) go?"
7537 if $test "X$man1direxp" != "X$ansexp"; then
7541 man1direxp="$ansexp"
7547 : Change installation prefix, if necessary.
7548 if $test X"$prefix" != X"$installprefix"; then
7549 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7551 installman1dir="$man1direxp"
7554 : What suffix to use on installed man pages
7561 rp="What suffix should be used for the main $spackage man pages?"
7563 '') case "$man1dir" in
7577 *) dflt="$man1ext";;
7584 : see if we can have long filenames
7586 first=123456789abcdef
7588 if (echo hi >$first) 2>/dev/null; then
7589 if $test -f 123456789abcde; then
7590 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7593 echo 'You can have filenames longer than 14 characters.'>&4
7598 You can't have filenames longer than 14 chars.
7599 You can't even think about them!
7605 $rm -rf 123456789abcde*
7607 : determine where library module manual pages go
7608 set man3dir man3dir none
7612 $spackage has manual pages for many of the library modules.
7618 However, you don't have nroff, so they're probably useless to you.
7621 '') man3dir="none";;
7625 case "$d_flexfnam" in
7628 However, your system can't handle the long file names like File::Basename.3.
7631 '') man3dir="none";;
7635 echo "If you don't want the manual sources installed, answer 'none'."
7636 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7638 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7639 if $test -d "$privlib/man/man3"; then
7642 WARNING: Previous versions of perl installed man3 pages into
7643 $privlib/man/man3. This version will suggest a
7644 new default of $dflt.
7648 rp='Do you wish to preserve the old behavior?(y/n)'
7651 y*) dflt="$privlib/man/man3" ;;
7656 *) dflt="$man3dir" ;;
7663 rp="Where do the $package library man pages (source) go?"
7666 man3direxp="$ansexp"
7672 : Change installation prefix, if necessary.
7673 if $test X"$prefix" != X"$installprefix"; then
7674 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7676 installman3dir="$man3direxp"
7679 : What suffix to use on installed man pages
7685 rp="What suffix should be used for the $package library man pages?"
7687 '') case "$man3dir" in
7701 *) dflt="$man3ext";;
7708 : see if we have to deal with yellow pages, now NIS.
7709 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7710 if $test -f /usr/etc/nibindd; then
7712 echo "I'm fairly confident you're on a NeXT."
7714 rp='Do you get the hosts file via NetInfo?'
7723 y*) hostcat='nidump hosts .';;
7724 *) case "$hostcat" in
7725 nidump*) hostcat='';;
7735 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7743 rp='Are you getting the hosts file via yellow pages?'
7746 y*) hostcat='ypcat hosts';;
7747 *) hostcat='cat /etc/hosts';;
7753 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7756 '') test -f /etc/group && groupcat='cat /etc/group';;
7759 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7762 : now get the host name
7764 echo "Figuring out host name..." >&4
7765 case "$myhostname" in
7767 echo 'Maybe "hostname" will work...'
7768 if tans=`sh -c hostname 2>&1` ; then
7776 if $test "$cont"; then
7778 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7779 if tans=`cat /etc/systemid 2>&1` ; then
7781 phostname='cat /etc/systemid'
7782 echo "Whadyaknow. Xenix always was a bit strange..."
7785 elif $test -r /etc/systemid; then
7786 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7789 if $test "$cont"; then
7790 echo 'No, maybe "uuname -l" will work...'
7791 if tans=`sh -c 'uuname -l' 2>&1` ; then
7793 phostname='uuname -l'
7795 echo 'Strange. Maybe "uname -n" will work...'
7796 if tans=`sh -c 'uname -n' 2>&1` ; then
7798 phostname='uname -n'
7800 echo 'Oh well, maybe I can mine it out of whoami.h...'
7801 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7802 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7803 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7805 case "$myhostname" in
7806 '') echo "Does this machine have an identity crisis or something?"
7809 echo "Well, you said $myhostname before..."
7810 phostname='echo $myhostname';;
7816 : you do not want to know about this
7821 if $test "$myhostname" ; then
7823 rp='Your host name appears to be "'$myhostname'".'" Right?"
7831 : bad guess or no guess
7832 while $test "X$myhostname" = X ; do
7834 rp="Please type the (one word) name of your host:"
7839 : translate upper to lower if necessary
7840 case "$myhostname" in
7842 echo "(Normalizing case in your host name)"
7843 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7847 case "$myhostname" in
7849 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7850 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7851 echo "(Trimming domain name from host name--host name is now $myhostname)"
7853 *) case "$mydomain" in
7856 test "X$hostcat" = "Xypcat hosts" &&
7857 ypmatch "$myhostname" hosts 2>/dev/null |\
7858 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7861 test "X$hostcat" != "X" &&
7862 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7863 /[ ]$myhostname[ . ]/p" > hosts
7866 if $test -f hosts; then
7867 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7868 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7869 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7870 hosts | $sort | $uniq | \
7871 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7872 case `$echo X$dflt` in
7873 X*\ *) echo "(Several hosts in the database matched hostname)"
7876 X.) echo "(You do not have fully-qualified names in the hosts database)"
7880 echo "(I cannot locate a hosts database anywhere)"
7885 tans=`./loc resolv.conf X /etc /usr/etc`
7886 if $test -f "$tans"; then
7887 echo "(Attempting domain name extraction from $tans)"
7888 dflt=.`$sed -n -e 's/ / /g' \
7889 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7890 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7892 .) dflt=.`$sed -n -e 's/ / /g' \
7893 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7894 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7901 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7902 dflt=.`sh -c domainname 2>/dev/null`
7905 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7909 case "$dflt$osname" in
7910 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7911 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7915 .) echo "(Lost all hope -- silly guess then)"
7921 *) dflt="$mydomain";;
7925 rp="What is your domain name?"
7935 : translate upper to lower if necessary
7938 echo "(Normalizing case in your domain name)"
7939 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7943 : a little sanity check here
7944 case "$phostname" in
7947 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7948 $myhostname$mydomain|$myhostname) ;;
7950 case "$phostname" in
7952 echo "(That doesn't agree with your whoami.h file, by the way.)"
7955 echo "(That doesn't agree with your $phostname command, by the way.)"
7965 I need to get your e-mail address in Internet format if possible, i.e.
7966 something like user@host.domain. Please answer accurately since I have
7967 no easy means to double check it. The default value provided below
7968 is most probably close to reality but may not be valid from outside
7969 your organization...
7973 while test "$cont"; do
7975 '') dflt="$cf_by@$myhostname$mydomain";;
7976 *) dflt="$cf_email";;
7978 rp='What is your e-mail address?'
7984 rp='Address does not look like an Internet one. Use it anyway?'
8000 If you or somebody else will be maintaining perl at your site, please
8001 fill in the correct e-mail address here so that they may be contacted
8002 if necessary. Currently, the "perlbug" program included with perl
8003 will send mail to this address in addition to perlbug@perl.org. You may
8004 enter "none" for no administrator.
8007 case "$perladmin" in
8008 '') dflt="$cf_email";;
8009 *) dflt="$perladmin";;
8011 rp='Perl administrator e-mail address'
8015 : determine whether to only install version-specific parts.
8018 Do you want to install only the version-specific parts of the perl
8019 distribution? Usually you do *not* want to do this.
8021 case "$versiononly" in
8022 "$define"|[Yy]*|true) dflt='y' ;;
8025 rp="Do you want to install only the version-specific parts of perl?"
8028 [yY]*) val="$define";;
8034 : figure out how to guarantee perl startup
8035 case "$startperl" in
8037 case "$sharpbang" in
8041 I can use the #! construct to start perl on your system. This will
8042 make startup of perl scripts faster, but may cause problems if you
8043 want to share those scripts and perl is not in a standard place
8044 ($binexp/perl) on all your platforms. The alternative is to force
8045 a shell by starting the script with a single ':' character.
8048 case "$versiononly" in
8049 "$define") dflt="$binexp/perl$version";;
8050 *) dflt="$binexp/perl";;
8052 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
8055 none) startperl=": # use perl";;
8056 *) startperl="#!$ans"
8057 if $test 30 -lt `echo "$ans" | wc -c`; then
8060 WARNING: Some systems limit the #! command to 32 characters.
8061 If you experience difficulty running Perl scripts with #!, try
8062 installing Perl in a directory with a shorter pathname.
8068 *) startperl=": # use perl"
8073 echo "I'll use $startperl to start perl scripts."
8075 : figure best path for perl in scripts
8078 perlpath="$binexp/perl"
8079 case "$startperl" in
8084 I will use the "eval 'exec'" idiom to start Perl on your system.
8085 I can use the full path of your Perl binary for this purpose, but
8086 doing so may cause problems if you want to share those scripts and
8087 Perl is not always in a standard place ($binexp/perl).
8091 rp="What path shall I use in \"eval 'exec'\"?"
8098 case "$startperl" in
8100 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8103 : determine where public executable scripts go
8104 set scriptdir scriptdir
8106 case "$scriptdir" in
8109 : guess some guesses
8110 $test -d /usr/share/scripts && dflt=/usr/share/scripts
8111 $test -d /usr/share/bin && dflt=/usr/share/bin
8112 $test -d /usr/local/script && dflt=/usr/local/script
8113 $test -d /usr/local/scripts && dflt=/usr/local/scripts
8114 $test -d $prefixexp/script && dflt=$prefixexp/script
8118 *) dflt="$scriptdir"
8123 Some installations have a separate directory just for executable scripts so
8124 that they can mount it across multiple architectures but keep the scripts in
8125 one spot. You might, for example, have a subdirectory of /usr/share for this.
8126 Or you might just lump your scripts in with all your other executables.
8130 rp='Where do you keep publicly executable scripts?'
8132 if $test "X$ansexp" != "X$scriptdirexp"; then
8136 scriptdirexp="$ansexp"
8137 : Change installation prefix, if necessary.
8138 if $test X"$prefix" != X"$installprefix"; then
8139 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8141 installscript="$scriptdirexp"
8144 : determine where add-on public executables go
8146 '') dflt=$siteprefix/bin ;;
8150 rp='Pathname where the add-on public executables should be installed?'
8153 sitebinexp="$ansexp"
8154 : Change installation prefix, if necessary.
8155 if $test X"$prefix" != X"$installprefix"; then
8156 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8158 installsitebin="$sitebinexp"
8161 case "$vendorprefix" in
8162 '') d_vendorbin="$undef"
8166 *) d_vendorbin="$define"
8167 : determine where vendor-supplied executables go.
8168 case "$vendorbin" in
8169 '') dflt=$vendorprefix/bin ;;
8170 *) dflt="$vendorbin" ;;
8173 rp='Pathname for the vendor-supplied executables directory?'
8176 vendorbinexp="$ansexp"
8179 : Change installation prefix, if necessary.
8180 if $test X"$prefix" != X"$installprefix"; then
8181 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8183 installvendorbin="$vendorbinexp"
8186 : see if qgcvt exists
8192 if $test X"$d_longdbl" = X"$define"; then
8194 echo "Checking how to print long doubles..." >&4
8196 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8197 $cat >try.c <<'EOCP'
8198 #include <sys/types.h>
8202 printf("%.3f\n", d);
8206 if eval $compile; then
8210 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8211 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8212 echo "We will use %f."
8218 if $test X"$sPRIfldbl" = X; then
8219 $cat >try.c <<'EOCP'
8220 #include <sys/types.h>
8223 long double d = 123.456;
8224 printf("%.3Lf\n", d);
8228 if eval $compile; then
8232 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8233 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8234 echo "We will use %Lf."
8240 if $test X"$sPRIfldbl" = X; then
8241 $cat >try.c <<'EOCP'
8242 #include <sys/types.h>
8245 long double d = 123.456;
8246 printf("%.3llf\n", d);
8250 if eval $compile; then
8254 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8255 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8256 echo "We will use %llf."
8262 if $test X"$sPRIfldbl" = X; then
8263 $cat >try.c <<'EOCP'
8264 #include <sys/types.h>
8267 long double d = 123.456;
8268 printf("%.3lf\n", d);
8272 if eval $compile; then
8276 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8277 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8278 echo "We will use %lf."
8284 if $test X"$sPRIfldbl" = X; then
8285 echo "Cannot figure out how to print long doubles." >&4
8287 sSCNfldbl=$sPRIfldbl # expect consistency
8294 case "$sPRIfldbl" in
8295 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
8296 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
8297 d_SCNfldbl="$undef";
8299 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
8300 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
8301 d_SCNfldbl="$define";
8305 : Check how to convert floats to strings.
8307 echo "Checking for an efficient way to convert floats to strings."
8309 case "$uselongdouble" in
8310 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8312 case "$d_longdbl" in
8313 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8315 case "$d_PRIgldbl" in
8316 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8320 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8321 char *myname = "gconvert";
8324 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8325 char *myname = "gcvt";
8328 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8329 char *myname = "qgcvt";
8330 #define DOUBLETYPE long double
8333 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8334 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8336 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8338 char *myname = "sprintf";
8342 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8343 #define DOUBLETYPE long double
8345 #define DOUBLETYPE double
8351 #define I_STDLIB $i_stdlib
8357 checkit(expect, got)
8361 if (strcmp(expect, got)) {
8362 printf("%s oddity: Expected %s, got %s\n",
8363 myname, expect, got);
8373 /* This must be 1st test on (which?) platform */
8374 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8375 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8376 checkit("0.1", buf);
8378 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8381 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8382 checkit("1.1", buf);
8384 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8385 checkit("1.01", buf);
8387 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8388 checkit("1.001", buf);
8390 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8391 checkit("1.0001", buf);
8393 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8394 checkit("1.00001", buf);
8396 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8397 checkit("1.000001", buf);
8399 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8402 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8405 /* Some Linux gcvt's give 1.e+5 here. */
8406 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8407 checkit("100000", buf);
8409 /* Some Linux gcvt's give -1.e+5 here. */
8410 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8411 checkit("-100000", buf);
8413 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8414 checkit("123.456", buf);
8419 case "$d_Gconvert" in
8420 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8421 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8422 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8423 *) xxx_list='gconvert gcvt sprintf' ;;
8426 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8427 "$define$define$define")
8428 # for long doubles prefer first qgcvt, then sprintf
8429 xxx_list="`echo $xxx_list|sed s/sprintf//`"
8430 xxx_list="sprintf $xxx_list"
8432 "$define") xxx_list="qgcvt $xxx_list" ;;
8437 for xxx_convert in $xxx_list; do
8438 echo "Trying $xxx_convert..."
8440 set try -DTRY_$xxx_convert
8441 if eval $compile; then
8442 echo "$xxx_convert() found." >&4
8444 echo "I'll use $xxx_convert to convert floats into a string." >&4
8447 echo "...But $xxx_convert didn't work as I expected."
8450 echo "$xxx_convert NOT found." >&4
8454 case "$xxx_convert" in
8455 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8456 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8457 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8458 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8459 "$define$define$define")
8460 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8461 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8466 : see if _fwalk exists
8470 : Initialize h_fcntl
8473 : Initialize h_sysfile
8476 : access call always available on UNIX
8480 : locate the flags for 'access()'
8484 $cat >access.c <<'EOCP'
8485 #include <sys/types.h>
8490 #include <sys/file.h>
8499 : check sys/file.h first, no particular reason here
8500 if $test `./findhdr sys/file.h` && \
8501 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8503 echo "<sys/file.h> defines the *_OK access constants." >&4
8504 elif $test `./findhdr fcntl.h` && \
8505 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8507 echo "<fcntl.h> defines the *_OK access constants." >&4
8508 elif $test `./findhdr unistd.h` && \
8509 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8510 echo "<unistd.h> defines the *_OK access constants." >&4
8512 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8518 : see if accessx exists
8519 set accessx d_accessx
8522 : see if alarm exists
8526 : see if atolf exists
8530 : see if atoll exists
8534 : Look for GNU-cc style attribute checking
8536 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8537 $cat >attrib.c <<'EOCP'
8539 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8541 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8542 if $contains 'warning' attrib.out >/dev/null 2>&1; then
8543 echo "Your C compiler doesn't fully support __attribute__."
8546 echo "Your C compiler supports __attribute__."
8550 echo "Your C compiler doesn't seem to understand __attribute__ at all."
8557 : see if bcmp exists
8561 : see if bcopy exists
8565 : see if this is a unistd.h system
8566 set unistd.h i_unistd
8569 : see if getpgrp exists
8570 set getpgrp d_getpgrp
8573 case "$d_getpgrp" in
8576 echo "Checking to see which flavor of getpgrp is in use..."
8579 #include <sys/types.h>
8581 # include <unistd.h>
8585 if (getuid() == 0) {
8586 printf("(I see you are running Configure as super-user...)\n");
8590 if (getpgrp(1) == 0)
8599 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8600 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8602 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8603 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8606 echo "I can't seem to compile and run the test program."
8608 xxx="a USG one, i.e. you use getpgrp()."
8610 # SVR4 systems can appear rather BSD-ish.
8613 xxx="a BSD one, i.e. you use getpgrp(pid)."
8617 xxx="probably a USG one, i.e. you use getpgrp()."
8622 echo "Assuming your getpgrp is $xxx" >&4
8631 : see if setpgrp exists
8632 set setpgrp d_setpgrp
8635 case "$d_setpgrp" in
8638 echo "Checking to see which flavor of setpgrp is in use..."
8641 #include <sys/types.h>
8643 # include <unistd.h>
8647 if (getuid() == 0) {
8648 printf("(I see you are running Configure as super-user...)\n");
8652 if (-1 == setpgrp(1, 1))
8655 if (setpgrp() != -1)
8661 if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8662 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8664 elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8665 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8668 echo "(I can't seem to compile and run the test program.)"
8670 xxx="a USG one, i.e. you use setpgrp()."
8672 # SVR4 systems can appear rather BSD-ish.
8675 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8679 xxx="probably a USG one, i.e. you use setpgrp()."
8684 echo "Assuming your setpgrp is $xxx" >&4
8692 : see if bzero exists
8696 : see if signal is declared as pointer to function returning int or void
8698 xxx=`./findhdr signal.h`
8699 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8700 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8701 echo "You have int (*signal())() instead of void." >&4
8703 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8704 echo "You have void (*signal())()." >&4
8706 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8707 echo "You have int (*signal())() instead of void." >&4
8709 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8710 echo "You have void (*signal())()." >&4
8713 case "$d_voidsig" in
8715 echo "I can't determine whether signal handler returns void or int..." >&4
8717 rp="What type does your signal handler return?"
8724 echo "As you already told me, signal handler returns void." >&4
8727 *) echo "As you already told me, signal handler returns int." >&4
8734 case "$d_voidsig" in
8735 "$define") signal_t="void";;
8740 : check for ability to cast large floats to 32-bit ints.
8742 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8743 if $test "$intsize" -ge 4; then
8750 #include <sys/types.h>
8752 $signal_t blech(s) int s; { exit(3); }
8759 signal(SIGFPE, blech);
8761 /* Don't let compiler optimize the test away. Store the number
8762 in a writable string for gcc to pass to sscanf under HP/UX.
8764 sprintf(str, "2147483647");
8765 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8769 /* x86 processors will probably give 0x8000 0000, which is a
8770 sign change. We don't want that. We want to mimic SPARC
8771 behavior here, which is to preserve the sign and give
8774 if (i32 != ($xxx) f)
8780 if eval $compile_ok; then
8784 echo "(I can't seem to compile the test program--assuming it can't)"
8792 echo "Nope, it can't."
8799 : check for ability to cast negative floats to unsigned
8801 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8804 #include <sys/types.h>
8806 $signal_t blech(s) int s; { exit(7); }
8807 $signal_t blech_in_list(s) int s; { exit(4); }
8808 unsigned long dummy_long(p) unsigned long p; { return p; }
8809 unsigned int dummy_int(p) unsigned int p; { return p; }
8810 unsigned short dummy_short(p) unsigned short p; { return p; }
8814 unsigned long along;
8816 unsigned short ashort;
8820 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8821 a direct f = -123. assignment. gcc-2.8.0 reportedly
8822 optimized the whole file away
8824 /* Store the number in a writable string for gcc to pass to
8827 sprintf(str, "-123");
8828 sscanf(str, "%lf", &f); /* f = -123.; */
8830 signal(SIGFPE, blech);
8831 along = (unsigned long)f;
8832 aint = (unsigned int)f;
8833 ashort = (unsigned short)f;
8834 if (along != (unsigned long)-123)
8836 if (aint != (unsigned int)-123)
8838 if (ashort != (unsigned short)-123)
8840 sprintf(str, "1073741824.");
8841 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8844 along = (unsigned long)f;
8845 if (along != 0x80000000)
8849 along = (unsigned long)f;
8850 if (along != 0x7fffffff)
8854 along = (unsigned long)f;
8855 if (along != 0x80000001)
8859 signal(SIGFPE, blech_in_list);
8860 sprintf(str, "123.");
8861 sscanf(str, "%lf", &f); /* f = 123.; */
8862 along = dummy_long((unsigned long)f);
8863 aint = dummy_int((unsigned int)f);
8864 ashort = dummy_short((unsigned short)f);
8865 if (along != (unsigned long)123)
8867 if (aint != (unsigned int)123)
8869 if (ashort != (unsigned short)123)
8876 if eval $compile_ok; then
8880 echo "(I can't seem to compile the test program--assuming it can't)"
8883 case "$castflags" in
8888 echo "Nope, it can't."
8895 : see if vprintf exists
8897 if set vprintf val -f d_vprintf; eval $csym; $val; then
8898 echo 'vprintf() found.' >&4
8901 #include <varargs.h>
8903 int main() { xxx("foo"); }
8912 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8916 if eval $compile && $run ./try; then
8917 echo "Your vsprintf() returns (int)." >&4
8920 echo "Your vsprintf() returns (char*)." >&4
8924 echo 'vprintf() NOT found.' >&4
8935 : see if chown exists
8939 : see if chroot exists
8943 : see if chsize exists
8947 hasstruct='varname=$1; struct=$2; shift; shift;
8948 while $test $# -ge 2; do
8950 $define) echo "#include <$2>";;
8954 echo "int main () { struct $struct foo; }" >> try.c;
8956 if eval $compile; then
8965 : see if sys/types.h has to be included
8966 set sys/types.h i_systypes
8969 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8970 while $test $# -ge 2; do
8972 $define) echo "#include <$2>";;
8976 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8978 if eval $compile; then
8989 : see whether socket exists
8991 $echo $n "Hmm... $c" >&4
8992 if set socket val -f d_socket; eval $csym; $val; then
8993 echo "Looks like you have Berkeley networking support." >&4
8995 if set setsockopt val -f; eval $csym; $val; then
8998 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9002 if $contains socklib libc.list >/dev/null 2>&1; then
9003 echo "Looks like you have Berkeley networking support." >&4
9005 : we will have to assume that it supports the 4.2 BSD interface
9008 echo "You don't have Berkeley networking in libc$_a..." >&4
9009 if test "X$d_socket" = "X$define"; then
9010 echo "...but you seem to believe that you have sockets." >&4
9012 for net in net socket
9014 if test -f /usr/lib/lib$net$_a; then
9015 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
9016 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9017 if $contains socket libc.list >/dev/null 2>&1; then
9022 echo "...but the Wollongong group seems to have hacked it in." >&4
9023 sockethdr="-I/usr/netinclude"
9026 echo "Found Berkeley sockets interface in lib$net." >& 4
9027 if $contains setsockopt libc.list >/dev/null 2>&1; then
9030 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9037 if test "X$d_socket" != "X$define"; then
9038 echo "or anywhere else I see." >&4
9046 : see if socketpair exists
9047 set socketpair d_sockpair
9052 echo "Checking the availability of certain socket constants..." >& 4
9053 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9054 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9056 #include <sys/types.h>
9057 #include <sys/socket.h>
9063 set try; if eval $compile; then
9066 set d_${enum}; eval $setvar
9070 : see if this is a sys/uio.h system
9071 set sys/uio.h i_sysuio
9076 echo "Checking to see if your system supports struct cmsghdr..." >&4
9077 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9079 case "$d_cmsghdr_s" in
9080 "$define") echo "Yes, it does." ;;
9081 *) echo "No, it doesn't." ;;
9085 : check for const keyword
9087 echo 'Checking to see if your C compiler knows about "const"...' >&4
9088 $cat >const.c <<'EOCP'
9089 typedef struct spug { int drokk; } spug;
9096 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9098 echo "Yup, it does."
9101 echo "Nope, it doesn't."
9106 : see if crypt exists
9108 if set crypt val -f d_crypt; eval $csym; $val; then
9109 echo 'crypt() found.' >&4
9113 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9114 if $test -z "$cryptlib"; then
9115 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9119 if $test -z "$cryptlib"; then
9120 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9124 if $test -z "$cryptlib"; then
9125 cryptlib=`./loc libcrypt$_a "" $libpth`
9129 if $test -z "$cryptlib"; then
9130 echo 'crypt() NOT found.' >&4
9139 : get csh whereabouts
9141 'csh') val="$undef" ;;
9146 : Respect a hint or command line value for full_csh.
9148 '') full_csh=$csh ;;
9151 : see if cuserid exists
9152 set cuserid d_cuserid
9155 : see if this is a limits.h system
9156 set limits.h i_limits
9159 : see if this is a float.h system
9163 : See if number of significant digits in a double precision number is known
9165 $cat >dbl_dig.c <<EOM
9175 printf("Contains DBL_DIG");
9178 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9179 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9180 echo "DBL_DIG found." >&4
9183 echo "DBL_DIG NOT found." >&4
9190 hasproto='varname=$1; func=$2; shift; shift;
9191 while $test $# -ge 2; do
9193 $define) echo "#include <$2>";;
9197 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9198 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9199 echo "$func() prototype found.";
9202 echo "$func() prototype NOT found.";
9207 $rm -f try.c tryout.c'
9209 : see if dbm.h is available
9210 : see if dbmclose exists
9211 set dbmclose d_dbmclose
9214 case "$d_dbmclose" in
9224 *) set rpcsvc/dbm.h i_rpcsvcdbm
9229 *) echo "We won't be including <dbm.h>"
9239 : see if prototype for dbminit is available
9241 set d_dbminitproto dbminit $i_dbm dbm.h
9244 : see if difftime exists
9245 set difftime d_difftime
9248 : see if this is a dirent system
9250 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9252 echo "<dirent.h> found." >&4
9255 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9256 echo "<sys/dir.h> found." >&4
9259 xinc=`./findhdr sys/ndir.h`
9261 echo "<dirent.h> NOT found." >&4
9266 : Look for type of directory structure.
9268 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9270 case "$direntrytype" in
9273 $define) guess1='struct dirent' ;;
9274 *) guess1='struct direct' ;;
9277 *) guess1="$direntrytype"
9282 'struct dirent') guess2='struct direct' ;;
9283 *) guess2='struct dirent' ;;
9286 if $contains "$guess1" try.c >/dev/null 2>&1; then
9287 direntrytype="$guess1"
9288 echo "Your directory entries are $direntrytype." >&4
9289 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9290 direntrytype="$guess2"
9291 echo "Your directory entries seem to be $direntrytype." >&4
9293 echo "I don't recognize your system's directory entries." >&4
9294 rp="What type is used for directory entries on this system?"
9302 : see if the directory entry stores field length
9304 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9305 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9306 echo "Good, your directory entry keeps length information in d_namlen." >&4
9309 echo "Your directory entry does not know about the d_namlen field." >&4
9316 : see if dlerror exists
9319 set dlerror d_dlerror
9323 : see if dlfcn is available
9331 On a few systems, the dynamically loaded modules that perl generates and uses
9332 will need a different extension than shared libs. The default will probably
9340 rp='What is the extension of dynamically loaded modules'
9349 : Check if dlsym need a leading underscore
9355 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9356 $cat >dyna.c <<'EOM'
9365 #include <dlfcn.h> /* the dynamic linker include file for SunOS/Solaris */
9367 #include <sys/types.h>
9381 int mode = RTLD_LAZY ;
9383 handle = dlopen("./dyna.$dlext", mode) ;
9384 if (handle == NULL) {
9389 symbol = dlsym(handle, "fred") ;
9390 if (symbol == NULL) {
9391 /* try putting a leading underscore */
9392 symbol = dlsym(handle, "_fred") ;
9393 if (symbol == NULL) {
9406 : Call the object file tmp-dyna.o in case dlext=o.
9407 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
9408 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
9409 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
9410 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9413 1) echo "Test program failed using dlopen." >&4
9414 echo "Perhaps you should not use dynamic loading." >&4;;
9415 2) echo "Test program failed using dlsym." >&4
9416 echo "Perhaps you should not use dynamic loading." >&4;;
9417 3) echo "dlsym needs a leading underscore" >&4
9419 4) echo "dlsym doesn't need a leading underscore." >&4;;
9422 echo "I can't compile and run the test program." >&4
9423 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9428 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9433 : see if prototype for drand48 is available
9435 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9438 : see if dup2 exists
9442 : see if eaccess exists
9443 set eaccess d_eaccess
9446 : see if endgrent exists
9447 set endgrent d_endgrent
9450 : see if endhostent exists
9451 set endhostent d_endhent
9454 : see if endnetent exists
9455 set endnetent d_endnent
9458 : see if endprotoent exists
9459 set endprotoent d_endpent
9462 : see if endpwent exists
9463 set endpwent d_endpwent
9466 : see if endservent exists
9467 set endservent d_endsent
9470 : Locate the flags for 'open()'
9472 $cat >try.c <<'EOCP'
9473 #include <sys/types.h>
9478 #include <sys/file.h>
9489 : check sys/file.h first to get FREAD on Sun
9490 if $test `./findhdr sys/file.h` && \
9491 set try -DI_SYS_FILE && eval $compile; then
9493 echo "<sys/file.h> defines the O_* constants..." >&4
9495 echo "and you have the 3 argument form of open()." >&4
9498 echo "but not the 3 argument form of open(). Oh, well." >&4
9501 elif $test `./findhdr fcntl.h` && \
9502 set try -DI_FCNTL && eval $compile; then
9504 echo "<fcntl.h> defines the O_* constants..." >&4
9506 echo "and you have the 3 argument form of open()." >&4
9509 echo "but not the 3 argument form of open(). Oh, well." >&4
9514 echo "I can't find the O_* constant definitions! You got problems." >&4
9520 : see which of string.h or strings.h is needed
9522 strings=`./findhdr string.h`
9523 if $test "$strings" && $test -r "$strings"; then
9524 echo "Using <string.h> instead of <strings.h>." >&4
9528 strings=`./findhdr strings.h`
9529 if $test "$strings" && $test -r "$strings"; then
9530 echo "Using <strings.h> instead of <string.h>." >&4
9532 echo "No string header found -- You'll surely have problems." >&4
9538 "$undef") strings=`./findhdr strings.h`;;
9539 *) strings=`./findhdr string.h`;;
9542 : check for non-blocking I/O stuff
9543 case "$h_sysfile" in
9544 true) echo "#include <sys/file.h>" > head.c;;
9547 true) echo "#include <fcntl.h>" > head.c;;
9548 *) echo "#include <sys/fcntl.h>" > head.c;;
9553 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9554 case "$o_nonblock" in
9557 $cat >>try.c <<'EOCP'
9561 printf("O_NONBLOCK\n");
9565 printf("O_NDELAY\n");
9569 printf("FNDELAY\n");
9576 if eval $compile_ok; then
9577 o_nonblock=`$run ./try`
9578 case "$o_nonblock" in
9579 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9580 *) echo "Seems like we can use $o_nonblock.";;
9583 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9586 *) echo "Using $hint value $o_nonblock.";;
9588 $rm -f try try.* .out core
9591 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9597 #include <sys/types.h>
9600 #define MY_O_NONBLOCK $o_nonblock
9601 #ifndef errno /* XXX need better Configure test */
9612 #include <strings.h>
9614 $signal_t blech(x) int x; { exit(3); }
9616 $cat >> try.c <<'EOCP'
9624 pipe(pd); /* Down: child -> parent */
9625 pipe(pu); /* Up: parent -> child */
9628 close(pd[1]); /* Parent reads from pd[0] */
9629 close(pu[0]); /* Parent writes (blocking) to pu[1] */
9631 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9636 signal(SIGALRM, blech);
9638 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
9640 sprintf(string, "%d\n", ret);
9641 write(2, string, strlen(string));
9644 if (errno == EAGAIN) {
9650 if (errno == EWOULDBLOCK)
9651 printf("EWOULDBLOCK\n");
9654 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
9655 sleep(2); /* Give it time to close our pipe */
9657 ret = read(pd[0], buf, 1); /* Should read EOF */
9659 sprintf(string, "%d\n", ret);
9660 write(3, string, strlen(string));
9664 close(pd[0]); /* We write to pd[1] */
9665 close(pu[1]); /* We read from pu[0] */
9666 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
9667 close(pd[1]); /* Pipe pd is now fully closed! */
9668 exit(0); /* Bye bye, thank you for playing! */
9672 if eval $compile_ok; then
9673 echo "$startsh" >mtry
9674 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9676 ./mtry >/dev/null 2>&1
9678 0) eagain=`$cat try.out`;;
9679 1) echo "Could not perform non-blocking setting!";;
9680 2) echo "I did a successful read() for something that was not there!";;
9681 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9682 4) echo "Could not find F_SETFL!";;
9683 *) echo "Something terribly wrong happened during testing.";;
9685 rd_nodata=`$cat try.ret`
9686 echo "A read() system call with no data present returns $rd_nodata."
9687 case "$rd_nodata" in
9690 echo "(That's peculiar, fixing that to be -1.)"
9696 echo "Forcing errno EAGAIN on read() with no data available."
9700 echo "Your read() sets errno to $eagain when no data is available."
9703 status=`$cat try.err`
9705 0) echo "And it correctly returns 0 to signal EOF.";;
9706 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9707 *) echo "However, your read() returns '$status' on EOF??";;
9710 if test "$status" = "$rd_nodata"; then
9711 echo "WARNING: you can't distinguish between EOF and no data!"
9715 echo "I can't compile the test program--assuming errno EAGAIN will do."
9722 echo "Using $hint value $eagain."
9723 echo "Your read() returns $rd_nodata when no data is present."
9724 case "$d_eofnblk" in
9725 "$define") echo "And you can see EOF because read() returns 0.";;
9726 "$undef") echo "But you can't see EOF status from read() returned value.";;
9728 echo "(Assuming you can't see EOF status from read anyway.)"
9734 $rm -f try try.* .out core head.c mtry
9736 : see if fchmod exists
9740 : see if fchown exists
9744 : see if this is an fcntl system
9749 : See if fcntl-based locking works.
9750 $cat >try.c <<'EOCP'
9755 #if defined(F_SETLK) && defined(F_SETLKW)
9758 fd = open("try.c", O_RDONLY);
9759 flock.l_type = F_RDLCK;
9760 flock.l_whence = SEEK_SET;
9761 flock.l_start = flock.l_len = 0;
9762 retval = fcntl(fd, F_SETLK, &flock);
9764 (retval < 0 ? exit(2) : exit(0));
9770 echo "Checking if fcntl-based file locking works... "
9774 if eval $compile_ok; then
9776 echo "Yes, it seems to work."
9779 echo "Nope, it didn't work."
9783 echo "I'm unable to compile the test program, so I'll assume not."
9788 echo "Nope, since you don't even have fcntl()."
9791 set d_fcntl_can_lock
9796 : see if sys/select.h has to be included
9797 set sys/select.h i_sysselct
9800 : see if we should include time.h, sys/time.h, or both
9802 if test "X$timeincl" = X; then
9803 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9804 $echo $n "I'm now running the test program...$c"
9805 $cat >try.c <<'EOCP'
9806 #include <sys/types.h>
9811 #ifdef SYSTIMEKERNEL
9814 #include <sys/time.h>
9817 #include <sys/select.h>
9826 struct timezone tzp;
9828 if (foo.tm_sec == foo.tm_sec)
9831 if (bar.tv_sec == bar.tv_sec)
9838 for s_timezone in '-DS_TIMEZONE' ''; do
9840 for s_timeval in '-DS_TIMEVAL' ''; do
9841 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9842 for i_time in '' '-DI_TIME'; do
9843 for i_systime in '-DI_SYSTIME' ''; do
9846 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9847 if eval $compile; then
9848 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9852 $echo $n "Succeeded with $flags$c"
9864 *SYSTIMEKERNEL*) i_systimek="$define"
9865 timeincl=`./findhdr sys/time.h`
9866 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9867 *) i_systimek="$undef";;
9870 *I_TIME*) i_time="$define"
9871 timeincl=`./findhdr time.h`" $timeincl"
9872 echo "We'll include <time.h>." >&4;;
9873 *) i_time="$undef";;
9876 *I_SYSTIME*) i_systime="$define"
9877 timeincl=`./findhdr sys/time.h`" $timeincl"
9878 echo "We'll include <sys/time.h>." >&4;;
9879 *) i_systime="$undef";;
9884 : check for fd_set items
9887 Checking to see how well your C compiler handles fd_set and friends ...
9890 #$i_systime I_SYS_TIME
9891 #$i_sysselct I_SYS_SELECT
9892 #$d_socket HAS_SOCKET
9893 #include <sys/types.h>
9895 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9898 #include <sys/time.h>
9901 #include <sys/select.h>
9910 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9918 if eval $compile; then
9919 d_fds_bits="$define"
9921 echo "Well, your system knows about the normal fd_set typedef..." >&4
9923 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9924 d_fd_macros="$define"
9927 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9929 d_fd_macros="$undef"
9933 Hmm, your compiler has some difficulty with fd_set. Checking further...
9936 if eval $compile; then
9939 echo "Well, your system has some sort of fd_set available..." >&4
9941 echo "and you have the normal fd_set macros." >&4
9942 d_fd_macros="$define"
9945 but not the normal fd_set macros! Gross! More work for me...
9947 d_fd_macros="$undef"
9950 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9953 d_fd_macros="$undef"
9958 : see if fgetpos exists
9959 set fgetpos d_fgetpos
9962 : see if flock exists
9966 : see if this is a sys/file.h system
9971 : do we need to include sys/file.h ?
9977 echo "We'll be including <sys/file.h>." >&4
9980 echo "We won't be including <sys/file.h>." >&4
9990 : see if prototype for flock is available
9992 set d_flockproto flock $i_sysfile sys/file.h
9995 : see if fork exists
9999 : see if pathconf exists
10000 set pathconf d_pathconf
10003 : see if fpathconf exists
10004 set fpathconf d_fpathconf
10008 : check for fpos64_t
10010 echo "Checking to see if you have fpos64_t..." >&4
10013 int main() { fpos64_t x = 7; }
10016 if eval $compile; then
10018 echo "You have fpos64_t."
10021 echo "You do not have fpos64_t."
10022 case "$fpossize" in
10023 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10030 : see if frexpl exists
10031 set frexpl d_frexpl
10034 : see if this is a sys/param system
10035 set sys/param.h i_sysparam
10038 : see if this is a sys/mount.h system
10039 set sys/mount.h i_sysmount
10044 echo "Checking to see if your system supports struct fs_data..." >&4
10045 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10047 case "$d_fs_data_s" in
10048 "$define") echo "Yes, it does." ;;
10049 *) echo "No, it doesn't." ;;
10052 : see if fseeko exists
10053 set fseeko d_fseeko
10055 case "$longsize" in
10056 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10059 : see if fsetpos exists
10060 set fsetpos d_fsetpos
10064 : see if fstatfs exists
10065 set fstatfs d_fstatfs
10069 : see if statvfs exists
10070 set statvfs d_statvfs
10073 : see if fstatvfs exists
10074 set fstatvfs d_fstatvfs
10078 : see if fsync exists
10082 : see if ftello exists
10083 set ftello d_ftello
10085 case "$longsize" in
10086 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10089 : see if getcwd exists
10090 set getcwd d_getcwd
10093 : see if getespwnam exists
10094 set getespwnam d_getespwnam
10098 : see if getfsstat exists
10099 set getfsstat d_getfsstat
10102 : see if getgrent exists
10103 set getgrent d_getgrent
10106 : see if gethostbyaddr exists
10107 set gethostbyaddr d_gethbyaddr
10110 : see if gethostbyname exists
10111 set gethostbyname d_gethbyname
10114 : see if gethostent exists
10115 set gethostent d_gethent
10118 : see how we will look up host name
10121 if set gethostname val -f d_gethname; eval $csym; $val; then
10122 echo 'gethostname() found.' >&4
10123 d_gethname="$define"
10126 if set uname val -f d_uname; eval $csym; $val; then
10129 uname() was found, but you're running xenix, and older versions of xenix
10130 have a broken uname(). If you don't really know whether your xenix is old
10131 enough to have a broken system call, use the default answer.
10136 "$define") dflt=n;;
10138 rp='Is your uname() broken?'
10141 n*) d_uname="$define"; call=uname;;
10144 echo 'uname() found.' >&4
10151 case "$d_gethname" in
10152 '') d_gethname="$undef";;
10155 '') d_uname="$undef";;
10157 case "$d_uname$d_gethname" in
10162 Every now and then someone has a $call() that lies about the hostname
10163 but can't be fixed for political or economic reasons. If you wish, I can
10164 pretend $call() isn't there and maybe compute hostname at run-time
10165 thanks to the '$phostname' command.
10168 rp="Shall I ignore $call() from now on?"
10171 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10174 case "$phostname" in
10175 '') aphostname='';;
10176 *) case "$aphostname" in
10178 *) set X $phostname
10182 file=`./loc $file $file $pth`
10183 aphostname=`echo $file $*`
10188 case "$d_uname$d_gethname" in
10191 case "$phostname" in
10193 echo "There will be no way for $package to get your hostname." >&4;;
10195 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10199 case "$d_phostname" in
10200 '') d_phostname="$undef";;
10203 : see if this is a netdb.h system
10204 set netdb.h i_netdb
10207 : see if prototypes for various gethostxxx netdb.h functions are available
10209 set d_gethostprotos gethostent $i_netdb netdb.h
10212 : see if getitimer exists
10213 set getitimer d_getitimer
10216 : see if getlogin exists
10217 set getlogin d_getlogin
10220 : see if getmnt exists
10221 set getmnt d_getmnt
10224 : see if getmntent exists
10225 set getmntent d_getmntent
10228 : see if getnetbyaddr exists
10229 set getnetbyaddr d_getnbyaddr
10232 : see if getnetbyname exists
10233 set getnetbyname d_getnbyname
10236 : see if getnetent exists
10237 set getnetent d_getnent
10240 : see if prototypes for various getnetxxx netdb.h functions are available
10242 set d_getnetprotos getnetent $i_netdb netdb.h
10245 : see if getpagesize exists
10246 set getpagesize d_getpagsz
10250 : see if getprotobyname exists
10251 set getprotobyname d_getpbyname
10254 : see if getprotobynumber exists
10255 set getprotobynumber d_getpbynumber
10258 : see if getprotoent exists
10259 set getprotoent d_getpent
10262 : see if getpgid exists
10263 set getpgid d_getpgid
10266 : see if getpgrp2 exists
10267 set getpgrp2 d_getpgrp2
10270 : see if getppid exists
10271 set getppid d_getppid
10274 : see if getpriority exists
10275 set getpriority d_getprior
10278 : see if prototypes for various getprotoxxx netdb.h functions are available
10280 set d_getprotoprotos getprotoent $i_netdb netdb.h
10283 : see if getprpwnam exists
10284 set getprpwnam d_getprpwnam
10287 : see if getpwent exists
10288 set getpwent d_getpwent
10292 : see if getservbyname exists
10293 set getservbyname d_getsbyname
10296 : see if getservbyport exists
10297 set getservbyport d_getsbyport
10300 : see if getservent exists
10301 set getservent d_getsent
10304 : see if prototypes for various getservxxx netdb.h functions are available
10306 set d_getservprotos getservent $i_netdb netdb.h
10309 : see if getspnam exists
10310 set getspnam d_getspnam
10313 : see if gettimeofday or ftime exists
10314 set gettimeofday d_gettimeod
10316 case "$d_gettimeod" in
10322 val="$undef"; set d_ftime; eval $setvar
10325 case "$d_gettimeod$d_ftime" in
10328 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10332 : see if this is an grp system
10338 xxx=`./findhdr grp.h`
10339 $cppstdin $cppflags $cppminus < $xxx >$$.h
10341 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10353 set d_grpasswd; eval $setvar
10357 : see if hasmntopt exists
10358 set hasmntopt d_hasmntopt
10361 : see if this is a netinet/in.h or sys/in.h system
10362 set netinet/in.h i_niin sys/in.h i_sysin
10365 : see if arpa/inet.h has to be included
10366 set arpa/inet.h i_arpainet
10369 : see if htonl --and friends-- exists
10374 : Maybe they are macros.
10377 $cat >htonl.c <<EOM
10379 #include <sys/types.h>
10380 #$i_niin I_NETINET_IN
10382 #$i_arpainet I_ARPA_INET
10383 #ifdef I_NETINET_IN
10384 #include <netinet/in.h>
10387 #include <sys/in.h>
10390 #include <arpa/inet.h>
10393 printf("Defined as a macro.");
10396 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10397 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10399 echo "But it seems to be defined as a macro." >&4
10407 : see if iconv exists
10413 if set index val -f; eval $csym; $val; then
10414 if set strchr val -f d_strchr; eval $csym; $val; then
10415 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10418 echo "strchr() found." >&4
10422 echo "index() found." >&4
10427 echo "index() found." >&4
10430 if set strchr val -f d_strchr; eval $csym; $val; then
10433 echo "strchr() found." >&4
10435 echo "No index() or strchr() found!" >&4
10440 set d_strchr; eval $setvar
10442 set d_index; eval $setvar
10444 : check whether inet_aton exists
10445 set inet_aton d_inetaton
10450 $cat >isascii.c <<'EOCP'
10462 if eval $compile; then
10463 echo "isascii() found." >&4
10466 echo "isascii() NOT found." >&4
10473 : see if isnan exists
10477 : see if isnanl exists
10478 set isnanl d_isnanl
10481 : see if killpg exists
10482 set killpg d_killpg
10485 : see if lchown exists
10487 $cat > try.c <<'EOCP'
10488 /* System header to define __stub macros and hopefully few prototypes,
10489 which can conflict with char lchown(); below. */
10490 #include <assert.h>
10491 /* Override any gcc2 internal prototype to avoid an error. */
10492 /* We use char because int might match the return type of a gcc2
10493 builtin and then its argument prototype would still apply. */
10496 /* The GNU C library defines this for functions which it implements
10497 to always fail with ENOSYS. Some functions are actually named
10498 something starting with __ and the normal name is an alias. */
10499 #if defined (__stub_lchown) || defined (__stub___lchown)
10507 if eval $compile; then
10508 $echo "lchown() found." >&4
10511 $echo "lchown() NOT found." >&4
10517 : See if number of significant digits in a double precision number is known
10519 $cat >ldbl_dig.c <<EOM
10520 #$i_limits I_LIMITS
10523 #include <limits.h>
10529 printf("Contains LDBL_DIG");
10532 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10533 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10534 echo "LDBL_DIG found." >&4
10537 echo "LDBL_DIG NOT found." >&4
10544 : see if link exists
10548 : see if localeconv exists
10549 set localeconv d_locconv
10552 : see if lockf exists
10556 : see if prototype for lseek is available
10558 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10561 : see if lstat exists
10565 : see if madvise exists
10566 set madvise d_madvise
10569 : see if mblen exists
10573 : see if mbstowcs exists
10574 set mbstowcs d_mbstowcs
10577 : see if mbtowc exists
10578 set mbtowc d_mbtowc
10581 : see if memchr exists
10582 set memchr d_memchr
10585 : see if memcmp exists
10586 set memcmp d_memcmp
10589 : see if memcpy exists
10590 set memcpy d_memcpy
10593 : see if memmove exists
10594 set memmove d_memmove
10597 : see if memset exists
10598 set memset d_memset
10601 : see if mkdir exists
10605 : see if mkdtemp exists
10606 set mkdtemp d_mkdtemp
10609 : see if mkfifo exists
10610 set mkfifo d_mkfifo
10613 : see if mkstemp exists
10614 set mkstemp d_mkstemp
10617 : see if mkstemps exists
10618 set mkstemps d_mkstemps
10621 : see if mktime exists
10622 set mktime d_mktime
10625 : see if this is a sys/mman.h system
10626 set sys/mman.h i_sysmman
10629 : see if mmap exists
10632 : see what shmat returns
10633 : default to something harmless
10635 case "$i_sysmman$d_mmap" in
10637 $cat >mmap.c <<'END'
10638 #include <sys/mman.h>
10641 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10646 echo "and it returns ($mmaptype)." >&4
10652 : see if modfl exists
10656 d_modfl_pow32_bug="$undef"
10658 case "$d_longdbl$d_modfl" in
10661 Checking to see whether your modfl() is okay for large values...
10667 long double nv = 4294967303.15;
10673 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10677 case "$osname:$gccversion" in
10678 aix:) saveccflags="$ccflags"
10679 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10682 if eval $compile; then
10685 *" 4294967303.150000 1.150000 4294967302.000000")
10686 echo >&4 "Your modfl() is broken for large values."
10687 d_modfl_pow32_bug="$define"
10689 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10693 *" 4294967303.150000 0.150000 4294967303.000000")
10694 echo >&4 "Your modfl() seems okay for large values."
10696 *) echo >&4 "I don't understand your modfl() at all."
10700 $rm -f try.* try core core.try.*
10702 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10705 case "$osname:$gccversion" in
10706 aix:) $ccflags="saveccflags" ;; # restore
10711 : see if mprotect exists
10712 set mprotect d_mprotect
10715 : see if msgctl exists
10716 set msgctl d_msgctl
10719 : see if msgget exists
10720 set msgget d_msgget
10723 : see if msgsnd exists
10724 set msgsnd d_msgsnd
10727 : see if msgrcv exists
10728 set msgrcv d_msgrcv
10731 : see how much of the 'msg*(2)' library is present.
10734 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10735 *"$undef"*) h_msg=false;;
10739 case "`ipcs 2>&1`" in
10740 "SVID messages"*"not configured"*)
10741 echo "Your $osname does not have the msg*(2) configured." >&4
10744 set msgctl d_msgctl
10746 set msgget d_msgget
10748 set msgsnd d_msgsnd
10750 set msgrcv d_msgrcv
10756 : we could also check for sys/ipc.h ...
10757 if $h_msg && $test `./findhdr sys/msg.h`; then
10758 echo "You have the full msg*(2) library." >&4
10761 echo "You don't have the full msg*(2) library." >&4
10769 echo "Checking to see if your system supports struct msghdr..." >&4
10770 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10772 case "$d_msghdr_s" in
10773 "$define") echo "Yes, it does." ;;
10774 *) echo "No, it doesn't." ;;
10778 : see if msync exists
10782 : see if munmap exists
10783 set munmap d_munmap
10786 : see if nice exists
10790 : check for length of character
10792 case "$charsize" in
10794 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10795 $cat >try.c <<'EOCP'
10799 printf("%d\n", (int)sizeof(char));
10804 if eval $compile_ok; then
10808 echo "(I can't seem to compile the test program. Guessing...)"
10815 rp="What is the size of a character (in bytes)?"
10820 : check for volatile keyword
10822 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10823 $cat >try.c <<'EOCP'
10826 typedef struct _goo_struct goo_struct;
10827 goo_struct * volatile goo = ((goo_struct *)0);
10828 struct _goo_struct {
10833 typedef unsigned short foo_t;
10834 char *volatile foo;
10836 volatile foo_t blech;
10840 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10842 echo "Yup, it does."
10845 echo "Nope, it doesn't."
10853 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10855 case "$use64bitint:$d_quad:$quadtype" in
10858 uvtype="$uquadtype"
10863 uvtype="unsigned long"
10869 case "$uselongdouble:$d_longdbl" in
10871 nvtype="long double"
10872 nvsize=$longdblsize
10879 $echo "(IV will be "$ivtype", $ivsize bytes)"
10880 $echo "(UV will be "$uvtype", $uvsize bytes)"
10881 $echo "(NV will be "$nvtype", $nvsize bytes)"
10884 #$i_inttypes I_INTTYPES
10886 #include <inttypes.h>
10891 int8_t i = INT8_MAX;
10892 uint8_t u = UINT8_MAX;
10893 printf("int8_t\n");
10896 int16_t i = INT16_MAX;
10897 uint16_t i = UINT16_MAX;
10898 printf("int16_t\n");
10901 int32_t i = INT32_MAX;
10902 uint32_t u = UINT32_MAX;
10903 printf("int32_t\n");
10909 '') case "$charsize" in
10911 u8type="unsigned char"
10920 if eval $compile; then
10921 case "`$run ./try`" in
10922 int8_t) i8type=int8_t
10932 '') if $test $charsize -ge 1; then
10934 u8type="unsigned char"
10942 '') case "$shortsize" in
10944 u16type="unsigned short"
10952 '') set try -DINT16
10953 if eval $compile; then
10954 case "`$run ./try`" in
10966 '') if $test $shortsize -ge 2; then
10968 u16type="unsigned short"
10976 '') case "$longsize" in
10978 u32type="unsigned long"
10982 *) case "$intsize" in
10984 u32type="unsigned int"
10994 '') set try -DINT32
10995 if eval $compile; then
10996 case "`$run ./try`" in
11008 '') if $test $intsize -ge 4; then
11010 u32type="unsigned int"
11018 '') case "$d_quad:$quadtype" in
11020 i64type="$quadtype"
11021 u64type="$uquadtype"
11029 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11030 : volatile so that the compiler has to store it out to memory.
11031 if test X"$d_volatile" = X"$define"; then
11036 #include <sys/types.h>
11037 #include <signal.h>
11039 $volatile int bletched = 0;
11040 $signal_t blech(s) int s; { bletched = 1; }
11045 int n = 8 * $uvsize;
11048 signal(SIGFPE, blech);
11051 for (i = 0; i < n; i++) {
11052 u = u << 1 | ($uvtype)1;
11054 if (($uvtype)d != u)
11058 d = ($nvtype)(u - 1);
11059 if (($uvtype)d != (u - 1))
11067 printf("%d\n", ((i == n) ? -n : i));
11073 d_nv_preserves_uv="$undef"
11074 if eval $compile; then
11075 d_nv_preserves_uv_bits="`$run ./try`"
11077 case "$d_nv_preserves_uv_bits" in
11079 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11080 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11081 d_nv_preserves_uv="$define"
11083 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
11084 d_nv_preserves_uv="$undef" ;;
11085 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
11086 d_nv_preserves_uv_bits="$undef" ;;
11092 : check for off64_t
11094 echo "Checking to see if you have off64_t..." >&4
11096 #include <sys/types.h>
11097 #include <unistd.h>
11098 int main() { off64_t x = 7; }
11101 if eval $compile; then
11103 echo "You have off64_t."
11106 echo "You do not have off64_t."
11107 case "$lseeksize" in
11108 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11115 : see if POSIX threads are available
11116 set pthread.h i_pthread
11122 : how to create joinable pthreads
11123 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11125 echo "Checking what constant to use for creating joinable pthreads..." >&4
11126 $cat >try.c <<'EOCP'
11127 #include <pthread.h>
11129 int detachstate = JOINABLE;
11132 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11133 if eval $compile; then
11134 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11135 val="$undef" # Yes, undef.
11136 set d_old_pthread_create_joinable
11139 set old_pthread_create_joinable
11142 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11143 if eval $compile; then
11144 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11146 set d_old_pthread_create_joinable
11148 val=PTHREAD_CREATE_UNDETACHED
11149 set old_pthread_create_joinable
11152 set try -DJOINABLE=__UNDETACHED
11153 if eval $compile; then
11154 echo "You seem to use __UNDETACHED." >&4
11156 set d_old_pthread_create_joinable
11159 set old_pthread_create_joinable
11162 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
11164 set d_old_pthread_create_joinable
11167 set old_pthread_create_joinable
11174 d_old_pthread_create_joinable="$undef"
11175 old_pthread_create_joinable=""
11178 : see if pause exists
11182 : see if pipe exists
11186 : see if poll exists
11191 : see whether the various POSIXish _yields exist
11193 #include <pthread.h>
11199 #ifdef PTHREAD_YIELD
11202 #ifdef PTHREAD_YIELD_NULL
11203 pthread_yield(NULL);
11209 : see if sched_yield exists
11210 set try -DSCHED_YIELD
11211 if eval $compile; then
11213 sched_yield='sched_yield()'
11217 case "$usethreads" in
11220 $define) echo 'sched_yield() found.' >&4 ;;
11221 *) echo 'sched_yield() NOT found.' >&4 ;;
11227 : see if pthread_yield exists
11228 set try -DPTHREAD_YIELD
11229 if eval $compile; then
11231 case "$sched_yield" in
11232 '') sched_yield='pthread_yield()' ;;
11235 set try -DPTHREAD_YIELD_NULL
11236 if eval $compile; then
11238 case "$sched_yield" in
11239 '') sched_yield='pthread_yield(NULL)' ;;
11245 case "$usethreads" in
11248 $define) echo 'pthread_yield() found.' >&4 ;;
11249 *) echo 'pthread_yield() NOT found.' >&4 ;;
11253 set d_pthread_yield
11256 case "$sched_yield" in
11257 '') sched_yield=undef ;;
11262 : see if this is a pwd.h system
11268 xxx=`./findhdr pwd.h`
11269 $cppstdin $cppflags $cppminus < $xxx >$$.h
11271 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11279 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11287 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11295 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11303 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11311 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11319 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11327 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11339 set d_pwquota; eval $setvar
11340 set d_pwage; eval $setvar
11341 set d_pwchange; eval $setvar
11342 set d_pwclass; eval $setvar
11343 set d_pwexpire; eval $setvar
11344 set d_pwcomment; eval $setvar
11345 set d_pwgecos; eval $setvar
11346 set d_pwpasswd; eval $setvar
11350 : see if readdir and friends exist
11351 set readdir d_readdir
11353 set seekdir d_seekdir
11355 set telldir d_telldir
11357 set rewinddir d_rewinddir
11360 : see if readlink exists
11361 set readlink d_readlink
11364 : see if readv exists
11368 : see if realpath exists
11369 set realpath d_realpath
11372 : see if recvmsg exists
11373 set recvmsg d_recvmsg
11376 : see if rename exists
11377 set rename d_rename
11380 : see if rmdir exists
11384 : see if memory.h is available.
11389 : See if it conflicts with string.h
11395 $cppstdin $cppflags $cppminus < $strings > mem.h
11396 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11398 echo "We won't be including <memory.h>."
11408 : can bcopy handle overlapping blocks?
11413 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
11415 #$i_memory I_MEMORY
11416 #$i_stdlib I_STDLIB
11417 #$i_string I_STRING
11418 #$i_unistd I_UNISTD
11420 $cat >>try.c <<'EOCP'
11423 # include <memory.h>
11426 # include <stdlib.h>
11429 # include <string.h>
11431 # include <strings.h>
11434 # include <unistd.h> /* Needed for NetBSD */
11438 char buf[128], abc[128];
11444 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11446 for (align = 7; align >= 0; align--) {
11447 for (len = 36; len; len--) {
11449 bcopy(abc, b, len);
11450 for (off = 1; off <= len; off++) {
11451 bcopy(b, b+off, len);
11452 bcopy(b+off, b, len);
11453 if (bcmp(b, abc, len))
11462 if eval $compile_ok; then
11463 if $run ./try 2>/dev/null; then
11464 echo "Yes, it can."
11467 echo "It can't, sorry."
11468 case "$d_memmove" in
11469 "$define") echo "But that's Ok since you have memmove()." ;;
11473 echo "(I can't compile the test program, so we'll assume not...)"
11474 case "$d_memmove" in
11475 "$define") echo "But that's Ok since you have memmove()." ;;
11480 $rm -f try.* try core
11484 : can memcpy handle overlapping blocks?
11486 case "$d_memcpy" in
11489 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
11491 #$i_memory I_MEMORY
11492 #$i_stdlib I_STDLIB
11493 #$i_string I_STRING
11494 #$i_unistd I_UNISTD
11496 $cat >>try.c <<'EOCP'
11499 # include <memory.h>
11502 # include <stdlib.h>
11505 # include <string.h>
11507 # include <strings.h>
11510 # include <unistd.h> /* Needed for NetBSD */
11514 char buf[128], abc[128];
11520 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11521 try to store the string in read-only memory. */
11522 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11524 for (align = 7; align >= 0; align--) {
11525 for (len = 36; len; len--) {
11527 memcpy(b, abc, len);
11528 for (off = 1; off <= len; off++) {
11529 memcpy(b+off, b, len);
11530 memcpy(b, b+off, len);
11531 if (memcmp(b, abc, len))
11540 if eval $compile_ok; then
11541 if $run ./try 2>/dev/null; then
11542 echo "Yes, it can."
11545 echo "It can't, sorry."
11546 case "$d_memmove" in
11547 "$define") echo "But that's Ok since you have memmove()." ;;
11551 echo "(I can't compile the test program, so we'll assume not...)"
11552 case "$d_memmove" in
11553 "$define") echo "But that's Ok since you have memmove()." ;;
11558 $rm -f try.* try core
11562 : can memcmp be trusted to compare relative magnitude?
11564 case "$d_memcmp" in
11567 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11569 #$i_memory I_MEMORY
11570 #$i_stdlib I_STDLIB
11571 #$i_string I_STRING
11572 #$i_unistd I_UNISTD
11574 $cat >>try.c <<'EOCP'
11577 # include <memory.h>
11580 # include <stdlib.h>
11583 # include <string.h>
11585 # include <strings.h>
11588 # include <unistd.h> /* Needed for NetBSD */
11594 if ((a < b) && memcmp(&a, &b, 1) < 0)
11600 if eval $compile_ok; then
11601 if $run ./try 2>/dev/null; then
11602 echo "Yes, it can."
11605 echo "No, it can't (it uses signed chars)."
11608 echo "(I can't compile the test program, so we'll assume not...)"
11612 $rm -f try.* try core
11616 : see if prototype for sbrk is available
11618 set d_sbrkproto sbrk $i_unistd unistd.h
11621 : see if select exists
11622 set select d_select
11625 : see if semctl exists
11626 set semctl d_semctl
11629 : see if semget exists
11630 set semget d_semget
11633 : see if semop exists
11637 : see how much of the 'sem*(2)' library is present.
11640 case "$d_semctl$d_semget$d_semop" in
11641 *"$undef"*) h_sem=false;;
11645 case "`ipcs 2>&1`" in
11646 "SVID messages"*"not configured"*)
11647 echo "Your $osname does not have the sem*(2) configured." >&4
11650 set semctl d_semctl
11652 set semget d_semget
11660 : we could also check for sys/ipc.h ...
11661 if $h_sem && $test `./findhdr sys/sem.h`; then
11662 echo "You have the full sem*(2) library." >&4
11665 echo "You don't have the full sem*(2) library." >&4
11671 : see whether sys/sem.h defines union semun
11673 $cat > try.c <<'END'
11674 #include <sys/types.h>
11675 #include <sys/ipc.h>
11676 #include <sys/sem.h>
11677 int main () { union semun semun; semun.buf = 0; }
11680 if eval $compile; then
11681 echo "You have union semun in <sys/sem.h>." >&4
11684 echo "You do not have union semun in <sys/sem.h>." >&4
11687 $rm -f try try.c try.h
11691 : see how to do semctl IPC_STAT
11694 : see whether semctl IPC_STAT can use union semun
11699 # define S_IRUSR S_IREAD
11700 # define S_IWUSR S_IWRITE
11701 # define S_IXUSR S_IEXEC
11703 # define S_IRUSR 0400
11704 # define S_IWUSR 0200
11705 # define S_IXUSR 0100
11707 # define S_IRGRP (S_IRUSR>>3)
11708 # define S_IWGRP (S_IWUSR>>3)
11709 # define S_IXGRP (S_IXUSR>>3)
11710 # define S_IROTH (S_IRUSR>>6)
11711 # define S_IWOTH (S_IWUSR>>6)
11712 # define S_IXOTH (S_IXUSR>>6)
11715 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11716 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11717 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11722 #include <sys/types.h>
11723 #include <sys/ipc.h>
11724 #include <sys/sem.h>
11725 #include <sys/stat.h>
11732 #$d_union_semun HAS_UNION_SEMUN
11735 #ifndef HAS_UNION_SEMUN
11738 struct semid_ds *buf;
11739 unsigned short *array;
11745 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11746 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11748 struct semid_ds argbuf;
11751 st = semctl(sem, 0, IPC_STAT, arg);
11755 # endif /* IPC_STAT */
11756 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11758 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11759 # endif /* IPC_RMID */
11760 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11762 #endif /* IPC_PRIVATE && ... */
11763 printf("semget failed: errno = %d\n", errno);
11769 if eval $compile; then
11772 semun) val="$define" ;;
11778 case "$d_semctl_semun" in
11780 echo "You can use union semun for semctl IPC_STAT." >&4
11783 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11788 : see whether semctl IPC_STAT can use struct semid_ds pointer
11789 $cat > try.c <<'END'
11790 #include <sys/types.h>
11791 #include <sys/ipc.h>
11792 #include <sys/sem.h>
11793 #include <sys/stat.h>
11801 struct semid_ds arg;
11804 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11805 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11808 st = semctl(sem, 0, IPC_STAT, &arg);
11810 printf("semid_ds\n");
11812 # endif /* IPC_STAT */
11813 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11815 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11816 # endif /* IPC_RMID */
11817 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11819 #endif /* IPC_PRIVATE && ... */
11820 printf("semget failed: errno = %d\n", errno);
11827 if eval $compile; then
11830 semid_ds) val="$define" ;;
11834 set d_semctl_semid_ds
11836 case "$d_semctl_semid_ds" in
11838 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11840 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11847 # We do not have the full sem*(2) library, so assume we can not
11853 set d_semctl_semid_ds
11858 : see if sendmsg exists
11859 set sendmsg d_sendmsg
11862 : see if setegid exists
11863 set setegid d_setegid
11866 : see if seteuid exists
11867 set seteuid d_seteuid
11870 : see if setgrent exists
11871 set setgrent d_setgrent
11874 : see if sethostent exists
11875 set sethostent d_sethent
11878 : see if setitimer exists
11879 set setitimer d_setitimer
11882 : see if setlinebuf exists
11883 set setlinebuf d_setlinebuf
11886 : see if setlocale exists
11887 set setlocale d_setlocale
11890 : see if setnetent exists
11891 set setnetent d_setnent
11894 : see if setprotoent exists
11895 set setprotoent d_setpent
11898 : see if setpgid exists
11899 set setpgid d_setpgid
11902 : see if setpgrp2 exists
11903 set setpgrp2 d_setpgrp2
11906 : see if setpriority exists
11907 set setpriority d_setprior
11910 : see if setproctitle exists
11911 set setproctitle d_setproctitle
11914 : see if setpwent exists
11915 set setpwent d_setpwent
11918 : see if setregid exists
11919 set setregid d_setregid
11921 set setresgid d_setresgid
11924 : see if setreuid exists
11925 set setreuid d_setreuid
11927 set setresuid d_setresuid
11930 : see if setrgid exists
11931 set setrgid d_setrgid
11934 : see if setruid exists
11935 set setruid d_setruid
11938 : see if setservent exists
11939 set setservent d_setsent
11942 : see if setsid exists
11943 set setsid d_setsid
11946 : see if setvbuf exists
11947 set setvbuf d_setvbuf
11950 : see if sfio.h is available
11955 : see if sfio library is available
11966 : Ok, but do we want to use it.
11970 true|$define|[yY]*) dflt='y';;
11973 echo "$package can use the sfio library, but it is experimental."
11974 case "$useperlio" in
11976 echo "For sfio also the PerlIO abstraction layer is needed."
11977 echo "Earlier you said you wouldn't want that."
11980 rp="You seem to have sfio available, do you want to try using it?"
11983 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
11984 useperlio="$define"
11987 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11992 *) case "$usesfio" in
11993 true|$define|[yY]*)
11994 echo "Sorry, cannot find sfio on this machine." >&4
11995 echo "Ignoring your setting of usesfio=$usesfio." >&4
12004 $define) usesfio='true';;
12005 *) usesfio='false';;
12009 *) : Remove sfio from list of libraries to use
12010 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12013 echo "libs = $libs" >&4
12018 : see if shmctl exists
12019 set shmctl d_shmctl
12022 : see if shmget exists
12023 set shmget d_shmget
12026 : see if shmat exists
12029 : see what shmat returns
12032 $cat >shmat.c <<'END'
12033 #include <sys/shm.h>
12036 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12041 echo "and it returns ($shmattype)." >&4
12042 : see if a prototype for shmat is available
12043 xxx=`./findhdr sys/shm.h`
12044 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12045 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12056 set d_shmatprototype
12059 : see if shmdt exists
12063 : see how much of the 'shm*(2)' library is present.
12066 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12067 *"$undef"*) h_shm=false;;
12071 case "`ipcs 2>&1`" in
12072 "SVID shared memory"*"not configured"*)
12073 echo "Your $osname does not have the shm*(2) configured." >&4
12076 set shmctl d_shmctl
12078 set shmget d_shmget
12088 : we could also check for sys/ipc.h ...
12089 if $h_shm && $test `./findhdr sys/shm.h`; then
12090 echo "You have the full shm*(2) library." >&4
12093 echo "You don't have the full shm*(2) library." >&4
12100 : see if we have sigaction
12101 if set sigaction val -f d_sigaction; eval $csym; $val; then
12102 echo 'sigaction() found.' >&4
12103 $cat > try.c <<'EOP'
12105 #include <sys/types.h>
12106 #include <signal.h>
12109 struct sigaction act, oact;
12111 oact.sa_handler = 0;
12112 /* so that act and oact are used */
12113 exit(act.sa_flags == 0 && oact.sa_handler == 0);
12117 if eval $compile_ok; then
12120 echo "But you don't seem to have a useable struct sigaction." >&4
12124 echo 'sigaction NOT found.' >&4
12127 set d_sigaction; eval $setvar
12128 $rm -f try try$_o try.c
12130 : see if sigprocmask exists
12131 set sigprocmask d_sigprocmask
12134 : see if sigsetjmp exists
12136 case "$d_sigsetjmp" in
12138 $cat >try.c <<'EOP'
12139 #include <setjmp.h>
12144 if (sigsetjmp(env,1))
12147 siglongjmp(env, 1);
12152 if eval $compile; then
12153 if $run ./try >/dev/null 2>&1; then
12154 echo "POSIX sigsetjmp found." >&4
12158 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12164 echo "sigsetjmp not found." >&4
12168 *) val="$d_sigsetjmp"
12169 case "$d_sigsetjmp" in
12170 $define) echo "POSIX sigsetjmp found." >&4;;
12171 $undef) echo "sigsetjmp not found." >&4;;
12179 : see if sockatmark exists
12180 set sockatmark d_sockatmark
12183 : see if prototype for sockatmark is available
12185 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12188 : see if socks5_init exists
12189 set socks5_init d_socks5_init
12192 : see if prototype for setresgid is available
12194 set d_sresgproto setresgid $i_unistd unistd.h
12197 : see if prototype for setresuid is available
12199 set d_sresuproto setresuid $i_unistd unistd.h
12202 : see if sys/stat.h is available
12203 set sys/stat.h i_sysstat
12207 : see if stat knows about block sizes
12209 echo "Checking to see if your struct stat has st_blocks field..." >&4
12210 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12214 : see if this is a sys/vfs.h system
12215 set sys/vfs.h i_sysvfs
12219 : see if this is a sys/statfs.h system
12220 set sys/statfs.h i_sysstatfs
12225 echo "Checking to see if your system supports struct statfs..." >&4
12226 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
12228 case "$d_statfs_s" in
12229 "$define") echo "Yes, it does." ;;
12230 *) echo "No, it doesn't." ;;
12235 : see if struct statfs knows about f_flags
12236 case "$d_statfs_s" in
12239 echo "Checking to see if your struct statfs has f_flags field..." >&4
12240 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
12244 set d_statfs_f_flags
12248 case "$d_statfs_f_flags" in
12249 "$define") echo "Yes, it does." ;;
12250 *) echo "No, it doesn't." ;;
12253 : see if _ptr and _cnt from stdio act std
12256 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12257 echo "(Looks like you have stdio.h from BSD.)"
12258 case "$stdio_ptr" in
12259 '') stdio_ptr='((fp)->_p)'
12262 *) ptr_lval=$d_stdio_ptr_lval;;
12264 case "$stdio_cnt" in
12265 '') stdio_cnt='((fp)->_r)'
12268 *) cnt_lval=$d_stdio_cnt_lval;;
12270 case "$stdio_base" in
12271 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12273 case "$stdio_bufsiz" in
12274 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12276 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12277 echo "(Looks like you have stdio.h from Linux.)"
12278 case "$stdio_ptr" in
12279 '') stdio_ptr='((fp)->_IO_read_ptr)'
12282 *) ptr_lval=$d_stdio_ptr_lval;;
12284 case "$stdio_cnt" in
12285 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12288 *) cnt_lval=$d_stdio_cnt_lval;;
12290 case "$stdio_base" in
12291 '') stdio_base='((fp)->_IO_read_base)';;
12293 case "$stdio_bufsiz" in
12294 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12297 case "$stdio_ptr" in
12298 '') stdio_ptr='((fp)->_ptr)'
12301 *) ptr_lval=$d_stdio_ptr_lval;;
12303 case "$stdio_cnt" in
12304 '') stdio_cnt='((fp)->_cnt)'
12307 *) cnt_lval=$d_stdio_cnt_lval;;
12309 case "$stdio_base" in
12310 '') stdio_base='((fp)->_base)';;
12312 case "$stdio_bufsiz" in
12313 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12317 : test whether _ptr and _cnt really work
12318 echo "Checking how std your stdio is..." >&4
12321 #define FILE_ptr(fp) $stdio_ptr
12322 #define FILE_cnt(fp) $stdio_cnt
12324 FILE *fp = fopen("try.c", "r");
12327 18 <= FILE_cnt(fp) &&
12328 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12336 if eval $compile && $to try.c; then
12337 if $run ./try; then
12338 echo "Your stdio acts pretty std."
12341 echo "Your stdio isn't very std."
12344 echo "Your stdio doesn't appear very std."
12350 : Can _ptr be used as an lvalue?
12351 case "$d_stdstdio$ptr_lval" in
12352 $define$define) val=$define ;;
12355 set d_stdio_ptr_lval
12358 : Can _cnt be used as an lvalue?
12359 case "$d_stdstdio$cnt_lval" in
12360 $define$define) val=$define ;;
12363 set d_stdio_cnt_lval
12367 : test whether setting _ptr sets _cnt as a side effect
12368 d_stdio_ptr_lval_sets_cnt="$undef"
12369 d_stdio_ptr_lval_nochange_cnt="$undef"
12370 case "$d_stdio_ptr_lval$d_stdstdio" in
12372 echo "Checking to see what happens if we set the stdio ptr..." >&4
12375 /* Can we scream? */
12376 /* Eat dust sed :-) */
12377 /* In the buffer space, no one can hear you scream. */
12378 #define FILE_ptr(fp) $stdio_ptr
12379 #define FILE_cnt(fp) $stdio_cnt
12380 #include <sys/types.h>
12382 FILE *fp = fopen("try.c", "r");
12387 puts("Fail even to read");
12390 c = getc(fp); /* Read away the first # */
12392 puts("Fail even to read");
12396 18 <= FILE_cnt(fp) &&
12397 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12399 puts("Fail even to read");
12402 ptr = (char*) FILE_ptr(fp);
12403 cnt = (size_t)FILE_cnt(fp);
12405 FILE_ptr(fp) += 42;
12407 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12408 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12411 if (FILE_cnt(fp) <= 20) {
12412 printf ("Fail (<20 chars to test)");
12415 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12416 puts("Fail compare");
12419 if (cnt == FILE_cnt(fp)) {
12420 puts("Pass_unchanged");
12423 if (FILE_cnt(fp) == (cnt - 42)) {
12424 puts("Pass_changed");
12427 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12433 if eval $compile && $to try.c; then
12434 case `$run ./try` in
12436 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
12437 d_stdio_ptr_lval_sets_cnt="$define" ;;
12439 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12440 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12442 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12444 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12447 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12453 : see if _base is also standard
12455 case "$d_stdstdio" in
12459 #define FILE_base(fp) $stdio_base
12460 #define FILE_bufsiz(fp) $stdio_bufsiz
12462 FILE *fp = fopen("try.c", "r");
12465 19 <= FILE_bufsiz(fp) &&
12466 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12473 if eval $compile && $to try.c; then
12474 if $run ./try; then
12475 echo "And its _base field acts std."
12478 echo "But its _base field isn't std."
12481 echo "However, it seems to be lacking the _base field."
12490 Checking how to access stdio streams by file descriptor number...
12492 case "$stdio_stream_array" in
12493 '') $cat >try.c <<EOCP
12496 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12500 for s in _iob __iob __sF
12502 set try -DSTDIO_STREAM_ARRAY=$s
12503 if eval $compile; then
12504 case "`$run ./try`" in
12505 yes) stdio_stream_array=$s; break ;;
12509 $rm -f try.* try$exe_ext
12511 case "$stdio_stream_array" in
12513 I can't figure out how to access stdio streams by file descriptor number.
12515 d_stdio_stream_array="$undef"
12518 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12520 d_stdio_stream_array="$define"
12524 : see if strcoll exists
12525 set strcoll d_strcoll
12528 : check for structure copying
12530 echo "Checking to see if your C compiler can copy structs..." >&4
12531 $cat >try.c <<'EOCP'
12541 if $cc -c try.c >/dev/null 2>&1 ; then
12543 echo "Yup, it can."
12546 echo "Nope, it can't."
12552 : see if strerror and/or sys_errlist[] exist
12554 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12555 if set strerror val -f d_strerror; eval $csym; $val; then
12556 echo 'strerror() found.' >&4
12557 d_strerror="$define"
12558 d_strerrm='strerror(e)'
12559 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12560 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
12561 d_syserrlst="$define"
12563 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12564 d_syserrlst="$undef"
12566 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12567 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12568 echo 'strerror() found in string header.' >&4
12569 d_strerror="$define"
12570 d_strerrm='strerror(e)'
12571 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12572 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12573 d_syserrlst="$define"
12575 echo "(You don't appear to have any sys_errlist[], how can this be?)"
12576 d_syserrlst="$undef"
12578 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12579 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12580 d_strerror="$undef"
12581 d_syserrlst="$define"
12582 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12584 echo 'strerror() and sys_errlist[] NOT found.' >&4
12585 d_strerror="$undef"
12586 d_syserrlst="$undef"
12587 d_strerrm='"unknown"'
12591 : see if strftime exists
12592 set strftime d_strftime
12595 : see if strtod exists
12596 set strtod d_strtod
12599 : see if strtol exists
12600 set strtol d_strtol
12603 : see if strtold exists
12604 set strtold d_strtold
12607 : see if strtoll exists
12608 set strtoll d_strtoll
12611 case "$d_longlong-$d_strtoll" in
12614 Checking whether your strtoll() works okay...
12616 $cat >try.c <<'EOCP'
12619 #define strtoll __strtoll
12622 #define strtoll _strtoll
12625 extern long long int strtoll(char *s, char **, int);
12626 static int bad = 0;
12627 int check(char *s, long long ell, int een) {
12630 gll = strtoll(s, 0, 10);
12631 if (!((gll == ell) && (errno == een)))
12635 check(" 1", 1LL, 0);
12636 check(" 0", 0LL, 0);
12637 check("-1", -1LL, 0);
12638 check("-9223372036854775808", -9223372036854775808LL, 0);
12639 check("-9223372036854775808", -9223372036854775808LL, 0);
12640 check(" 9223372036854775807", 9223372036854775807LL, 0);
12641 check("-9223372036854775808", -9223372036854775808LL, 0);
12642 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12643 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12649 if eval $compile; then
12652 ok) echo "Your strtoll() seems to be working okay." ;;
12654 Your strtoll() doesn't seem to be working okay.
12660 echo "(I can't seem to compile the test program--assuming it doesn't)"
12666 : see if strtoq exists
12667 set strtoq d_strtoq
12670 : see if strtoul exists
12671 set strtoul d_strtoul
12674 case "$d_strtoul" in
12677 Checking whether your strtoul() works okay...
12679 $cat >try.c <<'EOCP'
12682 extern unsigned long int strtoul(char *s, char **, int);
12683 static int bad = 0;
12684 void check(char *s, unsigned long eul, int een) {
12687 gul = strtoul(s, 0, 10);
12688 if (!((gul == eul) && (errno == een)))
12692 check(" 1", 1L, 0);
12693 check(" 0", 0L, 0);
12695 case "$longsize" in
12697 $cat >>try.c <<'EOCP'
12698 check("18446744073709551615", 18446744073709551615UL, 0);
12699 check("18446744073709551616", 18446744073709551615UL, ERANGE);
12700 #if 0 /* strtoul() for /^-/ strings is undefined. */
12701 check("-1", 18446744073709551615UL, 0);
12702 check("-18446744073709551614", 2, 0);
12703 check("-18446744073709551615", 1, 0);
12704 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12705 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12710 $cat >>try.c <<'EOCP'
12711 check("4294967295", 4294967295UL, 0);
12712 check("4294967296", 4294967295UL, ERANGE);
12713 #if 0 /* strtoul() for /^-/ strings is undefined. */
12714 check("-1", 4294967295UL, 0);
12715 check("-4294967294", 2, 0);
12716 check("-4294967295", 1, 0);
12717 check("-4294967296", 4294967295UL, ERANGE);
12718 check("-4294967297", 4294967295UL, ERANGE);
12723 : Should we write these tests to be more portable by sprintf-ing
12724 : ~0 and then manipulating that char string as input for strtol?
12727 $cat >>try.c <<'EOCP'
12734 if eval $compile; then
12735 case "`$run ./try`" in
12736 ok) echo "Your strtoul() seems to be working okay." ;;
12738 Your strtoul() doesn't seem to be working okay.
12747 : see if strtoull exists
12748 set strtoull d_strtoull
12751 case "$d_longlong-$d_strtoull" in
12754 Checking whether your strtoull() works okay...
12756 $cat >try.c <<'EOCP'
12759 #define strtoull __strtoull
12762 extern unsigned long long int strtoull(char *s, char **, int);
12763 static int bad = 0;
12764 int check(char *s, long long eull, int een) {
12767 gull = strtoull(s, 0, 10);
12768 if (!((gull == eull) && (errno == een)))
12772 check(" 1", 1LL, 0);
12773 check(" 0", 0LL, 0);
12774 check("18446744073709551615", 18446744073709551615ULL, 0);
12775 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12776 #if 0 /* strtoull() for /^-/ strings is undefined. */
12777 check("-1", 18446744073709551615ULL, 0);
12778 check("-18446744073709551614", 2LL, 0);
12779 check("-18446744073709551615", 1LL, 0);
12780 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12781 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12788 if eval $compile; then
12789 case "`$run ./try`" in
12790 ok) echo "Your strtoull() seems to be working okay." ;;
12792 Your strtoull() doesn't seem to be working okay.
12794 d_strtoull="$undef"
12801 : see if strtouq exists
12802 set strtouq d_strtouq
12805 case "$d_strtouq" in
12808 Checking whether your strtouq() works okay...
12810 $cat >try.c <<'EOCP'
12813 extern unsigned long long int strtouq(char *s, char **, int);
12814 static int bad = 0;
12815 void check(char *s, unsigned long long eull, int een) {
12816 unsigned long long gull;
12818 gull = strtouq(s, 0, 10);
12819 if (!((gull == eull) && (errno == een)))
12823 check(" 1", 1LL, 0);
12824 check(" 0", 0LL, 0);
12825 check("18446744073709551615", 18446744073709551615ULL, 0);
12826 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12827 #if 0 /* strtouq() for /^-/ strings is undefined. */
12828 check("-1", 18446744073709551615ULL, 0);
12829 check("-18446744073709551614", 2LL, 0);
12830 check("-18446744073709551615", 1LL, 0);
12831 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12832 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12840 if eval $compile; then
12841 case "`$run ./try`" in
12842 ok) echo "Your strtouq() seems to be working okay." ;;
12844 Your strtouq() doesn't seem to be working okay.
12853 : see if strxfrm exists
12854 set strxfrm d_strxfrm
12857 : see if symlink exists
12858 set symlink d_symlink
12861 : see if syscall exists
12862 set syscall d_syscall
12865 : see if prototype for syscall is available
12867 set d_syscallproto syscall $i_unistd unistd.h
12870 : see if sysconf exists
12871 set sysconf d_sysconf
12874 : see if system exists
12875 set system d_system
12878 : see if tcgetpgrp exists
12879 set tcgetpgrp d_tcgetpgrp
12882 : see if tcsetpgrp exists
12883 set tcsetpgrp d_tcsetpgrp
12886 : see if prototype for telldir is available
12888 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12891 : see if this is a sys/times.h system
12892 set sys/times.h i_systimes
12895 : see if times exists
12897 if set times val -f d_times; eval $csym; $val; then
12898 echo 'times() found.' >&4
12901 case "$i_systimes" in
12902 "$define") inc='sys/times.h';;
12904 rp="What is the type returned by times() on this system?"
12905 set clock_t clocktype long stdio.h sys/types.h $inc
12908 echo 'times() NOT found, hope that will do.' >&4
12913 : see if truncate exists
12914 set truncate d_truncate
12917 : see if tzname[] exists
12919 if set tzname val -a d_tzname; eval $csym; $val; then
12921 echo 'tzname[] found.' >&4
12924 echo 'tzname[] NOT found.' >&4
12930 next|rhapsody|darwin) multiarch="$define" ;;
12932 case "$multiarch" in
12933 ''|[nN]*) multiarch="$undef" ;;
12936 : check for ordering of bytes in a long
12938 case "$usecrosscompile$multiarch" in
12941 You seem to be either cross-compiling or doing a multiarchitecture build,
12942 skipping the byteorder check.
12948 case "$byteorder" in
12951 In the following, larger digits indicate more significance. A big-endian
12952 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12953 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12954 machines may have weird orders like 3412. A Cray will report 87654321,
12955 an Alpha will report 12345678. If the test program works the default is
12957 I'm now running the test program...
12959 $cat >try.c <<'EOCP'
12966 char c[sizeof(long)];
12969 if (sizeof(long) > 4)
12970 u.l = (0x08070605L << 32) | 0x04030201L;
12973 for (i = 0; i < sizeof(long); i++)
12974 printf("%c", u.c[i]+'0');
12981 if eval $compile && ./try > /dev/null; then
12984 [1-4][1-4][1-4][1-4]|12345678|87654321)
12985 echo "(The test program ran ok.)"
12986 echo "byteorder=$dflt"
12989 ????|????????) echo "(The test program ran ok.)" ;;
12990 *) echo "(The test program didn't run right for some reason.)" ;;
12995 (I can't seem to compile the test program. Guessing big-endian...)
12998 case "$xxx_prompt" in
13000 rp="What is the order of bytes in a long?"
13016 Checking to see whether you can access character data unalignedly...
13020 #define U32 $u32type
13021 #define BYTEORDER $byteorder
13023 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13024 U8 buf[] = "\0\0\0\1\0\0\0\0";
13028 if (sizeof(U32) != 4) {
13029 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13035 for (i = 0; i < 4; i++) {
13036 up = (U32*)(buf + i);
13037 if (! ((*up == 1 << (8*i)) || /* big-endian */
13038 (*up == 1 << (8*(3-i))) /* little-endian */
13042 printf("read failed (%x)\n", *up);
13048 for (i = 0; i < 4; i++) {
13049 up = (U32*)(buf + i);
13051 if (*up != 0xBeef) {
13052 printf("write failed (%x)\n", *up);
13066 if eval $compile_ok; then
13067 echo "(Testing for character data alignment may dump core.)" >&4
13068 $run ./try 2>&1 >/dev/null
13071 You can access character data pretty unalignedly.
13073 d_u32align="$undef"
13076 It seems that you must access character data in an aligned manner.
13078 d_u32align="$define"
13081 $rm -f core core.try.* try.core
13083 rp='Can you access character data at unaligned addresses?'
13087 [yY]*) d_u32align="$undef" ;;
13088 *) d_u32align="$define" ;;
13092 : see if ualarm exists
13093 set ualarm d_ualarm
13096 : see if umask exists
13100 : see if usleep exists
13101 set usleep d_usleep
13104 : see if prototype for usleep is available
13106 set d_usleepproto usleep $i_unistd unistd.h
13109 : see if ustat exists
13113 : backward compatibility for d_hvfork
13114 if test X$d_hvfork != X; then
13115 d_vfork="$d_hvfork"
13118 : see if there is a vfork
13123 : Ok, but do we want to use it. vfork is reportedly unreliable in
13124 : perl on Solaris 2.x, and probably elsewhere.
13128 case "$usevfork" in
13134 Perl can only use a vfork() that doesn't suffer from strict
13135 restrictions on calling functions or modifying global data in
13136 the child. For example, glibc-2.1 contains such a vfork()
13137 that is unsuitable. If your system provides a proper fork()
13138 call, chances are that you do NOT want perl to use vfork().
13141 rp="Do you still want to use vfork()?"
13146 echo "Ok, we won't use vfork()."
13155 $define) usevfork='true';;
13156 *) usevfork='false';;
13159 : see if this is an sysdir system
13160 set sys/dir.h i_sysdir
13163 : see if this is an sysndir system
13164 set sys/ndir.h i_sysndir
13167 : see if closedir exists
13168 set closedir d_closedir
13171 case "$d_closedir" in
13174 echo "Checking whether closedir() returns a status..." >&4
13176 #$i_dirent I_DIRENT /**/
13177 #$i_sysdir I_SYS_DIR /**/
13178 #$i_sysndir I_SYS_NDIR /**/
13179 #$i_systypes I_SYS_TYPES /**/
13181 #if defined(I_SYS_TYPES)
13182 #include <sys/types.h>
13184 #if defined(I_DIRENT)
13185 #include <dirent.h>
13186 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13187 #include <sys/dir.h>
13191 #include <sys/ndir.h>
13195 #include <ndir.h> /* may be wrong in the future */
13197 #include <sys/dir.h>
13202 int main() { return closedir(opendir(".")); }
13205 if eval $compile_ok; then
13206 if $run ./try > /dev/null 2>&1 ; then
13207 echo "Yes, it does."
13210 echo "No, it doesn't."
13214 echo "(I can't seem to compile the test program--assuming it doesn't)"
13222 set d_void_closedir
13225 : see if there is a wait4
13229 : see if waitpid exists
13230 set waitpid d_waitpid
13233 : see if wcstombs exists
13234 set wcstombs d_wcstombs
13237 : see if wctomb exists
13238 set wctomb d_wctomb
13241 : see if writev exists
13242 set writev d_writev
13245 : preserve RCS keywords in files with variable substitution, grrr
13250 Revision='$Revision'
13252 : check for alignment requirements
13254 case "$usecrosscompile$multiarch" in
13257 You seem to be either cross-compiling or doing a multiarchitecture build,
13258 skipping the memory alignment check.
13261 case "$alignbytes" in
13262 '') alignbytes=8 ;;
13266 case "$alignbytes" in
13267 '') echo "Checking alignment constraints..." >&4
13268 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13269 $cat >try.c <<'EOCP'
13270 typedef long double NV;
13273 $cat >try.c <<'EOCP'
13277 $cat >>try.c <<'EOCP'
13285 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13290 if eval $compile_ok; then
13294 echo "(I can't seem to compile the test program...)"
13297 *) dflt="$alignbytes"
13300 rp="Doubles must be aligned on a how-many-byte boundary?"
13308 : set the base revision
13311 : how do we catenate cpp tokens here?
13313 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13314 $cat >cpp_stuff.c <<'EOCP'
13315 #define RCAT(a,b)a/**/b
13316 #define ACAT(a,b)a ## b
13320 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13321 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13322 echo "Oh! Smells like ANSI's been here." >&4
13323 echo "We can catify or stringify, separately or together!"
13325 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13326 echo "Ah, yes! The good old days!" >&4
13327 echo "However, in the good old days we don't know how to stringify and"
13328 echo "catify at the same time."
13332 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13333 to have to edit the values of CAT[2-5] in config.h...
13335 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13339 : see if this is a db.h system
13345 : Check db version.
13347 echo "Checking Berkeley DB version ..." >&4
13353 #include <sys/types.h>
13356 int main(int argc, char *argv[])
13358 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13359 int Major, Minor, Patch ;
13360 unsigned long Version ;
13361 (void)db_version(&Major, &Minor, &Patch) ;
13363 printf("%d %d %d %d %d %d\n",
13364 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13365 Major, Minor, Patch);
13368 printf("You have Berkeley DB Version 2 or greater.\n");
13370 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13371 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13372 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13373 Major, Minor, Patch) ;
13375 /* check that db.h & libdb are compatible */
13376 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13377 printf("db.h and libdb are incompatible.\n") ;
13381 printf("db.h and libdb are compatible.\n") ;
13383 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13384 + DB_VERSION_PATCH ;
13386 /* needs to be >= 2.3.4 */
13387 if (Version < 2003004) {
13388 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13389 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13395 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13400 printf("You have Berkeley DB Version 1.\n");
13401 exit(0); /* DB version < 2: the coast is clear. */
13403 exit(1); /* <db.h> not Berkeley DB? */
13409 if eval $compile_ok && $run ./try; then
13410 echo 'Looks OK.' >&4
13412 db_version_major=$1
13413 db_version_minor=$2
13414 db_version_patch=$3
13416 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13420 : Remove db from list of libraries to use
13421 echo "Removing unusable -ldb from library list" >&4
13422 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13425 echo "libs = $libs" >&4
13435 : Check the return type needed for hash
13437 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13443 #include <sys/types.h>
13446 #ifndef DB_VERSION_MAJOR
13447 u_int32_t hash_cb (ptr, size)
13455 info.hash = hash_cb;
13459 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13460 if $contains warning try.out >>/dev/null 2>&1 ; then
13463 db_hashtype='u_int32_t'
13466 : XXX Maybe we should just give up here.
13467 db_hashtype=u_int32_t
13469 echo "Help: I can't seem to compile the db test program." >&4
13470 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13473 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13475 *) db_hashtype=u_int32_t
13480 : Check the return type needed for prefix
13482 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13488 #include <sys/types.h>
13491 #ifndef DB_VERSION_MAJOR
13492 size_t prefix_cb (key1, key2)
13500 info.prefix = prefix_cb;
13504 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13505 if $contains warning try.out >>/dev/null 2>&1 ; then
13506 db_prefixtype='int'
13508 db_prefixtype='size_t'
13511 db_prefixtype='size_t'
13512 : XXX Maybe we should just give up here.
13514 echo "Help: I can't seem to compile the db test program." >&4
13515 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13518 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13520 *) db_prefixtype='size_t'
13525 : How can we generate normalized random numbers ?
13527 echo "Looking for a random number function..." >&4
13528 case "$randfunc" in
13530 if set drand48 val -f; eval $csym; $val; then
13532 echo "Good, found drand48()." >&4
13533 elif set random val -f; eval $csym; $val; then
13535 echo "OK, found random()." >&4
13538 echo "Yick, looks like I have to use rand()." >&4
13549 *-Dmy_rand=*|*-Dmy_srand=*)
13550 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13551 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13552 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13553 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13557 while $test "$cont"; do
13558 rp="Use which function to generate random numbers?"
13560 if $test "$ans" = "$dflt"; then
13566 if set $ans val -f; eval $csym; $val; then
13570 rp="I cannot find function $ans. Use that name anyway?"
13579 case "$randfunc" in
13581 drand01="drand48()"
13587 case "$randbits" in
13589 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13591 #$i_unistd I_UNISTD
13592 #$i_stdlib I_STDLIB
13595 # include <unistd.h>
13598 # include <stdlib.h>
13603 register unsigned long tmp;
13604 register unsigned long max = 0L;
13606 for (i = 1000; i; i--) {
13607 tmp = (unsigned long) $randfunc();
13608 if (tmp > max) max = tmp;
13610 for (i = 0; max; i++)
13616 if eval $compile_ok; then
13620 echo "(I can't seem to compile the test program...)"
13627 rp="How many bits does your $randfunc() function produce?"
13631 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13632 seedfunc="s$randfunc"
13633 randseedtype=unsigned
13637 rp="How many bits does your $randfunc() function produce?"
13640 seedfunc="s$randfunc"
13641 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13642 if set $seedfunc val -f; eval $csym; $val; then
13643 echo "(Using $seedfunc() to seed random generator)"
13645 echo "(Warning: no $seedfunc() to seed random generator)"
13648 randseedtype=unsigned
13656 echo "Determining whether or not we are on an EBCDIC system..." >&4
13657 $cat >try.c <<'EOM'
13660 if ('M'==0xd4) return 0;
13667 if eval $compile_ok; then
13668 if $run ./try; then
13669 echo "You seem to speak EBCDIC." >&4
13672 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13675 echo "I'm unable to compile the test program." >&4
13676 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13684 Checking how to flush all pending stdio output...
13686 # I only know how to find the first 32 possibly open files on SunOS.
13687 # See also hints/sunos_4_1.sh and util.c --AD
13689 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13691 $cat >>try.c <<EOCP
13693 #$i_unistd I_UNISTD
13695 # include <unistd.h>
13697 #$d_sysconf HAS_SYSCONF
13698 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13699 #ifdef HAS_STDIO_STREAM_ARRAY
13700 # define STDIO_STREAM_ARRAY $stdio_stream_array
13705 p = fopen("try.out", "w");
13709 # ifdef TRY_FPRINTF
13713 #ifdef TRY_FFLUSH_NULL
13716 #ifdef TRY_FFLUSH_ALL
13718 long open_max = -1;
13719 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13720 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13722 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13723 open_max = sysconf(_SC_OPEN_MAX);
13726 open_max = FOPEN_MAX;
13729 open_max = OPEN_MAX;
13738 # ifdef HAS_STDIO_STREAM_ARRAY
13739 if (open_max > 0) {
13741 for (i = 0; i < open_max; i++)
13742 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13743 STDIO_STREAM_ARRAY[i]._file < open_max &&
13744 STDIO_STREAM_ARRAY[i]._flag)
13745 fflush(&STDIO_STREAM_ARRAY[i]);
13753 : first we have to find out how _not_ to flush
13755 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13757 set try -DTRY_FPUTC
13758 if eval $compile; then
13759 $run ./try 2>/dev/null
13762 if $test ! -s try.out -a "X$?" = X42; then
13768 set try -DTRY_FPRINTF
13769 if eval $compile; then
13770 $run ./try 2>/dev/null
13773 if $test ! -s try.out -a "X$?" = X42; then
13774 output=-DTRY_FPRINTF
13780 : check for fflush NULL behaviour
13781 case "$fflushNULL" in
13782 '') set try -DTRY_FFLUSH_NULL $output
13783 if eval $compile; then
13784 $run ./try 2>/dev/null
13788 if $test -s try.out -a "X$code" = X42; then
13789 fflushNULL="`$cat try.out`"
13791 if $test "X$code" != X42; then
13793 (If this test failed, don't worry, we'll try another method shortly.)
13798 $rm -f core try.core core.try.*
13799 case "$fflushNULL" in
13801 Your fflush(NULL) works okay for output streams.
13802 Let's see if it clobbers input pipes...
13804 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13805 # bug that improperly flushes the input end of pipes. So we avoid the
13806 # autoflush on fork/system/exec support for now. :-(
13807 $cat >tryp.c <<EOCP
13810 main(int argc, char **argv)
13816 while ((i = getc(stdin)) != -1
13817 && (*bp++ = i) != '\n'
13818 && bp < &buf[1024])
13821 fprintf(stdout, "%s", buf);
13829 fflushNULL="$define"
13831 if eval $compile; then
13833 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13834 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13836 fflush(NULL) seems to behave okay with input streams.
13838 fflushNULL="$define"
13841 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
13843 fflushNULL="$undef"
13846 $rm -f core tryp.c tryp.core core.tryp.*
13849 Your fflush(NULL) isn't working (contrary to ANSI C).
13851 fflushNULL="$undef"
13854 Cannot figure out whether your fflush(NULL) works or not.
13855 I'm assuming it doesn't (contrary to ANSI C).
13857 fflushNULL="$undef"
13861 $define|true|[yY]*)
13862 fflushNULL="$define"
13865 fflushNULL="$undef"
13868 : check explicit looping only if NULL did not work, and if the pipe
13869 : bug does not show up on an explicit flush too
13870 case "$fflushNULL" in
13872 $cat >tryp.c <<EOCP
13875 main(int argc, char **argv)
13881 while ((i = getc(stdin)) != -1
13882 && (*bp++ = i) != '\n'
13883 && bp < &buf[1024])
13886 fprintf(stdout, "%s", buf);
13895 if eval $compile; then
13897 $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13898 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13900 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13902 : now check for fflushall behaviour
13903 case "$fflushall" in
13904 '') set try -DTRY_FFLUSH_ALL $output
13905 if eval $compile; then
13907 (Now testing the other method--but note that this also may fail.)
13910 $run ./try 2>/dev/null
13911 if $test -s try.out -a "X$?" = X42; then
13912 fflushall="`$cat try.out`"
13915 $rm -f core try.core core.try.*
13916 case "$fflushall" in
13918 Whew. Flushing explicitly all the stdio streams works.
13920 fflushall="$define"
13923 Sigh. Flushing explicitly all the stdio streams doesn't work.
13928 Cannot figure out whether flushing stdio streams explicitly works or not.
13929 I'm assuming it doesn't.
13935 "$define"|true|[yY]*)
13936 fflushall="$define"
13944 All is futile. Even fflush(stdin) clobbers input pipes!
13951 $rm -f core tryp.c tryp.core core.tryp.*
13953 *) fflushall="$undef"
13957 case "$fflushNULL$fflushall" in
13960 OK, I give up. I cannot figure out how to flush pending stdio output.
13961 We won't be flushing handles at all before fork/exec/popen.
13965 $rm -f try.* try$exe_ext
13967 : Store the full pathname to the ar program for use in the C program
13968 : Respect a hint or command line value for full_ar.
13973 : Store the full pathname to the sed program for use in the C program
13976 : see what type gids are declared as in the kernel
13978 echo "Looking for the type for group ids returned by getgid()."
13979 set gid_t gidtype xxx stdio.h sys/types.h
13983 xxx=`./findhdr sys/user.h`
13984 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13986 unsigned) dflt="$1 $2" ;;
13990 *) dflt="$gidtype";;
13993 gid_t) echo "gid_t found." ;;
13994 *) rp="What is the type for group ids returned by getgid()?"
14002 *_t) zzz="$gidtype" ;;
14005 echo "Checking the size of $zzz..." >&4
14007 #include <sys/types.h>
14010 printf("%d\n", (int)sizeof($gidtype));
14015 if eval $compile_ok; then
14019 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14022 echo "Your $zzz is $gidsize bytes long."
14027 echo "(I can't compile the test program--guessing $gidsize.)" >&4
14033 *_t) zzz="$gidtype" ;;
14036 echo "Checking the sign of $zzz..." >&4
14038 #include <sys/types.h>
14049 if eval $compile; then
14053 echo "(I can't execute the test program--guessing unsigned.)" >&4
14057 1) echo "Your $zzz is unsigned." ;;
14058 -1) echo "Your $zzz is signed." ;;
14064 echo "(I can't compile the test program--guessing unsigned.)" >&4
14070 if $test X"$quadtype" != X; then
14072 echo "Checking how to print 64-bit integers..." >&4
14074 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14075 $cat >try.c <<'EOCP'
14076 #include <sys/types.h>
14079 int q = 12345678901;
14080 printf("%ld\n", q);
14084 if eval $compile; then
14088 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14089 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14090 echo "We will use %d."
14096 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14097 $cat >try.c <<'EOCP'
14098 #include <sys/types.h>
14101 long q = 12345678901;
14102 printf("%ld\n", q);
14106 if eval $compile; then
14110 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14111 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14112 echo "We will use %ld."
14118 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14119 $cat >try.c <<'EOCP'
14120 #include <sys/types.h>
14121 #include <inttypes.h>
14124 int64_t q = 12345678901;
14125 printf("%" PRId64 "\n", q);
14129 if eval $compile; then
14133 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14134 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14135 echo "We will use the C9X style."
14141 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14143 #include <sys/types.h>
14146 $quadtype q = 12345678901;
14147 printf("%Ld\n", q);
14151 if eval $compile; then
14155 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14156 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14157 echo "We will use %Ld."
14163 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14164 $cat >try.c <<'EOCP'
14165 #include <sys/types.h>
14168 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14169 printf("%lld\n", q);
14173 if eval $compile; then
14177 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14178 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14179 echo "We will use the %lld style."
14185 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14187 #include <sys/types.h>
14190 $quadtype q = 12345678901;
14191 printf("%qd\n", q);
14195 if eval $compile; then
14199 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14200 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14201 echo "We will use %qd."
14207 if $test X"$sPRId64" = X; then
14208 echo "Cannot figure out how to print 64-bit integers." >&4
14216 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14217 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14219 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14220 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14226 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14228 if $test X"$ivsize" = X8; then
14229 ivdformat="$sPRId64"
14230 uvuformat="$sPRIu64"
14231 uvoformat="$sPRIo64"
14232 uvxformat="$sPRIx64"
14233 uvXUformat="$sPRIXU64"
14235 if $test X"$ivsize" = X"$longsize"; then
14242 if $test X"$ivsize" = X"$intsize"; then
14250 if $test X"$ivsize" = X"$shortsize"; then
14261 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14262 nveformat="$sPRIeldbl"
14263 nvfformat="$sPRIfldbl"
14264 nvgformat="$sPRIgldbl"
14265 nvEUformat="$sPRIEUldbl"
14266 nvFUformat="$sPRIFUldbl"
14267 nvGUformat="$sPRIGUldbl"
14277 case "$ivdformat" in
14278 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14285 $echo "Checking the format string to be used for gids..." >&4
14288 -1) if $test X"$gidsize" = X"$ivsize"; then
14289 gidformat="$ivdformat"
14291 if $test X"$gidsize" = X"$longsize"; then
14294 if $test X"$gidsize" = X"$intsize"; then
14297 if $test X"$gidsize" = X"$shortsize"; then
14304 *) if $test X"$gidsize" = X"$uvsize"; then
14305 gidformat="$uvuformat"
14307 if $test X"$gidsize" = X"$longsize"; then
14310 if $test X"$gidsize" = X"$intsize"; then
14313 if $test X"$gidsize" = X"$shortsize"; then
14322 : see if getgroups exists
14323 set getgroups d_getgrps
14326 : see if setgroups exists
14327 set setgroups d_setgrps
14331 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14333 case "$d_getgrps$d_setgrps" in
14335 case "$groupstype" in
14336 '') dflt="$gidtype" ;;
14337 *) dflt="$groupstype" ;;
14340 What type of pointer is the second argument to getgroups() and setgroups()?
14341 Usually this is the same as group ids, $gidtype, but not always.
14344 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14348 *) groupstype="$gidtype";;
14352 echo "Checking if your $make program sets \$(MAKE)..." >&4
14353 case "$make_set_make" in
14355 $sed 's/^X //' > testmake.mak << 'EOF'
14357 X @echo 'maketemp="$(MAKE)"'
14359 case "`$make -f testmake.mak 2>/dev/null`" in
14360 *maketemp=*) make_set_make='#' ;;
14361 *) make_set_make="MAKE=$make" ;;
14363 $rm -f testmake.mak
14366 case "$make_set_make" in
14367 '#') echo "Yup, it does.";;
14368 *) echo "Nope, it doesn't.";;
14371 : see what type is used for mode_t
14372 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14373 set mode_t modetype int stdio.h sys/types.h
14376 : see if stdarg is available
14378 if $test `./findhdr stdarg.h`; then
14379 echo "<stdarg.h> found." >&4
14382 echo "<stdarg.h> NOT found." >&4
14386 : see if varags is available
14388 if $test `./findhdr varargs.h`; then
14389 echo "<varargs.h> found." >&4
14391 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14394 : set up the varargs testing programs
14395 $cat > varargs.c <<EOP
14397 #include <stdarg.h>
14400 #include <varargs.h>
14404 int f(char *p, ...)
14418 p = va_arg(ap, char *);
14423 $cat > varargs <<EOP
14425 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14434 : now check which varargs header should be included
14439 if `./varargs I_STDARG`; then
14441 elif `./varargs I_VARARGS`; then
14446 if `./varargs I_VARARGS`; then
14453 echo "I could not find the definition for va_dcl... You have problems..." >&4
14454 val="$undef"; set i_stdarg; eval $setvar
14455 val="$undef"; set i_varargs; eval $setvar
14460 case "$i_varhdr" in
14462 val="$define"; set i_stdarg; eval $setvar
14463 val="$undef"; set i_varargs; eval $setvar
14466 val="$undef"; set i_stdarg; eval $setvar
14467 val="$define"; set i_varargs; eval $setvar
14470 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14474 : see if we need va_copy
14476 case "$i_stdarg" in
14479 #include <stdarg.h>
14481 #$i_stdlib I_STDLIB
14483 #include <stdlib.h>
14485 #include <signal.h>
14488 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14490 return vfprintf(f, fmt, *valp);
14494 myvfprintf(FILE *f, const char *fmt, va_list val)
14496 return ivfprintf(f, fmt, &val);
14500 myprintf(char *fmt, ...)
14503 va_start(val, fmt);
14504 return myvfprintf(stdout, fmt, val);
14508 main(int ac, char **av)
14510 signal(SIGSEGV, exit);
14512 myprintf("%s%cs all right, then\n", "that", '\'');
14517 if eval $compile && $run ./try 2>&1 >/dev/null; then
14518 case "`$run ./try`" in
14519 "that's all right, then")
14525 yes) echo "It seems that you don't need va_copy()." >&4
14526 need_va_copy="$undef"
14528 *) echo "It seems that va_copy() or similar will be needed." >&4
14529 need_va_copy="$define"
14532 $rm -f try.* core core.* *.core *.core.*
14534 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14538 : define a fucntion to check prototypes
14539 $cat > protochk <<EOSH
14542 optimize="$optimize"
14544 prototype="$prototype"
14549 $cat >> protochk <<'EOSH'
14554 while test $# -ge 2; do
14556 $define) echo "#include <$2>" >> try.c ;;
14557 literal) echo "$2" >> try.c ;;
14561 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
14562 cat >> try.c <<'EOCP'
14563 #ifdef CAN_PROTOTYPE
14564 #define _(args) args
14569 echo "$foo" >> try.c
14570 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14571 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14577 $eunicefix protochk
14579 : see what type is used for size_t
14580 rp="What is the type used for the length parameter for string functions?"
14581 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14584 : check for type of arguments to gethostbyaddr.
14585 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14586 case "$d_gethbyaddr" in
14590 Checking to see what type of arguments are accepted by gethostbyaddr().
14592 hdrs="$define sys/types.h
14593 $d_socket sys/socket.h
14594 $i_niin netinet/in.h
14596 $i_unistd unistd.h"
14597 : The first arg can 'char *' or 'void *'
14598 : The second arg is some of integral type
14599 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14600 for yyy in size_t long int; do
14601 case "$netdb_host_type" in
14602 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14603 if ./protochk "$try" $hdrs; then
14604 echo "Your system accepts $xxx for the first arg."
14605 echo "...and $yyy for the second arg."
14606 netdb_host_type="$xxx"
14607 netdb_hlen_type="$yyy"
14613 : In case none of those worked, prompt the user.
14614 case "$netdb_host_type" in
14615 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14618 netdb_host_type=$ans
14619 rp='What is the type for the 2nd argument to gethostbyaddr?'
14622 netdb_hlen_type=$ans
14626 *) : no gethostbyaddr, so pick harmless defaults
14627 netdb_host_type='char *'
14628 netdb_hlen_type="$sizetype"
14631 # Remove the "const" if needed. -- but then we'll have a
14633 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14636 : check for type of argument to gethostbyname.
14637 if test "X$netdb_name_type" = X ; then
14638 case "$d_gethbyname" in
14642 Checking to see what type of argument is accepted by gethostbyname().
14644 hdrs="$define sys/types.h
14645 $d_socket sys/socket.h
14646 $i_niin netinet/in.h
14648 $i_unistd unistd.h"
14649 for xxx in "const char *" "char *"; do
14650 case "$netdb_name_type" in
14651 '') try="extern struct hostent *gethostbyname($xxx);"
14652 if ./protochk "$try" $hdrs; then
14653 echo "Your system accepts $xxx."
14654 netdb_name_type="$xxx"
14659 : In case none of those worked, prompt the user.
14660 case "$netdb_name_type" in
14661 '') rp='What is the type for the 1st argument to gethostbyname?'
14664 netdb_name_type=$ans
14668 *) : no gethostbyname, so pick harmless default
14669 netdb_name_type='char *'
14674 : check for type of 1st argument to getnetbyaddr.
14675 if test "X$netdb_net_type" = X ; then
14676 case "$d_getnbyaddr" in
14680 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14682 hdrs="$define sys/types.h
14683 $d_socket sys/socket.h
14684 $i_niin netinet/in.h
14686 $i_unistd unistd.h"
14687 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14688 case "$netdb_net_type" in
14689 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14690 if ./protochk "$try" $hdrs; then
14691 echo "Your system accepts $xxx."
14692 netdb_net_type="$xxx"
14697 : In case none of those worked, prompt the user.
14698 case "$netdb_net_type" in
14699 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14702 netdb_net_type=$ans
14706 *) : no getnetbyaddr, so pick harmless default
14707 netdb_net_type='long'
14711 : locate the preferred pager for this system
14717 [a-zA-Z]:/*) dflt=$pg;;
14721 [a-zA-Z]:/*) dflt=$more;;
14725 [a-zA-Z]:/*) dflt=$less;;
14728 '') dflt=/usr/ucb/more;;
14735 rp='What pager is used on your system?'
14739 : see what type pids are declared as in the kernel
14740 rp="What is the type of process ids on this system?"
14741 set pid_t pidtype int stdio.h sys/types.h
14744 : Find earliest binary compatible site_perl subdirectory perl can use.
14745 case "$bincompat5005" in
14746 "$define") xs_apiversion='5.005' ;;
14747 *) xs_apiversion=$version ;; # The current site_perl version.
14749 : Find earliest pure perl site_perl subdirectory perl can use.
14750 : The versioned directories started at 5.005.
14751 pm_apiversion='5.005'
14753 : see if ar generates random libraries by itself
14755 echo "Checking how to generate random libraries on your machine..." >&4
14756 echo 'int bar1() { return bar2(); }' > bar1.c
14757 echo 'int bar2() { return 2; }' > bar2.c
14758 $cat > foo.c <<'EOP'
14759 int main() { printf("%d\n", bar1()); exit(0); }
14761 $cc $ccflags -c bar1.c >/dev/null 2>&1
14762 $cc $ccflags -c bar2.c >/dev/null 2>&1
14763 $cc $ccflags -c foo.c >/dev/null 2>&1
14764 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14765 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14766 $run ./foobar >/dev/null 2>&1; then
14767 echo "$ar appears to generate random libraries itself."
14770 elif $ar ts bar$_a >/dev/null 2>&1 &&
14771 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14772 $run ./foobar >/dev/null 2>&1; then
14773 echo "a table of contents needs to be added with '$ar ts'."
14780 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14781 $test -f $ranlib || ranlib=''
14784 if $test -n "$ranlib"; then
14785 echo "your system has '$ranlib'; we'll use that."
14788 echo "your system doesn't seem to support random libraries"
14789 echo "so we'll use lorder and tsort to order the libraries."
14796 : check for type of arguments to select.
14797 case "$selecttype" in
14798 '') case "$d_select" in
14802 Checking to see what type of arguments are accepted by select().
14804 hdrs="$define sys/types.h
14805 $i_systime sys/time.h
14806 $i_sysselct sys/select.h
14807 $d_socket sys/socket.h"
14808 : The first arg can be int, unsigned, or size_t
14809 : The last arg may or may not be 'const'
14811 : void pointer has been seen but using that
14812 : breaks the selectminbits test
14813 for xxx in 'fd_set *' 'int *'; do
14814 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14815 for tmo in 'struct timeval *' 'const struct timeval *'; do
14817 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14818 if ./protochk "$try" $hdrs; then
14819 echo "Your system accepts $xxx."
14828 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14829 case "$d_fd_set" in
14830 $define) dflt="fd_set *" ;;
14839 *) : no select, so pick a harmless default
14846 : check for the select 'width'
14847 case "$selectminbits" in
14848 '') case "$d_select" in
14852 Checking to see on how many bits at a time your select() operates...
14855 #include <sys/types.h>
14857 #$i_systime I_SYS_TIME
14858 #$i_systimek I_SYS_TIME_KERNEL
14863 # ifdef I_SYS_TIME_KERNEL
14866 # include <sys/time.h>
14867 # ifdef I_SYS_TIME_KERNEL
14871 #$i_sysselct I_SYS_SELECT
14872 #ifdef I_SYS_SELECT
14873 #include <sys/select.h>
14875 #$d_socket HAS_SOCKET
14877 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14881 #define S sizeof(*(b))
14883 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14884 #define NBITS (NBYTES * 8)
14893 fp = fopen("try.c", "r");
14899 b = ($selecttype)s;
14900 for (i = 0; i < NBITS; i++)
14904 select(fd + 1, b, 0, 0, &t);
14905 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14906 printf("%d\n", i + 1);
14911 if eval $compile_ok; then
14912 selectminbits=`$run ./try`
14913 case "$selectminbits" in
14915 Cannot figure out on how many bits at a time your select() operates.
14916 I'll play safe and guess it is 32 bits.
14922 *) bits="$selectminbits bits" ;;
14924 echo "Your select() operates on $bits at a time." >&4
14926 rp='What is the minimum number of bits your select() operates on?'
14927 case "$byteorder" in
14928 1234|12345678) dflt=32 ;;
14933 selectminbits="$val"
14937 *) : no select, so pick a harmless default
14944 : Trace out the files included by signal.h, then look for SIGxxx names.
14945 : Remove SIGARRAYSIZE used by HPUX.
14946 : Remove SIGSTKSIZE used by Linux.
14947 : Remove SIGSTKSZ used by Posix.
14948 : Remove SIGTYP void lines used by OS2.
14949 : Some cpps, like os390, dont give the file name anywhere
14950 if [ "X$fieldn" = X ]; then
14951 : Just make some guesses. We check them later.
14952 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14954 xxx=`echo '#include <signal.h>' |
14955 $cppstdin $cppminus $cppflags 2>/dev/null |
14956 $grep '^[ ]*#.*include' |
14957 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
14959 : Check this list of files to be sure we have parsed the cpp output ok.
14960 : This will also avoid potentially non-existent files, such
14963 for xx in $xxx /dev/null ; do
14964 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
14966 : If we have found no files, at least try signal.h
14967 case "$xxxfiles" in
14968 '') xxxfiles=`./findhdr signal.h` ;;
14971 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
14972 print substr($2, 4, 20)
14974 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
14975 print substr($3, 4, 20)
14977 : Append some common names just in case the awk scan failed.
14978 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
14979 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
14980 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
14981 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
14982 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
14984 : generate a few handy files for later
14985 $cat > signal.c <<'EOCP'
14986 #include <sys/types.h>
14987 #include <signal.h>
14991 /* Strange style to avoid deeply-nested #if/#else/#endif */
14994 # define NSIG (_NSIG)
15000 # define NSIG (SIGMAX+1)
15006 # define NSIG (SIG_MAX+1)
15012 # define NSIG (MAXSIG+1)
15018 # define NSIG (MAX_SIG+1)
15023 # ifdef SIGARRAYSIZE
15024 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15030 # define NSIG (_sys_nsig) /* Solaris 2.5 */
15034 /* Default to some arbitrary number that's big enough to get most
15035 of the common signals.
15041 printf("NSIG %d\n", NSIG);
15047 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15049 printf "#ifdef SIG"; printf $1; printf "\n"
15050 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15051 printf $1; printf ");\n"
15055 printf "#endif /* JUST_NSIG */\n";
15056 printf "exit(0);\n}\n";
15059 $cat >signal.awk <<'EOP'
15060 BEGIN { ndups = 0 }
15061 $1 ~ /^NSIG$/ { nsig = $2 }
15062 ($1 !~ /^NSIG$/) && (NF == 2) {
15063 if ($2 > maxsig) { maxsig = $2 }
15064 if (sig_name[$2]) {
15065 dup_name[ndups] = $1
15066 dup_num[ndups] = $2
15078 printf("NSIG %d\n", nsig);
15079 for (n = 1; n < nsig; n++) {
15081 printf("%s %d\n", sig_name[n], sig_num[n])
15084 printf("NUM%d %d\n", n, n)
15087 for (n = 0; n < ndups; n++) {
15088 printf("%s %d\n", dup_name[n], dup_num[n])
15092 $cat >signal_cmd <<EOS
15094 if $test -s signal.lst; then
15095 echo "Using your existing signal.lst file"
15100 $cat >>signal_cmd <<'EOS'
15103 if eval $compile_ok; then
15104 $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15106 echo "(I can't seem be able to compile the whole test program)" >&4
15107 echo "(I'll try it in little pieces.)" >&4
15108 set signal -DJUST_NSIG
15109 if eval $compile_ok; then
15110 $run ./signal$_exe > signal.nsg
15113 echo "I can't seem to figure out how many signals you have." >&4
15114 echo "Guessing 50." >&4
15115 echo 'NSIG 50' > signal.nsg
15117 : Now look at all the signal names, one at a time.
15118 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15119 $cat > signal.c <<EOCP
15120 #include <sys/types.h>
15121 #include <signal.h>
15124 printf("$xx %d\n", SIG${xx});
15129 if eval $compile; then
15130 echo "SIG${xx} found."
15131 $run ./signal$_exe >> signal.ls1
15133 echo "SIG${xx} NOT found."
15136 if $test -s signal.ls1; then
15137 $cat signal.nsg signal.ls1 |
15138 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15142 if $test -s signal.lst; then
15145 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15146 echo 'kill -l' >signal
15147 set X `csh -f <signal`
15151 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15153 echo $@ | $tr ' ' $trnl | \
15154 $awk '{ printf "%s %d\n", $1, ++s; }
15155 END { printf "NSIG %d\n", ++s }' >signal.lst
15157 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15159 chmod a+x signal_cmd
15160 $eunicefix signal_cmd
15162 : generate list of signal names
15164 case "$sig_name_init" in
15166 *) case "$sig_num_init" in
15167 ''|*,*) doinit=yes ;;
15172 echo "Generating a list of signal names and numbers..." >&4
15174 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15175 sig_name=`$awk 'BEGIN { printf "ZERO " }
15176 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15177 sig_num=`$awk 'BEGIN { printf "0 " }
15178 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15179 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15180 !/^NSIG/ { printf "\"%s\", ", $1 }
15181 END { printf "0\n" }' signal.lst`
15182 sig_num_init=`$awk 'BEGIN { printf "0, " }
15183 !/^NSIG/ { printf "%d, ", $2}
15184 END { printf "0\n"}' signal.lst`
15187 echo "The following $sig_count signals are available:"
15189 echo $sig_name | $awk \
15190 'BEGIN { linelen = 0 }
15192 for (i = 1; i <= NF; i++) {
15193 name = "SIG" $i " "
15194 linelen = linelen + length(name)
15195 if (linelen > 70) {
15197 linelen = length(name)
15203 sig_size=`echo $sig_name | awk '{print NF}'`
15204 $rm -f signal signal.c signal.awk signal.lst signal_cmd
15207 case "$sizetype" in
15208 *_t) zzz="$sizetype" ;;
15209 *) zzz="filesize" ;;
15211 echo "Checking the size of $zzz..." >&4
15213 #include <sys/types.h>
15216 printf("%d\n", (int)sizeof($sizetype));
15221 if eval $compile_ok; then
15225 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15228 echo "Your $zzz size is $sizesize bytes."
15233 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15237 : check for socklen_t
15239 echo "Checking to see if you have socklen_t..." >&4
15241 #include <sys/types.h>
15242 #$d_socket HAS_SOCKET
15244 #include <sys/socket.h>
15246 int main() { socklen_t x = 16; }
15249 if eval $compile; then
15251 echo "You have socklen_t."
15254 echo "You do not have socklen_t."
15255 case "$sizetype" in
15256 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15263 : see if this is a socks.h system
15264 set socks.h i_socks
15267 : check for type of the size argument to socket calls
15268 case "$d_socket" in
15272 Checking to see what type is the last argument of accept().
15275 case "$d_socklen_t" in
15276 "$define") yyy="$yyy socklen_t"
15278 yyy="$yyy $sizetype int long unsigned"
15279 for xxx in $yyy; do
15280 case "$socksizetype" in
15281 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
15282 case "$usesocks" in
15284 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15285 echo "Your system accepts '$xxx *' for the last argument of accept()."
15286 socksizetype="$xxx"
15289 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15290 echo "Your system accepts '$xxx *' for the last argument of accept()."
15291 socksizetype="$xxx"
15298 : In case none of those worked, prompt the user.
15299 case "$socksizetype" in
15300 '') rp='What is the type for socket address structure sizes?'
15307 *) : no sockets, so pick relatively harmless default
15312 : see what type is used for signed size_t
15313 set ssize_t ssizetype int stdio.h sys/types.h
15318 #include <sys/types.h>
15319 #define Size_t $sizetype
15320 #define SSize_t $dflt
15323 if (sizeof(Size_t) == sizeof(SSize_t))
15325 else if (sizeof(Size_t) == sizeof(int))
15334 if eval $compile_ok && $run ./try > /dev/null; then
15335 ssizetype=`$run ./try`
15336 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15339 Help! I can't compile and run the ssize_t test program: please enlighten me!
15340 (This is probably a misconfiguration in your system or libraries, and
15341 you really ought to fix it. Still, I'll try anyway.)
15343 I need a type that is the same size as $sizetype, but is guaranteed to
15344 be signed. Common values are ssize_t, int and long.
15347 rp="What signed type is the same size as $sizetype?"
15353 : see what type of char stdio uses.
15355 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15356 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15357 echo "Your stdio uses unsigned chars." >&4
15358 stdchar="unsigned char"
15360 echo "Your stdio uses signed chars." >&4
15367 : see if time exists
15369 if test "X$d_time" = X -o X"$timetype" = X; then
15370 if set time val -f d_time; eval $csym; $val; then
15371 echo 'time() found.' >&4
15373 rp="What is the type returned by time() on this system?"
15374 set time_t timetype long stdio.h sys/types.h
15377 echo 'time() not found, hope that will do.' >&4
15385 : see what type uids are declared as in the kernel
15387 echo "Looking for the type for user ids returned by getuid()."
15388 set uid_t uidtype xxx stdio.h sys/types.h
15392 xxx=`./findhdr sys/user.h`
15393 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15395 unsigned) dflt="$1 $2" ;;
15399 *) dflt="$uidtype";;
15402 uid_t) echo "uid_t found." ;;
15403 *) rp="What is the type for user ids returned by getuid()?"
15411 *_t) zzz="$uidtype" ;;
15414 echo "Checking the size of $zzz..." >&4
15416 #include <sys/types.h>
15419 printf("%d\n", (int)sizeof($uidtype));
15424 if eval $compile_ok; then
15428 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15431 echo "Your $zzz is $uidsize bytes long."
15436 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15441 *_t) zzz="$uidtype" ;;
15444 echo "Checking the sign of $zzz..." >&4
15446 #include <sys/types.h>
15457 if eval $compile; then
15461 echo "(I can't execute the test program--guessing unsigned.)" >&4
15465 1) echo "Your $zzz is unsigned." ;;
15466 -1) echo "Your $zzz is signed." ;;
15472 echo "(I can't compile the test program--guessing unsigned.)" >&4
15478 $echo "Checking the format string to be used for uids..." >&4
15481 -1) if $test X"$uidsize" = X"$ivsize"; then
15482 uidformat="$ivdformat"
15484 if $test X"$uidsize" = X"$longsize"; then
15487 if $test X"$uidsize" = X"$intsize"; then
15490 if $test X"$uidsize" = X"$shortsize"; then
15497 *) if $test X"$uidsize" = X"$uvsize"; then
15498 uidformat="$uvuformat"
15500 if $test X"$uidsize" = X"$longsize"; then
15503 if $test X"$uidsize" = X"$intsize"; then
15506 if $test X"$uidsize" = X"$shortsize"; then
15515 : determine compiler compiler
15524 if $test -f "$byacc"; then
15526 comp="byacc or $comp"
15528 if $test -f "$bison"; then
15529 comp="$comp or bison -y"
15531 rp="Which compiler compiler ($comp) shall I use?"
15540 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15546 : see if fcntl.h is there
15551 : see if we can include fcntl.h
15557 echo "We'll be including <fcntl.h>." >&4
15560 if $h_sysfile; then
15561 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15563 echo "We won't be including <fcntl.h>." >&4
15575 : see if this is a iconv.h system
15576 set iconv.h i_iconv
15579 : see if this is a ieeefp.h system
15580 set ieeefp.h i_ieeefp
15583 : see if this is a libutil.h system
15584 set libutil.h i_libutil
15587 : see if locale.h is available
15588 set locale.h i_locale
15591 : see if mach cthreads are available
15592 if test "X$usethreads" = "X$define"; then
15593 set mach/cthreads.h i_machcthr
15596 i_machcthr="$undef"
15601 : see if this is a math.h system
15605 : see if this is a mntent.h system
15606 set mntent.h i_mntent
15609 : see if ndbm.h is available
15614 : see if dbm_open exists
15615 set dbm_open d_dbm_open
15617 case "$d_dbm_open" in
15620 echo "We won't be including <ndbm.h>"
15629 : see if net/errno.h is available
15631 set net/errno.h val
15634 : Unfortunately, it causes problems on some systems. Arrgh.
15637 cat > try.c <<'EOM'
15640 #include <net/errno.h>
15646 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15647 echo "We'll be including <net/errno.h>." >&4
15649 echo "We won't be including <net/errno.h>." >&4
15658 : see if netinet/tcp.h is available
15659 set netinet/tcp.h i_netinettcp
15662 : see if this is a poll.h system
15666 : see if this is a prot.h system
15671 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15672 $cat <<'EOSH' > Cppsym.know
15673 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15674 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15675 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15676 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15677 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15678 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15679 bull c cadmus clipper CMU COFF COMPILER_VERSION
15680 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15681 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15682 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15683 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15684 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15685 H3050R H3050RX hbullx20 hcx host_mips
15686 hp200 hp300 hp700 HP700 hp800 hp9000
15687 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15688 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15689 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15690 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15691 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15692 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15693 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15694 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15695 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15696 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15697 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15698 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15699 MATH_HAS_NO_SIDE_EFFECTS
15700 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15701 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15702 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15703 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15704 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15705 NetBSD news1500 news1700 news1800 news1900 news3700
15706 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15707 ns32016 ns32332 ns32k nsc32000
15708 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15709 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15710 pc532 pdp11 PGC PIC plexus PORTAR posix
15711 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15712 POSIX_C_SOURCE POSIX_SOURCE POWER
15713 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15714 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15715 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15716 sony sony_news sonyrisc sparc sparclite spectrum
15717 stardent stdc STDC_EXT stratos sun sun3 sun386
15718 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15719 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15720 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15721 sysV68 sysV88 Tek4132 Tek4300 titan
15722 TM3200 TM5400 TM5600
15723 tower tower32 tower32_200 tower32_600 tower32_700
15724 tower32_800 tower32_850 tss
15725 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15726 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15727 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15728 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15729 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15730 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15733 # Maybe put other stuff here too.
15734 cat <<EOSH >>Cppsym.know
15737 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15738 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15739 $cat Cppsym.know > Cppsym.c
15740 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15741 $rm -f Cppsym.a Cppsym.b Cppsym.c
15742 cat <<EOSH > Cppsym
15744 if $test \$# -gt 0; then
15745 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15746 if $test -s Cppsym.got; then
15753 $tr " " "$trnl" | ./Cppsym.try
15759 cat <<EOSH > Cppsym.try
15761 cat <<'EOCP' > try.c
15767 cat <<'EOSH' >> Cppsym.try
15769 printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", (long)%s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15770 printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", (long)_%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15771 printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", (long)__%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15772 printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", (long)__%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
15774 echo 'return 0;}' >> try.c
15776 cat <<EOSH >> Cppsym.try
15778 case "$osname-$gccversion" in
15779 irix-) ccflags="\$ccflags -woff 1178" ;;
15780 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15782 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15784 chmod +x Cppsym.try
15785 $eunicefix Cppsym.try
15786 ./Cppsym < Cppsym.know > Cppsym.true
15787 : now check the C compiler for additional symbols
15788 postprocess_cc_v=''
15790 aix) postprocess_cc_v="|$tr , ' '" ;;
15797 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15800 -D*) echo "\$i" | $sed 's/^-D//';;
15801 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15806 postprocess_cc_v=''
15809 ./ccsym > ccsym1.raw
15810 if $test -s ccsym1.raw; then
15811 $sort ccsym1.raw | $uniq >ccsym.raw
15813 mv ccsym1.raw ccsym.raw
15816 $awk '/\=/ { print $0; next }
15817 { print $0"=1" }' ccsym.raw >ccsym.list
15818 $awk '/\=/ { print $0; next }
15819 { print $0"=1" }' Cppsym.true >ccsym.true
15820 $comm -13 ccsym.true ccsym.list >ccsym.own
15821 $comm -12 ccsym.true ccsym.list >ccsym.com
15822 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15824 if $test -z ccsym.raw; then
15825 echo "Your C compiler doesn't seem to define any symbols!" >&4
15827 echo "However, your C preprocessor defines the following symbols:"
15830 cppsymbols=`$cat Cppsym.true`
15831 cppsymbols=`echo $cppsymbols`
15832 cppccsymbols="$cppsymbols"
15834 if $test -s ccsym.com; then
15835 echo "Your C compiler and pre-processor define these symbols:"
15836 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15839 cppccsymbols=`$cat ccsym.com`
15840 cppccsymbols=`echo $cppccsymbols`
15841 $test "$silent" || sleep 1
15843 if $test -s ccsym.cpp; then
15844 $test "$also" && echo " "
15845 echo "Your C pre-processor ${also}defines the following symbols:"
15846 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15848 cppsymbols=`$cat ccsym.cpp`
15849 cppsymbols=`echo $cppsymbols`
15850 $test "$silent" || sleep 1
15852 if $test -s ccsym.own; then
15853 $test "$also" && echo " "
15854 echo "Your C compiler ${also}defines the following cpp symbols:"
15855 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15856 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15857 ccsymbols=`$cat ccsym.own`
15858 ccsymbols=`echo $ccsymbols`
15859 $test "$silent" || sleep 1
15862 $rm -f ccsym* Cppsym.*
15864 : see if this is a termio system
15868 if $test `./findhdr termios.h`; then
15869 set tcsetattr i_termios
15875 "$define") echo "You have POSIX termios.h... good!" >&4;;
15876 *) if ./Cppsym pyr; then
15877 case "`/bin/universe`" in
15878 ucb) if $test `./findhdr sgtty.h`; then
15880 echo "<sgtty.h> found." >&4
15882 echo "System is pyramid with BSD universe."
15883 echo "<sgtty.h> not found--you could have problems." >&4
15885 *) if $test `./findhdr termio.h`; then
15887 echo "<termio.h> found." >&4
15889 echo "System is pyramid with USG universe."
15890 echo "<termio.h> not found--you could have problems." >&4
15894 if $test `./findhdr termio.h`; then
15895 echo "<termio.h> found." >&4
15897 elif $test `./findhdr sgtty.h`; then
15898 echo "<sgtty.h> found." >&4
15901 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15904 if $test `./findhdr sgtty.h`; then
15905 echo "<sgtty.h> found." >&4
15907 elif $test `./findhdr termio.h`; then
15908 echo "<termio.h> found." >&4
15911 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15915 set i_termio; eval $setvar
15916 val=$val2; set i_sgtty; eval $setvar
15917 val=$val3; set i_termios; eval $setvar
15919 : see if this is a shadow.h system
15920 set shadow.h i_shadow
15923 : see if stddef is available
15924 set stddef.h i_stddef
15927 : see if this is a sunmath.h system
15928 set sunmath.h i_sunmath
15931 : see if sys/access.h is available
15932 set sys/access.h i_sysaccess
15935 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15936 set sys/filio.h i_sysfilio
15939 if $test `./findhdr sys/ioctl.h`; then
15941 echo '<sys/ioctl.h> found.' >&4
15944 if $test $i_sysfilio = "$define"; then
15945 echo '<sys/ioctl.h> NOT found.' >&4
15947 $test $i_sgtty = "$define" && xxx="sgtty.h"
15948 $test $i_termio = "$define" && xxx="termio.h"
15949 $test $i_termios = "$define" && xxx="termios.h"
15950 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15956 : see if socket ioctl defs are in sys/sockio.h
15958 xxx=`./findhdr sys/sockio.h`
15959 if $test "$xxx"; then
15960 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
15962 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
15965 echo "No socket ioctls found in <sys/sockio.h>." >&4
15970 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
15977 : see if this is a syslog.h system
15978 set syslog.h i_syslog
15982 : see if this is a sys/mode.h system
15983 set sys/mode.h i_sysmode
15986 : see if sys/resource.h has to be included
15987 set sys/resource.h i_sysresrc
15990 : see if sys/security.h is available
15991 set sys/security.h i_syssecrt
15994 : see if this is a sys/statvfs.h system
15995 set sys/statvfs.h i_sysstatvfs
15998 : see if this is a sys/un.h system
15999 set sys/un.h i_sysun
16003 : see if this is a sys/utsname.h system
16004 set sys/utsname.h i_sysutsname
16007 : see if this is a syswait system
16008 set sys/wait.h i_syswait
16011 : see if this is a ustat.h system
16012 set ustat.h i_ustat
16015 : see if this is an utime system
16016 set utime.h i_utime
16019 : see if this is a values.h system
16020 set values.h i_values
16023 : see if this is a vfork system
16026 set vfork.h i_vfork
16034 : see if gdbm.h is available
16039 : see if gdbm_open exists
16040 set gdbm_open d_gdbm_open
16042 case "$d_gdbm_open" in
16045 echo "We won't be including <gdbm.h>"
16055 echo "Looking for extensions..." >&4
16056 : If we are using the old config.sh, known_extensions may contain
16057 : old or inaccurate or duplicate values.
16058 known_extensions=''
16059 nonxs_extensions=''
16060 : We do not use find because it might not be available.
16061 : We do not just use MANIFEST because the user may have dropped
16062 : some additional extensions into the source tree and expect them
16065 : Function to recursively find available extensions, ignoring DynaLoader
16066 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16070 DynaLoader|dynaload) ;;
16072 if $test -f $xxx/$xxx.xs; then
16073 known_extensions="$known_extensions $1$xxx";
16074 elif $test -f $xxx/Makefile.PL; then
16075 nonxs_extensions="$nonxs_extensions $1$xxx";
16077 if $test -d $xxx -a $# -lt 10; then
16080 eval $find_extensions;
16092 eval $find_extensions
16093 set X $nonxs_extensions
16095 nonxs_extensions="$*"
16096 set X $known_extensions
16098 known_extensions="$*"
16101 : Now see which are supported on this system.
16103 for xxx in $known_extensions ; do
16107 $define) avail_ext="$avail_ext $xxx" ;;
16110 GDBM_File|gdbm_fil)
16112 $define) avail_ext="$avail_ext $xxx" ;;
16115 NDBM_File|ndbm_fil)
16118 case "$osname-$use64bitint" in
16121 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16124 *) avail_ext="$avail_ext $xxx" ;;
16129 ODBM_File|odbm_fil)
16130 case "${i_dbm}${i_rpcsvcdbm}" in
16132 case "$osname-$use64bitint" in
16135 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16138 *) avail_ext="$avail_ext $xxx" ;;
16144 case "$useposix" in
16145 true|define|y) avail_ext="$avail_ext $xxx" ;;
16149 case "$useopcode" in
16150 true|define|y) avail_ext="$avail_ext $xxx" ;;
16154 case "$d_socket" in
16155 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16158 Sys/Syslog|sys/syslog)
16159 : XXX syslog requires socket
16160 case "$d_socket" in
16161 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16165 case "$usethreads" in
16167 case "$useithreads" in
16168 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16173 : XXX Do we need a useipcsysv variable here
16174 case "${d_msg}${d_sem}${d_shm}" in
16175 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16178 *) avail_ext="$avail_ext $xxx"
16187 : Now see which nonxs extensions are supported on this system.
16188 : For now assume all are.
16190 for xxx in $nonxs_extensions ; do
16192 *) nonxs_ext="$nonxs_ext $xxx"
16204 A number of extensions are supplied with $package. You may choose to
16205 compile these extensions for dynamic loading (the default), compile
16206 them into the $package executable (static loading), or not include
16207 them at all. Answer "none" to include no extensions.
16208 Note that DynaLoader is always built and need not be mentioned here.
16211 case "$dynamic_ext" in
16212 '') dflt="$avail_ext" ;;
16213 *) dflt="$dynamic_ext"
16214 # Perhaps we are reusing an old out-of-date config.sh.
16217 if test X"$dynamic_ext" != X"$avail_ext"; then
16219 NOTICE: Your previous config.sh list may be incorrect.
16220 The extensions now available to you are
16222 but the default list from your previous config.sh is
16234 rp="What extensions do you wish to load dynamically?"
16237 none) dynamic_ext=' ' ;;
16238 *) dynamic_ext="$ans" ;;
16241 case "$static_ext" in
16243 : Exclude those already listed in dynamic linking
16245 for xxx in $avail_ext; do
16246 case " $dynamic_ext " in
16248 *) dflt="$dflt $xxx" ;;
16255 *) dflt="$static_ext"
16262 rp="What extensions do you wish to load statically?"
16265 none) static_ext=' ' ;;
16266 *) static_ext="$ans" ;;
16271 A number of extensions are supplied with $package. Answer "none"
16272 to include no extensions.
16273 Note that DynaLoader is always built and need not be mentioned here.
16276 case "$static_ext" in
16277 '') dflt="$avail_ext" ;;
16278 *) dflt="$static_ext"
16279 # Perhaps we are reusing an old out-of-date config.sh.
16282 if test X"$static_ext" != X"$avail_ext"; then
16284 NOTICE: Your previous config.sh list may be incorrect.
16285 The extensions now available to you are
16287 but the default list from your previous config.sh is
16296 : Exclude those that are not xs extensions
16300 rp="What extensions do you wish to include?"
16303 none) static_ext=' ' ;;
16304 *) static_ext="$ans" ;;
16309 set X $dynamic_ext $static_ext $nonxs_ext
16313 : Remove libraries needed only for extensions
16314 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16315 : The exception is SunOS 4.x, which needs them.
16316 case "${osname}X${osvers}" in
16320 *) case "$usedl" in
16321 $define|true|[yY]*)
16322 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16326 *) perllibs="$libs"
16332 : Remove build directory name from cppstdin so it can be used from
16333 : either the present location or the final installed location.
16335 : Get out of the UU directory to get correct path name.
16337 case "$cppstdin" in
16339 echo "Stripping down cppstdin path name"
16345 : end of configuration questions
16347 echo "End of configuration questions."
16350 : back to where it started
16351 if test -d ../UU; then
16355 : configuration may be patched via a 'config.over' file
16356 if $test -f config.over; then
16359 rp='I see a config.over file. Do you wish to load it?'
16362 n*) echo "OK, I'll ignore it.";;
16364 echo "Configuration override changes have been loaded."
16369 : in case they want portability, strip down executable paths
16370 case "$d_portable" in
16373 echo "Stripping down executable paths..." >&4
16374 for file in $loclist $trylist; do
16376 eval $file=`basename $temp`
16381 : create config.sh file
16383 echo "Creating config.sh..." >&4
16384 $spitshell <<EOT >config.sh
16387 # This file was produced by running the Configure script. It holds all the
16388 # definitions figured out by Configure. Should you modify one of these values,
16389 # do not forget to propagate your changes by running "Configure -der". You may
16390 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16393 # Package name : $package
16394 # Source directory : $src
16395 # Configuration time: $cf_time
16396 # Configured by : $cf_by
16397 # Target system : $myuname
16407 Revision='$Revision'
16415 alignbytes='$alignbytes'
16416 ansi2knr='$ansi2knr'
16417 aphostname='$aphostname'
16418 api_revision='$api_revision'
16419 api_subversion='$api_subversion'
16420 api_version='$api_version'
16421 api_versionstring='$api_versionstring'
16424 archlibexp='$archlibexp'
16425 archname64='$archname64'
16426 archname='$archname'
16427 archobjs='$archobjs'
16432 bincompat5005='$bincompat5005'
16436 byteorder='$byteorder'
16438 castflags='$castflags'
16441 cccdlflags='$cccdlflags'
16442 ccdlflags='$ccdlflags'
16444 ccflags_uselargefiles='$ccflags_uselargefiles'
16446 ccsymbols='$ccsymbols'
16447 ccversion='$ccversion'
16449 cf_email='$cf_email'
16451 charsize='$charsize'
16455 clocktype='$clocktype'
16457 compress='$compress'
16458 contains='$contains'
16462 cpp_stuff='$cpp_stuff'
16463 cppccsymbols='$cppccsymbols'
16464 cppflags='$cppflags'
16466 cppminus='$cppminus'
16468 cppstdin='$cppstdin'
16469 cppsymbols='$cppsymbols'
16470 cryptlib='$cryptlib'
16472 d_Gconvert='$d_Gconvert'
16473 d_PRIEUldbl='$d_PRIEUldbl'
16474 d_PRIFUldbl='$d_PRIFUldbl'
16475 d_PRIGUldbl='$d_PRIGUldbl'
16476 d_PRIXU64='$d_PRIXU64'
16477 d_PRId64='$d_PRId64'
16478 d_PRIeldbl='$d_PRIeldbl'
16479 d_PRIfldbl='$d_PRIfldbl'
16480 d_PRIgldbl='$d_PRIgldbl'
16481 d_PRIi64='$d_PRIi64'
16482 d_PRIo64='$d_PRIo64'
16483 d_PRIu64='$d_PRIu64'
16484 d_PRIx64='$d_PRIx64'
16485 d_SCNfldbl='$d_SCNfldbl'
16486 d__fwalk='$d__fwalk'
16487 d_access='$d_access'
16488 d_accessx='$d_accessx'
16490 d_archlib='$d_archlib'
16493 d_attribut='$d_attribut'
16496 d_bincompat5005='$d_bincompat5005'
16498 d_bsdgetpgrp='$d_bsdgetpgrp'
16499 d_bsdsetpgrp='$d_bsdsetpgrp'
16501 d_casti32='$d_casti32'
16502 d_castneg='$d_castneg'
16503 d_charvspr='$d_charvspr'
16505 d_chroot='$d_chroot'
16506 d_chsize='$d_chsize'
16507 d_closedir='$d_closedir'
16508 d_cmsghdr_s='$d_cmsghdr_s'
16512 d_cuserid='$d_cuserid'
16513 d_dbl_dig='$d_dbl_dig'
16514 d_dbminitproto='$d_dbminitproto'
16515 d_difftime='$d_difftime'
16516 d_dirnamlen='$d_dirnamlen'
16517 d_dlerror='$d_dlerror'
16518 d_dlopen='$d_dlopen'
16519 d_dlsymun='$d_dlsymun'
16520 d_dosuid='$d_dosuid'
16521 d_drand48proto='$d_drand48proto'
16523 d_eaccess='$d_eaccess'
16524 d_endgrent='$d_endgrent'
16525 d_endhent='$d_endhent'
16526 d_endnent='$d_endnent'
16527 d_endpent='$d_endpent'
16528 d_endpwent='$d_endpwent'
16529 d_endsent='$d_endsent'
16530 d_eofnblk='$d_eofnblk'
16531 d_eunice='$d_eunice'
16532 d_fchmod='$d_fchmod'
16533 d_fchown='$d_fchown'
16535 d_fcntl_can_lock='$d_fcntl_can_lock'
16536 d_fd_macros='$d_fd_macros'
16537 d_fd_set='$d_fd_set'
16538 d_fds_bits='$d_fds_bits'
16539 d_fgetpos='$d_fgetpos'
16540 d_flexfnam='$d_flexfnam'
16542 d_flockproto='$d_flockproto'
16544 d_fpathconf='$d_fpathconf'
16545 d_fpos64_t='$d_fpos64_t'
16546 d_frexpl='$d_frexpl'
16547 d_fs_data_s='$d_fs_data_s'
16548 d_fseeko='$d_fseeko'
16549 d_fsetpos='$d_fsetpos'
16550 d_fstatfs='$d_fstatfs'
16551 d_fstatvfs='$d_fstatvfs'
16553 d_ftello='$d_ftello'
16555 d_getcwd='$d_getcwd'
16556 d_getespwnam='$d_getespwnam'
16557 d_getfsstat='$d_getfsstat'
16558 d_getgrent='$d_getgrent'
16559 d_getgrps='$d_getgrps'
16560 d_gethbyaddr='$d_gethbyaddr'
16561 d_gethbyname='$d_gethbyname'
16562 d_gethent='$d_gethent'
16563 d_gethname='$d_gethname'
16564 d_gethostprotos='$d_gethostprotos'
16565 d_getitimer='$d_getitimer'
16566 d_getlogin='$d_getlogin'
16567 d_getmnt='$d_getmnt'
16568 d_getmntent='$d_getmntent'
16569 d_getnbyaddr='$d_getnbyaddr'
16570 d_getnbyname='$d_getnbyname'
16571 d_getnent='$d_getnent'
16572 d_getnetprotos='$d_getnetprotos'
16573 d_getpagsz='$d_getpagsz'
16574 d_getpbyname='$d_getpbyname'
16575 d_getpbynumber='$d_getpbynumber'
16576 d_getpent='$d_getpent'
16577 d_getpgid='$d_getpgid'
16578 d_getpgrp2='$d_getpgrp2'
16579 d_getpgrp='$d_getpgrp'
16580 d_getppid='$d_getppid'
16581 d_getprior='$d_getprior'
16582 d_getprotoprotos='$d_getprotoprotos'
16583 d_getprpwnam='$d_getprpwnam'
16584 d_getpwent='$d_getpwent'
16585 d_getsbyname='$d_getsbyname'
16586 d_getsbyport='$d_getsbyport'
16587 d_getsent='$d_getsent'
16588 d_getservprotos='$d_getservprotos'
16589 d_getspnam='$d_getspnam'
16590 d_gettimeod='$d_gettimeod'
16591 d_gnulibc='$d_gnulibc'
16592 d_grpasswd='$d_grpasswd'
16593 d_hasmntopt='$d_hasmntopt'
16597 d_inetaton='$d_inetaton'
16598 d_int64_t='$d_int64_t'
16599 d_isascii='$d_isascii'
16601 d_isnanl='$d_isnanl'
16602 d_killpg='$d_killpg'
16603 d_lchown='$d_lchown'
16604 d_ldbl_dig='$d_ldbl_dig'
16606 d_locconv='$d_locconv'
16608 d_longdbl='$d_longdbl'
16609 d_longlong='$d_longlong'
16610 d_lseekproto='$d_lseekproto'
16612 d_madvise='$d_madvise'
16614 d_mbstowcs='$d_mbstowcs'
16615 d_mbtowc='$d_mbtowc'
16616 d_memchr='$d_memchr'
16617 d_memcmp='$d_memcmp'
16618 d_memcpy='$d_memcpy'
16619 d_memmove='$d_memmove'
16620 d_memset='$d_memset'
16622 d_mkdtemp='$d_mkdtemp'
16623 d_mkfifo='$d_mkfifo'
16624 d_mkstemp='$d_mkstemp'
16625 d_mkstemps='$d_mkstemps'
16626 d_mktime='$d_mktime'
16629 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16630 d_mprotect='$d_mprotect'
16632 d_msg_ctrunc='$d_msg_ctrunc'
16633 d_msg_dontroute='$d_msg_dontroute'
16634 d_msg_oob='$d_msg_oob'
16635 d_msg_peek='$d_msg_peek'
16636 d_msg_proxy='$d_msg_proxy'
16637 d_msgctl='$d_msgctl'
16638 d_msgget='$d_msgget'
16639 d_msghdr_s='$d_msghdr_s'
16640 d_msgrcv='$d_msgrcv'
16641 d_msgsnd='$d_msgsnd'
16643 d_munmap='$d_munmap'
16644 d_mymalloc='$d_mymalloc'
16646 d_nv_preserves_uv='$d_nv_preserves_uv'
16647 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16648 d_off64_t='$d_off64_t'
16649 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16650 d_oldpthreads='$d_oldpthreads'
16651 d_oldsock='$d_oldsock'
16653 d_pathconf='$d_pathconf'
16655 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16656 d_phostname='$d_phostname'
16659 d_portable='$d_portable'
16660 d_pthread_yield='$d_pthread_yield'
16662 d_pwchange='$d_pwchange'
16663 d_pwclass='$d_pwclass'
16664 d_pwcomment='$d_pwcomment'
16665 d_pwexpire='$d_pwexpire'
16666 d_pwgecos='$d_pwgecos'
16667 d_pwpasswd='$d_pwpasswd'
16668 d_pwquota='$d_pwquota'
16671 d_readdir='$d_readdir'
16672 d_readlink='$d_readlink'
16674 d_realpath='$d_realpath'
16675 d_recvmsg='$d_recvmsg'
16676 d_rename='$d_rename'
16677 d_rewinddir='$d_rewinddir'
16679 d_safebcpy='$d_safebcpy'
16680 d_safemcpy='$d_safemcpy'
16681 d_sanemcmp='$d_sanemcmp'
16682 d_sbrkproto='$d_sbrkproto'
16683 d_sched_yield='$d_sched_yield'
16684 d_scm_rights='$d_scm_rights'
16685 d_seekdir='$d_seekdir'
16686 d_select='$d_select'
16688 d_semctl='$d_semctl'
16689 d_semctl_semid_ds='$d_semctl_semid_ds'
16690 d_semctl_semun='$d_semctl_semun'
16691 d_semget='$d_semget'
16693 d_sendmsg='$d_sendmsg'
16694 d_setegid='$d_setegid'
16695 d_seteuid='$d_seteuid'
16696 d_setgrent='$d_setgrent'
16697 d_setgrps='$d_setgrps'
16698 d_sethent='$d_sethent'
16699 d_setitimer='$d_setitimer'
16700 d_setlinebuf='$d_setlinebuf'
16701 d_setlocale='$d_setlocale'
16702 d_setnent='$d_setnent'
16703 d_setpent='$d_setpent'
16704 d_setpgid='$d_setpgid'
16705 d_setpgrp2='$d_setpgrp2'
16706 d_setpgrp='$d_setpgrp'
16707 d_setprior='$d_setprior'
16708 d_setproctitle='$d_setproctitle'
16709 d_setpwent='$d_setpwent'
16710 d_setregid='$d_setregid'
16711 d_setresgid='$d_setresgid'
16712 d_setresuid='$d_setresuid'
16713 d_setreuid='$d_setreuid'
16714 d_setrgid='$d_setrgid'
16715 d_setruid='$d_setruid'
16716 d_setsent='$d_setsent'
16717 d_setsid='$d_setsid'
16718 d_setvbuf='$d_setvbuf'
16722 d_shmatprototype='$d_shmatprototype'
16723 d_shmctl='$d_shmctl'
16725 d_shmget='$d_shmget'
16726 d_sigaction='$d_sigaction'
16727 d_sigprocmask='$d_sigprocmask'
16728 d_sigsetjmp='$d_sigsetjmp'
16729 d_sockatmark='$d_sockatmark'
16730 d_sockatmarkproto='$d_sockatmarkproto'
16731 d_socket='$d_socket'
16732 d_socklen_t='$d_socklen_t'
16733 d_sockpair='$d_sockpair'
16734 d_socks5_init='$d_socks5_init'
16736 d_sresgproto='$d_sresgproto'
16737 d_sresuproto='$d_sresuproto'
16738 d_statblks='$d_statblks'
16739 d_statfs_f_flags='$d_statfs_f_flags'
16740 d_statfs_s='$d_statfs_s'
16741 d_statvfs='$d_statvfs'
16742 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16743 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16744 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16745 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16746 d_stdio_stream_array='$d_stdio_stream_array'
16747 d_stdiobase='$d_stdiobase'
16748 d_stdstdio='$d_stdstdio'
16749 d_strchr='$d_strchr'
16750 d_strcoll='$d_strcoll'
16751 d_strctcpy='$d_strctcpy'
16752 d_strerrm='$d_strerrm'
16753 d_strerror='$d_strerror'
16754 d_strftime='$d_strftime'
16755 d_strtod='$d_strtod'
16756 d_strtol='$d_strtol'
16757 d_strtold='$d_strtold'
16758 d_strtoll='$d_strtoll'
16759 d_strtoq='$d_strtoq'
16760 d_strtoul='$d_strtoul'
16761 d_strtoull='$d_strtoull'
16762 d_strtouq='$d_strtouq'
16763 d_strxfrm='$d_strxfrm'
16764 d_suidsafe='$d_suidsafe'
16765 d_symlink='$d_symlink'
16766 d_syscall='$d_syscall'
16767 d_syscallproto='$d_syscallproto'
16768 d_sysconf='$d_sysconf'
16769 d_sysernlst='$d_sysernlst'
16770 d_syserrlst='$d_syserrlst'
16771 d_system='$d_system'
16772 d_tcgetpgrp='$d_tcgetpgrp'
16773 d_tcsetpgrp='$d_tcsetpgrp'
16774 d_telldir='$d_telldir'
16775 d_telldirproto='$d_telldirproto'
16778 d_truncate='$d_truncate'
16779 d_tzname='$d_tzname'
16780 d_u32align='$d_u32align'
16781 d_ualarm='$d_ualarm'
16784 d_union_semun='$d_union_semun'
16785 d_usleep='$d_usleep'
16786 d_usleepproto='$d_usleepproto'
16788 d_vendorarch='$d_vendorarch'
16789 d_vendorbin='$d_vendorbin'
16790 d_vendorlib='$d_vendorlib'
16792 d_void_closedir='$d_void_closedir'
16793 d_voidsig='$d_voidsig'
16794 d_voidtty='$d_voidtty'
16795 d_volatile='$d_volatile'
16796 d_vprintf='$d_vprintf'
16798 d_waitpid='$d_waitpid'
16799 d_wcstombs='$d_wcstombs'
16800 d_wctomb='$d_wctomb'
16801 d_writev='$d_writev'
16804 db_hashtype='$db_hashtype'
16805 db_prefixtype='$db_prefixtype'
16806 db_version_major='$db_version_major'
16807 db_version_minor='$db_version_minor'
16808 db_version_patch='$db_version_patch'
16809 defvoidused='$defvoidused'
16810 direntrytype='$direntrytype'
16813 doublesize='$doublesize'
16815 dynamic_ext='$dynamic_ext'
16821 eunicefix='$eunicefix'
16824 extensions='$extensions'
16825 fflushNULL='$fflushNULL'
16826 fflushall='$fflushall'
16828 firstmakefile='$firstmakefile'
16830 fpossize='$fpossize'
16831 fpostype='$fpostype'
16832 freetype='$freetype'
16835 full_csh='$full_csh'
16836 full_sed='$full_sed'
16837 gccosandvers='$gccosandvers'
16838 gccversion='$gccversion'
16839 gidformat='$gidformat'
16845 groupcat='$groupcat'
16846 groupstype='$groupstype'
16849 h_sysfile='$h_sysfile'
16860 i_arpainet='$i_arpainet'
16861 i_bsdioctl='$i_bsdioctl'
16864 i_dirent='$i_dirent'
16872 i_ieeefp='$i_ieeefp'
16873 i_inttypes='$i_inttypes'
16874 i_libutil='$i_libutil'
16875 i_limits='$i_limits'
16876 i_locale='$i_locale'
16877 i_machcthr='$i_machcthr'
16878 i_malloc='$i_malloc'
16880 i_memory='$i_memory'
16881 i_mntent='$i_mntent'
16884 i_neterrno='$i_neterrno'
16885 i_netinettcp='$i_netinettcp'
16889 i_pthread='$i_pthread'
16891 i_rpcsvcdbm='$i_rpcsvcdbm'
16894 i_shadow='$i_shadow'
16896 i_stdarg='$i_stdarg'
16897 i_stddef='$i_stddef'
16898 i_stdlib='$i_stdlib'
16899 i_string='$i_string'
16900 i_sunmath='$i_sunmath'
16901 i_sysaccess='$i_sysaccess'
16902 i_sysdir='$i_sysdir'
16903 i_sysfile='$i_sysfile'
16904 i_sysfilio='$i_sysfilio'
16906 i_sysioctl='$i_sysioctl'
16907 i_syslog='$i_syslog'
16908 i_sysmman='$i_sysmman'
16909 i_sysmode='$i_sysmode'
16910 i_sysmount='$i_sysmount'
16911 i_sysndir='$i_sysndir'
16912 i_sysparam='$i_sysparam'
16913 i_sysresrc='$i_sysresrc'
16914 i_syssecrt='$i_syssecrt'
16915 i_sysselct='$i_sysselct'
16916 i_syssockio='$i_syssockio'
16917 i_sysstat='$i_sysstat'
16918 i_sysstatfs='$i_sysstatfs'
16919 i_sysstatvfs='$i_sysstatvfs'
16920 i_systime='$i_systime'
16921 i_systimek='$i_systimek'
16922 i_systimes='$i_systimes'
16923 i_systypes='$i_systypes'
16924 i_sysuio='$i_sysuio'
16926 i_sysutsname='$i_sysutsname'
16927 i_sysvfs='$i_sysvfs'
16928 i_syswait='$i_syswait'
16929 i_termio='$i_termio'
16930 i_termios='$i_termios'
16932 i_unistd='$i_unistd'
16935 i_values='$i_values'
16936 i_varargs='$i_varargs'
16937 i_varhdr='$i_varhdr'
16939 ignore_versioned_solibs='$ignore_versioned_solibs'
16940 inc_version_list='$inc_version_list'
16941 inc_version_list_init='$inc_version_list_init'
16944 installarchlib='$installarchlib'
16945 installbin='$installbin'
16946 installman1dir='$installman1dir'
16947 installman3dir='$installman3dir'
16948 installprefix='$installprefix'
16949 installprefixexp='$installprefixexp'
16950 installprivlib='$installprivlib'
16951 installscript='$installscript'
16952 installsitearch='$installsitearch'
16953 installsitebin='$installsitebin'
16954 installsitelib='$installsitelib'
16955 installstyle='$installstyle'
16956 installusrbinperl='$installusrbinperl'
16957 installvendorarch='$installvendorarch'
16958 installvendorbin='$installvendorbin'
16959 installvendorlib='$installvendorlib'
16961 issymlink='$issymlink'
16962 ivdformat='$ivdformat'
16965 known_extensions='$known_extensions'
16968 lddlflags='$lddlflags'
16970 ldflags_uselargefiles='$ldflags_uselargefiles'
16971 ldlibpthname='$ldlibpthname'
16978 libsdirs='$libsdirs'
16979 libsfiles='$libsfiles'
16980 libsfound='$libsfound'
16981 libspath='$libspath'
16982 libswanted='$libswanted'
16983 libswanted_uselargefiles='$libswanted_uselargefiles'
16989 locincpth='$locincpth'
16990 loclibpth='$loclibpth'
16991 longdblsize='$longdblsize'
16992 longlongsize='$longlongsize'
16993 longsize='$longsize'
16997 lseeksize='$lseeksize'
16998 lseektype='$lseektype'
17002 make_set_make='$make_set_make'
17003 mallocobj='$mallocobj'
17004 mallocsrc='$mallocsrc'
17005 malloctype='$malloctype'
17007 man1direxp='$man1direxp'
17010 man3direxp='$man3direxp'
17012 mips_type='$mips_type'
17014 mmaptype='$mmaptype'
17015 modetype='$modetype'
17017 multiarch='$multiarch'
17019 myarchname='$myarchname'
17020 mydomain='$mydomain'
17021 myhostname='$myhostname'
17024 need_va_copy='$need_va_copy'
17025 netdb_hlen_type='$netdb_hlen_type'
17026 netdb_host_type='$netdb_host_type'
17027 netdb_name_type='$netdb_name_type'
17028 netdb_net_type='$netdb_net_type'
17031 nm_so_opt='$nm_so_opt'
17032 nonxs_ext='$nonxs_ext'
17034 nvEUformat='$nvEUformat'
17035 nvFUformat='$nvFUformat'
17036 nvGUformat='$nvGUformat'
17037 nveformat='$nveformat'
17038 nvfformat='$nvfformat'
17039 nvgformat='$nvgformat'
17042 o_nonblock='$o_nonblock'
17044 old_pthread_create_joinable='$old_pthread_create_joinable'
17045 optimize='$optimize'
17046 orderlib='$orderlib'
17049 otherlibdirs='$otherlibdirs'
17053 patchlevel='$patchlevel'
17054 path_sep='$path_sep'
17057 perl_patchlevel='$perl_patchlevel'
17058 perladmin='$perladmin'
17059 perllibs='$perllibs'
17060 perlpath='$perlpath'
17062 phostname='$phostname'
17065 pm_apiversion='$pm_apiversion'
17069 prefixexp='$prefixexp'
17071 privlibexp='$privlibexp'
17072 prototype='$prototype'
17074 quadkind='$quadkind'
17075 quadtype='$quadtype'
17076 randbits='$randbits'
17077 randfunc='$randfunc'
17078 randseedtype='$randseedtype'
17080 rd_nodata='$rd_nodata'
17081 revision='$revision'
17086 sPRIEUldbl='$sPRIEUldbl'
17087 sPRIFUldbl='$sPRIFUldbl'
17088 sPRIGUldbl='$sPRIGUldbl'
17089 sPRIXU64='$sPRIXU64'
17091 sPRIeldbl='$sPRIeldbl'
17092 sPRIfldbl='$sPRIfldbl'
17093 sPRIgldbl='$sPRIgldbl'
17098 sSCNfldbl='$sSCNfldbl'
17099 sched_yield='$sched_yield'
17100 scriptdir='$scriptdir'
17101 scriptdirexp='$scriptdirexp'
17103 seedfunc='$seedfunc'
17104 selectminbits='$selectminbits'
17105 selecttype='$selecttype'
17106 sendmail='$sendmail'
17109 sharpbang='$sharpbang'
17110 shmattype='$shmattype'
17111 shortsize='$shortsize'
17114 sig_count='$sig_count'
17115 sig_name='$sig_name'
17116 sig_name_init='$sig_name_init'
17118 sig_num_init='$sig_num_init'
17119 sig_size='$sig_size'
17120 signal_t='$signal_t'
17121 sitearch='$sitearch'
17122 sitearchexp='$sitearchexp'
17124 sitebinexp='$sitebinexp'
17126 sitelib_stem='$sitelib_stem'
17127 sitelibexp='$sitelibexp'
17128 siteprefix='$siteprefix'
17129 siteprefixexp='$siteprefixexp'
17130 sizesize='$sizesize'
17131 sizetype='$sizetype'
17135 sockethdr='$sockethdr'
17136 socketlib='$socketlib'
17137 socksizetype='$socksizetype'
17139 spackage='$spackage'
17140 spitshell='$spitshell'
17142 ssizetype='$ssizetype'
17143 startperl='$startperl'
17145 static_ext='$static_ext'
17147 stdio_base='$stdio_base'
17148 stdio_bufsiz='$stdio_bufsiz'
17149 stdio_cnt='$stdio_cnt'
17150 stdio_filbuf='$stdio_filbuf'
17151 stdio_ptr='$stdio_ptr'
17152 stdio_stream_array='$stdio_stream_array'
17155 subversion='$subversion'
17159 targetarch='$targetarch'
17163 timeincl='$timeincl'
17164 timetype='$timetype'
17178 uidformat='$uidformat'
17184 uquadtype='$uquadtype'
17185 use5005threads='$use5005threads'
17186 use64bitall='$use64bitall'
17187 use64bitint='$use64bitint'
17188 usecrosscompile='$usecrosscompile'
17190 useithreads='$useithreads'
17191 uselargefiles='$uselargefiles'
17192 uselongdouble='$uselongdouble'
17193 usemorebits='$usemorebits'
17194 usemultiplicity='$usemultiplicity'
17195 usemymalloc='$usemymalloc'
17197 useopcode='$useopcode'
17198 useperlio='$useperlio'
17199 useposix='$useposix'
17200 usereentrant='$usereentrant'
17202 useshrplib='$useshrplib'
17203 usesocks='$usesocks'
17204 usethreads='$usethreads'
17205 usevendorprefix='$usevendorprefix'
17206 usevfork='$usevfork'
17209 uvXUformat='$uvXUformat'
17210 uvoformat='$uvoformat'
17213 uvuformat='$uvuformat'
17214 uvxformat='$uvxformat'
17215 vendorarch='$vendorarch'
17216 vendorarchexp='$vendorarchexp'
17217 vendorbin='$vendorbin'
17218 vendorbinexp='$vendorbinexp'
17219 vendorlib='$vendorlib'
17220 vendorlib_stem='$vendorlib_stem'
17221 vendorlibexp='$vendorlibexp'
17222 vendorprefix='$vendorprefix'
17223 vendorprefixexp='$vendorprefixexp'
17225 versiononly='$versiononly'
17227 voidflags='$voidflags'
17229 xs_apiversion='$xs_apiversion'
17231 yaccflags='$yaccflags'
17236 : Add in command line options if available
17237 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17239 : add special variables
17240 $test -f $src/patchlevel.h && \
17241 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17242 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17243 echo "PERL_CONFIG_SH=true" >>config.sh
17245 : propagate old symbols
17246 if $test -f UU/config.sh; then
17247 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17248 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17249 $sort | $uniq -u >UU/oldsyms
17250 set X `cat UU/oldsyms`
17256 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17258 echo "# Variables propagated from previous config.sh file." >>config.sh
17259 for sym in `cat UU/oldsyms`; do
17260 echo " Propagating $hint variable "'$'"$sym..."
17261 eval 'tmp="$'"${sym}"'"'
17263 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17269 : Finish up by extracting the .SH files
17273 echo "Extraction done."
17283 If you'd like to make any changes to the config.sh file before I begin
17284 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17287 rp="Press return or use a shell escape to edit config.sh:"
17292 *) : in case they cannot read
17293 sh 1>&4 -c "$ans";;
17298 : if this fails, just run all the .SH files by hand
17305 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17312 Now you need to generate make dependencies by running "$make depend".
17313 You might prefer to run it in background: "$make depend > makedepend.out &"
17314 It can take a while, so you might not want to run it right now.
17319 rp="Run $make depend now?"
17323 $make depend && echo "Now you must run '$make'."
17326 echo "You must run '$make depend' then '$make'."
17329 elif test -f [Mm]akefile; then
17331 echo "Now you must run a $make."
17333 echo "Configure done."
17336 if $test -f Policy.sh; then
17339 If you compile $package on a different machine or from a different object
17340 directory, copy the Policy.sh file from this object directory to the
17341 new one before you run Configure -- this will help you with most of
17342 the policy defaults.
17346 if $test -f config.msg; then
17347 echo "Hmm. I also noted the following information while running:"
17349 $cat config.msg >&4
17352 $rm -f kit*isdone ark*isdone