3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
23 # Generated on Wed Jun 13 21:32:05 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
472 d_old_pthread_create_joinable=''
473 old_pthread_create_joinable=''
561 d_stdio_ptr_lval_nochange_cnt=''
562 d_stdio_ptr_lval_sets_cnt=''
744 inc_version_list_init=''
763 ignore_versioned_solibs=''
822 d_perl_otherlibdirs=''
840 d_nv_preserves_uv_bits=''
939 d_stdio_stream_array=''
940 stdio_stream_array=''
950 ccflags_uselargefiles=''
951 ldflags_uselargefiles=''
952 libswanted_uselargefiles=''
998 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1001 : We must find out about Eunice early
1003 if test -f /etc/unixtovms; then
1004 eunicefix=/etc/unixtovms
1006 if test -f /etc/unixtovms.exe; then
1007 eunicefix=/etc/unixtovms.exe
1014 : set useposix=false in your hint file to disable the POSIX extension.
1016 : set useopcode=false in your hint file to disable the Opcode extension.
1018 : Trailing extension. Override this in a hint file, if needed.
1020 : Extra object files, if any, needed on this platform.
1023 : Possible local include directories to search.
1024 : Set locincpth to "" in a hint file to defeat local include searches.
1025 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1026 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1028 : no include file wanted by default
1032 : change the next line if compiling for Xenix/286 on Xenix/386
1033 xlibpth='/usr/lib/386 /lib/386'
1034 : Possible local library directories to search.
1035 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1036 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1038 : general looking path for locating libraries
1039 glibpth="/lib /usr/lib $xlibpth"
1040 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1041 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1042 test -f /shlib/libc.so && glibpth="/shlib $glibpth"
1044 : Private path used by Configure to find libraries. Its value
1045 : is prepended to libpth. This variable takes care of special
1046 : machines, like the mips. Usually, it should be empty.
1049 : default library list
1051 : some systems want to use only the non-versioned libso:s
1052 ignore_versioned_solibs=''
1054 ccflags_uselargefiles=''
1055 ldflags_uselargefiles=''
1056 libswanted_uselargefiles=''
1057 : set usemultiplicity on the Configure command line to enable multiplicity.
1058 : set usesocks on the Configure command line to enable socks.
1059 : set usethreads on the Configure command line to enable threads.
1060 usereentrant='undef'
1061 : full support for void wanted by default
1064 : List of libraries we want.
1065 : If anyone needs -lnet, put it in a hint file.
1066 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1067 libswanted="$libswanted dld ld sun m c cposix posix"
1068 libswanted="$libswanted ndir dir crypt sec"
1069 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1070 : We probably want to search /usr/shlib before most other libraries.
1071 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1072 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1073 glibpth="/usr/shlib $glibpth"
1074 : Do not use vfork unless overridden by a hint file.
1077 : Find the basic shell for Bourne shell scripts
1081 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1084 if test -f "$xxx"; then
1087 : Build up a list and do a single loop so we can 'break' out.
1088 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1089 for xxx in sh bash ksh pdksh ash; do
1091 try="$try ${p}/${xxx}"
1095 if test -f "$xxx"; then
1098 elif test -f "$xxx.exe"; then
1109 $me: Fatal Error: I can't find a Bourne Shell anywhere.
1111 Usually it's in /bin/sh. How did you even get this far?
1112 Please contact me (Perl Maintainers) at perlbug@perl.org and
1113 we'll try to straighten this all out.
1119 : see if sh knows # comments
1120 if `$sh -c '#' >/dev/null 2>&1`; then
1124 test -f $xcat || xcat=/usr/bin/cat
1129 if test -s today; then
1132 echo "#! $xcat" > try
1136 if test -s today; then
1144 echo "Your $sh doesn't grok # comments--I will strip them later on."
1147 echo "exec grep -v '^[ ]*#'" >spitshell
1149 $eunicefix spitshell
1150 spitshell=`pwd`/spitshell
1152 echo "I presume that if # doesn't work, #! won't work either!"
1157 : figure out how to guarantee sh startup
1159 '') startsh=${sharpbang}${sh} ;;
1171 : echo "Yup, it does."
1173 echo "Hmm... '$startsh' does not guarantee sh startup..."
1174 echo "You may have to fix up the shell scripts to make sure $sh runs them."
1179 : Save command line options in file UU/cmdline.opt for later use in
1180 : generating config.sh.
1181 cat > cmdline.opt <<EOSH
1182 # Configure command line arguments.
1189 cat >>cmdline.opt <<EOSH
1190 config_arg$argn='$arg'
1192 argn=`expr $argn + 1`
1195 : produce awk script to parse command line options
1196 cat >options.awk <<'EOF'
1198 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
1200 len = length(optstr);
1201 for (i = 1; i <= len; i++) {
1202 c = substr(optstr, i, 1);
1203 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1214 if (substr(str, 1, 1) != "-") {
1215 printf("'%s'\n", str);
1219 for (i = 2; i <= len; i++) {
1220 c = substr(str, i, 1);
1222 printf("-%s\n", substr(str, i));
1228 printf("'%s'\n", substr(str, i + 1));
1241 : process the command line options
1242 set X `for arg in "$@"; do echo "X$arg"; done |
1243 sed -e s/X// | awk -f options.awk`
1248 : set up default values
1258 rm -f optdef.sh posthint.sh
1259 cat >optdef.sh <<EOS
1265 while test $# -gt 0; do
1267 -d) shift; fastread=yes;;
1268 -e) shift; alldone=cont;;
1272 if test -r "$1"; then
1275 echo "$me: cannot read config file $1." >&2
1280 -h) shift; error=true;;
1281 -r) shift; reuseval=true;;
1282 -s) shift; silent=true; realsilent=true;;
1283 -E) shift; alldone=exit;;
1284 -K) shift; knowitall=true;;
1285 -O) shift; override=true;;
1286 -S) shift; silent=true; extractsh=true;;
1291 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1292 echo "$me: ignoring -D $1" >&2
1295 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1296 *) echo "$1='define'" >> optdef.sh;;
1303 *=) echo "$1" >> optdef.sh;;
1305 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1306 echo "$me: ignoring -U $1" >&2
1308 *) echo "$1='undef'" >> optdef.sh;;
1319 *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1323 zzz=" "`echo $yyy|sed 's!^[^=]*=!!'`
1324 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1330 *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1331 yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1332 zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1333 yyy=`echo $yyy|sed 's!=.*!!'` ;;
1334 *) xxx=`echo $yyy|sed 's!:.*!!'`
1335 yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1341 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
1343 echo "$yyy=''" >> posthint.sh ;;
1348 echo "$yyy='$zzz'" >> posthint.sh ;;
1350 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
1352 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
1357 echo "$yyy=$zzz" >> posthint.sh ;;
1358 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1362 -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1365 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1373 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1374 [-U symbol] [-U symbol=] [-A command:symbol...]
1375 -d : use defaults for all answers.
1376 -e : go on without questioning past the production of config.sh.
1377 -f : specify an alternate default configuration file.
1378 -h : print this help message and exit (with an error status).
1379 -r : reuse C symbols value if possible (skips costly nm extraction).
1380 -s : silent mode, only echoes questions and essential information.
1381 -D : define symbol to have some value:
1382 -D symbol symbol gets the value 'define'
1383 -D symbol=value symbol gets the value 'value'
1384 -E : stop at the end of questions, after having produced config.sh.
1385 -K : do not use unless you know what you are doing.
1386 -O : let -D and -U override definitions from loaded configuration file.
1387 -S : perform variable substitutions on all .SH files (can mix with -f)
1388 -U : undefine symbol:
1389 -U symbol symbol gets the value 'undef'
1390 -U symbol= symbol gets completely empty
1391 -A : manipulate symbol after the platform specific hints have been applied:
1392 -A symbol=value append " "value to symbol
1393 -A append:symbol=value append value to symbol
1394 -A define:symbol=value define symbol to have value
1395 -A clear:symbol define symbol to be ''
1396 -A define:symbol define symbol to be 'define'
1397 -A eval:symbol=value define symbol to be eval of value
1398 -A prepend:symbol=value prepend value to symbol
1399 -A undef:symbol define symbol to be 'undef'
1400 -A undef:symbol= define symbol to be ''
1401 -V : print version number and exit (with a zero status).
1408 case "$fastread$alldone" in
1411 case "$extractsh" in
1414 if test ! -t 0; then
1415 echo "Say 'sh Configure', not 'sh <Configure'"
1425 true) exec 1>/dev/null;;
1428 : run the defines and the undefines, if any, but leave the file out there...
1431 : create the posthint manipulation script and leave the file out there...
1436 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1437 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1438 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1439 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1440 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1443 : Some greps do not return status, grrr.
1444 echo "grimblepritz" >grimble
1445 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1447 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1453 : the following should work in any shell
1457 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1458 cat >contains <<'EOSS'
1459 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1464 : Find the path to the source tree
1467 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1471 *) src=`cd ../$src && pwd` ;;
1484 if test -f $rsrc/Configure && \
1485 $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1487 : found it, so we are ok.
1490 for src in . .. ../.. ../../.. ../../../..; do
1491 if test -f ../$src/Configure && \
1492 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1503 Sorry, I can't seem to locate the source dir for $package. Please start
1504 Configure with an explicit path -- i.e. /some/path/Configure.
1512 echo "Sources for $package found in \"$src\"." >&4
1516 : script used to extract .SH files with variable substitutions
1517 cat >extract <<'EOS'
1519 echo "Doing variable substitutions on .SH files..."
1520 if test -f MANIFEST; then
1521 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1523 echo "(Looking for .SH files under the source directory.)"
1524 set x `(cd $src; find . -name "*.SH" -print)`
1528 0) set x `(cd $src; echo *.SH)`; shift;;
1530 if test ! -f $src/$1; then
1536 while test $name; do
1537 if test ! -d "$name"; then
1538 create="$name $create";
1539 name=`echo $name | sed -e "s|^[^/]*$||"`;
1540 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1545 for file in $create; do
1554 dir=`expr X$file : 'X\(.*\)/'`
1555 file=`expr X$file : 'X.*/\(.*\)'`
1556 (cd $dir && . ./$file)
1566 dir=`expr X$file : 'X\(.*\)/'`
1567 file=`expr X$file : 'X.*/\(.*\)'`
1568 (set x $dir; shift; eval $mkdir_p)
1578 if test -f $src/config_h.SH; then
1579 if test ! -f config.h; then
1580 : oops, they left it out of MANIFEST, probably, so do it anyway.
1586 : extract files and exit if asked to do so
1587 case "$extractsh" in
1589 case "$realsilent" in
1593 case "$config_sh" in
1594 '') config_sh='config.sh';;
1597 echo "Fetching answers from $config_sh..."
1600 test "$override" && . ./optdef.sh
1604 echo "Extraction done."
1609 : Eunice requires " " instead of "", can you believe it
1612 echo "Beginning of configuration questions for $package."
1614 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1616 : first determine how to suppress newline on echo command
1618 echo "Checking echo to see how to suppress newlines..."
1619 (echo "hi there\c" ; echo " ") >.echotmp
1620 if $contains c .echotmp >/dev/null 2>&1 ; then
1631 echo $n "The star should be here-->$c"
1635 : Now test for existence of everything in MANIFEST
1637 if test -f $rsrc/MANIFEST; then
1638 echo "First let's make sure your kit is complete. Checking..." >&4
1639 awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1642 for filelist in x??; do
1643 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1645 if test -s missing; then
1649 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1651 You have the option of continuing the configuration process, despite the
1652 distinct possibility that your kit is damaged, by typing 'y'es. If you
1653 do, don't blame me if something goes wrong. I advise you to type 'n'o
1654 and contact the author (perlbug@perl.org).
1657 echo $n "Continue? [n] $c" >&4
1661 echo "Continuing..." >&4
1665 echo "ABORTING..." >&4
1670 echo "Looks good..."
1673 echo "There is no MANIFEST file. I hope your kit is complete !"
1678 : Find the appropriate value for a newline for tr
1679 if test -n "$DJGPP"; then
1682 if test X"$trnl" = X; then
1683 case "`echo foo|tr '\n' x 2>/dev/null`" in
1687 if test X"$trnl" = X; then
1688 case "`echo foo|tr '\012' x 2>/dev/null`" in
1689 foox) trnl='\012' ;;
1692 if test X"$trnl" = X; then
1695 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1701 : compute the number of columns on the terminal for proper question formatting
1706 : set up the echo used in my read
1707 myecho="case \"\$xxxm\" in
1708 '') echo $n \"\$rp $c\" >&4;;
1710 '') echo $n \"[\$xxxm] $c\";;
1712 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
1714 echo $n \"[\$xxxm] $c\" >&4
1716 echo $n \"\$rp [\$xxxm] $c\" >&4
1722 : now set up to do reads with possible shell escape and default assignment
1728 case "\$fastread" in
1729 yes) case "\$dflt" in
1732 case "\$silent-\$rp" in
1737 *) case "\$silent" in
1738 true) case "\$rp" in
1743 while expr "X\$ans" : "X!" >/dev/null; do
1747 aok=''; eval "ans=\\"\$answ\\"" && aok=y
1755 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1764 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1769 echo "(OK, I'll run with -d after this question.)" >&4
1772 echo "*** Sorry, \$1 not supported yet." >&4
1782 echo "*** Substitution done -- please confirm."
1784 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1789 echo "*** Error -- try again."
1796 case "\$ans\$xxxm\$nostick" in
1808 : create .config dir to save info across Configure sessions
1809 test -d ../.config || mkdir ../.config
1810 cat >../.config/README <<EOF
1811 This directory created by Configure to save information that should
1812 persist across sessions for $package.
1814 You may safely delete it if you wish.
1817 xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1819 $define|true|[yY]*) ;;
1820 *) case "$xversion" in
1823 *** WHOA THERE!!! ***
1825 This is an UNSTABLE DEVELOPMENT release.
1826 The version of this $package distribution is $xversion, that is, odd,
1827 (as opposed to even) and that signifies a development release.
1828 If you want a maintenance release, you want an even-numbered version.
1830 Do ***NOT*** install this into production use.
1831 Data corruption and crashes are possible.
1833 It is most seriously suggested that you do not continue any further
1834 unless you want to help in developing and debugging Perl.
1836 If you *still* want to build perl, you can answer 'y' now,
1837 or pass -Dusedevel to Configure.
1840 rp='Do you really want to continue?'
1844 [yY]) echo >&4 "Okay, continuing."
1845 usedevel="$define" ;;
1846 *) echo >&4 "Okay, bye."
1856 case "$versiononly" in
1857 '') versiononly="$define" ;;
1859 case "$installusrbinperl" in
1860 '') installusrbinperl="$undef" ;;
1865 : general instructions
1868 user=`(logname) 2>/dev/null`
1870 '') user=`whoami 2>&1`;;
1872 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1875 rp='Would you like to see the instructions?'
1886 This installation shell script will examine your system and ask you questions
1887 to determine how the perl5 package should be installed. If you get
1888 stuck on a question, you may use a ! shell escape to start a subshell or
1889 execute a command. Many of the questions will have default answers in square
1890 brackets; typing carriage return will give you the default.
1892 On some of the questions which ask for file or directory names you are allowed
1893 to use the ~name construct to specify the login directory belonging to "name",
1894 even if you don't have a shell which knows about that. Questions where this is
1895 allowed will be marked "(~name ok)".
1899 dflt='Type carriage return to continue'
1903 The prompter used in this script allows you to use shell variables and
1904 backticks in your answers. You may use $1, $2, etc... to refer to the words
1905 in the default answer, as if the default line was a set of arguments given to a
1906 script shell. This means you may also use $* to repeat the whole default line,
1907 so you do not have to re-type everything to add something to the default.
1909 Everytime there is a substitution, you will have to confirm. If there is an
1910 error (e.g. an unmatched backtick), the default answer will remain unchanged
1911 and you will be prompted again.
1913 If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1914 the questions and use the computed defaults (or the previous answers if there
1915 was already a config.sh file). Type 'Configure -h' for a list of options.
1916 You may also start interactively and then answer '& -d' at any prompt to turn
1917 on the non-interactive behaviour for the remainder of the execution.
1923 Much effort has been expended to ensure that this shell script will run on any
1924 Unix system. If despite that it blows up on yours, your best bet is to edit
1925 Configure and run it again. If you can't run Configure for some reason,
1926 you'll have to generate a config.sh file by hand. Whatever problems you
1927 have, let me (perlbug@perl.org) know how I blew it.
1929 This installation script affects things in two ways:
1931 1) it may do direct variable substitutions on some of the files included
1933 2) it builds a config.h file for inclusion in C programs. You may edit
1934 any of these files as the need arises after running this script.
1936 If you make a mistake on a question, there is no easy way to back up to it
1937 currently. The easiest thing to do is to edit config.sh and rerun all the SH
1938 files. Configure will offer to let you do this before it runs the SH files.
1941 dflt='Type carriage return to continue'
1943 case "$firsttime" in
1944 true) echo $user >>../.config/instruct;;
1948 : find out where common programs are
1950 echo "Locating common programs..." >&4
1963 if test -d \$dir/\$thing; then
1969 for thisthing in \$dir/\$thing; do
1970 : just loop through to pick last item
1972 if test -f \$thisthing; then
1975 elif test -f \$dir/\$thing.exe; then
1976 if test -n "$DJGPP"; then
1977 echo \$dir/\$thing.exe
1979 : on Eunice apparently
2030 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2031 pth="$pth /lib /usr/lib"
2032 for file in $loclist; do
2036 if test -f "$xxx"; then
2039 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2040 xxx=`./loc $file $file $pth`
2043 '') xxx=`./loc $file $file $pth`;;
2044 *) xxx=`./loc $xxx $xxx $pth`;;
2050 echo $file is in $xxx.
2053 echo $file is in $xxx.
2056 echo "I don't know where '$file' is, and my life depends on it." >&4
2057 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2063 echo "Don't worry if any of the following aren't found..."
2065 for file in $trylist; do
2069 if test -f "$xxx"; then
2072 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2073 xxx=`./loc $file $file $pth`
2076 '') xxx=`./loc $file $file $pth`;;
2077 *) xxx=`./loc $xxx $xxx $pth`;;
2083 echo $file is in $xxx.
2086 echo $file is in $xxx.
2089 echo "I don't see $file out there, $say."
2096 echo "Substituting grep for egrep."
2102 echo "Substituting cp for ln."
2108 echo "Hopefully test is built into your sh."
2111 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2112 echo "Using the test built into your sh."
2120 echo "Hopefully echo is built into your sh."
2125 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2126 $echo $n "hi there$c" >foo1
2127 echo $n "hi there$c" >foo2
2128 if cmp foo1 foo2 >/dev/null 2>&1; then
2129 echo "They are compatible. In fact, they may be identical."
2136 They are not compatible! You are probably running ksh on a non-USG system.
2137 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2138 have echo built in and we may have to run some Bourne shell scripts. That
2139 means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2142 $echo $n "The star should be here-->$c"
2152 cat <<'EOSC' >>checkcc
2157 int main(int argc, char *argv[]) {
2161 if $cc -o try $ccflags $ldflags try.c; then
2164 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2170 case "`$cc -v -c try.c 2>&1`" in
2173 if $test X"$trygcc" = Xyes; then
2174 if gcc -o try -c try.c; then
2176 echo "You seem to have a working gcc, though." >&4
2177 rp="Would you like to use it?"
2179 if $test -f myread; then
2182 if $test -f UU/myread; then
2185 echo "Cannot find myread, sorry. Aborting." >&2
2190 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2194 if $test X"$despair" = Xyes; then
2196 You need to find a working C compiler.
2197 Either (purchase and) install the C compiler supplied by your OS vendor,
2198 or for a free C compiler try http://gcc.gnu.org/
2199 I cannot continue any further, aborting.
2209 : determine whether symbolic links are supported
2212 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2213 echo "Symbolic links are supported." >&4
2216 echo "Symbolic links are NOT supported." >&4
2221 : determine whether symbolic links are supported
2225 echo "Checking how to test for symbolic links..." >&4
2227 if $test "X$issymlink" = X; then
2228 sh -c "PATH= test -h sym" >/dev/null 2>&1
2229 if test $? = 0; then
2233 if $test "X$issymlink" = X; then
2234 if $test -h >/dev/null 2>&1; then
2235 issymlink="$test -h"
2236 echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2239 if $test "X$issymlink" = X; then
2240 if $test -L sym 2>/dev/null; then
2241 issymlink="$test -L"
2244 if $test "X$issymlink" != X; then
2245 echo "You can test for symbolic links with '$issymlink'." >&4
2247 echo "I do not know how you can test for symbolic links." >&4
2251 *) echo "No symbolic links, so not testing for their testing..." >&4
2257 case "$mksymlinks" in
2260 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2263 *) case "$lns:$issymlink" in
2264 *"ln -s:"*"test -"?)
2265 echo "Creating the symbolic links..." >&4
2266 echo "(First creating the subdirectories...)" >&4
2268 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2270 test -z "$directory" && break
2274 if test ! -d t/base; then
2275 echo "Failed to create the subdirectories. Aborting." >&4
2278 echo "(Then creating the symlinks...)" >&4
2279 awk '{print $1}' $src/MANIFEST | while true; do
2281 test -z "$filename" && break
2282 if test -f $filename; then
2283 if $issymlink $filename; then
2287 if test -f $filename; then
2288 echo "$filename already exists, not symlinking."
2290 ln -s $src/$filename $filename
2294 if test ! -f t/base/commonsense.t; then
2295 echo "Failed to create the symlinks. Aborting." >&4
2300 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2308 : see whether [:lower:] and [:upper:] are supported character classes
2310 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2312 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2316 *) # There is a discontinuity in EBCDIC between 'I' and 'J'
2317 # (0xc9 and 0xd1), therefore that is a nice testing point.
2318 if test "X$up" = X -o "X$low" = X; then
2319 case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2325 if test "X$up" = X -o "X$low" = X; then
2326 case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2332 if test "X$up" = X -o "X$low" = X; then
2333 case "`echo IJ | od -x 2>/dev/null`" in
2335 echo "Hey, this might be EBCDIC." >&4
2336 if test "X$up" = X -o "X$low" = X; then
2337 case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2338 ij) up='[A-IJ-RS-Z]'
2343 if test "X$up" = X -o "X$low" = X; then
2344 case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2354 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2356 echo "Using $up and $low to convert case." >&4
2359 echo "I don't know how to translate letters from upper to lower case." >&4
2360 echo "Your tr is not acting any way I know of." >&4
2364 : set up the translation script tr, must be called with ./tr of course
2368 '[A-Z][a-z]') exec $tr '$up' '$low';;
2369 '[a-z][A-Z]') exec $tr '$low' '$up';;
2376 : Try to determine whether config.sh was made on this system
2377 case "$config_sh" in
2379 myuname=`$uname -a 2>/dev/null`
2380 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2381 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2382 # because the A-Z/a-z are not consecutive.
2383 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2384 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2385 newmyuname="$myuname"
2387 case "$knowitall" in
2389 if test -f ../config.sh; then
2390 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2391 eval "`grep myuname= ../config.sh`"
2393 if test "X$myuname" = "X$newmyuname"; then
2401 : Get old answers from old config file if Configure was run on the
2402 : same system, otherwise use the hints.
2405 if test -f config.sh; then
2407 rp="I see a config.sh file. Shall I use it to set the defaults?"
2410 n*|N*) echo "OK, I'll ignore it."
2411 mv config.sh config.sh.old
2412 myuname="$newmyuname"
2414 *) echo "Fetching default answers from your old config.sh file..." >&4
2422 : Older versions did not always set $sh. Catch re-use of such
2432 if test ! -f config.sh; then
2435 First time through, eh? I have some defaults handy for some systems
2436 that need some extra help getting the Configure answers right:
2439 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2441 : Half the following guesses are probably wrong... If you have better
2442 : tests or hints, please send them to perlbug@perl.org
2443 : The metaconfig authors would also appreciate a copy...
2444 $test -f /irix && osname=irix
2445 $test -f /xenix && osname=sco_xenix
2446 $test -f /dynix && osname=dynix
2447 $test -f /dnix && osname=dnix
2448 $test -f /lynx.os && osname=lynxos
2449 $test -f /unicos && osname=unicos && osvers=`$uname -r`
2450 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2451 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2452 $test -f /bin/mips && /bin/mips && osname=mips
2453 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2454 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2455 $test -d /usr/apollo/bin && osname=apollo
2456 $test -f /etc/saf/_sactab && osname=svr4
2457 $test -d /usr/include/minix && osname=minix
2458 if $test -d /MachTen -o -d /MachTen_Folder; then
2460 if $test -x /sbin/version; then
2461 osvers=`/sbin/version | $awk '{print $2}' |
2462 $sed -e 's/[A-Za-z]$//'`
2463 elif $test -x /usr/etc/version; then
2464 osvers=`/usr/etc/version | $awk '{print $2}' |
2465 $sed -e 's/[A-Za-z]$//'`
2471 $test -f /sys/posix.dll &&
2472 $test -f /usr/bin/what &&
2473 set X `/usr/bin/what /sys/posix.dll` &&
2474 $test "$3" = UWIN &&
2478 if $test -f $uname; then
2486 umips) osname=umips ;;
2489 [23]100) osname=mips ;;
2490 next*) osname=next ;;
2492 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2493 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2496 elif $test -f /etc/kconfig; then
2498 if test "$lns" = "$ln -s"; then
2500 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2502 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2509 if test -n "$DJGPP"; then
2518 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2520 'not found') osvers="$4"."$3" ;;
2521 '<3240'|'<>3240') osvers=3.2.0 ;;
2522 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2523 '=3250'|'>3250') osvers=3.2.5 ;;
2527 bsd386) osname=bsd386
2530 cygwin*) osname=cygwin
2533 *dc.osx) osname=dcosx
2539 domainos) osname=apollo
2545 dynixptx*) osname=dynixptx
2546 osvers=`echo "$4"|sed 's/^v//'`
2548 freebsd) osname=freebsd
2550 genix) osname=genix ;;
2552 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2568 netbsd*) osname=netbsd
2571 news-os) osvers="$3"
2573 4*) osname=newsos4 ;;
2577 next*) osname=next ;;
2578 nonstop-ux) osname=nonstopux ;;
2579 POSIX-BC | posix-bc ) osname=posix-bc
2582 powerux | power_ux | powermax_os | powermaxos | \
2583 powerunix | power_unix) osname=powerux
2589 solaris) osname=solaris
2591 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2598 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2602 titanos) osname=titanos
2611 ultrix) osname=ultrix
2614 osf1|mls+) case "$5" in
2617 osvers=`sizer -v | awk '{print $3}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2620 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2623 hp*) osname=hp_osf1 ;;
2624 mips) osname=mips_osf1 ;;
2627 unixware) osname=svr5
2633 $2) case "$osname" in
2637 : svr4.x or possibly later
2647 if test -f /stand/boot ; then
2648 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2649 if test -n "$INITPROG" -a -f "$INITPROG"; then
2650 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2651 if test -n "$isesix"; then
2659 *) if test -f /etc/systemid; then
2661 set `echo $3 | $sed 's/\./ /g'` $4
2662 if $test -f $src/hints/sco_$1_$2_$3.sh; then
2664 elif $test -f $src/hints/sco_$1_$2.sh; then
2666 elif $test -f $src/hints/sco_$1.sh; then
2671 '') : Still unknown. Probably a generic Sys V.
2680 *) case "$osname" in
2681 '') : Still unknown. Probably a generic BSD.
2689 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2690 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2691 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2694 $rm -f UU/kernel.what
2695 elif test -d c:/.; then
2702 : Now look for a hint file osname_osvers, unless one has been
2703 : specified already.
2706 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2707 : Also try without trailing minor version numbers.
2708 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2709 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2710 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2711 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2714 *) case "$osvers" in
2717 *) if $test -f $src/hints/$file.sh ; then
2719 elif $test -f $src/hints/$xfile.sh ; then
2721 elif $test -f $src/hints/$xxfile.sh ; then
2723 elif $test -f $src/hints/$xxxfile.sh ; then
2725 elif $test -f $src/hints/$xxxxfile.sh ; then
2727 elif $test -f "$src/hints/${osname}.sh" ; then
2736 if $test -f Policy.sh ; then
2739 none) dflt="Policy" ;;
2740 *) dflt="Policy $dflt" ;;
2745 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2749 if $test -f Policy.sh ; then
2752 There's also a Policy hint file available, which should make the
2753 site-specific (policy) questions easier to answer.
2760 You may give one or more space-separated answers, or "none" if appropriate.
2761 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2762 is a good thing. DO NOT give a wrong version or a wrong OS.
2766 rp="Which of these apply, if any?"
2769 for file in $tans; do
2770 if $test X$file = XPolicy -a -f Policy.sh; then
2772 $cat Policy.sh >> UU/config.sh
2773 elif $test -f $src/hints/$file.sh; then
2774 . $src/hints/$file.sh
2775 $cat $src/hints/$file.sh >> UU/config.sh
2776 elif $test X$tans = X -o X$tans = Xnone ; then
2779 : Give one chance to correct a possible typo.
2780 echo "$file.sh does not exist"
2782 rp="hint to use instead?"
2784 for file in $ans; do
2785 if $test -f "$src/hints/$file.sh"; then
2786 . $src/hints/$file.sh
2787 $cat $src/hints/$file.sh >> UU/config.sh
2788 elif $test X$ans = X -o X$ans = Xnone ; then
2791 echo "$file.sh does not exist -- ignored."
2798 : Remember our hint file for later.
2799 if $test -f "$src/hints/$file.sh" ; then
2809 echo "Fetching default answers from $config_sh..." >&4
2813 cp $config_sh config.sh 2>/dev/null
2823 test "$override" && . ./optdef.sh
2825 : Restore computed paths
2826 for file in $loclist $trylist; do
2827 eval $file="\$_$file"
2832 Configure uses the operating system name and version to set some defaults.
2833 The default value is probably right if the name rings a bell. Otherwise,
2834 since spelling matters for me, either accept the default or answer "none"
2841 ''|' '|none) dflt=none ;;
2842 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2845 *) dflt="$osname" ;;
2847 rp="Operating system name?"
2851 *) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2857 ''|' '|none) dflt=none ;;
2858 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2859 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2861 ''|' ') dflt=none ;;
2866 *) dflt="$osvers" ;;
2868 rp="Operating system version?"
2878 : who configured the system
2879 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2880 cf_by=`(logname) 2>/dev/null`
2883 cf_by=`(whoami) 2>/dev/null`
2885 "") cf_by=unknown ;;
2889 : set up the script used to warn in case of inconsistency
2896 echo "*** WHOA THERE!!! ***" >&4
2897 echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2898 rp=" Keep the $hint value?"
2901 y) td=$was; tu=$was;;
2905 : function used to set $1 to $val
2906 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2908 $define$undef) . ./whoa; eval "$var=\$td";;
2909 $undef$define) . ./whoa; eval "$var=\$tu";;
2910 *) eval "$var=$val";;
2913 case "$usethreads" in
2914 $define|true|[yY]*) dflt='y';;
2919 Perl can be built to take advantage of threads on some systems.
2920 To do so, Configure can be run with -Dusethreads.
2922 Note that threading is a highly experimental feature, and
2923 some known race conditions still remain. If you choose to try
2924 it, be very sure to not actually deploy it for production
2925 purposes. README.threads has more details, and is required
2926 reading if you enable threads.
2928 If this doesn't make any sense to you, just accept the default '$dflt'.
2930 rp='Build a threading Perl?'
2933 y|Y) val="$define" ;;
2939 case "$usethreads" in
2943 As of 5.5.640, Perl has two different internal threading implementations,
2944 the 5.005 version (5005threads) and an interpreter-based version
2945 (ithreads) that has one interpreter per thread. Both are very
2946 experimental. This arrangement exists to help developers work out
2947 which one is better.
2949 If you're a casual user, you probably don't want interpreter-threads
2950 at this time. There doesn't yet exist a way to create threads from
2951 within Perl in this model, i.e., "use Thread;" will NOT work.
2953 : Default to ithreads unless overridden on command line or with
2956 case "$use5005threads" in
2957 $define|true|[yY]*) dflt='n';;
2959 case "$useithreads" in
2960 $undef|false|[nN]*) dflt='n';;
2962 rp='Use interpreter-based ithreads?'
2965 y|Y) val="$define" ;;
2970 : Now set use5005threads to the opposite value.
2971 case "$useithreads" in
2972 $define) val="$undef" ;;
2979 useithreads="$undef"
2980 use5005threads="$undef"
2984 case "$useithreads$use5005threads" in
2988 You cannot have both the ithreads and the 5.005 threads enabled
2989 at the same time. Disabling the 5.005 threads since they are
2990 much less stable than the ithreads.
2993 use5005threads="$undef"
2997 case "$d_oldpthreads" in
2998 '') : Configure tests would be welcome here. For now, assume undef.
3000 *) val="$d_oldpthreads" ;;
3006 case "$usethreads" in
3007 "$define"|true|[yY]*)
3008 : Look for a hint-file generated 'call-back-unit'. If the
3009 : user has specified that a threading perl is to be built,
3010 : we may need to set or change some other defaults.
3011 if $test -f usethreads.cbu; then
3012 echo "Your platform has some specific hints for threaded builds, using them..."
3016 (Your platform doesn't have any specific hints for threaded builds.
3017 Assuming POSIX threads, then.)
3025 Perl can be built so that multiple Perl interpreters can coexist
3026 within the same Perl executable.
3029 case "$useithreads" in
3032 This multiple interpreter support is required for interpreter-based threads.
3036 *) case "$usemultiplicity" in
3037 $define|true|[yY]*) dflt='y';;
3041 echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3042 rp='Build Perl for multiplicity?'
3045 y|Y) val="$define" ;;
3053 : make some quick guesses about what we are up against
3055 $echo $n "Hmm... $c"
3065 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3066 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3068 echo "Looks kind of like an OSF/1 system, but we'll see..."
3070 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3071 xxx=`./loc addbib blurfl $pth`
3072 if $test -f $xxx; then
3073 echo "Looks kind of like a USG system with BSD features, but we'll see..."
3077 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3078 echo "Looks kind of like an extended USG system, but we'll see..."
3080 echo "Looks kind of like a USG system, but we'll see..."
3084 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3085 echo "Looks kind of like a BSD system, but we'll see..."
3089 echo "Looks kind of like a Version 7 system, but we'll see..."
3092 case "$eunicefix" in
3095 There is, however, a strange, musty smell in the air that reminds me of
3096 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3100 : it so happens the Eunice I know will not run shell scripts in Unix format
3104 echo "Congratulations. You aren't running Eunice."
3108 : Detect OS2. The p_ variable is set above in the Head.U unit.
3109 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3110 : semicolon as a patch separator
3115 I have the feeling something is not exactly right, however...don't tell me...
3116 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3117 (Or you may be running DOS with DJGPP.)
3122 if test -f /xenix; then
3123 echo "Actually, this looks more like a XENIX system..."
3128 echo "It's not Xenix..."
3133 if test -f /venix; then
3134 echo "Actually, this looks more like a VENIX system..."
3141 echo "Nor is it Venix..."
3144 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3145 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3152 rp="Use which C compiler?"
3155 : Look for a hint-file generated 'call-back-unit'. Now that the
3156 : user has specified the compiler, we may need to set or change some
3158 if $test -f cc.cbu; then
3164 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3165 $cat >gccvers.c <<EOM
3170 printf("%s\n", __VERSION__);
3172 printf("%s\n", "1");
3178 if $cc -o gccvers $ccflags $ldflags gccvers.c; then
3179 gccversion=`./gccvers`
3180 case "$gccversion" in
3181 '') echo "You are not using GNU cc." ;;
3182 *) echo "You are using GNU cc $gccversion."
3188 echo "*** WHOA THERE!!! ***" >&4
3189 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3190 case "$knowitall" in
3192 echo " You'd better start hunting for one and let me know about it." >&4
3198 case "$gccversion" in
3199 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3201 case "$gccversion" in
3202 '') gccosandvers='' ;;
3203 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3204 gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3206 case "$gccosandvers" in
3207 $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3208 $osname$osvers) ;; # looking good
3209 $osname*) cat <<EOM >&4
3211 *** WHOA THERE!!! ***
3213 Your gcc has not been compiled for the exact release of
3214 your operating system ($gccosandvers versus $osname$osvers).
3216 In general it is a good idea to keep gcc synchronized with
3217 the operating system because otherwise serious problems
3218 may ensue when trying to compile software, like Perl.
3220 I'm trying to be optimistic here, though, and will continue.
3221 If later during the configuration and build icky compilation
3222 problems appear (headerfile conflicts being the most common
3223 manifestation), I suggest reinstalling the gcc to match
3224 your operating system release.
3228 *) gccosandvers='' ;; # failed to parse, better be silent
3236 case "$gccversion" in
3238 *) case "$ccflags" in
3240 *) ccflags="$ccflags -Wall" ;;
3245 : see how we invoke the C preprocessor
3247 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3248 cat <<'EOT' >testcpp.c
3254 if test ! -f cppstdin; then
3255 if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3256 # AIX cc -E doesn't show the absolute headerfile
3257 # locations but we'll cheat by using the -M flag.
3258 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
3260 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3263 echo "Keeping your $hint cppstdin wrapper."
3266 wrapper=`pwd`/cppstdin
3270 if $test "X$cppstdin" != "X" && \
3271 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3272 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3274 echo "You used to use $cppstdin $cppminus so we'll use that again."
3276 '') echo "But let's see if we can live without a wrapper..." ;;
3278 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3279 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3281 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3284 echo "(However, $cpprun $cpplast does not work, let's see...)"
3292 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3299 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3300 $cc -E <testcpp.c >testcpp.out 2>&1; \
3301 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3302 echo "Yup, it does."
3305 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3306 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3307 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3308 echo "Yup, it does."
3311 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3312 $cc -P <testcpp.c >testcpp.out 2>&1; \
3313 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3314 echo "Yipee, that works!"
3317 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3318 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3319 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3320 echo "At long last!"
3323 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3324 $cpp <testcpp.c >testcpp.out 2>&1; \
3325 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3329 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3330 $cpp - <testcpp.c >testcpp.out 2>&1; \
3331 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3332 echo "Hooray, it works! I was beginning to wonder."
3335 elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3336 $wrapper <testcpp.c >testcpp.out 2>&1; \
3337 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3343 rp="No dice. I can't find a C preprocessor. Name one:"
3347 $x_cpp <testcpp.c >testcpp.out 2>&1
3348 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3349 echo "OK, that will do." >&4
3351 echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3366 echo "Perhaps can we force $cc -E using a wrapper..."
3367 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3368 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3374 echo "Nope, we'll have to live without it..."
3388 "$wrapper"|'cppstdin') ;;
3389 *) $rm -f $wrapper;;
3391 $rm -f testcpp.c testcpp.out
3393 : decide how portable to be. Allow command line overrides.
3394 case "$d_portable" in
3396 *) d_portable="$define" ;;
3399 : set up shell script to do ~ expansion
3405 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3408 if $test -f /bin/csh; then
3409 /bin/csh -f -c "glob \$1"
3414 name=\`$expr x\$1 : '..\([^/]*\)'\`
3415 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3416 if $test ! -d "\$dir"; then
3418 echo "\$me: can't locate home directory for: \$name" >&2
3423 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3439 : now set up to get a file name
3443 cat <<'EOSC' >>getfile
3459 expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3460 fn=`echo $fn | sed 's/(.*)//'`
3466 loc_file=`expr $fn : '.*:\(.*\)'`
3467 fn=`expr $fn : '\(.*\):.*'`
3475 */*) fullpath=true;;
3484 *e*) exp_file=true;;
3487 *p*) nopath_ok=true;;
3492 *d*) type='Directory';;
3493 *l*) type='Locate';;
3498 Locate) what='File';;
3503 case "$d_portable" in
3511 while test "$type"; do
3516 true) rp="$rp (~name ok)";;
3519 if test -f UU/getfile.ok && \
3520 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3539 value=`UU/filexp $ans`
3542 if test "$ans" != "$value"; then
3543 echo "(That expands to $value on this system.)"
3557 /*) value="$ansexp" ;;
3558 [a-zA-Z]:/*) value="$ansexp" ;;
3563 echo "I shall only accept a full path name, as in /bin/ls." >&4
3564 echo "Use a ! shell escape if you wish to check pathnames." >&4
3567 echo "Please give a full path name, starting with slash." >&4
3570 echo "Note that using ~name is ok provided it expands well." >&4
3583 for fp in $gfpth; do
3584 if test "X$fp" = X.; then
3589 if test -f "$pf"; then
3591 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3593 echo "($value is not a plain file, but that's ok.)"
3596 if test X"$type" = X; then
3603 for fp in $gfpth; do
3604 if test "X$fp" = X.; then
3609 direxp="$fp/$ansexp"
3611 if test -d "$direxp"; then
3619 if test -d "$ansexp"; then
3620 echo "(Looking for $loc_file in directory $value.)"
3621 value="$value/$loc_file"
3622 ansexp="$ansexp/$loc_file"
3624 if test -f "$ansexp"; then
3627 case "$nopath_ok" in
3628 true) case "$value" in
3630 *) echo "Assuming $value will be in people's path."
3646 if test "$fastread" = yes; then
3651 rp="$what $value doesn't exist. Use that name anyway?"
3670 test "X$gfpthkeep" != Xy && gfpth=""
3673 : What should the include directory be ?
3675 $echo $n "Hmm... $c"
3679 if $test -f /bin/mips && /bin/mips; then
3680 echo "Looks like a MIPS system..."
3681 $cat >usr.c <<'EOCP'
3682 #ifdef SYSTYPE_BSD43
3686 if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3687 dflt='/bsd43/usr/include'
3691 mips_type='System V'
3693 $rm -f usr.c usr.out
3694 echo "and you're compiling with the $mips_type compiler and libraries."
3698 echo "Doesn't look like a MIPS system."
3708 case "$xxx_prompt" in
3711 rp='Where are the include files you want to use?'
3719 : Set private lib path
3722 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3727 '') dlist="$loclibpth $plibpth $glibpth";;
3728 *) dlist="$libpth";;
3731 : Now check and see which directories actually exist, avoiding duplicates
3735 if $test -d $xxx; then
3738 *) libpth="$libpth $xxx";;
3744 Some systems have incompatible or broken versions of libraries. Among
3745 the directories listed in the question below, please remove any you
3746 know not to be holding relevant libraries, and add any that are needed.
3747 Say "none" for none.
3758 rp="Directories to use for library searches?"
3765 : compute shared library extension
3768 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3778 On some systems, shared libraries may be available. Answer 'none' if
3779 you want to suppress searching of shared libraries for the remainder
3780 of this configuration.
3783 rp='What is the file extension used for shared libraries?'
3787 : Define several unixisms.
3788 : Hints files or command line option can be used to override them.
3789 : The convoluted testing is in case hints files set either the old
3792 '') case "$exe_ext" in
3794 *) _exe="$exe_ext" ;;
3799 '') case "$lib_ext" in
3806 '') case "$obj_ext" in
3813 '') case "$path_sep" in
3824 : Which makefile gets called first. This is used by make depend.
3825 case "$firstmakefile" in
3826 '') firstmakefile='makefile';;
3830 $define|true|[yY]*) dflt='y';;
3835 Perl can be built to use the SOCKS proxy protocol library. To do so,
3836 Configure must be run with -Dusesocks. If you use SOCKS you also need
3837 to use the PerlIO abstraction layer, this will be implicitly selected.
3839 If this doesn't make any sense to you, just accept the default '$dflt'.
3841 rp='Build Perl for SOCKS?'
3844 y|Y) val="$define" ;;
3851 $define|true|[yY]*) useperlio="$define";;
3854 : Looking for optional libraries
3856 echo "Checking for optional libraries..." >&4
3861 case "$libswanted" in
3862 '') libswanted='c_s';;
3865 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3871 for thisdir in $libpth $xlibpth; do
3872 test -d $thisdir && libspath="$libspath $thisdir"
3874 for thislib in $libswanted; do
3875 for thisdir in $libspath; do
3877 if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3878 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3879 $test -f "$xxx" && eval $libscheck
3880 $test -f "$xxx" && libstyle=shared
3882 if test ! -f "$xxx"; then
3883 xxx=$thisdir/lib$thislib.$so
3884 $test -f "$xxx" && eval $libscheck
3885 $test -f "$xxx" && libstyle=shared
3887 if test ! -f "$xxx"; then
3888 xxx=$thisdir/lib$thislib$_a
3889 $test -f "$xxx" && eval $libscheck
3890 $test -f "$xxx" && libstyle=static
3892 if test ! -f "$xxx"; then
3893 xxx=$thisdir/$thislib$_a
3894 $test -f "$xxx" && eval $libscheck
3895 $test -f "$xxx" && libstyle=static
3897 if test ! -f "$xxx"; then
3898 xxx=$thisdir/lib${thislib}_s$_a
3899 $test -f "$xxx" && eval $libscheck
3900 $test -f "$xxx" && libstyle=static
3901 $test -f "$xxx" && thislib=${thislib}_s
3903 if test ! -f "$xxx"; then
3904 xxx=$thisdir/Slib$thislib$_a
3905 $test -f "$xxx" && eval $libscheck
3906 $test -f "$xxx" && libstyle=static
3908 if $test -f "$xxx"; then
3910 shared) echo "Found -l$thislib (shared)." ;;
3911 static) echo "Found -l$thislib." ;;
3912 *) echo "Found -l$thislib ($libstyle)." ;;
3916 *) dflt="$dflt -l$thislib"
3917 libsfound="$libsfound $xxx"
3919 libsfiles="$libsfiles $yyy"
3920 yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3921 case " $libsdirs " in
3923 *) libsdirs="$libsdirs $yyy" ;;
3930 if $test ! -f "$xxx"; then
3931 echo "No -l$thislib."
3942 ' '|'') dflt='none';;
3947 In order to compile $package on your machine, a number of libraries
3948 are usually needed. Include any other special libraries here as well.
3949 Say "none" for none. The default list is almost always right.
3953 rp="What libraries to use?"
3960 : determine optimization, if desired, or use for debug flag also
3962 ' '|$undef) dflt='none';;
3964 *) dflt="$optimize";;
3968 By default, $package compiles with the -O flag to use the optimizer.
3969 Alternately, you might want to use the symbolic debugger, which uses
3970 the -g flag (on traditional Unix systems). Either flag can be
3971 specified here. To use neither flag, specify the word "none".
3974 rp="What optimizer/debugger flag should be used?"
3978 'none') optimize=" ";;
3982 : We will not override a previous value, but we might want to
3983 : augment a hint file
3985 default|recommended)
3986 case "$gccversion" in
3987 1*) dflt='-fpcc-struct-return' ;;
3990 *-g*) dflt="$dflt -DDEBUGGING";;
3992 case "$gccversion" in
3993 2*) if test -d /etc/conf/kconfig.d &&
3994 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4000 case "$gccversion" in
4004 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4005 echo 'int main(void) { return 0; }' > gcctest.c
4006 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4007 echo "Yes, it does." 2>&1
4010 echo "Leaving current flags $ccflags alone." 2>&1
4012 *) dflt="$dflt -fno-strict-aliasing" ;;
4015 echo "Nope, it doesn't, but that's ok." 2>&1
4022 case "$mips_type" in
4023 *BSD*|'') inclwanted="$locincpth $usrinc";;
4024 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4026 for thisincl in $inclwanted; do
4027 if $test -d $thisincl; then
4028 if $test x$thisincl != x$usrinc; then
4030 *" -I$thisincl "*);;
4031 *) dflt="$dflt -I$thisincl ";;
4037 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4039 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4047 *) dflt="$dflt -D$2";;
4051 set signal.h LANGUAGE_C; eval $inctest
4055 ccflags="$ccflags -DSOCKS"
4060 default|recommended) dflt="$ccflags $dflt" ;;
4061 *) dflt="$ccflags";;
4070 Your C compiler may want other flags. For this question you should include
4071 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4072 but you should NOT include libraries or ld flags like -lwhatever. If you
4073 want $package to honor its debug switch, you should include -DDEBUGGING here.
4074 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4076 To use no flags, specify the word "none".
4082 rp="Any additional cc flags?"
4089 : the following weeds options from ccflags that are of no interest to cpp
4091 '') cppflags="$ccflags" ;;
4092 *) cppflags="$cppflags $ccflags" ;;
4094 case "$gccversion" in
4095 1*) cppflags="$cppflags -D__GNUC__"
4097 case "$mips_type" in
4099 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4105 echo "Let me guess what the preprocessor flags are..." >&4
4119 *) ftry="$previous $flag";;
4121 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4122 >cpp1.out 2>/dev/null && \
4123 $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4124 >cpp2.out 2>/dev/null && \
4125 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4126 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4128 cppflags="$cppflags $ftry"
4138 *-*) echo "They appear to be: $cppflags";;
4140 $rm -f cpp.c cpp?.out
4144 : flags used in final linking phase
4146 '') if ./venix; then
4152 *-posix*) dflt="$dflt -posix" ;;
4155 *) dflt="$ldflags";;
4158 : Try to guess additional flags to pick up local libraries.
4159 for thislibdir in $libpth; do
4160 case " $loclibpth " in
4163 *"-L$thislibdir "*) ;;
4164 *) dflt="$dflt -L$thislibdir" ;;
4176 Your C linker may need flags. For this question you should
4177 include -L/whatever and any other flags used by the C linker, but you
4178 should NOT include libraries like -lwhatever.
4180 Make sure you include the appropriate -L/path flags if your C linker
4181 does not normally search all of the directories you specified above,
4184 To use no flags, specify the word "none".
4188 rp="Any additional ld flags (NOT including libraries)?"
4194 rmlist="$rmlist pdp11"
4198 echo "Checking your choice of C compiler and flags for coherency..." >&4
4199 $cat > try.c <<'EOF'
4201 int main() { printf("Ok\n"); exit(0); }
4203 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4205 $cat >try.msg <<'EOM'
4206 I've tried to compile and run the following simple program:
4209 $cat try.c >> try.msg
4211 $cat >> try.msg <<EOM
4218 and I got the following output:
4222 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4223 if $sh -c './try' >>try.msg 2>&1; then
4227 *) echo 'The program compiled OK, but produced no output.' >> try.msg
4230 cat >> try.msg <<'EOQS'
4231 If $libs contains -lsfio, and sfio is mis-configured, then it
4232 sometimes (apparently) runs and exits with a 0 status, but with no
4233 output! It may have to do with sfio's use of _exit vs. exit.
4236 rp="You have a big problem. Shall I abort Configure"
4243 echo "The program compiled OK, but exited with status $?." >>try.msg
4244 rp="You have a problem. Shall I abort Configure"
4248 echo "I can't compile the test program." >>try.msg
4249 rp="You have a BIG problem. Shall I abort Configure"
4255 case "$knowitall" in
4257 echo "(The supplied flags or libraries might be incorrect.)"
4265 *) echo "Ok. Stopping Configure." >&4
4270 n) echo "OK, that should do.";;
4272 $rm -f try try.* core
4274 : define an is-a-typedef? function
4275 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4277 "") inclist="sys/types.h";;
4279 eval "varval=\$$var";
4283 for inc in $inclist; do
4284 echo "#include <$inc>" >>temp.c;
4286 echo "#ifdef $type" >> temp.c;
4287 echo "printf(\"We have $type\");" >> temp.c;
4288 echo "#endif" >> temp.c;
4289 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4290 if $contains $type temp.E >/dev/null 2>&1; then
4296 *) eval "$var=\$varval";;
4299 : define an is-a-typedef? function that prompts if the type is not available.
4300 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4302 "") inclist="sys/types.h";;
4304 eval "varval=\$$var";
4308 for inc in $inclist; do
4309 echo "#include <$inc>" >>temp.c;
4311 echo "#ifdef $type" >> temp.c;
4312 echo "printf(\"We have $type\");" >> temp.c;
4313 echo "#endif" >> temp.c;
4314 $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4316 echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4317 if $contains $type temp.E >/dev/null 2>&1; then
4318 echo "$type found." >&4;
4321 echo "$type NOT found." >&4;
4327 *) eval "$var=\$varval";;
4330 : define a shorthand compile call
4334 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4335 : define a shorthand compile call for compilations that should be ok.
4339 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4341 : check for lengths of integral types
4345 echo "Checking to see how big your integers are..." >&4
4346 $cat >intsize.c <<'EOCP'
4350 printf("intsize=%d;\n", (int)sizeof(int));
4351 printf("longsize=%d;\n", (int)sizeof(long));
4352 printf("shortsize=%d;\n", (int)sizeof(short));
4357 if eval $compile_ok && ./intsize > /dev/null; then
4359 echo "Your integers are $intsize bytes long."
4360 echo "Your long integers are $longsize bytes long."
4361 echo "Your short integers are $shortsize bytes long."
4365 Help! I can't compile and run the intsize test program: please enlighten me!
4366 (This is probably a misconfiguration in your system or libraries, and
4367 you really ought to fix it. Still, I'll try anyway.)
4371 rp="What is the size of an integer (in bytes)?"
4375 rp="What is the size of a long integer (in bytes)?"
4379 rp="What is the size of a short integer (in bytes)?"
4385 $rm -f intsize intsize.*
4387 : see what type lseek is declared as in the kernel
4388 rp="What is the type used for lseek's offset on this system?"
4389 set off_t lseektype long stdio.h sys/types.h
4393 echo "Checking to see how big your file offsets are..." >&4
4395 #include <sys/types.h>
4399 printf("%d\n", (int)sizeof($lseektype));
4404 if eval $compile_ok; then
4406 echo "Your file offsets are $lseeksize bytes long."
4410 echo "(I can't seem to compile the test program. Guessing...)"
4411 rp="What is the size of your file offsets (in bytes)?"
4417 : see what type file positions are declared as in the library
4418 rp="What is the type for file position used by fsetpos()?"
4419 set fpos_t fpostype long stdio.h sys/types.h
4424 *_t) zzz="$fpostype" ;;
4427 echo "Checking the size of $zzz..." >&4
4429 #include <sys/types.h>
4432 printf("%d\n", (int)sizeof($fpostype));
4437 if eval $compile_ok; then
4441 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4444 echo "Your $zzz is $fpossize bytes long."
4450 echo "(I can't compile the test program. Guessing...)" >&4
4451 rp="What is the size of your file positions (in bytes)?"
4458 # Backward compatibility (uselfs is deprecated).
4460 "$define"|true|[yY]*)
4463 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4465 uselargefiles="$define"
4469 case "$lseeksize:$fpossize" in
4472 You can have files larger than 2 gigabytes.
4475 *) case "$uselargefiles" in
4476 "$undef"|false|[nN]*) dflt='n' ;;
4481 Perl can be built to understand large files (files larger than 2 gigabytes)
4482 on some systems. To do so, Configure can be run with -Duselargefiles.
4484 If this doesn't make any sense to you, just accept the default '$dflt'.
4486 rp='Try to understand large files, if available?'
4489 y|Y) val="$define" ;;
4496 case "$uselargefiles" in
4498 : Look for a hint-file generated 'call-back-unit'. If the
4499 : user has specified that a large files perl is to be built,
4500 : we may need to set or change some other defaults.
4501 if $test -f uselargefiles.cbu; then
4502 echo "Your platform has some specific hints for large file builds, using them..."
4503 . ./uselargefiles.cbu
4505 echo "Rechecking to see how big your file offsets are..." >&4
4507 #include <sys/types.h>
4511 printf("%d\n", (int)sizeof($lseektype));
4516 if eval $compile_ok; then
4518 $echo "Your file offsets are now $lseeksize bytes long."
4522 echo "(I can't seem to compile the test program. Guessing...)"
4523 rp="What is the size of your file offsets (in bytes)?"
4528 *_t) zzz="$fpostype" ;;
4531 $echo $n "Rechecking the size of $zzz...$c" >&4
4533 #include <sys/types.h>
4536 printf("%d\n", (int)sizeof($fpostype));
4541 if eval $compile_ok; then
4546 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4549 echo " $fpossize bytes." >&4
4555 echo "(I can't compile the test program. Guessing...)" >&4
4556 rp="What is the size of your file positions (in bytes)?"
4566 case "$usemorebits" in
4567 "$define"|true|[yY]*)
4568 use64bitint="$define"
4569 uselongdouble="$define"
4570 usemorebits="$define"
4572 *) usemorebits="$undef"
4576 : check for void type
4578 echo "Checking to see how well your C compiler groks the void type..." >&4
4579 case "$voidflags" in
4581 $cat >try.c <<'EOCP'
4587 extern void moo(); /* function returning void */
4588 void (*goo)(); /* ptr to func returning void */
4590 void *hue; /* generic ptr */
4603 int main() { sub(); }
4605 if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4606 voidflags=$defvoidused
4607 echo "Good. It appears to support void to the level $package wants.">&4
4608 if $contains warning .out >/dev/null 2>&1; then
4609 echo "However, you might get some warnings that look like this:"
4613 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4614 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4615 echo "It supports 1..."
4616 if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4617 echo "It also supports 2..."
4618 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4620 echo "And it supports 4 but not 8 definitely."
4622 echo "It doesn't support 4..."
4623 if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4625 echo "But it supports 8."
4628 echo "Neither does it support 8."
4632 echo "It does not support 2..."
4633 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4635 echo "But it supports 4 and 8."
4637 if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4639 echo "And it supports 4 but has not heard about 8."
4641 echo "However it supports 8 but not 4."
4646 echo "There is no support at all for void."
4651 case "$voidflags" in
4654 Support flag bits are:
4655 1: basic void declarations.
4656 2: arrays of pointers to functions returning void.
4657 4: operations between pointers to and addresses of void functions.
4658 8: generic void pointers.
4661 rp="Your void support flags add up to what?"
4668 : check for length of pointer
4672 echo "Checking to see how big your pointers are..." >&4
4673 if test "$voidflags" -gt 7; then
4674 echo '#define VOID_PTR char *' > try.c
4676 echo '#define VOID_PTR void *' > try.c
4678 $cat >>try.c <<'EOCP'
4682 printf("%d\n", (int)sizeof(VOID_PTR));
4687 if eval $compile_ok; then
4689 echo "Your pointers are $ptrsize bytes long."
4692 echo "(I can't seem to compile the test program. Guessing...)" >&4
4693 rp="What is the size of a pointer (in bytes)?"
4701 : check for long long
4703 echo "Checking to see if you have long long..." >&4
4704 echo 'int main() { long long x = 7; return 0; }' > try.c
4706 if eval $compile; then
4708 echo "You have long long."
4711 echo "You do not have long long."
4717 : check for length of long long
4718 case "${d_longlong}${longlongsize}" in
4721 echo "Checking to see how big your long longs are..." >&4
4722 $cat >try.c <<'EOCP'
4726 printf("%d\n", (int)sizeof(long long));
4731 if eval $compile_ok; then
4732 longlongsize=`./try$exe_ext`
4733 echo "Your long longs are $longlongsize bytes long."
4737 echo "(I can't seem to compile the test program. Guessing...)"
4738 rp="What is the size of a long long (in bytes)?"
4742 if $test "X$longsize" = "X$longlongsize"; then
4743 echo "(That isn't any different from an ordinary long.)"
4749 : determine filename position in cpp output
4751 echo "Computing filename position in cpp output for #include directives..." >&4
4752 echo '#include <stdio.h>' > foo.c
4755 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4756 $grep '^[ ]*#.*stdio\.h' | \
4757 while read cline; do
4760 while $test \$# -gt 0; do
4761 if $test -r \`echo \$1 | $tr -d '"'\`; then
4766 pos=\`expr \$pos + 1\`
4778 *) pos="${fieldn}th";;
4780 echo "Your cpp writes the filename in the $pos field of the line."
4782 : locate header file
4787 for usrincdir in $usrinc
4789 if test -f \$usrincdir/\$wanted; then
4790 echo "\$usrincdir/\$wanted"
4794 awkprg='{ print \$$fieldn }'
4795 echo "#include <\$wanted>" > foo\$\$.c
4796 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4797 $grep "^[ ]*#.*\$wanted" | \
4798 while read cline; do
4799 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4801 *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4802 *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4807 # status = 0: grep returned 0 lines, case statement not executed
4808 # status = 1: headerfile found
4809 # status = 2: while loop executed, no headerfile found
4813 if test \$status -eq 1; then
4820 : define an alternate in-header-list? function
4821 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4822 cont=true; xxf="echo \"<\$1> found.\" >&4";
4823 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4824 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4826 case $# in 4) instead=instead;; *) instead="at last";; esac;
4827 while $test "$cont"; do
4829 var=$2; eval "was=\$$2";
4830 if $test "$xxx" && $test -r "$xxx";
4832 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4835 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4836 set $yyy; shift; shift; yyy=$@;
4837 case $# in 0) cont="";;
4838 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4839 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4840 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4841 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4845 do set $yyy; var=$2; eval "was=\$$2";
4846 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4847 set $yyy; shift; shift; yyy=$@;
4850 : see if inttypes.h is available
4851 : we want a real compile instead of Inhdr because some systems
4852 : have an inttypes.h which includes non-existent headers
4855 #include <inttypes.h>
4857 static int32_t foo32 = 0x12345678;
4861 if eval $compile; then
4862 echo "<inttypes.h> found." >&4
4865 echo "<inttypes.h> NOT found." >&4
4874 echo "Checking to see if you have int64_t..." >&4
4876 #include <sys/types.h>
4877 #$i_inttypes I_INTTYPES
4879 #include <inttypes.h>
4881 int main() { int64_t x = 7; }
4884 if eval $compile; then
4886 echo "You have int64_t."
4889 echo "You do not have int64_t."
4897 echo "Checking which 64-bit integer type we could use..." >&4
4903 val='"unsigned int"'
4908 *) case "$longsize" in
4912 val='"unsigned long"'
4917 *) case "$d_longlong:$longlongsize" in
4922 val='"unsigned long long"'
4927 *) case "$d_int64_t" in
4946 '') echo "Alas, no 64-bit integer types in sight." >&4
4949 *) echo "We could use '$quadtype' for 64-bit integers." >&4
4955 case "$uselonglong" in
4956 "$define"|true|[yY]*)
4959 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4961 use64bitint="$define"
4964 case "$use64bits" in
4965 "$define"|true|[yY]*)
4968 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4970 use64bitint="$define"
4973 case "$use64bitints" in
4974 "$define"|true|[yY]*)
4977 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4979 use64bitint="$define"
4982 case "$use64bitsint" in
4983 "$define"|true|[yY]*)
4986 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4988 use64bitint="$define"
4991 case "$uselonglongs" in
4992 "$define"|true|[yY]*)
4995 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4997 use64bitint="$define"
5000 case "$use64bitsall" in
5001 "$define"|true|[yY]*)
5004 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5006 use64bitall="$define"
5011 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5013 case "$use64bitall" in
5014 "$define"|true|[yY]*) use64bitint="$define" ;;
5020 You have natively 64-bit long integers.
5024 *) case "$use64bitint" in
5025 "$define"|true|[yY]*) dflt='y';;
5034 Perl can be built to take advantage of 64-bit integer types
5035 on some systems. To do so, Configure can be run with -Duse64bitint.
5036 Choosing this option will most probably introduce binary incompatibilities.
5038 If this doesn't make any sense to you, just accept the default '$dflt'.
5039 (The default has been chosen based on your configuration.)
5041 rp='Try to use 64-bit integers, if available?'
5044 [yY]*) val="$define" ;;
5052 case "$use64bitall" in
5053 "$define"|true|[yY]*) dflt='y' ;;
5054 *) case "$longsize" in
5062 You may also choose to try maximal 64-bitness. It means using as much
5063 64-bitness as possible on the platform. This in turn means even more
5064 binary incompatibilities. On the other hand, your platform may not
5065 have any more 64-bitness available than what you already have chosen.
5067 If this doesn't make any sense to you, just accept the default '$dflt'.
5068 (The default has been chosen based on your configuration.)
5070 rp='Try to use maximal 64-bit support, if available?'
5073 [yY]*) val="$define" ;;
5078 case "$use64bitall" in
5080 case "$use64bitint" in
5084 Since you have chosen a maximally 64-bit build, I'm also turning on
5085 the use of 64-bit integers.
5087 use64bitint="$define" ;;
5092 case "$use64bitall" in
5093 "$define"|true|[yY]*)
5097 *** You have chosen a maximally 64-bit build, but your pointers
5098 *** are only 4 bytes wide, disabling maximal 64-bitness.
5101 use64bitall="$undef"
5102 case "$use64bitint" in
5103 "$define"|true|[yY]*) ;;
5106 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5109 use64bitint="$define"
5117 case "$use64bitint" in
5118 "$define"|true|[yY]*)
5119 : Look for a hint-file generated 'call-back-unit'. If the
5120 : user has specified that a 64-bit perl is to be built,
5121 : we may need to set or change some other defaults.
5122 if $test -f use64bitint.cbu; then
5123 echo "Your platform has some specific hints for 64-bit integers, using them..."
5127 4) case "$archname64" in
5128 '') archname64=64int ;;
5135 case "$use64bitall" in
5136 "$define"|true|[yY]*)
5137 : Look for a hint-file generated 'call-back-unit'. If the
5138 : user has specified that a maximally 64-bit perl is to be built,
5139 : we may need to set or change some other defaults.
5140 if $test -f use64bitall.cbu; then
5141 echo "Your platform has some specific hints for 64-bit builds, using them..."
5145 4) case "$archname64" in
5146 ''|64int) archname64=64all ;;
5154 echo "Checking for GNU C Library..." >&4
5155 cat >gnulibc.c <<EOM
5167 if eval $compile_ok && ./gnulibc; then
5169 echo "You are using the GNU C Library"
5172 echo "You are not using the GNU C Library"
5178 : see if nm is to be used to determine whether a symbol is defined or not
5182 case "$d_gnulibc" in
5185 echo "nm probably won't work on the GNU C Library." >&4
5191 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5193 echo "Whoops! This is an AIX system without /lib/syscalls.exp!" >&4
5194 echo "'nm' won't be sufficient on this sytem." >&4
5200 '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5201 if $test $dflt -gt 20; then
5211 true|$define) dflt=y;;
5218 I can use $nm to extract the symbols from your C libraries. This
5219 is a time consuming task which may generate huge output on the disk (up
5220 to 3 megabytes) but that should make the symbols extraction faster. The
5221 alternative is to skip the 'nm' extraction part and to compile a small
5222 test program instead to determine whether each symbol is present. If
5223 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5224 this may be the best solution.
5226 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5229 rp="Shall I use $nm to extract C symbols from the libraries?"
5232 [Nn]*) usenm=false;;
5241 : nm options which may be necessary
5243 '') if $test -f /mach_boot; then
5245 elif $test -d /usr/ccs/lib; then
5246 nm_opt='-p' # Solaris (and SunOS?)
5247 elif $test -f /dgux; then
5249 elif $test -f /lib64/rld; then
5250 nm_opt='-p' # 64-bit Irix
5256 : nm options which may be necessary for shared libraries but illegal
5257 : for archive libraries. Thank you, Linux.
5258 case "$nm_so_opt" in
5259 '') case "$myuname" in
5261 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5262 nm_so_opt='--dynamic'
5271 : get list of predefined functions in a handy place
5276 *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5283 *) for thislib in $libs; do
5286 : Handle C library specially below.
5289 thislib=`echo $thislib | $sed -e 's/^-l//'`
5290 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5292 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5294 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5296 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5298 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5300 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5302 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5307 libnames="$libnames $try"
5309 *) libnames="$libnames $thislib" ;;
5318 for xxx in $libpth; do
5319 $test -r $1 || set $xxx/libc.$so
5320 : The messy sed command sorts on library version numbers.
5322 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5323 tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5325 s/[0-9][0-9]*/0000&/g
5326 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5329 $sort | $sed -e 's/^.* //'`
5332 $test -r $1 || set /usr/ccs/lib/libc.$so
5333 $test -r $1 || set /lib/libsys_s$_a
5339 if $test -r "$1"; then
5340 echo "Your (shared) C library seems to be in $1."
5342 elif $test -r /lib/libc && $test -r /lib/clib; then
5343 echo "Your C library seems to be in both /lib/clib and /lib/libc."
5345 libc='/lib/clib /lib/libc'
5346 if $test -r /lib/syslib; then
5347 echo "(Your math library is in /lib/syslib.)"
5348 libc="$libc /lib/syslib"
5350 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5351 echo "Your C library seems to be in $libc, as you said before."
5352 elif $test -r $incpath/usr/lib/libc$_a; then
5353 libc=$incpath/usr/lib/libc$_a;
5354 echo "Your C library seems to be in $libc. That's fine."
5355 elif $test -r /lib/libc$_a; then
5357 echo "Your C library seems to be in $libc. You're normal."
5359 if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5361 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5362 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5363 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5365 elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5367 elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5370 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5372 if $test -r "$tans"; then
5373 echo "Your C library seems to be in $tans, of all places."
5379 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5383 If the guess above is wrong (which it might be if you're using a strange
5384 compiler, or your machine supports multiple models), you can override it here.
5389 echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5391 I can't seem to find your C library. I've looked in the following places:
5394 $sed 's/^/ /' libpath
5397 None of these seems to contain your C library. I need to get its name...
5402 rp='Where is your C library?'
5407 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5408 set X `cat libnames`
5411 case $# in 1) xxx=file; esac
5412 echo "Extracting names from the following $xxx for later perusal:" >&4
5414 $sed 's/^/ /' libnames >&4
5416 $echo $n "This may take a while...$c" >&4
5420 *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5421 *) $nm $nm_opt $file 2>/dev/null;;
5426 $grep fprintf libc.tmp > libc.ptf
5427 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5428 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5430 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx *_[_.]*//p' -e 's/^.* $xxx *//p'";\
5432 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5434 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5436 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5438 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5440 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5442 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5444 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5446 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5448 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5450 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5452 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5454 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5455 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
5457 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5459 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5461 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5463 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5465 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5467 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5469 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5471 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5473 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5475 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5477 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5479 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5481 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5483 elif com="sed -n -e 's/^__.*//' -e 's/[ ]*D[ ]*[0-9]*.*//p'";\
5485 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5488 $nm -p $* 2>/dev/null >libc.tmp
5489 $grep fprintf libc.tmp > libc.ptf
5490 if com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5491 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5497 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5499 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5500 for thisname in $libnames $libc; do
5501 $ar t $thisname >>libc.tmp
5503 $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5505 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5506 # Repeat libc to extract forwarders to DLL entries too
5507 for thisname in $libnames $libc; do
5508 $ar tv $thisname >>libc.tmp
5509 # Revision 50 of EMX has bug in $ar.
5510 # it will not extract forwarders to DLL entries
5511 # Use emximp which will extract exactly them.
5512 emximp -o tmp.imp $thisname \
5514 $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5515 < tmp.imp >>libc.tmp
5518 $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5521 echo "$ar didn't seem to work right." >&4
5522 echo "Maybe this is a Cray...trying bld instead..." >&4
5523 if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5525 for thisname in $libnames; do
5527 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5528 $ar t $thisname >>libc.tmp
5532 echo "That didn't work either. Giving up." >&4
5539 if $test -f /lib/syscalls.exp; then
5541 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5542 $sed -n 's/^\([^ ]*\)[ ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5546 $rm -f libnames libpath
5548 : is a C symbol defined?
5551 -v) tf=libc.tmp; tc=""; tdc="";;
5552 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5553 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5556 case "$reuseval-$4" in
5558 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5564 if $contains $tlook $tf >/dev/null 2>&1;
5569 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5570 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5578 $define) tval=true;;
5584 : define an is-in-libc? function
5585 inlibc='echo " "; td=$define; tu=$undef;
5586 sym=$1; var=$2; eval "was=\$$2";
5588 case "$reuseval$was" in
5598 echo "$sym() found." >&4;
5599 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5601 echo "$sym() NOT found." >&4;
5602 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5606 $define) echo "$sym() found." >&4;;
5607 *) echo "$sym() NOT found." >&4;;
5611 : see if sqrtl exists
5616 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5619 case "$uselongdouble" in
5620 $define|true|[yY]*) dflt='y';;
5625 Perl can be built to take advantage of long doubles which
5626 (if available) may give more accuracy and range for floating point numbers.
5628 If this doesn't make any sense to you, just accept the default '$dflt'.
5630 rp='Try to use long doubles if available?'
5633 y|Y) val="$define" ;;
5639 case "$uselongdouble" in
5640 true|[yY]*) uselongdouble="$define" ;;
5643 case "$uselongdouble" in
5645 : Look for a hint-file generated 'call-back-unit'. If the
5646 : user has specified that long doubles should be used,
5647 : we may need to set or change some other defaults.
5648 if $test -f uselongdouble.cbu; then
5649 echo "Your platform has some specific hints for long doubles, using them..."
5650 . ./uselongdouble.cbu
5653 (Your platform doesn't have any specific hints for long doubles.)
5659 case "$uselongdouble:$d_sqrtl" in
5663 *** You requested the use of long doubles but you do not seem to have
5664 *** the mathematic functions for long doubles. I'm disabling the use
5665 *** of long doubles.
5668 uselongdouble=$undef
5672 : check for length of double
5674 case "$doublesize" in
5676 echo "Checking to see how big your double precision numbers are..." >&4
5677 $cat >try.c <<'EOCP'
5681 printf("%d\n", (int)sizeof(double));
5686 if eval $compile_ok; then
5688 echo "Your double is $doublesize bytes long."
5691 echo "(I can't seem to compile the test program. Guessing...)"
5692 rp="What is the size of a double precision number (in bytes)?"
5700 : check for long doubles
5702 echo "Checking to see if you have long double..." >&4
5703 echo 'int main() { long double x = 7.0; }' > try.c
5705 if eval $compile; then
5707 echo "You have long double."
5710 echo "You do not have long double."
5716 : check for length of long double
5717 case "${d_longdbl}${longdblsize}" in
5720 echo "Checking to see how big your long doubles are..." >&4
5721 $cat >try.c <<'EOCP'
5725 printf("%d\n", sizeof(long double));
5730 if eval $compile; then
5731 longdblsize=`./try$exe_ext`
5732 echo "Your long doubles are $longdblsize bytes long."
5736 echo "(I can't seem to compile the test program. Guessing...)" >&4
5737 rp="What is the size of a long double (in bytes)?"
5741 if $test "X$doublesize" = "X$longdblsize"; then
5742 echo "(That isn't any different from an ordinary double.)"
5748 case "$useperlio" in
5749 $define|true|[yY]*|'') dflt='y';;
5754 Previous version of $package used the standard IO mechanisms as
5755 defined in <stdio.h>. Versions 5.003_02 and later of $package allow
5756 alternate IO mechanisms via the PerlIO abstraction layer, but the
5757 stdio mechanism is still available if needed. The abstraction layer
5758 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5759 Using PerlIO with sfio may cause problems with some extension modules.
5761 If this doesn't make any sense to you, just accept the default '$dflt'.
5763 rp='Use the PerlIO abstraction layer?'
5770 echo "Ok, doing things the stdio way."
5779 case "$useperlio" in
5780 $define|true|[yY]*) ;;
5783 You are using the SOCKS proxy protocol library which means that you
5784 should also use the PerlIO layer. You may be headed for trouble.
5793 : determine the architecture name
5795 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5796 tarch=`arch`"-$osname"
5797 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5798 if uname -m > tmparch 2>&1 ; then
5799 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5800 -e 's/$/'"-$osname/" tmparch`
5808 case "$myarchname" in
5811 echo "(Your architecture name used to be $myarchname.)"
5818 *) dflt="$archname";;
5820 rp='What is your architecture name'
5823 case "$usethreads" in
5825 echo "Threads selected." >&4
5827 *-thread*) echo "...and architecture name already has -thread." >&4
5829 *) archname="$archname-thread"
5830 echo "...setting architecture name to $archname." >&4
5835 case "$usemultiplicity" in
5837 echo "Multiplicity selected." >&4
5839 *-multi*) echo "...and architecture name already has -multi." >&4
5841 *) archname="$archname-multi"
5842 echo "...setting architecture name to $archname." >&4
5847 case "$use64bitint$use64bitall" in
5849 case "$archname64" in
5851 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5854 case "$use64bitint" in
5855 "$define") echo "64 bit integers selected." >&4 ;;
5857 case "$use64bitall" in
5858 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5861 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5863 *) archname="$archname-$archname64"
5864 echo "...setting architecture name to $archname." >&4
5870 case "$uselongdouble" in
5872 echo "Long doubles selected." >&4
5873 case "$longdblsize" in
5875 "...but long doubles are equal to doubles, not changing architecture name." >&4
5879 *-ld*) echo "...and architecture name already has -ld." >&4
5881 *) archname="$archname-ld"
5882 echo "...setting architecture name to $archname." >&4
5889 case "$useperlio" in
5891 echo "Perlio selected." >&4
5894 echo "Perlio not selected, using stdio." >&4
5896 *-stdio*) echo "...and architecture name already has -stdio." >&4
5898 *) archname="$archname-stdio"
5899 echo "...setting architecture name to $archname." >&4
5905 : determine root of directory hierarchy where package will be installed.
5908 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5916 By default, $package will be installed in $dflt/bin, manual pages
5917 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5918 installation directories. Typically this is something like /usr/local.
5919 If you wish to have binaries under /usr/bin but other parts of the
5920 installation under /usr/local, that's ok: you will be prompted
5921 separately for each of the installation directories, the prefix being
5922 only used to set the defaults.
5926 rp='Installation prefix to use?'
5934 *) oldprefix="$prefix";;
5943 *) afsroot=$afsroot ;;
5949 $define|true) afs=true ;;
5950 $undef|false) afs=false ;;
5951 *) if test -d $afsroot; then
5959 echo "AFS may be running... I'll be extra cautious then..." >&4
5961 echo "AFS does not seem to be running..." >&4
5964 : determine installation prefix for where package is to be installed.
5968 Since you are running AFS, I need to distinguish the directory in which
5969 files will reside from the directory in which they are installed (and from
5970 which they are presumably copied to the former directory by occult means).
5973 case "$installprefix" in
5974 '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5975 *) dflt="$installprefix";;
5980 In some special cases, particularly when building $package for distribution,
5981 it is convenient to distinguish between the directory in which files should
5982 be installed from the directory ($prefix) in which they
5983 will eventually reside. For most users, these two directories are the same.
5986 case "$installprefix" in
5988 *) dflt=$installprefix;;
5992 rp='What installation prefix should I use for installing files?'
5994 installprefix="$ans"
5995 installprefixexp="$ansexp"
5997 : set the prefixit variable, to compute a suitable default value
5998 prefixit='case "$3" in
6000 case "$oldprefix" in
6001 "") eval "$1=\"\$$2\"";;
6008 ""|" ") eval "$1=\"\$$2\"";;
6014 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6016 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6017 /*-$oldprefix/*|\~*-$oldprefix/*)
6018 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6019 *) eval "$1=\"\$$2\"";;
6024 : get the patchlevel
6026 echo "Getting the current patchlevel..." >&4
6027 if $test -r $rsrc/patchlevel.h;then
6028 revision=`awk '/define[ ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6029 patchlevel=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6030 subversion=`awk '/define[ ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6031 api_revision=`awk '/define[ ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6032 api_version=`awk '/define[ ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6033 api_subversion=`awk '/define[ ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6034 perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6043 $echo "(You do not have patchlevel.h. Eek.)"
6045 if $test -r $rsrc/.patch ; then
6046 if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6047 perl_patchlevel=`cat $rsrc/.patch`
6050 case "$perl_patchlevel" in
6052 '') $echo "(You have $package version $patchlevel subversion $subversion.)" ;;
6053 *) $echo "(You have $package version $patchlevel subversion $subversion patchlevel $perl_patchlevel.)" ;;
6057 : XXX Should be a Configure test for double-dots in filenames.
6058 version=`echo $revision $patchlevel $subversion | \
6059 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6060 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6061 $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6064 version=`echo $revision $patchlevel $subversion | \
6065 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6066 api_versionstring=`echo $api_revision $api_version $api_subversion | \
6067 $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6070 : Special case the 5.005_xx maintenance series, which used 5.005
6071 : without any subversion label as a subdirectory in $sitelib
6072 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6073 api_versionstring='5.005'
6076 : determine installation style
6077 : For now, try to deduce it from prefix unless it is already set.
6078 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6079 case "$installstyle" in
6080 '') case "$prefix" in
6081 *perl*) dflt='lib';;
6082 *) dflt='lib/perl5' ;;
6085 *) dflt="$installstyle" ;;
6087 : Probably not worth prompting for this since we prompt for all
6088 : the directories individually, and the prompt would be too long and
6092 : determine where private library files go
6093 : Usual default is /usr/local/lib/perl5/$version.
6094 : Also allow things like /opt/perl/lib/$version, since
6095 : /opt/perl/lib/perl5... would be redundant.
6096 : The default "style" setting is made in installstyle.U
6097 case "$installstyle" in
6098 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6099 *) set dflt privlib lib/$version ;;
6104 There are some auxiliary files for $package that need to be put into a
6105 private library directory that is accessible by everyone.
6109 rp='Pathname where the private library files will reside?'
6112 privlibexp="$ansexp"
6113 : Change installation prefix, if necessary.
6114 if $test X"$prefix" != X"$installprefix"; then
6115 installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6117 installprivlib="$privlibexp"
6120 : set the prefixup variable, to restore leading tilda escape
6121 prefixup='case "$prefixexp" in
6123 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6126 : determine where public architecture dependent libraries go
6129 : privlib default is /usr/local/lib/$package/$version
6130 : archlib default is /usr/local/lib/$package/$version/$archname
6131 : privlib may have an optional trailing /share.
6132 tdflt=`echo $privlib | $sed 's,/share$,,'`
6133 tdflt=$tdflt/$archname
6142 $spackage contains architecture-dependent library files. If you are
6143 sharing libraries in a heterogeneous environment, you might store
6144 these files in a separate location. Otherwise, you can just include
6145 them with the rest of the public library files.
6149 rp='Where do you want to put the public architecture-dependent libraries?'
6152 archlibexp="$ansexp"
6153 if $test X"$archlib" = X"$privlib"; then
6158 : Change installation prefix, if necessary.
6159 if $test X"$prefix" != X"$installprefix"; then
6160 installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6162 installarchlib="$archlibexp"
6166 : Binary compatibility with 5.005 is not possible for builds
6167 : with advanced features
6168 case "$usethreads$usemultiplicity" in
6170 bincompat5005="$undef"
6171 d_bincompat5005="$undef"
6175 This version of Perl can be compiled for binary compatibility with 5.005.
6176 If you decide to do so, you will be able to continue using most of the
6177 extensions that were compiled for Perl 5.005.
6180 case "$bincompat5005$d_bincompat5005" in
6181 *"$undef"*) dflt=n ;;
6184 rp='Binary compatibility with Perl 5.005?'
6187 y*) val="$define" ;;
6192 case "$d_bincompat5005" in
6194 bincompat5005="$define"
6196 *) bincompat5005="$undef"
6197 d_bincompat5005="$undef"
6204 : see if setuid scripts can be secure
6207 Some kernels have a bug that prevents setuid #! scripts from being
6208 secure. Some sites have disabled setuid #! scripts because of this.
6210 First let's decide if your kernel supports secure setuid #! scripts.
6211 (If setuid #! scripts would be secure but have been disabled anyway,
6212 don't say that they are secure if asked.)
6217 if $test -d /dev/fd; then
6218 echo "#!$ls" >reflect
6219 chmod +x,u+s reflect
6220 ./reflect >flect 2>&1
6221 if $contains "/dev/fd" flect >/dev/null; then
6222 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6226 If you are not sure if they are secure, I can check but I'll need a
6227 username and password different from the one you are using right now.
6228 If you don't have such a username or don't want me to test, simply
6232 rp='Other username to test security of setuid scripts with?'
6237 case "$d_suidsafe" in
6238 '') echo "I'll assume setuid scripts are *not* secure." >&4
6241 echo "Well, the $hint value is *not* secure." >&4
6243 *) echo "Well, the $hint value *is* secure." >&4
6248 $rm -f reflect flect
6249 echo "#!$ls" >reflect
6250 chmod +x,u+s reflect
6253 echo '"su" will (probably) prompt you for '"$ans's password."
6254 su $ans -c './reflect >flect'
6255 if $contains "/dev/fd" flect >/dev/null; then
6256 echo "Okay, it looks like setuid scripts are secure." >&4
6259 echo "I don't think setuid scripts are secure." >&4
6264 rp='Does your kernel have *secure* setuid scripts?'
6267 [yY]*) val="$define";;
6272 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6273 echo "(That's for file descriptors, not floppy disks.)"
6279 $rm -f reflect flect
6281 : now see if they want to do setuid emulation
6284 case "$d_suidsafe" in
6287 echo "No need to emulate SUID scripts since they are secure here." >& 4
6291 Some systems have disabled setuid scripts, especially systems where
6292 setuid scripts cannot be secure. On systems where setuid scripts have
6293 been disabled, the setuid/setgid bits on scripts are currently
6294 useless. It is possible for $package to detect those bits and emulate
6295 setuid/setgid in a secure fashion. This emulation will only work if
6296 setuid scripts have been disabled in your kernel.
6300 "$define") dflt=y ;;
6303 rp="Do you want to do setuid/setgid emulation?"
6306 [yY]*) val="$define";;
6314 : see if this is a malloc.h system
6315 set malloc.h i_malloc
6318 : see if stdlib is available
6319 set stdlib.h i_stdlib
6322 : determine which malloc to compile in
6324 case "$usemymalloc" in
6325 [yY]*|true|$define) dflt='y' ;;
6326 [nN]*|false|$undef) dflt='n' ;;
6327 *) case "$ptrsize" in
6333 rp="Do you wish to attempt to use the malloc that comes with $package?"
6339 mallocsrc='malloc.c'
6340 mallocobj="malloc$_o"
6341 d_mymalloc="$define"
6344 : Remove malloc from list of libraries to use
6345 echo "Removing unneeded -lmalloc from library list" >&4
6346 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6349 echo "libs = $libs" >&4
6361 : compute the return types of malloc and free
6363 $cat >malloc.c <<END
6367 #include <sys/types.h>
6381 case "$malloctype" in
6383 if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6390 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6394 if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6401 echo "Your system uses $freetype free(), it would seem." >&4
6405 After $package is installed, you may wish to install various
6406 add-on modules and utilities. Typically, these add-ons will
6407 be installed under $prefix with the rest
6408 of this package. However, you may wish to install such add-ons
6409 elsewhere under a different prefix.
6411 If you do not wish to put everything under a single prefix, that's
6412 ok. You will be prompted for the individual locations; this siteprefix
6413 is only used to suggest the defaults.
6415 The default should be fine for most people.
6419 rp='Installation prefix to use for add-on modules and utilities?'
6420 : XXX Here might be another good place for an installstyle setting.
6421 case "$siteprefix" in
6423 *) dflt=$siteprefix ;;
6426 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6428 case "$siteprefix" in
6432 *) oldsiteprefix="$prefix";;
6437 siteprefixexp="$ansexp"
6439 : determine where site specific libraries go.
6440 : Usual default is /usr/local/lib/perl5/site_perl/$version
6441 : The default "style" setting is made in installstyle.U
6442 : XXX No longer works with Prefixit stuff.
6443 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6445 '') case "$installstyle" in
6446 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6447 *) dflt=$siteprefix/lib/site_$prog/$version ;;
6455 The installation process will create a directory for
6456 site-specific extensions and modules. Most users find it convenient
6457 to place all site-specific files in this directory rather than in the
6458 main distribution directory.
6462 rp='Pathname for the site-specific library files?'
6465 sitelibexp="$ansexp"
6466 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6467 : Change installation prefix, if necessary.
6468 if $test X"$prefix" != X"$installprefix"; then
6469 installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6471 installsitelib="$sitelibexp"
6474 : determine where site specific architecture-dependent libraries go.
6475 : sitelib default is /usr/local/lib/perl5/site_perl/$version
6476 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6477 : sitelib may have an optional trailing /share.
6479 '') dflt=`echo $sitelib | $sed 's,/share$,,'`
6480 dflt="$dflt/$archname"
6485 set sitearch sitearch none
6489 The installation process will also create a directory for
6490 architecture-dependent site-specific extensions and modules.
6494 rp='Pathname for the site-specific architecture-dependent library files?'
6497 sitearchexp="$ansexp"
6498 : Change installation prefix, if necessary.
6499 if $test X"$prefix" != X"$installprefix"; then
6500 installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6502 installsitearch="$sitearchexp"
6507 The installation process will also create a directory for
6508 vendor-supplied add-ons. Vendors who supply perl with their system
6509 may find it convenient to place all vendor-supplied files in this
6510 directory rather than in the main distribution directory. This will
6511 ease upgrades between binary-compatible maintenance versions of perl.
6513 Of course you may also use these directories in whatever way you see
6514 fit. For example, you might use them to access modules shared over a
6515 company-wide network.
6517 The default answer should be fine for most people.
6518 This causes further questions about vendor add-ons to be skipped
6519 and no vendor-specific directories will be configured for perl.
6522 rp='Do you want to configure vendor-specific add-on directories?'
6523 case "$usevendorprefix" in
6524 define|true|[yY]*) dflt=y ;;
6525 *) : User may have set vendorprefix directly on Configure command line.
6526 case "$vendorprefix" in
6535 rp='Installation prefix to use for vendor-supplied add-ons?'
6536 case "$vendorprefix" in
6538 *) dflt=$vendorprefix ;;
6541 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6543 case "$vendorprefix" in
6547 *) oldvendorprefix="$prefix";;
6551 usevendorprefix="$define"
6553 vendorprefixexp="$ansexp"
6555 *) usevendorprefix="$undef"
6561 case "$vendorprefix" in
6562 '') d_vendorlib="$undef"
6566 *) d_vendorlib="$define"
6567 : determine where vendor-supplied modules go.
6568 : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6569 case "$vendorlib" in
6571 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6572 case "$installstyle" in
6573 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6574 *) dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6577 *) dflt="$vendorlib"
6581 rp='Pathname for the vendor-supplied library files?'
6584 vendorlibexp="$ansexp"
6587 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6588 : Change installation prefix, if necessary.
6589 if $test X"$prefix" != X"$installprefix"; then
6590 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6592 installvendorlib="$vendorlibexp"
6595 case "$vendorprefix" in
6596 '') d_vendorarch="$undef"
6600 *) d_vendorarch="$define"
6601 : determine where vendor-supplied architecture-dependent libraries go.
6602 : vendorlib default is /usr/local/lib/perl5/vendor_perl/$version
6603 : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6604 : vendorlib may have an optional trailing /share.
6605 case "$vendorarch" in
6606 '') dflt=`echo $vendorlib | $sed 's,/share$,,'`
6607 dflt="$dflt/$archname"
6609 *) dflt="$vendorarch" ;;
6612 rp='Pathname for vendor-supplied architecture-dependent files?'
6615 vendorarchexp="$ansexp"
6618 : Change installation prefix, if necessary.
6619 if $test X"$prefix" != X"$installprefix"; then
6620 installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6622 installvendorarch="$vendorarchexp"
6625 : Final catch-all directories to search
6628 Lastly, you can have perl look in other directories for extensions and
6629 modules in addition to those already specified.
6630 These directories will be searched after
6634 test X"$vendorlib" != "X" && echo ' ' $vendorlib
6635 test X"$vendorarch" != "X" && echo ' ' $vendorarch
6637 case "$otherlibdirs" in
6638 ''|' ') dflt='none' ;;
6639 *) dflt="$otherlibdirs" ;;
6642 Enter a colon-separated set of extra paths to include in perl's @INC
6643 search path, or enter 'none' for no extra paths.
6647 rp='Colon-separated list of additional directories for perl to search?'
6650 ' '|''|none) otherlibdirs=' ' ;;
6651 *) otherlibdirs="$ans" ;;
6653 case "$otherlibdirs" in
6657 set d_perl_otherlibdirs
6660 : Cruising for prototypes
6662 echo "Checking out function prototypes..." >&4
6663 $cat >prototype.c <<'EOCP'
6664 int main(int argc, char *argv[]) {
6667 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6668 echo "Your C compiler appears to support function prototypes."
6671 echo "Your C compiler doesn't seem to understand function prototypes."
6678 case "$prototype" in
6680 *) ansi2knr='ansi2knr'
6685 This version of $package can only be compiled by a compiler that
6686 understands function prototypes. Unfortunately, your C compiler
6688 doesn't seem to understand them. Sorry about that.
6690 If GNU cc is available for your system, perhaps you could try that instead.
6692 Eventually, we hope to support building Perl with pre-ANSI compilers.
6693 If you would like to help in that effort, please contact <perlbug@perl.org>.
6695 Aborting Configure now.
6701 : determine where public executables go
6706 rp='Pathname where the public executables will reside?'
6708 if $test "X$ansexp" != "X$binexp"; then
6713 : Change installation prefix, if necessary.
6714 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6715 if $test X"$prefix" != X"$installprefix"; then
6716 installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6718 installbin="$binexp"
6721 : Find perl5.005 or later.
6722 echo "Looking for a previously installed perl5.005 or later... "
6724 '') for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6725 : Check if this perl is recent and can load a simple module
6726 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6729 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6739 '') echo "None found. That's ok.";;
6740 *) echo "Using $perl5." ;;
6743 : Determine list of previous versions to include in @INC
6744 $cat > getverlist <<EOPL
6747 \$api_versionstring = "$api_versionstring";
6748 \$version = "$version";
6749 \$stem = "$sitelib_stem";
6750 \$archname = "$archname";
6752 $cat >> getverlist <<'EOPL'
6753 # Can't have leading @ because metaconfig interprets it as a command!
6754 ;@inc_version_list=();
6755 # XXX Redo to do opendir/readdir?
6758 ;@candidates = glob("5.*");
6764 # XXX ToDo: These comparisons must be reworked when two-digit
6765 # subversions come along, so that 5.7.10 compares as greater than
6766 # 5.7.3! By that time, hope that 5.6.x is sufficiently
6767 # widespread that we can use the built-in version vectors rather
6768 # than reinventing them here. For 5.6.0, however, we must
6769 # assume this script will likely be run by 5.005_0x. --AD 1/2000.
6770 foreach $d (@candidates) {
6771 if ($d lt $version) {
6772 if ($d ge $api_versionstring) {
6773 unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6775 elsif ($d ge "5.005") {
6776 unshift(@inc_version_list, grep { -d } $d);
6780 # Skip newer version. I.e. don't look in
6781 # 5.7.0 if we're installing 5.6.1.
6785 if (@inc_version_list) {
6786 print join(' ', @inc_version_list);
6789 # Blank space to preserve value for next Configure run.
6794 case "$inc_version_list" in
6795 '') if test -x "$perl5$exe_ext"; then
6796 dflt=`$perl5 getverlist`
6801 $undef) dflt='none' ;;
6802 *) eval dflt=\"$inc_version_list\" ;;
6805 ''|' ') dflt=none ;;
6808 5.005) case "$bincompat5005" in
6809 $define|true|[yY]*) ;;
6816 In order to ease the process of upgrading, this version of perl
6817 can be configured to use modules built and installed with earlier
6818 versions of perl that were installed under $prefix. Specify here
6819 the list of earlier versions that this version of perl should check.
6820 If Configure detected no earlier versions of perl installed under
6821 $prefix, then the list will be empty. Answer 'none' to tell perl
6822 to not search earlier versions.
6824 The default should almost always be sensible, so if you're not sure,
6825 just accept the default.
6828 rp='List of earlier versions to include in @INC?'
6831 [Nn]one|''|' ') inc_version_list=' ' ;;
6832 *) inc_version_list="$ans" ;;
6834 case "$inc_version_list" in
6836 inc_version_list_init='0';;
6837 *) inc_version_list_init=`echo $inc_version_list |
6838 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6843 : determine whether to install perl also as /usr/bin/perl
6846 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6848 Many scripts expect perl to be installed as /usr/bin/perl.
6849 I can install the perl you are about to compile also as /usr/bin/perl
6850 (in addition to $installbin/perl).
6852 case "$installusrbinperl" in
6853 "$undef"|[nN]*) dflt='n';;
6856 rp="Do you want to install perl as /usr/bin/perl?"
6859 [yY]*) val="$define";;
6865 set installusrbinperl
6868 : see if dld is available
6872 : see if dlopen exists
6879 : determine which dynamic loading, if any, to compile in
6881 dldir="ext/DynaLoader"
6894 $define) dflt='y' ;;
6897 $define) dflt='y' ;;
6899 : Does a dl_xxx.xs file exist for this operating system
6900 $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6903 rp="Do you wish to use dynamic loading?"
6910 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6911 dflt="$dldir/dl_${osname}.xs"
6912 elif $test "$d_dlopen" = "$define" ; then
6913 dflt="$dldir/dl_dlopen.xs"
6914 elif $test "$i_dld" = "$define" ; then
6915 dflt="$dldir/dl_dld.xs"
6920 *) dflt="$dldir/$dlsrc"
6923 echo "The following dynamic loading files are available:"
6924 : Can not go over to $dldir because getfile has path hard-coded in.
6925 tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6926 rp="Source file to use for dynamic loading"
6932 dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6936 Some systems may require passing special flags to $cc -c to
6937 compile modules that will be used to create a shared library.
6938 To use no flags, say "none".
6941 case "$cccdlflags" in
6942 '') case "$gccversion" in
6943 '') case "$osname" in
6945 next) dflt='none' ;;
6946 irix*) dflt='-KPIC' ;;
6947 svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6948 sunos) dflt='-pic' ;;
6952 *) case "$osname" in
6953 svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6958 *) dflt="$cccdlflags" ;;
6960 rp="Any special flags to pass to $cc -c to compile shared library modules?"
6963 none) cccdlflags=' ' ;;
6964 *) cccdlflags="$ans" ;;
6969 Some systems use ld to create libraries that can be dynamically loaded,
6970 while other systems (such as those using ELF) use $cc.
6974 '') $cat >try.c <<'EOM'
6975 /* Test for whether ELF binaries are produced */
6980 int i = open("a.out",O_RDONLY);
6983 if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6984 exit(0); /* succeed (yes, it's ELF) */
6989 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && ./a.out; then
6991 You appear to have ELF support. I'll use $cc to build dynamic libraries.
6995 echo "I'll use ld to build dynamic libraries."
7004 rp="What command should be used to create dynamic libraries?"
7010 Some systems may require passing special flags to $ld to create a
7011 library that can be dynamically loaded. If your ld flags include
7012 -L/other/path options to locate libraries outside your loader's normal
7013 search path, you may need to specify those -L options here as well. To
7014 use no flags, say "none".
7017 case "$lddlflags" in
7018 '') case "$osname" in
7019 beos) dflt='-nostart' ;;
7021 case "$gccversion" in
7022 '') dflt="$dflt +vnocompatwarnings" ;;
7025 linux|irix*) dflt='-shared' ;;
7026 next) dflt='none' ;;
7027 solaris) dflt='-G' ;;
7028 sunos) dflt='-assert nodefinitions' ;;
7029 svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7033 *) dflt="$lddlflags" ;;
7036 : Try to guess additional flags to pick up local libraries.
7037 : Be careful not to append to a plain 'none'
7041 for thisflag in $ldflags; do
7046 *) dflt="$dflt $thisflag" ;;
7053 ''|' ') dflt='none' ;;
7056 rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7059 none) lddlflags=' ' ;;
7060 *) lddlflags="$ans" ;;
7065 Some systems may require passing special flags to $cc to indicate that
7066 the resulting executable will use dynamic linking. To use no flags,
7070 case "$ccdlflags" in
7071 '') case "$osname" in
7072 hpux) dflt='-Wl,-E' ;;
7073 linux) dflt='-rdynamic' ;;
7074 next) dflt='none' ;;
7075 sunos) dflt='none' ;;
7079 *) dflt="$ccdlflags" ;;
7081 rp="Any special flags to pass to $cc to use dynamic linking?"
7084 none) ccdlflags=' ' ;;
7085 *) ccdlflags="$ans" ;;
7099 # No dynamic loading being used, so don't bother even to prompt.
7102 *) case "$useshrplib" in
7103 '') case "$osname" in
7104 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7106 also='Building a shared libperl is required for dynamic loading to work on your system.'
7111 also='Building a shared libperl is needed for MAB support.'
7129 The perl executable is normally obtained by linking perlmain.c with
7130 libperl${_a}, any static extensions (usually just DynaLoader), and
7131 any other libraries needed on this system (such as -lm, etc.). Since
7132 your system supports dynamic loading, it is probably possible to build
7133 a shared libperl.$so. If you will have more than one executable linked
7134 to libperl.$so, this will significantly reduce the size of each
7135 executable, but it may have a noticeable affect on performance. The
7136 default is probably sensible for your system.
7140 rp="Build a shared libperl.$so (y/n)"
7144 useshrplib='true' ;;
7145 *) useshrplib='false' ;;
7150 case "$useshrplib" in
7154 # Figure out a good name for libperl.so. Since it gets stored in
7155 # a version-specific architecture-dependent library, the version
7156 # number isn't really that important, except for making cc/ld happy.
7158 # A name such as libperl.so.3.1
7159 majmin="libperl.$so.$patchlevel.$subversion"
7160 # A name such as libperl.so.301
7161 majonly=`echo $patchlevel $subversion |
7162 $awk '{printf "%d%02d", $1, $2}'`
7163 majonly=libperl.$so.$majonly
7164 # I'd prefer to keep the os-specific stuff here to a minimum, and
7165 # rely on figuring it out from the naming of libc.
7166 case "${osname}${osvers}" in
7169 # XXX How handle the --version stuff for MAB?
7171 linux*) # ld won't link with a bare -lperl otherwise.
7174 cygwin*) # include version
7175 dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7177 *) # Try to guess based on whether libc has major.minor.
7179 *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7180 *libc.$so.[0-9]*) dflt=$majonly ;;
7181 *) dflt=libperl.$so ;;
7191 I need to select a good name for the shared libperl. If your system uses
7192 library names with major and minor numbers, then you might want something
7193 like $majmin. Alternatively, if your system uses a single version
7194 number for shared libraries, then you might want to use $majonly.
7195 Or, your system might be quite happy with a simple libperl.$so.
7197 Since the shared libperl will get installed into a version-specific
7198 architecture-dependent directory, the version number of the shared perl
7199 library probably isn't important, so the default should be o.k.
7202 rp='What name do you want to give to the shared libperl?'
7205 echo "Ok, I'll use $libperl"
7208 libperl="libperl${_a}"
7212 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7216 WARNING: Use of the shrpdir variable for the installation location of
7217 the shared $libperl is not supported. It was never documented and
7218 will not work in this version. Let me (perlbug@perl.org)
7219 know of any problems this may cause.
7225 But your current setting of $shrpdir is
7226 the default anyway, so it's harmless.
7231 Further, your current attempted setting of $shrpdir
7232 conflicts with the value of $archlibexp/CORE
7233 that installperl will use.
7240 # How will the perl executable find the installed shared $libperl?
7241 # Add $xxx to ccdlflags.
7242 # If we can't figure out a command-line option, use $shrpenv to
7243 # set env LD_RUN_PATH. The main perl makefile uses this.
7244 shrpdir=$archlibexp/CORE
7247 if "$useshrplib"; then
7250 # We'll set it in Makefile.SH...
7256 xxx="-Wl,-R$shrpdir"
7258 linux|irix*|dec_osf)
7259 xxx="-Wl,-rpath,$shrpdir"
7262 # next doesn't like the default...
7265 # beos doesn't like the default, either.
7268 # hpux doesn't like the default, either.
7269 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7272 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7278 # Only add $xxx if it isn't already in ccdlflags.
7279 case " $ccdlflags " in
7281 *) ccdlflags="$ccdlflags $xxx"
7284 Adding $xxx to the flags
7285 passed to $ld so that the perl executable will find the
7286 installed shared $libperl.
7294 # Fix ccdlflags in AIX for building external extensions.
7295 # (For building Perl itself bare -bE:perl.exp is needed,
7296 # Makefile.SH takes care of this.)
7298 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7300 # Respect a hint or command-line value.
7302 '') shrpenv="$tmp_shrpenv" ;;
7304 case "$ldlibpthname" in
7305 '') ldlibpthname=LD_LIBRARY_PATH ;;
7306 none) ldlibpthname='' ;;
7309 : determine where manual pages are on this system
7313 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7314 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7315 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7316 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7317 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7318 sysman=`./loc . /usr/man/man1 $syspath`
7321 if $test -d "$sysman"; then
7322 echo "System manual is in $sysman." >&4
7324 echo "Could not find manual pages in source form." >&4
7327 : determine where manual pages go
7328 set man1dir man1dir none
7332 $spackage has manual pages available in source form.
7336 echo "However, you don't have nroff, so they're probably useless to you."
7338 '') man1dir="none";;
7341 echo "If you don't want the manual sources installed, answer 'none'."
7346 lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7347 lookpath="$lookpath $prefixexp/man/p_man/man1"
7348 lookpath="$lookpath $prefixexp/man/u_man/man1"
7349 lookpath="$lookpath $prefixexp/man/man.1"
7351 */?_man*) dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7352 *) dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7362 rp="Where do the main $spackage manual pages (source) go?"
7364 if $test "X$man1direxp" != "X$ansexp"; then
7368 man1direxp="$ansexp"
7374 : Change installation prefix, if necessary.
7375 if $test X"$prefix" != X"$installprefix"; then
7376 installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7378 installman1dir="$man1direxp"
7381 : What suffix to use on installed man pages
7388 rp="What suffix should be used for the main $spackage man pages?"
7390 '') case "$man1dir" in
7404 *) dflt="$man1ext";;
7411 : see if we can have long filenames
7413 first=123456789abcdef
7415 if (echo hi >$first) 2>/dev/null; then
7416 if $test -f 123456789abcde; then
7417 echo 'You cannot have filenames longer than 14 characters. Sigh.' >&4
7420 echo 'You can have filenames longer than 14 characters.'>&4
7425 You can't have filenames longer than 14 chars.
7426 You can't even think about them!
7432 $rm -rf 123456789abcde*
7434 : determine where library module manual pages go
7435 set man3dir man3dir none
7439 $spackage has manual pages for many of the library modules.
7445 However, you don't have nroff, so they're probably useless to you.
7448 '') man3dir="none";;
7452 case "$d_flexfnam" in
7455 However, your system can't handle the long file names like File::Basename.3.
7458 '') man3dir="none";;
7462 echo "If you don't want the manual sources installed, answer 'none'."
7463 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7465 '') dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7466 if $test -d "$privlib/man/man3"; then
7469 WARNING: Previous versions of perl installed man3 pages into
7470 $privlib/man/man3. This version will suggest a
7471 new default of $dflt.
7475 rp='Do you wish to preserve the old behavior?(y/n)'
7478 y*) dflt="$privlib/man/man3" ;;
7483 *) dflt="$man3dir" ;;
7490 rp="Where do the $package library man pages (source) go?"
7493 man3direxp="$ansexp"
7499 : Change installation prefix, if necessary.
7500 if $test X"$prefix" != X"$installprefix"; then
7501 installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7503 installman3dir="$man3direxp"
7506 : What suffix to use on installed man pages
7512 rp="What suffix should be used for the $package library man pages?"
7514 '') case "$man3dir" in
7528 *) dflt="$man3ext";;
7535 : see if we have to deal with yellow pages, now NIS.
7536 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7537 if $test -f /usr/etc/nibindd; then
7539 echo "I'm fairly confident you're on a NeXT."
7541 rp='Do you get the hosts file via NetInfo?'
7550 y*) hostcat='nidump hosts .';;
7551 *) case "$hostcat" in
7552 nidump*) hostcat='';;
7562 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7570 rp='Are you getting the hosts file via yellow pages?'
7573 y*) hostcat='ypcat hosts';;
7574 *) hostcat='cat /etc/hosts';;
7580 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7583 '') test -f /etc/group && groupcat='cat /etc/group';;
7586 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7589 : now get the host name
7591 echo "Figuring out host name..." >&4
7592 case "$myhostname" in
7594 echo 'Maybe "hostname" will work...'
7595 if tans=`sh -c hostname 2>&1` ; then
7603 if $test "$cont"; then
7605 echo 'Oh, dear. Maybe "/etc/systemid" is the key...'
7606 if tans=`cat /etc/systemid 2>&1` ; then
7608 phostname='cat /etc/systemid'
7609 echo "Whadyaknow. Xenix always was a bit strange..."
7612 elif $test -r /etc/systemid; then
7613 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7616 if $test "$cont"; then
7617 echo 'No, maybe "uuname -l" will work...'
7618 if tans=`sh -c 'uuname -l' 2>&1` ; then
7620 phostname='uuname -l'
7622 echo 'Strange. Maybe "uname -n" will work...'
7623 if tans=`sh -c 'uname -n' 2>&1` ; then
7625 phostname='uname -n'
7627 echo 'Oh well, maybe I can mine it out of whoami.h...'
7628 if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7629 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7630 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7632 case "$myhostname" in
7633 '') echo "Does this machine have an identity crisis or something?"
7636 echo "Well, you said $myhostname before..."
7637 phostname='echo $myhostname';;
7643 : you do not want to know about this
7648 if $test "$myhostname" ; then
7650 rp='Your host name appears to be "'$myhostname'".'" Right?"
7658 : bad guess or no guess
7659 while $test "X$myhostname" = X ; do
7661 rp="Please type the (one word) name of your host:"
7666 : translate upper to lower if necessary
7667 case "$myhostname" in
7669 echo "(Normalizing case in your host name)"
7670 myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7674 case "$myhostname" in
7676 dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7677 myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7678 echo "(Trimming domain name from host name--host name is now $myhostname)"
7680 *) case "$mydomain" in
7683 test "X$hostcat" = "Xypcat hosts" &&
7684 ypmatch "$myhostname" hosts 2>/dev/null |\
7685 $sed -e 's/[ ]*#.*//; s/$/ /' > hosts && \
7688 test "X$hostcat" != "X" &&
7689 $hostcat | $sed -n -e "s/[ ]*#.*//; s/\$/ /
7690 /[ ]$myhostname[ . ]/p" > hosts
7693 if $test -f hosts; then
7694 $test x`$awk "/[0-9].*[ ]$myhostname$tmp_re/ { sum++ }
7695 END { print sum }" hosts` = x1 || tmp_re="[ ]"
7696 dflt=.`$awk "/[0-9].*[ ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7697 hosts | $sort | $uniq | \
7698 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7699 case `$echo X$dflt` in
7700 X*\ *) echo "(Several hosts in the database matched hostname)"
7703 X.) echo "(You do not have fully-qualified names in the hosts database)"
7707 echo "(I cannot locate a hosts database anywhere)"
7712 tans=`./loc resolv.conf X /etc /usr/etc`
7713 if $test -f "$tans"; then
7714 echo "(Attempting domain name extraction from $tans)"
7715 dflt=.`$sed -n -e 's/ / /g' \
7716 -e 's/^search *\([^ ]*\).*/\1/p' $tans \
7717 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7719 .) dflt=.`$sed -n -e 's/ / /g' \
7720 -e 's/^domain *\([^ ]*\).*/\1/p' $tans \
7721 | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7728 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7729 dflt=.`sh -c domainname 2>/dev/null`
7732 .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7736 case "$dflt$osname" in
7737 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7738 dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7742 .) echo "(Lost all hope -- silly guess then)"
7748 *) dflt="$mydomain";;
7752 rp="What is your domain name?"
7762 : translate upper to lower if necessary
7765 echo "(Normalizing case in your domain name)"
7766 mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7770 : a little sanity check here
7771 case "$phostname" in
7774 case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7775 $myhostname$mydomain|$myhostname) ;;
7777 case "$phostname" in
7779 echo "(That doesn't agree with your whoami.h file, by the way.)"
7782 echo "(That doesn't agree with your $phostname command, by the way.)"
7792 I need to get your e-mail address in Internet format if possible, i.e.
7793 something like user@host.domain. Please answer accurately since I have
7794 no easy means to double check it. The default value provided below
7795 is most probably close to reality but may not be valid from outside
7796 your organization...
7800 while test "$cont"; do
7802 '') dflt="$cf_by@$myhostname$mydomain";;
7803 *) dflt="$cf_email";;
7805 rp='What is your e-mail address?'
7811 rp='Address does not look like an Internet one. Use it anyway?'
7827 If you or somebody else will be maintaining perl at your site, please
7828 fill in the correct e-mail address here so that they may be contacted
7829 if necessary. Currently, the "perlbug" program included with perl
7830 will send mail to this address in addition to perlbug@perl.org. You may
7831 enter "none" for no administrator.
7834 case "$perladmin" in
7835 '') dflt="$cf_email";;
7836 *) dflt="$perladmin";;
7838 rp='Perl administrator e-mail address'
7842 : determine whether to only install version-specific parts.
7845 Do you want to install only the version-specific parts of the perl
7846 distribution? Usually you do *not* want to do this.
7848 case "$versiononly" in
7849 "$define"|[Yy]*|true) dflt='y' ;;
7852 rp="Do you want to install only the version-specific parts of perl?"
7855 [yY]*) val="$define";;
7861 : figure out how to guarantee perl startup
7862 case "$startperl" in
7864 case "$sharpbang" in
7868 I can use the #! construct to start perl on your system. This will
7869 make startup of perl scripts faster, but may cause problems if you
7870 want to share those scripts and perl is not in a standard place
7871 ($binexp/perl) on all your platforms. The alternative is to force
7872 a shell by starting the script with a single ':' character.
7875 case "$versiononly" in
7876 "$define") dflt="$binexp/perl$version";;
7877 *) dflt="$binexp/perl";;
7879 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7882 none) startperl=": # use perl";;
7883 *) startperl="#!$ans"
7884 if $test 30 -lt `echo "$ans" | wc -c`; then
7887 WARNING: Some systems limit the #! command to 32 characters.
7888 If you experience difficulty running Perl scripts with #!, try
7889 installing Perl in a directory with a shorter pathname.
7895 *) startperl=": # use perl"
7900 echo "I'll use $startperl to start perl scripts."
7902 : figure best path for perl in scripts
7905 perlpath="$binexp/perl"
7906 case "$startperl" in
7911 I will use the "eval 'exec'" idiom to start Perl on your system.
7912 I can use the full path of your Perl binary for this purpose, but
7913 doing so may cause problems if you want to share those scripts and
7914 Perl is not always in a standard place ($binexp/perl).
7918 rp="What path shall I use in \"eval 'exec'\"?"
7925 case "$startperl" in
7927 *) echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7930 : determine where public executable scripts go
7931 set scriptdir scriptdir
7933 case "$scriptdir" in
7936 : guess some guesses
7937 $test -d /usr/share/scripts && dflt=/usr/share/scripts
7938 $test -d /usr/share/bin && dflt=/usr/share/bin
7939 $test -d /usr/local/script && dflt=/usr/local/script
7940 $test -d /usr/local/scripts && dflt=/usr/local/scripts
7941 $test -d $prefixexp/script && dflt=$prefixexp/script
7945 *) dflt="$scriptdir"
7950 Some installations have a separate directory just for executable scripts so
7951 that they can mount it across multiple architectures but keep the scripts in
7952 one spot. You might, for example, have a subdirectory of /usr/share for this.
7953 Or you might just lump your scripts in with all your other executables.
7957 rp='Where do you keep publicly executable scripts?'
7959 if $test "X$ansexp" != "X$scriptdirexp"; then
7963 scriptdirexp="$ansexp"
7964 : Change installation prefix, if necessary.
7965 if $test X"$prefix" != X"$installprefix"; then
7966 installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7968 installscript="$scriptdirexp"
7971 : determine where add-on public executables go
7973 '') dflt=$siteprefix/bin ;;
7977 rp='Pathname where the add-on public executables should be installed?'
7980 sitebinexp="$ansexp"
7981 : Change installation prefix, if necessary.
7982 if $test X"$prefix" != X"$installprefix"; then
7983 installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7985 installsitebin="$sitebinexp"
7988 case "$vendorprefix" in
7989 '') d_vendorbin="$undef"
7993 *) d_vendorbin="$define"
7994 : determine where vendor-supplied executables go.
7995 case "$vendorbin" in
7996 '') dflt=$vendorprefix/bin ;;
7997 *) dflt="$vendorbin" ;;
8000 rp='Pathname for the vendor-supplied executables directory?'
8003 vendorbinexp="$ansexp"
8006 : Change installation prefix, if necessary.
8007 if $test X"$prefix" != X"$installprefix"; then
8008 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8010 installvendorbin="$vendorbinexp"
8013 : see if qgcvt exists
8019 if $test X"$d_longdbl" = X"$define"; then
8021 echo "Checking how to print long doubles..." >&4
8023 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8024 $cat >try.c <<'EOCP'
8025 #include <sys/types.h>
8029 printf("%.3f\n", d);
8033 if eval $compile; then
8037 sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8038 sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8039 echo "We will use %f."
8045 if $test X"$sPRIfldbl" = X; then
8046 $cat >try.c <<'EOCP'
8047 #include <sys/types.h>
8050 long double d = 123.456;
8051 printf("%.3Lf\n", d);
8055 if eval $compile; then
8059 sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8060 sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8061 echo "We will use %Lf."
8067 if $test X"$sPRIfldbl" = X; then
8068 $cat >try.c <<'EOCP'
8069 #include <sys/types.h>
8072 long double d = 123.456;
8073 printf("%.3llf\n", d);
8077 if eval $compile; then
8081 sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8082 sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8083 echo "We will use %llf."
8089 if $test X"$sPRIfldbl" = X; then
8090 $cat >try.c <<'EOCP'
8091 #include <sys/types.h>
8094 long double d = 123.456;
8095 printf("%.3lf\n", d);
8099 if eval $compile; then
8103 sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8104 sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8105 echo "We will use %lf."
8111 if $test X"$sPRIfldbl" = X; then
8112 echo "Cannot figure out how to print long doubles." >&4
8114 sSCNfldbl=$sPRIfldbl # expect consistency
8121 case "$sPRIfldbl" in
8122 '') d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef";
8123 d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef";
8124 d_SCNfldbl="$undef";
8126 *) d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define";
8127 d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define";
8128 d_SCNfldbl="$define";
8132 : Check how to convert floats to strings.
8134 echo "Checking for an efficient way to convert floats to strings."
8136 case "$uselongdouble" in
8137 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8139 case "$d_longdbl" in
8140 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8142 case "$d_PRIgldbl" in
8143 "$define") echo "#define HAS_PRIgldbl" >>try.c ;;
8147 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8148 char *myname = "gconvert";
8151 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8152 char *myname = "gcvt";
8155 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8156 char *myname = "qgcvt";
8157 #define DOUBLETYPE long double
8160 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8161 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8163 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8165 char *myname = "sprintf";
8169 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8170 #define DOUBLETYPE long double
8172 #define DOUBLETYPE double
8178 #define I_STDLIB $i_stdlib
8184 checkit(expect, got)
8188 if (strcmp(expect, got)) {
8189 printf("%s oddity: Expected %s, got %s\n",
8190 myname, expect, got);
8200 /* This must be 1st test on (which?) platform */
8201 /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8202 Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8203 checkit("0.1", buf);
8205 Gconvert((DOUBLETYPE)1.0, 8, 0, buf);
8208 Gconvert((DOUBLETYPE)1.1, 8, 0, buf);
8209 checkit("1.1", buf);
8211 Gconvert((DOUBLETYPE)1.01, 8, 0, buf);
8212 checkit("1.01", buf);
8214 Gconvert((DOUBLETYPE)1.001, 8, 0, buf);
8215 checkit("1.001", buf);
8217 Gconvert((DOUBLETYPE)1.0001, 8, 0, buf);
8218 checkit("1.0001", buf);
8220 Gconvert((DOUBLETYPE)1.00001, 8, 0, buf);
8221 checkit("1.00001", buf);
8223 Gconvert((DOUBLETYPE)1.000001, 8, 0, buf);
8224 checkit("1.000001", buf);
8226 Gconvert((DOUBLETYPE)0.0, 8, 0, buf);
8229 Gconvert((DOUBLETYPE)-1.0, 8, 0, buf);
8232 /* Some Linux gcvt's give 1.e+5 here. */
8233 Gconvert((DOUBLETYPE)100000.0, 8, 0, buf);
8234 checkit("100000", buf);
8236 /* Some Linux gcvt's give -1.e+5 here. */
8237 Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf);
8238 checkit("-100000", buf);
8240 Gconvert((DOUBLETYPE)123.456, 8, 0, buf);
8241 checkit("123.456", buf);
8246 case "$d_Gconvert" in
8247 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8248 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8249 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8250 *) xxx_list='gconvert gcvt sprintf' ;;
8253 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8254 "$define$define$define")
8255 # for long doubles prefer first qgcvt, then sprintf
8256 xxx_list="`echo $xxx_list|sed s/sprintf//`"
8257 xxx_list="sprintf $xxx_list"
8259 "$define") xxx_list="qgcvt $xxx_list" ;;
8264 for xxx_convert in $xxx_list; do
8265 echo "Trying $xxx_convert..."
8267 set try -DTRY_$xxx_convert
8268 if eval $compile; then
8269 echo "$xxx_convert() found." >&4
8271 echo "I'll use $xxx_convert to convert floats into a string." >&4
8274 echo "...But $xxx_convert didn't work as I expected."
8277 echo "$xxx_convert NOT found." >&4
8281 case "$xxx_convert" in
8282 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8283 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8284 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8285 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8286 "$define$define$define")
8287 d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8288 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8293 : see if _fwalk exists
8297 : Initialize h_fcntl
8300 : Initialize h_sysfile
8303 : access call always available on UNIX
8307 : locate the flags for 'access()'
8311 $cat >access.c <<'EOCP'
8312 #include <sys/types.h>
8317 #include <sys/file.h>
8326 : check sys/file.h first, no particular reason here
8327 if $test `./findhdr sys/file.h` && \
8328 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8330 echo "<sys/file.h> defines the *_OK access constants." >&4
8331 elif $test `./findhdr fcntl.h` && \
8332 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8334 echo "<fcntl.h> defines the *_OK access constants." >&4
8335 elif $test `./findhdr unistd.h` && \
8336 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8337 echo "<unistd.h> defines the *_OK access constants." >&4
8339 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8345 : see if accessx exists
8346 set accessx d_accessx
8349 : see if alarm exists
8353 : see if atolf exists
8357 : see if atoll exists
8361 : Look for GNU-cc style attribute checking
8363 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8364 $cat >attrib.c <<'EOCP'
8366 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8368 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8369 if $contains 'warning' attrib.out >/dev/null 2>&1; then
8370 echo "Your C compiler doesn't fully support __attribute__."
8373 echo "Your C compiler supports __attribute__."
8377 echo "Your C compiler doesn't seem to understand __attribute__ at all."
8384 : see if bcmp exists
8388 : see if bcopy exists
8392 : see if this is a unistd.h system
8393 set unistd.h i_unistd
8396 : see if getpgrp exists
8397 set getpgrp d_getpgrp
8400 case "$d_getpgrp" in
8403 echo "Checking to see which flavor of getpgrp is in use..."
8406 #include <sys/types.h>
8408 # include <unistd.h>
8412 if (getuid() == 0) {
8413 printf("(I see you are running Configure as super-user...)\n");
8417 if (getpgrp(1) == 0)
8426 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8427 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8429 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8430 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8433 echo "I can't seem to compile and run the test program."
8435 xxx="a USG one, i.e. you use getpgrp()."
8437 # SVR4 systems can appear rather BSD-ish.
8440 xxx="a BSD one, i.e. you use getpgrp(pid)."
8444 xxx="probably a USG one, i.e. you use getpgrp()."
8449 echo "Assuming your getpgrp is $xxx" >&4
8458 : see if setpgrp exists
8459 set setpgrp d_setpgrp
8462 case "$d_setpgrp" in
8465 echo "Checking to see which flavor of setpgrp is in use..."
8468 #include <sys/types.h>
8470 # include <unistd.h>
8474 if (getuid() == 0) {
8475 printf("(I see you are running Configure as super-user...)\n");
8479 if (-1 == setpgrp(1, 1))
8482 if (setpgrp() != -1)
8488 if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8489 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8491 elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
8492 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8495 echo "(I can't seem to compile and run the test program.)"
8497 xxx="a USG one, i.e. you use setpgrp()."
8499 # SVR4 systems can appear rather BSD-ish.
8502 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8506 xxx="probably a USG one, i.e. you use setpgrp()."
8511 echo "Assuming your setpgrp is $xxx" >&4
8519 : see if bzero exists
8523 : see if signal is declared as pointer to function returning int or void
8525 xxx=`./findhdr signal.h`
8526 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8527 if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8528 echo "You have int (*signal())() instead of void." >&4
8530 elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
8531 echo "You have void (*signal())()." >&4
8533 elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8534 echo "You have int (*signal())() instead of void." >&4
8536 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8537 echo "You have void (*signal())()." >&4
8540 case "$d_voidsig" in
8542 echo "I can't determine whether signal handler returns void or int..." >&4
8544 rp="What type does your signal handler return?"
8551 echo "As you already told me, signal handler returns void." >&4
8554 *) echo "As you already told me, signal handler returns int." >&4
8561 case "$d_voidsig" in
8562 "$define") signal_t="void";;
8567 : check for ability to cast large floats to 32-bit ints.
8569 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8570 if $test "$intsize" -ge 4; then
8577 #include <sys/types.h>
8579 $signal_t blech(s) int s; { exit(3); }
8586 signal(SIGFPE, blech);
8588 /* Don't let compiler optimize the test away. Store the number
8589 in a writable string for gcc to pass to sscanf under HP/UX.
8591 sprintf(str, "2147483647");
8592 sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8596 /* x86 processors will probably give 0x8000 0000, which is a
8597 sign change. We don't want that. We want to mimic SPARC
8598 behavior here, which is to preserve the sign and give
8601 if (i32 != ($xxx) f)
8607 if eval $compile_ok; then
8611 echo "(I can't seem to compile the test program--assuming it can't)"
8619 echo "Nope, it can't."
8626 : check for ability to cast negative floats to unsigned
8628 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8631 #include <sys/types.h>
8633 $signal_t blech(s) int s; { exit(7); }
8634 $signal_t blech_in_list(s) int s; { exit(4); }
8635 unsigned long dummy_long(p) unsigned long p; { return p; }
8636 unsigned int dummy_int(p) unsigned int p; { return p; }
8637 unsigned short dummy_short(p) unsigned short p; { return p; }
8641 unsigned long along;
8643 unsigned short ashort;
8647 /* Frustrate gcc-2.7.2's optimizer which failed this test with
8648 a direct f = -123. assignment. gcc-2.8.0 reportedly
8649 optimized the whole file away
8651 /* Store the number in a writable string for gcc to pass to
8654 sprintf(str, "-123");
8655 sscanf(str, "%lf", &f); /* f = -123.; */
8657 signal(SIGFPE, blech);
8658 along = (unsigned long)f;
8659 aint = (unsigned int)f;
8660 ashort = (unsigned short)f;
8661 if (along != (unsigned long)-123)
8663 if (aint != (unsigned int)-123)
8665 if (ashort != (unsigned short)-123)
8667 sprintf(str, "1073741824.");
8668 sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8671 along = (unsigned long)f;
8672 if (along != 0x80000000)
8676 along = (unsigned long)f;
8677 if (along != 0x7fffffff)
8681 along = (unsigned long)f;
8682 if (along != 0x80000001)
8686 signal(SIGFPE, blech_in_list);
8687 sprintf(str, "123.");
8688 sscanf(str, "%lf", &f); /* f = 123.; */
8689 along = dummy_long((unsigned long)f);
8690 aint = dummy_int((unsigned int)f);
8691 ashort = dummy_short((unsigned short)f);
8692 if (along != (unsigned long)123)
8694 if (aint != (unsigned int)123)
8696 if (ashort != (unsigned short)123)
8703 if eval $compile_ok; then
8707 echo "(I can't seem to compile the test program--assuming it can't)"
8710 case "$castflags" in
8715 echo "Nope, it can't."
8722 : see if vprintf exists
8724 if set vprintf val -f d_vprintf; eval $csym; $val; then
8725 echo 'vprintf() found.' >&4
8727 $cat >vprintf.c <<'EOF'
8728 #include <varargs.h>
8730 int main() { xxx("foo"); }
8739 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8743 if eval $compile && ./vprintf; then
8744 echo "Your vsprintf() returns (int)." >&4
8747 echo "Your vsprintf() returns (char*)." >&4
8751 echo 'vprintf() NOT found.' >&4
8761 : see if chown exists
8765 : see if chroot exists
8769 : see if chsize exists
8773 hasstruct='varname=$1; struct=$2; shift; shift;
8774 while $test $# -ge 2; do
8776 $define) echo "#include <$2>";;
8780 echo "int main () { struct $struct foo; }" >> try.c;
8782 if eval $compile; then
8791 : see if sys/types.h has to be included
8792 set sys/types.h i_systypes
8795 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8796 while $test $# -ge 2; do
8798 $define) echo "#include <$2>";;
8802 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8804 if eval $compile; then
8815 : see whether socket exists
8817 $echo $n "Hmm... $c" >&4
8818 if set socket val -f d_socket; eval $csym; $val; then
8819 echo "Looks like you have Berkeley networking support." >&4
8821 if set setsockopt val -f; eval $csym; $val; then
8824 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8828 if $contains socklib libc.list >/dev/null 2>&1; then
8829 echo "Looks like you have Berkeley networking support." >&4
8831 : we will have to assume that it supports the 4.2 BSD interface
8834 echo "You don't have Berkeley networking in libc$_a..." >&4
8835 if test "X$d_socket" = "X$define"; then
8836 echo "...but you seem to believe that you have sockets." >&4
8838 for net in net socket
8840 if test -f /usr/lib/lib$net$_a; then
8841 ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) || \
8842 $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8843 if $contains socket libc.list >/dev/null 2>&1; then
8848 echo "...but the Wollongong group seems to have hacked it in." >&4
8849 sockethdr="-I/usr/netinclude"
8852 echo "Found Berkeley sockets interface in lib$net." >& 4
8853 if $contains setsockopt libc.list >/dev/null 2>&1; then
8856 echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8863 if test "X$d_socket" != "X$define"; then
8864 echo "or anywhere else I see." >&4
8872 : see if socketpair exists
8873 set socketpair d_sockpair
8878 echo "Checking the availability of certain socket constants..." >& 4
8879 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8880 enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8882 #include <sys/types.h>
8883 #include <sys/socket.h>
8889 set try; if eval $compile; then
8892 set d_${enum}; eval $setvar
8896 : see if this is a sys/uio.h system
8897 set sys/uio.h i_sysuio
8902 echo "Checking to see if your system supports struct cmsghdr..." >&4
8903 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
8905 case "$d_cmsghdr_s" in
8906 "$define") echo "Yes, it does." ;;
8907 *) echo "No, it doesn't." ;;
8911 : check for const keyword
8913 echo 'Checking to see if your C compiler knows about "const"...' >&4
8914 $cat >const.c <<'EOCP'
8915 typedef struct spug { int drokk; } spug;
8922 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8924 echo "Yup, it does."
8927 echo "Nope, it doesn't."
8932 : see if crypt exists
8934 if set crypt val -f d_crypt; eval $csym; $val; then
8935 echo 'crypt() found.' >&4
8939 cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8940 if $test -z "$cryptlib"; then
8941 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8945 if $test -z "$cryptlib"; then
8946 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8950 if $test -z "$cryptlib"; then
8951 cryptlib=`./loc libcrypt$_a "" $libpth`
8955 if $test -z "$cryptlib"; then
8956 echo 'crypt() NOT found.' >&4
8965 : get csh whereabouts
8967 'csh') val="$undef" ;;
8972 : Respect a hint or command line value for full_csh.
8974 '') full_csh=$csh ;;
8977 : see if cuserid exists
8978 set cuserid d_cuserid
8981 : see if this is a limits.h system
8982 set limits.h i_limits
8985 : see if this is a float.h system
8989 : See if number of significant digits in a double precision number is known
8991 $cat >dbl_dig.c <<EOM
9001 printf("Contains DBL_DIG");
9004 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9005 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9006 echo "DBL_DIG found." >&4
9009 echo "DBL_DIG NOT found." >&4
9016 hasproto='varname=$1; func=$2; shift; shift;
9017 while $test $# -ge 2; do
9019 $define) echo "#include <$2>";;
9023 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9024 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9025 echo "$func() prototype found.";
9028 echo "$func() prototype NOT found.";
9033 $rm -f try.c tryout.c'
9035 : see if dbm.h is available
9036 : see if dbmclose exists
9037 set dbmclose d_dbmclose
9040 case "$d_dbmclose" in
9050 *) set rpcsvc/dbm.h i_rpcsvcdbm
9055 *) echo "We won't be including <dbm.h>"
9065 : see if prototype for dbminit is available
9067 set d_dbminitproto dbminit $i_dbm dbm.h
9070 : see if difftime exists
9071 set difftime d_difftime
9074 : see if this is a dirent system
9076 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9078 echo "<dirent.h> found." >&4
9081 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9082 echo "<sys/dir.h> found." >&4
9085 xinc=`./findhdr sys/ndir.h`
9087 echo "<dirent.h> NOT found." >&4
9092 : Look for type of directory structure.
9094 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9096 case "$direntrytype" in
9099 $define) guess1='struct dirent' ;;
9100 *) guess1='struct direct' ;;
9103 *) guess1="$direntrytype"
9108 'struct dirent') guess2='struct direct' ;;
9109 *) guess2='struct dirent' ;;
9112 if $contains "$guess1" try.c >/dev/null 2>&1; then
9113 direntrytype="$guess1"
9114 echo "Your directory entries are $direntrytype." >&4
9115 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9116 direntrytype="$guess2"
9117 echo "Your directory entries seem to be $direntrytype." >&4
9119 echo "I don't recognize your system's directory entries." >&4
9120 rp="What type is used for directory entries on this system?"
9128 : see if the directory entry stores field length
9130 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9131 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9132 echo "Good, your directory entry keeps length information in d_namlen." >&4
9135 echo "Your directory entry does not know about the d_namlen field." >&4
9142 : see if dlerror exists
9145 set dlerror d_dlerror
9149 : see if dlfcn is available
9157 On a few systems, the dynamically loaded modules that perl generates and uses
9158 will need a different extension than shared libs. The default will probably
9166 rp='What is the extension of dynamically loaded modules'
9175 : Check if dlsym need a leading underscore
9181 echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9182 $cat >dyna.c <<'EOM'
9191 #include <dlfcn.h> /* the dynamic linker include file for Sunos/Solaris */
9193 #include <sys/types.h>
9207 int mode = RTLD_LAZY ;
9209 handle = dlopen("./dyna.$dlext", mode) ;
9210 if (handle == NULL) {
9215 symbol = dlsym(handle, "fred") ;
9216 if (symbol == NULL) {
9217 /* try putting a leading underscore */
9218 symbol = dlsym(handle, "_fred") ;
9219 if (symbol == NULL) {
9232 : Call the object file tmp-dyna.o in case dlext=o.
9233 if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 &&
9234 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 &&
9235 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 &&
9236 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
9239 1) echo "Test program failed using dlopen." >&4
9240 echo "Perhaps you should not use dynamic loading." >&4;;
9241 2) echo "Test program failed using dlsym." >&4
9242 echo "Perhaps you should not use dynamic loading." >&4;;
9243 3) echo "dlsym needs a leading underscore" >&4
9245 4) echo "dlsym doesn't need a leading underscore." >&4;;
9248 echo "I can't compile and run the test program." >&4
9249 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9254 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9259 : see if prototype for drand48 is available
9261 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9264 : see if dup2 exists
9268 : see if eaccess exists
9269 set eaccess d_eaccess
9272 : see if endgrent exists
9273 set endgrent d_endgrent
9276 : see if endhostent exists
9277 set endhostent d_endhent
9280 : see if endnetent exists
9281 set endnetent d_endnent
9284 : see if endprotoent exists
9285 set endprotoent d_endpent
9288 : see if endpwent exists
9289 set endpwent d_endpwent
9292 : see if endservent exists
9293 set endservent d_endsent
9296 : Locate the flags for 'open()'
9298 $cat >open3.c <<'EOCP'
9299 #include <sys/types.h>
9304 #include <sys/file.h>
9315 : check sys/file.h first to get FREAD on Sun
9316 if $test `./findhdr sys/file.h` && \
9317 set open3 -DI_SYS_FILE && eval $compile; then
9319 echo "<sys/file.h> defines the O_* constants..." >&4
9321 echo "and you have the 3 argument form of open()." >&4
9324 echo "but not the 3 argument form of open(). Oh, well." >&4
9327 elif $test `./findhdr fcntl.h` && \
9328 set open3 -DI_FCNTL && eval $compile; then
9330 echo "<fcntl.h> defines the O_* constants..." >&4
9332 echo "and you have the 3 argument form of open()." >&4
9335 echo "but not the 3 argument form of open(). Oh, well." >&4
9340 echo "I can't find the O_* constant definitions! You got problems." >&4
9346 : see which of string.h or strings.h is needed
9348 strings=`./findhdr string.h`
9349 if $test "$strings" && $test -r "$strings"; then
9350 echo "Using <string.h> instead of <strings.h>." >&4
9354 strings=`./findhdr strings.h`
9355 if $test "$strings" && $test -r "$strings"; then
9356 echo "Using <strings.h> instead of <string.h>." >&4
9358 echo "No string header found -- You'll surely have problems." >&4
9364 "$undef") strings=`./findhdr strings.h`;;
9365 *) strings=`./findhdr string.h`;;
9368 : check for non-blocking I/O stuff
9369 case "$h_sysfile" in
9370 true) echo "#include <sys/file.h>" > head.c;;
9373 true) echo "#include <fcntl.h>" > head.c;;
9374 *) echo "#include <sys/fcntl.h>" > head.c;;
9379 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9380 case "$o_nonblock" in
9383 $cat >>try.c <<'EOCP'
9387 printf("O_NONBLOCK\n");
9391 printf("O_NDELAY\n");
9395 printf("FNDELAY\n");
9402 if eval $compile_ok; then
9404 case "$o_nonblock" in
9405 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9406 *) echo "Seems like we can use $o_nonblock.";;
9409 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9412 *) echo "Using $hint value $o_nonblock.";;
9414 $rm -f try try.* .out core
9417 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9423 #include <sys/types.h>
9426 #define MY_O_NONBLOCK $o_nonblock
9427 #ifndef errno /* XXX need better Configure test */
9438 #include <strings.h>
9440 $signal_t blech(x) int x; { exit(3); }
9442 $cat >> try.c <<'EOCP'
9450 pipe(pd); /* Down: child -> parent */
9451 pipe(pu); /* Up: parent -> child */
9454 close(pd[1]); /* Parent reads from pd[0] */
9455 close(pu[0]); /* Parent writes (blocking) to pu[1] */
9457 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9462 signal(SIGALRM, blech);
9464 if ((ret = read(pd[0], buf, 1)) > 0) /* Nothing to read! */
9466 sprintf(string, "%d\n", ret);
9467 write(2, string, strlen(string));
9470 if (errno == EAGAIN) {
9476 if (errno == EWOULDBLOCK)
9477 printf("EWOULDBLOCK\n");
9480 write(pu[1], buf, 1); /* Unblocks child, tell it to close our pipe */
9481 sleep(2); /* Give it time to close our pipe */
9483 ret = read(pd[0], buf, 1); /* Should read EOF */
9485 sprintf(string, "%d\n", ret);
9486 write(3, string, strlen(string));
9490 close(pd[0]); /* We write to pd[1] */
9491 close(pu[1]); /* We read from pu[0] */
9492 read(pu[0], buf, 1); /* Wait for parent to signal us we may continue */
9493 close(pd[1]); /* Pipe pd is now fully closed! */
9494 exit(0); /* Bye bye, thank you for playing! */
9498 if eval $compile_ok; then
9499 echo "$startsh" >mtry
9500 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9502 ./mtry >/dev/null 2>&1
9504 0) eagain=`$cat try.out`;;
9505 1) echo "Could not perform non-blocking setting!";;
9506 2) echo "I did a successful read() for something that was not there!";;
9507 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9508 4) echo "Could not find F_SETFL!";;
9509 *) echo "Something terribly wrong happened during testing.";;
9511 rd_nodata=`$cat try.ret`
9512 echo "A read() system call with no data present returns $rd_nodata."
9513 case "$rd_nodata" in
9516 echo "(That's peculiar, fixing that to be -1.)"
9522 echo "Forcing errno EAGAIN on read() with no data available."
9526 echo "Your read() sets errno to $eagain when no data is available."
9529 status=`$cat try.err`
9531 0) echo "And it correctly returns 0 to signal EOF.";;
9532 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9533 *) echo "However, your read() returns '$status' on EOF??";;
9536 if test "$status" = "$rd_nodata"; then
9537 echo "WARNING: you can't distinguish between EOF and no data!"
9541 echo "I can't compile the test program--assuming errno EAGAIN will do."
9548 echo "Using $hint value $eagain."
9549 echo "Your read() returns $rd_nodata when no data is present."
9550 case "$d_eofnblk" in
9551 "$define") echo "And you can see EOF because read() returns 0.";;
9552 "$undef") echo "But you can't see EOF status from read() returned value.";;
9554 echo "(Assuming you can't see EOF status from read anyway.)"
9560 $rm -f try try.* .out core head.c mtry
9562 : see if fchmod exists
9566 : see if fchown exists
9570 : see if this is an fcntl system
9575 : See if fcntl-based locking works.
9576 $cat >try.c <<'EOCP'
9581 #if defined(F_SETLK) && defined(F_SETLKW)
9584 fd = open("try.c", O_RDONLY);
9585 flock.l_type = F_RDLCK;
9586 flock.l_whence = SEEK_SET;
9587 flock.l_start = flock.l_len = 0;
9588 retval = fcntl(fd, F_SETLK, &flock);
9590 (retval < 0 ? exit(2) : exit(0));
9596 echo "Checking if fcntl-based file locking works... "
9600 if eval $compile_ok; then
9602 echo "Yes, it seems to work."
9605 echo "Nope, it didn't work."
9609 echo "I'm unable to compile the test program, so I'll assume not."
9614 echo "Nope, since you don't even have fcntl()."
9617 set d_fcntl_can_lock
9622 : see if sys/select.h has to be included
9623 set sys/select.h i_sysselct
9626 : see if we should include time.h, sys/time.h, or both
9628 if test "X$timeincl" = X; then
9629 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9630 $echo $n "I'm now running the test program...$c"
9631 $cat >try.c <<'EOCP'
9632 #include <sys/types.h>
9637 #ifdef SYSTIMEKERNEL
9640 #include <sys/time.h>
9643 #include <sys/select.h>
9652 struct timezone tzp;
9654 if (foo.tm_sec == foo.tm_sec)
9657 if (bar.tv_sec == bar.tv_sec)
9664 for s_timezone in '-DS_TIMEZONE' ''; do
9666 for s_timeval in '-DS_TIMEVAL' ''; do
9667 for i_systimek in '' '-DSYSTIMEKERNEL'; do
9668 for i_time in '' '-DI_TIME'; do
9669 for i_systime in '-DI_SYSTIME' ''; do
9672 set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9673 if eval $compile; then
9674 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9678 $echo $n "Succeeded with $flags$c"
9690 *SYSTIMEKERNEL*) i_systimek="$define"
9691 timeincl=`./findhdr sys/time.h`
9692 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9693 *) i_systimek="$undef";;
9696 *I_TIME*) i_time="$define"
9697 timeincl=`./findhdr time.h`" $timeincl"
9698 echo "We'll include <time.h>." >&4;;
9699 *) i_time="$undef";;
9702 *I_SYSTIME*) i_systime="$define"
9703 timeincl=`./findhdr sys/time.h`" $timeincl"
9704 echo "We'll include <sys/time.h>." >&4;;
9705 *) i_systime="$undef";;
9710 : check for fd_set items
9713 Checking to see how well your C compiler handles fd_set and friends ...
9715 $cat >fd_set.c <<EOCP
9716 #$i_systime I_SYS_TIME
9717 #$i_sysselct I_SYS_SELECT
9718 #$d_socket HAS_SOCKET
9719 #include <sys/types.h>
9721 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9724 #include <sys/time.h>
9727 #include <sys/select.h>
9736 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9743 set fd_set -DTRYBITS
9744 if eval $compile; then
9745 d_fds_bits="$define"
9747 echo "Well, your system knows about the normal fd_set typedef..." >&4
9749 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9750 d_fd_macros="$define"
9753 but not the normal fd_set macros! Gaaack! I'll have to cover for you.
9755 d_fd_macros="$undef"
9759 Hmm, your compiler has some difficulty with fd_set. Checking further...
9762 if eval $compile; then
9765 echo "Well, your system has some sort of fd_set available..." >&4
9767 echo "and you have the normal fd_set macros." >&4
9768 d_fd_macros="$define"
9771 but not the normal fd_set macros! Gross! More work for me...
9773 d_fd_macros="$undef"
9776 echo "Well, you got zip. That's OK, I can roll my own fd_set stuff." >&4
9779 d_fd_macros="$undef"
9784 : see if fgetpos exists
9785 set fgetpos d_fgetpos
9788 : see if flock exists
9792 : see if this is a sys/file.h system
9797 : do we need to include sys/file.h ?
9803 echo "We'll be including <sys/file.h>." >&4
9806 echo "We won't be including <sys/file.h>." >&4
9816 : see if prototype for flock is available
9818 set d_flockproto flock $i_sysfile sys/file.h
9821 : see if fork exists
9825 : see if pathconf exists
9826 set pathconf d_pathconf
9829 : see if fpathconf exists
9830 set fpathconf d_fpathconf
9834 : check for fpos64_t
9836 echo "Checking to see if you have fpos64_t..." >&4
9839 int main() { fpos64_t x = 7; }
9842 if eval $compile; then
9844 echo "You have fpos64_t."
9847 echo "You do not have fpos64_t."
9849 8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9856 : see if frexpl exists
9860 : see if this is a sys/param system
9861 set sys/param.h i_sysparam
9864 : see if this is a sys/mount.h system
9865 set sys/mount.h i_sysmount
9870 echo "Checking to see if your system supports struct fs_data..." >&4
9871 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9873 case "$d_fs_data_s" in
9874 "$define") echo "Yes, it does." ;;
9875 *) echo "No, it doesn't." ;;
9878 : see if fseeko exists
9882 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9885 : see if fsetpos exists
9886 set fsetpos d_fsetpos
9890 : see if fstatfs exists
9891 set fstatfs d_fstatfs
9895 : see if statvfs exists
9896 set statvfs d_statvfs
9899 : see if fstatvfs exists
9900 set fstatvfs d_fstatvfs
9904 : see if fsync exists
9908 : see if ftello exists
9912 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9915 : see if getcwd exists
9919 : see if getespwnam exists
9920 set getespwnam d_getespwnam
9924 : see if getfsstat exists
9925 set getfsstat d_getfsstat
9928 : see if getgrent exists
9929 set getgrent d_getgrent
9932 : see if gethostbyaddr exists
9933 set gethostbyaddr d_gethbyaddr
9936 : see if gethostbyname exists
9937 set gethostbyname d_gethbyname
9940 : see if gethostent exists
9941 set gethostent d_gethent
9944 : see how we will look up host name
9947 if set gethostname val -f d_gethname; eval $csym; $val; then
9948 echo 'gethostname() found.' >&4
9949 d_gethname="$define"
9952 if set uname val -f d_uname; eval $csym; $val; then
9955 uname() was found, but you're running xenix, and older versions of xenix
9956 have a broken uname(). If you don't really know whether your xenix is old
9957 enough to have a broken system call, use the default answer.
9964 rp='Is your uname() broken?'
9967 n*) d_uname="$define"; call=uname;;
9970 echo 'uname() found.' >&4
9977 case "$d_gethname" in
9978 '') d_gethname="$undef";;
9981 '') d_uname="$undef";;
9983 case "$d_uname$d_gethname" in
9988 Every now and then someone has a $call() that lies about the hostname
9989 but can't be fixed for political or economic reasons. If you wish, I can
9990 pretend $call() isn't there and maybe compute hostname at run-time
9991 thanks to the '$phostname' command.
9994 rp="Shall I ignore $call() from now on?"
9997 y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10000 case "$phostname" in
10001 '') aphostname='';;
10002 *) case "$aphostname" in
10004 *) set X $phostname
10008 file=`./loc $file $file $pth`
10009 aphostname=`echo $file $*`
10014 case "$d_uname$d_gethname" in
10017 case "$phostname" in
10019 echo "There will be no way for $package to get your hostname." >&4;;
10021 echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10025 case "$d_phostname" in
10026 '') d_phostname="$undef";;
10029 : see if this is a netdb.h system
10030 set netdb.h i_netdb
10033 : see if prototypes for various gethostxxx netdb.h functions are available
10035 set d_gethostprotos gethostent $i_netdb netdb.h
10038 : see if getitimer exists
10039 set getitimer d_getitimer
10042 : see if getlogin exists
10043 set getlogin d_getlogin
10046 : see if getmnt exists
10047 set getmnt d_getmnt
10050 : see if getmntent exists
10051 set getmntent d_getmntent
10054 : see if getnetbyaddr exists
10055 set getnetbyaddr d_getnbyaddr
10058 : see if getnetbyname exists
10059 set getnetbyname d_getnbyname
10062 : see if getnetent exists
10063 set getnetent d_getnent
10066 : see if prototypes for various getnetxxx netdb.h functions are available
10068 set d_getnetprotos getnetent $i_netdb netdb.h
10071 : see if getpagesize exists
10072 set getpagesize d_getpagsz
10076 : see if getprotobyname exists
10077 set getprotobyname d_getpbyname
10080 : see if getprotobynumber exists
10081 set getprotobynumber d_getpbynumber
10084 : see if getprotoent exists
10085 set getprotoent d_getpent
10088 : see if getpgid exists
10089 set getpgid d_getpgid
10092 : see if getpgrp2 exists
10093 set getpgrp2 d_getpgrp2
10096 : see if getppid exists
10097 set getppid d_getppid
10100 : see if getpriority exists
10101 set getpriority d_getprior
10104 : see if prototypes for various getprotoxxx netdb.h functions are available
10106 set d_getprotoprotos getprotoent $i_netdb netdb.h
10109 : see if getprpwnam exists
10110 set getprpwnam d_getprpwnam
10113 : see if getpwent exists
10114 set getpwent d_getpwent
10118 : see if getservbyname exists
10119 set getservbyname d_getsbyname
10122 : see if getservbyport exists
10123 set getservbyport d_getsbyport
10126 : see if getservent exists
10127 set getservent d_getsent
10130 : see if prototypes for various getservxxx netdb.h functions are available
10132 set d_getservprotos getservent $i_netdb netdb.h
10135 : see if getspnam exists
10136 set getspnam d_getspnam
10139 : see if gettimeofday or ftime exists
10140 set gettimeofday d_gettimeod
10142 case "$d_gettimeod" in
10148 val="$undef"; set d_ftime; eval $setvar
10151 case "$d_gettimeod$d_ftime" in
10154 echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10158 : see if this is an grp system
10164 xxx=`./findhdr grp.h`
10165 $cppstdin $cppflags $cppminus < $xxx >$$.h
10167 if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10179 set d_grpasswd; eval $setvar
10183 : see if hasmntopt exists
10184 set hasmntopt d_hasmntopt
10187 : see if this is a netinet/in.h or sys/in.h system
10188 set netinet/in.h i_niin sys/in.h i_sysin
10191 : see if arpa/inet.h has to be included
10192 set arpa/inet.h i_arpainet
10195 : see if htonl --and friends-- exists
10200 : Maybe they are macros.
10203 $cat >htonl.c <<EOM
10205 #include <sys/types.h>
10206 #$i_niin I_NETINET_IN
10208 #$i_arpainet I_ARPA_INET
10209 #ifdef I_NETINET_IN
10210 #include <netinet/in.h>
10213 #include <sys/in.h>
10216 #include <arpa/inet.h>
10219 printf("Defined as a macro.");
10222 $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10223 if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10225 echo "But it seems to be defined as a macro." >&4
10233 : see if iconv exists
10239 if set index val -f; eval $csym; $val; then
10240 if set strchr val -f d_strchr; eval $csym; $val; then
10241 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10244 echo "strchr() found." >&4
10248 echo "index() found." >&4
10253 echo "index() found." >&4
10256 if set strchr val -f d_strchr; eval $csym; $val; then
10259 echo "strchr() found." >&4
10261 echo "No index() or strchr() found!" >&4
10266 set d_strchr; eval $setvar
10268 set d_index; eval $setvar
10270 : check whether inet_aton exists
10271 set inet_aton d_inetaton
10276 $cat >isascii.c <<'EOCP'
10288 if eval $compile; then
10289 echo "isascii() found." >&4
10292 echo "isascii() NOT found." >&4
10299 : see if isnan exists
10303 : see if isnanl exists
10304 set isnanl d_isnanl
10307 : see if killpg exists
10308 set killpg d_killpg
10311 : see if lchown exists
10313 $cat > try.c <<'EOCP'
10314 /* System header to define __stub macros and hopefully few prototypes,
10315 which can conflict with char lchown(); below. */
10316 #include <assert.h>
10317 /* Override any gcc2 internal prototype to avoid an error. */
10318 /* We use char because int might match the return type of a gcc2
10319 builtin and then its argument prototype would still apply. */
10322 /* The GNU C library defines this for functions which it implements
10323 to always fail with ENOSYS. Some functions are actually named
10324 something starting with __ and the normal name is an alias. */
10325 #if defined (__stub_lchown) || defined (__stub___lchown)
10333 if eval $compile; then
10334 $echo "lchown() found." >&4
10337 $echo "lchown() NOT found." >&4
10343 : See if number of significant digits in a double precision number is known
10345 $cat >ldbl_dig.c <<EOM
10346 #$i_limits I_LIMITS
10349 #include <limits.h>
10355 printf("Contains LDBL_DIG");
10358 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10359 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10360 echo "LDBL_DIG found." >&4
10363 echo "LDBL_DIG NOT found." >&4
10370 : see if link exists
10374 : see if localeconv exists
10375 set localeconv d_locconv
10378 : see if lockf exists
10382 : see if prototype for lseek is available
10384 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10387 : see if lstat exists
10391 : see if madvise exists
10392 set madvise d_madvise
10395 : see if mblen exists
10399 : see if mbstowcs exists
10400 set mbstowcs d_mbstowcs
10403 : see if mbtowc exists
10404 set mbtowc d_mbtowc
10407 : see if memchr exists
10408 set memchr d_memchr
10411 : see if memcmp exists
10412 set memcmp d_memcmp
10415 : see if memcpy exists
10416 set memcpy d_memcpy
10419 : see if memmove exists
10420 set memmove d_memmove
10423 : see if memset exists
10424 set memset d_memset
10427 : see if mkdir exists
10431 : see if mkdtemp exists
10432 set mkdtemp d_mkdtemp
10435 : see if mkfifo exists
10436 set mkfifo d_mkfifo
10439 : see if mkstemp exists
10440 set mkstemp d_mkstemp
10443 : see if mkstemps exists
10444 set mkstemps d_mkstemps
10447 : see if mktime exists
10448 set mktime d_mktime
10451 : see if this is a sys/mman.h system
10452 set sys/mman.h i_sysmman
10455 : see if mmap exists
10458 : see what shmat returns
10459 : default to something harmless
10461 case "$i_sysmman$d_mmap" in
10463 $cat >mmap.c <<'END'
10464 #include <sys/mman.h>
10467 if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10472 echo "and it returns ($mmaptype)." >&4
10478 : see if modfl exists
10482 d_modfl_pow32_bug="$undef"
10484 case "$d_longdbl$d_modfl" in
10487 Checking to see whether your modfl() is okay for large values...
10493 long double nv = 4294967303.15;
10499 printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10503 case "$osname:$gccversion" in
10504 aix:) saveccflags="$ccflags"
10505 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10508 if eval $compile; then
10511 *" 4294967303.150000 1.150000 4294967302.000000")
10512 echo >&4 "Your modfl() is broken for large values."
10513 d_modfl_pow32_bug="$define"
10515 glibc) echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10519 *" 4294967303.150000 0.150000 4294967303.000000")
10520 echo >&4 "Your modfl() seems okay for large values."
10522 *) echo >&4 "I don't understand your modfl() at all."
10526 $rm -f try.* try core core.try.*
10528 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10531 case "$osname:$gccversion" in
10532 aix:) $ccflags="saveccflags" ;; # restore
10537 : see if mprotect exists
10538 set mprotect d_mprotect
10541 : see if msgctl exists
10542 set msgctl d_msgctl
10545 : see if msgget exists
10546 set msgget d_msgget
10549 : see if msgsnd exists
10550 set msgsnd d_msgsnd
10553 : see if msgrcv exists
10554 set msgrcv d_msgrcv
10557 : see how much of the 'msg*(2)' library is present.
10560 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10561 *"$undef"*) h_msg=false;;
10565 case "`ipcs 2>&1`" in
10566 "SVID messages"*"not configured"*)
10567 echo "Your $osname does not have the msg*(2) configured." >&4
10570 set msgctl d_msgctl
10572 set msgget d_msgget
10574 set msgsnd d_msgsnd
10576 set msgrcv d_msgrcv
10582 : we could also check for sys/ipc.h ...
10583 if $h_msg && $test `./findhdr sys/msg.h`; then
10584 echo "You have the full msg*(2) library." >&4
10587 echo "You don't have the full msg*(2) library." >&4
10595 echo "Checking to see if your system supports struct msghdr..." >&4
10596 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10598 case "$d_msghdr_s" in
10599 "$define") echo "Yes, it does." ;;
10600 *) echo "No, it doesn't." ;;
10604 : see if msync exists
10608 : see if munmap exists
10609 set munmap d_munmap
10612 : see if nice exists
10616 : check for length of character
10618 case "$charsize" in
10620 echo "Checking to see how big your characters are (hey, you never know)..." >&4
10621 $cat >try.c <<'EOCP'
10625 printf("%d\n", (int)sizeof(char));
10630 if eval $compile_ok; then
10634 echo "(I can't seem to compile the test program. Guessing...)"
10641 rp="What is the size of a character (in bytes)?"
10646 : check for volatile keyword
10648 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10649 $cat >try.c <<'EOCP'
10652 typedef struct _goo_struct goo_struct;
10653 goo_struct * volatile goo = ((goo_struct *)0);
10654 struct _goo_struct {
10659 typedef unsigned short foo_t;
10660 char *volatile foo;
10662 volatile foo_t blech;
10666 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10668 echo "Yup, it does."
10671 echo "Nope, it doesn't."
10679 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10681 case "$use64bitint:$d_quad:$quadtype" in
10684 uvtype="$uquadtype"
10689 uvtype="unsigned long"
10695 case "$uselongdouble:$d_longdbl" in
10697 nvtype="long double"
10698 nvsize=$longdblsize
10705 $echo "(IV will be "$ivtype", $ivsize bytes)"
10706 $echo "(UV will be "$uvtype", $uvsize bytes)"
10707 $echo "(NV will be "$nvtype", $nvsize bytes)"
10710 #$i_inttypes I_INTTYPES
10712 #include <inttypes.h>
10717 int8_t i = INT8_MAX;
10718 uint8_t u = UINT8_MAX;
10719 printf("int8_t\n");
10722 int16_t i = INT16_MAX;
10723 uint16_t i = UINT16_MAX;
10724 printf("int16_t\n");
10727 int32_t i = INT32_MAX;
10728 uint32_t u = UINT32_MAX;
10729 printf("int32_t\n");
10735 '') case "$charsize" in
10737 u8type="unsigned char"
10746 if eval $compile; then
10747 case "`./try$exe_ext`" in
10748 int8_t) i8type=int8_t
10758 '') if $test $charsize -ge 1; then
10760 u8type="unsigned char"
10768 '') case "$shortsize" in
10770 u16type="unsigned short"
10778 '') set try -DINT16
10779 if eval $compile; then
10780 case "`./try$exe_ext`" in
10792 '') if $test $shortsize -ge 2; then
10794 u16type="unsigned short"
10802 '') case "$longsize" in
10804 u32type="unsigned long"
10808 *) case "$intsize" in
10810 u32type="unsigned int"
10820 '') set try -DINT32
10821 if eval $compile; then
10822 case "`./try$exe_ext`" in
10834 '') if $test $intsize -ge 4; then
10836 u32type="unsigned int"
10844 '') case "$d_quad:$quadtype" in
10846 i64type="$quadtype"
10847 u64type="$uquadtype"
10855 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10856 : volatile so that the compiler has to store it out to memory.
10857 if test X"$d_volatile" = X"$define"; then
10862 #include <sys/types.h>
10863 #include <signal.h>
10865 $volatile int bletched = 0;
10866 $signal_t blech(s) int s; { bletched = 1; }
10871 int n = 8 * $uvsize;
10874 signal(SIGFPE, blech);
10877 for (i = 0; i < n; i++) {
10878 u = u << 1 | ($uvtype)1;
10880 if (($uvtype)d != u)
10884 d = ($nvtype)(u - 1);
10885 if (($uvtype)d != (u - 1))
10893 printf("%d\n", ((i == n) ? -n : i));
10899 d_nv_preserves_uv="$undef"
10900 if eval $compile; then
10901 d_nv_preserves_uv_bits="`./try$exe_ext`"
10903 case "$d_nv_preserves_uv_bits" in
10905 d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
10906 $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10907 d_nv_preserves_uv="$define"
10909 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs." 2>&1
10910 d_nv_preserves_uv="$undef" ;;
10911 *) $echo "Can't figure out how many bits your NVs preserve." 2>&1
10912 d_nv_preserves_uv_bits="$undef" ;;
10918 : check for off64_t
10920 echo "Checking to see if you have off64_t..." >&4
10922 #include <sys/types.h>
10923 #include <unistd.h>
10924 int main() { off64_t x = 7; }
10927 if eval $compile; then
10929 echo "You have off64_t."
10932 echo "You do not have off64_t."
10933 case "$lseeksize" in
10934 8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10941 : see if POSIX threads are available
10942 set pthread.h i_pthread
10948 : how to create joinable pthreads
10949 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10951 echo "Checking what constant to use for creating joinable pthreads..." >&4
10952 $cat >try.c <<'EOCP'
10953 #include <pthread.h>
10955 int detachstate = JOINABLE;
10958 set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10959 if eval $compile; then
10960 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10961 val="$undef" # Yes, undef.
10962 set d_old_pthread_create_joinable
10965 set old_pthread_create_joinable
10968 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10969 if eval $compile; then
10970 echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10972 set d_old_pthread_create_joinable
10974 val=PTHREAD_CREATE_UNDETACHED
10975 set old_pthread_create_joinable
10978 set try -DJOINABLE=__UNDETACHED
10979 if eval $compile; then
10980 echo "You seem to use __UNDETACHED." >&4
10982 set d_old_pthread_create_joinable
10985 set old_pthread_create_joinable
10988 echo "Egads, nothing obvious found. Guessing that you use 0." >&4
10990 set d_old_pthread_create_joinable
10993 set old_pthread_create_joinable
11000 d_old_pthread_create_joinable="$undef"
11001 old_pthread_create_joinable=""
11004 : see if pause exists
11008 : see if pipe exists
11012 : see if poll exists
11017 : see whether the various POSIXish _yields exist
11019 #include <pthread.h>
11025 #ifdef PTHREAD_YIELD
11028 #ifdef PTHREAD_YIELD_NULL
11029 pthread_yield(NULL);
11035 : see if sched_yield exists
11036 set try -DSCHED_YIELD
11037 if eval $compile; then
11039 sched_yield='sched_yield()'
11043 case "$usethreads" in
11046 $define) echo 'sched_yield() found.' >&4 ;;
11047 *) echo 'sched_yield() NOT found.' >&4 ;;
11053 : see if pthread_yield exists
11054 set try -DPTHREAD_YIELD
11055 if eval $compile; then
11057 case "$sched_yield" in
11058 '') sched_yield='pthread_yield()' ;;
11061 set try -DPTHREAD_YIELD_NULL
11062 if eval $compile; then
11064 case "$sched_yield" in
11065 '') sched_yield='pthread_yield(NULL)' ;;
11071 case "$usethreads" in
11074 $define) echo 'pthread_yield() found.' >&4 ;;
11075 *) echo 'pthread_yield() NOT found.' >&4 ;;
11079 set d_pthread_yield
11082 case "$sched_yield" in
11083 '') sched_yield=undef ;;
11088 : see if this is a pwd.h system
11094 xxx=`./findhdr pwd.h`
11095 $cppstdin $cppflags $cppminus < $xxx >$$.h
11097 if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11105 if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11113 if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11121 if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11129 if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11137 if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11145 if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11153 if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11165 set d_pwquota; eval $setvar
11166 set d_pwage; eval $setvar
11167 set d_pwchange; eval $setvar
11168 set d_pwclass; eval $setvar
11169 set d_pwexpire; eval $setvar
11170 set d_pwcomment; eval $setvar
11171 set d_pwgecos; eval $setvar
11172 set d_pwpasswd; eval $setvar
11176 : see if readdir and friends exist
11177 set readdir d_readdir
11179 set seekdir d_seekdir
11181 set telldir d_telldir
11183 set rewinddir d_rewinddir
11186 : see if readlink exists
11187 set readlink d_readlink
11190 : see if readv exists
11194 : see if realpath exists
11195 set realpath d_realpath
11198 : see if recvmsg exists
11199 set recvmsg d_recvmsg
11202 : see if rename exists
11203 set rename d_rename
11206 : see if rmdir exists
11210 : see if memory.h is available.
11215 : See if it conflicts with string.h
11221 $cppstdin $cppflags $cppminus < $strings > mem.h
11222 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11224 echo "We won't be including <memory.h>."
11234 : can bcopy handle overlapping blocks?
11239 echo "Checking to see if your bcopy() can do overlapping copies..." >&4
11241 #$i_memory I_MEMORY
11242 #$i_stdlib I_STDLIB
11243 #$i_string I_STRING
11244 #$i_unistd I_UNISTD
11246 $cat >>try.c <<'EOCP'
11249 # include <memory.h>
11252 # include <stdlib.h>
11255 # include <string.h>
11257 # include <strings.h>
11260 # include <unistd.h> /* Needed for NetBSD */
11264 char buf[128], abc[128];
11270 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11272 for (align = 7; align >= 0; align--) {
11273 for (len = 36; len; len--) {
11275 bcopy(abc, b, len);
11276 for (off = 1; off <= len; off++) {
11277 bcopy(b, b+off, len);
11278 bcopy(b+off, b, len);
11279 if (bcmp(b, abc, len))
11288 if eval $compile_ok; then
11289 if ./try 2>/dev/null; then
11290 echo "Yes, it can."
11293 echo "It can't, sorry."
11294 case "$d_memmove" in
11295 "$define") echo "But that's Ok since you have memmove()." ;;
11299 echo "(I can't compile the test program, so we'll assume not...)"
11300 case "$d_memmove" in
11301 "$define") echo "But that's Ok since you have memmove()." ;;
11306 $rm -f try.* try core
11310 : can memcpy handle overlapping blocks?
11312 case "$d_memcpy" in
11315 echo "Checking to see if your memcpy() can do overlapping copies..." >&4
11317 #$i_memory I_MEMORY
11318 #$i_stdlib I_STDLIB
11319 #$i_string I_STRING
11320 #$i_unistd I_UNISTD
11322 $cat >>try.c <<'EOCP'
11325 # include <memory.h>
11328 # include <stdlib.h>
11331 # include <string.h>
11333 # include <strings.h>
11336 # include <unistd.h> /* Needed for NetBSD */
11340 char buf[128], abc[128];
11346 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11347 try to store the string in read-only memory. */
11348 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11350 for (align = 7; align >= 0; align--) {
11351 for (len = 36; len; len--) {
11353 memcpy(b, abc, len);
11354 for (off = 1; off <= len; off++) {
11355 memcpy(b+off, b, len);
11356 memcpy(b, b+off, len);
11357 if (memcmp(b, abc, len))
11366 if eval $compile_ok; then
11367 if ./try 2>/dev/null; then
11368 echo "Yes, it can."
11371 echo "It can't, sorry."
11372 case "$d_memmove" in
11373 "$define") echo "But that's Ok since you have memmove()." ;;
11377 echo "(I can't compile the test program, so we'll assume not...)"
11378 case "$d_memmove" in
11379 "$define") echo "But that's Ok since you have memmove()." ;;
11384 $rm -f try.* try core
11388 : can memcmp be trusted to compare relative magnitude?
11390 case "$d_memcmp" in
11393 echo "Checking if your memcmp() can compare relative magnitude..." >&4
11395 #$i_memory I_MEMORY
11396 #$i_stdlib I_STDLIB
11397 #$i_string I_STRING
11398 #$i_unistd I_UNISTD
11400 $cat >>try.c <<'EOCP'
11403 # include <memory.h>
11406 # include <stdlib.h>
11409 # include <string.h>
11411 # include <strings.h>
11414 # include <unistd.h> /* Needed for NetBSD */
11420 if ((a < b) && memcmp(&a, &b, 1) < 0)
11426 if eval $compile_ok; then
11427 if ./try 2>/dev/null; then
11428 echo "Yes, it can."
11431 echo "No, it can't (it uses signed chars)."
11434 echo "(I can't compile the test program, so we'll assume not...)"
11438 $rm -f try.* try core
11442 : see if prototype for sbrk is available
11444 set d_sbrkproto sbrk $i_unistd unistd.h
11447 : see if select exists
11448 set select d_select
11451 : see if semctl exists
11452 set semctl d_semctl
11455 : see if semget exists
11456 set semget d_semget
11459 : see if semop exists
11463 : see how much of the 'sem*(2)' library is present.
11466 case "$d_semctl$d_semget$d_semop" in
11467 *"$undef"*) h_sem=false;;
11471 case "`ipcs 2>&1`" in
11472 "SVID messages"*"not configured"*)
11473 echo "Your $osname does not have the sem*(2) configured." >&4
11476 set semctl d_semctl
11478 set semget d_semget
11486 : we could also check for sys/ipc.h ...
11487 if $h_sem && $test `./findhdr sys/sem.h`; then
11488 echo "You have the full sem*(2) library." >&4
11491 echo "You don't have the full sem*(2) library." >&4
11497 : see whether sys/sem.h defines union semun
11499 $cat > try.c <<'END'
11500 #include <sys/types.h>
11501 #include <sys/ipc.h>
11502 #include <sys/sem.h>
11503 int main () { union semun semun; semun.buf = 0; }
11506 if eval $compile; then
11507 echo "You have union semun in <sys/sem.h>." >&4
11510 echo "You do not have union semun in <sys/sem.h>." >&4
11513 $rm -f try try.c try.h
11517 : see how to do semctl IPC_STAT
11520 : see whether semctl IPC_STAT can use union semun
11525 # define S_IRUSR S_IREAD
11526 # define S_IWUSR S_IWRITE
11527 # define S_IXUSR S_IEXEC
11529 # define S_IRUSR 0400
11530 # define S_IWUSR 0200
11531 # define S_IXUSR 0100
11533 # define S_IRGRP (S_IRUSR>>3)
11534 # define S_IWGRP (S_IWUSR>>3)
11535 # define S_IXGRP (S_IXUSR>>3)
11536 # define S_IROTH (S_IRUSR>>6)
11537 # define S_IWOTH (S_IWUSR>>6)
11538 # define S_IXOTH (S_IXUSR>>6)
11541 # define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11542 # define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11543 # define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11548 #include <sys/types.h>
11549 #include <sys/ipc.h>
11550 #include <sys/sem.h>
11551 #include <sys/stat.h>
11558 #$d_union_semun HAS_UNION_SEMUN
11561 #ifndef HAS_UNION_SEMUN
11564 struct semid_ds *buf;
11565 unsigned short *array;
11571 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11572 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11574 struct semid_ds argbuf;
11577 st = semctl(sem, 0, IPC_STAT, arg);
11581 # endif /* IPC_STAT */
11582 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11584 if (semctl(sem, 0, IPC_RMID, arg) != 0)
11585 # endif /* IPC_RMID */
11586 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11588 #endif /* IPC_PRIVATE && ... */
11589 printf("semget failed: errno = %d\n", errno);
11595 if eval $compile; then
11598 semun) val="$define" ;;
11604 case "$d_semctl_semun" in
11606 echo "You can use union semun for semctl IPC_STAT." >&4
11609 *) echo "You cannot use union semun for semctl IPC_STAT." >&4
11614 : see whether semctl IPC_STAT can use struct semid_ds pointer
11615 $cat > try.c <<'END'
11616 #include <sys/types.h>
11617 #include <sys/ipc.h>
11618 #include <sys/sem.h>
11619 #include <sys/stat.h>
11627 struct semid_ds arg;
11630 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11631 sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11634 st = semctl(sem, 0, IPC_STAT, &arg);
11636 printf("semid_ds\n");
11638 # endif /* IPC_STAT */
11639 printf("semctl IPC_STAT failed: errno = %d\n", errno);
11641 if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11642 # endif /* IPC_RMID */
11643 printf("semctl IPC_RMID failed: errno = %d\n", errno);
11645 #endif /* IPC_PRIVATE && ... */
11646 printf("semget failed: errno = %d\n", errno);
11653 if eval $compile; then
11656 semid_ds) val="$define" ;;
11660 set d_semctl_semid_ds
11662 case "$d_semctl_semid_ds" in
11664 echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11666 *) echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11673 # We do not have the full sem*(2) library, so assume we can not
11679 set d_semctl_semid_ds
11684 : see if sendmsg exists
11685 set sendmsg d_sendmsg
11688 : see if setegid exists
11689 set setegid d_setegid
11692 : see if seteuid exists
11693 set seteuid d_seteuid
11696 : see if setgrent exists
11697 set setgrent d_setgrent
11700 : see if sethostent exists
11701 set sethostent d_sethent
11704 : see if setitimer exists
11705 set setitimer d_setitimer
11708 : see if setlinebuf exists
11709 set setlinebuf d_setlinebuf
11712 : see if setlocale exists
11713 set setlocale d_setlocale
11716 : see if setnetent exists
11717 set setnetent d_setnent
11720 : see if setprotoent exists
11721 set setprotoent d_setpent
11724 : see if setpgid exists
11725 set setpgid d_setpgid
11728 : see if setpgrp2 exists
11729 set setpgrp2 d_setpgrp2
11732 : see if setpriority exists
11733 set setpriority d_setprior
11736 : see if setproctitle exists
11737 set setproctitle d_setproctitle
11740 : see if setpwent exists
11741 set setpwent d_setpwent
11744 : see if setregid exists
11745 set setregid d_setregid
11747 set setresgid d_setresgid
11750 : see if setreuid exists
11751 set setreuid d_setreuid
11753 set setresuid d_setresuid
11756 : see if setrgid exists
11757 set setrgid d_setrgid
11760 : see if setruid exists
11761 set setruid d_setruid
11764 : see if setservent exists
11765 set setservent d_setsent
11768 : see if setsid exists
11769 set setsid d_setsid
11772 : see if setvbuf exists
11773 set setvbuf d_setvbuf
11776 : see if sfio.h is available
11781 : see if sfio library is available
11792 : Ok, but do we want to use it.
11796 true|$define|[yY]*) dflt='y';;
11799 echo "$package can use the sfio library, but it is experimental."
11800 case "$useperlio" in
11802 echo "For sfio also the PerlIO abstraction layer is needed."
11803 echo "Earlier you said you wouldn't want that."
11806 rp="You seem to have sfio available, do you want to try using it?"
11809 y|Y) echo "Ok, turning on both sfio and PerlIO, then."
11810 useperlio="$define"
11813 *) echo "Ok, avoiding sfio this time. I'll use stdio instead."
11818 *) case "$usesfio" in
11819 true|$define|[yY]*)
11820 echo "Sorry, cannot find sfio on this machine." >&4
11821 echo "Ignoring your setting of usesfio=$usesfio." >&4
11830 $define) usesfio='true';;
11831 *) usesfio='false';;
11835 *) : Remove sfio from list of libraries to use
11836 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11839 echo "libs = $libs" >&4
11844 : see if shmctl exists
11845 set shmctl d_shmctl
11848 : see if shmget exists
11849 set shmget d_shmget
11852 : see if shmat exists
11855 : see what shmat returns
11858 $cat >shmat.c <<'END'
11859 #include <sys/shm.h>
11862 if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11867 echo "and it returns ($shmattype)." >&4
11868 : see if a prototype for shmat is available
11869 xxx=`./findhdr sys/shm.h`
11870 $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11871 if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11882 set d_shmatprototype
11885 : see if shmdt exists
11889 : see how much of the 'shm*(2)' library is present.
11892 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11893 *"$undef"*) h_shm=false;;
11897 case "`ipcs 2>&1`" in
11898 "SVID shared memory"*"not configured"*)
11899 echo "Your $osname does not have the shm*(2) configured." >&4
11902 set shmctl d_shmctl
11904 set shmget d_shmget
11914 : we could also check for sys/ipc.h ...
11915 if $h_shm && $test `./findhdr sys/shm.h`; then
11916 echo "You have the full shm*(2) library." >&4
11919 echo "You don't have the full shm*(2) library." >&4
11926 : see if we have sigaction
11927 if set sigaction val -f d_sigaction; eval $csym; $val; then
11928 echo 'sigaction() found.' >&4
11929 $cat > try.c <<'EOP'
11931 #include <sys/types.h>
11932 #include <signal.h>
11935 struct sigaction act, oact;
11937 oact.sa_handler = 0;
11938 /* so that act and oact are used */
11939 exit(act.sa_flags == 0 && oact.sa_handler == 0);
11943 if eval $compile_ok; then
11946 echo "But you don't seem to have a useable struct sigaction." >&4
11950 echo 'sigaction NOT found.' >&4
11953 set d_sigaction; eval $setvar
11954 $rm -f try try$_o try.c
11956 : see if sigprocmask exists
11957 set sigprocmask d_sigprocmask
11960 : see if sigsetjmp exists
11962 case "$d_sigsetjmp" in
11964 $cat >try.c <<'EOP'
11965 #include <setjmp.h>
11970 if (sigsetjmp(env,1))
11973 siglongjmp(env, 1);
11978 if eval $compile; then
11979 if ./try >/dev/null 2>&1; then
11980 echo "POSIX sigsetjmp found." >&4
11984 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11990 echo "sigsetjmp not found." >&4
11994 *) val="$d_sigsetjmp"
11995 case "$d_sigsetjmp" in
11996 $define) echo "POSIX sigsetjmp found." >&4;;
11997 $undef) echo "sigsetjmp not found." >&4;;
12005 : see if sockatmark exists
12006 set sockatmark d_sockatmark
12009 : see if prototype for sockatmark is available
12011 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12014 : see if socks5_init exists
12015 set socks5_init d_socks5_init
12018 : see if prototype for setresgid is available
12020 set d_sresgproto setresgid $i_unistd unistd.h
12023 : see if prototype for setresuid is available
12025 set d_sresuproto setresuid $i_unistd unistd.h
12028 : see if sys/stat.h is available
12029 set sys/stat.h i_sysstat
12033 : see if stat knows about block sizes
12035 echo "Checking to see if your struct stat has st_blocks field..." >&4
12036 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12040 : see if this is a sys/vfs.h system
12041 set sys/vfs.h i_sysvfs
12045 : see if this is a sys/statfs.h system
12046 set sys/statfs.h i_sysstatfs
12051 echo "Checking to see if your system supports struct statfs..." >&4
12052 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
12054 case "$d_statfs_s" in
12055 "$define") echo "Yes, it does." ;;
12056 *) echo "No, it doesn't." ;;
12061 : see if struct statfs knows about f_flags
12062 case "$d_statfs_s" in
12065 echo "Checking to see if your struct statfs has f_flags field..." >&4
12066 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
12070 set d_statfs_f_flags
12074 case "$d_statfs_f_flags" in
12075 "$define") echo "Yes, it does." ;;
12076 *) echo "No, it doesn't." ;;
12079 : see if _ptr and _cnt from stdio act std
12082 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12083 echo "(Looks like you have stdio.h from BSD.)"
12084 case "$stdio_ptr" in
12085 '') stdio_ptr='((fp)->_p)'
12088 *) ptr_lval=$d_stdio_ptr_lval;;
12090 case "$stdio_cnt" in
12091 '') stdio_cnt='((fp)->_r)'
12094 *) cnt_lval=$d_stdio_cnt_lval;;
12096 case "$stdio_base" in
12097 '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12099 case "$stdio_bufsiz" in
12100 '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12102 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12103 echo "(Looks like you have stdio.h from Linux.)"
12104 case "$stdio_ptr" in
12105 '') stdio_ptr='((fp)->_IO_read_ptr)'
12108 *) ptr_lval=$d_stdio_ptr_lval;;
12110 case "$stdio_cnt" in
12111 '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12114 *) cnt_lval=$d_stdio_cnt_lval;;
12116 case "$stdio_base" in
12117 '') stdio_base='((fp)->_IO_read_base)';;
12119 case "$stdio_bufsiz" in
12120 '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12123 case "$stdio_ptr" in
12124 '') stdio_ptr='((fp)->_ptr)'
12127 *) ptr_lval=$d_stdio_ptr_lval;;
12129 case "$stdio_cnt" in
12130 '') stdio_cnt='((fp)->_cnt)'
12133 *) cnt_lval=$d_stdio_cnt_lval;;
12135 case "$stdio_base" in
12136 '') stdio_base='((fp)->_base)';;
12138 case "$stdio_bufsiz" in
12139 '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12143 : test whether _ptr and _cnt really work
12144 echo "Checking how std your stdio is..." >&4
12147 #define FILE_ptr(fp) $stdio_ptr
12148 #define FILE_cnt(fp) $stdio_cnt
12150 FILE *fp = fopen("try.c", "r");
12153 18 <= FILE_cnt(fp) &&
12154 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12162 if eval $compile; then
12164 echo "Your stdio acts pretty std."
12167 echo "Your stdio isn't very std."
12170 echo "Your stdio doesn't appear very std."
12176 : Can _ptr be used as an lvalue?
12177 case "$d_stdstdio$ptr_lval" in
12178 $define$define) val=$define ;;
12181 set d_stdio_ptr_lval
12184 : Can _cnt be used as an lvalue?
12185 case "$d_stdstdio$cnt_lval" in
12186 $define$define) val=$define ;;
12189 set d_stdio_cnt_lval
12193 : test whether setting _ptr sets _cnt as a side effect
12194 d_stdio_ptr_lval_sets_cnt="$undef"
12195 d_stdio_ptr_lval_nochange_cnt="$undef"
12196 case "$d_stdio_ptr_lval$d_stdstdio" in
12198 echo "Checking to see what happens if we set the stdio ptr..." >&4
12201 /* Can we scream? */
12202 /* Eat dust sed :-) */
12203 /* In the buffer space, no one can hear you scream. */
12204 #define FILE_ptr(fp) $stdio_ptr
12205 #define FILE_cnt(fp) $stdio_cnt
12206 #include <sys/types.h>
12208 FILE *fp = fopen("try.c", "r");
12213 puts("Fail even to read");
12216 c = getc(fp); /* Read away the first # */
12218 puts("Fail even to read");
12222 18 <= FILE_cnt(fp) &&
12223 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12225 puts("Fail even to read");
12228 ptr = (char*) FILE_ptr(fp);
12229 cnt = (size_t)FILE_cnt(fp);
12231 FILE_ptr(fp) += 42;
12233 if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12234 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12237 if (FILE_cnt(fp) <= 20) {
12238 printf ("Fail (<20 chars to test)");
12241 if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12242 puts("Fail compare");
12245 if (cnt == FILE_cnt(fp)) {
12246 puts("Pass_unchanged");
12249 if (FILE_cnt(fp) == (cnt - 42)) {
12250 puts("Pass_changed");
12253 printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12259 if eval $compile; then
12260 case `./try$exe_ext` in
12262 echo "Increasing ptr in your stdio decreases cnt by the same amount. Good." >&4
12263 d_stdio_ptr_lval_sets_cnt="$define" ;;
12265 echo "Increasing ptr in your stdio leaves cnt unchanged. Good." >&4
12266 d_stdio_ptr_lval_nochange_cnt="$define" ;;
12268 echo "Increasing ptr in your stdio didn't do exactly what I expected. We'll not be doing that then." >&4 ;;
12270 echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12273 echo "It seems we can't set ptr in your stdio. Nevermind." >&4
12279 : see if _base is also standard
12281 case "$d_stdstdio" in
12285 #define FILE_base(fp) $stdio_base
12286 #define FILE_bufsiz(fp) $stdio_bufsiz
12288 FILE *fp = fopen("try.c", "r");
12291 19 <= FILE_bufsiz(fp) &&
12292 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12299 if eval $compile; then
12301 echo "And its _base field acts std."
12304 echo "But its _base field isn't std."
12307 echo "However, it seems to be lacking the _base field."
12316 Checking how to access stdio streams by file descriptor number...
12318 case "$stdio_stream_array" in
12319 '') $cat >try.c <<EOCP
12322 if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12326 for s in _iob __iob __sF
12328 set try -DSTDIO_STREAM_ARRAY=$s
12329 if eval $compile; then
12330 case "`./try$exe_ext`" in
12331 yes) stdio_stream_array=$s; break ;;
12335 $rm -f try.* try$exe_ext
12337 case "$stdio_stream_array" in
12339 I can't figure out how to access stdio streams by file descriptor number.
12341 d_stdio_stream_array="$undef"
12344 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12346 d_stdio_stream_array="$define"
12350 : see if strcoll exists
12351 set strcoll d_strcoll
12354 : check for structure copying
12356 echo "Checking to see if your C compiler can copy structs..." >&4
12357 $cat >try.c <<'EOCP'
12367 if $cc -c try.c >/dev/null 2>&1 ; then
12369 echo "Yup, it can."
12372 echo "Nope, it can't."
12378 : see if strerror and/or sys_errlist[] exist
12380 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12381 if set strerror val -f d_strerror; eval $csym; $val; then
12382 echo 'strerror() found.' >&4
12383 d_strerror="$define"
12384 d_strerrm='strerror(e)'
12385 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12386 echo "(You also have sys_errlist[], so we could roll our own strerror.)"
12387 d_syserrlst="$define"
12389 echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12390 d_syserrlst="$undef"
12392 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12393 $contains '#[ ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12394 echo 'strerror() found in string header.' >&4
12395 d_strerror="$define"
12396 d_strerrm='strerror(e)'
12397 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12398 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12399 d_syserrlst="$define"
12401 echo "(You don't appear to have any sys_errlist[], how can this be?)"
12402 d_syserrlst="$undef"
12404 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12405 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12406 d_strerror="$undef"
12407 d_syserrlst="$define"
12408 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12410 echo 'strerror() and sys_errlist[] NOT found.' >&4
12411 d_strerror="$undef"
12412 d_syserrlst="$undef"
12413 d_strerrm='"unknown"'
12417 : see if strftime exists
12418 set strftime d_strftime
12421 : see if strtod exists
12422 set strtod d_strtod
12425 : see if strtol exists
12426 set strtol d_strtol
12429 : see if strtold exists
12430 set strtold d_strtold
12433 : see if strtoll exists
12434 set strtoll d_strtoll
12437 case "$d_longlong-$d_strtoll" in
12440 Checking whether your strtoll() works okay...
12442 $cat >try.c <<'EOCP'
12445 #define strtoll __strtoll
12448 #define strtoll _strtoll
12451 extern long long int strtoll(char *s, char **, int);
12452 static int bad = 0;
12453 int check(char *s, long long ell, int een) {
12456 gll = strtoll(s, 0, 10);
12457 if (!((gll == ell) && (errno == een)))
12461 check(" 1", 1LL, 0);
12462 check(" 0", 0LL, 0);
12463 check("-1", -1LL, 0);
12464 check("-9223372036854775808", -9223372036854775808LL, 0);
12465 check("-9223372036854775808", -9223372036854775808LL, 0);
12466 check(" 9223372036854775807", 9223372036854775807LL, 0);
12467 check("-9223372036854775808", -9223372036854775808LL, 0);
12468 check(" 9223372036854775808", 9223372036854775807LL, ERANGE);
12469 check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12475 if eval $compile; then
12478 ok) echo "Your strtoll() seems to be working okay." ;;
12480 Your strtoll() doesn't seem to be working okay.
12486 echo "(I can't seem to compile the test program--assuming it doesn't)"
12492 : see if strtoq exists
12493 set strtoq d_strtoq
12496 : see if strtoul exists
12497 set strtoul d_strtoul
12500 case "$d_strtoul" in
12503 Checking whether your strtoul() works okay...
12505 $cat >try.c <<'EOCP'
12508 extern unsigned long int strtoul(char *s, char **, int);
12509 static int bad = 0;
12510 void check(char *s, unsigned long eul, int een) {
12513 gul = strtoul(s, 0, 10);
12514 if (!((gul == eul) && (errno == een)))
12518 check(" 1", 1L, 0);
12519 check(" 0", 0L, 0);
12521 case "$longsize" in
12523 $cat >>try.c <<'EOCP'
12524 check("18446744073709551615", 18446744073709551615UL, 0);
12525 check("18446744073709551616", 18446744073709551615UL, ERANGE);
12526 #if 0 /* strtoul() for /^-/ strings is undefined. */
12527 check("-1", 18446744073709551615UL, 0);
12528 check("-18446744073709551614", 2, 0);
12529 check("-18446744073709551615", 1, 0);
12530 check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12531 check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12536 $cat >>try.c <<'EOCP'
12537 check("4294967295", 4294967295UL, 0);
12538 check("4294967296", 4294967295UL, ERANGE);
12539 #if 0 /* strtoul() for /^-/ strings is undefined. */
12540 check("-1", 4294967295UL, 0);
12541 check("-4294967294", 2, 0);
12542 check("-4294967295", 1, 0);
12543 check("-4294967296", 4294967295UL, ERANGE);
12544 check("-4294967297", 4294967295UL, ERANGE);
12549 : Should we write these tests to be more portable by sprintf-ing
12550 : ~0 and then manipulating that char string as input for strtol?
12553 $cat >>try.c <<'EOCP'
12560 if eval $compile; then
12562 ok) echo "Your strtoul() seems to be working okay." ;;
12564 Your strtoul() doesn't seem to be working okay.
12573 : see if strtoull exists
12574 set strtoull d_strtoull
12577 case "$d_longlong-$d_strtoull" in
12580 Checking whether your strtoull() works okay...
12582 $cat >try.c <<'EOCP'
12585 #define strtoull __strtoull
12588 extern unsigned long long int strtoull(char *s, char **, int);
12589 static int bad = 0;
12590 int check(char *s, long long eull, int een) {
12593 gull = strtoull(s, 0, 10);
12594 if (!((gull == eull) && (errno == een)))
12598 check(" 1", 1LL, 0);
12599 check(" 0", 0LL, 0);
12600 check("18446744073709551615", 18446744073709551615ULL, 0);
12601 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12602 #if 0 /* strtoull() for /^-/ strings is undefined. */
12603 check("-1", 18446744073709551615ULL, 0);
12604 check("-18446744073709551614", 2LL, 0);
12605 check("-18446744073709551615", 1LL, 0);
12606 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12607 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12614 if eval $compile; then
12616 ok) echo "Your strtoull() seems to be working okay." ;;
12618 Your strtoull() doesn't seem to be working okay.
12620 d_strtoull="$undef"
12627 : see if strtouq exists
12628 set strtouq d_strtouq
12631 case "$d_strtouq" in
12634 Checking whether your strtouq() works okay...
12636 $cat >try.c <<'EOCP'
12639 extern unsigned long long int strtouq(char *s, char **, int);
12640 static int bad = 0;
12641 void check(char *s, unsigned long long eull, int een) {
12642 unsigned long long gull;
12644 gull = strtouq(s, 0, 10);
12645 if (!((gull == eull) && (errno == een)))
12649 check(" 1", 1LL, 0);
12650 check(" 0", 0LL, 0);
12651 check("18446744073709551615", 18446744073709551615ULL, 0);
12652 check("18446744073709551616", 18446744073709551615ULL, ERANGE);
12653 #if 0 /* strtouq() for /^-/ strings is undefined. */
12654 check("-1", 18446744073709551615ULL, 0);
12655 check("-18446744073709551614", 2LL, 0);
12656 check("-18446744073709551615", 1LL, 0);
12657 check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12658 check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12666 if eval $compile; then
12668 ok) echo "Your strtouq() seems to be working okay." ;;
12670 Your strtouq() doesn't seem to be working okay.
12679 : see if strxfrm exists
12680 set strxfrm d_strxfrm
12683 : see if symlink exists
12684 set symlink d_symlink
12687 : see if syscall exists
12688 set syscall d_syscall
12691 : see if prototype for syscall is available
12693 set d_syscallproto syscall $i_unistd unistd.h
12696 : see if sysconf exists
12697 set sysconf d_sysconf
12700 : see if system exists
12701 set system d_system
12704 : see if tcgetpgrp exists
12705 set tcgetpgrp d_tcgetpgrp
12708 : see if tcsetpgrp exists
12709 set tcsetpgrp d_tcsetpgrp
12712 : see if prototype for telldir is available
12714 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
12717 : see if this is a sys/times.h system
12718 set sys/times.h i_systimes
12721 : see if times exists
12723 if set times val -f d_times; eval $csym; $val; then
12724 echo 'times() found.' >&4
12727 case "$i_systimes" in
12728 "$define") inc='sys/times.h';;
12730 rp="What is the type returned by times() on this system?"
12731 set clock_t clocktype long stdio.h sys/types.h $inc
12734 echo 'times() NOT found, hope that will do.' >&4
12739 : see if truncate exists
12740 set truncate d_truncate
12743 : see if tzname[] exists
12745 if set tzname val -a d_tzname; eval $csym; $val; then
12747 echo 'tzname[] found.' >&4
12750 echo 'tzname[] NOT found.' >&4
12755 case "$crosscompile" in
12756 ''|[nN]*) crosscompile="$undef" ;;
12760 next|rhapsody|darwin) multiarch="$define" ;;
12762 case "$multiarch" in
12763 ''|[nN]*) multiarch="$undef" ;;
12766 : check for ordering of bytes in a long
12768 case "$crosscompile$multiarch" in
12771 You seem to be either cross-compiling or doing a multiarchitecture build,
12772 skipping the byteorder check.
12778 case "$byteorder" in
12781 In the following, larger digits indicate more significance. A big-endian
12782 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12783 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12784 machines may have weird orders like 3412. A Cray will report 87654321,
12785 an Alpha will report 12345678. If the test program works the default is
12787 I'm now running the test program...
12789 $cat >try.c <<'EOCP'
12796 char c[sizeof(long)];
12799 if (sizeof(long) > 4)
12800 u.l = (0x08070605L << 32) | 0x04030201L;
12803 for (i = 0; i < sizeof(long); i++)
12804 printf("%c", u.c[i]+'0');
12811 if eval $compile && ./try > /dev/null; then
12814 [1-4][1-4][1-4][1-4]|12345678|87654321)
12815 echo "(The test program ran ok.)"
12816 echo "byteorder=$dflt"
12819 ????|????????) echo "(The test program ran ok.)" ;;
12820 *) echo "(The test program didn't run right for some reason.)" ;;
12825 (I can't seem to compile the test program. Guessing big-endian...)
12828 case "$xxx_prompt" in
12830 rp="What is the order of bytes in a long?"
12846 Checking to see whether you can access character data unalignedly...
12850 #define U32 $u32type
12851 #define BYTEORDER $byteorder
12853 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
12854 U8 buf[] = "\0\0\0\1\0\0\0\0";
12858 if (sizeof(U32) != 4) {
12859 printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
12865 for (i = 0; i < 4; i++) {
12866 up = (U32*)(buf + i);
12867 if (! ((*up == 1 << (8*i)) || /* big-endian */
12868 (*up == 1 << (8*(3-i))) /* little-endian */
12872 printf("read failed (%x)\n", *up);
12878 for (i = 0; i < 4; i++) {
12879 up = (U32*)(buf + i);
12881 if (*up != 0xBeef) {
12882 printf("write failed (%x)\n", *up);
12896 if eval $compile_ok; then
12897 echo "(Testign for character data alignment may dump core.)" >&4
12898 ./try 2>&1 >/dev/null
12901 You can access character data pretty unalignedly.
12903 d_u32align="$undef"
12906 It seems that you must access character data in an aligned manner.
12908 d_u32align="$define"
12911 $rm -f core core.try.* try.core
12913 rp='Can you access character data at unaligned addresses?'
12917 [yY]*) d_u32align="$undef" ;;
12918 *) d_u32align="$define" ;;
12922 : see if ualarm exists
12923 set ualarm d_ualarm
12926 : see if umask exists
12930 : see if usleep exists
12931 set usleep d_usleep
12934 : see if prototype for usleep is available
12936 set d_usleepproto usleep $i_unistd unistd.h
12939 : see if ustat exists
12943 : backward compatibility for d_hvfork
12944 if test X$d_hvfork != X; then
12945 d_vfork="$d_hvfork"
12948 : see if there is a vfork
12953 : Ok, but do we want to use it. vfork is reportedly unreliable in
12954 : perl on Solaris 2.x, and probably elsewhere.
12958 case "$usevfork" in
12964 Perl can only use a vfork() that doesn't suffer from strict
12965 restrictions on calling functions or modifying global data in
12966 the child. For example, glibc-2.1 contains such a vfork()
12967 that is unsuitable. If your system provides a proper fork()
12968 call, chances are that you do NOT want perl to use vfork().
12971 rp="Do you still want to use vfork()?"
12976 echo "Ok, we won't use vfork()."
12985 $define) usevfork='true';;
12986 *) usevfork='false';;
12989 : see if this is an sysdir system
12990 set sys/dir.h i_sysdir
12993 : see if this is an sysndir system
12994 set sys/ndir.h i_sysndir
12997 : see if closedir exists
12998 set closedir d_closedir
13001 case "$d_closedir" in
13004 echo "Checking whether closedir() returns a status..." >&4
13005 cat > closedir.c <<EOM
13006 #$i_dirent I_DIRENT /**/
13007 #$i_sysdir I_SYS_DIR /**/
13008 #$i_sysndir I_SYS_NDIR /**/
13009 #$i_systypes I_SYS_TYPES /**/
13011 #if defined(I_SYS_TYPES)
13012 #include <sys/types.h>
13014 #if defined(I_DIRENT)
13015 #include <dirent.h>
13016 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13017 #include <sys/dir.h>
13021 #include <sys/ndir.h>
13025 #include <ndir.h> /* may be wrong in the future */
13027 #include <sys/dir.h>
13032 int main() { return closedir(opendir(".")); }
13035 if eval $compile_ok; then
13036 if ./closedir > /dev/null 2>&1 ; then
13037 echo "Yes, it does."
13040 echo "No, it doesn't."
13044 echo "(I can't seem to compile the test program--assuming it doesn't)"
13052 set d_void_closedir
13055 : see if there is a wait4
13059 : see if waitpid exists
13060 set waitpid d_waitpid
13063 : see if wcstombs exists
13064 set wcstombs d_wcstombs
13067 : see if wctomb exists
13068 set wctomb d_wctomb
13071 : see if writev exists
13072 set writev d_writev
13075 : preserve RCS keywords in files with variable substitution, grrr
13080 Revision='$Revision'
13082 : check for alignment requirements
13084 case "$crosscompile$multiarch" in
13087 You seem to be either cross-compiling or doing a multiarchitecture build,
13088 skipping the memory alignment check.
13091 case "$alignbytes" in
13092 '') alignbytes=8 ;;
13096 case "$alignbytes" in
13097 '') echo "Checking alignment constraints..." >&4
13098 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13099 $cat >try.c <<'EOCP'
13100 typedef long double NV;
13103 $cat >try.c <<'EOCP'
13107 $cat >>try.c <<'EOCP'
13115 printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13120 if eval $compile_ok; then
13124 echo "(I can't seem to compile the test program...)"
13127 *) dflt="$alignbytes"
13130 rp="Doubles must be aligned on a how-many-byte boundary?"
13138 : set the base revision
13141 : how do we catenate cpp tokens here?
13143 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13144 $cat >cpp_stuff.c <<'EOCP'
13145 #define RCAT(a,b)a/**/b
13146 #define ACAT(a,b)a ## b
13150 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13151 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13152 echo "Oh! Smells like ANSI's been here." >&4
13153 echo "We can catify or stringify, separately or together!"
13155 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13156 echo "Ah, yes! The good old days!" >&4
13157 echo "However, in the good old days we don't know how to stringify and"
13158 echo "catify at the same time."
13162 Hmm, I don't seem to be able to catenate tokens with your cpp. You're going
13163 to have to edit the values of CAT[2-5] in config.h...
13165 cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13169 : see if this is a db.h system
13175 : Check db version.
13177 echo "Checking Berkeley DB version ..." >&4
13183 #include <sys/types.h>
13186 int main(int argc, char *argv[])
13188 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13189 int Major, Minor, Patch ;
13190 unsigned long Version ;
13191 (void)db_version(&Major, &Minor, &Patch) ;
13193 printf("%d %d %d %d %d %d\n",
13194 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13195 Major, Minor, Patch);
13198 printf("You have Berkeley DB Version 2 or greater.\n");
13200 printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13201 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13202 printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13203 Major, Minor, Patch) ;
13205 /* check that db.h & libdb are compatible */
13206 if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13207 printf("db.h and libdb are incompatible.\n") ;
13211 printf("db.h and libdb are compatible.\n") ;
13213 Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13214 + DB_VERSION_PATCH ;
13216 /* needs to be >= 2.3.4 */
13217 if (Version < 2003004) {
13218 /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13219 printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13225 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13230 printf("You have Berkeley DB Version 1.\n");
13231 exit(0); /* DB version < 2: the coast is clear. */
13233 exit(1); /* <db.h> not Berkeley DB? */
13239 if eval $compile_ok && ./try; then
13240 echo 'Looks OK.' >&4
13242 db_version_major=$1
13243 db_version_minor=$2
13244 db_version_patch=$3
13246 echo "I can't use Berkeley DB with your <db.h>. I'll disable Berkeley DB." >&4
13250 : Remove db from list of libraries to use
13251 echo "Removing unusable -ldb from library list" >&4
13252 set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13255 echo "libs = $libs" >&4
13265 : Check the return type needed for hash
13267 echo "Checking return type needed for hash for Berkeley DB ..." >&4
13273 #include <sys/types.h>
13276 #ifndef DB_VERSION_MAJOR
13277 u_int32_t hash_cb (ptr, size)
13285 info.hash = hash_cb;
13289 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13290 if $contains warning try.out >>/dev/null 2>&1 ; then
13293 db_hashtype='u_int32_t'
13296 : XXX Maybe we should just give up here.
13297 db_hashtype=u_int32_t
13299 echo "Help: I can't seem to compile the db test program." >&4
13300 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13303 echo "Your version of Berkeley DB uses $db_hashtype for hash."
13305 *) db_hashtype=u_int32_t
13310 : Check the return type needed for prefix
13312 echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13318 #include <sys/types.h>
13321 #ifndef DB_VERSION_MAJOR
13322 size_t prefix_cb (key1, key2)
13330 info.prefix = prefix_cb;
13334 if $cc $ccflags -c try.c >try.out 2>&1 ; then
13335 if $contains warning try.out >>/dev/null 2>&1 ; then
13336 db_prefixtype='int'
13338 db_prefixtype='size_t'
13341 db_prefixtype='size_t'
13342 : XXX Maybe we should just give up here.
13344 echo "Help: I can't seem to compile the db test program." >&4
13345 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13348 echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13350 *) db_prefixtype='size_t'
13355 : How can we generate normalized random numbers ?
13357 echo "Looking for a random number function..." >&4
13358 case "$randfunc" in
13360 if set drand48 val -f; eval $csym; $val; then
13362 echo "Good, found drand48()." >&4
13363 elif set random val -f; eval $csym; $val; then
13365 echo "OK, found random()." >&4
13368 echo "Yick, looks like I have to use rand()." >&4
13379 *-Dmy_rand=*|*-Dmy_srand=*)
13380 echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13381 ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13382 ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13383 ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13387 while $test "$cont"; do
13388 rp="Use which function to generate random numbers?"
13390 if $test "$ans" = "$dflt"; then
13396 if set $ans val -f; eval $csym; $val; then
13400 rp="I cannot find function $ans. Use that name anyway?"
13409 case "$randfunc" in
13411 drand01="drand48()"
13417 case "$randbits" in
13419 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13421 #$i_unistd I_UNISTD
13422 #$i_stdlib I_STDLIB
13425 # include <unistd.h>
13428 # include <stdlib.h>
13433 register unsigned long tmp;
13434 register unsigned long max = 0L;
13436 for (i = 1000; i; i--) {
13437 tmp = (unsigned long) $randfunc();
13438 if (tmp > max) max = tmp;
13440 for (i = 0; max; i++)
13446 if eval $compile_ok; then
13450 echo "(I can't seem to compile the test program...)"
13457 rp="How many bits does your $randfunc() function produce?"
13461 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13462 seedfunc="s$randfunc"
13463 randseedtype=unsigned
13467 rp="How many bits does your $randfunc() function produce?"
13470 seedfunc="s$randfunc"
13471 drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13472 if set $seedfunc val -f; eval $csym; $val; then
13473 echo "(Using $seedfunc() to seed random generator)"
13475 echo "(Warning: no $seedfunc() to seed random generator)"
13478 randseedtype=unsigned
13486 echo "Determining whether or not we are on an EBCDIC system..." >&4
13487 $cat >tebcdic.c <<'EOM'
13490 if ('M'==0xd4) return 0;
13497 if eval $compile_ok; then
13499 echo "You seem to speak EBCDIC." >&4
13502 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
13505 echo "I'm unable to compile the test program." >&4
13506 echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13508 $rm -f tebcdic.c tebcdic
13514 Checking how to flush all pending stdio output...
13516 # I only know how to find the first 32 possibly open files on SunOS.
13517 # See also hints/sunos_4_1.sh and util.c --AD
13519 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13521 $cat >>try.c <<EOCP
13523 #$i_unistd I_UNISTD
13525 # include <unistd.h>
13527 #$d_sysconf HAS_SYSCONF
13528 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13529 #ifdef HAS_STDIO_STREAM_ARRAY
13530 # define STDIO_STREAM_ARRAY $stdio_stream_array
13533 FILE* p = fopen("try.out", "w");
13537 # ifdef TRY_FPRINTF
13541 #ifdef TRY_FFLUSH_NULL
13544 #ifdef TRY_FFLUSH_ALL
13546 long open_max = -1;
13547 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13548 open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13550 # if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13551 open_max = sysconf(_SC_OPEN_MAX);
13554 open_max = FOPEN_MAX;
13557 open_max = OPEN_MAX;
13566 # ifdef HAS_STDIO_STREAM_ARRAY
13567 if (open_max > 0) {
13569 for (i = 0; i < open_max; i++)
13570 if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13571 STDIO_STREAM_ARRAY[i]._file < open_max &&
13572 STDIO_STREAM_ARRAY[i]._flag)
13573 fflush(&STDIO_STREAM_ARRAY[i]);
13581 : first we have to find out how _not_ to flush
13582 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13584 set try -DTRY_FPUTC
13585 if eval $compile; then
13587 ./try$exe_ext 2>/dev/null
13588 if $test ! -s try.out -a "X$?" = X42; then
13594 set try -DTRY_FPRINTF
13596 if eval $compile; then
13598 ./try$exe_ext 2>/dev/null
13599 if $test ! -s try.out -a "X$?" = X42; then
13600 output=-DTRY_FPRINTF
13606 : check for fflush NULL behaviour
13607 case "$fflushNULL" in
13608 '') set try -DTRY_FFLUSH_NULL $output
13609 if eval $compile; then
13611 ./try$exe_ext 2>/dev/null
13613 if $test -s try.out -a "X$code" = X42; then
13614 fflushNULL="`$cat try.out`"
13616 if $test "X$code" != X42; then
13618 (If this test failed, don't worry, we'll try another method shortly.)
13623 $rm -f core try.core core.try.*
13624 case "$fflushNULL" in
13626 Your fflush(NULL) works okay for output streams.
13627 Let's see if it clobbers input pipes...
13629 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13630 # bug that improperly flushes the input end of pipes. So we avoid the
13631 # autoflush on fork/system/exec support for now. :-(
13632 $cat >tryp.c <<EOCP
13635 main(int argc, char **argv)
13641 while ((i = getc(stdin)) != -1
13642 && (*bp++ = i) != '\n'
13643 && bp < &buf[1024])
13646 fprintf(stdout, "%s", buf);
13654 fflushNULL="$define"
13656 if eval $compile; then
13658 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13659 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13661 fflush(NULL) seems to behave okay with input streams.
13663 fflushNULL="$define"
13666 Ouch, fflush(NULL) clobbers input pipes! We will not use it.
13668 fflushNULL="$undef"
13671 $rm -f core tryp.c tryp.core core.tryp.*
13674 Your fflush(NULL) isn't working (contrary to ANSI C).
13676 fflushNULL="$undef"
13679 Cannot figure out whether your fflush(NULL) works or not.
13680 I'm assuming it doesn't (contrary to ANSI C).
13682 fflushNULL="$undef"
13686 $define|true|[yY]*)
13687 fflushNULL="$define"
13690 fflushNULL="$undef"
13693 : check explicit looping only if NULL did not work, and if the pipe
13694 : bug does not show up on an explicit flush too
13695 case "$fflushNULL" in
13697 $cat >tryp.c <<EOCP
13700 main(int argc, char **argv)
13706 while ((i = getc(stdin)) != -1
13707 && (*bp++ = i) != '\n'
13708 && bp < &buf[1024])
13711 fprintf(stdout, "%s", buf);
13720 if eval $compile; then
13722 $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
13723 if cmp tryp.c tryp.out >/dev/null 2>&1; then
13725 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
13727 : now check for fflushall behaviour
13728 case "$fflushall" in
13729 '') set try -DTRY_FFLUSH_ALL $output
13730 if eval $compile; then
13732 (Now testing the other method--but note that this also may fail.)
13735 ./try$exe_ext 2>/dev/null
13736 if $test -s try.out -a "X$?" = X42; then
13737 fflushall="`$cat try.out`"
13740 $rm -f core try.core core.try.*
13741 case "$fflushall" in
13743 Whew. Flushing explicitly all the stdio streams works.
13745 fflushall="$define"
13748 Sigh. Flushing explicitly all the stdio streams doesn't work.
13753 Cannot figure out whether flushing stdio streams explicitly works or not.
13754 I'm assuming it doesn't.
13760 "$define"|true|[yY]*)
13761 fflushall="$define"
13769 All is futile. Even fflush(stdin) clobbers input pipes!
13776 $rm -f core tryp.c tryp.core core.tryp.*
13778 *) fflushall="$undef"
13782 case "$fflushNULL$fflushall" in
13785 OK, I give up. I cannot figure out how to flush pending stdio output.
13786 We won't be flushing handles at all before fork/exec/popen.
13790 $rm -f try.* try$exe_ext
13792 : Store the full pathname to the ar program for use in the C program
13793 : Respect a hint or command line value for full_ar.
13798 : Store the full pathname to the sed program for use in the C program
13801 : see what type gids are declared as in the kernel
13803 echo "Looking for the type for group ids returned by getgid()."
13804 set gid_t gidtype xxx stdio.h sys/types.h
13808 xxx=`./findhdr sys/user.h`
13809 set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13811 unsigned) dflt="$1 $2" ;;
13815 *) dflt="$gidtype";;
13818 gid_t) echo "gid_t found." ;;
13819 *) rp="What is the type for group ids returned by getgid()?"
13827 *_t) zzz="$gidtype" ;;
13830 echo "Checking the size of $zzz..." >&4
13832 #include <sys/types.h>
13835 printf("%d\n", (int)sizeof($gidtype));
13840 if eval $compile_ok; then
13844 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13847 echo "Your $zzz is $gidsize bytes long."
13852 echo "(I can't compile the test program--guessing $gidsize.)" >&4
13858 *_t) zzz="$gidtype" ;;
13861 echo "Checking the sign of $zzz..." >&4
13863 #include <sys/types.h>
13874 if eval $compile; then
13878 echo "(I can't execute the test program--guessing unsigned.)" >&4
13882 1) echo "Your $zzz is unsigned." ;;
13883 -1) echo "Your $zzz is signed." ;;
13889 echo "(I can't compile the test program--guessing unsigned.)" >&4
13895 if $test X"$quadtype" != X; then
13897 echo "Checking how to print 64-bit integers..." >&4
13899 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13900 $cat >try.c <<'EOCP'
13901 #include <sys/types.h>
13904 int q = 12345678901;
13905 printf("%ld\n", q);
13909 if eval $compile; then
13910 yyy=`./try$exe_ext`
13913 sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13914 sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13915 echo "We will use %d."
13921 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13922 $cat >try.c <<'EOCP'
13923 #include <sys/types.h>
13926 long q = 12345678901;
13927 printf("%ld\n", q);
13931 if eval $compile; then
13932 yyy=`./try$exe_ext`
13935 sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13936 sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13937 echo "We will use %ld."
13943 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13944 $cat >try.c <<'EOCP'
13945 #include <sys/types.h>
13946 #include <inttypes.h>
13949 int64_t q = 12345678901;
13950 printf("%" PRId64 "\n", q);
13954 if eval $compile; then
13955 yyy=`./try$exe_ext`
13958 sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13959 sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13960 echo "We will use the C9X style."
13966 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13968 #include <sys/types.h>
13971 $quadtype q = 12345678901;
13972 printf("%Ld\n", q);
13976 if eval $compile; then
13977 yyy=`./try$exe_ext`
13980 sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13981 sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13982 echo "We will use %Ld."
13988 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13989 $cat >try.c <<'EOCP'
13990 #include <sys/types.h>
13993 long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13994 printf("%lld\n", q);
13998 if eval $compile; then
13999 yyy=`./try$exe_ext`
14002 sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14003 sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14004 echo "We will use the %lld style."
14010 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14012 #include <sys/types.h>
14015 $quadtype q = 12345678901;
14016 printf("%qd\n", q);
14020 if eval $compile; then
14021 yyy=`./try$exe_ext`
14024 sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14025 sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14026 echo "We will use %qd."
14032 if $test X"$sPRId64" = X; then
14033 echo "Cannot figure out how to print 64-bit integers." >&4
14041 '') d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef";
14042 d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef";
14044 *) d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define";
14045 d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define";
14051 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14053 if $test X"$ivsize" = X8; then
14054 ivdformat="$sPRId64"
14055 uvuformat="$sPRIu64"
14056 uvoformat="$sPRIo64"
14057 uvxformat="$sPRIx64"
14058 uvXUformat="$sPRIXU64"
14060 if $test X"$ivsize" = X"$longsize"; then
14067 if $test X"$ivsize" = X"$intsize"; then
14075 if $test X"$ivsize" = X"$shortsize"; then
14086 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14087 nveformat="$sPRIeldbl"
14088 nvfformat="$sPRIfldbl"
14089 nvgformat="$sPRIgldbl"
14090 nvEUformat="$sPRIEUldbl"
14091 nvFUformat="$sPRIFUldbl"
14092 nvGUformat="$sPRIGUldbl"
14102 case "$ivdformat" in
14103 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14110 $echo "Checking the format string to be used for gids..." >&4
14113 -1) if $test X"$gidsize" = X"$ivsize"; then
14114 gidformat="$ivdformat"
14116 if $test X"$gidsize" = X"$longsize"; then
14119 if $test X"$gidsize" = X"$intsize"; then
14122 if $test X"$gidsize" = X"$shortsize"; then
14129 *) if $test X"$gidsize" = X"$uvsize"; then
14130 gidformat="$uvuformat"
14132 if $test X"$gidsize" = X"$longsize"; then
14135 if $test X"$gidsize" = X"$intsize"; then
14138 if $test X"$gidsize" = X"$shortsize"; then
14147 : see if getgroups exists
14148 set getgroups d_getgrps
14151 : see if setgroups exists
14152 set setgroups d_setgrps
14156 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14158 case "$d_getgrps$d_setgrps" in
14160 case "$groupstype" in
14161 '') dflt="$gidtype" ;;
14162 *) dflt="$groupstype" ;;
14165 What type of pointer is the second argument to getgroups() and setgroups()?
14166 Usually this is the same as group ids, $gidtype, but not always.
14169 rp='What type pointer is the second argument to getgroups() and setgroups()?'
14173 *) groupstype="$gidtype";;
14177 echo "Checking if your $make program sets \$(MAKE)..." >&4
14178 case "$make_set_make" in
14180 $sed 's/^X //' > testmake.mak << 'EOF'
14182 X @echo 'maketemp="$(MAKE)"'
14184 case "`$make -f testmake.mak 2>/dev/null`" in
14185 *maketemp=*) make_set_make='#' ;;
14186 *) make_set_make="MAKE=$make" ;;
14188 $rm -f testmake.mak
14191 case "$make_set_make" in
14192 '#') echo "Yup, it does.";;
14193 *) echo "Nope, it doesn't.";;
14196 : see what type is used for mode_t
14197 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14198 set mode_t modetype int stdio.h sys/types.h
14201 : see if stdarg is available
14203 if $test `./findhdr stdarg.h`; then
14204 echo "<stdarg.h> found." >&4
14207 echo "<stdarg.h> NOT found." >&4
14211 : see if varags is available
14213 if $test `./findhdr varargs.h`; then
14214 echo "<varargs.h> found." >&4
14216 echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14219 : set up the varargs testing programs
14220 $cat > varargs.c <<EOP
14222 #include <stdarg.h>
14225 #include <varargs.h>
14229 int f(char *p, ...)
14243 p = va_arg(ap, char *);
14248 $cat > varargs <<EOP
14250 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14259 : now check which varargs header should be included
14264 if `./varargs I_STDARG`; then
14266 elif `./varargs I_VARARGS`; then
14271 if `./varargs I_VARARGS`; then
14278 echo "I could not find the definition for va_dcl... You have problems..." >&4
14279 val="$undef"; set i_stdarg; eval $setvar
14280 val="$undef"; set i_varargs; eval $setvar
14285 case "$i_varhdr" in
14287 val="$define"; set i_stdarg; eval $setvar
14288 val="$undef"; set i_varargs; eval $setvar
14291 val="$undef"; set i_stdarg; eval $setvar
14292 val="$define"; set i_varargs; eval $setvar
14295 echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14299 : see if we need va_copy
14301 case "$i_stdarg" in
14304 #include <stdarg.h>
14306 #$i_stdlib I_STDLIB
14308 #include <stdlib.h>
14310 #include <signal.h>
14313 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14315 return vfprintf(f, fmt, *valp);
14319 myvfprintf(FILE *f, const char *fmt, va_list val)
14321 return ivfprintf(f, fmt, &val);
14325 myprintf(char *fmt, ...)
14328 va_start(val, fmt);
14329 return myvfprintf(stdout, fmt, val);
14333 main(int ac, char **av)
14335 signal(SIGSEGV, exit);
14337 myprintf("%s%cs all right, then\n", "that", '\'');
14342 if eval $compile && ./try 2>&1 >/dev/null; then
14344 "that's all right, then")
14350 yes) echo "It seems that you don't need va_copy()." >&4
14351 need_va_copy="$undef"
14353 *) echo "It seems that va_copy() or similar will be needed." >&4
14354 need_va_copy="$define"
14357 $rm -f try.* core core.* *.core *.core.*
14359 *) echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14363 : define a fucntion to check prototypes
14364 $cat > protochk <<EOSH
14367 optimize="$optimize"
14369 prototype="$prototype"
14374 $cat >> protochk <<'EOSH'
14379 while test $# -ge 2; do
14381 $define) echo "#include <$2>" >> try.c ;;
14382 literal) echo "$2" >> try.c ;;
14386 test "$prototype" = "$define" && echo '#define CAN_PROTOTYPE' >> try.c
14387 cat >> try.c <<'EOCP'
14388 #ifdef CAN_PROTOTYPE
14389 #define _(args) args
14394 echo "$foo" >> try.c
14395 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14396 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14402 $eunicefix protochk
14404 : see what type is used for size_t
14405 rp="What is the type used for the length parameter for string functions?"
14406 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14409 : check for type of arguments to gethostbyaddr.
14410 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14411 case "$d_gethbyaddr" in
14415 Checking to see what type of arguments are accepted by gethostbyaddr().
14417 hdrs="$define sys/types.h
14418 $d_socket sys/socket.h
14419 $i_niin netinet/in.h
14421 $i_unistd unistd.h"
14422 : The first arg can 'char *' or 'void *'
14423 : The second arg is some of integral type
14424 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14425 for yyy in size_t long int; do
14426 case "$netdb_host_type" in
14427 '') try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14428 if ./protochk "$try" $hdrs; then
14429 echo "Your system accepts $xxx for the first arg."
14430 echo "...and $yyy for the second arg."
14431 netdb_host_type="$xxx"
14432 netdb_hlen_type="$yyy"
14438 : In case none of those worked, prompt the user.
14439 case "$netdb_host_type" in
14440 '') rp='What is the type for the 1st argument to gethostbyaddr?'
14443 netdb_host_type=$ans
14444 rp='What is the type for the 2nd argument to gethostbyaddr?'
14447 netdb_hlen_type=$ans
14451 *) : no gethostbyaddr, so pick harmless defaults
14452 netdb_host_type='char *'
14453 netdb_hlen_type="$sizetype"
14456 # Remove the "const" if needed. -- but then we'll have a
14458 # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14461 : check for type of argument to gethostbyname.
14462 if test "X$netdb_name_type" = X ; then
14463 case "$d_gethbyname" in
14467 Checking to see what type of argument is accepted by gethostbyname().
14469 hdrs="$define sys/types.h
14470 $d_socket sys/socket.h
14471 $i_niin netinet/in.h
14473 $i_unistd unistd.h"
14474 for xxx in "const char *" "char *"; do
14475 case "$netdb_name_type" in
14476 '') try="extern struct hostent *gethostbyname($xxx);"
14477 if ./protochk "$try" $hdrs; then
14478 echo "Your system accepts $xxx."
14479 netdb_name_type="$xxx"
14484 : In case none of those worked, prompt the user.
14485 case "$netdb_name_type" in
14486 '') rp='What is the type for the 1st argument to gethostbyname?'
14489 netdb_name_type=$ans
14493 *) : no gethostbyname, so pick harmless default
14494 netdb_name_type='char *'
14499 : check for type of 1st argument to getnetbyaddr.
14500 if test "X$netdb_net_type" = X ; then
14501 case "$d_getnbyaddr" in
14505 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14507 hdrs="$define sys/types.h
14508 $d_socket sys/socket.h
14509 $i_niin netinet/in.h
14511 $i_unistd unistd.h"
14512 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14513 case "$netdb_net_type" in
14514 '') try="extern struct netent *getnetbyaddr($xxx, int);"
14515 if ./protochk "$try" $hdrs; then
14516 echo "Your system accepts $xxx."
14517 netdb_net_type="$xxx"
14522 : In case none of those worked, prompt the user.
14523 case "$netdb_net_type" in
14524 '') rp='What is the type for the 1st argument to getnetbyaddr?'
14527 netdb_net_type=$ans
14531 *) : no getnetbyaddr, so pick harmless default
14532 netdb_net_type='long'
14536 : locate the preferred pager for this system
14542 [a-zA-Z]:/*) dflt=$pg;;
14546 [a-zA-Z]:/*) dflt=$more;;
14550 [a-zA-Z]:/*) dflt=$less;;
14553 '') dflt=/usr/ucb/more;;
14560 rp='What pager is used on your system?'
14564 : see what type pids are declared as in the kernel
14565 rp="What is the type of process ids on this system?"
14566 set pid_t pidtype int stdio.h sys/types.h
14569 : Find earliest binary compatible site_perl subdirectory perl can use.
14570 case "$bincompat5005" in
14571 "$define") xs_apiversion='5.005' ;;
14572 *) xs_apiversion=$version ;; # The current site_perl version.
14574 : Find earliest pure perl site_perl subdirectory perl can use.
14575 : The versioned directories started at 5.005.
14576 pm_apiversion='5.005'
14578 : see if ar generates random libraries by itself
14580 echo "Checking how to generate random libraries on your machine..." >&4
14581 echo 'int bar1() { return bar2(); }' > bar1.c
14582 echo 'int bar2() { return 2; }' > bar2.c
14583 $cat > foo.c <<'EOP'
14584 int main() { printf("%d\n", bar1()); exit(0); }
14586 $cc $ccflags -c bar1.c >/dev/null 2>&1
14587 $cc $ccflags -c bar2.c >/dev/null 2>&1
14588 $cc $ccflags -c foo.c >/dev/null 2>&1
14589 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14590 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14591 ./foobar >/dev/null 2>&1; then
14592 echo "$ar appears to generate random libraries itself."
14595 elif $ar ts bar$_a >/dev/null 2>&1 &&
14596 $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14597 ./foobar >/dev/null 2>&1; then
14598 echo "a table of contents needs to be added with '$ar ts'."
14605 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14606 $test -f $ranlib || ranlib=''
14609 if $test -n "$ranlib"; then
14610 echo "your system has '$ranlib'; we'll use that."
14613 echo "your system doesn't seem to support random libraries"
14614 echo "so we'll use lorder and tsort to order the libraries."
14621 : check for type of arguments to select.
14622 case "$selecttype" in
14623 '') case "$d_select" in
14627 Checking to see what type of arguments are accepted by select().
14629 hdrs="$define sys/types.h
14630 $i_systime sys/time.h
14631 $i_sysselct sys/select.h
14632 $d_socket sys/socket.h"
14633 : The first arg can be int, unsigned, or size_t
14634 : The last arg may or may not be 'const'
14636 : void pointer has been seen but using that
14637 : breaks the selectminbits test
14638 for xxx in 'fd_set *' 'int *'; do
14639 for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14640 for tmo in 'struct timeval *' 'const struct timeval *'; do
14642 '') try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14643 if ./protochk "$try" $hdrs; then
14644 echo "Your system accepts $xxx."
14653 '') rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14654 case "$d_fd_set" in
14655 $define) dflt="fd_set *" ;;
14664 *) : no select, so pick a harmless default
14671 : check for the select 'width'
14672 case "$selectminbits" in
14673 '') case "$d_select" in
14677 Checking to see on how many bits at a time your select() operates...
14680 #include <sys/types.h>
14682 #$i_systime I_SYS_TIME
14683 #$i_systimek I_SYS_TIME_KERNEL
14688 # ifdef I_SYS_TIME_KERNEL
14691 # include <sys/time.h>
14692 # ifdef I_SYS_TIME_KERNEL
14696 #$i_sysselct I_SYS_SELECT
14697 #ifdef I_SYS_SELECT
14698 #include <sys/select.h>
14700 #$d_socket HAS_SOCKET
14702 # include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
14706 #define S sizeof(*(b))
14708 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
14709 #define NBITS (NBYTES * 8)
14718 fp = fopen("try.c", "r");
14724 b = ($selecttype)s;
14725 for (i = 0; i < NBITS; i++)
14729 select(fd + 1, b, 0, 0, &t);
14730 for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
14731 printf("%d\n", i + 1);
14736 if eval $compile_ok; then
14737 selectminbits=`./try`
14738 case "$selectminbits" in
14740 Cannot figure out on how many bits at a time your select() operates.
14741 I'll play safe and guess it is 32 bits.
14747 *) bits="$selectminbits bits" ;;
14749 echo "Your select() operates on $bits at a time." >&4
14751 rp='What is the minimum number of bits your select() operates on?'
14752 case "$byteorder" in
14753 1234|12345678) dflt=32 ;;
14758 selectminbits="$val"
14762 *) : no select, so pick a harmless default
14769 : Trace out the files included by signal.h, then look for SIGxxx names.
14770 : Remove SIGARRAYSIZE used by HPUX.
14771 : Remove SIGSTKSIZE used by Linux.
14772 : Remove SIGSTKSZ used by Posix.
14773 : Remove SIGTYP void lines used by OS2.
14774 : Some cpps, like os390, dont give the file name anywhere
14775 if [ "X$fieldn" = X ]; then
14776 : Just make some guesses. We check them later.
14777 xxx='/usr/include/signal.h /usr/include/sys/signal.h'
14779 xxx=`echo '#include <signal.h>' |
14780 $cppstdin $cppminus $cppflags 2>/dev/null |
14781 $grep '^[ ]*#.*include' |
14782 $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
14784 : Check this list of files to be sure we have parsed the cpp output ok.
14785 : This will also avoid potentially non-existent files, such
14788 for xx in $xxx /dev/null ; do
14789 $test -f "$xx" && xxxfiles="$xxxfiles $xx"
14791 : If we have found no files, at least try signal.h
14792 case "$xxxfiles" in
14793 '') xxxfiles=`./findhdr signal.h` ;;
14796 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
14797 print substr($2, 4, 20)
14799 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
14800 print substr($3, 4, 20)
14802 : Append some common names just in case the awk scan failed.
14803 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
14804 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
14805 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
14806 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
14807 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
14809 : generate a few handy files for later
14810 $cat > signal.c <<'EOCP'
14811 #include <sys/types.h>
14812 #include <signal.h>
14816 /* Strange style to avoid deeply-nested #if/#else/#endif */
14819 # define NSIG (_NSIG)
14825 # define NSIG (SIGMAX+1)
14831 # define NSIG (SIG_MAX+1)
14837 # define NSIG (MAXSIG+1)
14843 # define NSIG (MAX_SIG+1)
14848 # ifdef SIGARRAYSIZE
14849 # define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
14855 # define NSIG (_sys_nsig) /* Solaris 2.5 */
14859 /* Default to some arbitrary number that's big enough to get most
14860 of the common signals.
14866 printf("NSIG %d\n", NSIG);
14872 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
14874 printf "#ifdef SIG"; printf $1; printf "\n"
14875 printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
14876 printf $1; printf ");\n"
14880 printf "#endif /* JUST_NSIG */\n";
14881 printf "exit(0);\n}\n";
14884 $cat >signal.awk <<'EOP'
14885 BEGIN { ndups = 0 }
14886 $1 ~ /^NSIG$/ { nsig = $2 }
14887 ($1 !~ /^NSIG$/) && (NF == 2) {
14888 if ($2 > maxsig) { maxsig = $2 }
14889 if (sig_name[$2]) {
14890 dup_name[ndups] = $1
14891 dup_num[ndups] = $2
14903 printf("NSIG %d\n", nsig);
14904 for (n = 1; n < nsig; n++) {
14906 printf("%s %d\n", sig_name[n], sig_num[n])
14909 printf("NUM%d %d\n", n, n)
14912 for (n = 0; n < ndups; n++) {
14913 printf("%s %d\n", dup_name[n], dup_num[n])
14917 $cat >signal_cmd <<EOS
14919 if $test -s signal.lst; then
14920 echo "Using your existing signal.lst file"
14925 $cat >>signal_cmd <<'EOS'
14928 if eval $compile_ok; then
14929 ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14931 echo "(I can't seem be able to compile the whole test program)" >&4
14932 echo "(I'll try it in little pieces.)" >&4
14933 set signal -DJUST_NSIG
14934 if eval $compile_ok; then
14935 ./signal$_exe > signal.nsg
14938 echo "I can't seem to figure out how many signals you have." >&4
14939 echo "Guessing 50." >&4
14940 echo 'NSIG 50' > signal.nsg
14942 : Now look at all the signal names, one at a time.
14943 for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14944 $cat > signal.c <<EOCP
14945 #include <sys/types.h>
14946 #include <signal.h>
14949 printf("$xx %d\n", SIG${xx});
14954 if eval $compile; then
14955 echo "SIG${xx} found."
14956 ./signal$_exe >> signal.ls1
14958 echo "SIG${xx} NOT found."
14961 if $test -s signal.ls1; then
14962 $cat signal.nsg signal.ls1 |
14963 $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14967 if $test -s signal.lst; then
14970 echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14971 echo 'kill -l' >signal
14972 set X `csh -f <signal`
14976 0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14978 echo $@ | $tr ' ' $trnl | \
14979 $awk '{ printf "%s %d\n", $1, ++s; }
14980 END { printf "NSIG %d\n", ++s }' >signal.lst
14982 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14984 chmod a+x signal_cmd
14985 $eunicefix signal_cmd
14987 : generate list of signal names
14989 case "$sig_name_init" in
14991 *) case "$sig_num_init" in
14992 ''|*,*) doinit=yes ;;
14997 echo "Generating a list of signal names and numbers..." >&4
14999 sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15000 sig_name=`$awk 'BEGIN { printf "ZERO " }
15001 !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15002 sig_num=`$awk 'BEGIN { printf "0 " }
15003 !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15004 sig_name_init=`$awk 'BEGIN { printf "\"ZERO\", " }
15005 !/^NSIG/ { printf "\"%s\", ", $1 }
15006 END { printf "0\n" }' signal.lst`
15007 sig_num_init=`$awk 'BEGIN { printf "0, " }
15008 !/^NSIG/ { printf "%d, ", $2}
15009 END { printf "0\n"}' signal.lst`
15012 echo "The following $sig_count signals are available:"
15014 echo $sig_name | $awk \
15015 'BEGIN { linelen = 0 }
15017 for (i = 1; i <= NF; i++) {
15018 name = "SIG" $i " "
15019 linelen = linelen + length(name)
15020 if (linelen > 70) {
15022 linelen = length(name)
15028 sig_size=`echo $sig_name | awk '{print NF}'`
15029 $rm -f signal signal.c signal.awk signal.lst signal_cmd
15032 case "$sizetype" in
15033 *_t) zzz="$sizetype" ;;
15034 *) zzz="filesize" ;;
15036 echo "Checking the size of $zzz..." >&4
15038 #include <sys/types.h>
15041 printf("%d\n", (int)sizeof($sizetype));
15046 if eval $compile_ok; then
15050 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15053 echo "Your $zzz size is $sizesize bytes."
15058 echo "(I can't compile the test program--guessing $sizesize.)" >&4
15062 : check for socklen_t
15064 echo "Checking to see if you have socklen_t..." >&4
15066 #include <sys/types.h>
15067 #$d_socket HAS_SOCKET
15069 #include <sys/socket.h>
15071 int main() { socklen_t x = 16; }
15074 if eval $compile; then
15076 echo "You have socklen_t."
15079 echo "You do not have socklen_t."
15080 case "$sizetype" in
15081 size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15088 : see if this is a socks.h system
15089 set socks.h i_socks
15092 : check for type of the size argument to socket calls
15093 case "$d_socket" in
15097 Checking to see what type is the last argument of accept().
15100 case "$d_socklen_t" in
15101 "$define") yyy="$yyy socklen_t"
15103 yyy="$yyy $sizetype int long unsigned"
15104 for xxx in $yyy; do
15105 case "$socksizetype" in
15106 '') try="extern int accept(int, struct sockaddr *, $xxx *);"
15107 case "$usesocks" in
15109 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15110 echo "Your system accepts '$xxx *' for the last argument of accept()."
15111 socksizetype="$xxx"
15114 *) if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h; then
15115 echo "Your system accepts '$xxx *' for the last argument of accept()."
15116 socksizetype="$xxx"
15123 : In case none of those worked, prompt the user.
15124 case "$socksizetype" in
15125 '') rp='What is the type for socket address structure sizes?'
15132 *) : no sockets, so pick relatively harmless default
15137 : see what type is used for signed size_t
15138 set ssize_t ssizetype int stdio.h sys/types.h
15141 $cat > ssize.c <<EOM
15143 #include <sys/types.h>
15144 #define Size_t $sizetype
15145 #define SSize_t $dflt
15148 if (sizeof(Size_t) == sizeof(SSize_t))
15150 else if (sizeof(Size_t) == sizeof(int))
15159 if eval $compile_ok && ./ssize > /dev/null; then
15160 ssizetype=`./ssize`
15161 echo "I'll be using $ssizetype for functions returning a byte count." >&4
15164 Help! I can't compile and run the ssize_t test program: please enlighten me!
15165 (This is probably a misconfiguration in your system or libraries, and
15166 you really ought to fix it. Still, I'll try anyway.)
15168 I need a type that is the same size as $sizetype, but is guaranteed to
15169 be signed. Common values are ssize_t, int and long.
15172 rp="What signed type is the same size as $sizetype?"
15176 $rm -f ssize ssize.*
15178 : see what type of char stdio uses.
15180 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15181 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15182 echo "Your stdio uses unsigned chars." >&4
15183 stdchar="unsigned char"
15185 echo "Your stdio uses signed chars." >&4
15192 : see if time exists
15194 if test "X$d_time" = X -o X"$timetype" = X; then
15195 if set time val -f d_time; eval $csym; $val; then
15196 echo 'time() found.' >&4
15198 rp="What is the type returned by time() on this system?"
15199 set time_t timetype long stdio.h sys/types.h
15202 echo 'time() not found, hope that will do.' >&4
15210 : see what type uids are declared as in the kernel
15212 echo "Looking for the type for user ids returned by getuid()."
15213 set uid_t uidtype xxx stdio.h sys/types.h
15217 xxx=`./findhdr sys/user.h`
15218 set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15220 unsigned) dflt="$1 $2" ;;
15224 *) dflt="$uidtype";;
15227 uid_t) echo "uid_t found." ;;
15228 *) rp="What is the type for user ids returned by getuid()?"
15236 *_t) zzz="$uidtype" ;;
15239 echo "Checking the size of $zzz..." >&4
15241 #include <sys/types.h>
15244 printf("%d\n", (int)sizeof($uidtype));
15249 if eval $compile_ok; then
15253 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15256 echo "Your $zzz is $uidsize bytes long."
15261 echo "(I can't compile the test program--guessing $uidsize.)" >&4
15266 *_t) zzz="$uidtype" ;;
15269 echo "Checking the sign of $zzz..." >&4
15271 #include <sys/types.h>
15282 if eval $compile; then
15286 echo "(I can't execute the test program--guessing unsigned.)" >&4
15290 1) echo "Your $zzz is unsigned." ;;
15291 -1) echo "Your $zzz is signed." ;;
15297 echo "(I can't compile the test program--guessing unsigned.)" >&4
15303 $echo "Checking the format string to be used for uids..." >&4
15306 -1) if $test X"$uidsize" = X"$ivsize"; then
15307 uidformat="$ivdformat"
15309 if $test X"$uidsize" = X"$longsize"; then
15312 if $test X"$uidsize" = X"$intsize"; then
15315 if $test X"$uidsize" = X"$shortsize"; then
15322 *) if $test X"$uidsize" = X"$uvsize"; then
15323 uidformat="$uvuformat"
15325 if $test X"$uidsize" = X"$longsize"; then
15328 if $test X"$uidsize" = X"$intsize"; then
15331 if $test X"$uidsize" = X"$shortsize"; then
15340 : determine compiler compiler
15349 if $test -f "$byacc"; then
15351 comp="byacc or $comp"
15353 if $test -f "$bison"; then
15354 comp="$comp or bison -y"
15356 rp="Which compiler compiler ($comp) shall I use?"
15365 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15371 : see if fcntl.h is there
15376 : see if we can include fcntl.h
15382 echo "We'll be including <fcntl.h>." >&4
15385 if $h_sysfile; then
15386 echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15388 echo "We won't be including <fcntl.h>." >&4
15400 : see if this is a iconv.h system
15401 set iconv.h i_iconv
15404 : see if this is a ieeefp.h system
15405 set ieeefp.h i_ieeefp
15408 : see if this is a libutil.h system
15409 set libutil.h i_libutil
15412 : see if locale.h is available
15413 set locale.h i_locale
15416 : see if mach cthreads are available
15417 if test "X$usethreads" = "X$define"; then
15418 set mach/cthreads.h i_machcthr
15421 i_machcthr="$undef"
15426 : see if this is a math.h system
15430 : see if this is a mntent.h system
15431 set mntent.h i_mntent
15434 : see if ndbm.h is available
15439 : see if dbm_open exists
15440 set dbm_open d_dbm_open
15442 case "$d_dbm_open" in
15445 echo "We won't be including <ndbm.h>"
15454 : see if net/errno.h is available
15456 set net/errno.h val
15459 : Unfortunately, it causes problems on some systems. Arrgh.
15462 cat > try.c <<'EOM'
15465 #include <net/errno.h>
15471 if $cc $ccflags -c try.c >/dev/null 2>&1; then
15472 echo "We'll be including <net/errno.h>." >&4
15474 echo "We won't be including <net/errno.h>." >&4
15483 : see if netinet/tcp.h is available
15484 set netinet/tcp.h i_netinettcp
15487 : see if this is a poll.h system
15491 : see if this is a prot.h system
15496 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4
15497 $cat <<'EOSH' > Cppsym.know
15498 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15499 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15500 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15501 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15502 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15503 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15504 bull c cadmus clipper CMU COFF COMPILER_VERSION
15505 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15506 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15507 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15508 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15509 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15510 H3050R H3050RX hbullx20 hcx host_mips
15511 hp200 hp300 hp700 HP700 hp800 hp9000
15512 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15513 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15514 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15515 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15516 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15517 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15518 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15519 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15520 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15521 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15522 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15523 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15524 MATH_HAS_NO_SIDE_EFFECTS
15525 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15526 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15527 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15528 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15529 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15530 NetBSD news1500 news1700 news1800 news1900 news3700
15531 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15532 ns32016 ns32332 ns32k nsc32000
15533 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15534 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15535 pc532 pdp11 PGC PIC plexus PORTAR posix
15536 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15537 POSIX_C_SOURCE POSIX_SOURCE POWER
15538 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15539 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15540 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15541 sony sony_news sonyrisc sparc sparclite spectrum
15542 stardent stdc STDC_EXT stratos sun sun3 sun386
15543 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15544 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15545 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15546 sysV68 sysV88 Tek4132 Tek4300 titan
15547 TM3200 TM5400 TM5600
15548 tower tower32 tower32_200 tower32_600 tower32_700
15549 tower32_800 tower32_850 tss
15550 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15551 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15552 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15553 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15554 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15555 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15558 # Maybe put other stuff here too.
15559 cat <<EOSH >>Cppsym.know
15562 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15563 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15564 $cat Cppsym.know > Cppsym.c
15565 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15566 $rm -f Cppsym.a Cppsym.b Cppsym.c
15567 cat <<EOSH > Cppsym
15569 if $test \$# -gt 0; then
15570 echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15571 if $test -s Cppsym.got; then
15578 $tr " " "$trnl" | ./Cppsym.try
15584 cat <<EOSH > Cppsym.try
15586 cat <<'EOCP' > try.c
15592 cat <<'EOSH' >> Cppsym.try
15594 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
15595 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
15596 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
15597 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
15599 echo 'return 0;}' >> try.c
15601 cat <<EOSH >> Cppsym.try
15603 case "$osname-$gccversion" in
15604 irix-) ccflags="\$ccflags -woff 1178" ;;
15605 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15607 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
15609 chmod +x Cppsym.try
15610 $eunicefix Cppsym.try
15611 ./Cppsym < Cppsym.know > Cppsym.true
15612 : now check the C compiler for additional symbols
15613 postprocess_cc_v=''
15615 aix) postprocess_cc_v="|$tr , ' '" ;;
15622 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15625 -D*) echo "\$i" | $sed 's/^-D//';;
15626 -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15631 postprocess_cc_v=''
15634 ./ccsym > ccsym1.raw
15635 if $test -s ccsym1.raw; then
15636 $sort ccsym1.raw | $uniq >ccsym.raw
15638 mv ccsym1.raw ccsym.raw
15641 $awk '/\=/ { print $0; next }
15642 { print $0"=1" }' ccsym.raw >ccsym.list
15643 $awk '/\=/ { print $0; next }
15644 { print $0"=1" }' Cppsym.true >ccsym.true
15645 $comm -13 ccsym.true ccsym.list >ccsym.own
15646 $comm -12 ccsym.true ccsym.list >ccsym.com
15647 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15649 if $test -z ccsym.raw; then
15650 echo "Your C compiler doesn't seem to define any symbols!" >&4
15652 echo "However, your C preprocessor defines the following symbols:"
15655 cppsymbols=`$cat Cppsym.true`
15656 cppsymbols=`echo $cppsymbols`
15657 cppccsymbols="$cppsymbols"
15659 if $test -s ccsym.com; then
15660 echo "Your C compiler and pre-processor define these symbols:"
15661 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15664 cppccsymbols=`$cat ccsym.com`
15665 cppccsymbols=`echo $cppccsymbols`
15666 $test "$silent" || sleep 1
15668 if $test -s ccsym.cpp; then
15669 $test "$also" && echo " "
15670 echo "Your C pre-processor ${also}defines the following symbols:"
15671 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15673 cppsymbols=`$cat ccsym.cpp`
15674 cppsymbols=`echo $cppsymbols`
15675 $test "$silent" || sleep 1
15677 if $test -s ccsym.own; then
15678 $test "$also" && echo " "
15679 echo "Your C compiler ${also}defines the following cpp symbols:"
15680 $sed -e 's/\(..*\)=1/\1/' ccsym.own
15681 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
15682 ccsymbols=`$cat ccsym.own`
15683 ccsymbols=`echo $ccsymbols`
15684 $test "$silent" || sleep 1
15687 $rm -f ccsym* Cppsym.*
15689 : see if this is a termio system
15693 if $test `./findhdr termios.h`; then
15694 set tcsetattr i_termios
15700 "$define") echo "You have POSIX termios.h... good!" >&4;;
15701 *) if ./Cppsym pyr; then
15702 case "`/bin/universe`" in
15703 ucb) if $test `./findhdr sgtty.h`; then
15705 echo "<sgtty.h> found." >&4
15707 echo "System is pyramid with BSD universe."
15708 echo "<sgtty.h> not found--you could have problems." >&4
15710 *) if $test `./findhdr termio.h`; then
15712 echo "<termio.h> found." >&4
15714 echo "System is pyramid with USG universe."
15715 echo "<termio.h> not found--you could have problems." >&4
15719 if $test `./findhdr termio.h`; then
15720 echo "<termio.h> found." >&4
15722 elif $test `./findhdr sgtty.h`; then
15723 echo "<sgtty.h> found." >&4
15726 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
15729 if $test `./findhdr sgtty.h`; then
15730 echo "<sgtty.h> found." >&4
15732 elif $test `./findhdr termio.h`; then
15733 echo "<termio.h> found." >&4
15736 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
15740 set i_termio; eval $setvar
15741 val=$val2; set i_sgtty; eval $setvar
15742 val=$val3; set i_termios; eval $setvar
15744 : see if this is a shadow.h system
15745 set shadow.h i_shadow
15748 : see if stddef is available
15749 set stddef.h i_stddef
15752 : see if this is a sunmath.h system
15753 set sunmath.h i_sunmath
15756 : see if sys/access.h is available
15757 set sys/access.h i_sysaccess
15760 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
15761 set sys/filio.h i_sysfilio
15764 if $test `./findhdr sys/ioctl.h`; then
15766 echo '<sys/ioctl.h> found.' >&4
15769 if $test $i_sysfilio = "$define"; then
15770 echo '<sys/ioctl.h> NOT found.' >&4
15772 $test $i_sgtty = "$define" && xxx="sgtty.h"
15773 $test $i_termio = "$define" && xxx="termio.h"
15774 $test $i_termios = "$define" && xxx="termios.h"
15775 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
15781 : see if socket ioctl defs are in sys/sockio.h
15783 xxx=`./findhdr sys/sockio.h`
15784 if $test "$xxx"; then
15785 if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
15787 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
15790 echo "No socket ioctls found in <sys/sockio.h>." >&4
15795 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
15802 : see if this is a syslog.h system
15803 set syslog.h i_syslog
15807 : see if this is a sys/mode.h system
15808 set sys/mode.h i_sysmode
15811 : see if sys/resource.h has to be included
15812 set sys/resource.h i_sysresrc
15815 : see if sys/security.h is available
15816 set sys/security.h i_syssecrt
15819 : see if this is a sys/statvfs.h system
15820 set sys/statvfs.h i_sysstatvfs
15823 : see if this is a sys/un.h system
15824 set sys/un.h i_sysun
15828 : see if this is a sys/utsname.h system
15829 set sys/utsname.h i_sysutsname
15832 : see if this is a syswait system
15833 set sys/wait.h i_syswait
15836 : see if this is a ustat.h system
15837 set ustat.h i_ustat
15840 : see if this is an utime system
15841 set utime.h i_utime
15844 : see if this is a values.h system
15845 set values.h i_values
15848 : see if this is a vfork system
15851 set vfork.h i_vfork
15859 : see if gdbm.h is available
15864 : see if gdbm_open exists
15865 set gdbm_open d_gdbm_open
15867 case "$d_gdbm_open" in
15870 echo "We won't be including <gdbm.h>"
15880 echo "Looking for extensions..." >&4
15881 : If we are using the old config.sh, known_extensions may contain
15882 : old or inaccurate or duplicate values.
15883 known_extensions=''
15884 nonxs_extensions=''
15885 : We do not use find because it might not be available.
15886 : We do not just use MANIFEST because the user may have dropped
15887 : some additional extensions into the source tree and expect them
15890 : Function to recursively find available extensions, ignoring DynaLoader
15891 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15895 DynaLoader|dynaload) ;;
15897 if $test -f $xxx/$xxx.xs; then
15898 known_extensions="$known_extensions $1$xxx";
15899 elif $test -f $xxx/Makefile.PL; then
15900 nonxs_extensions="$nonxs_extensions $1$xxx";
15902 if $test -d $xxx -a $# -lt 10; then
15905 eval $find_extensions;
15917 eval $find_extensions
15918 set X $nonxs_extensions
15920 nonxs_extensions="$*"
15921 set X $known_extensions
15923 known_extensions="$*"
15926 : Now see which are supported on this system.
15928 for xxx in $known_extensions ; do
15932 $define) avail_ext="$avail_ext $xxx" ;;
15935 GDBM_File|gdbm_fil)
15937 $define) avail_ext="$avail_ext $xxx" ;;
15940 NDBM_File|ndbm_fil)
15943 case "$osname-$use64bitint" in
15946 *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15949 *) avail_ext="$avail_ext $xxx" ;;
15954 ODBM_File|odbm_fil)
15955 case "${i_dbm}${i_rpcsvcdbm}" in
15957 case "$osname-$use64bitint" in
15960 *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15963 *) avail_ext="$avail_ext $xxx" ;;
15969 case "$useposix" in
15970 true|define|y) avail_ext="$avail_ext $xxx" ;;
15974 case "$useopcode" in
15975 true|define|y) avail_ext="$avail_ext $xxx" ;;
15979 case "$d_socket" in
15980 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15983 Sys/Syslog|sys/syslog)
15984 : XXX syslog requires socket
15985 case "$d_socket" in
15986 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15990 case "$usethreads" in
15992 case "$useithreads" in
15993 $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
15998 : XXX Do we need a useipcsysv variable here
15999 case "${d_msg}${d_sem}${d_shm}" in
16000 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16003 *) avail_ext="$avail_ext $xxx"
16012 : Now see which nonxs extensions are supported on this system.
16013 : For now assume all are.
16015 for xxx in $nonxs_extensions ; do
16017 *) nonxs_ext="$nonxs_ext $xxx"
16029 A number of extensions are supplied with $package. You may choose to
16030 compile these extensions for dynamic loading (the default), compile
16031 them into the $package executable (static loading), or not include
16032 them at all. Answer "none" to include no extensions.
16033 Note that DynaLoader is always built and need not be mentioned here.
16036 case "$dynamic_ext" in
16037 '') dflt="$avail_ext" ;;
16038 *) dflt="$dynamic_ext"
16039 # Perhaps we are reusing an old out-of-date config.sh.
16042 if test X"$dynamic_ext" != X"$avail_ext"; then
16044 NOTICE: Your previous config.sh list may be incorrect.
16045 The extensions now available to you are
16047 but the default list from your previous config.sh is
16059 rp="What extensions do you wish to load dynamically?"
16062 none) dynamic_ext=' ' ;;
16063 *) dynamic_ext="$ans" ;;
16066 case "$static_ext" in
16068 : Exclude those already listed in dynamic linking
16070 for xxx in $avail_ext; do
16071 case " $dynamic_ext " in
16073 *) dflt="$dflt $xxx" ;;
16080 *) dflt="$static_ext"
16087 rp="What extensions do you wish to load statically?"
16090 none) static_ext=' ' ;;
16091 *) static_ext="$ans" ;;
16096 A number of extensions are supplied with $package. Answer "none"
16097 to include no extensions.
16098 Note that DynaLoader is always built and need not be mentioned here.
16101 case "$static_ext" in
16102 '') dflt="$avail_ext" ;;
16103 *) dflt="$static_ext"
16104 # Perhaps we are reusing an old out-of-date config.sh.
16107 if test X"$static_ext" != X"$avail_ext"; then
16109 NOTICE: Your previous config.sh list may be incorrect.
16110 The extensions now available to you are
16112 but the default list from your previous config.sh is
16121 : Exclude those that are not xs extensions
16125 rp="What extensions do you wish to include?"
16128 none) static_ext=' ' ;;
16129 *) static_ext="$ans" ;;
16134 set X $dynamic_ext $static_ext $nonxs_ext
16138 : Remove libraries needed only for extensions
16139 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16140 : The exception is SunOS 4.x, which needs them.
16141 case "${osname}X${osvers}" in
16145 *) case "$usedl" in
16146 $define|true|[yY]*)
16147 set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'`
16151 *) perllibs="$libs"
16157 : Remove build directory name from cppstdin so it can be used from
16158 : either the present location or the final installed location.
16160 : Get out of the UU directory to get correct path name.
16162 case "$cppstdin" in
16164 echo "Stripping down cppstdin path name"
16170 : end of configuration questions
16172 echo "End of configuration questions."
16175 : back to where it started
16176 if test -d ../UU; then
16180 : configuration may be patched via a 'config.over' file
16181 if $test -f config.over; then
16184 rp='I see a config.over file. Do you wish to load it?'
16187 n*) echo "OK, I'll ignore it.";;
16189 echo "Configuration override changes have been loaded."
16194 : in case they want portability, strip down executable paths
16195 case "$d_portable" in
16198 echo "Stripping down executable paths..." >&4
16199 for file in $loclist $trylist; do
16201 eval $file=`basename $temp`
16206 : create config.sh file
16208 echo "Creating config.sh..." >&4
16209 $spitshell <<EOT >config.sh
16212 # This file was produced by running the Configure script. It holds all the
16213 # definitions figured out by Configure. Should you modify one of these values,
16214 # do not forget to propagate your changes by running "Configure -der". You may
16215 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16218 # Package name : $package
16219 # Source directory : $src
16220 # Configuration time: $cf_time
16221 # Configured by : $cf_by
16222 # Target system : $myuname
16232 Revision='$Revision'
16240 alignbytes='$alignbytes'
16241 ansi2knr='$ansi2knr'
16242 aphostname='$aphostname'
16243 api_revision='$api_revision'
16244 api_subversion='$api_subversion'
16245 api_version='$api_version'
16246 api_versionstring='$api_versionstring'
16249 archlibexp='$archlibexp'
16250 archname64='$archname64'
16251 archname='$archname'
16252 archobjs='$archobjs'
16257 bincompat5005='$bincompat5005'
16261 byteorder='$byteorder'
16263 castflags='$castflags'
16266 cccdlflags='$cccdlflags'
16267 ccdlflags='$ccdlflags'
16269 ccflags_uselargefiles='$ccflags_uselargefiles'
16271 ccsymbols='$ccsymbols'
16272 ccversion='$ccversion'
16274 cf_email='$cf_email'
16276 charsize='$charsize'
16280 clocktype='$clocktype'
16282 compress='$compress'
16283 contains='$contains'
16287 cpp_stuff='$cpp_stuff'
16288 cppccsymbols='$cppccsymbols'
16289 cppflags='$cppflags'
16291 cppminus='$cppminus'
16293 cppstdin='$cppstdin'
16294 cppsymbols='$cppsymbols'
16295 crosscompile='$crosscompile'
16296 cryptlib='$cryptlib'
16298 d_Gconvert='$d_Gconvert'
16299 d_PRIEUldbl='$d_PRIEUldbl'
16300 d_PRIFUldbl='$d_PRIFUldbl'
16301 d_PRIGUldbl='$d_PRIGUldbl'
16302 d_PRIXU64='$d_PRIXU64'
16303 d_PRId64='$d_PRId64'
16304 d_PRIeldbl='$d_PRIeldbl'
16305 d_PRIfldbl='$d_PRIfldbl'
16306 d_PRIgldbl='$d_PRIgldbl'
16307 d_PRIi64='$d_PRIi64'
16308 d_PRIo64='$d_PRIo64'
16309 d_PRIu64='$d_PRIu64'
16310 d_PRIx64='$d_PRIx64'
16311 d_SCNfldbl='$d_SCNfldbl'
16312 d__fwalk='$d__fwalk'
16313 d_access='$d_access'
16314 d_accessx='$d_accessx'
16316 d_archlib='$d_archlib'
16319 d_attribut='$d_attribut'
16322 d_bincompat5005='$d_bincompat5005'
16324 d_bsdgetpgrp='$d_bsdgetpgrp'
16325 d_bsdsetpgrp='$d_bsdsetpgrp'
16327 d_casti32='$d_casti32'
16328 d_castneg='$d_castneg'
16329 d_charvspr='$d_charvspr'
16331 d_chroot='$d_chroot'
16332 d_chsize='$d_chsize'
16333 d_closedir='$d_closedir'
16334 d_cmsghdr_s='$d_cmsghdr_s'
16338 d_cuserid='$d_cuserid'
16339 d_dbl_dig='$d_dbl_dig'
16340 d_dbminitproto='$d_dbminitproto'
16341 d_difftime='$d_difftime'
16342 d_dirnamlen='$d_dirnamlen'
16343 d_dlerror='$d_dlerror'
16344 d_dlopen='$d_dlopen'
16345 d_dlsymun='$d_dlsymun'
16346 d_dosuid='$d_dosuid'
16347 d_drand48proto='$d_drand48proto'
16349 d_eaccess='$d_eaccess'
16350 d_endgrent='$d_endgrent'
16351 d_endhent='$d_endhent'
16352 d_endnent='$d_endnent'
16353 d_endpent='$d_endpent'
16354 d_endpwent='$d_endpwent'
16355 d_endsent='$d_endsent'
16356 d_eofnblk='$d_eofnblk'
16357 d_eunice='$d_eunice'
16358 d_fchmod='$d_fchmod'
16359 d_fchown='$d_fchown'
16361 d_fcntl_can_lock='$d_fcntl_can_lock'
16362 d_fd_macros='$d_fd_macros'
16363 d_fd_set='$d_fd_set'
16364 d_fds_bits='$d_fds_bits'
16365 d_fgetpos='$d_fgetpos'
16366 d_flexfnam='$d_flexfnam'
16368 d_flockproto='$d_flockproto'
16370 d_fpathconf='$d_fpathconf'
16371 d_fpos64_t='$d_fpos64_t'
16372 d_frexpl='$d_frexpl'
16373 d_fs_data_s='$d_fs_data_s'
16374 d_fseeko='$d_fseeko'
16375 d_fsetpos='$d_fsetpos'
16376 d_fstatfs='$d_fstatfs'
16377 d_fstatvfs='$d_fstatvfs'
16379 d_ftello='$d_ftello'
16381 d_getcwd='$d_getcwd'
16382 d_getespwnam='$d_getespwnam'
16383 d_getfsstat='$d_getfsstat'
16384 d_getgrent='$d_getgrent'
16385 d_getgrps='$d_getgrps'
16386 d_gethbyaddr='$d_gethbyaddr'
16387 d_gethbyname='$d_gethbyname'
16388 d_gethent='$d_gethent'
16389 d_gethname='$d_gethname'
16390 d_gethostprotos='$d_gethostprotos'
16391 d_getitimer='$d_getitimer'
16392 d_getlogin='$d_getlogin'
16393 d_getmnt='$d_getmnt'
16394 d_getmntent='$d_getmntent'
16395 d_getnbyaddr='$d_getnbyaddr'
16396 d_getnbyname='$d_getnbyname'
16397 d_getnent='$d_getnent'
16398 d_getnetprotos='$d_getnetprotos'
16399 d_getpagsz='$d_getpagsz'
16400 d_getpbyname='$d_getpbyname'
16401 d_getpbynumber='$d_getpbynumber'
16402 d_getpent='$d_getpent'
16403 d_getpgid='$d_getpgid'
16404 d_getpgrp2='$d_getpgrp2'
16405 d_getpgrp='$d_getpgrp'
16406 d_getppid='$d_getppid'
16407 d_getprior='$d_getprior'
16408 d_getprotoprotos='$d_getprotoprotos'
16409 d_getprpwnam='$d_getprpwnam'
16410 d_getpwent='$d_getpwent'
16411 d_getsbyname='$d_getsbyname'
16412 d_getsbyport='$d_getsbyport'
16413 d_getsent='$d_getsent'
16414 d_getservprotos='$d_getservprotos'
16415 d_getspnam='$d_getspnam'
16416 d_gettimeod='$d_gettimeod'
16417 d_gnulibc='$d_gnulibc'
16418 d_grpasswd='$d_grpasswd'
16419 d_hasmntopt='$d_hasmntopt'
16423 d_inetaton='$d_inetaton'
16424 d_int64_t='$d_int64_t'
16425 d_isascii='$d_isascii'
16427 d_isnanl='$d_isnanl'
16428 d_killpg='$d_killpg'
16429 d_lchown='$d_lchown'
16430 d_ldbl_dig='$d_ldbl_dig'
16432 d_locconv='$d_locconv'
16434 d_longdbl='$d_longdbl'
16435 d_longlong='$d_longlong'
16436 d_lseekproto='$d_lseekproto'
16438 d_madvise='$d_madvise'
16440 d_mbstowcs='$d_mbstowcs'
16441 d_mbtowc='$d_mbtowc'
16442 d_memchr='$d_memchr'
16443 d_memcmp='$d_memcmp'
16444 d_memcpy='$d_memcpy'
16445 d_memmove='$d_memmove'
16446 d_memset='$d_memset'
16448 d_mkdtemp='$d_mkdtemp'
16449 d_mkfifo='$d_mkfifo'
16450 d_mkstemp='$d_mkstemp'
16451 d_mkstemps='$d_mkstemps'
16452 d_mktime='$d_mktime'
16455 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16456 d_mprotect='$d_mprotect'
16458 d_msg_ctrunc='$d_msg_ctrunc'
16459 d_msg_dontroute='$d_msg_dontroute'
16460 d_msg_oob='$d_msg_oob'
16461 d_msg_peek='$d_msg_peek'
16462 d_msg_proxy='$d_msg_proxy'
16463 d_msgctl='$d_msgctl'
16464 d_msgget='$d_msgget'
16465 d_msghdr_s='$d_msghdr_s'
16466 d_msgrcv='$d_msgrcv'
16467 d_msgsnd='$d_msgsnd'
16469 d_munmap='$d_munmap'
16470 d_mymalloc='$d_mymalloc'
16472 d_nv_preserves_uv='$d_nv_preserves_uv'
16473 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16474 d_off64_t='$d_off64_t'
16475 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16476 d_oldpthreads='$d_oldpthreads'
16477 d_oldsock='$d_oldsock'
16479 d_pathconf='$d_pathconf'
16481 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16482 d_phostname='$d_phostname'
16485 d_portable='$d_portable'
16486 d_pthread_yield='$d_pthread_yield'
16488 d_pwchange='$d_pwchange'
16489 d_pwclass='$d_pwclass'
16490 d_pwcomment='$d_pwcomment'
16491 d_pwexpire='$d_pwexpire'
16492 d_pwgecos='$d_pwgecos'
16493 d_pwpasswd='$d_pwpasswd'
16494 d_pwquota='$d_pwquota'
16497 d_readdir='$d_readdir'
16498 d_readlink='$d_readlink'
16500 d_realpath='$d_realpath'
16501 d_recvmsg='$d_recvmsg'
16502 d_rename='$d_rename'
16503 d_rewinddir='$d_rewinddir'
16505 d_safebcpy='$d_safebcpy'
16506 d_safemcpy='$d_safemcpy'
16507 d_sanemcmp='$d_sanemcmp'
16508 d_sbrkproto='$d_sbrkproto'
16509 d_sched_yield='$d_sched_yield'
16510 d_scm_rights='$d_scm_rights'
16511 d_seekdir='$d_seekdir'
16512 d_select='$d_select'
16514 d_semctl='$d_semctl'
16515 d_semctl_semid_ds='$d_semctl_semid_ds'
16516 d_semctl_semun='$d_semctl_semun'
16517 d_semget='$d_semget'
16519 d_sendmsg='$d_sendmsg'
16520 d_setegid='$d_setegid'
16521 d_seteuid='$d_seteuid'
16522 d_setgrent='$d_setgrent'
16523 d_setgrps='$d_setgrps'
16524 d_sethent='$d_sethent'
16525 d_setitimer='$d_setitimer'
16526 d_setlinebuf='$d_setlinebuf'
16527 d_setlocale='$d_setlocale'
16528 d_setnent='$d_setnent'
16529 d_setpent='$d_setpent'
16530 d_setpgid='$d_setpgid'
16531 d_setpgrp2='$d_setpgrp2'
16532 d_setpgrp='$d_setpgrp'
16533 d_setprior='$d_setprior'
16534 d_setproctitle='$d_setproctitle'
16535 d_setpwent='$d_setpwent'
16536 d_setregid='$d_setregid'
16537 d_setresgid='$d_setresgid'
16538 d_setresuid='$d_setresuid'
16539 d_setreuid='$d_setreuid'
16540 d_setrgid='$d_setrgid'
16541 d_setruid='$d_setruid'
16542 d_setsent='$d_setsent'
16543 d_setsid='$d_setsid'
16544 d_setvbuf='$d_setvbuf'
16548 d_shmatprototype='$d_shmatprototype'
16549 d_shmctl='$d_shmctl'
16551 d_shmget='$d_shmget'
16552 d_sigaction='$d_sigaction'
16553 d_sigprocmask='$d_sigprocmask'
16554 d_sigsetjmp='$d_sigsetjmp'
16555 d_sockatmark='$d_sockatmark'
16556 d_sockatmarkproto='$d_sockatmarkproto'
16557 d_socket='$d_socket'
16558 d_socklen_t='$d_socklen_t'
16559 d_sockpair='$d_sockpair'
16560 d_socks5_init='$d_socks5_init'
16562 d_sresgproto='$d_sresgproto'
16563 d_sresuproto='$d_sresuproto'
16564 d_statblks='$d_statblks'
16565 d_statfs_f_flags='$d_statfs_f_flags'
16566 d_statfs_s='$d_statfs_s'
16567 d_statvfs='$d_statvfs'
16568 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16569 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16570 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16571 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16572 d_stdio_stream_array='$d_stdio_stream_array'
16573 d_stdiobase='$d_stdiobase'
16574 d_stdstdio='$d_stdstdio'
16575 d_strchr='$d_strchr'
16576 d_strcoll='$d_strcoll'
16577 d_strctcpy='$d_strctcpy'
16578 d_strerrm='$d_strerrm'
16579 d_strerror='$d_strerror'
16580 d_strftime='$d_strftime'
16581 d_strtod='$d_strtod'
16582 d_strtol='$d_strtol'
16583 d_strtold='$d_strtold'
16584 d_strtoll='$d_strtoll'
16585 d_strtoq='$d_strtoq'
16586 d_strtoul='$d_strtoul'
16587 d_strtoull='$d_strtoull'
16588 d_strtouq='$d_strtouq'
16589 d_strxfrm='$d_strxfrm'
16590 d_suidsafe='$d_suidsafe'
16591 d_symlink='$d_symlink'
16592 d_syscall='$d_syscall'
16593 d_syscallproto='$d_syscallproto'
16594 d_sysconf='$d_sysconf'
16595 d_sysernlst='$d_sysernlst'
16596 d_syserrlst='$d_syserrlst'
16597 d_system='$d_system'
16598 d_tcgetpgrp='$d_tcgetpgrp'
16599 d_tcsetpgrp='$d_tcsetpgrp'
16600 d_telldir='$d_telldir'
16601 d_telldirproto='$d_telldirproto'
16604 d_truncate='$d_truncate'
16605 d_tzname='$d_tzname'
16606 d_u32align='$d_u32align'
16607 d_ualarm='$d_ualarm'
16610 d_union_semun='$d_union_semun'
16611 d_usleep='$d_usleep'
16612 d_usleepproto='$d_usleepproto'
16614 d_vendorarch='$d_vendorarch'
16615 d_vendorbin='$d_vendorbin'
16616 d_vendorlib='$d_vendorlib'
16618 d_void_closedir='$d_void_closedir'
16619 d_voidsig='$d_voidsig'
16620 d_voidtty='$d_voidtty'
16621 d_volatile='$d_volatile'
16622 d_vprintf='$d_vprintf'
16624 d_waitpid='$d_waitpid'
16625 d_wcstombs='$d_wcstombs'
16626 d_wctomb='$d_wctomb'
16627 d_writev='$d_writev'
16630 db_hashtype='$db_hashtype'
16631 db_prefixtype='$db_prefixtype'
16632 db_version_major='$db_version_major'
16633 db_version_minor='$db_version_minor'
16634 db_version_patch='$db_version_patch'
16635 defvoidused='$defvoidused'
16636 direntrytype='$direntrytype'
16639 doublesize='$doublesize'
16641 dynamic_ext='$dynamic_ext'
16647 eunicefix='$eunicefix'
16650 extensions='$extensions'
16651 fflushNULL='$fflushNULL'
16652 fflushall='$fflushall'
16654 firstmakefile='$firstmakefile'
16656 fpossize='$fpossize'
16657 fpostype='$fpostype'
16658 freetype='$freetype'
16660 full_csh='$full_csh'
16661 full_sed='$full_sed'
16662 gccosandvers='$gccosandvers'
16663 gccversion='$gccversion'
16664 gidformat='$gidformat'
16670 groupcat='$groupcat'
16671 groupstype='$groupstype'
16674 h_sysfile='$h_sysfile'
16685 i_arpainet='$i_arpainet'
16686 i_bsdioctl='$i_bsdioctl'
16689 i_dirent='$i_dirent'
16697 i_ieeefp='$i_ieeefp'
16698 i_inttypes='$i_inttypes'
16699 i_libutil='$i_libutil'
16700 i_limits='$i_limits'
16701 i_locale='$i_locale'
16702 i_machcthr='$i_machcthr'
16703 i_malloc='$i_malloc'
16705 i_memory='$i_memory'
16706 i_mntent='$i_mntent'
16709 i_neterrno='$i_neterrno'
16710 i_netinettcp='$i_netinettcp'
16714 i_pthread='$i_pthread'
16716 i_rpcsvcdbm='$i_rpcsvcdbm'
16719 i_shadow='$i_shadow'
16721 i_stdarg='$i_stdarg'
16722 i_stddef='$i_stddef'
16723 i_stdlib='$i_stdlib'
16724 i_string='$i_string'
16725 i_sunmath='$i_sunmath'
16726 i_sysaccess='$i_sysaccess'
16727 i_sysdir='$i_sysdir'
16728 i_sysfile='$i_sysfile'
16729 i_sysfilio='$i_sysfilio'
16731 i_sysioctl='$i_sysioctl'
16732 i_syslog='$i_syslog'
16733 i_sysmman='$i_sysmman'
16734 i_sysmode='$i_sysmode'
16735 i_sysmount='$i_sysmount'
16736 i_sysndir='$i_sysndir'
16737 i_sysparam='$i_sysparam'
16738 i_sysresrc='$i_sysresrc'
16739 i_syssecrt='$i_syssecrt'
16740 i_sysselct='$i_sysselct'
16741 i_syssockio='$i_syssockio'
16742 i_sysstat='$i_sysstat'
16743 i_sysstatfs='$i_sysstatfs'
16744 i_sysstatvfs='$i_sysstatvfs'
16745 i_systime='$i_systime'
16746 i_systimek='$i_systimek'
16747 i_systimes='$i_systimes'
16748 i_systypes='$i_systypes'
16749 i_sysuio='$i_sysuio'
16751 i_sysutsname='$i_sysutsname'
16752 i_sysvfs='$i_sysvfs'
16753 i_syswait='$i_syswait'
16754 i_termio='$i_termio'
16755 i_termios='$i_termios'
16757 i_unistd='$i_unistd'
16760 i_values='$i_values'
16761 i_varargs='$i_varargs'
16762 i_varhdr='$i_varhdr'
16764 ignore_versioned_solibs='$ignore_versioned_solibs'
16765 inc_version_list='$inc_version_list'
16766 inc_version_list_init='$inc_version_list_init'
16769 installarchlib='$installarchlib'
16770 installbin='$installbin'
16771 installman1dir='$installman1dir'
16772 installman3dir='$installman3dir'
16773 installprefix='$installprefix'
16774 installprefixexp='$installprefixexp'
16775 installprivlib='$installprivlib'
16776 installscript='$installscript'
16777 installsitearch='$installsitearch'
16778 installsitebin='$installsitebin'
16779 installsitelib='$installsitelib'
16780 installstyle='$installstyle'
16781 installusrbinperl='$installusrbinperl'
16782 installvendorarch='$installvendorarch'
16783 installvendorbin='$installvendorbin'
16784 installvendorlib='$installvendorlib'
16786 issymlink='$issymlink'
16787 ivdformat='$ivdformat'
16790 known_extensions='$known_extensions'
16793 lddlflags='$lddlflags'
16795 ldflags_uselargefiles='$ldflags_uselargefiles'
16796 ldlibpthname='$ldlibpthname'
16803 libsdirs='$libsdirs'
16804 libsfiles='$libsfiles'
16805 libsfound='$libsfound'
16806 libspath='$libspath'
16807 libswanted='$libswanted'
16808 libswanted_uselargefiles='$libswanted_uselargefiles'
16814 locincpth='$locincpth'
16815 loclibpth='$loclibpth'
16816 longdblsize='$longdblsize'
16817 longlongsize='$longlongsize'
16818 longsize='$longsize'
16822 lseeksize='$lseeksize'
16823 lseektype='$lseektype'
16827 make_set_make='$make_set_make'
16828 mallocobj='$mallocobj'
16829 mallocsrc='$mallocsrc'
16830 malloctype='$malloctype'
16832 man1direxp='$man1direxp'
16835 man3direxp='$man3direxp'
16837 mips_type='$mips_type'
16839 mmaptype='$mmaptype'
16840 modetype='$modetype'
16842 multiarch='$multiarch'
16844 myarchname='$myarchname'
16845 mydomain='$mydomain'
16846 myhostname='$myhostname'
16849 need_va_copy='$need_va_copy'
16850 netdb_hlen_type='$netdb_hlen_type'
16851 netdb_host_type='$netdb_host_type'
16852 netdb_name_type='$netdb_name_type'
16853 netdb_net_type='$netdb_net_type'
16856 nm_so_opt='$nm_so_opt'
16857 nonxs_ext='$nonxs_ext'
16859 nvEUformat='$nvEUformat'
16860 nvFUformat='$nvFUformat'
16861 nvGUformat='$nvGUformat'
16862 nveformat='$nveformat'
16863 nvfformat='$nvfformat'
16864 nvgformat='$nvgformat'
16867 o_nonblock='$o_nonblock'
16869 old_pthread_create_joinable='$old_pthread_create_joinable'
16870 optimize='$optimize'
16871 orderlib='$orderlib'
16874 otherlibdirs='$otherlibdirs'
16878 patchlevel='$patchlevel'
16879 path_sep='$path_sep'
16882 perl_patchlevel='$perl_patchlevel'
16883 perladmin='$perladmin'
16884 perllibs='$perllibs'
16885 perlpath='$perlpath'
16887 phostname='$phostname'
16890 pm_apiversion='$pm_apiversion'
16894 prefixexp='$prefixexp'
16896 privlibexp='$privlibexp'
16897 prototype='$prototype'
16899 quadkind='$quadkind'
16900 quadtype='$quadtype'
16901 randbits='$randbits'
16902 randfunc='$randfunc'
16903 randseedtype='$randseedtype'
16905 rd_nodata='$rd_nodata'
16906 revision='$revision'
16910 sPRIEUldbl='$sPRIEUldbl'
16911 sPRIFUldbl='$sPRIFUldbl'
16912 sPRIGUldbl='$sPRIGUldbl'
16913 sPRIXU64='$sPRIXU64'
16915 sPRIeldbl='$sPRIeldbl'
16916 sPRIfldbl='$sPRIfldbl'
16917 sPRIgldbl='$sPRIgldbl'
16922 sSCNfldbl='$sSCNfldbl'
16923 sched_yield='$sched_yield'
16924 scriptdir='$scriptdir'
16925 scriptdirexp='$scriptdirexp'
16927 seedfunc='$seedfunc'
16928 selectminbits='$selectminbits'
16929 selecttype='$selecttype'
16930 sendmail='$sendmail'
16933 sharpbang='$sharpbang'
16934 shmattype='$shmattype'
16935 shortsize='$shortsize'
16938 sig_count='$sig_count'
16939 sig_name='$sig_name'
16940 sig_name_init='$sig_name_init'
16942 sig_num_init='$sig_num_init'
16943 sig_size='$sig_size'
16944 signal_t='$signal_t'
16945 sitearch='$sitearch'
16946 sitearchexp='$sitearchexp'
16948 sitebinexp='$sitebinexp'
16950 sitelib_stem='$sitelib_stem'
16951 sitelibexp='$sitelibexp'
16952 siteprefix='$siteprefix'
16953 siteprefixexp='$siteprefixexp'
16954 sizesize='$sizesize'
16955 sizetype='$sizetype'
16959 sockethdr='$sockethdr'
16960 socketlib='$socketlib'
16961 socksizetype='$socksizetype'
16963 spackage='$spackage'
16964 spitshell='$spitshell'
16966 ssizetype='$ssizetype'
16967 startperl='$startperl'
16969 static_ext='$static_ext'
16971 stdio_base='$stdio_base'
16972 stdio_bufsiz='$stdio_bufsiz'
16973 stdio_cnt='$stdio_cnt'
16974 stdio_filbuf='$stdio_filbuf'
16975 stdio_ptr='$stdio_ptr'
16976 stdio_stream_array='$stdio_stream_array'
16979 subversion='$subversion'
16986 timeincl='$timeincl'
16987 timetype='$timetype'
17000 uidformat='$uidformat'
17006 uquadtype='$uquadtype'
17007 use5005threads='$use5005threads'
17008 use64bitall='$use64bitall'
17009 use64bitint='$use64bitint'
17011 useithreads='$useithreads'
17012 uselargefiles='$uselargefiles'
17013 uselongdouble='$uselongdouble'
17014 usemorebits='$usemorebits'
17015 usemultiplicity='$usemultiplicity'
17016 usemymalloc='$usemymalloc'
17018 useopcode='$useopcode'
17019 useperlio='$useperlio'
17020 useposix='$useposix'
17021 usereentrant='$usereentrant'
17023 useshrplib='$useshrplib'
17024 usesocks='$usesocks'
17025 usethreads='$usethreads'
17026 usevendorprefix='$usevendorprefix'
17027 usevfork='$usevfork'
17030 uvXUformat='$uvXUformat'
17031 uvoformat='$uvoformat'
17034 uvuformat='$uvuformat'
17035 uvxformat='$uvxformat'
17036 vendorarch='$vendorarch'
17037 vendorarchexp='$vendorarchexp'
17038 vendorbin='$vendorbin'
17039 vendorbinexp='$vendorbinexp'
17040 vendorlib='$vendorlib'
17041 vendorlib_stem='$vendorlib_stem'
17042 vendorlibexp='$vendorlibexp'
17043 vendorprefix='$vendorprefix'
17044 vendorprefixexp='$vendorprefixexp'
17046 versiononly='$versiononly'
17048 voidflags='$voidflags'
17050 xs_apiversion='$xs_apiversion'
17052 yaccflags='$yaccflags'
17057 : Add in command line options if available
17058 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17060 : add special variables
17061 $test -f $src/patchlevel.h && \
17062 awk '/^#define[ ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17063 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17064 echo "PERL_CONFIG_SH=true" >>config.sh
17066 : propagate old symbols
17067 if $test -f UU/config.sh; then
17068 <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17069 sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17070 $sort | $uniq -u >UU/oldsyms
17071 set X `cat UU/oldsyms`
17077 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17079 echo "# Variables propagated from previous config.sh file." >>config.sh
17080 for sym in `cat UU/oldsyms`; do
17081 echo " Propagating $hint variable "'$'"$sym..."
17082 eval 'tmp="$'"${sym}"'"'
17084 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17090 : Finish up by extracting the .SH files
17094 echo "Extraction done."
17104 If you'd like to make any changes to the config.sh file before I begin
17105 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17108 rp="Press return or use a shell escape to edit config.sh:"
17113 *) : in case they cannot read
17114 sh 1>&4 -c "$ans";;
17119 : if this fails, just run all the .SH files by hand
17126 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17133 Now you need to generate make dependencies by running "$make depend".
17134 You might prefer to run it in background: "$make depend > makedepend.out &"
17135 It can take a while, so you might not want to run it right now.
17140 rp="Run $make depend now?"
17144 $make depend && echo "Now you must run '$make'."
17147 echo "You must run '$make depend' then '$make'."
17150 elif test -f [Mm]akefile; then
17152 echo "Now you must run a $make."
17154 echo "Configure done."
17157 if $test -f Policy.sh; then
17160 If you compile $package on a different machine or from a different object
17161 directory, copy the Policy.sh file from this object directory to the
17162 new one before you run Configure -- this will help you with most of
17163 the policy defaults.
17167 if $test -f config.msg; then
17168 echo "Hmm. I also noted the following information while running:"
17170 $cat config.msg >&4
17173 $rm -f kit*isdone ark*isdone